diff --git a/dev/.env.docker-compose b/dev/.env.docker-compose index b69a373b..630bdc54 100644 --- a/dev/.env.docker-compose +++ b/dev/.env.docker-compose @@ -18,3 +18,6 @@ DJANGO_PHOLD_OUTPUT_DIR=/tmp/phold_output # Number of MPI processes for PHOLD simulations (set to 1 for no MPI) DJANGO_PHOLD_MPI_PROCESSES=4 + +# Directory containing example ping pong config and CODES binary +CODE_EXAMPLE_DIR=/opt/codes diff --git a/dev/django.Dockerfile b/dev/django.Dockerfile index 23851beb..692a9f91 100644 --- a/dev/django.Dockerfile +++ b/dev/django.Dockerfile @@ -1,8 +1,10 @@ -# Pin to a specific ROSS commit for reproducible builds. +# Pin to a specific ROSS and CODES commits for reproducible builds. ARG ROSS_GIT_REF=dc3a6a056cfc7a5e68f7141f88d8833407599ef8 +ARG CODES_GIT_REF=a5958cfaee6dcc73a98d084005e3412da773fb35 FROM ubuntu:24.04 AS ross-builder ARG ROSS_GIT_REF +ARG CODES_GIT_REF RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates git \ @@ -39,7 +41,19 @@ RUN cmake -S /ross -B /ross/build \ -DCMAKE_BUILD_TYPE=Release \ -DROSS_BUILD_MODELS=ON \ -DROSS_BUILD_TESTING=OFF \ - && cmake --build /ross/build --parallel + && cmake --build /ross/build --parallel \ + && cmake --install /ross/build --prefix /ross/install + +RUN git clone https://github.com/codes-org/codes.git opt/codes \ + && cd /opt/codes \ + && git checkout "${CODES_GIT_REF}" \ + && git submodule update --init --recursive + +RUN cmake -S /opt/codes -B /opt/codes/build \ + -DROSS_DIR=/ross/install/lib \ + -DROSS_PKG_CONFIG_PATH=/ross/install/lib/pkgconfig \ + && cmake --build opt/codes/build \ + && cmake --install opt/codes/build/ FROM mcr.microsoft.com/devcontainers/base:ubuntu-24.04 @@ -60,7 +74,7 @@ ENV PATH=/opt/mpich/bin:$PATH \ # PHOLD binary built in the ross-builder stage above. Baked into the image instead # of relying on a host `ross` checkout bind-mounted at runtime. COPY --from=ross-builder --chown=vscode:vscode /ross/build/models/phold/phold /opt/ross/phold - +COPY --from=ross-builder --chown=vscode:vscode /opt/codes /opt/codes # Ensure Python output appears immediately in container logs. ENV PYTHONUNBUFFERED=1