Dockerfile 3.34 KB
Newer Older
David Blyth's avatar
David Blyth committed
1 2 3
# Author: David Blyth
# Description: Docker build for producing a base for ANL EIC software efforts

David Blyth's avatar
David Blyth committed
4
FROM dbcooper/arch:2018-06-05
David Blyth's avatar
David Blyth committed
5 6 7 8 9

ARG BUILD_THREADS=5

# Set up basic environment
RUN pacman -S --noconfirm \
10 11
        sed \
        sudo \
David Blyth's avatar
David Blyth committed
12 13
&&  rm -rf /var/cache/pacman/pkg

14
RUN useradd -m -G wheel eicuser \
15
&&  sed -i.bak 's/\s*#\s*\(%wheel\s*ALL=(ALL)\s*NOPASSWD:\s*ALL\)/\1/' /etc/sudoers
David Blyth's avatar
David Blyth committed
16

17 18
USER eicuser
WORKDIR /home/eicuser
David Blyth's avatar
David Blyth committed
19 20 21 22

CMD /bin/bash

# ROOT
23 24 25
ENV ROOT_RELEASE=v6-12-06 \
    CC=/usr/bin/clang \
    CXX=/usr/bin/clang++
26

David Blyth's avatar
David Blyth committed
27 28 29
RUN sudo pacman -S --noconfirm \
        awk \
        binutils \
30
        clang \
David Blyth's avatar
David Blyth committed
31 32
        cmake \
        fftw \
33
        git \
David Blyth's avatar
David Blyth committed
34 35 36 37 38 39 40 41 42 43 44 45
        glew \
        glu \
        grep \
        gsl \
        gzip \
        libx11 \
        libxft \
        libxpm \
        make \
        python2 \
&&  sudo rm -rf /var/cache/pacman/pkg

46
RUN git clone http://root.cern.ch/git/root.git \
David Blyth's avatar
David Blyth committed
47 48 49 50 51 52 53 54 55
&&  cd root \
&&  git checkout tags/$ROOT_RELEASE \
&&  cd .. \
&&  mkdir build \
&&  cd build \
&&  cmake \
        -DCMAKE_INSTALL_PREFIX=/usr/local \
        -DCMAKE_BUILD_TYPE=Release \
        -Dbuiltin_glew=OFF \
56
        -Dbuildtin_llvm=OFF \
David Blyth's avatar
David Blyth committed
57 58 59 60 61 62 63 64 65 66 67 68 69 70
        -Dgdml=ON \
        -Dgsl_shared=ON \
        -Dmathmore=ON \
        -Dminuit2=ON \
        -Dopengl=ON \
        ../root \
&&  make -j $BUILD_THREADS \
&&  sudo make install \
&&  cd .. \
&&  rm -rf build root

ENV PATH=/usr/local/bin:${PATH} \
    LD_LIBRARY_PATH=/usr/local/lib \
    PYTHONPATH=/usr/local/lib \
71
    ROOTSYS=/usr/local
David Blyth's avatar
David Blyth committed
72 73 74

# Protobuf
RUN sudo pacman -S --noconfirm \
75 76 77 78
        protobuf \
        protobuf-c \
        python-protobuf \
        python2-protobuf \
David Blyth's avatar
David Blyth committed
79 80
&&  sudo rm -rf /var/cache/pacman/pkg

81
# lz4
David Blyth's avatar
David Blyth committed
82
ENV LZ4_RELEASE=v1.8.1.2
83 84 85 86 87 88 89 90 91

RUN git clone https://github.com/lz4/lz4.git \
&&  cd lz4 \
&&  git checkout tags/$LZ4_RELEASE \
&&  make -j $BUILD_THREADS \
&&  sudo make install \
&&  cd ../ \
&&  rm -rf lz4

92
# go-proio
David Blyth's avatar
David Blyth committed
93
ENV GOPATH=/opt/Go
David Blyth's avatar
David Blyth committed
94
ENV GO_PROIO_CHECKOUT=v0.2.1 \
95
    GO_PROIO_SOURCE=$GOPATH/src/github.com/proio-org/go-proio \
David Blyth's avatar
David Blyth committed
96 97 98 99
    PATH=$GOPATH/bin:${PATH}

RUN sudo pacman -S --noconfirm \
        go \
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
&&  sudo rm -rf /var/cache/pacman/pkg

RUN sudo mkdir -p $GOPATH \
&&  sudo chown eicuser:eicuser $GOPATH \
&&  git clone https://github.com/proio-org/go-proio.git $GO_PROIO_SOURCE \
&&  cd $GO_PROIO_SOURCE \
&&  git checkout $GO_PROIO_CHECKOUT \
&&  go get ./... \
&&  cd \
&&  rm -rf $GOPATH/src

# py-proio
ENV PY_PROIO_VERSION=0.10.10

RUN sudo pacman -S --noconfirm \
David Blyth's avatar
David Blyth committed
115 116 117 118
        python-pip \
        python2-pip \
&&  sudo rm -rf /var/cache/pacman/pkg

119 120 121 122
RUN sudo pip install proio==$PY_PROIO_VERSION \
&&  sudo pip2 install proio==$PY_PROIO_VERSION

# cpp-proio
David Blyth's avatar
David Blyth committed
123
ENV CPP_PROIO_CHECKOUT=361b5452132f75bd3a794d267ea2627f55e63ad6
124 125

RUN git clone https://github.com/proio-org/cpp-proio.git \
David Blyth's avatar
David Blyth committed
126 127
&&  mkdir cpp-proio/build \
&&  cd cpp-proio/build \
128 129 130 131
&&  git checkout $CPP_PROIO_CHECKOUT \
&&  git submodule init \
&&  git submodule update \
&&  cmake ../ \
David Blyth's avatar
David Blyth committed
132 133
&&  make -j $BUILD_THREADS \
&&  sudo make install \
134 135
&&  cd ../../ \
&&  rm -rf cpp-proio
David Blyth's avatar
David Blyth committed
136 137 138

# Convenience tools
RUN sudo pacman -S --noconfirm \
139
        emacs \
140
        gdb \
141
        mesa-demos \
142 143
        ipython \
        ipython2 \
144 145 146
        man-db \
        man-pages \
        nano \
David Blyth's avatar
David Blyth committed
147 148
        openssh \
        procps-ng \
149
        vi \
David Blyth's avatar
David Blyth committed
150
        vim \
151
        wget \
152
        which \
153
        xorg-server-xvfb \
David Blyth's avatar
David Blyth committed
154 155
&&  sudo rm -rf /var/cache/pacman/pkg

156 157
# Image ingredients
ADD . /image/eic-base