From 2e46d64db7777b300e4abd529d0202067536bf26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Sch=C3=BCtt?= Date: Wed, 2 Feb 2022 22:58:19 +0100 Subject: [PATCH] Docker: Generate dockerfiles for remaining CI tests --- tools/docker/Dockerfile.test_aiida | 69 ++++++++++- tools/docker/Dockerfile.test_ase | 73 ++++++++++- tools/docker/Dockerfile.test_conventions | 73 ++++++++++- tools/docker/Dockerfile.test_coverage-pdbg | 71 +++++++++-- tools/docker/Dockerfile.test_coverage-sdbg | 71 +++++++++-- tools/docker/Dockerfile.test_cuda_A100 | 4 +- tools/docker/Dockerfile.test_cuda_P100 | 4 +- tools/docker/Dockerfile.test_cuda_V100 | 4 +- tools/docker/Dockerfile.test_doxygen | 18 ++- tools/docker/Dockerfile.test_fedora-psmp | 74 ++++++++++++ tools/docker/Dockerfile.test_gcc10 | 4 +- tools/docker/Dockerfile.test_gcc7 | 4 +- tools/docker/Dockerfile.test_gcc8 | 4 +- tools/docker/Dockerfile.test_gcc9 | 4 +- tools/docker/Dockerfile.test_gromacs | 73 ++++++++++- tools/docker/Dockerfile.test_hip_cuda_A100 | 4 +- tools/docker/Dockerfile.test_hip_cuda_P100 | 4 +- tools/docker/Dockerfile.test_hip_cuda_V100 | 4 +- tools/docker/Dockerfile.test_hip_rocm_Mi100 | 4 +- tools/docker/Dockerfile.test_hip_rocm_Mi50 | 4 +- tools/docker/Dockerfile.test_i-pi | 73 ++++++++++- tools/docker/Dockerfile.test_i386 | 4 +- tools/docker/Dockerfile.test_manual | 73 ++++++++++- tools/docker/Dockerfile.test_minimal | 69 ++++++++++- tools/docker/Dockerfile.test_openmpi-psmp | 74 ++++++++++++ tools/docker/Dockerfile.test_pdbg | 70 +++++++++-- tools/docker/Dockerfile.test_performance | 73 +++++++++-- .../Dockerfile.test_performance_cuda_A100 | 6 +- .../Dockerfile.test_performance_cuda_P100 | 6 +- .../Dockerfile.test_performance_cuda_V100 | 6 +- tools/docker/Dockerfile.test_psmp | 69 ++++++++++- tools/docker/Dockerfile.test_python | 18 ++- tools/docker/Dockerfile.test_sdbg | 69 ++++++++++- tools/docker/Dockerfile.test_ssmp | 69 ++++++++++- tools/docker/generate_dockerfiles.py | 114 ++++++++++++++++-- 35 files changed, 1216 insertions(+), 147 deletions(-) create mode 100644 tools/docker/Dockerfile.test_fedora-psmp create mode 100644 tools/docker/Dockerfile.test_openmpi-psmp diff --git a/tools/docker/Dockerfile.test_aiida b/tools/docker/Dockerfile.test_aiida index 4e63ec4107..beeec9c737 100644 --- a/tools/docker/Dockerfile.test_aiida +++ b/tools/docker/Dockerfile.test_aiida @@ -1,21 +1,78 @@ -ARG TOOLCHAIN=cp2k/toolchain:latest -FROM ${TOOLCHAIN} +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_aiida ../../ +# -# author: Ole Schuett +FROM ubuntu:20.04 +# Install requirements for the toolchain. +WORKDIR /opt/cp2k-toolchain +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu:20.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 \ + --install-all \ + --mpi-mode=mpich \ + --dry-run + +# Dry-run leaves behind config files for the followup install scripts. +# This breaks up the lengthy installation into smaller docker 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/arch_base.tmpl \ + ./tools/toolchain/scripts/generate_arch_files.sh \ + ./scripts/ +RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +# Install test for aiida. WORKDIR /workspace -COPY ./scripts/install_basics.sh . +COPY ./tools/docker/scripts/install_basics.sh . RUN ./install_basics.sh # Some buggy Python packages open utf8 files in text mode. # As workaround we set locale.getpreferredencoding() to utf8. ENV LANG="en_US.UTF-8" LANGUAGE="en_US:en" LC_ALL="en_US.UTF-8" -COPY ./scripts/install_aiida.sh . +COPY ./tools/docker/scripts/install_aiida.sh . RUN ./install_aiida.sh -COPY ./scripts/ci_entrypoint.sh ./scripts/test_aiida.sh ./ +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_aiida.sh ./ CMD ["./ci_entrypoint.sh", "./test_aiida.sh"] #EOF diff --git a/tools/docker/Dockerfile.test_ase b/tools/docker/Dockerfile.test_ase index de74fd93c2..b3b2552230 100644 --- a/tools/docker/Dockerfile.test_ase +++ b/tools/docker/Dockerfile.test_ase @@ -1,17 +1,78 @@ -ARG TOOLCHAIN=cp2k/toolchain:latest -FROM ${TOOLCHAIN} +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_ase ../../ +# -# author: Ole Schuett +FROM ubuntu:20.04 +# Install requirements for the toolchain. +WORKDIR /opt/cp2k-toolchain +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu:20.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 \ + --install-all \ + --mpi-mode=mpich \ + --dry-run + +# Dry-run leaves behind config files for the followup install scripts. +# This breaks up the lengthy installation into smaller docker 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/arch_base.tmpl \ + ./tools/toolchain/scripts/generate_arch_files.sh \ + ./scripts/ +RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +# Install test for ase. WORKDIR /workspace -COPY ./scripts/install_basics.sh . +COPY ./tools/docker/scripts/install_basics.sh . RUN ./install_basics.sh -COPY ./scripts/install_ase.sh . +# Some buggy Python packages open utf8 files in text mode. +# As workaround we set locale.getpreferredencoding() to utf8. +ENV LANG="en_US.UTF-8" LANGUAGE="en_US:en" LC_ALL="en_US.UTF-8" + +COPY ./tools/docker/scripts/install_ase.sh . RUN ./install_ase.sh -COPY ./scripts/ci_entrypoint.sh ./scripts/test_ase.sh ./ +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_ase.sh ./ CMD ["./ci_entrypoint.sh", "./test_ase.sh"] #EOF diff --git a/tools/docker/Dockerfile.test_conventions b/tools/docker/Dockerfile.test_conventions index c548b88601..52b0e5b54d 100644 --- a/tools/docker/Dockerfile.test_conventions +++ b/tools/docker/Dockerfile.test_conventions @@ -1,17 +1,78 @@ -ARG TOOLCHAIN=cp2k/toolchain:latest -FROM ${TOOLCHAIN} +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_conventions ../../ +# -# author: Ole Schuett +FROM ubuntu:20.04 +# Install requirements for the toolchain. +WORKDIR /opt/cp2k-toolchain +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu:20.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 \ + --install-all \ + --mpi-mode=mpich \ + --dry-run + +# Dry-run leaves behind config files for the followup install scripts. +# This breaks up the lengthy installation into smaller docker 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/arch_base.tmpl \ + ./tools/toolchain/scripts/generate_arch_files.sh \ + ./scripts/ +RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +# Install test for conventions. WORKDIR /workspace -COPY ./scripts/install_basics.sh . +COPY ./tools/docker/scripts/install_basics.sh . RUN ./install_basics.sh -COPY ./scripts/install_conventions.sh . +# Some buggy Python packages open utf8 files in text mode. +# As workaround we set locale.getpreferredencoding() to utf8. +ENV LANG="en_US.UTF-8" LANGUAGE="en_US:en" LC_ALL="en_US.UTF-8" + +COPY ./tools/docker/scripts/install_conventions.sh . RUN ./install_conventions.sh -COPY ./scripts/ci_entrypoint.sh ./scripts/test_conventions.sh ./ +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_conventions.sh ./ CMD ["./ci_entrypoint.sh", "./test_conventions.sh"] #EOF diff --git a/tools/docker/Dockerfile.test_coverage-pdbg b/tools/docker/Dockerfile.test_coverage-pdbg index d0ddcb3f9e..934c105fdc 100644 --- a/tools/docker/Dockerfile.test_coverage-pdbg +++ b/tools/docker/Dockerfile.test_coverage-pdbg @@ -1,20 +1,77 @@ -ARG TOOLCHAIN=cp2k/toolchain:latest -FROM ${TOOLCHAIN} +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_coverage-pdbg ../../ +# -# author: Ole Schuett +FROM ubuntu:20.04 +# Install requirements for the toolchain. +WORKDIR /opt/cp2k-toolchain +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu:20.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 \ + --install-all \ + --mpi-mode=mpich \ + --dry-run + +# Dry-run leaves behind config files for the followup install scripts. +# This breaks up the lengthy installation into smaller docker 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/arch_base.tmpl \ + ./tools/toolchain/scripts/generate_arch_files.sh \ + ./scripts/ +RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +# Install coverage test for pdbg. WORKDIR /workspace -COPY ./scripts/install_basics.sh . +COPY ./tools/docker/scripts/install_basics.sh . RUN ./install_basics.sh -COPY ./scripts/install_coverage.sh . +COPY ./tools/docker/scripts/install_coverage.sh . RUN ./install_coverage.sh -COPY ./scripts/install_regtest.sh . +COPY ./tools/docker/scripts/install_regtest.sh . RUN ./install_regtest.sh local_coverage pdbg -COPY ./scripts/ci_entrypoint.sh ./scripts/test_coverage.sh ./ +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_coverage.sh ./ CMD ["./ci_entrypoint.sh", "./test_coverage.sh", "pdbg"] #EOF diff --git a/tools/docker/Dockerfile.test_coverage-sdbg b/tools/docker/Dockerfile.test_coverage-sdbg index bddc2ed5fb..aaab26d384 100644 --- a/tools/docker/Dockerfile.test_coverage-sdbg +++ b/tools/docker/Dockerfile.test_coverage-sdbg @@ -1,20 +1,77 @@ -ARG TOOLCHAIN=cp2k/toolchain:latest -FROM ${TOOLCHAIN} +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_coverage-sdbg ../../ +# -# author: Ole Schuett +FROM ubuntu:20.04 +# Install requirements for the toolchain. +WORKDIR /opt/cp2k-toolchain +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu:20.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 \ + --install-all \ + --mpi-mode=mpich \ + --dry-run + +# Dry-run leaves behind config files for the followup install scripts. +# This breaks up the lengthy installation into smaller docker 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/arch_base.tmpl \ + ./tools/toolchain/scripts/generate_arch_files.sh \ + ./scripts/ +RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +# Install coverage test for sdbg. WORKDIR /workspace -COPY ./scripts/install_basics.sh . +COPY ./tools/docker/scripts/install_basics.sh . RUN ./install_basics.sh -COPY ./scripts/install_coverage.sh . +COPY ./tools/docker/scripts/install_coverage.sh . RUN ./install_coverage.sh -COPY ./scripts/install_regtest.sh . +COPY ./tools/docker/scripts/install_regtest.sh . RUN ./install_regtest.sh local_coverage sdbg -COPY ./scripts/ci_entrypoint.sh ./scripts/test_coverage.sh ./ +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_coverage.sh ./ CMD ["./ci_entrypoint.sh", "./test_coverage.sh", "sdbg"] #EOF diff --git a/tools/docker/Dockerfile.test_cuda_A100 b/tools/docker/Dockerfile.test_cuda_A100 index e21b7cb086..42dfa9bef1 100644 --- a/tools/docker/Dockerfile.test_cuda_A100 +++ b/tools/docker/Dockerfile.test_cuda_A100 @@ -18,8 +18,8 @@ RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu # Install the toolchain. RUN mkdir scripts diff --git a/tools/docker/Dockerfile.test_cuda_P100 b/tools/docker/Dockerfile.test_cuda_P100 index 40d1951da9..771a234c86 100644 --- a/tools/docker/Dockerfile.test_cuda_P100 +++ b/tools/docker/Dockerfile.test_cuda_P100 @@ -18,8 +18,8 @@ RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu # Install the toolchain. RUN mkdir scripts diff --git a/tools/docker/Dockerfile.test_cuda_V100 b/tools/docker/Dockerfile.test_cuda_V100 index bb8730dc15..c1708623c9 100644 --- a/tools/docker/Dockerfile.test_cuda_V100 +++ b/tools/docker/Dockerfile.test_cuda_V100 @@ -18,8 +18,8 @@ RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu # Install the toolchain. RUN mkdir scripts diff --git a/tools/docker/Dockerfile.test_doxygen b/tools/docker/Dockerfile.test_doxygen index 9baf8cd30f..8372fdc08b 100644 --- a/tools/docker/Dockerfile.test_doxygen +++ b/tools/docker/Dockerfile.test_doxygen @@ -1,16 +1,24 @@ +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_doxygen ../../ +# + FROM ubuntu:20.04 -# author: Ole Schuett - +# Install test for doxygen. WORKDIR /workspace -COPY ./scripts/install_basics.sh . +COPY ./tools/docker/scripts/install_basics.sh . RUN ./install_basics.sh -COPY ./scripts/install_doxygen.sh . +# Some buggy Python packages open utf8 files in text mode. +# As workaround we set locale.getpreferredencoding() to utf8. +ENV LANG="en_US.UTF-8" LANGUAGE="en_US:en" LC_ALL="en_US.UTF-8" + +COPY ./tools/docker/scripts/install_doxygen.sh . RUN ./install_doxygen.sh -COPY ./scripts/ci_entrypoint.sh ./scripts/test_doxygen.sh ./ +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_doxygen.sh ./ CMD ["./ci_entrypoint.sh", "./test_doxygen.sh"] #EOF diff --git a/tools/docker/Dockerfile.test_fedora-psmp b/tools/docker/Dockerfile.test_fedora-psmp new file mode 100644 index 0000000000..d83429a6d1 --- /dev/null +++ b/tools/docker/Dockerfile.test_fedora-psmp @@ -0,0 +1,74 @@ +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_fedora-psmp ../../ +# + +FROM fedora:33 + +# Install requirements for the toolchain. +WORKDIR /opt/cp2k-toolchain +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh fedora:33 + +# 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 \ + --install-all \ + --mpi-mode=mpich \ + --dry-run + +# Dry-run leaves behind config files for the followup install scripts. +# This breaks up the lengthy installation into smaller docker 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/arch_base.tmpl \ + ./tools/toolchain/scripts/generate_arch_files.sh \ + ./scripts/ +RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +# Install regression test for local.psmp. +WORKDIR /workspace + +COPY ./tools/docker/scripts/install_basics.sh . +RUN ./install_basics.sh + +COPY ./tools/docker/scripts/install_regtest.sh . +RUN ./install_regtest.sh local psmp + +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_regtest.sh ./ +CMD ["./ci_entrypoint.sh", "./test_regtest.sh", "local", "psmp"] + +#EOF diff --git a/tools/docker/Dockerfile.test_gcc10 b/tools/docker/Dockerfile.test_gcc10 index 9b7b1da775..a05603e845 100644 --- a/tools/docker/Dockerfile.test_gcc10 +++ b/tools/docker/Dockerfile.test_gcc10 @@ -25,8 +25,8 @@ RUN ln -sf gcc-10 /usr/bin/gcc && \ # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu # Install the toolchain. RUN mkdir scripts diff --git a/tools/docker/Dockerfile.test_gcc7 b/tools/docker/Dockerfile.test_gcc7 index 0c31d5d73b..a35d5e7e9e 100644 --- a/tools/docker/Dockerfile.test_gcc7 +++ b/tools/docker/Dockerfile.test_gcc7 @@ -25,8 +25,8 @@ RUN ln -sf gcc-7 /usr/bin/gcc && \ # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu # Install the toolchain. RUN mkdir scripts diff --git a/tools/docker/Dockerfile.test_gcc8 b/tools/docker/Dockerfile.test_gcc8 index b1576afb52..b6fbff259b 100644 --- a/tools/docker/Dockerfile.test_gcc8 +++ b/tools/docker/Dockerfile.test_gcc8 @@ -25,8 +25,8 @@ RUN ln -sf gcc-8 /usr/bin/gcc && \ # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu # Install the toolchain. RUN mkdir scripts diff --git a/tools/docker/Dockerfile.test_gcc9 b/tools/docker/Dockerfile.test_gcc9 index 8ea62ea2a0..8debe10508 100644 --- a/tools/docker/Dockerfile.test_gcc9 +++ b/tools/docker/Dockerfile.test_gcc9 @@ -25,8 +25,8 @@ RUN ln -sf gcc-9 /usr/bin/gcc && \ # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu # Install the toolchain. RUN mkdir scripts diff --git a/tools/docker/Dockerfile.test_gromacs b/tools/docker/Dockerfile.test_gromacs index a19527cce8..d8013137ff 100644 --- a/tools/docker/Dockerfile.test_gromacs +++ b/tools/docker/Dockerfile.test_gromacs @@ -1,17 +1,78 @@ -ARG TOOLCHAIN=cp2k/toolchain:latest -FROM ${TOOLCHAIN} +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_gromacs ../../ +# -# author: Ole Schuett +FROM ubuntu:20.04 +# Install requirements for the toolchain. +WORKDIR /opt/cp2k-toolchain +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu:20.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 \ + --install-all \ + --mpi-mode=mpich \ + --dry-run + +# Dry-run leaves behind config files for the followup install scripts. +# This breaks up the lengthy installation into smaller docker 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/arch_base.tmpl \ + ./tools/toolchain/scripts/generate_arch_files.sh \ + ./scripts/ +RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +# Install test for gromacs. WORKDIR /workspace -COPY ./scripts/install_basics.sh . +COPY ./tools/docker/scripts/install_basics.sh . RUN ./install_basics.sh -COPY ./scripts/install_gromacs.sh . +# Some buggy Python packages open utf8 files in text mode. +# As workaround we set locale.getpreferredencoding() to utf8. +ENV LANG="en_US.UTF-8" LANGUAGE="en_US:en" LC_ALL="en_US.UTF-8" + +COPY ./tools/docker/scripts/install_gromacs.sh . RUN ./install_gromacs.sh -COPY ./scripts/ci_entrypoint.sh ./scripts/test_gromacs.sh ./ +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_gromacs.sh ./ CMD ["./ci_entrypoint.sh", "./test_gromacs.sh"] #EOF diff --git a/tools/docker/Dockerfile.test_hip_cuda_A100 b/tools/docker/Dockerfile.test_hip_cuda_A100 index ddaa510dbb..038e986bac 100644 --- a/tools/docker/Dockerfile.test_hip_cuda_A100 +++ b/tools/docker/Dockerfile.test_hip_cuda_A100 @@ -96,8 +96,8 @@ RUN hipconfig # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu # Install the toolchain. RUN mkdir scripts diff --git a/tools/docker/Dockerfile.test_hip_cuda_P100 b/tools/docker/Dockerfile.test_hip_cuda_P100 index 74f5294f0b..c9e4721f47 100644 --- a/tools/docker/Dockerfile.test_hip_cuda_P100 +++ b/tools/docker/Dockerfile.test_hip_cuda_P100 @@ -96,8 +96,8 @@ RUN hipconfig # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu # Install the toolchain. RUN mkdir scripts diff --git a/tools/docker/Dockerfile.test_hip_cuda_V100 b/tools/docker/Dockerfile.test_hip_cuda_V100 index 0321f5843a..4d48b1272c 100644 --- a/tools/docker/Dockerfile.test_hip_cuda_V100 +++ b/tools/docker/Dockerfile.test_hip_cuda_V100 @@ -96,8 +96,8 @@ RUN hipconfig # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu # Install the toolchain. RUN mkdir scripts diff --git a/tools/docker/Dockerfile.test_hip_rocm_Mi100 b/tools/docker/Dockerfile.test_hip_rocm_Mi100 index 2b57696d06..3d465ae0d0 100644 --- a/tools/docker/Dockerfile.test_hip_rocm_Mi100 +++ b/tools/docker/Dockerfile.test_hip_rocm_Mi100 @@ -22,8 +22,8 @@ RUN hipconfig # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu # Install the toolchain. RUN mkdir scripts diff --git a/tools/docker/Dockerfile.test_hip_rocm_Mi50 b/tools/docker/Dockerfile.test_hip_rocm_Mi50 index 96c09ea1d5..28f04978bb 100644 --- a/tools/docker/Dockerfile.test_hip_rocm_Mi50 +++ b/tools/docker/Dockerfile.test_hip_rocm_Mi50 @@ -22,8 +22,8 @@ RUN hipconfig # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu # Install the toolchain. RUN mkdir scripts diff --git a/tools/docker/Dockerfile.test_i-pi b/tools/docker/Dockerfile.test_i-pi index d0febab8e0..52e09703dd 100644 --- a/tools/docker/Dockerfile.test_i-pi +++ b/tools/docker/Dockerfile.test_i-pi @@ -1,17 +1,78 @@ -ARG TOOLCHAIN=cp2k/toolchain:latest -FROM ${TOOLCHAIN} +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_i-pi ../../ +# -# author: Ole Schuett +FROM ubuntu:20.04 +# Install requirements for the toolchain. +WORKDIR /opt/cp2k-toolchain +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu:20.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 \ + --install-all \ + --mpi-mode=mpich \ + --dry-run + +# Dry-run leaves behind config files for the followup install scripts. +# This breaks up the lengthy installation into smaller docker 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/arch_base.tmpl \ + ./tools/toolchain/scripts/generate_arch_files.sh \ + ./scripts/ +RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +# Install test for i-pi. WORKDIR /workspace -COPY ./scripts/install_basics.sh . +COPY ./tools/docker/scripts/install_basics.sh . RUN ./install_basics.sh -COPY ./scripts/install_i-pi.sh . +# Some buggy Python packages open utf8 files in text mode. +# As workaround we set locale.getpreferredencoding() to utf8. +ENV LANG="en_US.UTF-8" LANGUAGE="en_US:en" LC_ALL="en_US.UTF-8" + +COPY ./tools/docker/scripts/install_i-pi.sh . RUN ./install_i-pi.sh -COPY ./scripts/ci_entrypoint.sh ./scripts/test_i-pi.sh ./ +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_i-pi.sh ./ CMD ["./ci_entrypoint.sh", "./test_i-pi.sh"] #EOF diff --git a/tools/docker/Dockerfile.test_i386 b/tools/docker/Dockerfile.test_i386 index 2c8b2f0718..0bebadd77e 100644 --- a/tools/docker/Dockerfile.test_i386 +++ b/tools/docker/Dockerfile.test_i386 @@ -25,8 +25,8 @@ RUN ln -sf gcc-10 /usr/bin/gcc && \ # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu # Install the toolchain. RUN mkdir scripts diff --git a/tools/docker/Dockerfile.test_manual b/tools/docker/Dockerfile.test_manual index 4474522a3e..4e65fa5f76 100644 --- a/tools/docker/Dockerfile.test_manual +++ b/tools/docker/Dockerfile.test_manual @@ -1,17 +1,78 @@ -ARG TOOLCHAIN=cp2k/toolchain:latest -FROM ${TOOLCHAIN} +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_manual ../../ +# -# author: Ole Schuett +FROM ubuntu:20.04 +# Install requirements for the toolchain. +WORKDIR /opt/cp2k-toolchain +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu:20.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 \ + --install-all \ + --mpi-mode=mpich \ + --dry-run + +# Dry-run leaves behind config files for the followup install scripts. +# This breaks up the lengthy installation into smaller docker 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/arch_base.tmpl \ + ./tools/toolchain/scripts/generate_arch_files.sh \ + ./scripts/ +RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +# Install test for manual. WORKDIR /workspace -COPY ./scripts/install_basics.sh . +COPY ./tools/docker/scripts/install_basics.sh . RUN ./install_basics.sh -COPY ./scripts/install_manual.sh . +# Some buggy Python packages open utf8 files in text mode. +# As workaround we set locale.getpreferredencoding() to utf8. +ENV LANG="en_US.UTF-8" LANGUAGE="en_US:en" LC_ALL="en_US.UTF-8" + +COPY ./tools/docker/scripts/install_manual.sh . RUN ./install_manual.sh -COPY ./scripts/ci_entrypoint.sh ./scripts/test_manual.sh ./ +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_manual.sh ./ CMD ["./ci_entrypoint.sh", "./test_manual.sh"] #EOF diff --git a/tools/docker/Dockerfile.test_minimal b/tools/docker/Dockerfile.test_minimal index 53ec618048..b8800a7d29 100644 --- a/tools/docker/Dockerfile.test_minimal +++ b/tools/docker/Dockerfile.test_minimal @@ -1,17 +1,74 @@ -ARG TOOLCHAIN=cp2k/toolchain:latest -FROM ${TOOLCHAIN} +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_minimal ../../ +# -# author: Ole Schuett +FROM ubuntu:20.04 +# Install requirements for the toolchain. +WORKDIR /opt/cp2k-toolchain +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu:20.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 \ + --install-all \ + --mpi-mode=mpich \ + --dry-run + +# Dry-run leaves behind config files for the followup install scripts. +# This breaks up the lengthy installation into smaller docker 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/arch_base.tmpl \ + ./tools/toolchain/scripts/generate_arch_files.sh \ + ./scripts/ +RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +# Install regression test for minimal.sdbg. WORKDIR /workspace -COPY ./scripts/install_basics.sh . +COPY ./tools/docker/scripts/install_basics.sh . RUN ./install_basics.sh -COPY ./scripts/install_regtest.sh . +COPY ./tools/docker/scripts/install_regtest.sh . RUN ./install_regtest.sh minimal sdbg -COPY ./scripts/ci_entrypoint.sh ./scripts/test_regtest.sh ./ +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_regtest.sh ./ CMD ["./ci_entrypoint.sh", "./test_regtest.sh", "minimal", "sdbg"] #EOF diff --git a/tools/docker/Dockerfile.test_openmpi-psmp b/tools/docker/Dockerfile.test_openmpi-psmp new file mode 100644 index 0000000000..708a4cfcf8 --- /dev/null +++ b/tools/docker/Dockerfile.test_openmpi-psmp @@ -0,0 +1,74 @@ +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_openmpi-psmp ../../ +# + +FROM ubuntu:20.04 + +# Install requirements for the toolchain. +WORKDIR /opt/cp2k-toolchain +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu:20.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 \ + --install-all \ + --mpi-mode=openmpi \ + --dry-run + +# Dry-run leaves behind config files for the followup install scripts. +# This breaks up the lengthy installation into smaller docker 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/arch_base.tmpl \ + ./tools/toolchain/scripts/generate_arch_files.sh \ + ./scripts/ +RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +# Install regression test for local.psmp. +WORKDIR /workspace + +COPY ./tools/docker/scripts/install_basics.sh . +RUN ./install_basics.sh + +COPY ./tools/docker/scripts/install_regtest.sh . +RUN ./install_regtest.sh local psmp + +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_regtest.sh ./ +CMD ["./ci_entrypoint.sh", "./test_regtest.sh", "local", "psmp"] + +#EOF diff --git a/tools/docker/Dockerfile.test_pdbg b/tools/docker/Dockerfile.test_pdbg index 9e471a7f8f..25ff715f62 100644 --- a/tools/docker/Dockerfile.test_pdbg +++ b/tools/docker/Dockerfile.test_pdbg @@ -1,18 +1,74 @@ -ARG TOOLCHAIN=cp2k/toolchain:latest -FROM ${TOOLCHAIN} +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_pdbg ../../ +# -# author: Ole Schuett +FROM ubuntu:20.04 +# Install requirements for the toolchain. +WORKDIR /opt/cp2k-toolchain +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu:20.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 \ + --install-all \ + --mpi-mode=mpich \ + --dry-run + +# Dry-run leaves behind config files for the followup install scripts. +# This breaks up the lengthy installation into smaller docker 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/arch_base.tmpl \ + ./tools/toolchain/scripts/generate_arch_files.sh \ + ./scripts/ +RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +# Install regression test for local.pdbg. WORKDIR /workspace -COPY ./scripts/install_basics.sh . +COPY ./tools/docker/scripts/install_basics.sh . RUN ./install_basics.sh -COPY ./scripts/install_regtest.sh . +COPY ./tools/docker/scripts/install_regtest.sh . RUN ./install_regtest.sh local pdbg -ENV USE_STABLE_DBCSR=1 -COPY ./scripts/ci_entrypoint.sh ./scripts/test_regtest.sh ./ +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_regtest.sh ./ CMD ["./ci_entrypoint.sh", "./test_regtest.sh", "local", "pdbg"] #EOF diff --git a/tools/docker/Dockerfile.test_performance b/tools/docker/Dockerfile.test_performance index ea73ca23e5..c0acbc339f 100644 --- a/tools/docker/Dockerfile.test_performance +++ b/tools/docker/Dockerfile.test_performance @@ -1,19 +1,76 @@ -ARG TOOLCHAIN=cp2k/toolchain:latest -FROM ${TOOLCHAIN} +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_performance ../../ +# -# author: Ole Schuett +FROM ubuntu:20.04 +# Install requirements for the toolchain. +WORKDIR /opt/cp2k-toolchain +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu:20.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 \ + --install-all \ + --mpi-mode=mpich \ + --dry-run + +# Dry-run leaves behind config files for the followup install scripts. +# This breaks up the lengthy installation into smaller docker 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/arch_base.tmpl \ + ./tools/toolchain/scripts/generate_arch_files.sh \ + ./scripts/ +RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +# Install performance test for local. WORKDIR /workspace -COPY ./scripts/install_basics.sh . +COPY ./tools/docker/scripts/install_basics.sh . RUN ./install_basics.sh -COPY ./scripts/install_performance.sh . +COPY ./tools/docker/scripts/install_performance.sh . RUN ./install_performance.sh "local" -COPY ./scripts/ci_entrypoint.sh \ - ./scripts/test_performance.sh \ - ./scripts/plot_performance.py \ +COPY ./tools/docker/scripts/ci_entrypoint.sh \ + ./tools/docker/scripts/test_performance.sh \ + ./tools/docker/scripts/plot_performance.py \ ./ CMD ["./ci_entrypoint.sh", "./test_performance.sh", "local"] diff --git a/tools/docker/Dockerfile.test_performance_cuda_A100 b/tools/docker/Dockerfile.test_performance_cuda_A100 index bc901e0b33..b1ac999897 100644 --- a/tools/docker/Dockerfile.test_performance_cuda_A100 +++ b/tools/docker/Dockerfile.test_performance_cuda_A100 @@ -18,8 +18,8 @@ RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu # Install the toolchain. RUN mkdir scripts @@ -71,7 +71,7 @@ COPY ./tools/toolchain/scripts/arch_base.tmpl \ ./scripts/ RUN ./scripts/generate_arch_files.sh && rm -rf ./build -# Install performance test for local_cuda +# Install performance test for local_cuda. WORKDIR /workspace COPY ./tools/docker/scripts/install_basics.sh . diff --git a/tools/docker/Dockerfile.test_performance_cuda_P100 b/tools/docker/Dockerfile.test_performance_cuda_P100 index 0b32cdb272..48cd21b3af 100644 --- a/tools/docker/Dockerfile.test_performance_cuda_P100 +++ b/tools/docker/Dockerfile.test_performance_cuda_P100 @@ -18,8 +18,8 @@ RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu # Install the toolchain. RUN mkdir scripts @@ -71,7 +71,7 @@ COPY ./tools/toolchain/scripts/arch_base.tmpl \ ./scripts/ RUN ./scripts/generate_arch_files.sh && rm -rf ./build -# Install performance test for local_cuda +# Install performance test for local_cuda. WORKDIR /workspace COPY ./tools/docker/scripts/install_basics.sh . diff --git a/tools/docker/Dockerfile.test_performance_cuda_V100 b/tools/docker/Dockerfile.test_performance_cuda_V100 index 1e1b5dad66..1930d8354f 100644 --- a/tools/docker/Dockerfile.test_performance_cuda_V100 +++ b/tools/docker/Dockerfile.test_performance_cuda_V100 @@ -18,8 +18,8 @@ RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu # Install the toolchain. RUN mkdir scripts @@ -71,7 +71,7 @@ COPY ./tools/toolchain/scripts/arch_base.tmpl \ ./scripts/ RUN ./scripts/generate_arch_files.sh && rm -rf ./build -# Install performance test for local_cuda +# Install performance test for local_cuda. WORKDIR /workspace COPY ./tools/docker/scripts/install_basics.sh . diff --git a/tools/docker/Dockerfile.test_psmp b/tools/docker/Dockerfile.test_psmp index 17ad1d1f2e..7348bfd57d 100644 --- a/tools/docker/Dockerfile.test_psmp +++ b/tools/docker/Dockerfile.test_psmp @@ -1,17 +1,74 @@ -ARG TOOLCHAIN=cp2k/toolchain:latest -FROM ${TOOLCHAIN} +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_psmp ../../ +# -# author: Ole Schuett +FROM ubuntu:20.04 +# Install requirements for the toolchain. +WORKDIR /opt/cp2k-toolchain +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu:20.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 \ + --install-all \ + --mpi-mode=mpich \ + --dry-run + +# Dry-run leaves behind config files for the followup install scripts. +# This breaks up the lengthy installation into smaller docker 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/arch_base.tmpl \ + ./tools/toolchain/scripts/generate_arch_files.sh \ + ./scripts/ +RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +# Install regression test for local.psmp. WORKDIR /workspace -COPY ./scripts/install_basics.sh . +COPY ./tools/docker/scripts/install_basics.sh . RUN ./install_basics.sh -COPY ./scripts/install_regtest.sh . +COPY ./tools/docker/scripts/install_regtest.sh . RUN ./install_regtest.sh local psmp -COPY ./scripts/ci_entrypoint.sh ./scripts/test_regtest.sh ./ +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_regtest.sh ./ CMD ["./ci_entrypoint.sh", "./test_regtest.sh", "local", "psmp"] #EOF diff --git a/tools/docker/Dockerfile.test_python b/tools/docker/Dockerfile.test_python index c4cac32509..da76da2f73 100644 --- a/tools/docker/Dockerfile.test_python +++ b/tools/docker/Dockerfile.test_python @@ -1,16 +1,24 @@ +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_python ../../ +# + FROM ubuntu:20.04 -# author: Ole Schuett - +# Install test for python. WORKDIR /workspace -COPY ./scripts/install_basics.sh . +COPY ./tools/docker/scripts/install_basics.sh . RUN ./install_basics.sh -COPY ./scripts/install_python.sh . +# Some buggy Python packages open utf8 files in text mode. +# As workaround we set locale.getpreferredencoding() to utf8. +ENV LANG="en_US.UTF-8" LANGUAGE="en_US:en" LC_ALL="en_US.UTF-8" + +COPY ./tools/docker/scripts/install_python.sh . RUN ./install_python.sh -COPY ./scripts/ci_entrypoint.sh ./scripts/test_python.sh ./ +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_python.sh ./ CMD ["./ci_entrypoint.sh", "./test_python.sh"] #EOF diff --git a/tools/docker/Dockerfile.test_sdbg b/tools/docker/Dockerfile.test_sdbg index cfb1795758..ad434ce3b0 100644 --- a/tools/docker/Dockerfile.test_sdbg +++ b/tools/docker/Dockerfile.test_sdbg @@ -1,17 +1,74 @@ -ARG TOOLCHAIN=cp2k/toolchain:latest -FROM ${TOOLCHAIN} +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_sdbg ../../ +# -# author: Ole Schuett +FROM ubuntu:20.04 +# Install requirements for the toolchain. +WORKDIR /opt/cp2k-toolchain +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu:20.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 \ + --install-all \ + --mpi-mode=mpich \ + --dry-run + +# Dry-run leaves behind config files for the followup install scripts. +# This breaks up the lengthy installation into smaller docker 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/arch_base.tmpl \ + ./tools/toolchain/scripts/generate_arch_files.sh \ + ./scripts/ +RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +# Install regression test for local.sdbg. WORKDIR /workspace -COPY ./scripts/install_basics.sh . +COPY ./tools/docker/scripts/install_basics.sh . RUN ./install_basics.sh -COPY ./scripts/install_regtest.sh . +COPY ./tools/docker/scripts/install_regtest.sh . RUN ./install_regtest.sh local sdbg -COPY ./scripts/ci_entrypoint.sh ./scripts/test_regtest.sh ./ +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_regtest.sh ./ CMD ["./ci_entrypoint.sh", "./test_regtest.sh", "local", "sdbg"] #EOF diff --git a/tools/docker/Dockerfile.test_ssmp b/tools/docker/Dockerfile.test_ssmp index 989b42de82..1d1abfd65b 100644 --- a/tools/docker/Dockerfile.test_ssmp +++ b/tools/docker/Dockerfile.test_ssmp @@ -1,17 +1,74 @@ -ARG TOOLCHAIN=cp2k/toolchain:latest -FROM ${TOOLCHAIN} +# +# This file was created by generate_dockerfiles.py. +# Usage: docker build -f ./Dockerfile.test_ssmp ../../ +# -# author: Ole Schuett +FROM ubuntu:20.04 +# Install requirements for the toolchain. +WORKDIR /opt/cp2k-toolchain +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh ubuntu:20.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 \ + --install-all \ + --mpi-mode=mpich \ + --dry-run + +# Dry-run leaves behind config files for the followup install scripts. +# This breaks up the lengthy installation into smaller docker 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/arch_base.tmpl \ + ./tools/toolchain/scripts/generate_arch_files.sh \ + ./scripts/ +RUN ./scripts/generate_arch_files.sh && rm -rf ./build + +# Install regression test for local.ssmp. WORKDIR /workspace -COPY ./scripts/install_basics.sh . +COPY ./tools/docker/scripts/install_basics.sh . RUN ./install_basics.sh -COPY ./scripts/install_regtest.sh . +COPY ./tools/docker/scripts/install_regtest.sh . RUN ./install_regtest.sh local ssmp -COPY ./scripts/ci_entrypoint.sh ./scripts/test_regtest.sh ./ +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_regtest.sh ./ CMD ["./ci_entrypoint.sh", "./test_regtest.sh", "local", "ssmp"] #EOF diff --git a/tools/docker/generate_dockerfiles.py b/tools/docker/generate_dockerfiles.py index 911932787e..af3dc99428 100755 --- a/tools/docker/generate_dockerfiles.py +++ b/tools/docker/generate_dockerfiles.py @@ -3,7 +3,7 @@ # author: Ole Schuett from pathlib import Path -from typing import Any +from typing import Any, Optional import argparse import io @@ -13,6 +13,23 @@ def main() -> None: parser.add_argument("--check", action="store_true") args = parser.parse_args() + for version in "sdbg", "ssmp", "pdbg", "psmp": + with OutputFile(f"Dockerfile.test_{version}", args.check) as f: + f.write(toolchain_full() + regtest(version)) + + with OutputFile(f"Dockerfile.test_openmpi-psmp", args.check) as f: + f.write(toolchain_full(mpi_mode="openmpi") + regtest("psmp")) + + with OutputFile(f"Dockerfile.test_fedora-psmp", args.check) as f: + f.write(toolchain_full(base_image="fedora:33") + regtest("psmp")) + + with OutputFile(f"Dockerfile.test_minimal", args.check) as f: + f.write(toolchain_full() + regtest("sdbg", "minimal")) + + for version in "sdbg", "pdbg": + with OutputFile(f"Dockerfile.test_coverage-{version}", args.check) as f: + f.write(toolchain_full() + coverage(version)) + for gcc_version in 7, 8, 9, 10: with OutputFile(f"Dockerfile.test_gcc{gcc_version}", args.check) as f: f.write(toolchain_ubuntu_nompi(gcc_version=gcc_version) + regtest("ssmp")) @@ -20,6 +37,9 @@ def main() -> None: with OutputFile("Dockerfile.test_i386", args.check) as f: f.write(toolchain_ubuntu_nompi(base_image="i386/debian:11") + regtest("ssmp")) + with OutputFile(f"Dockerfile.test_performance", args.check) as f: + f.write(toolchain_full() + performance()) + for gpu_ver in "P100", "V100", "A100": with OutputFile(f"Dockerfile.test_cuda_{gpu_ver}", args.check) as f: f.write(toolchain_cuda(gpu_ver=gpu_ver) + regtest("psmp", "local_cuda")) @@ -30,10 +50,41 @@ def main() -> None: with OutputFile(f"Dockerfile.test_performance_cuda_{gpu_ver}", args.check) as f: f.write(toolchain_cuda(gpu_ver=gpu_ver) + performance("local_cuda")) - for gpu_ver in ["Mi50", "Mi100"]: + for gpu_ver in "Mi50", "Mi100": with OutputFile(f"Dockerfile.test_hip_rocm_{gpu_ver}", args.check) as f: f.write(toolchain_hip_rocm(gpu_ver=gpu_ver) + regtest("psmp", "local_hip")) + for name in "aiida", "ase", "conventions", "gromacs", "i-pi", "manual": + with OutputFile(f"Dockerfile.test_{name}", args.check) as f: + f.write(toolchain_full() + generic_test(name)) + + for name in "doxygen", "python": + with OutputFile(f"Dockerfile.test_{name}", args.check) as f: + f.write("\nFROM ubuntu:20.04\n" + generic_test(name)) + + +# ====================================================================================== +def generic_test(name: str) -> str: + return fr""" +# Install test for {name}. +WORKDIR /workspace + +COPY ./tools/docker/scripts/install_basics.sh . +RUN ./install_basics.sh + +# Some buggy Python packages open utf8 files in text mode. +# As workaround we set locale.getpreferredencoding() to utf8. +ENV LANG="en_US.UTF-8" LANGUAGE="en_US:en" LC_ALL="en_US.UTF-8" + +COPY ./tools/docker/scripts/install_{name}.sh . +RUN ./install_{name}.sh + +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_{name}.sh ./ +CMD ["./ci_entrypoint.sh", "./test_{name}.sh"] + +#EOF +""" + # ====================================================================================== def regtest(version: str, arch: str = "local") -> str: @@ -55,9 +106,9 @@ CMD ["./ci_entrypoint.sh", "./test_regtest.sh", "{arch}", "{version}"] # ====================================================================================== -def performance(arch: str) -> str: +def performance(arch: str = "local") -> str: return fr""" -# Install performance test for {arch} +# Install performance test for {arch}. WORKDIR /workspace COPY ./tools/docker/scripts/install_basics.sh . @@ -77,6 +128,35 @@ CMD ["./ci_entrypoint.sh", "./test_performance.sh", "{arch}"] """ +# ====================================================================================== +def coverage(version: str) -> str: + return fr""" +# Install coverage test for {version}. +WORKDIR /workspace + +COPY ./tools/docker/scripts/install_basics.sh . +RUN ./install_basics.sh + +COPY ./tools/docker/scripts/install_coverage.sh . +RUN ./install_coverage.sh + +COPY ./tools/docker/scripts/install_regtest.sh . +RUN ./install_regtest.sh local_coverage {version} + +COPY ./tools/docker/scripts/ci_entrypoint.sh ./tools/docker/scripts/test_coverage.sh ./ +CMD ["./ci_entrypoint.sh", "./test_coverage.sh", "{version}"] + +#EOF +""" + + +# ====================================================================================== +def toolchain_full(base_image: str = "ubuntu:20.04", mpi_mode: str = "mpich") -> str: + return f"\nFROM {base_image}\n\n" + install_toolchain( + base_image=base_image, install_all=None, mpi_mode=mpi_mode + ) + + # ====================================================================================== def toolchain_ubuntu_nompi( base_image: str = "ubuntu:20.04", gcc_version: int = 10 @@ -103,6 +183,7 @@ RUN ln -sf gcc-{gcc_version} /usr/bin/gcc && \ ln -sf gfortran-{gcc_version} /usr/bin/gfortran """ + install_toolchain( + base_image="ubuntu", mpi_mode="no", with_gcc="system", with_cmake="system", @@ -133,7 +214,7 @@ RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ && rm -rf /var/lib/apt/lists/* """ + install_toolchain( - mpi_mode="mpich", enable_cuda="yes", gpu_ver=gpu_ver + base_image="ubuntu", mpi_mode="mpich", enable_cuda="yes", gpu_ver=gpu_ver ) @@ -232,7 +313,7 @@ ENV HIP_PLATFORM nvidia RUN hipconfig """ + install_toolchain( - mpi_mode="mpich", enable_hip="yes", gpu_ver=gpu_ver + base_image="ubuntu", mpi_mode="mpich", enable_hip="yes", gpu_ver=gpu_ver ) @@ -257,19 +338,26 @@ ENV HIP_PLATFORM amd RUN hipconfig """ + install_toolchain( - mpi_mode="mpich", enable_hip="yes", gpu_ver=gpu_ver + base_image="ubuntu", mpi_mode="mpich", enable_hip="yes", gpu_ver=gpu_ver ) # ====================================================================================== -def install_toolchain(**kwargs: str) -> str: - kwargs_underscore = {k.replace("_", "-"): v for k, v in kwargs.items()} - install_args = "\n".join(f" --{k}={v} \\" for k, v in kwargs_underscore.items()) +def install_toolchain(base_image: str, **kwargs: Optional[str]) -> str: + install_args = [] + for k, v in kwargs.items(): + k = k.replace("_", "-") + if v is not None: + install_args.append(f" --{k}={v} \\") + else: + install_args.append(f" --{k} \\") + install_args_str = "\n".join(install_args) + return fr""" # Install requirements for the toolchain. WORKDIR /opt/cp2k-toolchain -COPY ./tools/toolchain/install_requirements_ubuntu.sh . -RUN ./install_requirements_ubuntu.sh +COPY ./tools/toolchain/install_requirements*.sh ./ +RUN ./install_requirements.sh {base_image} # Install the toolchain. RUN mkdir scripts @@ -282,7 +370,7 @@ COPY ./tools/toolchain/scripts/VERSION \ ./scripts/ COPY ./tools/toolchain/install_cp2k_toolchain.sh . RUN ./install_cp2k_toolchain.sh \ -{install_args} +{install_args_str} --dry-run # Dry-run leaves behind config files for the followup install scripts.