mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-21 06:25:15 -04:00
124 lines
3.7 KiB
Text
124 lines
3.7 KiB
Text
#
|
|
# This file was created by generate_dockerfiles.py.
|
|
# Usage: podman build --shm-size=1g -f ./Dockerfile.test_gcc12 ../../
|
|
#
|
|
|
|
FROM ubuntu:24.04
|
|
|
|
# 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-12 \
|
|
g++-12 \
|
|
gfortran-12 \
|
|
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-12 /usr/local/bin/gcc && \
|
|
ln -sf /usr/bin/g++-12 /usr/local/bin/g++ && \
|
|
ln -sf /usr/bin/gfortran-12 /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:24.04
|
|
|
|
# Install the toolchain.
|
|
RUN mkdir scripts
|
|
COPY ./tools/toolchain/scripts/VERSION \
|
|
./tools/toolchain/scripts/parse_if.py \
|
|
./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 \
|
|
--with-gcc=system \
|
|
--with-cmake=system \
|
|
--with-ninja=system \
|
|
--with-openblas=system \
|
|
--with-libxc=no \
|
|
--with-libint=no \
|
|
--with-fftw=no \
|
|
--with-libxsmm=no \
|
|
--with-spglib=no \
|
|
--with-libvori=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 .
|
|
RUN ./build_cp2k.sh ubuntu ssmp
|
|
|
|
# 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 ubuntu ssmp |& 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
|