# # This file was created by generate_dockerfiles.py. # Usage: podman build --shm-size=1g -f ./Dockerfile.test_minimal ../../ # FROM ubuntu:26.04 # Add Ubuntu universe repository. RUN apt-get update -qq && apt-get install -qq --no-install-recommends software-properties-common RUN add-apt-repository universe # Install Ubuntu packages. RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && \ apt-get update -qq && apt-get install -qq --no-install-recommends \ cmake \ less \ nano \ make \ ninja-build \ wget \ python3 \ ca-certificates \ gcc-15 \ g++-15 \ gfortran-15 \ libfftw3-dev \ libopenblas-dev \ libint2-dev \ libxc-dev \ libhdf5-dev \ libxsmm-dev \ libspglib-f08-dev \ && rm -rf /var/lib/apt/lists/* # Create links in /usr/local/bin to overrule links in /usr/bin. RUN ln -sf /usr/bin/gcc-15 /usr/local/bin/gcc && \ ln -sf /usr/bin/g++-15 /usr/local/bin/g++ && \ ln -sf /usr/bin/gfortran-15 /usr/local/bin/gfortran # Use toolchain to install DBCSR. # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain COPY ./tools/toolchain/install_requirements*.sh ./ RUN ./install_requirements.sh ubuntu:26.04 # Install the toolchain. RUN mkdir scripts COPY ./tools/toolchain/scripts/VERSION \ ./tools/toolchain/scripts/tool_kit.sh \ ./tools/toolchain/scripts/common_vars.sh \ ./tools/toolchain/scripts/signal_trap.sh \ ./tools/toolchain/scripts/get_openblas_arch.sh \ ./scripts/ COPY ./tools/toolchain/install_cp2k_toolchain.sh . RUN ./install_cp2k_toolchain.sh \ --mpi-mode=no \ --with-dbcsr=install \ --with-gcc=system \ --with-cmake=system \ --with-ninja=system \ --with-openblas=system \ --with-libxc=no \ --with-libint=no \ --with-fftw=no \ --with-libxsmm=install \ --with-libxs=install \ --with-spglib=no \ --with-libvori=no \ --with-tblite=no \ --dry-run # Dry-run leaves behind config files for the followup install scripts. # This breaks up the lengthy installation into smaller build steps. COPY ./tools/toolchain/scripts/stage0/ ./scripts/stage0/ RUN ./scripts/stage0/install_stage0.sh && rm -rf ./build COPY ./tools/toolchain/scripts/stage1/ ./scripts/stage1/ RUN ./scripts/stage1/install_stage1.sh && rm -rf ./build COPY ./tools/toolchain/scripts/stage2/ ./scripts/stage2/ RUN ./scripts/stage2/install_stage2.sh && rm -rf ./build COPY ./tools/toolchain/scripts/stage3/ ./scripts/stage3/ RUN ./scripts/stage3/install_stage3.sh && rm -rf ./build COPY ./tools/toolchain/scripts/stage4/ ./scripts/stage4/ RUN ./scripts/stage4/install_stage4.sh && rm -rf ./build COPY ./tools/toolchain/scripts/stage5/ ./scripts/stage5/ RUN ./scripts/stage5/install_stage5.sh && rm -rf ./build COPY ./tools/toolchain/scripts/stage6/ ./scripts/stage6/ RUN ./scripts/stage6/install_stage6.sh && rm -rf ./build COPY ./tools/toolchain/scripts/stage7/ ./scripts/stage7/ RUN ./scripts/stage7/install_stage7.sh && rm -rf ./build COPY ./tools/toolchain/scripts/stage8/ ./scripts/stage8/ RUN ./scripts/stage8/install_stage8.sh && rm -rf ./build COPY ./tools/toolchain/scripts/stage9/ ./scripts/stage9/ RUN ./scripts/stage9/install_stage9.sh && rm -rf ./build # Install CP2K sources. WORKDIR /opt/cp2k COPY ./src ./src COPY ./data ./data COPY ./tools/build_utils ./tools/build_utils COPY ./cmake ./cmake COPY ./CMakeLists.txt . # Compile CP2K. COPY ./tools/docker/scripts/build_cp2k.sh ./tools/docker/scripts/cmake_cp2k.sh ./ RUN ./build_cp2k.sh minimal sdbg # Run regression tests. ARG TESTOPTS="" COPY ./tests ./tests COPY ./tools/docker/scripts/test_regtest.sh ./ RUN /bin/bash -o pipefail -c " \ TESTOPTS='${TESTOPTS}' \ ./test_regtest.sh minimal sdbg |& tee report.log && \ rm -rf regtesting" # Output the report if the image is old and was therefore pulled from the build cache. CMD cat $(find ./report.log -mmin +10) | sed '/^Summary:/ s/$/ (cached)/' ENTRYPOINT [] #EOF