18de7dd3db
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
69 lines
2.2 KiB
Plaintext
69 lines
2.2 KiB
Plaintext
FROM ubuntu:22.04
|
|
|
|
SHELL ["/bin/bash", "-c"]
|
|
|
|
USER root
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Build tools + minimal Python
|
|
RUN apt-get update -y && apt-get install -y \
|
|
python3 python3-dev python3-pip \
|
|
cmake g++ gcc binutils \
|
|
libssl-dev wget git \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN python3 -m pip install --upgrade pip && \
|
|
python3 -m pip install numpy pandas uproot awkward plotly ipython && \
|
|
ln -sf /usr/bin/python3 /usr/bin/python
|
|
|
|
# Geant4 — build from submodule source (batch mode only, no visualization, no multithreading)
|
|
ADD minicalosim/lib/geant4 /tmp/geant4-src
|
|
|
|
RUN rm -f /tmp/geant4-src/.git && \
|
|
cmake \
|
|
-S /tmp/geant4-src \
|
|
-B /tmp/geant4-build \
|
|
-DCMAKE_INSTALL_PREFIX=/opt/geant4-v11.1.2 \
|
|
-DCMAKE_RULE_MESSAGES=OFF \
|
|
-DGEANT4_INSTALL_DATA=ON \
|
|
-DGEANT4_BUILD_MULTITHREADED=OFF \
|
|
-DGEANT4_BUILD_TLS_MODEL=global-dynamic \
|
|
> /dev/null && \
|
|
cmake --build /tmp/geant4-build --parallel $(( $(nproc) < 16 ? $(nproc) : 16 )) > /dev/null && \
|
|
cmake --install /tmp/geant4-build > /dev/null && \
|
|
rm -rf /tmp/geant4-src /tmp/geant4-build
|
|
|
|
ENV LD_LIBRARY_PATH="/opt/geant4-v11.1.2/lib"
|
|
|
|
# Build minicalo
|
|
ARG BUILD_DATE
|
|
ARG COMMIT
|
|
ARG USER
|
|
LABEL org.label-schema.build-date=$BUILD_DATE
|
|
|
|
ADD minicalosim /root/minicalosim
|
|
|
|
RUN cd /root/minicalosim && git checkout $COMMIT && \
|
|
git submodule update --init lib/pybind11 && \
|
|
cmake \
|
|
-S . -B build \
|
|
-DWITH_GEANT4_UIVIS=OFF \
|
|
> /dev/null && \
|
|
cmake --build build --parallel $(( $(nproc) < 16 ? $(nproc) : 16 )) && \
|
|
cp build/minicalo*.so /usr/local/lib/python3.10/dist-packages/
|
|
|
|
RUN echo "commit = '${COMMIT}'" > /root/minicalosim/bind/minicalo_version.py && \
|
|
cp /root/minicalosim/bind/G4Calo.py \
|
|
/root/minicalosim/bind/minicalo_tools.py \
|
|
/root/minicalosim/bind/minipandas.py \
|
|
/root/minicalosim/bind/minicalo_version.py \
|
|
/usr/local/lib/python3.10/dist-packages/ && \
|
|
install -m 755 /root/minicalosim/bind/G4Calo_exec.py /usr/local/bin/G4Calo_exec.py
|
|
|
|
# Copy examples
|
|
RUN cp -r /root/minicalosim/bind /examples && \
|
|
rm -rf /root/minicalosim
|
|
|
|
WORKDIR /examples
|
|
CMD ["bash"]
|