Skip to content
Snippets Groups Projects
Forked from Corryvreckan / Corryvreckan
886 commits behind the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Dockerfile.deps 3.70 KiB
FROM ubuntu:latest
MAINTAINER Simon Spannagel <simon.spannagel@cern.ch>

SHELL ["/bin/bash", "-c"]

# Install basic build requirements
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata curl cmake g++ gcc binutils git clang-format-12 clang-tidy-12

# Install ROOT dependencies
RUN apt-get update && apt-get install -y dpkg-dev libx11-dev libxpm-dev libxft-dev libxext-dev libssl-dev python3 python3-dev python3-pip python3-tk python-is-python3

# Install helpful Python packages
RUN pip3 install --upgrade pip && \
    pip3 install numpy matplotlib scipy pandas codespell cmakelang

# Add layer for ROOT6
ENV ROOT6_VERSION 6.26.04

ENV ROOTSYS="/opt/root6"
ENV PATH="$ROOTSYS/bin:$PATH"
ENV LD_LIBRARY_PATH="$ROOTSYS/lib:$LD_LIBRARY_PATH"
ENV LIBPATH="$ROOTSYS/lib:$LIBPATH"
ENV PYTHONPATH="$ROOTSYS/lib:$PYTHONPATH"
ENV CMAKE_PREFIX_PATH="$ROOTSYS:$CMAKE_PREFIX_PATH"

RUN mkdir -p ${ROOTSYS}/{src,build} && \
    curl -o ${ROOTSYS}/root.${ROOT6_VERSION}.tar.gz \
            https://root.cern.ch/download/root_v${ROOT6_VERSION}.source.tar.gz && \
    tar zxf ${ROOTSYS}/root.${ROOT6_VERSION}.tar.gz -C ${ROOTSYS}/src && \
    rm -f ${ROOTSYS}/root.${ROOT6_VERSION}.tar.gz && \
    cd ${ROOTSYS}/build && \
    cmake -Dgdml=ON \
           -Dgenvector=ON \
           -Dmathmore=ON \
           -Dminuit2=ON \
           -Dthread=ON \
           -Dx11=OFF \
           -Dopengl=OFF \
           -Dtmva=OFF -Dtmva-cpu=OFF -Dtmva-pymva=OFF \
           -Dhttp=OFF \
           -Dwebgui=OFF \
           -Droot7=OFF \
           -Dfftw3=OFF \
           -Dfitsio=OFF \
           -Dclad=OFF \
           -Dspectrum=OFF \
           -Dvdt=OFF \
           -Dxrootd=OFF \
           -Droofit=OFF \
           -Ddataframe=OFF \
           -Dpython3=ON \
           -DPYTHON_EXECUTABLE=/usr/bin/python3 \
           -DCMAKE_INSTALL_PREFIX=../ \
           -DCMAKE_CXX_STANDARD=17 \
           ../src/root-${ROOT6_VERSION} && \
    make -j`grep -c processor /proc/cpuinfo` && \
    make install && \
    rm -rf ${ROOTSYS}/{src,build}


# Install Peary dependencies
RUN apt-get update && apt-get install -y unzip libreadline-dev

ENV PEARY_VERSION v0.11.0

# Add layer for Caribou Peary
ENV PEARYPATH="/opt/peary"
RUN mkdir -p ${PEARYPATH}/{src,build} && \
    curl -L -o ${PEARYPATH}/peary-${PEARY_VERSION}.zip \
            https://gitlab.cern.ch/Caribou/peary/-/archive/${PEARY_VERSION}/peary-${PEARY_VERSION}.zip && \
    unzip ${PEARYPATH}/peary-${PEARY_VERSION}.zip -d ${PEARYPATH}/src && \
    rm -f ${PEARYPATH}/peary-${PEARY_VERSION}.zip && \
    cd ${PEARYPATH}/build && \
    cmake -DINTERFACE_EMULATION=ON \
          -DINSTALL_PREFIX=../ \
          ../src/peary-${PEARY_VERSION} && \
    make -j`grep -c processor /proc/cpuinfo` && \
    make install && \
    rm -rf ${PEARYPATH}/{src,build}


ENV EUDAQ2_VERSION 2.5.2

# Add layer for EUDAQ2
ENV EUDAQ2PATH="/opt/eudaq2"
ENV Peary_DIR="${PEARYPATH}/share/cmake/Modules/"
RUN mkdir -p ${EUDAQ2PATH}/{src,build} && \
    curl -L -o ${EUDAQ2PATH}/eudaq2.${EUDAQ2_VERSION}.zip \
            https://github.com/eudaq/eudaq/archive/v${EUDAQ2_VERSION}.zip && \
    unzip ${EUDAQ2PATH}/eudaq2.${EUDAQ2_VERSION}.zip -d ${EUDAQ2PATH}/src && \
    rm -f ${EUDAQ2PATH}/eudaq2.${EUDAQ2_VERSION}.zip && \
    cd ${EUDAQ2PATH}/build && \
    cmake -DEUDAQ_BUILD_EXECUTABLE=OFF \
          -DEUDAQ_BUILD_GUI=OFF \
          -DUSER_CARIBOU_BUILD=ON \
          -DUSER_EUDET_BUILD=ON \
          -DUSER_TLU_BUILD=ON \
          -DEUDAQ_INSTALL_PREFIX=../ \
           ../src/eudaq-${EUDAQ2_VERSION} && \
    make -j`grep -c processor /proc/cpuinfo` && \
    make install && \
    rm -rf ${EUDAQ2PATH}/{src,build}

# Install Corryvreckan dependencies
RUN apt-get install -y libeigen3-dev python3-lxml libhdf5-dev

CMD ["bash"]