From a968d3917e9e4dc1dc3f0564208192f898c82241 Mon Sep 17 00:00:00 2001
From: Nicolas Richart <networms@gmail.ch>
Date: Fri, 14 Mar 2025 00:12:58 +0100
Subject: [PATCH 1/7] Linting old stack

---
 stacks/pinot-noir-gcc/concretizer_common.yaml |   1 +
 stacks/pinot-noir-gcc/config_common.yaml      |   5 +-
 .../pinot-noir-gcc/definitions_acc_cuda.yaml  |   1 +
 .../pinot-noir-gcc/definitions_acc_none.yaml  |   1 +
 stacks/pinot-noir-gcc/definitions_jed.yaml    |   1 +
 stacks/pinot-noir-gcc/modules_acc_none.yaml   |   1 +
 stacks/pinot-noir-gcc/modules_common.yaml     |  39 ++---
 stacks/pinot-noir-gcc/modules_empty.yaml      |   1 +
 stacks/pinot-noir-gcc/modules_kuma-h100.yaml  |   1 +
 stacks/pinot-noir-gcc/modules_kuma-l40s.yaml  |   7 +-
 stacks/pinot-noir-gcc/packages_common.yaml    |   1 +
 stacks/pinot-noir-gcc/packages_helvetios.yaml |   7 +-
 stacks/pinot-noir-gcc/packages_izar.yaml      |   7 +-
 stacks/pinot-noir-gcc/packages_jed.yaml       |  51 +++----
 stacks/pinot-noir-gcc/packages_kuma-h100.yaml |  49 +++----
 stacks/pinot-noir-gcc/packages_kuma-l40s.yaml |  49 +++----
 stacks/pinot-noir-gcc/packages_stack.yaml     | 135 +++++++++---------
 stacks/pinot-noir-gcc/spack.yaml              |  17 ++-
 18 files changed, 193 insertions(+), 181 deletions(-)

diff --git a/stacks/pinot-noir-gcc/concretizer_common.yaml b/stacks/pinot-noir-gcc/concretizer_common.yaml
index 698e4c7..161462e 100644
--- a/stacks/pinot-noir-gcc/concretizer_common.yaml
+++ b/stacks/pinot-noir-gcc/concretizer_common.yaml
@@ -1,3 +1,4 @@
+---
 concretizer:
   reuse: false
   unify: false
diff --git a/stacks/pinot-noir-gcc/config_common.yaml b/stacks/pinot-noir-gcc/config_common.yaml
index bac71f0..298e84c 100644
--- a/stacks/pinot-noir-gcc/config_common.yaml
+++ b/stacks/pinot-noir-gcc/config_common.yaml
@@ -1,9 +1,10 @@
+---
 config:
-#  ccache: true
+  #  ccache: true
   install_missing_compilers: false
 
   install_tree:
-    padded_length: False
+    padded_length: false
 
   build_stage:
     - $tempdir/$user/spack-stage
diff --git a/stacks/pinot-noir-gcc/definitions_acc_cuda.yaml b/stacks/pinot-noir-gcc/definitions_acc_cuda.yaml
index 154a251..6b1aa0c 100644
--- a/stacks/pinot-noir-gcc/definitions_acc_cuda.yaml
+++ b/stacks/pinot-noir-gcc/definitions_acc_cuda.yaml
@@ -1,3 +1,4 @@
+---
 definitions:
   - cuda_system_codes:
       - cuda
diff --git a/stacks/pinot-noir-gcc/definitions_acc_none.yaml b/stacks/pinot-noir-gcc/definitions_acc_none.yaml
index ca4ba7f..8915271 100644
--- a/stacks/pinot-noir-gcc/definitions_acc_none.yaml
+++ b/stacks/pinot-noir-gcc/definitions_acc_none.yaml
@@ -1 +1,2 @@
+---
 definitions: []
diff --git a/stacks/pinot-noir-gcc/definitions_jed.yaml b/stacks/pinot-noir-gcc/definitions_jed.yaml
index 0f156fa..3861e72 100644
--- a/stacks/pinot-noir-gcc/definitions_jed.yaml
+++ b/stacks/pinot-noir-gcc/definitions_jed.yaml
@@ -1,3 +1,4 @@
+---
 definitions:
   - cuda_system_codes:
       - cuda
diff --git a/stacks/pinot-noir-gcc/modules_acc_none.yaml b/stacks/pinot-noir-gcc/modules_acc_none.yaml
index 21d0544..cabc79d 100644
--- a/stacks/pinot-noir-gcc/modules_acc_none.yaml
+++ b/stacks/pinot-noir-gcc/modules_acc_none.yaml
@@ -1,3 +1,4 @@
+---
 modules:
   default:
     lmod: {}
diff --git a/stacks/pinot-noir-gcc/modules_common.yaml b/stacks/pinot-noir-gcc/modules_common.yaml
index fd20133..e715d73 100644
--- a/stacks/pinot-noir-gcc/modules_common.yaml
+++ b/stacks/pinot-noir-gcc/modules_common.yaml
@@ -1,3 +1,4 @@
+---
 modules:
   prefix_inspections:
     ./lib64: [LD_LIBRARY_PATH]
@@ -15,19 +16,19 @@ modules:
           set:
             "{name}_ROOT": "{prefix}"
         suffixes:
-          '+mpi': mpi
-          '+openmp': openmp
-          'threads=openmp': openmp
-          '^fftw+openmp': openmp
-          'hdf5=parallel': h5
-          '+cuda': cuda
-          '+double-gpu': double-gpu
-          '+plumed': plumed
-          '+unwind': unwind
-          '+debug': dbg
-          '+ilp64': int64
-          '+int64': int64
-          'version_suffix=jl': julia
+          "+mpi": mpi
+          "+openmp": openmp
+          "threads=openmp": openmp
+          "^fftw+openmp": openmp
+          "hdf5=parallel": h5
+          "+cuda": cuda
+          "+double-gpu": double-gpu
+          "+plumed": plumed
+          "+unwind": unwind
+          "+debug": dbg
+          "+ilp64": int64
+          "+int64": int64
+          "version_suffix=jl": julia
         autoload: run
 
       hide_implicits: true
@@ -52,13 +53,13 @@ modules:
         environment:
           set:
             SLURM_MPI_TYPE: pmix
-            OMPI_MCA_btl_openib_warn_default_gid_prefix: '0'
+            OMPI_MCA_btl_openib_warn_default_gid_prefix: "0"
           append_path:
             JULIA_LOAD_PATH: ":/ssoft/spack/external/julia/syrah.v1/mpi"
       openblas threads=pthreads:
         environment:
           set:
-            OPENBLAS_NUM_THREADS: '1'
+            OPENBLAS_NUM_THREADS: "1"
       hdf5~mpi+cxx:
         environment:
           set:
@@ -74,7 +75,7 @@ modules:
         environment:
           set:
             I_MPI_PMI_LIBRARY: /usr/lib64/libpmi2.so
-            I_MPI_EXTRA_FILESYSTEM: '0'
+            I_MPI_EXTRA_FILESYSTEM: "0"
             SLURM_MPI_TYPE: pmi2
       metis:
         suffixes:
@@ -86,14 +87,14 @@ modules:
           set:
             PLUMED_KERNEL: "{prefix}/lib/libplumedKernel.so"
           unset:
-          - PLUMED_ROOT
+            - PLUMED_ROOT
       quantum-espresso:
         suffixes:
           hdf5=parallel: hdf5
       scons:
         suffixes:
-          '^python@:2.99': py2
-          '^python@3:': py3
+          "^python@:2.99": py2
+          "^python@3:": py3
 
       abaqus:
         template: modules/group_restricted.lua
diff --git a/stacks/pinot-noir-gcc/modules_empty.yaml b/stacks/pinot-noir-gcc/modules_empty.yaml
index 21d0544..cabc79d 100644
--- a/stacks/pinot-noir-gcc/modules_empty.yaml
+++ b/stacks/pinot-noir-gcc/modules_empty.yaml
@@ -1,3 +1,4 @@
+---
 modules:
   default:
     lmod: {}
diff --git a/stacks/pinot-noir-gcc/modules_kuma-h100.yaml b/stacks/pinot-noir-gcc/modules_kuma-h100.yaml
index 4599ea4..6bb1f83 100644
--- a/stacks/pinot-noir-gcc/modules_kuma-h100.yaml
+++ b/stacks/pinot-noir-gcc/modules_kuma-h100.yaml
@@ -1,3 +1,4 @@
+---
 modules:
   default:
     lmod:
diff --git a/stacks/pinot-noir-gcc/modules_kuma-l40s.yaml b/stacks/pinot-noir-gcc/modules_kuma-l40s.yaml
index 7be541d..e68a137 100644
--- a/stacks/pinot-noir-gcc/modules_kuma-l40s.yaml
+++ b/stacks/pinot-noir-gcc/modules_kuma-l40s.yaml
@@ -1,9 +1,10 @@
+---
 modules:
   default:
     lmod:
       openmpi:
         environment:
           set:
-            OMPI_MCA_pml: 'ucx'
-            OMPI_MCA_osc: 'ucx'
-            UCX_NET_DEVICES: 'mlx5_0:1,mlx5_1:1'
+            OMPI_MCA_pml: "ucx"
+            OMPI_MCA_osc: "ucx"
+            UCX_NET_DEVICES: "mlx5_0:1,mlx5_1:1"
diff --git a/stacks/pinot-noir-gcc/packages_common.yaml b/stacks/pinot-noir-gcc/packages_common.yaml
index 01e4aa6..b238249 100644
--- a/stacks/pinot-noir-gcc/packages_common.yaml
+++ b/stacks/pinot-noir-gcc/packages_common.yaml
@@ -1,3 +1,4 @@
+---
 packages:
   all:
     providers:
diff --git a/stacks/pinot-noir-gcc/packages_helvetios.yaml b/stacks/pinot-noir-gcc/packages_helvetios.yaml
index fe0d4ad..7c9421c 100644
--- a/stacks/pinot-noir-gcc/packages_helvetios.yaml
+++ b/stacks/pinot-noir-gcc/packages_helvetios.yaml
@@ -1,8 +1,5 @@
+---
 packages:
   all:
     target: ["skylake_avx512"]
-    require: ['~cuda', '~rocm']
-
-  # py-torch:
-  #   require:
-  #   - spec: '~cuda ~cudnn ~nccl ~rocm'
+    require: ["~cuda", "~rocm"]
diff --git a/stacks/pinot-noir-gcc/packages_izar.yaml b/stacks/pinot-noir-gcc/packages_izar.yaml
index 9ce65d9..9ad6f6f 100644
--- a/stacks/pinot-noir-gcc/packages_izar.yaml
+++ b/stacks/pinot-noir-gcc/packages_izar.yaml
@@ -1,11 +1,12 @@
+---
 packages:
   all:
     target: ["cannonlake"]
     require:
       - spec: ^openmpi +cuda
-        when: '%gcc ^mpi'
+        when: "%gcc ^mpi"
 
       - spec: cuda_arch=70
-        when: '+cuda'
+        when: "+cuda"
 
-      - '+cuda'
+      - "+cuda"
diff --git a/stacks/pinot-noir-gcc/packages_jed.yaml b/stacks/pinot-noir-gcc/packages_jed.yaml
index 822d1e2..0662680 100644
--- a/stacks/pinot-noir-gcc/packages_jed.yaml
+++ b/stacks/pinot-noir-gcc/packages_jed.yaml
@@ -1,3 +1,4 @@
+---
 packages:
   all:
     target: ["icelake"]
@@ -5,57 +6,57 @@ packages:
       - "~rocm"
 
       - spec: cuda_arch=90 target=icelake
-        when: '+cuda'
+        when: "+cuda"
       # - spec: '~cuda'
       #   when: '%oneapi'
 
-      - spec: '+cuda'
-        when: '%gcc'
+      - spec: "+cuda"
+        when: "%gcc"
 
   # ---------------------------------------------------------------------------
   hypre:
     require:
-    - spec: '+cuda cuda_arch=90 +unified-memory'
-      when: '%gcc'
+      - spec: "+cuda cuda_arch=90 +unified-memory"
+        when: "%gcc"
 
   kokkos:
     require:
-    - spec: '+cuda cuda_arch=90 +cuda_uvm +wrapper ~openmptarget'
-      when: '%gcc'
+      - spec: "+cuda cuda_arch=90 +cuda_uvm +wrapper ~openmptarget"
+        when: "%gcc"
 
   kokkos-kernels:
     require:
-    - spec: '+cuda cuda_arch=90'
-      when: '%gcc'
+      - spec: "+cuda cuda_arch=90"
+        when: "%gcc"
 
   openmpi:
     require:
-      - spec: '+cuda cuda_arch=90 target=icelake'
+      - spec: "+cuda cuda_arch=90 target=icelake"
 
   petsc:
     require:
-    - spec: '+cuda cuda_arch=90'
-      when: '%gcc'
+      - spec: "+cuda cuda_arch=90"
+        when: "%gcc"
 
   py-tensorflow:
     require:
-    - spec: '+cuda cuda_arch=90 +nccl'
+      - spec: "+cuda cuda_arch=90 +nccl"
 
   py-torch:
     require:
-    - spec: '+cuda cuda_arch=90 +nccl +cudnn'
+      - spec: "+cuda cuda_arch=90 +nccl +cudnn"
 
   quantum-espresso:
     require:
-    - spec: '~cuda'
+      - spec: "~cuda"
 
   suite-sparse:
     require:
-    - spec: '+cuda'
+      - spec: "+cuda"
 
   ucx:
     require:
-      - spec: '+xpmem +cma +rdmacm +rc +ud +dc +verbs +ib_hw_tm +gdrcopy +cuda cuda_arch=90 target=icelake ~rocm'
+      - spec: "+xpmem +cma +rdmacm +rc +ud +dc +verbs +ib_hw_tm +gdrcopy +cuda cuda_arch=90 target=icelake ~rocm"
 
   # ---------------------------------------------------------------------------
   # Externals
@@ -63,23 +64,23 @@ packages:
   pmix:
     buildable: false
     externals:
-    - spec: 'pmix@5.0.2'
-      prefix: /usr
+      - spec: "pmix@5.0.2"
+        prefix: /usr
 
   rdma-core:
     buildable: false
     externals:
-    - spec: 'rdma-core@47.1'
-      prefix: /usr
+      - spec: "rdma-core@47.1"
+        prefix: /usr
 
   slurm:
     buildable: false
     externals:
-    - spec: 'slurm@24-05-0-2'
-      prefix: /usr
+      - spec: "slurm@24-05-0-2"
+        prefix: /usr
 
   xpmem:
     buildable: false
     externals:
-    - spec: 'xpmem@2.7.3'
-      prefix: /usr
+      - spec: "xpmem@2.7.3"
+        prefix: /usr
diff --git a/stacks/pinot-noir-gcc/packages_kuma-h100.yaml b/stacks/pinot-noir-gcc/packages_kuma-h100.yaml
index b861a64..6eeda3a 100644
--- a/stacks/pinot-noir-gcc/packages_kuma-h100.yaml
+++ b/stacks/pinot-noir-gcc/packages_kuma-h100.yaml
@@ -1,3 +1,4 @@
+---
 packages:
   all:
     target: ["zen4"]
@@ -5,54 +6,54 @@ packages:
       - "~rocm"
 
       - spec: cuda_arch=90 target=zen4
-        when: '+cuda'
+        when: "+cuda"
 
-      - spec: '+cuda'
-        when: '%gcc'
+      - spec: "+cuda"
+        when: "%gcc"
 
   # ---------------------------------------------------------------------------
   hypre:
     require:
-    - spec: '+cuda cuda_arch=90 +unified-memory'
-      when: '%gcc'
+      - spec: "+cuda cuda_arch=90 +unified-memory"
+        when: "%gcc"
 
   kokkos:
     require:
-    - spec: '+cuda cuda_arch=90 +cuda_uvm +wrapper ~openmptarget'
-      when: '%gcc'
+      - spec: "+cuda cuda_arch=90 +cuda_uvm +wrapper ~openmptarget"
+        when: "%gcc"
 
   nvshmem:
     require:
-    - spec: '+cuda cuda_arch=90 +ibgda +nccl +ucx +mpi +pmix'
+      - spec: "+cuda cuda_arch=90 +ibgda +nccl +ucx +mpi +pmix"
 
   openmpi:
     require:
-      - spec: '+cuda cuda_arch=90 target=zen4'
+      - spec: "+cuda cuda_arch=90 target=zen4"
 
   petsc:
     require:
-    - spec: '+cuda cuda_arch=90'
-      when: '%gcc'
+      - spec: "+cuda cuda_arch=90"
+        when: "%gcc"
 
   py-tensorflow:
     require:
-    - spec: '+cuda cuda_arch=90 +nccl'
+      - spec: "+cuda cuda_arch=90 +nccl"
 
   py-torch:
     require:
-    - spec: '+cuda cuda_arch=90 +nccl +cudnn'
+      - spec: "+cuda cuda_arch=90 +nccl +cudnn"
 
   quantum-espresso:
     require:
-    - spec: '~cuda'
+      - spec: "~cuda"
 
   suite-sparse:
     require:
-    - spec: '+cuda'
+      - spec: "+cuda"
 
   ucx:
     require:
-      - spec: '+xpmem +cma +rdmacm +rc +ud +dc +verbs +ib_hw_tm +gdrcopy +cuda cuda_arch=90 ~rocm target=zen4'
+      - spec: "+xpmem +cma +rdmacm +rc +ud +dc +verbs +ib_hw_tm +gdrcopy +cuda cuda_arch=90 ~rocm target=zen4"
 
   # ---------------------------------------------------------------------------
   # Externals
@@ -60,23 +61,23 @@ packages:
   pmix:
     buildable: false
     externals:
-    - spec: 'pmix@5.0.2'
-      prefix: /usr
+      - spec: "pmix@5.0.2"
+        prefix: /usr
 
   rdma-core:
     buildable: false
     externals:
-    - spec: 'rdma-core@51.1'
-      prefix: /usr
+      - spec: "rdma-core@51.1"
+        prefix: /usr
 
   slurm:
     buildable: false
     externals:
-    - spec: 'slurm@24-05-0-2'
-      prefix: /usr
+      - spec: "slurm@24-05-0-2"
+        prefix: /usr
 
   xpmem:
     buildable: false
     externals:
-    - spec: 'xpmem@2.7.3'
-      prefix: /usr
+      - spec: "xpmem@2.7.3"
+        prefix: /usr
diff --git a/stacks/pinot-noir-gcc/packages_kuma-l40s.yaml b/stacks/pinot-noir-gcc/packages_kuma-l40s.yaml
index 836cd9c..353a577 100644
--- a/stacks/pinot-noir-gcc/packages_kuma-l40s.yaml
+++ b/stacks/pinot-noir-gcc/packages_kuma-l40s.yaml
@@ -1,3 +1,4 @@
+---
 packages:
   all:
     target: ["zen4"]
@@ -5,54 +6,54 @@ packages:
       - "~rocm"
 
       - spec: cuda_arch=89 target=zen4
-        when: '+cuda'
+        when: "+cuda"
 
-      - spec: '+cuda'
-        when: '%gcc'
+      - spec: "+cuda"
+        when: "%gcc"
 
   # ---------------------------------------------------------------------------
   hypre:
     require:
-    - spec: '+cuda cuda_arch=89 +unified-memory'
-      when: '%gcc'
+      - spec: "+cuda cuda_arch=89 +unified-memory"
+        when: "%gcc"
 
   kokkos:
     require:
-    - spec: '+cuda cuda_arch=89 +cuda_uvm +wrapper ~openmptarget'
-      when: '%gcc'
+      - spec: "+cuda cuda_arch=89 +cuda_uvm +wrapper ~openmptarget"
+        when: "%gcc"
 
   nvshmem:
     require:
-    - spec: '+cuda cuda_arch=89 +ibgda +nccl +ucx +mpi +pmix'
+      - spec: "+cuda cuda_arch=89 +ibgda +nccl +ucx +mpi +pmix"
 
   openmpi:
     require:
-      - spec: '+cuda cuda_arch=89 target=zen4'
+      - spec: "+cuda cuda_arch=89 target=zen4"
 
   petsc:
     require:
-    - spec: '+cuda cuda_arch=89'
-      when: '%gcc'
+      - spec: "+cuda cuda_arch=89"
+        when: "%gcc"
 
   py-tensorflow:
     require:
-    - spec: '+cuda cuda_arch=89 +nccl'
+      - spec: "+cuda cuda_arch=89 +nccl"
 
   py-torch:
     require:
-    - spec: '+cuda cuda_arch=89 +nccl +cudnn'
+      - spec: "+cuda cuda_arch=89 +nccl +cudnn"
 
   quantum-espresso:
     require:
-    - spec: '~cuda'
+      - spec: "~cuda"
 
   suite-sparse:
     require:
-    - spec: '+cuda'
+      - spec: "+cuda"
 
   ucx:
     require:
-      - spec: '+xpmem +cma +rdmacm +rc +ud +dc +verbs +ib_hw_tm +gdrcopy +cuda cuda_arch=89 ~rocm target=zen4'
+      - spec: "+xpmem +cma +rdmacm +rc +ud +dc +verbs +ib_hw_tm +gdrcopy +cuda cuda_arch=89 ~rocm target=zen4"
 
   # ---------------------------------------------------------------------------
   # Externals
@@ -60,23 +61,23 @@ packages:
   pmix:
     buildable: false
     externals:
-    - spec: 'pmix@5.0.2'
-      prefix: /usr
+      - spec: "pmix@5.0.2"
+        prefix: /usr
 
   rdma-core:
     buildable: false
     externals:
-    - spec: 'rdma-core@51.1'
-      prefix: /usr
+      - spec: "rdma-core@51.1"
+        prefix: /usr
 
   slurm:
     buildable: false
     externals:
-    - spec: 'slurm@24-05-0-2'
-      prefix: /usr
+      - spec: "slurm@24-05-0-2"
+        prefix: /usr
 
   xpmem:
     buildable: false
     externals:
-    - spec: 'xpmem@2.7.3'
-      prefix: /usr
+      - spec: "xpmem@2.7.3"
+        prefix: /usr
diff --git a/stacks/pinot-noir-gcc/packages_stack.yaml b/stacks/pinot-noir-gcc/packages_stack.yaml
index 65bebbf..be9b291 100644
--- a/stacks/pinot-noir-gcc/packages_stack.yaml
+++ b/stacks/pinot-noir-gcc/packages_stack.yaml
@@ -1,3 +1,4 @@
+---
 packages:
   all:
     providers:
@@ -18,17 +19,17 @@ packages:
   boost:
     prefer: ['~mpi']
     require: ['cxxstd=14', '+icu', '+python', '+numpy', '+atomic', '+chrono',
-    '+container', '+date_time', '+filesystem', '+graph', '+iostreams', '~json',
-    '+locale', '+log', '+math', '~pic', '+program_options', '+random', '+regex',
-    '+serialization', '+shared', '+signals', '~singlethreaded', '~stacktrace',
-    '+system', '~taggedlayout', '+test', '+thread', '+timer', '~type_erasure',
-    '~versionedlayout', '+wave', '+exception']
+              '+container', '+date_time', '+filesystem', '+graph', '+iostreams', '~json',
+              '+locale', '+log', '+math', '~pic', '+program_options', '+random', '+regex',
+              '+serialization', '+shared', '+signals', '~singlethreaded', '~stacktrace',
+              '+system', '~taggedlayout', '+test', '+thread', '+timer', '~type_erasure',
+              '~versionedlayout', '+wave', '+exception']
 
   cuda:
     require:
-    - spec: '@12.4.0'
-    - spec: '+allow-unsupported-compilers'
-      when: '%oneapi'
+      - spec: '@12.4.0'
+      - spec: '+allow-unsupported-compilers'
+        when: '%oneapi'
 
   fenics-dolfinx:
     require: ['+slepc']
@@ -38,42 +39,42 @@ packages:
 
   gnuplot:
     require:
-    - spec: '@5.4.10'
+      - spec: '@5.4.10'
 
   hdf5:
     prefer:
-    - spec: '+mpi'
-    - spec: '@1.14.3'
+      - spec: '+mpi'
+      - spec: '@1.14.3'
     require:
-    - spec: '+hl +threadsafe +szip +cxx +fortran'
-    - spec: '+ipo'
-      when: '%gcc'
+      - spec: '+hl +threadsafe +szip +cxx +fortran'
+      - spec: '+ipo'
+        when: '%gcc'
 
   hypre:
     prefer:
-    - spec: '@2.31.0 ~magma'
+      - spec: '@2.31.0 ~magma'
 
   intel-oneapi-mkl:
     prefer: ['~cluster']
 
   kokkos:
     prefer: ['+openmp', '+numactl', '+memkind', '+threads',
-    '+aggressive_vectorization']
+             '+aggressive_vectorization']
 
   kokkos-kernel:
     prefer: ['+openmp', '+threads']
 
   lammps:
     require: ['build_type=Release', '+asphere', '+atc', '+body', '+class2',
-    '+colloid', '+compress', '+coreshell', '+dipole', '+diffraction', '+extra-dump',
-    '+granular', '+h5md', '+kspace', '+latboltz', '+latte', '+lib', '+manybody',
-    '+mc', '+misc', '+molecule', '+mpi', '+mpiio', '+netcdf', '+peri', '~poems',
-    '+python', '+qeq', '+replica ', '+rigid', '+shock', '+ml-snap', '+srd',
-    '+voronoi', '+plumed', '+kokkos']
+              '+colloid', '+compress', '+coreshell', '+dipole', '+diffraction', '+extra-dump',
+              '+granular', '+h5md', '+kspace', '+latboltz', '+latte', '+lib', '+manybody',
+              '+mc', '+misc', '+molecule', '+mpi', '+mpiio', '+netcdf', '+peri', '~poems',
+              '+python', '+qeq', '+replica ', '+rigid', '+shock', '+ml-snap', '+srd',
+              '+voronoi', '+plumed', '+kokkos']
 
   libfabric:
     require:
-    - spec: 'fabrics=mlx,mrail,psm3,verbs,udp,tcp,sockets,shm'
+      - spec: 'fabrics=mlx,mrail,psm3,verbs,udp,tcp,sockets,shm'
 
   llvm:
     prefer: ['~clang']
@@ -98,17 +99,17 @@ packages:
 
   openmpi:
     require:
-    - spec: '@5.0.3 fabrics=ofi,ucx,verbs schedulers=slurm ~rsh +romio romio-filesystem=gpfs +internal-pmix ~memchecker'
+      - spec: '@5.0.3 fabrics=ofi,ucx,verbs schedulers=slurm ~rsh +romio romio-filesystem=gpfs +internal-pmix ~memchecker'
 
   petsc:
     require:
-    - spec: '+hypre +mumps +saws +scalapack +mpi +suite-sparse +kokkos'
+      - spec: '+hypre +mumps +saws +scalapack +mpi +suite-sparse +kokkos'
 
   python:
     require:
-    - spec: '+ssl +tkinter'
-    - spec: '+optimizations'
-      when: '%gcc'
+      - spec: '+ssl +tkinter'
+      - spec: '+optimizations'
+        when: '%gcc'
 
   py-tensorflow:
     require: ['+mpi', '+mkl']
@@ -121,14 +122,14 @@ packages:
 
   suite-sparse:
     require:
-    - spec: '+graphblas'
+      - spec: '+graphblas'
 
   tk:
     require: ['+xft', '+xss']
 
   ucx:
     require:
-    - spec: '+rdmacm +rc +dc +ud +cma +verbs'
+      - spec: '+rdmacm +rc +dc +ud +cma +verbs'
 
   # ----------------------------------------------------------------------------
   # System dependencies
@@ -136,26 +137,26 @@ packages:
   egl:
     buildable: false
     externals:
-    - spec: 'egl@21.3.4'
-      prefix: /usr
+      - spec: 'egl@21.3.4'
+        prefix: /usr
 
   pmix:
     buildable: false
     externals:
-    - spec: 'pmix@5.0.1'
-      prefix: /usr
+      - spec: 'pmix@5.0.1'
+        prefix: /usr
 
   rdma-core:
     buildable: false
     externals:
-    - spec: 'rdma-core@47.1'
-      prefix: /usr
+      - spec: 'rdma-core@47.1'
+        prefix: /usr
 
   slurm:
     buildable: false
     externals:
-    - spec: 'slurm@23-11-7-1'
-      prefix: /usr
+      - spec: 'slurm@23-11-7-1'
+        prefix: /usr
 
 
   # ----------------------------------------------------------------------------
@@ -165,70 +166,70 @@ packages:
     buildable: false
     permissions: {read: group, group: abaqus-soft}
     externals:
-    - {spec: abaqus@2019, prefix: /ssoft/spack/external/abaqus/2019}
-    - {spec: abaqus@2023, prefix: /ssoft/spack/external/abaqus/2023}
+      - {spec: abaqus@2019, prefix: /ssoft/spack/external/abaqus/2019}
+      - {spec: abaqus@2023, prefix: /ssoft/spack/external/abaqus/2023}
   ansys:
     buildable: false
     externals:
-    - {spec: ansys@2020R2, prefix: /ssoft/spack/external/ansys/2020R2/v202}
-    - {spec: ansys@2022R1, prefix: /ssoft/spack/external/ansys/2022R1/v221}
-    - {spec: ansys@2022R2, prefix: /ssoft/spack/external/ansys/2022R2/v222}
-    - {spec: ansys@2024R1, prefix: /ssoft/spack/external/ansys/2024R1/v241}
+      - {spec: ansys@2020R2, prefix: /ssoft/spack/external/ansys/2020R2/v202}
+      - {spec: ansys@2022R1, prefix: /ssoft/spack/external/ansys/2022R1/v221}
+      - {spec: ansys@2022R2, prefix: /ssoft/spack/external/ansys/2022R2/v222}
+      - {spec: ansys@2024R1, prefix: /ssoft/spack/external/ansys/2024R1/v241}
   cfdplusplus:
     buildable: false
     externals:
-    - {spec: cfdplusplus@16.1, prefix: /ssoft/spack/external/CFD++/2016.05}
-    - {spec: cfdplusplus@19.1, prefix: /ssoft/spack/external/CFD++/19.1}
+      - {spec: cfdplusplus@16.1, prefix: /ssoft/spack/external/CFD++/2016.05}
+      - {spec: cfdplusplus@19.1, prefix: /ssoft/spack/external/CFD++/19.1}
   comsol:
     buildable: false
     permissions: {read: group, group: comsol-soft}
     externals:
-    - {spec: comsol@5.6, prefix: /ssoft/spack/external/comsol/5.6/comsol56/multiphysics/}
-    - {spec: comsol@6.0, prefix: /ssoft/spack/external/comsol/6.0}
-    - {spec: comsol@6.2, prefix: /ssoft/spack/external/comsol/6.2}
+      - {spec: comsol@5.6, prefix: /ssoft/spack/external/comsol/5.6/comsol56/multiphysics/}
+      - {spec: comsol@6.0, prefix: /ssoft/spack/external/comsol/6.0}
+      - {spec: comsol@6.2, prefix: /ssoft/spack/external/comsol/6.2}
   fdtd:
     buildable: false
     permissions: {read: group, group: fdtd-soft}
     externals:
-    - {spec: fdtd@2020-R2-2387, prefix: /ssoft/spack/external/fdtd/8.24.2387}
-    - {spec: fdtd@2020-R2.4-2502, prefix: /ssoft/spack/external/fdtd/2020-R2.4-2502}
-    - {spec: fdtd@2021-R2.2-2806, prefix: /ssoft/spack/external/fdtd/2021-R2.2-2806}
-    - {spec: fdtd@2022-R1.1-2963, prefix: /ssoft/spack/external/fdtd/2022-R1.1-2963}
+      - {spec: fdtd@2020-R2-2387, prefix: /ssoft/spack/external/fdtd/8.24.2387}
+      - {spec: fdtd@2020-R2.4-2502, prefix: /ssoft/spack/external/fdtd/2020-R2.4-2502}
+      - {spec: fdtd@2021-R2.2-2806, prefix: /ssoft/spack/external/fdtd/2021-R2.2-2806}
+      - {spec: fdtd@2022-R1.1-2963, prefix: /ssoft/spack/external/fdtd/2022-R1.1-2963}
   gaussian:
     buildable: false
     externals:
-    - {spec: gaussian@g16-A.03, prefix: /ssoft/spack/external/gaussian/g16-A.03/avx2}
-    - {spec: gaussian@g16-C.01, prefix: /ssoft/spack/external/gaussian/g16-C.01/avx2}
+      - {spec: gaussian@g16-A.03, prefix: /ssoft/spack/external/gaussian/g16-A.03/avx2}
+      - {spec: gaussian@g16-C.01, prefix: /ssoft/spack/external/gaussian/g16-C.01/avx2}
   gurobi:
     buildable: false
     externals:
-    - {spec: gurobi@8.1.1, prefix: /ssoft/spack/external/gurobi/8.1.1}
-    - {spec: gurobi@9.5.2, prefix: /ssoft/spack/external/gurobi/9.5.2}
-    - {spec: gurobi@10.0.1, prefix: /ssoft/spack/external/gurobi/10.0.1}
+      - {spec: gurobi@8.1.1, prefix: /ssoft/spack/external/gurobi/8.1.1}
+      - {spec: gurobi@9.5.2, prefix: /ssoft/spack/external/gurobi/9.5.2}
+      - {spec: gurobi@10.0.1, prefix: /ssoft/spack/external/gurobi/10.0.1}
   maple:
     buildable: false
     externals:
-    - {spec: maple@2017, prefix: /ssoft/spack/external/Maple/2017}
+      - {spec: maple@2017, prefix: /ssoft/spack/external/Maple/2017}
   mathematica:
     buildable: false
     externals:
-    - {spec: mathematica@11.1.1, prefix: /ssoft/spack/external/Mathematica/11.1.1}
-    - {spec: mathematica@13.0, prefix: /ssoft/spack/external/Mathematica/13.0}
+      - {spec: mathematica@11.1.1, prefix: /ssoft/spack/external/Mathematica/11.1.1}
+      - {spec: mathematica@13.0, prefix: /ssoft/spack/external/Mathematica/13.0}
   matlab:
     buildable: false
     externals:
-    - {spec: matlab@R2018a, prefix: /ssoft/spack/external/MATLAB/R2018a}
-    - {spec: matlab@R2019b, prefix: /ssoft/spack/external/MATLAB/R2019b}
-    - {spec: matlab@R2024a, prefix: /ssoft/spack/external/MATLAB/R2024a}
+      - {spec: matlab@R2018a, prefix: /ssoft/spack/external/MATLAB/R2018a}
+      - {spec: matlab@R2019b, prefix: /ssoft/spack/external/MATLAB/R2019b}
+      - {spec: matlab@R2024a, prefix: /ssoft/spack/external/MATLAB/R2024a}
   molpro:
     buildable: false
     externals:
-    - {spec: molpro@2022.3.0, prefix: /ssoft/spack/external/molpro/2022.3.0/mpi}
+      - {spec: molpro@2022.3.0, prefix: /ssoft/spack/external/molpro/2022.3.0/mpi}
   smr:
     buildable: false
     externals:
-    - {spec: smr@2017.0, prefix: /ssoft/spack/external/SMR/2017.06}
+      - {spec: smr@2017.0, prefix: /ssoft/spack/external/SMR/2017.06}
   totalview:
     externals:
-    - {spec: totalview@2017.2.11, prefix: /ssoft/spack/external/toolworks/totalview.2017.2.11}
-    - {spec: totalview@2020.3.11, prefix: /ssoft/spack/external/toolworks/totalview.2020.3.11}
+      - {spec: totalview@2017.2.11, prefix: /ssoft/spack/external/toolworks/totalview.2017.2.11}
+      - {spec: totalview@2020.3.11, prefix: /ssoft/spack/external/toolworks/totalview.2020.3.11}
diff --git a/stacks/pinot-noir-gcc/spack.yaml b/stacks/pinot-noir-gcc/spack.yaml
index 05cae96..544be02 100644
--- a/stacks/pinot-noir-gcc/spack.yaml
+++ b/stacks/pinot-noir-gcc/spack.yaml
@@ -1,16 +1,17 @@
+---
 spack:
   include:
-      - compiler_definitions.yaml
+    - compiler_definitions.yaml
 
-      - packages_stack.yaml
-      - packages_env.yaml
+    - packages_stack.yaml
+    - packages_env.yaml
 
-      - modules_stack.yaml
-      - modules_env.yaml
+    - modules_stack.yaml
+    - modules_env.yaml
 
-      - definitions_env.yaml
+    - definitions_env.yaml
 
-      - config_stack.yaml
+    - config_stack.yaml
 
   definitions:
     # -------------------------------------------------------------------------
@@ -103,5 +104,3 @@ spack:
         - [$%compiler_gcc]
 
   view: false
-#    default:
-#      root: /stack/packages/
-- 
GitLab


From 2b0a195d3ae7d984626d7c82ca31ea271ad874d5 Mon Sep 17 00:00:00 2001
From: Nicolas Richart <networms@gmail.ch>
Date: Fri, 14 Mar 2025 22:26:26 +0100
Subject: [PATCH 2/7] Linting config

---
 .gitlab-ci.yml | 2 +-
 .yamllint.yml  | 5 +----
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ea83b51..4c97350 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,6 @@
 # yaml-language-server: $schema=gitlab-ci
 # yaml-language-server: $format.enable=false
-
+---
 stages:
   - linters
   - checkout
diff --git a/.yamllint.yml b/.yamllint.yml
index 45efdb5..75da2b7 100644
--- a/.yamllint.yml
+++ b/.yamllint.yml
@@ -2,7 +2,4 @@
 extends: default
 
 rules:
-  line-length:
-    ignore:
-      - .hadolint.yaml
-      - .gitlab-ci.yml
+  line-length: disable
-- 
GitLab


From 080e3a2b73a89ae61400e84a6c0dddae538b09f0 Mon Sep 17 00:00:00 2001
From: Nicolas Richart <networms@gmail.ch>
Date: Fri, 14 Mar 2025 22:26:45 +0100
Subject: [PATCH 3/7] Linting pinot-noir

---
 stacks/pinot-noir/concretizer_common.yaml   |  11 +-
 stacks/pinot-noir/config_common.yaml        |   5 +-
 stacks/pinot-noir/definitions_acc_cuda.yaml |   1 +
 stacks/pinot-noir/definitions_empty.yaml    |  13 +-
 stacks/pinot-noir/definitions_stack.yaml    |   8 +-
 stacks/pinot-noir/modules_acc_cuda.yaml     |   1 +
 stacks/pinot-noir/modules_common.yaml       |  57 +-
 stacks/pinot-noir/modules_empty.yaml        |   1 +
 stacks/pinot-noir/modules_kuma-h100.yaml    |   1 +
 stacks/pinot-noir/modules_kuma-l40s.yaml    |   1 +
 stacks/pinot-noir/packages_acc_cuda.yaml    |  97 ++--
 stacks/pinot-noir/packages_acc_none.yaml    |   3 +-
 stacks/pinot-noir/packages_common.yaml      |  14 +-
 stacks/pinot-noir/packages_empty.yaml       |   1 +
 stacks/pinot-noir/packages_izar.yaml        |   5 +-
 stacks/pinot-noir/packages_kuma-h100.yaml   |  29 +-
 stacks/pinot-noir/packages_kuma-l40s.yaml   |  29 +-
 stacks/pinot-noir/packages_stack.yaml       | 545 +++++++++++---------
 stacks/pinot-noir/spack.yaml                |  31 +-
 stacks/pinot-noir/spack_aocc.yaml           |  23 +-
 stacks/pinot-noir/spack_nvhpc.yaml          |  43 +-
 stacks/pinot-noir/spack_oneapi.yaml         |  45 +-
 22 files changed, 539 insertions(+), 425 deletions(-)

diff --git a/stacks/pinot-noir/concretizer_common.yaml b/stacks/pinot-noir/concretizer_common.yaml
index cb79471..fa4713c 100644
--- a/stacks/pinot-noir/concretizer_common.yaml
+++ b/stacks/pinot-noir/concretizer_common.yaml
@@ -1,10 +1,11 @@
+---
 concretizer:
   reuse: false
-    # roots: true
-    # include:
-    #   - "%gcc@11.2.1"
-    # from:
-    #   - type: local
+  # roots: true
+  # include:
+  #   - "%gcc@11.2.1"
+  # from:
+  #   - type: local
   unify: false
   duplicates:
     strategy: minimal
diff --git a/stacks/pinot-noir/config_common.yaml b/stacks/pinot-noir/config_common.yaml
index bac71f0..8e3ccaf 100644
--- a/stacks/pinot-noir/config_common.yaml
+++ b/stacks/pinot-noir/config_common.yaml
@@ -1,9 +1,10 @@
+---
 config:
-#  ccache: true
+  # ccache: true
   install_missing_compilers: false
 
   install_tree:
-    padded_length: False
+    padded_length: false
 
   build_stage:
     - $tempdir/$user/spack-stage
diff --git a/stacks/pinot-noir/definitions_acc_cuda.yaml b/stacks/pinot-noir/definitions_acc_cuda.yaml
index d417ff1..a7f4dcf 100644
--- a/stacks/pinot-noir/definitions_acc_cuda.yaml
+++ b/stacks/pinot-noir/definitions_acc_cuda.yaml
@@ -1,3 +1,4 @@
+---
 definitions:
   - cuda_system_codes: []
 
diff --git a/stacks/pinot-noir/definitions_empty.yaml b/stacks/pinot-noir/definitions_empty.yaml
index 5449b15..bee4928 100644
--- a/stacks/pinot-noir/definitions_empty.yaml
+++ b/stacks/pinot-noir/definitions_empty.yaml
@@ -1,9 +1,10 @@
+---
 definitions:
-    # -------------------------------------------------------------------------
-    # Empty to specialize in environments
-    # -------------------------------------------------------------------------
-    - cuda_system_codes: []
+  # -------------------------------------------------------------------------
+  # Empty to specialize in environments
+  # -------------------------------------------------------------------------
+  - cuda_system_codes: []
 
-    - cuda_serial_codes: []
+  - cuda_serial_codes: []
 
-    - cuda_mpi_codes: []
+  - cuda_mpi_codes: []
diff --git a/stacks/pinot-noir/definitions_stack.yaml b/stacks/pinot-noir/definitions_stack.yaml
index 765cfa9..d94c80f 100644
--- a/stacks/pinot-noir/definitions_stack.yaml
+++ b/stacks/pinot-noir/definitions_stack.yaml
@@ -1,3 +1,4 @@
+---
 definitions:
   # -------------------------------------------------------------------------
   # Core packages
@@ -27,7 +28,7 @@ definitions:
       - lmod
       - mpfr
       - neovim
-      #- ninja
+      # - ninja
       - papi
       - parallel
       - picard
@@ -167,7 +168,7 @@ definitions:
 
   - python_blas_codes:
       - boost ~~mpi
-      #- gmsh ~~mpi +hdf5 +cgns +eigen ~opencascade +openmp ~fltk ~med
+      # - gmsh ~~mpi +hdf5 +cgns +eigen ~opencascade +openmp ~fltk ~med
       - iq-tree
       - py-biopython
       - py-keras-preprocessing
@@ -191,7 +192,7 @@ definitions:
       - py-pymol ^hdf5~mpi
       - py-scikit-learn
       - py-scipy
-      #- py-statsmodels
+      # - py-statsmodels
       - py-theano
       - r
 
@@ -221,7 +222,6 @@ definitions:
       - scorep
 
   - nvhpc_mpi_codes: []
-      #- boost ++mpi
 
   - mpi_python_codes:
       - py-mpi4py
diff --git a/stacks/pinot-noir/modules_acc_cuda.yaml b/stacks/pinot-noir/modules_acc_cuda.yaml
index d098e12..baf4515 100644
--- a/stacks/pinot-noir/modules_acc_cuda.yaml
+++ b/stacks/pinot-noir/modules_acc_cuda.yaml
@@ -1,3 +1,4 @@
+---
 modules:
   default:
     lmod:
diff --git a/stacks/pinot-noir/modules_common.yaml b/stacks/pinot-noir/modules_common.yaml
index 135e4d5..f5d5454 100644
--- a/stacks/pinot-noir/modules_common.yaml
+++ b/stacks/pinot-noir/modules_common.yaml
@@ -1,3 +1,4 @@
+---
 modules:
   prefix_inspections:
     ./lib:
@@ -17,20 +18,20 @@ modules:
           set:
             "{name}_ROOT": "{prefix}"
         suffixes:
-          '+mpi': mpi
-          '+openmp': openmp
-          'threads=openmp': openmp
-          '^fftw+openmp': openmp
-          'hdf5=parallel': h5
-          '+cuda': cuda
-          '+double-gpu': double-gpu
-          '+plumed': plumed
-          '+unwind': unwind
-          '+debug': dbg
-          '+ilp64': int64
-          '+int64': int64
-          'version_suffix=jl': julia
-          'interface=tcl': tcl
+          "+mpi": mpi
+          "+openmp": openmp
+          "threads=openmp": openmp
+          "^fftw+openmp": openmp
+          "hdf5=parallel": h5
+          "+cuda": cuda
+          "+double-gpu": double-gpu
+          "+plumed": plumed
+          "+unwind": unwind
+          "+debug": dbg
+          "+ilp64": int64
+          "+int64": int64
+          "version_suffix=jl": julia
+          "interface=tcl": tcl
         autoload: run
 
       hide_implicits: true
@@ -47,23 +48,23 @@ modules:
             FC: "{prefix}/bin/gfortran"
             F90: "{prefix}/bin/gfortran"
 
-#     cuda:
-#        environment:
-#          append_path:
-#            JULIA_LOAD_PATH: ":/ssoft/spack/external/julia/syrah.v1/cuda"
+      # cuda:
+      #    environment:
+      #      append_path:
+      #        JULIA_LOAD_PATH: ":/ssoft/spack/external/julia/syrah.v1/cuda"
 
       openmpi:
         environment:
           set:
             SLURM_MPI_TYPE: pmix
-            OMPI_MCA_btl_openib_warn_default_gid_prefix: '0'
-#          append_path:
-#            JULIA_LOAD_PATH: ":/ssoft/spack/external/julia/syrah.v1/mpi"
+            OMPI_MCA_btl_openib_warn_default_gid_prefix: "0"
+      # append_path:
+      #   JULIA_LOAD_PATH: ":/ssoft/spack/external/julia/syrah.v1/mpi"
 
       openblas threads=pthreads:
         environment:
           set:
-            OPENBLAS_NUM_THREADS: '1'
+            OPENBLAS_NUM_THREADS: "1"
 
       hdf5~mpi+cxx:
         environment:
@@ -82,7 +83,7 @@ modules:
         environment:
           set:
             I_MPI_PMI_LIBRARY: /usr/lib64/libpmi2.so
-            I_MPI_EXTRA_FILESYSTEM: '0'
+            I_MPI_EXTRA_FILESYSTEM: "0"
             SLURM_MPI_TYPE: pmi2
 
       metis:
@@ -97,7 +98,7 @@ modules:
           set:
             PLUMED_KERNEL: "{prefix}/lib/libplumedKernel.so"
           unset:
-          - PLUMED_ROOT
+            - PLUMED_ROOT
 
       quantum-espresso:
         suffixes:
@@ -105,8 +106,8 @@ modules:
 
       scons:
         suffixes:
-          '^python@:2.99': py2
-          '^python@3:': py3
+          "^python@:2.99": py2
+          "^python@3:": py3
 
       ucx:
         environment:
@@ -127,11 +128,11 @@ modules:
       fdtd:
         environment:
           set:
-            ANSYSLMD_LICENSE_FILE: '1055@scitas-lic-srv.epfl.ch'
+            ANSYSLMD_LICENSE_FILE: "1055@scitas-lic-srv.epfl.ch"
             SLURM_MPI_TYPE: pmi2
 
       gaussian:
-         template: modules/group_restricted.lua
+        template: modules/group_restricted.lua
 
       spark:
         environment:
diff --git a/stacks/pinot-noir/modules_empty.yaml b/stacks/pinot-noir/modules_empty.yaml
index 21d0544..cabc79d 100644
--- a/stacks/pinot-noir/modules_empty.yaml
+++ b/stacks/pinot-noir/modules_empty.yaml
@@ -1,3 +1,4 @@
+---
 modules:
   default:
     lmod: {}
diff --git a/stacks/pinot-noir/modules_kuma-h100.yaml b/stacks/pinot-noir/modules_kuma-h100.yaml
index 8ddd771..4e874cb 100644
--- a/stacks/pinot-noir/modules_kuma-h100.yaml
+++ b/stacks/pinot-noir/modules_kuma-h100.yaml
@@ -1,3 +1,4 @@
+---
 modules:
   default:
     lmod:
diff --git a/stacks/pinot-noir/modules_kuma-l40s.yaml b/stacks/pinot-noir/modules_kuma-l40s.yaml
index 10a02d6..c6ca875 100644
--- a/stacks/pinot-noir/modules_kuma-l40s.yaml
+++ b/stacks/pinot-noir/modules_kuma-l40s.yaml
@@ -1,3 +1,4 @@
+---
 modules:
   default:
     lmod:
diff --git a/stacks/pinot-noir/packages_acc_cuda.yaml b/stacks/pinot-noir/packages_acc_cuda.yaml
index f4eccc4..054a26b 100644
--- a/stacks/pinot-noir/packages_acc_cuda.yaml
+++ b/stacks/pinot-noir/packages_acc_cuda.yaml
@@ -1,108 +1,117 @@
+---
 packages:
   all:
     require:
       - "~rocm"
 
       - spec: cuda_arch={cuda_arch}
-        when: '+cuda'
+        when: "+cuda"
 
-      - spec: '+cuda'
-        when: '%gcc'
+      - spec: "+cuda"
+        when: "%gcc"
 
-      - spec: '+cuda'
-        when: '%nvhpc'
+      - spec: "+cuda"
+        when: "%nvhpc"
 
   # ---------------------------------------------------------------------------
   amber:
-    require: ['+nccl']
+    require: ["+nccl"]
 
   charmpp:
-    require: ['+smp', '~cuda']
+    require: ["+smp", "~cuda"]
 
   cuda:
     prefer:
-    - spec: "^gcc-runtime@{gcc_version} target={target}"
-      when: "%gcc@{gcc_version}"
-    - spec: "%gcc@{gcc_version} target={target}"
-      when: "%gcc"
-    - spec: "target={target}"
-      when: "%nvhpc"
+      - spec: "^gcc-runtime@{gcc_version} target={target}"
+        when: "%gcc@{gcc_version}"
+      - spec: "%gcc@{gcc_version} target={target}"
+        when: "%gcc"
+      - spec: "target={target}"
+        when: "%nvhpc"
     require:
-    - spec: '@12.4.1'
-      when: '%gcc'
-    - spec: '@12.5.1'
-      when: '%nvhpc'
+      - spec: "@12.4.1"
+        when: "%gcc"
+      - spec: "@12.5.1"
+        when: "%nvhpc"
 
   hypre:
-    require: ['+cuda', 'cuda_arch={cuda_arch}', '+unified-memory']
+    require: ["+cuda", "cuda_arch={cuda_arch}", "+unified-memory"]
 
   hwloc:
-    require: ['+cuda', 'cuda_arch={cuda_arch}', '+nvml']
+    require: ["+cuda", "cuda_arch={cuda_arch}", "+nvml"]
 
   kokkos:
-    require: ['+cuda', '+cuda_lambda', 'cuda_arch={cuda_arch}', '+wrapper', '~openmptarget']
+    require:
+      [
+        "+cuda",
+        "+cuda_lambda",
+        "cuda_arch={cuda_arch}",
+        "+wrapper",
+        "~openmptarget",
+      ]
 
   kokkos-kernels:
-    require: ['+cuda', '+cublas', '+cusolver', '+cusparse', 'cuda_arch={cuda_arch}']
+    require:
+      ["+cuda", "+cublas", "+cusolver", "+cusparse", "cuda_arch={cuda_arch}"]
 
   libxc:
-    require: ['+cuda', 'cuda_arch={cuda_arch}']
+    require: ["+cuda", "cuda_arch={cuda_arch}"]
 
   namd:
-    require: ['+cuda', '+single_node_gpu', 'cuda_arch={cuda_arch}']
+    require: ["+cuda", "+single_node_gpu", "cuda_arch={cuda_arch}"]
 
   nvshmem:
     require:
-    - spec: '+cuda cuda_arch={cuda_arch} +nccl +ucx +mpi'
-    - spec: '+ibgda'
-      when: '@3:'
+      - spec: "+cuda cuda_arch={cuda_arch} +nccl +ucx +mpi"
+      - spec: "+ibgda"
+        when: "@3:"
 
   openmpi:
-    require: ['+cuda', 'cuda_arch={cuda_arch}']
+    require: ["+cuda", "cuda_arch={cuda_arch}"]
 
   papi:
-    require: ['+nvml', '+infiniband', '+cuda']
+    require: ["+nvml", "+infiniband", "+cuda"]
 
   paraview:
-    require: ['~cuda']
+    require: ["~cuda"]
 
   petsc:
-    require: ['+cuda', 'cuda_arch={cuda_arch}']
+    require: ["+cuda", "cuda_arch={cuda_arch}"]
 
   py-tensorflow:
     require:
-    - spec: '+cuda cuda_arch={cuda_arch} +nccl'
+      - spec: "+cuda cuda_arch={cuda_arch} +nccl"
 
   py-torch:
     require:
-    - spec: '+cuda cuda_arch={cuda_arch} +nccl +cudnn'
+      - spec: "+cuda cuda_arch={cuda_arch} +nccl +cudnn"
 
   python:
     require:
-    - spec: 'target={target}'
-      when: '%gcc@{gcc_version}'
+      - spec: "target={target}"
+        when: "%gcc@{gcc_version}"
 
   quantum-espresso:
     require:
-    - spec: '+cuda +mpigpu'
-      when: '%nvhpc'
+      - spec: "+cuda +mpigpu"
+        when: "%nvhpc"
 
   sirius:
-    require: ['+cuda', 'cuda_arch={cuda_arch}']
+    require: ["+cuda", "cuda_arch={cuda_arch}"]
 
   slepc:
-    require: ['+cuda', 'cuda_arch={cuda_arch}']
+    require: ["+cuda", "cuda_arch={cuda_arch}"]
 
   suite-sparse:
     require:
-    - spec: '+cuda'
-      when: '@7.3.1'
-    - spec: '~cuda'
-      when: '@7.2.1'
+      - spec: "+cuda"
+        when: "@7.3.1"
+      - spec: "~cuda"
+        when: "@7.2.1"
 
   ucc:
     require:
-    - spec: '+cuda cuda_arch={cuda_arch} +nccl'
+      - spec: "+cuda cuda_arch={cuda_arch} +nccl"
 
   ucx:
-    require: ['+gdrcopy', '+cuda', 'cuda_arch={cuda_arch}', '~rocm']
+    require: ["+gdrcopy", "+cuda", "cuda_arch={cuda_arch}", "~rocm"]
diff --git a/stacks/pinot-noir/packages_acc_none.yaml b/stacks/pinot-noir/packages_acc_none.yaml
index 0aa29d8..cb1f937 100644
--- a/stacks/pinot-noir/packages_acc_none.yaml
+++ b/stacks/pinot-noir/packages_acc_none.yaml
@@ -1,3 +1,4 @@
+---
 packages:
   all:
-    require: ['~cuda', '~rocm']
+    require: ["~cuda", "~rocm"]
diff --git a/stacks/pinot-noir/packages_common.yaml b/stacks/pinot-noir/packages_common.yaml
index df8edbc..72bd4d6 100644
--- a/stacks/pinot-noir/packages_common.yaml
+++ b/stacks/pinot-noir/packages_common.yaml
@@ -1,3 +1,4 @@
+---
 packages:
   all:
     compiler:
@@ -15,21 +16,20 @@ packages:
       uuid: [libuuid]
       zlib-api: [zlib-ng+compat]
 
-
   glibc:
-    prefer: ['%gcc@11.2.1']
+    prefer: ["%gcc@11.2.1"]
 
   jpeg:
-    require: ['libjpeg']
+    require: ["libjpeg"]
 
   pkgconfig:
-    require: ['pkgconf']
+    require: ["pkgconf"]
 
   uuid:
-    require: ['libuuid']
+    require: ["libuuid"]
 
   zlib-api:
-    require: ['zlib-ng']
+    require: ["zlib-ng"]
 
   zlib-ng:
-    require: ['+compat', 'build_system=autotools']
+    require: ["+compat", "build_system=autotools"]
diff --git a/stacks/pinot-noir/packages_empty.yaml b/stacks/pinot-noir/packages_empty.yaml
index c33c0b6..e45565d 100644
--- a/stacks/pinot-noir/packages_empty.yaml
+++ b/stacks/pinot-noir/packages_empty.yaml
@@ -1 +1,2 @@
+---
 packages: {}
diff --git a/stacks/pinot-noir/packages_izar.yaml b/stacks/pinot-noir/packages_izar.yaml
index fdd4f0b..6386f84 100644
--- a/stacks/pinot-noir/packages_izar.yaml
+++ b/stacks/pinot-noir/packages_izar.yaml
@@ -1,6 +1,7 @@
+---
 packages:
   cp2k:
-    require: ['+cuda', 'cuda_arch=70']
+    require: ["+cuda", "cuda_arch=70"]
 
   dbcsr:
-    require: ['+cuda', 'cuda_arch=70']
+    require: ["+cuda", "cuda_arch=70"]
diff --git a/stacks/pinot-noir/packages_kuma-h100.yaml b/stacks/pinot-noir/packages_kuma-h100.yaml
index 465a45a..4c98d47 100644
--- a/stacks/pinot-noir/packages_kuma-h100.yaml
+++ b/stacks/pinot-noir/packages_kuma-h100.yaml
@@ -1,15 +1,16 @@
+---
 packages:
   cp2k:
-    require: ['+cuda', 'cuda_arch=90']
+    require: ["+cuda", "cuda_arch=90"]
 
   dbcsr:
-    require: ['+cuda', 'cuda_arch=90']
+    require: ["+cuda", "cuda_arch=90"]
 
   openmpi:
-    require: ['fabrics=hcoll']
+    require: ["fabrics=hcoll"]
 
   ucx:
-    require: ['+xpmem']
+    require: ["+xpmem"]
 
   # ---------------------------------------------------------------------------
   # Externals
@@ -17,29 +18,29 @@ packages:
   hcoll:
     buildable: false
     externals:
-    - spec: 'hcoll@4.8.3227'
-      prefix: /opt/mellanox/hcoll
+      - spec: "hcoll@4.8.3227"
+        prefix: /opt/mellanox/hcoll
 
   pmix:
     buildable: false
     externals:
-    - spec: 'pmix@5.0.2'
-      prefix: /usr
+      - spec: "pmix@5.0.2"
+        prefix: /usr
 
   rdma-core:
     buildable: false
     externals:
-    - spec: 'rdma-core@51.1'
-      prefix: /usr
+      - spec: "rdma-core@51.1"
+        prefix: /usr
 
   slurm:
     buildable: false
     externals:
-    - spec: 'slurm@24-05-2-1'
-      prefix: /usr
+      - spec: "slurm@24-05-2-1"
+        prefix: /usr
 
   xpmem:
     buildable: false
     externals:
-    - spec: 'xpmem@2.7.3'
-      prefix: /usr
+      - spec: "xpmem@2.7.3"
+        prefix: /usr
diff --git a/stacks/pinot-noir/packages_kuma-l40s.yaml b/stacks/pinot-noir/packages_kuma-l40s.yaml
index 63ca5c9..1538702 100644
--- a/stacks/pinot-noir/packages_kuma-l40s.yaml
+++ b/stacks/pinot-noir/packages_kuma-l40s.yaml
@@ -1,16 +1,17 @@
+---
 packages:
   # ---------------------------------------------------------------------------
   cp2k:
-    require: ['~cuda']
+    require: ["~cuda"]
 
   dbcsr:
-    require: ['~cuda']
+    require: ["~cuda"]
 
   openmpi:
-    require: ['fabrics=hcoll']
+    require: ["fabrics=hcoll"]
 
   ucx:
-    require: ['+xpmem']
+    require: ["+xpmem"]
 
   # ---------------------------------------------------------------------------
   # Externals
@@ -18,29 +19,29 @@ packages:
   hcoll:
     buildable: false
     externals:
-    - spec: 'hcoll@4.8.3227'
-      prefix: /opt/mellanox/hcoll
+      - spec: "hcoll@4.8.3227"
+        prefix: /opt/mellanox/hcoll
 
   pmix:
     buildable: false
     externals:
-    - spec: 'pmix@5.0.2'
-      prefix: /usr
+      - spec: "pmix@5.0.2"
+        prefix: /usr
 
   rdma-core:
     buildable: false
     externals:
-    - spec: 'rdma-core@51.1'
-      prefix: /usr
+      - spec: "rdma-core@51.1"
+        prefix: /usr
 
   slurm:
     buildable: false
     externals:
-    - spec: 'slurm@24-05-2-1'
-      prefix: /usr
+      - spec: "slurm@24-05-2-1"
+        prefix: /usr
 
   xpmem:
     buildable: false
     externals:
-    - spec: 'xpmem@2.7.3'
-      prefix: /usr
+      - spec: "xpmem@2.7.3"
+        prefix: /usr
diff --git a/stacks/pinot-noir/packages_stack.yaml b/stacks/pinot-noir/packages_stack.yaml
index 7fda048..a2b8d19 100644
--- a/stacks/pinot-noir/packages_stack.yaml
+++ b/stacks/pinot-noir/packages_stack.yaml
@@ -1,406 +1,472 @@
+---
 packages:
   all:
     target: ["{target}"]
-    prefer: ['target={target}']
+    prefer: ["target={target}"]
 
     require:
-      - spec: '+ipo'
-        when: '%gcc'
+      - spec: "+ipo"
+        when: "%gcc"
 
   # ----------------------------------------------------------------------------
   # Requirements
   # ----------------------------------------------------------------------------
   adios2:
-    require: ['+kokkos', '+mgard', '~zfp']
+    require: ["+kokkos", "+mgard", "~zfp"]
 
   apr:
     # https://issues.apache.org/jira/browse/SVN-4813
-    require: ['@1.6.2']
+    require: ["@1.6.2"]
 
   arpack-ng:
-    prefer: ['+mpi']
+    prefer: ["+mpi"]
 
   boost:
-    prefer: ['~mpi']
+    prefer: ["~mpi"]
     require:
-    - 'cxxstd=14'
-    - '+icu'
-    - '+atomic'
-    - '+chrono'
-    - '+container'
-    - '+date_time'
-    - '+filesystem'
-    - '+graph'
-    - '+iostreams'
-    - '~json'
-    - '+locale'
-    - '+log'
-    - '+math'
-    - '~pic'
-    - '+program_options'
-    - '+random'
-    - '+regex'
-    - '+serialization'
-    - '+shared'
-    - '+signals'
-    - '~singlethreaded'
-    - '~stacktrace'
-    - '+system'
-    - '~taggedlayout'
-    - '+test'
-    - '+thread'
-    - '+timer'
-    - '~type_erasure'
-    - '~versionedlayout'
-    - '+wave'
-    - '+exception'
-
-    - spec: '+python +numpy'
-      when: '%gcc'
-
-    - spec: '+python +numpy'
-      when: '%oneapi'
-
-    - spec: '+python ~numpy'
-      when: '%nvhpc'
+      - "cxxstd=14"
+      - "+icu"
+      - "+atomic"
+      - "+chrono"
+      - "+container"
+      - "+date_time"
+      - "+filesystem"
+      - "+graph"
+      - "+iostreams"
+      - "~json"
+      - "+locale"
+      - "+log"
+      - "+math"
+      - "~pic"
+      - "+program_options"
+      - "+random"
+      - "+regex"
+      - "+serialization"
+      - "+shared"
+      - "+signals"
+      - "~singlethreaded"
+      - "~stacktrace"
+      - "+system"
+      - "~taggedlayout"
+      - "+test"
+      - "+thread"
+      - "+timer"
+      - "~type_erasure"
+      - "~versionedlayout"
+      - "+wave"
+      - "+exception"
+
+      - spec: "+python +numpy"
+        when: "%gcc"
+
+      - spec: "+python +numpy"
+        when: "%oneapi"
+
+      - spec: "+python ~numpy"
+        when: "%nvhpc"
 
   cairo:
     # ~X avoids a dependency to python (only prefer due to gtkplus)
-    prefer: ['~X', '+svg']
-    require: ['+fc', '+ft', '+pdf', '+gobject']
+    prefer: ["~X", "+svg"]
+    require: ["+fc", "+ft", "+pdf", "+gobject"]
 
   cmake:
-    prefer: ['~ncurses', '^curl tls=mbedtls']
+    prefer: ["~ncurses", "^curl tls=mbedtls"]
 
   costa:
-    require: ['~apps']
+    require: ["~apps"]
 
   cp2k:
-    require: ['~ipo']
+    require: ["~ipo"]
 
   curl:
     require:
-    - '@8.7.1'
-    - '+nghttp2'
-    - '+libidn2'
-    - '+libssh2'
-    - one_of: ['tls=openssl', 'tls=mbedtls']
+      - "@8.7.1"
+      - "+nghttp2"
+      - "+libidn2"
+      - "+libssh2"
+      - one_of: ["tls=openssl", "tls=mbedtls"]
     prefer:
-    - 'tls=mbedtls'
+      - "tls=mbedtls"
 
   dbcsr:
-    require: ['smm=blas']
+    require: ["smm=blas"]
 
   emacs:
-    prefer: ['+tls', '+X', 'toolkit=athena']
+    prefer: ["+tls", "+X", "toolkit=athena"]
 
   expat:
-    prefer: ['libbsd']
+    prefer: ["libbsd"]
 
   fenics-dolfinx:
-    require: ['@0.8.0', '+slepc']
+    require: ["@0.8.0", "+slepc"]
 
   ffmpeg:
-    require: ['+libx264']
+    require: ["+libx264"]
 
   fftw:
-    prefer: ['+mpi', '+openmp']
+    prefer: ["+mpi", "+openmp"]
 
   gettext:
-    require: ['+libxml2', '+xz']
+    require: ["+libxml2", "+xz"]
 
   gnuplot:
-    require: ['@5.4.10', '+cairo']
+    require: ["@5.4.10", "+cairo"]
 
   hdf5:
     prefer:
-    - spec: '@1.14.3'
+      - spec: "@1.14.3"
     require:
-    - spec: '+hl +threadsafe +szip +cxx +fortran'
-    - spec: '+ipo'
-      when: '%gcc'
-    - spec: 'target={target}'
-      when: '%gcc@{gcc_version}'
-
+      - spec: "+hl +threadsafe +szip +cxx +fortran"
+      - spec: "+ipo"
+        when: "%gcc"
+      - spec: "target={target}"
+        when: "%gcc@{gcc_version}"
 
   hwloc:
     require: ["+libxml2", "+pci"]
 
   hypre:
     prefer:
-    - spec: '@2.31.0 ~magma'
+      - spec: "@2.31.0 ~magma"
 
   intel-oneapi-mkl:
-    prefer: ['~cluster']
+    prefer: ["~cluster"]
 
   ior:
-    require: ['+hdf5']
+    require: ["+hdf5"]
 
   julia:
-    require: ['@1.10.4']
+    require: ["@1.10.4"]
 
   kokkos:
-    require: ['+numactl', '+memkind', '+serial',
-              '+openmp', '~openmptarget',
-              '~threads', '~sycl',
-              '+aggressive_vectorization', '@4.3.01']
+    require:
+      [
+        "+numactl",
+        "+memkind",
+        "+serial",
+        "+openmp",
+        "~openmptarget",
+        "~threads",
+        "~sycl",
+        "+aggressive_vectorization",
+        "@4.3.01",
+      ]
 
   kokkos-kernels:
-    require: ['@4.3.01', '+openmp', '~threads', '~ipo']
+    require: ["@4.3.01", "+openmp", "~threads", "~ipo"]
 
   kokkos-nvcc-wrapper:
-    prefer: ['@4.3.01']
+    prefer: ["@4.3.01"]
 
   lammps:
-    require: ['@20230802.3',
-              'build_type=Release', '+asphere', '+atc', '+body', '+class2',
-              '+colloid', '+compress', '+coreshell', '+dipole', '+diffraction',
-              '+extra-dump', '+granular', '+h5md', '+kspace', '+latboltz',
-              '+lib', '+manybody', '+mc', '+misc', '+molecule',
-              '+mpi', '+netcdf', '+peri', '~poems', '+python', '+qeq',
-              '+replica ', '+rigid', '+shock', '+ml-snap', '+srd', '+voronoi',
-              '+plumed', '+kokkos']
+    require:
+      [
+        "@20230802.3",
+        "build_type=Release",
+        "+asphere",
+        "+atc",
+        "+body",
+        "+class2",
+        "+colloid",
+        "+compress",
+        "+coreshell",
+        "+dipole",
+        "+diffraction",
+        "+extra-dump",
+        "+granular",
+        "+h5md",
+        "+kspace",
+        "+latboltz",
+        "+lib",
+        "+manybody",
+        "+mc",
+        "+misc",
+        "+molecule",
+        "+mpi",
+        "+netcdf",
+        "+peri",
+        "~poems",
+        "+python",
+        "+qeq",
+        "+replica ",
+        "+rigid",
+        "+shock",
+        "+ml-snap",
+        "+srd",
+        "+voronoi",
+        "+plumed",
+        "+kokkos",
+      ]
 
   libfabric:
     require:
-    - spec: 'fabrics=mlx,mrail,psm3,verbs,udp,tcp,sockets,shm'
+      - spec: "fabrics=mlx,mrail,psm3,verbs,udp,tcp,sockets,shm"
 
   libffi:
-    require: ['@3.4.6']
+    require: ["@3.4.6"]
 
   libpressio:
-    require: ['~qoz', '~sz3']
+    require: ["~qoz", "~sz3"]
 
   libssh2:
-    prefer: ['crypto=openssl']
+    prefer: ["crypto=openssl"]
 
   libtiff:
-    require: ['build_system=cmake', '+pic', '+shared', '+jpeg']
+    require: ["build_system=cmake", "+pic", "+shared", "+jpeg"]
 
   libtool:
-    require: ['@2.4.6']
+    require: ["@2.4.6"]
 
   libxc:
-    require: ['build_system=cmake', '+shared']
+    require: ["build_system=cmake", "+shared"]
 
   libxcb:
-    require: ['+use_spack_interpreter']
+    require: ["+use_spack_interpreter"]
 
   libxkbcommon:
-    require: ['~wayland']
+    require: ["~wayland"]
 
   libxml2:
     # python depends on libxml2 this avoid cyclic dependency
-    require: ['~python']
+    require: ["~python"]
 
   likwid:
-    require: ['@5.3.0']
+    require: ["@5.3.0"]
 
   llvm:
     # avoid compiler in lmod module
-    prefer: ['~clang']
+    prefer: ["~clang"]
     require:
-    - spec: '~cuda'
-      when: '@15:'
+      - spec: "~cuda"
+        when: "@15:"
 
   m4:
-    require: ['+sigsegv']
+    require: ["+sigsegv"]
 
   magma:
     # https://groups.google.com/a/icl.utk.edu/g/magma-user/c/l2XWTKmuBH0
-    require: ['~ipo']
+    require: ["~ipo"]
 
   mbedtls:
-    prefer: ['@3.3.0', 'libs=shared,static']
+    prefer: ["@3.3.0", "libs=shared,static"]
 
   memkind:
-    require: ['%gcc']
+    require: ["%gcc"]
 
   mesa:
-    require: ['~llvm', '+opengl', '+opengles', '+osmesa']
+    require: ["~llvm", "+opengl", "+opengles", "+osmesa"]
 
   meson:
-    prefer: ['@1.2.1']
+    prefer: ["@1.2.1"]
 
   metis:
-    require: ['+real64']
+    require: ["+real64"]
 
   mgard:
-    require: ['~cuda']
+    require: ["~cuda"]
 
   mpfr:
-    require: ['@4.0.2']
+    require: ["@4.0.2"]
 
   mumps:
-    require: ['+openmp', '+metis', '+parmetis']
+    require: ["+openmp", "+metis", "+parmetis"]
 
   namd:
-    require: ['interface=tcl']
+    require: ["interface=tcl"]
 
   netcdf-c:
-    prefer: ['+mpi']
+    prefer: ["+mpi"]
 
   opari2:
-    require: ['%gcc']
+    require: ["%gcc"]
 
   openblas:
-    require: ['build_system=makefile']
-    prefer: ['threads=openmp', 'symbol_suffix=none', '~ilp64']
+    require: ["build_system=makefile"]
+    prefer: ["threads=openmp", "symbol_suffix=none", "~ilp64"]
 
   opencv:
-    prefer: ['+vtk', '+python3']
+    prefer: ["+vtk", "+python3"]
 
   openmpi:
-    require: ['@5.0.3',
-              'fabrics=ofi,ucc,ucx,verbs',
-              'schedulers=slurm',
-              '+romio', 'romio-filesystem=gpfs',
-              '+internal-pmix', '~rsh',
-              '~memchecker']
+    require:
+      [
+        "@5.0.3",
+        "fabrics=ofi,ucc,ucx,verbs",
+        "schedulers=slurm",
+        "+romio",
+        "romio-filesystem=gpfs",
+        "+internal-pmix",
+        "~rsh",
+        "~memchecker",
+      ]
 
   openssl:
-    prefer: ['+shared', 'certs=system', '~docs']
+    prefer: ["+shared", "certs=system", "~docs"]
 
   otf2:
-    require: ['%gcc']
+    require: ["%gcc"]
 
   pango:
-    prefer: ['~X']
+    prefer: ["~X"]
 
   papi:
     require:
-    - '+powercap'
-    - '+rapl'
-    - any_of: ['%gcc', '%oneapi']
-
+      - "+powercap"
+      - "+rapl"
+      - any_of: ["%gcc", "%oneapi"]
 
   petsc:
-    require: ['+hypre', '+mumps', '+saws', '+scalapack', '+mpi', '+hdf5',
-              '+suite-sparse', '+kokkos', '+openmp', '+superlu-dist']
+    require:
+      [
+        "+hypre",
+        "+mumps",
+        "+saws",
+        "+scalapack",
+        "+mpi",
+        "+hdf5",
+        "+suite-sparse",
+        "+kokkos",
+        "+openmp",
+        "+superlu-dist",
+      ]
 
   python:
     require:
-    - '@3.11.7'
-    - '+ssl'
-    - '+tkinter'
-    - '+crypt'
-    - '+bz2'
-    - '+pyexpat'
-    - '+libxml2'
-    - '+ctypes'
-    - '+uuid'
-    - '+sqlite3'
-    - spec: '+optimizations'
-      when: '%gcc'
+      - "@3.11.7"
+      - "+ssl"
+      - "+tkinter"
+      - "+crypt"
+      - "+bz2"
+      - "+pyexpat"
+      - "+libxml2"
+      - "+ctypes"
+      - "+uuid"
+      - "+sqlite3"
+      - spec: "+optimizations"
+        when: "%gcc"
     prefer:
-    - spec: '%gcc@{gcc_version}'
-      when: '%gcc'
+      - spec: "%gcc@{gcc_version}"
+        when: "%gcc"
 
   py-cppy:
-    require: ['@1.2.1']
+    require: ["@1.2.1"]
 
   py-cython:
     require:
-    - one_of: ['@0.29.36', '@3.0.8']
-    prefer: ['@3.0.8']
+      - one_of: ["@0.29.36", "@3.0.8"]
+    prefer: ["@3.0.8"]
 
   py-python-dateutil:
-    require: ['@2.8.2']
+    require: ["@2.8.2"]
 
   py-fenics-dolfinx:
-    require: ['@0.8.0']
+    require: ["@0.8.0"]
 
   py-horovod:
-    require: ['frameworks=pytorch,keras,tensorflow', 'controllers=mpi', 'tensor_ops=nccl']
+    require:
+      [
+        "frameworks=pytorch,keras,tensorflow",
+        "controllers=mpi",
+        "tensor_ops=nccl",
+      ]
 
   py-kiwisolver:
-    require: ['@1.4.5']
+    require: ["@1.4.5"]
 
   py-matplotlib:
-    require: ['@3.3.4']
+    require: ["@3.3.4"]
 
   py-mpmath:
-    require: ['@1.2.1']
+    require: ["@1.2.1"]
 
   py-numpy:
-    prefer: ['@1.26.4']
+    prefer: ["@1.26.4"]
 
   py-pandas:
-    prefer: ['@2.2.1']
+    prefer: ["@2.2.1"]
 
   py-pillow:
-    prefer: ['@9.5.0', '+jpeg']
+    prefer: ["@9.5.0", "+jpeg"]
 
   py-pysam:
-    prefer: ['@0.22.1']
+    prefer: ["@0.22.1"]
 
   # https://github.com/tensorflow/tensorflow/issues/63360#issuecomment-2142735122
   # MKL support seams not maintained
   py-tensorflow:
-    require: ['+mpi', '~mkl']
+    require: ["+mpi", "~mkl"]
 
   py-torch:
-    require: ['@2.3.1', '+mpi', '~valgrind']
+    require: ["@2.3.1", "+mpi", "~valgrind"]
 
   py-scipy:
-    require: ['@1.13.0']
+    require: ["@1.13.0"]
 
   py-setuptools:
-    require: ['@63.4.3']
+    require: ["@63.4.3"]
 
   py-virtualenv:
-    require: ['@20.24.5']
+    require: ["@20.24.5"]
 
   qt:
-    require: ['@5.15.2']
+    require: ["@5.15.2"]
 
   quantum-espresso:
-    require: ['+mpi', '+openmp', '~gipaw', '+scalapack', '+libxc', '~ipo']
-    prefer: ['hdf5=parallel']
+    require: ["+mpi", "+openmp", "~gipaw", "+scalapack", "+libxc", "~ipo"]
+    prefer: ["hdf5=parallel"]
 
   rust:
-    require: ['+dev']
+    require: ["+dev"]
 
   scotch:
-    prefer: ['~mpi']
-    require: ['build_system=cmake']
+    prefer: ["~mpi"]
+    require: ["build_system=cmake"]
 
   sirius:
-    prefer: ['+fortran', '~elpa', '+wannier90']
-    require: ['+openmp']
+    prefer: ["+fortran", "~elpa", "+wannier90"]
+    require: ["+openmp"]
 
   slepc:
     require:
-    - spec: '^arpack-ng +mpi'
+      - spec: "^arpack-ng +mpi"
 
   spades:
-    require: ['~ipo']
+    require: ["~ipo"]
 
   suite-sparse:
     require:
-      - '+graphblas'
-      - one_of: ['@7.3.1', '@7.2.1']
-    prefer: ['@7.3.1']
+      - "+graphblas"
+      - one_of: ["@7.3.1", "@7.2.1"]
+    prefer: ["@7.3.1"]
 
   superlu:
-    require: ['@5.3.0']
+    require: ["@5.3.0"]
 
   tk:
-    require: ['+xft', '+xss']
+    require: ["+xft", "+xss"]
 
   ucx:
-    require: ['@1.17.0',
-              '+rdmacm',
-              '+rc', '+dc', '+ud',
-              '+cma', '+dm',
-              '+verbs', '+mlx5_dv', '+ib_hw_tm']
+    require:
+      [
+        "@1.17.0",
+        "+rdmacm",
+        "+rc",
+        "+dc",
+        "+ud",
+        "+cma",
+        "+dm",
+        "+verbs",
+        "+mlx5_dv",
+        "+ib_hw_tm",
+      ]
 
   vtk:
     require:
-    - spec: '~python ++mpi +xdmf +ffmpeg'
+      - spec: "~python ++mpi +xdmf +ffmpeg"
 
   xmlto:
-    require: ['@0.0.29']
+    require: ["@0.0.29"]
 
   # ----------------------------------------------------------------------------
   # System dependencies
@@ -408,38 +474,38 @@ packages:
   egl:
     buildable: false
     externals:
-    - spec: 'egl@21.3.4'
-      prefix: /usr
+      - spec: "egl@21.3.4"
+        prefix: /usr
 
   ninja:
     buildable: false
     externals:
-    - spec: 'ninja@1.10.2'
-      prefix: /usr
+      - spec: "ninja@1.10.2"
+        prefix: /usr
 
   opengl:
     buildable: false
     externals:
-    - spec: 'opengl@4.6'
-      prefix: /usr
+      - spec: "opengl@4.6"
+        prefix: /usr
 
   pmix:
     buildable: false
     externals:
-    - spec: 'pmix@5.0.1'
-      prefix: /usr
+      - spec: "pmix@5.0.1"
+        prefix: /usr
 
   rdma-core:
     buildable: false
     externals:
-    - spec: 'rdma-core@47.1'
-      prefix: /usr
+      - spec: "rdma-core@47.1"
+        prefix: /usr
 
   slurm:
     buildable: false
     externals:
-    - spec: 'slurm@23-11-7-1'
-      prefix: /usr
+      - spec: "slurm@23-11-7-1"
+        prefix: /usr
 
   # ----------------------------------------------------------------------------
   # Externals
@@ -448,69 +514,82 @@ packages:
     buildable: false
     permissions: {read: group, group: abaqus-soft}
     externals:
-    - {spec: abaqus@2019, prefix: /ssoft/spack/external/abaqus/2019}
-    - {spec: abaqus@2023, prefix: /ssoft/spack/external/abaqus/2023}
+      - {spec: abaqus@2019, prefix: /ssoft/spack/external/abaqus/2019}
+      - {spec: abaqus@2023, prefix: /ssoft/spack/external/abaqus/2023}
   ansys:
     buildable: false
     externals:
-    - {spec: ansys@2020R2, prefix: /ssoft/spack/external/ansys/2020R2/v202}
-    - {spec: ansys@2022R1, prefix: /ssoft/spack/external/ansys/2022R1/v221}
-    - {spec: ansys@2022R2, prefix: /ssoft/spack/external/ansys/2022R2/v222}
-    - {spec: ansys@2024R1, prefix: /ssoft/spack/external/ansys/2024R1/v241}
-    - {spec: ansys@2024R2, prefix: /ssoft/spack/external/ansys/2024R2/v242}
-    - {spec: ansys@2025R1, prefix: /ssoft/spack/external/ansys/2025R1/v251}
+      - {spec: ansys@2020R2, prefix: /ssoft/spack/external/ansys/2020R2/v202}
+      - {spec: ansys@2022R1, prefix: /ssoft/spack/external/ansys/2022R1/v221}
+      - {spec: ansys@2022R2, prefix: /ssoft/spack/external/ansys/2022R2/v222}
+      - {spec: ansys@2024R1, prefix: /ssoft/spack/external/ansys/2024R1/v241}
+      - {spec: ansys@2024R2, prefix: /ssoft/spack/external/ansys/2024R2/v242}
+      - {spec: ansys@2025R1, prefix: /ssoft/spack/external/ansys/2025R1/v251}
   cfdplusplus:
     buildable: false
     externals:
-    - {spec: cfdplusplus@16.1, prefix: /ssoft/spack/external/CFD++/2016.05}
-    - {spec: cfdplusplus@19.1, prefix: /ssoft/spack/external/CFD++/19.1}
+      - {spec: cfdplusplus@16.1, prefix: /ssoft/spack/external/CFD++/2016.05}
+      - {spec: cfdplusplus@19.1, prefix: /ssoft/spack/external/CFD++/19.1}
   comsol:
     buildable: false
     permissions: {read: group, group: comsol-soft}
     externals:
-    - {spec: comsol@5.6, prefix: /ssoft/spack/external/comsol/5.6/comsol56/multiphysics/}
-    - {spec: comsol@6.0, prefix: /ssoft/spack/external/comsol/6.0}
-    - {spec: comsol@6.2, prefix: /ssoft/spack/external/comsol/6.2}
+      - spec: comsol@5.6,
+        prefix: /ssoft/spack/external/comsol/5.6/comsol56/multiphysics/
+      - {spec: comsol@6.0, prefix: /ssoft/spack/external/comsol/6.0}
+      - {spec: comsol@6.2, prefix: /ssoft/spack/external/comsol/6.2}
   fdtd:
     buildable: false
     permissions: {read: group, group: ansys-soft}
     externals:
-    - {spec: fdtd@2020-R2-2387, prefix: /ssoft/spack/external/fdtd/8.24.2387}
-    - {spec: fdtd@2020-R2.4-2502, prefix: /ssoft/spack/external/fdtd/2020-R2.4-2502}
-    - {spec: fdtd@2021-R2.2-2806, prefix: /ssoft/spack/external/fdtd/2021-R2.2-2806}
-    - {spec: fdtd@2022-R1.1-2963, prefix: /ssoft/spack/external/fdtd/2022-R1.1-2963}
-    - {spec: fdtd@2024-R2.3-3941, prefix: /ssoft/spack/external/fdtd/2024-R2.3-3941}
+      - spec: fdtd@2020-R2-2387,
+        prefix: /ssoft/spack/external/fdtd/8.24.2387
+      - spec: fdtd@2020-R2.4-2502,
+        prefix: /ssoft/spack/external/fdtd/2020-R2.4-2502
+      - spec: fdtd@2021-R2.2-2806,
+        prefix: /ssoft/spack/external/fdtd/2021-R2.2-2806
+      - spec: fdtd@2022-R1.1-2963,
+        prefix: /ssoft/spack/external/fdtd/2022-R1.1-2963
+      - spec: fdtd@2024-R2.3-3941,
+        prefix: /ssoft/spack/external/fdtd/2024-R2.3-3941
   gaussian:
     buildable: false
     externals:
-    - {spec: gaussian@g16-A.03, prefix: /ssoft/spack/external/gaussian/g16-A.03/avx2}
-    - {spec: gaussian@g16-C.01, prefix: /ssoft/spack/external/gaussian/g16-C.01/avx2}
+      - spec: gaussian@g16-A.03,
+        prefix: /ssoft/spack/external/gaussian/g16-A.03/avx2
+      - spec: gaussian@g16-C.01,
+        prefix: /ssoft/spack/external/gaussian/g16-C.01/avx2
   maple:
     buildable: false
     externals:
-    - {spec: maple@2017, prefix: /ssoft/spack/external/Maple/2017}
+      - {spec: maple@2017, prefix: /ssoft/spack/external/Maple/2017}
   mathematica:
     buildable: false
     externals:
-    - {spec: mathematica@11.1.1, prefix: /ssoft/spack/external/Mathematica/11.1.1}
-    - {spec: mathematica@13.0, prefix: /ssoft/spack/external/Mathematica/13.0}
+      - spec: mathematica@11.1.1,
+        prefix: /ssoft/spack/external/Mathematica/11.1.1
+      - spec: mathematica@13.0,
+        prefix: /ssoft/spack/external/Mathematica/13.0
   matlab:
     buildable: false
     externals:
-    - {spec: matlab@R2018a, prefix: /ssoft/spack/external/MATLAB/R2018a}
-    - {spec: matlab@R2019b, prefix: /ssoft/spack/external/MATLAB/R2019b}
-    - {spec: matlab@R2024a, prefix: /ssoft/spack/external/MATLAB/R2024a}
-    - {spec: matlab@R2024b, prefix: /ssoft/spack/external/MATLAB/R2024b}
+      - {spec: matlab@R2018a, prefix: /ssoft/spack/external/MATLAB/R2018a}
+      - {spec: matlab@R2019b, prefix: /ssoft/spack/external/MATLAB/R2019b}
+      - {spec: matlab@R2024a, prefix: /ssoft/spack/external/MATLAB/R2024a}
+      - {spec: matlab@R2024b, prefix: /ssoft/spack/external/MATLAB/R2024b}
   molpro:
     buildable: false
     externals:
-    - {spec: molpro@2022.3.0, prefix: /ssoft/spack/external/molpro/2022.3.0/mpi}
+      - spec: molpro@2022.3.0,
+        prefix: /ssoft/spack/external/molpro/2022.3.0/mpi
   smr:
     buildable: false
     externals:
-    - {spec: smr@2017.0, prefix: /ssoft/spack/external/SMR/2017.06}
+      - {spec: smr@2017.0, prefix: /ssoft/spack/external/SMR/2017.06}
   totalview:
     buildable: false
     externals:
-    - {spec: totalview@2017.2.11, prefix: /ssoft/spack/external/toolworks/totalview.2017.2.11}
-    - {spec: totalview@2020.3.11, prefix: /ssoft/spack/external/toolworks/totalview.2020.3.11}
+      - spec: totalview@2017.2.11,
+        prefix: /ssoft/spack/external/toolworks/totalview.2017.2.11
+      - spec: totalview@2020.3.11,
+        prefix: /ssoft/spack/external/toolworks/totalview.2020.3.11
diff --git a/stacks/pinot-noir/spack.yaml b/stacks/pinot-noir/spack.yaml
index 61e31e1..d240606 100644
--- a/stacks/pinot-noir/spack.yaml
+++ b/stacks/pinot-noir/spack.yaml
@@ -1,36 +1,37 @@
+---
 spack:
   include:
-      - compiler_definitions.yaml
+    - compiler_definitions.yaml
 
-      - packages_stack.yaml
-      - packages_accel.yaml
-      - packages_env.yaml
+    - packages_stack.yaml
+    - packages_accel.yaml
+    - packages_env.yaml
 
-      - modules_stack.yaml
-      - modules_env.yaml
-      - modules_accel.yaml
+    - modules_stack.yaml
+    - modules_env.yaml
+    - modules_accel.yaml
 
-      - definitions_stack.yaml
-      - definitions_accel.yaml
-      - definitions_env.yaml
+    - definitions_stack.yaml
+    - definitions_accel.yaml
+    - definitions_env.yaml
 
   modules:
     default:
       lmod:
-        hierarchy: ['mpi']
+        hierarchy: ["mpi"]
 
   packages:
     blas:
-      require: ['openblas']
+      require: ["openblas"]
 
     lapack:
-      require: ['openblas']
+      require: ["openblas"]
 
     mpi:
-      require: ['openmpi']
+      require: ["openmpi"]
 
     scalapack:
-      require: ['netlib-scalapack']
+      require: ["netlib-scalapack"]
 
   definitions:
     # -------------------------------------------------------------------------
diff --git a/stacks/pinot-noir/spack_aocc.yaml b/stacks/pinot-noir/spack_aocc.yaml
index b6e7276..c7693f9 100644
--- a/stacks/pinot-noir/spack_aocc.yaml
+++ b/stacks/pinot-noir/spack_aocc.yaml
@@ -1,18 +1,19 @@
+---
 spack:
   include:
-      - compiler_definitions.yaml
+    - compiler_definitions.yaml
 
-      - packages_stack.yaml
-      - packages_accel.yaml
-      - packages_env.yaml
+    - packages_stack.yaml
+    - packages_accel.yaml
+    - packages_env.yaml
 
-      - modules_stack.yaml
-      - modules_env.yaml
-      - modules_accel.yaml
+    - modules_stack.yaml
+    - modules_env.yaml
+    - modules_accel.yaml
 
-      - definitions_accel.yaml
-      - definitions_env.yaml
-      - definitions_stack.yaml
+    - definitions_accel.yaml
+    - definitions_env.yaml
+    - definitions_stack.yaml
 
   modules:
     default:
@@ -33,7 +34,7 @@ spack:
       require: ['amdscalapack']
 
     aocc:
-      require: ['@4.2.0', 'license-agreed=true'
+      require: ['@4.2.0', 'license-agreed=true',
                 '%gcc@11.2.1', 'target=x86_64_v3']
 
     icu4c:
diff --git a/stacks/pinot-noir/spack_nvhpc.yaml b/stacks/pinot-noir/spack_nvhpc.yaml
index 8f5e962..1be8d4b 100644
--- a/stacks/pinot-noir/spack_nvhpc.yaml
+++ b/stacks/pinot-noir/spack_nvhpc.yaml
@@ -1,18 +1,19 @@
+---
 spack:
   include:
-      - compiler_definitions.yaml
+    - compiler_definitions.yaml
 
-      - packages_stack.yaml
-      - packages_accel.yaml
-      - packages_env.yaml
+    - packages_stack.yaml
+    - packages_accel.yaml
+    - packages_env.yaml
 
-      - modules_stack.yaml
-      - modules_env.yaml
-      - modules_accel.yaml
+    - modules_stack.yaml
+    - modules_env.yaml
+    - modules_accel.yaml
 
-      - definitions_accel.yaml
-      - definitions_env.yaml
-      - definitions_stack.yaml
+    - definitions_accel.yaml
+    - definitions_env.yaml
+    - definitions_stack.yaml
 
   modules:
     default:
@@ -21,23 +22,31 @@ spack:
 
   packages:
     blas:
-      require: ['nvhpc +blas']
+      require: ["nvhpc +blas"]
 
     lapack:
-      require: ['nvhpc +lapack']
+      require: ["nvhpc +lapack"]
 
     mpi:
-      require: ['nvhpc +mpi']
+      require: ["nvhpc +mpi"]
 
     scalapack:
-      require: ['netlib-scalapack']
+      require: ["netlib-scalapack"]
 
     nvhpc:
-      require: ['@24.7', '+mpi', '+blas', '+lapack', 'default_cuda=12.5',
-                '%gcc@11.2.1', 'target=x86_64_v3']
+      require:
+        [
+          "@24.7",
+          "+mpi",
+          "+blas",
+          "+lapack",
+          "default_cuda=12.5",
+          "%gcc@11.2.1",
+          "target=x86_64_v3",
+        ]
 
     icu4c:
-      require: ['%gcc']
+      require: ["%gcc"]
 
   definitions:
     # -------------------------------------------------------------------------
diff --git a/stacks/pinot-noir/spack_oneapi.yaml b/stacks/pinot-noir/spack_oneapi.yaml
index 67f92a4..d1af93b 100644
--- a/stacks/pinot-noir/spack_oneapi.yaml
+++ b/stacks/pinot-noir/spack_oneapi.yaml
@@ -1,57 +1,58 @@
+---
 spack:
   include:
-      - compiler_definitions.yaml
+    - compiler_definitions.yaml
 
-      - packages_stack.yaml
-      - packages_accel.yaml
-      - packages_env.yaml
+    - packages_stack.yaml
+    - packages_accel.yaml
+    - packages_env.yaml
 
-      - modules_stack.yaml
-      - modules_env.yaml
-      - modules_accel.yaml
+    - modules_stack.yaml
+    - modules_env.yaml
+    - modules_accel.yaml
 
-      - definitions_accel.yaml
-      - definitions_env.yaml
-      - definitions_stack.yaml
+    - definitions_accel.yaml
+    - definitions_env.yaml
+    - definitions_stack.yaml
 
   modules:
     default:
       lmod:
-        hierarchy: ['mpi']
+        hierarchy: ["mpi"]
 
   packages:
     blas:
-      require: ['intel-oneapi-mkl']
+      require: ["intel-oneapi-mkl"]
 
     lapack:
-      require: ['intel-oneapi-mkl']
+      require: ["intel-oneapi-mkl"]
 
     mpi:
-      require: ['intel-oneapi-mpi']
+      require: ["intel-oneapi-mpi"]
 
     scalapack:
-      require: ['intel-oneapi-mkl +cluster']
+      require: ["intel-oneapi-mkl +cluster"]
 
     icu4c:
-      require: ['%gcc']
+      require: ["%gcc"]
 
     cuda:
       require:
-      - spec: '+allow-unsupported-compilers'
-        when: '%oneapi'
+        - spec: "+allow-unsupported-compilers"
+          when: "%oneapi"
 
     intel-oneapi-mkl:
       require:
-      - '%oneapi ^intel-oneapi-runtime target={target}'
+        - "%oneapi ^intel-oneapi-runtime target={target}"
 
     intel-oneapi-mpi:
-      require: ['%oneapi ^intel-oneapi-runtime target={target}']
+      require: ["%oneapi ^intel-oneapi-runtime target={target}"]
 
     intel-oneapi-tbb:
-      require: ['%oneapi ^intel-oneapi-runtime target={target}']
+      require: ["%oneapi ^intel-oneapi-runtime target={target}"]
 
     intel-oneapi-runtime:
-      require: ['%oneapi target={target} ^gcc-runtime target=x86_64_v3']
+      require: ["%oneapi target={target} ^gcc-runtime target=x86_64_v3"]
 
   definitions:
     # -------------------------------------------------------------------------
-- 
GitLab


From 12c4db3683bea3d33ceb18485ec93718d0f2bda8 Mon Sep 17 00:00:00 2001
From: Nicolas Richart <networms@gmail.ch>
Date: Fri, 14 Mar 2025 22:26:59 +0100
Subject: [PATCH 4/7] Changing linter for readability

---
 .gitlab-ci.yml | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4c97350..1a578b7 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -281,19 +281,31 @@ post_cleaning:
 cq:hadolint:
   <<: *code-climate
   script:
-    - hadolint --format codeclimate dockerfiles/**/Dockerfile | tee gl-codequality.json | jq -C .
+    # for gitlab
+    - hadolint --format codeclimate dockerfiles/**/Dockerfile > gl-codequality.json
+    # for the users
+    - hadolint --format tty dockerfiles/**/Dockerfile
 
 cq:shellcheck:
   <<: *code-climate
   script:
+    # for gitlab
     - |
       git ls-files . \
         | xargs -r -n1 file \
         | awk -F: '/shell script/{print $1}' \
-        | xargs -r -n1 shellcheck -f json \
-        | tee -a gl-codequality.json | jq -C .
+        | xargs -r -n1 shellcheck -f json > gl-codequality.json
+    # for the users
+    - |
+      git ls-files . \
+        | xargs -r -n1 file \
+        | awk -F: '/shell script/{print $1}' \
+        | xargs -r -n1 shellcheck -f tty
 
 cq:yamllint:
   <<: *code-climate
   script:
-    - yamllint_codeclimate --standalone | tee gl-codequality.json | jq -C .
+    # for gitlab
+    - yamllint_codeclimate --standalone > gl-codequality.json
+    # for the users
+    - yamllint -f colored .
-- 
GitLab


From d7f908d4578b0a9a7e98a3423adb4120d5e7de23 Mon Sep 17 00:00:00 2001
From: Nicolas Richart <networms@gmail.ch>
Date: Fri, 14 Mar 2025 22:56:50 +0100
Subject: [PATCH 5/7] Linting dockerfiles

---
 .hadolint.yaml                    | 6 +++++-
 dockerfiles/deploy/Dockerfile     | 2 +-
 dockerfiles/rhel9-kuma/Dockerfile | 2 +-
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/.hadolint.yaml b/.hadolint.yaml
index 440d70d..20a25c8 100644
--- a/.hadolint.yaml
+++ b/.hadolint.yaml
@@ -1,9 +1,13 @@
 ---
 failure-threshold: "style"             # name of threshold level (error | warning | info | style | ignore | none)
 format: "codeclimate"                  # Output format (tty | json | checkstyle | codeclimate | gitlab_codeclimate | gnu | codacy)
-ignored: ["DL3041"]                    # list of rules
+ignored:
+  - "DL3008"                           # Pin versions in apt get install. Instead of `apt-get install <package>` use `apt-get install <package>=<version>`
+  - "DL3033"                           # Specify version with `yum install -y <package>-<version>`.
+  - "DL3041"                           # Specify version with dnf install -y <package>-<version>
 no-color: false                        # true | false
 strict-labels: true                    # true | false
 trustedRegistries:
   - "registry.hpc.epfl.ch"             # registry or list of registries
+  - "registry.c4science.ch"
   - "docker.io"
diff --git a/dockerfiles/deploy/Dockerfile b/dockerfiles/deploy/Dockerfile
index b7efc92..c048d7b 100644
--- a/dockerfiles/deploy/Dockerfile
+++ b/dockerfiles/deploy/Dockerfile
@@ -1,5 +1,5 @@
 FROM debian:12-slim
 
-RUN apt -qq update && apt -qq -y install \
+RUN apt-get -qq update && apt-get -qq -y install --no-install-recommends \
     squashfuse fuse3 rsync \
     && rm -rf /var/lib/apt/lists/*
diff --git a/dockerfiles/rhel9-kuma/Dockerfile b/dockerfiles/rhel9-kuma/Dockerfile
index 995f774..4548bd6 100644
--- a/dockerfiles/rhel9-kuma/Dockerfile
+++ b/dockerfiles/rhel9-kuma/Dockerfile
@@ -26,7 +26,7 @@ RUN yum install -y --enablerepo=$APPSTREAM_REPO \
     python3 python3-pip python3-setuptools python3-boto3 \
     git subversion mercurial \
     ninja-build \
-    libglvnd-devel
+    libglvnd-devel \
     glibc-gconv-extra \
     libatomic \
     squashfs-tools \
-- 
GitLab


From 01a5cfeb8b990ad1e706042fd7ba484cd7ad43f1 Mon Sep 17 00:00:00 2001
From: Nicolas Richart <networms@gmail.ch>
Date: Fri, 14 Mar 2025 22:57:14 +0100
Subject: [PATCH 6/7] Helping debug concretization

---
 ci/concretize.sh | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/ci/concretize.sh b/ci/concretize.sh
index 16a329f..d1aba76 100755
--- a/ci/concretize.sh
+++ b/ci/concretize.sh
@@ -49,6 +49,10 @@ do
       -e ${full_environment} \
       config blame | tee config-${full_environment}-${stack}.log
 
+  if [ -e ${SPACK_SYSTEM_CONFIG_PATH}/spack.lock ]; then
+    cp ${SPACK_SYSTEM_CONFIG_PATH}/spack.lock spack-${full_environment}-${stack}-old.lock
+  fi
+
   ${STACK_LOCATION}/spack/bin/spack \
       --color always \
       -e ${full_environment} \
@@ -62,3 +66,19 @@ do
 
   cp ${SPACK_SYSTEM_CONFIG_PATH}/spack.lock spack-${full_environment}-${stack}.lock
 done
+
+curl -Ls https://github.com/josephburnett/jd/releases/download/v2.1.2/jd-amd64-linux -o jd
+chmod +x jd
+
+for name in ${compilers_names}
+do
+  if [ -e spack-${full_environment}-${stack}-old.lock ]; then
+    source ci/stack_env.sh ${name}
+    ./jd -set <(jq '.concrete_specs' spack-${full_environment}-${stack}-old.lock) <(jq '.concrete_specs' spack-${full_environment}-${stack}.lock) | egrep "^[+-]" | while read -r line
+    do
+      echo -n $line | sed 's/^\([+-]\).*/\1/'
+      echo -n " "
+      echo $line | sed 's/^[+-]//' | jq -r '"\(.name)@\(.version) %\(.compiler.name)@\(.compiler.version) arch=linux-\(.arch.platform_os)-\(if .arch.target|type == "string" then .arch.target else .arch.target.name end) -- \(.hash)"'
+    done
+  fi
+done
-- 
GitLab


From 196443339f2e2a29db6b039b1cf2fc717cd7f950 Mon Sep 17 00:00:00 2001
From: Nicolas Richart <networms@gmail.ch>
Date: Sat, 15 Mar 2025 00:01:48 +0100
Subject: [PATCH 7/7] more debug capabilities

---
 ci/debug/spack_lock_info.sh | 44 ++++++++++++++++++++++++++++++-------
 1 file changed, 36 insertions(+), 8 deletions(-)

diff --git a/ci/debug/spack_lock_info.sh b/ci/debug/spack_lock_info.sh
index da1df32..9b5e42e 100755
--- a/ci/debug/spack_lock_info.sh
+++ b/ci/debug/spack_lock_info.sh
@@ -69,15 +69,32 @@ get_name_dep(){
 }
 
 
+get_all_dependent(){
+    jq --arg h "$1" -c '.concrete_specs
+            | to_entries
+            | .[]
+            | select(.value.dependencies | length != 0)
+            | select(.value.dependencies[] | select(.hash | match($h)))
+            | {
+                name: .value.name,
+                key: .key,
+                version: .value.version,
+                compiler: (.value.compiler | "\(.version)"),
+                target: (.value.arch.target | if type == "object" then .name else . end)
+              }' $2
+}
+
+
 usage() {
     echo "-h [hash]"
     echo "-n [name]"
     echo "-f [file]"
 }
 
-OPTSTRING=":h:n:f:a"
+OPTSTRING=":h:n:f:a:d"
 
 all=0
+dependent=0
 hash=""
 name=""
 file=""
@@ -92,6 +109,9 @@ while getopts ${OPTSTRING} opt; do
     n)
         name=${OPTARG}
         ;;
+    d)
+        dependent=1
+        ;;
     a)
         all=1
         ;;
@@ -108,22 +128,30 @@ while getopts ${OPTSTRING} opt; do
   esac
 done
 
-if [ "x$file" == "x" ]
+if [ "x$file" = "x" ]
 then
     echo "No file specified"
     usage
     exit 1
 fi
 
-echo "name ($name), hash ($hash), file($file), all($all)"
+#echo "name ($name), hash ($hash), file($file), all($all)"
 
-if [ "x$hash" != "x" ]
+if [ $dependent -eq 1 ]
 then
-    if [ $all -eq 1 ]
+    if [ "x$hash" != "x" ]
+    then
+      get_all_dependent $hash $file
+    fi
+else
+    if [ "x$hash" != "x" ]
     then
-        get_all_dep $hash $file
-    else
-        get_hash_dep $hash $file
+        if [ $all -eq 1 ]
+        then
+            get_all_dep $hash $file
+        else
+            get_hash_dep $hash $file
+        fi
     fi
 fi
 
-- 
GitLab