# Author: David Blyth # Description: Docker build for producing a base for ANL EIC software efforts FROM dbcooper/arch:2018-06-05 ARG BUILD_THREADS=5 # Set up basic environment RUN pacman -S --noconfirm \ sed \ sudo \ && rm -rf /var/cache/pacman/pkg RUN useradd -m -G wheel eicuser \ && sed -i.bak 's/\s*#\s*\(%wheel\s*ALL=(ALL)\s*NOPASSWD:\s*ALL\)/\1/' /etc/sudoers USER eicuser WORKDIR /home/eicuser CMD /bin/bash # ROOT ENV ROOT_RELEASE=v6-12-06 \ CC=/usr/bin/clang \ CXX=/usr/bin/clang++ RUN sudo pacman -S --noconfirm \ awk \ binutils \ clang \ cmake \ fftw \ git \ glew \ glu \ grep \ gsl \ gzip \ libx11 \ libxft \ libxpm \ make \ python2 \ && sudo rm -rf /var/cache/pacman/pkg RUN git clone http://root.cern.ch/git/root.git \ && 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 \ -Dbuildtin_llvm=OFF \ -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 \ ROOTSYS=/usr/local # Protobuf RUN sudo pacman -S --noconfirm \ protobuf \ protobuf-c \ python-protobuf \ python2-protobuf \ && sudo rm -rf /var/cache/pacman/pkg # lz4 ENV LZ4_RELEASE=v1.8.1.2 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 # ProIO ENV GOPATH=/opt/Go ENV PROIO_CHECKOUT=1fe6bd44540388be64efed61c03ca6d53c8aa2e8 \ PROIO_SOURCE=$GOPATH/src/github.com/decibelcooper/proio \ PATH=$GOPATH/bin:${PATH} RUN sudo pacman -S --noconfirm \ go \ python-pip \ python2-pip \ && sudo rm -rf /var/cache/pacman/pkg RUN sudo mkdir $GOPATH \ && sudo chown eicuser:eicuser $GOPATH \ && git clone https://github.com/decibelcooper/proio.git $PROIO_SOURCE \ && cd $PROIO_SOURCE \ && git checkout $PROIO_CHECKOUT \ && mkdir cpp-proio/build \ && cd cpp-proio/build \ && cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local \ -DCMAKE_BUILD_TYPE=Release \ ../ \ && make -j $BUILD_THREADS \ && sudo make install \ && cd ../../go-proio \ && go get ./... \ && cd ../py-proio \ && sudo pip install . \ && sudo pip2 install . \ && cd \ && rm -rf $GOPATH/src # Convenience tools RUN sudo pacman -S --noconfirm \ emacs \ gdb \ mesa-demos \ ipython \ ipython2 \ man-db \ man-pages \ nano \ openssh \ procps-ng \ vi \ vim \ wget \ which \ xorg-server-xvfb \ && sudo rm -rf /var/cache/pacman/pkg # Image ingredients ADD . /image/eic-base