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 v11.1.2 — batch mode only (no visualization, no multithreading)
RUN wget -q https://gitlab.cern.ch/geant4/geant4/-/archive/v11.1.2/geant4-v11.1.2.tar.gz && \
    tar -xzf geant4-v11.1.2.tar.gz -C /tmp && \
    rm geant4-v11.1.2.tar.gz && \
    mkdir /tmp/geant4-v11.1.2-build && \
    cmake \
        -S /tmp/geant4-v11.1.2 \
        -B /tmp/geant4-v11.1.2-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-v11.1.2-build --parallel $(nproc) > /dev/null && \
    cmake --install /tmp/geant4-v11.1.2-build > /dev/null && \
    rm -rf /tmp/geant4-v11.1.2 /tmp/geant4-v11.1.2-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 && \
    cmake \
        -S . -B build \
        -DWITH_GEANT4_UIVIS=OFF \
        > /dev/null && \
    cmake --build build --parallel $(nproc) && \
    cp build/minicalo*.so /usr/local/lib/python3.10/dist-packages/

RUN cp /root/minicalosim/bind/G4Calo.py \
       /root/minicalosim/bind/minicalo_tools.py \
       /root/minicalosim/bind/minipandas.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"]
