Created
June 28, 2023 01:50
-
-
Save bungernut/fa12b015d52f39f3faf033e0b4f6ecb5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM ubuntu:20.04 as root_builder | |
#LABEL maintainer.name="ROOT team" | |
#LABEL maintainer.email="[email protected]" | |
# https://github.com/root-project/root-docker/blob/master/ubuntu_from_source/Dockerfile | |
LABEL maintainer.name="bung" | |
LABEL maintainer.email="[email protected]" | |
# ROOT version in the MAJOR.MINOR.REVISION format or a https://github.com/root-project/root branch name / tag. Example: ROOT_VERSION=6.26.00 | |
# C++ standard to compile ROOT. Example: CMAKE_CXX_STANDARD=17 | |
RUN apt-get update && \ | |
ln -sf /usr/share/zoneinfo/UTC /etc/localtime && \ | |
apt-get -y install \ | |
cmake \ | |
ca-certificates \ | |
curl \ | |
davix-dev \ | |
dcap-dev \ | |
fonts-freefont-ttf \ | |
g++ \ | |
gcc \ | |
gfortran \ | |
git \ | |
libafterimage-dev\ | |
libboost-python-dev \ | |
libcfitsio-dev \ | |
libexpat1-dev \ | |
libfcgi-dev \ | |
libfftw3-dev \ | |
libfreetype6-dev \ | |
libftgl-dev \ | |
libgfal2-dev \ | |
libgif-dev \ | |
libgl2ps-dev \ | |
libglew-dev \ | |
libglu-dev \ | |
libgraphviz-dev \ | |
libgsl-dev \ | |
libjpeg-dev \ | |
liblz4-dev \ | |
liblzma-dev \ | |
libmysqlclient-dev \ | |
libpcre++-dev \ | |
libpng-dev \ | |
libpq-dev \ | |
libsqlite3-dev \ | |
libssl-dev \ | |
libtbb-dev \ | |
libtiff-dev \ | |
libx11-dev \ | |
libxerces-c-dev \ | |
libxext-dev \ | |
libxft-dev \ | |
libxml2-dev \ | |
libxpm-dev \ | |
libxxhash-dev \ | |
libz-dev \ | |
libzstd-dev \ | |
locales \ | |
make \ | |
python3-dev \ | |
python3-numpy \ | |
srm-ifce-dev \ | |
unixodbc-dev \ | |
python-is-python3 \ | |
wget \ | |
&& \ | |
apt-get autoremove -y && \ | |
apt-get clean -y && \ | |
rm -rf /var/cache/apt/archives/* && \ | |
rm -rf /var/lib/apt/lists/* | |
# LOCAL INSTALL: | |
# sudo apt-get -y install cmake ca-certificates curl davix-dev dcap-dev fonts-freefont-ttf g++ gcc gfortran git libafterimage-dev libcfitsio-dev libexpat1-dev libfcgi-dev libfftw3-dev libfreetype6-dev libftgl-dev libgfal2-dev libgif-dev libgl2ps-dev libglew-dev libglu-dev libgraphviz-dev libgsl-dev libjpeg-dev liblz4-dev liblzma-dev libmysqlclient-dev libpcre++-dev libpng-dev libpq-dev libsqlite3-dev libssl-dev libtbb-dev libtiff-dev libx11-dev libxext-dev libxft-dev libxml2-dev libxpm-dev libxxhash-dev libz-dev libzstd-dev locales make python3-dev python3-numpy srm-ifce-dev unixodbc-dev python-is-python3 wget | |
# RUN yes | unminimize | |
# clone build and install | |
#ARG ROOT_VERSION=latest-stable | |
ARG ROOT_VERSION=6.26.10 | |
ARG CMAKE_CXX_STANDARD=17 | |
RUN ROOT_GIT_URL=https://github.com/root-project/root.git \ | |
&& if [ -z "$(git ls-remote --heads $ROOT_GIT_URL $ROOT_VERSION)" ] ; then \ | |
export ROOT_GIT_REVISION="v$(echo $ROOT_VERSION | cut -d. -f1)-$(echo $ROOT_VERSION | cut -d. -f2)-$(echo $ROOT_VERSION | cut -d. -f3)" \ | |
; else \ | |
export ROOT_GIT_REVISION=$ROOT_VERSION \ | |
; fi \ | |
# Above lines will set ROOT_GIT_REVISION to ROOT_VERSION argument if it corresponds to a valid branch name (such as ROOT_VERSION=master), | |
# otherwise it will assume its a semantic version string and try to convert it into the tag format (such as 6.26.00 -> v6-26-00) | |
&& git clone --branch $ROOT_GIT_REVISION --depth=1 $ROOT_GIT_URL /tmp/source \ | |
&& cd /tmp/source \ | |
&& mkdir -p /tmp/build && cd /tmp/build \ | |
&& cmake /tmp/source \ | |
-DCMAKE_CXX_STANDARD=17 \ | |
-Dgnuinstall=ON \ | |
-Dsoversion=ON \ | |
# For ROOT version 6.26.00 it is necessary to set `-Druntime_cxxmodules=OFF` (https://github.com/root-project/root/pull/10198) | |
-DCMAKE_INSTALL_PREFIX=/usr \ | |
-DCMAKE_INSTALL_BINDIR=bin \ | |
-DCMAKE_INSTALL_CMAKEDIR=lib/x86_64-linux-gnu/cmake/ROOT \ | |
-DCMAKE_INSTALL_DATAROOTDIR=share \ | |
-DCMAKE_INSTALL_DATADIR=share/root \ | |
-DCMAKE_INSTALL_DOCDIR=share/doc/root \ | |
-DCMAKE_INSTALL_ELISPDIR=share/emacs/site-lisp \ | |
-DCMAKE_INSTALL_FONTDIR=share/root/fonts \ | |
-DCMAKE_INSTALL_ICONDIR=share/root/icons \ | |
-DCMAKE_INSTALL_INCLUDEDIR=include/ROOT \ | |
-DCMAKE_INSTALL_JSROOTDIR=share/root/js \ | |
-DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ | |
-DCMAKE_INSTALL_MACRODIR=share/root/macros \ | |
-DCMAKE_INSTALL_MANDIR=share/man \ | |
-DCMAKE_INSTALL_OPENUI5DIR=share/root/ui5 \ | |
-DCMAKE_INSTALL_PYTHONDIR=lib/python3/dist-packages \ | |
-DCMAKE_INSTALL_SRCDIR=/dev/null \ | |
-DCMAKE_INSTALL_SYSCONFDIR=/etc/root \ | |
-DCMAKE_INSTALL_TUTDIR=share/root/tutorials \ | |
&& make -j$(nproc) install | |
# && rm -rf /tmp/build /tmp/source | |
# LOCAL INSRALL | |
# wget https://github.com/root-project/root/releases/download/v6-26-10/root_v6.26.10.source.tar.gz | |
# tar xf root<tab> | |
# mkdir root-build | |
# cmake ../root-6.26.10/ -DCMAKE_CXX_STANDARD=17 -Dgnuinstall=ON -Dsoversion=ON -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_BINDIR=bin -DCMAKE_INSTALL_CMAKEDIR=lib/x86_64-linux-gnu/cmake/ROOT -DCMAKE_INSTALL_DATAROOTDIR=share -DCMAKE_INSTALL_DATADIR=share/root -DCMAKE_INSTALL_DOCDIR=share/doc/root -DCMAKE_INSTALL_ELISPDIR=share/emacs/site-lisp -DCMAKE_INSTALL_FONTDIR=share/root/fonts -DCMAKE_INSTALL_ICONDIR=share/root/icons -DCMAKE_INSTALL_INCLUDEDIR=include/ROOT -DCMAKE_INSTALL_JSROOTDIR=share/root/js -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_INSTALL_MACRODIR=share/root/macros -DCMAKE_INSTALL_MANDIR=share/man -DCMAKE_INSTALL_OPENUI5DIR=share/root/ui5 -DCMAKE_INSTALL_PYTHONDIR=lib/python3/dist-packages -DCMAKE_INSTALL_SRCDIR=/dev/null -DCMAKE_INSTALL_SYSCONFDIR=/etc/root -DCMAKE_INSTALL_TUTDIR=share/root/tutorial -DPYTHON_EXECUTABLE=/usr/bin/python | |
# CMD ["root", "-b"] | |
RUN mkdir -p /opt/geant4/src && \ | |
mkdir -p /opt/geant4/build && \ | |
mkdir -p /opt/geant4/install && \ | |
mkdir -p /opt/geant4/data && \ | |
wget https://gitlab.cern.ch/geant4/geant4/-/archive/v10.7.2/geant4-v10.7.2.tar.gz && \ | |
tar xf geant4-v10.7.2.tar.gz -C /opt/geant4/src/ && \ | |
rm geant4*.tar.gz | |
WORKDIR /opt/geant4/data/ | |
RUN wget https://cern.ch/geant4-data/datasets/G4NDL.4.6.tar.gz && \ | |
tar zxf G4NDL.4.6.tar.gz && \ | |
wget -nv https://cern.ch/geant4-data/datasets/G4EMLOW.7.13.tar.gz && \ | |
tar zxf G4EMLOW.7.13.tar.gz && \ | |
wget -nv https://cern.ch/geant4-data/datasets/G4PhotonEvaporation.5.7.tar.gz && \ | |
tar zxf G4PhotonEvaporation.5.7.tar.gz && \ | |
wget -nv https://cern.ch/geant4-data/datasets/G4RadioactiveDecay.5.6.tar.gz && \ | |
tar zxf G4RadioactiveDecay.5.6.tar.gz && \ | |
wget -nv https://cern.ch/geant4-data/datasets/G4PARTICLEXS.3.1.1.tar.gz && \ | |
tar zxf G4PARTICLEXS.3.1.1.tar.gz && \ | |
wget -nv https://cern.ch/geant4-data/datasets/G4PII.1.3.tar.gz && \ | |
tar zxf G4PII.1.3.tar.gz && \ | |
wget -nv https://cern.ch/geant4-data/datasets/G4RealSurface.2.2.tar.gz && \ | |
tar zxf G4RealSurface.2.2.tar.gz && \ | |
wget -nv https://cern.ch/geant4-data/datasets/G4SAIDDATA.2.0.tar.gz && \ | |
tar zxf G4SAIDDATA.2.0.tar.gz && \ | |
wget -nv https://cern.ch/geant4-data/datasets/G4ABLA.3.1.tar.gz && \ | |
tar zxf G4ABLA.3.1.tar.gz && \ | |
wget -nv https://cern.ch/geant4-data/datasets/G4INCL.1.0.tar.gz && \ | |
tar zxf G4INCL.1.0.tar.gz && \ | |
wget -nv https://cern.ch/geant4-data/datasets/G4ENSDFSTATE.2.3.tar.gz && \ | |
tar zxf G4ENSDFSTATE.2.3.tar.gz && \ | |
wget -nv https://cern.ch/geant4-data/datasets/G4TENDL.1.3.2.tar.gz && \ | |
tar zxf G4TENDL.1.3.2.tar.gz && \ | |
rm *.tar.gz | |
FROM root_builder as geant4_setup | |
# https://github.com/wtakase/docker-geant4/blob/master/amd64/bionic/Dockerfile | |
# ENV G4_VERSION 10.7.2 | |
# https://gitlab.cern.ch/geant4/geant4/-/archive/v10.7.2/geant4-v10.7.2.tar.gz | |
# http://geant4-data.web.cern.ch/geant4-data/releases/source/geant4.10.7.2.tar.gz | |
# RUN apt-get update -y && \ | |
# apt-get install -y cmake curl g++ libexpat1-dev | |
WORKDIR /opt/geant4/src | |
COPY geant4-10-7.patch geant4-10-7.patch | |
RUN patch /opt/geant4/src/geant4-v10.7.2/source/persistency/ascii/src/G4tgrEvaluator.cc geant4-10-7.patch && \ | |
cmake -DCMAKE_INSTALL_PREFIX=/opt/geant4/install \ | |
-DCMAKE_CXX_STANDARD=17 \ | |
-DGEANT4_INSTALL_DATA=ON \ | |
-DGEANT4_INSTALL_DATADIR=/opt/geant4/data \ | |
-DGEANT4_BUILD_MULTITHREADED=ON \ | |
-DGEANT4_INSTALL_EXAMPLES=OFF \ | |
-DGEANT4_USE_GDML=ON \ | |
../src/geant4-v10.7.2 && \ | |
make -j`nproc` && \ | |
make install | |
# RUN sh /opt/geant4/install/bin/geant4.sh | |
RUN mkdir -p /opt/vgm/src && \ | |
mkdir -p /opt/vgm/build && \ | |
mkdir -p /opt/vgm/install && \ | |
wget https://github.com/vmc-project/vgm/archive/refs/tags/v4-8.tar.gz && \ | |
tar xf v4-8.tar.gz -C /opt/vgm/src/ && \ | |
#wget https://github.com/vmc-project/vgm/archive/refs/tags/v5-2.tar.gz && \ | |
#tar xf v5-2.tar.gz -C /opt/vgm/src/ && \ | |
rm v*.tar.gz | |
WORKDIR /opt/vgm/build | |
RUN cmake -DCMAKE_CXX_STANDARD=17 -DCMAKE_INSTALL_PREFIX=/opt/vgm/install -DGeant4_DIR=/opt/geant4/install/lib/Geant4-10.7.2 /opt/vgm/src/vgm-4-8/ &&\ | |
make VERBOSE=1 &&\ | |
make install | |
COPY entry-point.sh /entry-point.sh | |
ENTRYPOINT ["/entry-point.sh"] | |
CMD ["/bin/bash"] | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment