From 17f248fdfd173f7be43085e151ee2735f8830a62 Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Mon, 1 Feb 2021 22:30:27 +0100
Subject: [PATCH] [ci] CMake presets on Linux jobs.

---
 CMakePresets.json                           | 19 +++++++++++++++++--
 scripts/ci/extends/template-build-linux.yml | 11 +++--------
 scripts/ci/extends/test-artifacts.yml       | 12 ++++++------
 scripts/ci/jobs/build-gui-linux.yml         |  6 +-----
 scripts/ci/jobs/build-linux-conan.yml       |  3 +--
 scripts/ci/jobs/build-linux-frontend.yml    |  6 ++----
 scripts/ci/jobs/build-linux.yml             | 15 ++++++---------
 scripts/env/eve/cli.sh                      |  3 +--
 8 files changed, 37 insertions(+), 38 deletions(-)

diff --git a/CMakePresets.json b/CMakePresets.json
index 45417701b36..c4185b0da80 100644
--- a/CMakePresets.json
+++ b/CMakePresets.json
@@ -7,13 +7,20 @@
   },
   "configurePresets": [
     {
-      "name": "release",
+      "name": "_ninja_release",
+      "hidden": true,
       "displayName": "Default Config (Release)",
       "description": "Default build using the Ninja generator",
       "generator": "Ninja",
       "binaryDir": "${sourceDir}/build/${presetName}",
       "cacheVariables": {
-        "CMAKE_BUILD_TYPE": "Release",
+        "CMAKE_BUILD_TYPE": "Release"
+      }
+    },
+    {
+      "name": "release",
+      "inherits": "_ninja_release",
+      "cacheVariables": {
         "OGS_BUILD_UTILS": "ON",
         "OGS_USE_PYTHON": "ON"
       }
@@ -35,6 +42,14 @@
         "OGS_BUILD_GUI": "ON",
         "OGS_USE_NETCDF": "ON"
       }
+    },
+    {
+      "name": "ci-simplest",
+      "inherits": "_ninja_release",
+      "cacheVariables": {
+        "OGS_USE_CONAN": "OFF",
+        "OGS_DISABLE_POETRY": "ON"
+      }
     }
   ]
 }
diff --git a/scripts/ci/extends/template-build-linux.yml b/scripts/ci/extends/template-build-linux.yml
index 92bf2a643df..346ff35eb45 100644
--- a/scripts/ci/extends/template-build-linux.yml
+++ b/scripts/ci/extends/template-build-linux.yml
@@ -9,17 +9,12 @@
 
   before_script:
     - "echo \"For debugging run: docker run --rm -it -v $CI_BUILDS_DIR:/builds -w=$CI_PROJECT_DIR $CI_JOB_IMAGE\""
-    - mkdir -p $BUILD_DIR
-    - cd $BUILD_DIR
     - ([ "${CONAN_USER_HOME}" == "${CI_PROJECT_DIR}/.conan" ]) && conan remove --system-reqs '*'
     - ([[ $BUILD_CTEST_LARGE_ON_MASTER && "${CI_COMMIT_BRANCH}" == "master" && "${CMAKE_ARGS}" == *"USE_PYTHON=ON"* ]]) && export BUILD_CTEST_LARGE=true
   script:
-    - "echo \"Running: cmake .. -G Ninja $CMAKE_ARGS -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DOGS_BUILD_PROCESSES=$BUILD_PROCESSES\""
-    - >
-      cmake .. -G Ninja
-      $CMAKE_ARGS
-      -DCMAKE_BUILD_TYPE=$BUILD_TYPE
-      -DOGS_BUILD_PROCESSES=$BUILD_PROCESSES
+    - cmake -S . --preset=$CMAKE_PRESET $CMAKE_ARGS -DOGS_BUILD_PROCESSES=$BUILD_PROCESSES
+    - build_dir=${BUILD_DIR:-build/$CMAKE_PRESET}
+    - cd $build_dir
     - $BUILD_CMD_PREFIX cmake --build . --target package > >(tee make.output)
     - if [ "$BUILD_TESTS" = true ] ; then $BUILD_CMD_PREFIX cmake --build . --target tests ; fi
     - if [ "$BUILD_CTEST" = true ] ; then $BUILD_CMD_PREFIX cmake --build . --target ctest ; fi
diff --git a/scripts/ci/extends/test-artifacts.yml b/scripts/ci/extends/test-artifacts.yml
index 99fea5077af..424ff0e992e 100644
--- a/scripts/ci/extends/test-artifacts.yml
+++ b/scripts/ci/extends/test-artifacts.yml
@@ -1,12 +1,12 @@
 .test-artifacts:
   artifacts:
     paths:
-      - $BUILD_DIR/Tests/ctest.xml
-      - $BUILD_DIR/Tests/testrunner.xml
-      - $BUILD_DIR/make.output
-      - $BUILD_DIR/*.zip
-      - $BUILD_DIR/*.tar.gz
+      - build/*/Tests/ctest.xml
+      - build/*/Tests/testrunner.xml
+      - build/*/make.output
+      - build/*/*.zip
+      - build/*/*.tar.gz
     expire_in: 1 week
     reports:
       junit:
-        - $BUILD_DIR/Tests/testrunner.xml
+        - build/*/Tests/testrunner.xml
diff --git a/scripts/ci/jobs/build-gui-linux.yml b/scripts/ci/jobs/build-gui-linux.yml
index ee0ba1e833f..b2b8b824cd3 100644
--- a/scripts/ci/jobs/build-gui-linux.yml
+++ b/scripts/ci/jobs/build-gui-linux.yml
@@ -10,11 +10,7 @@ build gui linux:
     - when: manual
       allow_failure: true
   variables:
-    BUILD_DIR: "build-gui-linux"
+    CMAKE_PRESET: release-gui
     CMAKE_ARGS: >-
       -DOGS_USE_CONAN=OFF
-      -DOGS_BUILD_CLI=OFF
-      -DOGS_BUILD_GUI=ON
-      -DOGS_BUILD_UTILS=ON
-      -DOGS_USE_NETCDF=ON
       -DOGS_INSTALL_DEPENDENCIES=ON
diff --git a/scripts/ci/jobs/build-linux-conan.yml b/scripts/ci/jobs/build-linux-conan.yml
index 34f3a983c07..baabe461e6e 100644
--- a/scripts/ci/jobs/build-linux-conan.yml
+++ b/scripts/ci/jobs/build-linux-conan.yml
@@ -4,10 +4,9 @@ build linux conan:
     - .rules-master-manual
   tags: [shell, envinf1-shell]
   variables:
-    BUILD_DIR: build
+    CMAKE_PRESET: release
     CMAKE_ARGS: >-
       -DBUILD_SHARED_LIBS=ON
-      -DOGS_BUILD_UTILS=ON
       -DOGS_USE_CONAN=AUTO
       -DOGS_USE_MFRONT=ON
       -DOGS_USE_XDMF=ON
diff --git a/scripts/ci/jobs/build-linux-frontend.yml b/scripts/ci/jobs/build-linux-frontend.yml
index 7d3e086a15d..a1106ef33da 100644
--- a/scripts/ci/jobs/build-linux-frontend.yml
+++ b/scripts/ci/jobs/build-linux-frontend.yml
@@ -6,10 +6,8 @@ build linux frontend:
     - frontend2
   allow_failure: true
   variables:
-    BUILD_DIR: "build"
     CCACHE_DIR: "/data/ogs/.ccache"
-    CMAKE_ARGS: "-DOGS_USE_CONAN=OFF -DOGS_DISABLE_CCACHE=OFF -DOGS_CPU_ARCHITECTURE=generic"
+    CMAKE_PRESET: release
+    CMAKE_ARGS: "-DOGS_USE_CONAN=OFF -DOGS_USE_PYTHON=OFF -DOGS_CPU_ARCHITECTURE=generic"
   before_script:
     - source scripts/env/eve/cli.sh
-    - mkdir -p $BUILD_DIR
-    - cd $BUILD_DIR
diff --git a/scripts/ci/jobs/build-linux.yml b/scripts/ci/jobs/build-linux.yml
index 3873b170e81..d8c9da5f4ea 100644
--- a/scripts/ci/jobs/build-linux.yml
+++ b/scripts/ci/jobs/build-linux.yml
@@ -4,10 +4,9 @@ build linux:
   tags: [ docker ]
   timeout: 2h
   variables:
-    BUILD_DIR: "build"
     BUILD_CTEST_LARGE_ON_MASTER: "true"
+    CMAKE_PRESET: release
     CMAKE_ARGS: >-
-      -DOGS_BUILD_UTILS=ON
       -DOGS_USE_CONAN=OFF
       -DOGS_USE_MFRONT=ON
       -DOGS_$USE_PYTHON
@@ -24,16 +23,16 @@ build linux (no unity):
   tags: [ docker ]
   timeout: 1h
   variables:
-    BUILD_DIR: "build-no-unity"
+    BUILD_DIR: "build/no-unity"
     BUILD_TESTS: "false"
     BUILD_CTEST: "false"
+    CMAKE_PRESET: release
     CMAKE_ARGS: >-
-      -DOGS_BUILD_UTILS=ON
       -DOGS_USE_CONAN=OFF
-      -DOGS_USE_UNITY_BUILDS=OFF
       -DOGS_USE_MFRONT=ON
+      -DOGS_USE_UNITY_BUILDS=OFF
       -DOGS_USE_XDMF=ON
-      -DOGS_USE_PYTHON=ON
+      -B $BUILD_DIR
 
 build linux (no deps, no procs):
   image: $CONTAINER_GCC_IMAGE
@@ -41,9 +40,7 @@ build linux (no deps, no procs):
   tags: [ docker ]
   timeout: 1h
   variables:
-    BUILD_DIR: "build-no-unity"
     BUILD_TESTS: "false"
     BUILD_CTEST: "false"
     BUILD_PROCESSES: "SteadyStateDiffusion"
-    CMAKE_ARGS: >-
-      -DOGS_USE_CONAN=OFF
+    CMAKE_PRESET: ci-simplest
diff --git a/scripts/env/eve/cli.sh b/scripts/env/eve/cli.sh
index dfeee0cfa8e..19e453d8553 100644
--- a/scripts/env/eve/cli.sh
+++ b/scripts/env/eve/cli.sh
@@ -8,10 +8,9 @@ fi
 module use /global/apps/modulefiles
 
 module load foss/2019b
-module load CMake/3.15.3
+module load cmake/3.19.4-1
 module load ninja
 module load git/2.23.0
-module load git-lfs/2.7.1
 
 # Libraries
 module load boost/1.67.0-1
-- 
GitLab