From 84e99363f663a25594590d4b3c376bea36c21880 Mon Sep 17 00:00:00 2001
From: MADELA Patrick <patrick.madela@synchrotron-soleil.fr>
Date: Thu, 6 Oct 2022 17:51:14 +0200
Subject: [PATCH] The boostrap build is too long for a job and you can build
 Cmake with Cmake but latest version requires at least Cmake 3.13. Therefore
 we add job to prebuild a previous compatible Cmake with legacy system cmake
 to build after the final cmake

---
 .gitlab-ci.yml | 74 +++++++++++++++++++++++++++++++++++---------------
 1 file changed, 52 insertions(+), 22 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 19ef510..99c900c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,12 +1,33 @@
 
 variables:
+  PREBUILD_CMAKE_VERSION: 3.18.2
   CMAKE_VERSION: 3.24.2
 
 stages:
+  - prebuild
   - build
   - test
   - package
 
+# The boostrap build is too long for a job and you can build Cmake with Cmake but latest version requires at least Cmake 3.13
+# Therefore we add job to prebuild a previous compatible Cmake with legacy system cmake to build after the final cmake
+.prebuild:
+  stage: prebuild
+  script:
+    - yum install -y openssl-devel
+    - curl -s -OL https://github.com/Kitware/CMake/releases/download/v${PREBUILD_CMAKE_VERSION}/cmake-${PREBUILD_CMAKE_VERSION}-SHA-256.txt
+    - curl -s -OL https://github.com/Kitware/CMake/releases/download/v${PREBUILD_CMAKE_VERSION}/cmake-${PREBUILD_CMAKE_VERSION}.tar.gz
+    - echo "$(cat cmake-${PREBUILD_CMAKE_VERSION}-SHA-256.txt | grep cmake-${PREBUILD_CMAKE_VERSION}.tar.gz)" | sha256sum --check --status
+    - tar -xzf cmake-${PREBUILD_CMAKE_VERSION}.tar.gz
+    - mkdir build && cd build
+    - cmake3 ../cmake-${PREBUILD_CMAKE_VERSION} -DCMAKE_INSTALL_PREFIX=${CI_PROJECT_DIR}/${NAME}
+    - make
+    - make install
+  artifacts:
+    name: ${NAME}
+    paths:
+      - ${NAME}
+
 .build:
   stage: build
   script:
@@ -15,8 +36,8 @@ stages:
     - curl -s -OL https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}.tar.gz
     - echo "$(cat cmake-${CMAKE_VERSION}-SHA-256.txt | grep cmake-${CMAKE_VERSION}.tar.gz)" | sha256sum --check --status
     - tar -xzf cmake-${CMAKE_VERSION}.tar.gz
-    - cd cmake-${CMAKE_VERSION}
-    - ./bootstrap --prefix=${CI_PROJECT_DIR}/${NAME} --parallel=2
+    - mkdir build && cd build
+    - ${CI_PROJECT_DIR}/${PREBUILD_NAME}/bin/cmake ../cmake-${CMAKE_VERSION} -DCMAKE_INSTALL_PREFIX=${CI_PROJECT_DIR}/${NAME}
     - make
     - make install
   artifacts:
@@ -36,11 +57,20 @@ stages:
     - zip -r --symlinks ../${NAME}.zip *
     - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ../${NAME}.zip "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/cmake/${CMAKE_VERSION}/"'
 
+prebuild-el6-i686:
+  extends: [".prebuild"]
+  image: gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/dev-el6-gcc73-x86
+  variables:
+    NAME: "cmake-${PREBUILD_CMAKE_VERSION}-linux-el6-i686"
+    
 linux-el6-i686:
   extends: [".build"]
   image: gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/dev-el6-gcc73-x86
   variables:
+    PREBUILD_NAME: "cmake-${PREBUILD_CMAKE_VERSION}-linux-el6-i686"
     NAME: "cmake-${CMAKE_VERSION}-linux-el6-i686"
+  needs:
+    - prebuild-el6-i686
 
 test-el6-i686:
   extends: [".test"]
@@ -59,25 +89,25 @@ package-el6-i686:
     - linux-el6-i686
     - test-el6-i686
 
-linux-el7-i686:
-  extends: [".build"]
-  image: gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/dev-el7-gcc73-x86
-  variables:
-    NAME: "cmake-${CMAKE_VERSION}-linux-el7-i686"
+# linux-el7-i686:
+#   extends: [".build"]
+#   image: gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/dev-el7-gcc73-x86
+#   variables:
+#     NAME: "cmake-${CMAKE_VERSION}-linux-el7-i686"
 
-test-el7-i686:
-  extends: [".test"]
-  image: gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/dev-el7-gcc73-x86
-  variables:
-    NAME: "cmake-${CMAKE_VERSION}-linux-el7-i686"
-  needs:
-    - linux-el7-i686
+# test-el7-i686:
+#   extends: [".test"]
+#   image: gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/dev-el7-gcc73-x86
+#   variables:
+#     NAME: "cmake-${CMAKE_VERSION}-linux-el7-i686"
+#   needs:
+#     - linux-el7-i686
 
-package-el7-i686:
-  extends: [".package"]
-  image: gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/dev-el7-gcc73-x86
-  variables:
-    NAME: "cmake-${CMAKE_VERSION}-linux-el7-i686"
-  needs:
-    - linux-el7-i686
-    - test-el7-i686
+# package-el7-i686:
+#   extends: [".package"]
+#   image: gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/dev-el7-gcc73-x86
+#   variables:
+#     NAME: "cmake-${CMAKE_VERSION}-linux-el7-i686"
+#   needs:
+#     - linux-el7-i686
+#     - test-el7-i686
-- 
GitLab