From 6ef57a97c0648fb8ef68eda8d7d493de2e9ab80b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Sch=C3=BCtt?= Date: Mon, 12 Aug 2024 14:04:14 +0200 Subject: [PATCH] Docker: Add test for GCC 14 --- tools/docker/Dockerfile.test_gcc14 | 64 ++++++++++++++++++++++++++++ tools/docker/cp2k-ci.conf | 8 ++++ tools/docker/generate_dockerfiles.py | 11 ++++- 3 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 tools/docker/Dockerfile.test_gcc14 diff --git a/tools/docker/Dockerfile.test_gcc14 b/tools/docker/Dockerfile.test_gcc14 new file mode 100644 index 0000000000..3521dc85ad --- /dev/null +++ b/tools/docker/Dockerfile.test_gcc14 @@ -0,0 +1,64 @@ +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_gcc14 ../../ +# + +FROM ubuntu:24.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-14 \ + g++-14 \ + gfortran-14 \ + libfftw3-dev \ + libopenblas-dev \ + libint2-dev \ + libxc-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-14 /usr/local/bin/gcc && \ + ln -sf /usr/bin/g++-14 /usr/local/bin/g++ && \ + ln -sf /usr/bin/gfortran-14 /usr/local/bin/gfortran + +# Install DBCSR +COPY ./tools/docker/scripts/install_dbcsr.sh ./ +RUN ./install_dbcsr.sh + +# Install CP2K sources. +WORKDIR /opt/cp2k +COPY ./src ./src +COPY ./data ./data +COPY ./tests ./tests +COPY ./tools/build_utils ./tools/build_utils +COPY ./cmake ./cmake +COPY ./CMakeLists.txt . + +# Build CP2K with CMake and run regression tests. +ARG TESTOPTS="" +COPY ./tools/docker/scripts/build_cp2k_cmake.sh ./tools/docker/scripts/test_regtest_cmake.sh ./ +RUN /bin/bash -o pipefail -c " \ + TESTOPTS='${TESTOPTS}' \ + ./test_regtest_cmake.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 diff --git a/tools/docker/cp2k-ci.conf b/tools/docker/cp2k-ci.conf index 5c6a3f8aff..0c21a7e70a 100644 --- a/tools/docker/cp2k-ci.conf +++ b/tools/docker/cp2k-ci.conf @@ -202,6 +202,14 @@ nodepools: pool-t2d-32 build_path: / dockerfile: /tools/docker/Dockerfile.test_gcc13 +[gcc14] +display_name: Ubuntu, GCC 14 (ssmp) +tags: daily +cpu: 32 +nodepools: pool-t2d-32 +build_path: / +dockerfile: /tools/docker/Dockerfile.test_gcc14 + #------------------------------------------------------------------------------- [perf-cuda-volta] diff --git a/tools/docker/generate_dockerfiles.py b/tools/docker/generate_dockerfiles.py index 38fb0d3cee..8bab59a041 100755 --- a/tools/docker/generate_dockerfiles.py +++ b/tools/docker/generate_dockerfiles.py @@ -56,7 +56,7 @@ def main() -> None: with OutputFile(f"Dockerfile.test_coverage-{version}", args.check) as f: f.write(toolchain_full() + coverage(version)) - for gcc_version in 8, 9, 10, 11, 12, 13: + for gcc_version in 8, 9, 10, 11, 12, 13, 14: with OutputFile(f"Dockerfile.test_gcc{gcc_version}", args.check) as f: if gcc_version > 8: f.write(toolchain_ubuntu_nompi(gcc_version=gcc_version)) @@ -426,7 +426,16 @@ def toolchain_ubuntu_nompi( assert gcc_version > 8 output = rf""" FROM {base_image} +""" + if gcc_version > 13: + output += rf""" +# Add Ubuntu universe repository. +RUN apt-get update -qq && apt-get install -qq --no-install-recommends software-properties-common +RUN add-apt-repository universe +""" + + output += rf""" # Install Ubuntu packages. RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && \ apt-get update -qq && apt-get install -qq --no-install-recommends \