From 6537caba7cef4cac0ec27c10865969bc82a8546a Mon Sep 17 00:00:00 2001
From: Nicolas Richart <nicolas.richart@epfl.ch>
Date: Wed, 24 Jan 2024 12:57:08 +0100
Subject: [PATCH] Adding a step to install compilers

---
 .gitlab-ci.yml               | 30 +++++++++++++++++++++++++++++-
 config.json                  |  6 ++++++
 dockerfiles/rhel9/Dockerfile |  2 +-
 spack.yaml                   |  5 +----
 4 files changed, 37 insertions(+), 6 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 84e5cb1..4494496 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -20,7 +20,7 @@ variables:
   STACK_PATH: "/work/scitas-ge/richart/ci_cache/stack"
   SPACK_DISABLE_LOCAL_CONFIG: "true"
   SPACK_USER_CACHE_PATH: "/tmp/spack_cache"
-
+  SPACK_SITE_CONFIG_PATH: "/stack/spack/etc"
 # ------------------------------------------------------------------------------
 .parallel_job:
   image: registry.c4science.ch/scitas-stack/rhel:9.3
@@ -85,7 +85,35 @@ spack:setup:
         /spack/spack/bin/spack gpg publish -d /buildcache
       fi
 
+    - mkdir /stack/spack/etc
+
+
+spack:install_compilers:
+  stage: environment
+  extends:
+    - .parallel_job
+  script:
+    - COMPILER_LIST_SPECS=$(jq -r '.stack.compilers | map("\(.spec)@\(.version)")[]' config.json)
+    - /spack/spack/bin/spack install
+      --log-file spack-install.xml
+      --log-format junit
+      --fail-fast
+      --show-log-on-error
+      --use-cache
+      ${COMPILER_LIST_SPECS}
+
+    - echo "definitions: [ compilers: [ ${COMPILER_LIST_SPECS} ]]" > compiler_definitions.yaml
+
+    - /spack/spack/bin/spack compiler find --scope site /usr
+
+    - |
+      for compiler in ${COMPILER_LIST_SPECS}; do
+        /spack/spack/bin/spack compiler find --scope site $(/spack/spack/bin/spack location -i ${compiler})
+      done
 
+  artifacts:
+    reports:
+      junit: spack-install.xml
 
 spack:concretize:
   stage: concretize
diff --git a/config.json b/config.json
index 3ceb5e4..298d621 100644
--- a/config.json
+++ b/config.json
@@ -11,5 +11,11 @@
                 "branch": "releases/2024.0.0"
             }
         }
+    },
+    "stack": {
+        "compilers": {
+            "gcc": { "spec": "gcc", "version": "12.2.0" },
+            "intel": { "spec": "intel-oneapi-compilers", "version": "2024.0.2" }
+        }
     }
 }
diff --git a/dockerfiles/rhel9/Dockerfile b/dockerfiles/rhel9/Dockerfile
index 5f37fc4..c6b75f8 100644
--- a/dockerfiles/rhel9/Dockerfile
+++ b/dockerfiles/rhel9/Dockerfile
@@ -8,7 +8,7 @@ ENV SPACK_DISABLE_LOCAL_CONFIG=true   \
 RUN echo "10.95.33.172  foreman1.hpc.epfl.ch" >> /etc/hosts
 RUN curl -sS --insecure \
     'https://foreman1.hpc.epfl.ch/register?activation_keys=ak-helvetios&organization_id=1&update_packages=false' \
-    -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjo2LCJpYXQiOjE3MDU1NzI0NjYsImp0aSI6IjdkYjE3ODU1NGRhOWVhOTAxYTJjZTY0MmQ5OTFjODAyYmQzZWU1NDI1YmNjYWY4ODY3NjAwNDYwMGE4YmEyNzYiLCJleHAiOjE3MDU1ODY4NjYsInNjb3BlIjoicmVnaXN0cmF0aW9uI2dsb2JhbCByZWdpc3RyYXRpb24jaG9zdCJ9.ilNKpgg__g5RHlDOuwDxtFiTMKLNc-JvPDyWrgy48Pc' \
+    -H "'Authorization: Bearer ${RHEL_TOKEN}" \
     | bash
 
 
diff --git a/spack.yaml b/spack.yaml
index 0298305..380a36a 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -3,12 +3,9 @@ spack:
     - mirrors.yaml
     - packages.yaml
     - repos.yaml
+    - compiler_definitions.yaml
 
   definitions:
-    - compilers:
-        - gcc@12.2.0
-        - intel-oneapi-compilers
-
     - when: env['environment'] == 'helvetios'
       serial_codes_per_cluster:
         - ucx +rdmacm +rc +dc +ud +cma +mlx5_dv +parameter_checking +thread_multiple +verbs ~cuda ~gdrcopy
-- 
GitLab