From 6ff9d0fb88a8e6729c93e1e10a940742b975358c Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sat, 18 Jul 2026 23:54:36 +0200 Subject: [PATCH 1/8] Port the system tests to Ubuntu 26.04 --- tools/tests/README.md | 2 +- tools/tests/components.yaml | 32 ++-- .../{ubuntu_2404 => ubuntu_2604}/Dockerfile | 161 +++++------------- tools/tests/reference_versions.yaml | 2 +- 4 files changed, 63 insertions(+), 134 deletions(-) rename tools/tests/dockerfiles/{ubuntu_2404 => ubuntu_2604}/Dockerfile (86%) diff --git a/tools/tests/README.md b/tools/tests/README.md index 3321ed7d5..a15b77fa7 100644 --- a/tools/tests/README.md +++ b/tools/tests/README.md @@ -364,7 +364,7 @@ openfoam-adapter: template: component-templates/openfoam-adapter.yaml build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop" diff --git a/tools/tests/components.yaml b/tools/tests/components.yaml index 658b1d826..8c8064238 100644 --- a/tools/tests/components.yaml +++ b/tools/tests/components.yaml @@ -2,7 +2,7 @@ bare: # A default component used when the solver does not have any dependencies template: component-templates/bare.yaml build_arguments: # these things mean something to the docker-service PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop" @@ -16,7 +16,7 @@ calculix-adapter: template: component-templates/calculix-adapter.yaml build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop" @@ -35,7 +35,7 @@ dealii-adapter: template: component-templates/dealii-adapter.yaml build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop" @@ -53,7 +53,7 @@ dumux-adapter: build_timeout: 900 build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop" @@ -75,7 +75,7 @@ dune-adapter: build_timeout: 900 build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop" @@ -97,7 +97,7 @@ solids4foam: build_arguments: PLATFORM: description: Dockerfile platform used - default: "ubuntu_2404" + default: "ubuntu_2604" # The name "PLATFORM" is misleading: For this component, we use a different base image. TUTORIALS_REF: description: Tutorial git reference to use @@ -110,7 +110,7 @@ fenics-adapter: template: component-templates/fenics-adapter.yaml build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop" @@ -130,7 +130,7 @@ fenicsx-adapter: template: component-templates/fenicsx-adapter.yaml build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop" @@ -150,7 +150,7 @@ fmi-runner: template: component-templates/fmi-runner.yaml build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop" @@ -170,7 +170,7 @@ mercurydpm-adapter: template: component-templates/mercurydpm-adapter.yaml build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop" @@ -184,7 +184,7 @@ micro-manager: template: component-templates/micro-manager.yaml build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop" @@ -201,7 +201,7 @@ nutils-adapter: template: component-templates/nutils-adapter.yaml build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop" @@ -218,7 +218,7 @@ openfoam-adapter: template: component-templates/openfoam-adapter.yaml build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop" @@ -237,7 +237,7 @@ python-bindings: template: component-templates/python-bindings.yaml build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop" @@ -255,7 +255,7 @@ su2-adapter: build_timeout: 600 build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop" @@ -275,7 +275,7 @@ aste: build_timeout: 600 build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" # The name "PLATFORM" is misleading: For this component, we use a different base image. PRECICE_REF: repository: https://github.com/precice/precice diff --git a/tools/tests/dockerfiles/ubuntu_2404/Dockerfile b/tools/tests/dockerfiles/ubuntu_2604/Dockerfile similarity index 86% rename from tools/tests/dockerfiles/ubuntu_2404/Dockerfile rename to tools/tests/dockerfiles/ubuntu_2604/Dockerfile index 64f31db33..7923b8d63 100644 --- a/tools/tests/dockerfiles/ubuntu_2404/Dockerfile +++ b/tools/tests/dockerfiles/ubuntu_2604/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:24.04 AS base_image +FROM ubuntu:26.04 AS base_image # We set a senseful value, but still have the possibility to influence this via the build time arguments. # When the dockerfile is built using the systemtests.py we set the PRECICE_UID and PRECICE_GID to the user executing the system tests. # This ensures no file ownership problems down the line and is the easiest fix, as we normally build the containers locally @@ -99,6 +99,40 @@ ENV CMAKE_PREFIX_PATH="/home/precice/.local" ### end of precice stage ### +FROM precice AS aste + +ARG ASTE_PR +ARG ASTE_REF + +USER root +RUN apt-get -qq update && \ + apt-get -qq -y install \ + libmetis-dev \ + libvtk9-dev + +USER precice +WORKDIR /home/precice + +RUN git clone https://github.com/precice/aste.git aste && \ + cd aste && \ + if [ -n "${ASTE_PR}" ]; then git fetch origin pull/${ASTE_PR}/head; fi && \ + git checkout ${ASTE_REF} + +RUN python3 -m venv /home/precice/venv && \ + . /home/precice/venv/bin/activate && \ + pip install -r /home/precice/aste/requirements.txt && \ + pip install vtk + +RUN cd /home/precice/aste && \ + mkdir build && cd build &&\ + cmake .. -DCMAKE_INSTALL_PREFIX=/home/precice/.local/ && \ + make all install -j $(nproc) && \ + cd ../.. && rm -rf aste + +WORKDIR /home/precice +### end of aste stage ### + + FROM precice AS python_bindings ARG PYTHON_BINDINGS_PR ARG PYTHON_BINDINGS_REF @@ -355,9 +389,8 @@ COPY --from=python_bindings /home/precice/.local /home/precice/.local ARG FENICS_ADAPTER_REF USER root -RUN add-apt-repository -y ppa:fenics-packages/fenics && \ - apt-get -qq update && \ - apt-get -qq install --no-install-recommends fenics +RUN apt-get -qq update && \ + apt-get -qq install fenics USER precice RUN python3 -m venv --system-site-packages /home/precice/venv && \ @@ -432,17 +465,14 @@ RUN apt-get -qq update && \ USER precice WORKDIR /home/precice # Download and build SU2 (We could also use pre-built binaries from the SU2 releases) -# The sed command applies a patch needed for Ubuntu 24.04. -RUN wget -nv https://github.com/su2code/SU2/archive/refs/tags/v${SU2_VERSION}.tar.gz && \ - tar xvzf v${SU2_VERSION}.tar.gz && \ - rm -fv v${SU2_VERSION}.tar.gz +RUN git clone --depth=1 --branch=v${SU2_VERSION} --recurse-submodules https://github.com/su2code/SU2.git RUN python3 -m venv /home/precice/venv && \ . /home/precice/venv/bin/activate # Some of these variables are used by the scripts that follow WORKDIR /home/precice ENV SU2_RUN="/home/precice/SU2_RUN" -ENV SU2_HOME="/home/precice/SU2-${SU2_VERSION}" +ENV SU2_HOME="/home/precice/SU2" ENV PATH="/home/precice/su2-adapter/run:$SU2_RUN:$PATH" ENV PYTHONPATH="$SU2_RUN:$PYTHONPATH" @@ -451,9 +481,14 @@ RUN git clone https://github.com/precice/su2-adapter.git && \ if [ -n "${SU2_ADAPTER_PR}" ]; then git fetch origin pull/${SU2_ADAPTER_PR}/head; fi && \ git checkout ${SU2_ADAPTER_REF} &&\ ./su2AdapterInstall + +# Build the modified SU2. +# The sed commands apply patches needed for newer systems. RUN cd "${SU2_HOME}" &&\ sed -i '1s/^/#include \n/' SU2_CFD/src/output/filewriter/CParaviewXMLFileWriter.cpp &&\ - ./meson.py build -Denable-pywrapper=true --prefix=$SU2_RUN &&\ + sed -i '1s/^/#include \n/' SU2_CFD/src/SU2_CFD.cpp &&\ + sed -i 's/pipes/shlex/g' externals/ninja/configure.py &&\ + ./meson.py build -Denable-pywrapper=true -Denable-cgns=false -Denable-tecio=false --prefix=$SU2_RUN &&\ ./ninja -C build install ### end of su2_adapter stage ### @@ -463,112 +498,6 @@ RUN cd "${SU2_HOME}" &&\ ##################################################################### -FROM ubuntu:26.04 AS aste - -ARG PRECICE_UID=1000 -ARG PRECICE_GID=1000 -ARG PRECICE_PR -ARG PRECICE_REF -ARG PRECICE_PRESET -ARG ASTE_PR -ARG ASTE_REF - -USER root -SHELL ["/bin/bash", "-c"] -ENV DEBIAN_FRONTEND=noninteractive - -# Set the same user as the rest of the system tests components, for consistency. -RUN set -eux; \ - if getent group "${PRECICE_GID}" >/dev/null; then \ - existing_group="$(getent group "${PRECICE_GID}" | cut -d: -f1)"; \ - if [ "${existing_group}" != "precice" ]; then \ - groupmod -n precice "${existing_group}"; \ - fi; \ - else \ - groupadd -g "${PRECICE_GID}" precice; \ - fi; \ - if getent passwd "${PRECICE_UID}" >/dev/null; then \ - existing_user="$(getent passwd "${PRECICE_UID}" | cut -d: -f1)"; \ - if [ "${existing_user}" != "precice" ]; then \ - usermod -l precice -d /home/precice -m "${existing_user}"; \ - fi; \ - usermod -g "${PRECICE_GID}" precice; \ - else \ - useradd -u "${PRECICE_UID}" -g "${PRECICE_GID}" -ms /bin/bash precice; \ - fi; \ - mkdir -p /home/precice; \ - chown -R "${PRECICE_UID}:${PRECICE_GID}" /home/precice - -# Dependencies for preCICE and common dependencies for the tutorials/tests -RUN apt-get -qq update && \ - apt-get -qq -y install \ - build-essential \ - software-properties-common \ - cmake \ - curl \ - g++ \ - gfortran \ - git \ - libbenchmark-dev \ - libboost-all-dev \ - libeigen3-dev \ - libopenmpi-dev \ - libxml2-dev \ - lsb-release \ - openmpi-bin \ - petsc-dev \ - python3-dev \ - python3-numpy \ - python3-pip \ - python3-venv \ - pkg-config \ - wget \ - inotify-tools - -# Additional dependencies for ASTE -RUN apt-get -qq update && \ - apt-get -qq -y install \ - libmetis-dev \ - libvtk9-dev - -USER precice -WORKDIR /home/precice - -# Build & install precice into /home/precice/precice -RUN git clone https://github.com/precice/precice.git precice && \ - cd precice && \ - if [ -n "${PRECICE_PR}" ]; then git fetch origin pull/${PRECICE_PR}/head; fi && \ - git checkout ${PRECICE_REF} && \ - mkdir build && cd build &&\ - cmake .. --preset=${PRECICE_PRESET} -DCMAKE_INSTALL_PREFIX=/home/precice/.local/ -DBUILD_TESTING=OFF && \ - make all install -j $(nproc) && \ - cd ../.. && rm -rf precice - -ENV PATH="${PATH}:/home/precice/.local/bin" -ENV LD_LIBRARY_PATH="/home/precice/.local/lib" -ENV CPATH="/home/precice/.local/include" -ENV PKG_CONFIG_PATH="/home/precice/.local/lib/pkgconfig" -ENV CMAKE_PREFIX_PATH="/home/precice/.local" - -RUN git clone https://github.com/precice/aste.git aste && \ - cd aste && \ - if [ -n "${ASTE_PR}" ]; then git fetch origin pull/${ASTE_PR}/head; fi && \ - git checkout ${ASTE_REF} - -RUN python3 -m venv /home/precice/venv && \ - . /home/precice/venv/bin/activate && \ - pip install -r /home/precice/aste/requirements.txt && \ - pip install vtk - -RUN cd /home/precice/aste && \ - mkdir build && cd build &&\ - cmake .. -DCMAKE_INSTALL_PREFIX=/home/precice/.local/ && \ - make all install -j $(nproc) && \ - cd ../.. && rm -rf aste - -WORKDIR /home/precice - - FROM solids4foam/solids4foam:v2.3-openfoam-v2412-latest as solids4foam ARG PRECICE_UID=1000 diff --git a/tools/tests/reference_versions.yaml b/tools/tests/reference_versions.yaml index d9994c125..b6e76355c 100644 --- a/tools/tests/reference_versions.yaml +++ b/tools/tests/reference_versions.yaml @@ -2,7 +2,7 @@ # and default values for unspecified values in systemtests.py. # Dockerfile used (See dockerfiles/) -PLATFORM: "ubuntu_2404" +PLATFORM: "ubuntu_2604" # Third-party dependencies CALCULIX_VERSION: "2.20" From b5ddd853a7aa20db5e24bdcec710bbe0686dd517 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 19 Jul 2026 08:26:00 +0200 Subject: [PATCH 2/8] Patch CMake version requirement in dumux-phasefield --- tools/tests/dockerfiles/ubuntu_2604/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/tests/dockerfiles/ubuntu_2604/Dockerfile b/tools/tests/dockerfiles/ubuntu_2604/Dockerfile index 7923b8d63..62517ee7d 100644 --- a/tools/tests/dockerfiles/ubuntu_2604/Dockerfile +++ b/tools/tests/dockerfiles/ubuntu_2604/Dockerfile @@ -285,6 +285,8 @@ RUN for i in $(seq 1 3); do \ if [[ $i -eq 3 ]]; then exit 1; fi; \ sleep 10; \ done +# Patch dumux-phasefield for Ubuntu 26.04 +RUN sed -i s/VERSION\ 3.1/VERSION\ 3.13/g dumux-phasefield/CMakeLists.txt RUN ./dune-common/bin/dunecontrol --opts=./dumux/cmake.opts cmake &&\ ./dune-common/bin/dunecontrol make -j $(nproc) From d365505513f15942b6003eb3adcd16a85d65e3cc Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 19 Jul 2026 11:47:35 +0200 Subject: [PATCH 3/8] Get FEniCSx from the default Ubuntu repositories --- tools/tests/dockerfiles/ubuntu_2604/Dockerfile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tools/tests/dockerfiles/ubuntu_2604/Dockerfile b/tools/tests/dockerfiles/ubuntu_2604/Dockerfile index 62517ee7d..cffa1c445 100644 --- a/tools/tests/dockerfiles/ubuntu_2604/Dockerfile +++ b/tools/tests/dockerfiles/ubuntu_2604/Dockerfile @@ -406,9 +406,8 @@ COPY --from=python_bindings /home/precice/.local /home/precice/.local ARG FENICSX_ADAPTER_REF USER root -RUN add-apt-repository -y ppa:fenics-packages/fenics && \ - apt-get -qq update && \ - apt-get -qq install --no-install-recommends fenicsx +RUN apt-get -qq update && \ + apt-get -qq install fenicsx USER precice RUN python3 -m venv --system-site-packages /home/precice/venv && \ @@ -500,7 +499,7 @@ RUN cd "${SU2_HOME}" &&\ ##################################################################### -FROM solids4foam/solids4foam:v2.3-openfoam-v2412-latest as solids4foam +FROM solids4foam/solids4foam:v2.3-openfoam-v2412-latest AS solids4foam ARG PRECICE_UID=1000 ARG PRECICE_GID=1000 From a613de58315a89b211cc9289c2eadc58d56bccb3 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 19 Jul 2026 11:47:58 +0200 Subject: [PATCH 4/8] Increase timeouts --- tools/tests/components.yaml | 6 +++++- tools/tests/tests.yaml | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/tests/components.yaml b/tools/tests/components.yaml index 8c8064238..08d6f13d3 100644 --- a/tools/tests/components.yaml +++ b/tools/tests/components.yaml @@ -108,6 +108,7 @@ solids4foam: fenics-adapter: template: component-templates/fenics-adapter.yaml + build_timeout: 600 build_arguments: PLATFORM: default: "ubuntu_2604" @@ -148,6 +149,7 @@ fenicsx-adapter: fmi-runner: template: component-templates/fmi-runner.yaml + build_timeout: 600 build_arguments: PLATFORM: default: "ubuntu_2604" @@ -199,6 +201,7 @@ micro-manager: nutils-adapter: template: component-templates/nutils-adapter.yaml + build_timeout: 600 build_arguments: PLATFORM: default: "ubuntu_2604" @@ -235,6 +238,7 @@ openfoam-adapter: python-bindings: template: component-templates/python-bindings.yaml + build_timeout: 600 build_arguments: PLATFORM: default: "ubuntu_2604" @@ -252,7 +256,7 @@ python-bindings: su2-adapter: template: component-templates/su2-adapter.yaml - build_timeout: 600 + build_timeout: 900 build_arguments: PLATFORM: default: "ubuntu_2604" diff --git a/tools/tests/tests.yaml b/tools/tests/tests.yaml index 35122dd7e..807d40126 100644 --- a/tools/tests/tests.yaml +++ b/tools/tests/tests.yaml @@ -46,6 +46,7 @@ test_suites: - fluid-openfoam - transport-nutils max_time: 0.1 + timeout: 300 reference_result: ./channel-transport/reference-results/fluid-openfoam_transport-nutils.tar.gz - &channel-transport_fluid-openfoam_transport-openfoam path: channel-transport From 21396fb8930ffe3040ad6ab6d3c8fbc8084d339d Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sat, 15 Aug 2026 15:28:39 +0200 Subject: [PATCH 5/8] Move ubuntu_2604/Dockerfile --- {tools/tests => tests}/dockerfiles/ubuntu_2604/Dockerfile | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {tools/tests => tests}/dockerfiles/ubuntu_2604/Dockerfile (100%) diff --git a/tools/tests/dockerfiles/ubuntu_2604/Dockerfile b/tests/dockerfiles/ubuntu_2604/Dockerfile similarity index 100% rename from tools/tests/dockerfiles/ubuntu_2604/Dockerfile rename to tests/dockerfiles/ubuntu_2604/Dockerfile From 8b71bf74f2970b8a7b0706ad182dc1fc095bd121 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sat, 15 Aug 2026 15:36:17 +0200 Subject: [PATCH 6/8] Resolve conflicts in Dockerfile --- tests/dockerfiles/ubuntu_2604/Dockerfile | 133 ++--------------------- 1 file changed, 12 insertions(+), 121 deletions(-) diff --git a/tests/dockerfiles/ubuntu_2604/Dockerfile b/tests/dockerfiles/ubuntu_2604/Dockerfile index 1e052c5f4..10ac57486 100644 --- a/tests/dockerfiles/ubuntu_2604/Dockerfile +++ b/tests/dockerfiles/ubuntu_2604/Dockerfile @@ -99,7 +99,6 @@ ENV CMAKE_PREFIX_PATH="/home/precice/.local" ### end of precice stage ### -<<<<<<<< HEAD:tools/tests/dockerfiles/ubuntu_2604/Dockerfile FROM precice AS aste ARG ASTE_PR @@ -110,19 +109,10 @@ RUN apt-get -qq update && \ apt-get -qq -y install \ libmetis-dev \ libvtk9-dev -======== -FROM precice AS julia_bindings -ARG JULIA_BINDINGS_REF - -USER root -RUN apt-get -qq update && \ - apt-get -qq install pipx ->>>>>>>> develop:tests/dockerfiles/ubuntu_2404/Dockerfile USER precice WORKDIR /home/precice -<<<<<<<< HEAD:tools/tests/dockerfiles/ubuntu_2604/Dockerfile RUN git clone https://github.com/precice/aste.git aste && \ cd aste && \ if [ -n "${ASTE_PR}" ]; then git fetch origin pull/${ASTE_PR}/head; fi && \ @@ -141,11 +131,21 @@ RUN cd /home/precice/aste && \ WORKDIR /home/precice ### end of aste stage ### -======== + + +FROM precice AS julia_bindings +ARG JULIA_BINDINGS_REF + +USER root +RUN apt-get -qq update && \ + apt-get -qq install pipx + +USER precice +WORKDIR /home/precice + RUN pipx install jill && \ jill install --confirm ### end of julia_bindings stage ### ->>>>>>>> develop:tests/dockerfiles/ubuntu_2404/Dockerfile FROM precice AS python_bindings @@ -534,115 +534,6 @@ RUN cd "${SU2_HOME}" &&\ ##################################################################### -<<<<<<<< HEAD:tools/tests/dockerfiles/ubuntu_2604/Dockerfile -======== -FROM ubuntu:26.04 AS aste - -ARG PRECICE_UID=1000 -ARG PRECICE_GID=1000 -ARG PRECICE_PR -ARG PRECICE_REF -ARG PRECICE_PRESET -ARG ASTE_PR -ARG ASTE_REF - -USER root -SHELL ["/bin/bash", "-c"] -ENV DEBIAN_FRONTEND=noninteractive - -# Set the same user as the rest of the system tests components, for consistency. -RUN set -eux; \ - if getent group "${PRECICE_GID}" >/dev/null; then \ - existing_group="$(getent group "${PRECICE_GID}" | cut -d: -f1)"; \ - if [ "${existing_group}" != "precice" ]; then \ - groupmod -n precice "${existing_group}"; \ - fi; \ - else \ - groupadd -g "${PRECICE_GID}" precice; \ - fi; \ - if getent passwd "${PRECICE_UID}" >/dev/null; then \ - existing_user="$(getent passwd "${PRECICE_UID}" | cut -d: -f1)"; \ - if [ "${existing_user}" != "precice" ]; then \ - usermod -l precice -d /home/precice -m "${existing_user}"; \ - fi; \ - usermod -g "${PRECICE_GID}" precice; \ - else \ - useradd -u "${PRECICE_UID}" -g "${PRECICE_GID}" -ms /bin/bash precice; \ - fi; \ - mkdir -p /home/precice; \ - chown -R "${PRECICE_UID}:${PRECICE_GID}" /home/precice - -# Dependencies for preCICE and common dependencies for the tutorials/tests -RUN apt-get -qq update && \ - apt-get -qq -y install \ - build-essential \ - software-properties-common \ - cmake \ - curl \ - g++ \ - gfortran \ - git \ - libbenchmark-dev \ - libboost-all-dev \ - libeigen3-dev \ - libopenmpi-dev \ - libxml2-dev \ - lsb-release \ - openmpi-bin \ - petsc-dev \ - python3-dev \ - python3-numpy \ - python3-pip \ - python3-venv \ - pkg-config \ - wget \ - inotify-tools - -# Additional dependencies for ASTE -RUN apt-get -qq update && \ - apt-get -qq -y install \ - libmetis-dev \ - libvtk9-dev - -USER precice -WORKDIR /home/precice - -# Build & install precice into /home/precice/precice -RUN git clone https://github.com/precice/precice.git precice && \ - cd precice && \ - if [ -n "${PRECICE_PR}" ]; then git fetch origin pull/${PRECICE_PR}/head; fi && \ - git checkout ${PRECICE_REF} && \ - mkdir build && cd build &&\ - cmake .. --preset=${PRECICE_PRESET} -DCMAKE_INSTALL_PREFIX=/home/precice/.local/ -DBUILD_TESTING=OFF && \ - make all install -j $(nproc) && \ - cd ../.. && rm -rf precice - -ENV PATH="${PATH}:/home/precice/.local/bin" -ENV LD_LIBRARY_PATH="/home/precice/.local/lib" -ENV CPATH="/home/precice/.local/include" -ENV PKG_CONFIG_PATH="/home/precice/.local/lib/pkgconfig" -ENV CMAKE_PREFIX_PATH="/home/precice/.local" - -RUN git clone https://github.com/precice/aste.git aste && \ - cd aste && \ - if [ -n "${ASTE_PR}" ]; then git fetch origin pull/${ASTE_PR}/head; fi && \ - git checkout ${ASTE_REF} - -RUN python3 -m venv /home/precice/venv && \ - . /home/precice/venv/bin/activate && \ - pip install -r /home/precice/aste/requirements.txt && \ - pip install vtk - -RUN cd /home/precice/aste && \ - mkdir build && cd build &&\ - cmake .. -DCMAKE_INSTALL_PREFIX=/home/precice/.local/ && \ - make all install -j $(nproc) && \ - cd ../.. && rm -rf aste - -WORKDIR /home/precice - - ->>>>>>>> develop:tests/dockerfiles/ubuntu_2404/Dockerfile FROM solids4foam/solids4foam:v2.3-openfoam-v2412-latest AS solids4foam ARG PRECICE_UID=1000 From 8d4bbccecec23dac4988daa4020a015a8c28cb88 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sat, 15 Aug 2026 15:37:21 +0200 Subject: [PATCH 7/8] Remove ubuntu_2404/Dockerfile --- tests/dockerfiles/ubuntu_2404/Dockerfile | 705 ----------------------- 1 file changed, 705 deletions(-) delete mode 100644 tests/dockerfiles/ubuntu_2404/Dockerfile diff --git a/tests/dockerfiles/ubuntu_2404/Dockerfile b/tests/dockerfiles/ubuntu_2404/Dockerfile deleted file mode 100644 index 1e052c5f4..000000000 --- a/tests/dockerfiles/ubuntu_2404/Dockerfile +++ /dev/null @@ -1,705 +0,0 @@ -FROM ubuntu:26.04 AS base_image -# We set a senseful value, but still have the possibility to influence this via the build time arguments. -# When the dockerfile is built using the systemtests.py we set the PRECICE_UID and PRECICE_GID to the user executing the system tests. -# This ensures no file ownership problems down the line and is the easiest fix, as we normally build the containers locally -# If not built via the systemtests.py, it is possible to specify it manually, but 1000 would be the default anyway. -ARG PRECICE_UID=1000 -ARG PRECICE_GID=1000 - -USER root -SHELL ["/bin/bash", "-c"] -ENV DEBIAN_FRONTEND=noninteractive - -RUN set -eux; \ - if getent group "${PRECICE_GID}" >/dev/null; then \ - existing_group="$(getent group "${PRECICE_GID}" | cut -d: -f1)"; \ - if [ "${existing_group}" != "precice" ]; then \ - groupmod -n precice "${existing_group}"; \ - fi; \ - else \ - groupadd -g "${PRECICE_GID}" precice; \ - fi; \ - if getent passwd "${PRECICE_UID}" >/dev/null; then \ - existing_user="$(getent passwd "${PRECICE_UID}" | cut -d: -f1)"; \ - if [ "${existing_user}" != "precice" ]; then \ - usermod -l precice -d /home/precice -m "${existing_user}"; \ - fi; \ - usermod -g "${PRECICE_GID}" precice; \ - else \ - useradd -u "${PRECICE_UID}" -g "${PRECICE_GID}" -ms /bin/bash precice; \ - fi; \ - mkdir -p /home/precice; \ - chown -R "${PRECICE_UID}:${PRECICE_GID}" /home/precice -USER precice -### end of base_image stage ### - - -FROM base_image AS precice_dependencies -USER root -# Dependencies for preCICE and common dependencies for the tutorials/tests -RUN apt-get -qq update && \ - apt-get -qq -y install \ - build-essential \ - software-properties-common \ - cmake \ - curl \ - g++ \ - gfortran \ - git \ - libbenchmark-dev \ - libboost-all-dev \ - libeigen3-dev \ - libopenmpi-dev \ - libxml2-dev \ - lsb-release \ - openmpi-bin \ - petsc-dev \ - python3-dev \ - python3-numpy \ - python3-pip \ - python3-venv \ - pkg-config \ - wget \ - inotify-tools -# The following are dependencies of gmsh, needed by some tutorials -RUN apt-get -qq update && \ - apt-get -qq install \ - libglu1-mesa \ - libxrender1 \ - libxcursor1 \ - libxft2 \ - libxinerama1 -USER precice -### end of precice_dependencies stage ### - - -FROM precice_dependencies AS precice -# Build & install precice into /home/precice/precice -ARG PRECICE_PR -ARG PRECICE_REF -ARG PRECICE_PRESET - -USER precice -WORKDIR /home/precice - -RUN git clone https://github.com/precice/precice.git precice && \ - cd precice && \ - if [ -n "${PRECICE_PR}" ]; then git fetch origin pull/${PRECICE_PR}/head; fi && \ - git checkout ${PRECICE_REF} && \ - mkdir build && cd build &&\ - cmake .. --preset=${PRECICE_PRESET} -DCMAKE_INSTALL_PREFIX=/home/precice/.local/ -DBUILD_TESTING=OFF && \ - make all install -j $(nproc) && \ - cd ../.. && rm -rf precice - -ENV PATH="${PATH}:/home/precice/.local/bin" -ENV LD_LIBRARY_PATH="/home/precice/.local/lib" -ENV CPATH="/home/precice/.local/include" -ENV PKG_CONFIG_PATH="/home/precice/.local/lib/pkgconfig" -ENV CMAKE_PREFIX_PATH="/home/precice/.local" -### end of precice stage ### - - -<<<<<<<< HEAD:tools/tests/dockerfiles/ubuntu_2604/Dockerfile -FROM precice AS aste - -ARG ASTE_PR -ARG ASTE_REF - -USER root -RUN apt-get -qq update && \ - apt-get -qq -y install \ - libmetis-dev \ - libvtk9-dev -======== -FROM precice AS julia_bindings -ARG JULIA_BINDINGS_REF - -USER root -RUN apt-get -qq update && \ - apt-get -qq install pipx ->>>>>>>> develop:tests/dockerfiles/ubuntu_2404/Dockerfile - -USER precice -WORKDIR /home/precice - -<<<<<<<< HEAD:tools/tests/dockerfiles/ubuntu_2604/Dockerfile -RUN git clone https://github.com/precice/aste.git aste && \ - cd aste && \ - if [ -n "${ASTE_PR}" ]; then git fetch origin pull/${ASTE_PR}/head; fi && \ - git checkout ${ASTE_REF} - -RUN python3 -m venv /home/precice/venv && \ - . /home/precice/venv/bin/activate && \ - pip install -r /home/precice/aste/requirements.txt && \ - pip install vtk - -RUN cd /home/precice/aste && \ - mkdir build && cd build &&\ - cmake .. -DCMAKE_INSTALL_PREFIX=/home/precice/.local/ && \ - make all install -j $(nproc) && \ - cd ../.. && rm -rf aste - -WORKDIR /home/precice -### end of aste stage ### -======== -RUN pipx install jill && \ - jill install --confirm -### end of julia_bindings stage ### ->>>>>>>> develop:tests/dockerfiles/ubuntu_2404/Dockerfile - - -FROM precice AS python_bindings -ARG PYTHON_BINDINGS_PR -ARG PYTHON_BINDINGS_REF - -USER precice -WORKDIR /home/precice - -# Builds the precice python bindings for python3 -# Installs also matplotlib as it is needed for the elastic-tube 1d fluid-python participant. -RUN git clone https://github.com/precice/python-bindings.git python-bindings && \ - cd python-bindings && \ - if [ -n "${PYTHON_BINDINGS_PR}" ]; then git fetch origin pull/${PYTHON_BINDINGS_PR}/head; fi && \ - git checkout ${PYTHON_BINDINGS_REF} && \ - python3 -m venv /home/precice/venv && \ - . /home/precice/venv/bin/activate && \ - pip3 install . && \ - pip3 install matplotlib -### end of python_bindings stage ### - - -FROM precice AS rust_bindings -ARG RUST_BINDINGS_PR -ARG RUST_BINDINGS_REF - -USER root -RUN apt-get -qq update && \ - apt-get -qq install rustup - -USER precice -WORKDIR /home/precice - -RUN rustup default stable && \ - git clone https://github.com/precice/rust-bindings.git rust-bindings && \ - cd rust-bindings && \ - if [ -n "${RUST_BINDINGS_PR}" ]; then git fetch origin pull/${RUST_BINDINGS_PR}/head; fi && \ - git checkout ${RUST_BINDINGS_REF} && \ - cargo build -### end of rust_bindings stage ### - - -FROM precice AS micro_manager -ARG MICRO_MANAGER_REF - -USER precice -WORKDIR /home/precice -RUN python3 -m venv /home/precice/venv && \ - . /home/precice/venv/bin/activate && \ - git clone https://github.com/precice/micro-manager.git && \ - cd micro-manager && \ - if [ -n "${MICRO_MANAGER_PR}" ]; then git fetch origin pull/${MICRO_MANAGER_PR}/head; fi && \ - git checkout ${MICRO_MANAGER_REF} && \ - pip3 install . && \ - cd .. && \ - pip3 install pybind11 -### end of micro_manager stage ### - - -##################################################################### -# Non-dependent adapter build stages - Order alphabetically # -##################################################################### - -FROM precice AS calculix_adapter -ARG CALCULIX_VERSION -ARG CALCULIX_ADAPTER_PR -ARG CALCULIX_ADAPTER_REF - -USER root -RUN apt-get -qq update && \ - apt-get -qq install libarpack2-dev libspooles-dev libyaml-cpp-dev -USER precice - -WORKDIR /home/precice -RUN wget -nv http://www.dhondt.de/ccx_${CALCULIX_VERSION}.src.tar.bz2 && \ - tar xvjf ccx_${CALCULIX_VERSION}.src.tar.bz2 && \ - rm -fv ccx_${CALCULIX_VERSION}.src.tar.bz2 - -WORKDIR /home/precice -RUN git clone https://github.com/precice/calculix-adapter.git && \ - cd calculix-adapter && \ - if [ -n "${CALCULIX_ADAPTER_PR}" ]; then git fetch origin pull/${CALCULIX_ADAPTER_PR}/head; fi && \ - git checkout ${CALCULIX_ADAPTER_REF} &&\ - make CXX_VERSION=${CALCULIX_VERSION} ADDITIONAL_FFLAGS="-fallow-argument-mismatch" -j $(nproc) && \ - ln -s /home/precice/calculix-adapter/bin/ccx_preCICE /home/precice/.local/bin/ccx_preCICE -### end of calculix_adapter stage ### - - -FROM precice AS dealii_adapter -ARG DEALII_ADAPTER_PR -ARG DEALII_ADAPTER_REF - -USER root -RUN apt-get update &&\ - apt-get -qq install libdeal.ii-dev libdeal.ii-doc cmake make g++ - -USER precice -WORKDIR /home/precice -RUN git clone https://github.com/precice/dealii-adapter.git &&\ - cd dealii-adapter && \ - if [ -n "${DEALII_ADAPTER_PR}" ]; then git fetch origin pull/${DEALII_ADAPTER_PR}/head; fi && \ - git checkout ${DEALII_ADAPTER_REF} && \ - cmake . && \ - make -j $(nproc) - -ENV PATH="/home/precice/dealii-adapter/:$PATH" -### end of dealii_adapter stage ### - - -FROM micro_manager AS dumux_adapter -# The micro-manager is needed for some dumux-adapter cases -ARG DUNE_VERSION_DUMUX -ARG DUMUX_VERSION -ARG DUMUX_ADAPTER_PR -ARG DUMUX_ADAPTER_REF - -USER precice -WORKDIR /home/precice/dumux - -# This cascade of git clones often led to HTTP 502. Adding some delay and retries in between as a workaround. -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://gitlab.dune-project.org/core/dune-common.git -b releases/${DUNE_VERSION_DUMUX}; then break; fi; \ - rm -rf dune-common; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://gitlab.dune-project.org/core/dune-geometry.git -b releases/${DUNE_VERSION_DUMUX}; then break; fi; \ - rm -rf dune-geometry; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://gitlab.dune-project.org/core/dune-grid.git -b releases/${DUNE_VERSION_DUMUX}; then break; fi; \ - rm -rf dune-grid; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://gitlab.dune-project.org/core/dune-istl.git -b releases/${DUNE_VERSION_DUMUX}; then break; fi; \ - rm -rf dune-istl; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://gitlab.dune-project.org/extensions/dune-subgrid.git -b releases/${DUNE_VERSION_DUMUX}; then break; fi; \ - rm -rf dune-subgrid; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://git.iws.uni-stuttgart.de/dumux-repositories/dumux.git -b releases/${DUMUX_VERSION}; then break; fi; \ - rm -rf dumux; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://git.iws.uni-stuttgart.de/dumux-appl/dumux-phasefield.git -b cell_problems; then break; fi; \ - rm -rf dumux-phasefield; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://gitlab.dune-project.org/extensions/dune-SPGrid.git -b releases/${DUNE_VERSION_DUMUX}; then break; fi; \ - rm -rf dune-SPGrid; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://gitlab.dune-project.org/core/dune-localfunctions.git -b releases/${DUNE_VERSION_DUMUX}; then break; fi; \ - rm -rf dune-localfunctions; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -# Patch dumux-phasefield for Ubuntu 26.04 -RUN sed -i s/VERSION\ 3.1/VERSION\ 3.13/g dumux-phasefield/CMakeLists.txt -RUN ./dune-common/bin/dunecontrol --opts=./dumux/cmake.opts cmake &&\ - ./dune-common/bin/dunecontrol make -j $(nproc) - -RUN git clone https://github.com/precice/dumux-adapter.git &&\ - cd dumux-adapter && \ - if [ -n "${DUMUX_ADAPTER_PR}" ]; then git fetch origin pull/${DUMUX_ADAPTER_PR}/head; fi && \ - git checkout ${DUMUX_ADAPTER_REF} && \ - cd .. &&\ - ./dune-common/bin/dunecontrol --opts=./dumux/cmake.opts cmake &&\ - ./dune-common/bin/dunecontrol make -j $(nproc) - -ENV PATH="/home/precice/dumux/dune-common/bin:${PATH}" -### end of dumux_adapter stage ### - - -FROM precice AS dune_adapter -ARG DUNE_VERSION_DUNE -ARG DUNE_ADAPTER_PR -ARG DUNE_ADAPTER_REF - -USER precice -WORKDIR /home/precice/dune -ENV PATH="/home/precice/dune/dune-common/bin:${PATH}" - -# This cascade of git clones often led to HTTP 502. Adding some delay and retries in between as a workaround. -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://gitlab.dune-project.org/core/dune-common.git -b releases/${DUNE_VERSION_DUNE}; then break; fi; \ - rm -rf dune-common; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://gitlab.dune-project.org/core/dune-geometry.git -b releases/${DUNE_VERSION_DUNE}; then break; fi; \ - rm -rf dune-geometry; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://gitlab.dune-project.org/core/dune-grid.git -b releases/${DUNE_VERSION_DUNE}; then break; fi; \ - rm -rf dune-grid; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://gitlab.dune-project.org/core/dune-istl.git -b releases/${DUNE_VERSION_DUNE}; then break; fi; \ - rm -rf dune-istl; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://gitlab.dune-project.org/core/dune-localfunctions.git -b releases/${DUNE_VERSION_DUNE}; then break; fi; \ - rm -rf dune-localfunctions; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://gitlab.dune-project.org/extensions/dune-foamgrid.git -b releases/${DUNE_VERSION_DUNE}; then break; fi; \ - rm -rf dune-foamgrid; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://gitlab.dune-project.org/staging/dune-functions.git -b releases/${DUNE_VERSION_DUNE}; then break; fi; \ - rm -rf dune-functions; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://gitlab.dune-project.org/staging/dune-typetree.git -b releases/${DUNE_VERSION_DUNE}; then break; fi; \ - rm -rf dune-typetree; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://gitlab.dune-project.org/staging/dune-uggrid.git -b releases/${DUNE_VERSION_DUNE}; then break; fi; \ - rm -rf dune-uggrid; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done - -# Modules specific to the dune adapter: -RUN for i in $(seq 1 3); do \ - if git clone --depth 1 https://github.com/maxfirmbach/dune-elastodynamics.git -b master; then break; fi; \ - rm -rf dune-elastodynamics; \ - if [[ $i -eq 3 ]]; then exit 1; fi; \ - sleep 10; \ - done -RUN git clone https://github.com/precice/dune-adapter.git&&\ - cd dune-adapter && \ - if [ -n "${DUNE_ADAPTER_PR}" ]; then git fetch origin pull/${DUNE_ADAPTER_PR}/head; fi && \ - git checkout ${DUNE_ADAPTER_REF} && \ - cd .. &&\ - ./dune-common/bin/dunecontrol all - -# Make dune-adapter/dune-precice-howto/build-cmake/examples/dune-perpendicular-flap discoverable -ENV PATH="/home/precice/dune/dune-adapter/dune-precice-howto/build-cmake/examples/:${PATH}" -### end of dune_adapter stage ### - - -FROM precice AS fenics_adapter -COPY --from=python_bindings /home/precice/.local /home/precice/.local -ARG FENICS_ADAPTER_REF - -USER root -RUN apt-get -qq update && \ - apt-get -qq install fenics - -USER precice -RUN python3 -m venv --system-site-packages /home/precice/venv && \ - . /home/precice/venv/bin/activate && \ - pip3 install git+https://github.com/precice/fenics-adapter.git@${FENICS_ADAPTER_REF} -### end of fenics_adapter stage ### - - -FROM precice AS fenicsx_adapter -COPY --from=python_bindings /home/precice/.local /home/precice/.local -ARG FENICSX_ADAPTER_REF - -USER root -RUN apt-get -qq update && \ - apt-get -qq install fenicsx - -USER precice -RUN python3 -m venv --system-site-packages /home/precice/venv && \ - . /home/precice/venv/bin/activate && \ - pip3 install git+https://github.com/precice/fenicsx-adapter.git@${FENICSX_ADAPTER_REF} -### end of fenicsx_adapter stage ### - - -FROM precice AS mercurydpm_adapter - -USER precice -WORKDIR /home/precice -# The channel-transport-particles tutorial is hosted in a frozen fork of the MercuryDPM repository. -# That's why there are no arguments for version, ref, or pr. -RUN git clone https://bitbucket.org/davidscn/mercurydpm.git &&\ - cd mercurydpm && \ - git checkout channel-transport-tutorial && \ - mkdir -p build && cd build && \ - cmake -D MercuryDPM_PreCICE_COUPLING="ON" .. && \ - make -j $(nproc) ChannelTransport - -ENV PATH="/home/precice/mercurydpm/build/Drivers/PreCICE:$PATH" -### end of mercurydpm_adapter stage ### - - -FROM precice AS openfoam_adapter -ARG OPENFOAM_EXECUTABLE -ARG OPENFOAM_ADAPTER_PR -ARG OPENFOAM_ADAPTER_REF - -USER root -RUN apt-get update &&\ - wget -q -O - https://dl.openfoam.com/add-debian-repo.sh | bash &&\ - apt-get -qq install ${OPENFOAM_EXECUTABLE}-dev &&\ - ln -s $(which ${OPENFOAM_EXECUTABLE} ) /usr/bin/openfoam - -USER precice -WORKDIR /home/precice -RUN git clone https://github.com/precice/openfoam-adapter.git &&\ - cd openfoam-adapter && \ - if [ -n "${OPENFOAM_ADAPTER_PR}" ]; then git fetch origin pull/${OPENFOAM_ADAPTER_PR}/head; fi && \ - git checkout ${OPENFOAM_ADAPTER_REF} && \ - /usr/bin/${OPENFOAM_EXECUTABLE} ./Allwmake -j $(nproc) -### end of openfoam_adapter stage ### - - -FROM python_bindings AS su2_adapter -ARG SU2_VERSION -ARG SU2_ADAPTER_PR -ARG SU2_ADAPTER_REF - -USER root -RUN apt-get -qq update && \ - apt-get -qq install swig python3-mpi4py python3-setuptools - -USER precice -WORKDIR /home/precice -# Download and build SU2 (We could also use pre-built binaries from the SU2 releases) -RUN git clone --depth=1 --branch=v${SU2_VERSION} --recurse-submodules https://github.com/su2code/SU2.git -RUN python3 -m venv /home/precice/venv && \ - . /home/precice/venv/bin/activate - -# Some of these variables are used by the scripts that follow -WORKDIR /home/precice -ENV SU2_RUN="/home/precice/SU2_RUN" -ENV SU2_HOME="/home/precice/SU2" -ENV PATH="/home/precice/su2-adapter/run:$SU2_RUN:$PATH" -ENV PYTHONPATH="$SU2_RUN:$PYTHONPATH" - -RUN git clone https://github.com/precice/su2-adapter.git && \ - cd su2-adapter &&\ - if [ -n "${SU2_ADAPTER_PR}" ]; then git fetch origin pull/${SU2_ADAPTER_PR}/head; fi && \ - git checkout ${SU2_ADAPTER_REF} &&\ - ./su2AdapterInstall - -# Build the modified SU2. -# The sed commands apply patches needed for newer systems. -RUN cd "${SU2_HOME}" &&\ - sed -i '1s/^/#include \n/' SU2_CFD/src/output/filewriter/CParaviewXMLFileWriter.cpp &&\ - sed -i '1s/^/#include \n/' SU2_CFD/src/SU2_CFD.cpp &&\ - sed -i 's/pipes/shlex/g' externals/ninja/configure.py &&\ - ./meson.py build -Denable-pywrapper=true -Denable-cgns=false -Denable-tecio=false --prefix=$SU2_RUN &&\ - ./ninja -C build install -### end of su2_adapter stage ### - - -##################################################################### -# Build stages using third-party base images # -##################################################################### - - -<<<<<<<< HEAD:tools/tests/dockerfiles/ubuntu_2604/Dockerfile -======== -FROM ubuntu:26.04 AS aste - -ARG PRECICE_UID=1000 -ARG PRECICE_GID=1000 -ARG PRECICE_PR -ARG PRECICE_REF -ARG PRECICE_PRESET -ARG ASTE_PR -ARG ASTE_REF - -USER root -SHELL ["/bin/bash", "-c"] -ENV DEBIAN_FRONTEND=noninteractive - -# Set the same user as the rest of the system tests components, for consistency. -RUN set -eux; \ - if getent group "${PRECICE_GID}" >/dev/null; then \ - existing_group="$(getent group "${PRECICE_GID}" | cut -d: -f1)"; \ - if [ "${existing_group}" != "precice" ]; then \ - groupmod -n precice "${existing_group}"; \ - fi; \ - else \ - groupadd -g "${PRECICE_GID}" precice; \ - fi; \ - if getent passwd "${PRECICE_UID}" >/dev/null; then \ - existing_user="$(getent passwd "${PRECICE_UID}" | cut -d: -f1)"; \ - if [ "${existing_user}" != "precice" ]; then \ - usermod -l precice -d /home/precice -m "${existing_user}"; \ - fi; \ - usermod -g "${PRECICE_GID}" precice; \ - else \ - useradd -u "${PRECICE_UID}" -g "${PRECICE_GID}" -ms /bin/bash precice; \ - fi; \ - mkdir -p /home/precice; \ - chown -R "${PRECICE_UID}:${PRECICE_GID}" /home/precice - -# Dependencies for preCICE and common dependencies for the tutorials/tests -RUN apt-get -qq update && \ - apt-get -qq -y install \ - build-essential \ - software-properties-common \ - cmake \ - curl \ - g++ \ - gfortran \ - git \ - libbenchmark-dev \ - libboost-all-dev \ - libeigen3-dev \ - libopenmpi-dev \ - libxml2-dev \ - lsb-release \ - openmpi-bin \ - petsc-dev \ - python3-dev \ - python3-numpy \ - python3-pip \ - python3-venv \ - pkg-config \ - wget \ - inotify-tools - -# Additional dependencies for ASTE -RUN apt-get -qq update && \ - apt-get -qq -y install \ - libmetis-dev \ - libvtk9-dev - -USER precice -WORKDIR /home/precice - -# Build & install precice into /home/precice/precice -RUN git clone https://github.com/precice/precice.git precice && \ - cd precice && \ - if [ -n "${PRECICE_PR}" ]; then git fetch origin pull/${PRECICE_PR}/head; fi && \ - git checkout ${PRECICE_REF} && \ - mkdir build && cd build &&\ - cmake .. --preset=${PRECICE_PRESET} -DCMAKE_INSTALL_PREFIX=/home/precice/.local/ -DBUILD_TESTING=OFF && \ - make all install -j $(nproc) && \ - cd ../.. && rm -rf precice - -ENV PATH="${PATH}:/home/precice/.local/bin" -ENV LD_LIBRARY_PATH="/home/precice/.local/lib" -ENV CPATH="/home/precice/.local/include" -ENV PKG_CONFIG_PATH="/home/precice/.local/lib/pkgconfig" -ENV CMAKE_PREFIX_PATH="/home/precice/.local" - -RUN git clone https://github.com/precice/aste.git aste && \ - cd aste && \ - if [ -n "${ASTE_PR}" ]; then git fetch origin pull/${ASTE_PR}/head; fi && \ - git checkout ${ASTE_REF} - -RUN python3 -m venv /home/precice/venv && \ - . /home/precice/venv/bin/activate && \ - pip install -r /home/precice/aste/requirements.txt && \ - pip install vtk - -RUN cd /home/precice/aste && \ - mkdir build && cd build &&\ - cmake .. -DCMAKE_INSTALL_PREFIX=/home/precice/.local/ && \ - make all install -j $(nproc) && \ - cd ../.. && rm -rf aste - -WORKDIR /home/precice - - ->>>>>>>> develop:tests/dockerfiles/ubuntu_2404/Dockerfile -FROM solids4foam/solids4foam:v2.3-openfoam-v2412-latest AS solids4foam - -ARG PRECICE_UID=1000 -ARG PRECICE_GID=1000 -ARG OPENFOAM_ADAPTER_PR -ARG OPENFOAM_ADAPTER_REF - -USER root -SHELL ["/bin/bash", "-c"] -ENV DEBIAN_FRONTEND=noninteractive - -# Set the same user as the rest of the system tests components, for consistency. -RUN set -eux; \ - if getent group "${PRECICE_GID}" >/dev/null; then \ - existing_group="$(getent group "${PRECICE_GID}" | cut -d: -f1)"; \ - if [ "${existing_group}" != "precice" ]; then \ - groupmod -n precice "${existing_group}"; \ - fi; \ - else \ - groupadd -g "${PRECICE_GID}" precice; \ - fi; \ - if getent passwd "${PRECICE_UID}" >/dev/null; then \ - existing_user="$(getent passwd "${PRECICE_UID}" | cut -d: -f1)"; \ - if [ "${existing_user}" != "precice" ]; then \ - usermod -l precice -d /home/precice -m "${existing_user}"; \ - fi; \ - usermod -g "${PRECICE_GID}" precice; \ - else \ - useradd -u "${PRECICE_UID}" -g "${PRECICE_GID}" -ms /bin/bash precice; \ - fi; \ - mkdir -p /home/precice; \ - chown -R "${PRECICE_UID}:${PRECICE_GID}" /home/precice - -# The base image provides all binaries under /root/, but we prefer to build as a regular user. -RUN mv /root/OpenFOAM/ /home/precice/OpenFOAM/ && \ - chown -R "${PRECICE_UID}:${PRECICE_GID}" /home/precice/OpenFOAM - -# Set a general openfoam executable, to make the component template version-independent -RUN ln -sf /usr/bin/openfoam2412 /usr/bin/openfoam - -RUN apt-get -qq update && \ - apt-get -qq -y install wget git - -# preCICE v3.4 was the last release to support Ubuntu 22.04 (used as a base image), -# so there is no reason to accept the preCICE version as an argument and build it from source. -# Rework this part once a newer base image is used. -RUN wget https://github.com/precice/precice/releases/download/v3.4.1/libprecice3_3.4.1_jammy.deb && \ - apt-get -qq -y install ./libprecice3_3.4.1_jammy.deb - -USER precice -WORKDIR /home/precice - -RUN git clone https://github.com/precice/openfoam-adapter.git &&\ - cd openfoam-adapter && \ - if [ -n "${OPENFOAM_ADAPTER_PR}" ]; then git fetch origin pull/${OPENFOAM_ADAPTER_PR}/head; fi && \ - git checkout ${OPENFOAM_ADAPTER_REF} && \ - /usr/bin/openfoam2412 ./Allwmake -j $(nproc) - -FROM python:3.14 AS fieldcompare -RUN pip install fieldcompare[all]==0.5.0 \ No newline at end of file From 436f0a5e1ae05f4ac3eb35b7467187a3421b127a Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sat, 15 Aug 2026 15:38:52 +0200 Subject: [PATCH 8/8] Update new components --- tests/components.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/components.yaml b/tests/components.yaml index 69a982fa2..c10e7b8b6 100644 --- a/tests/components.yaml +++ b/tests/components.yaml @@ -156,7 +156,7 @@ julia-bindings: template: component-templates/julia-bindings.yaml build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop" @@ -259,7 +259,7 @@ rust-bindings: template: component-templates/rust-bindings.yaml build_arguments: PLATFORM: - default: "ubuntu_2404" + default: "ubuntu_2604" PRECICE_REF: repository: https://github.com/precice/precice default: "develop"