# Author: David Blyth # Description: Docker build for producing a base for ANL EIC software efforts FROM dbcooper/arch:2018-02-23 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 \ -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 \ MANPATH=/usr/local/man # CLHEP ENV CLHEP_RELEASE=CLHEP_2_3_4_5 RUN git clone https://gitlab.cern.ch/CLHEP/CLHEP.git \ && cd CLHEP \ && git checkout tags/$CLHEP_RELEASE \ && mkdir build \ && cd build \ && cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/ \ -DCMAKE_BUILD_TYPE=Release \ ../ \ && make -j $BUILD_THREADS \ && sudo make install \ && cd ../../ \ && rm -rf CLHEP # GEANT4 ENV GEANT4_VERSION=10.4.1 RUN sudo pacman -S --noconfirm \ xerces-c \ && sudo rm -rf /var/cache/pacman/pkg RUN git clone https://github.com/Geant4/geant4.git \ && cd geant4 \ && git checkout tags/v$GEANT4_VERSION \ && mkdir build \ && cd build \ && cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/ \ -DCMAKE_BUILD_TYPE=Release \ -DGEANT4_BUILD_MULTITHREADED=ON \ -DGEANT4_BUILD_TLS_MODEL=global-dynamic \ -DGEANT4_INSTALL_DATA=ON \ -DGEANT4_USE_GDML=ON \ -DGEANT4_USE_SYSTEM_CLHEP=ON \ ../ \ && make -j $BUILD_THREADS \ && sudo make install \ && cd ../../ \ && rm -rf geant4 ENV LD_LIBRARY_PATH=/usr/local/lib64:${LD_LIBRARY_PATH} \ GEANT4_DATA_DIRECTORY=/usr/local/share/Geant4-${GEANT4_VERSION}/data ENV G4NEUTRONHPDATA=${GEANT4_DATA_DIRECTORY}/G4NDL4.5 \ G4LEDATA=${GEANT4_DATA_DIRECTORY}/G4EMLOW7.3 \ G4LEVELGAMMADATA=${GEANT4_DATA_DIRECTORY}/PhotonEvaporation5.2 \ G4RADIOACTIVEDATA=${GEANT4_DATA_DIRECTORY}/RadioactiveDecay5.2 \ G4NEUTRONXSDATA=${GEANT4_DATA_DIRECTORY}/G4NEUTRONXS1.4 \ G4PIIDATA=${GEANT4_DATA_DIRECTORY}/G4PII1.3 \ G4REALSURFACEDATA=${GEANT4_DATA_DIRECTORY}/RealSurface2.1 \ G4SAIDXSDATA=${GEANT4_DATA_DIRECTORY}/G4SAIDDATA1.1 \ G4ABLADATA=${GEANT4_DATA_DIRECTORY}/G4ABLA3.1 \ G4ENSDFSTATEDATA=${GEANT4_DATA_DIRECTORY}/G4ENSDFSTATE2.2 # LCIO ENV LCIO_RELEASE=v02-08 RUN git clone https://github.com/iLCSoft/LCIO.git \ && cd LCIO \ && git checkout tags/$LCIO_RELEASE \ && cd ../ \ && mkdir build \ && cd build \ && cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_ROOTDICT=ON \ ../LCIO \ && make -j $BUILD_THREADS \ && sudo make install \ && cd ../ \ && rm -rf build LCIO ENV ROOT_INCLUDE_PATH=/usr/local:/usr/local/include # DD4hep ENV DD4HEP_CHECKOUT=66153bb62344b4509e00ee94cced61f14eeadd59 \ DD4HEP_REPO=https://github.com/decibelcooper/DD4hep.git RUN sudo pacman -S --noconfirm \ boost \ && sudo rm -rf /var/cache/pacman/pkg RUN git clone $DD4HEP_REPO \ && cd DD4hep \ && git checkout $DD4HEP_CHECKOUT \ && cd .. \ && mkdir build \ && cd build \ && cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local \ -DDD4HEP_USE_GEANT4=ON \ -DDD4HEP_USE_LCIO=ON \ -DDD4HEP_USE_XERCESC=ON \ ../DD4hep \ && make -j $BUILD_THREADS \ && sudo make install \ && cd .. \ && rm -rf build DD4hep ENV DD4hepINSTALL=/usr/local \ DD4hep_ROOT=/usr/local \ DD4hep_DIR=/usr/local \ PYTHONPATH=/usr/local/python:${PYTHONPATH} # 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=36d235100540f0c2489c1b47bbae5025f94b7e95 \ 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 # GenFit ENV GENFIT_CHECKOUT=70c408ff7424bdfd572ddc175b9673e8a1e91bbb \ GENFIT_PATH=/opt/GenFit RUN sudo pacman -S --noconfirm \ eigen \ && sudo rm -rf /var/cache/pacman/pkg RUN git clone https://github.com/GenFit/GenFit.git $GENFIT_PATH \ && cd $GENFIT_PATH \ && git checkout $GENFIT_CHECKOUT \ && mkdir build \ && cd build \ && cmake \ -DCMAKE_BUILD_TYPE=Release \ ../ \ && make -j $BUILD_THREADS \ && make install \ && cd ../ \ && rm -rf build ENV ROOT_INCLUDE_PATH=/usr/include/eigen3:${ROOT_INCLUDE_PATH} \ LD_LIBRARY_PATH=/opt/GenFit/lib:${LD_LIBRARY_PATH} # Convenience tools RUN sudo pacman -S --noconfirm \ gdb \ ipython \ ipython2 \ mesa-demos \ openssh \ procps-ng \ tigervnc \ vim \ wget \ which \ xfce4 \ && sudo rm -rf /var/cache/pacman/pkg