From a4e838beb3b59d91ce4b93506947cb0d89586d6a Mon Sep 17 00:00:00 2001
From: Alan O'Cais <alan.ocais@cecam.org>
Date: Mon, 29 Jul 2024 13:43:19 +0200
Subject: [PATCH 01/52] Add Lmod wrapper for eessi_archdetect.sh

---
 init/lmod_eessi_archdetect_wrapper.sh | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 init/lmod_eessi_archdetect_wrapper.sh

diff --git a/init/lmod_eessi_archdetect_wrapper.sh b/init/lmod_eessi_archdetect_wrapper.sh
new file mode 100644
index 0000000000..a90ca28285
--- /dev/null
+++ b/init/lmod_eessi_archdetect_wrapper.sh
@@ -0,0 +1 @@
+export EESSI_ARCHDETECT_OPTIONS=$($(dirname $(readlink -f $BASH_SOURCE))/eessi_archdetect.sh -a cpupath)

From c9046186b992d5bf6d11e5d3854f1135662db1fd Mon Sep 17 00:00:00 2001
From: Alan O'Cais <alan.ocais@cecam.org>
Date: Mon, 29 Jul 2024 13:52:12 +0200
Subject: [PATCH 02/52] Add comment

---
 init/lmod_eessi_archdetect_wrapper.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/init/lmod_eessi_archdetect_wrapper.sh b/init/lmod_eessi_archdetect_wrapper.sh
index a90ca28285..c12452c71d 100644
--- a/init/lmod_eessi_archdetect_wrapper.sh
+++ b/init/lmod_eessi_archdetect_wrapper.sh
@@ -1 +1,2 @@
+# This can be leveraged by the source_sh() feature of Lmod
 export EESSI_ARCHDETECT_OPTIONS=$($(dirname $(readlink -f $BASH_SOURCE))/eessi_archdetect.sh -a cpupath)

From 92767a4421203df209084671931ce54c64718896 Mon Sep 17 00:00:00 2001
From: Richard Top <richard.topouchian@uib.no>
Date: Thu, 8 Aug 2024 08:08:40 +0000
Subject: [PATCH 03/52] {2023.06}[foss/2022b] h5py v3.8.0

---
 .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml
index d0f9f66b06..4e236656f5 100644
--- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml
+++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml
@@ -4,4 +4,5 @@ easyconfigs:
       options:
         # see https://github.com/easybuilders/easybuild-easyconfigs/pull/21136
         from-commit: d8076ebaf8cb915762adebf88d385cc672b350dc
-  - gnuplot-5.4.6-GCCcore-12.2.0.eb 
+  - gnuplot-5.4.6-GCCcore-12.2.0.eb
+  - h5py-3.8.0-foss-2022b.eb

From f9bbb59439fc811da28c690548f22046c99f1778 Mon Sep 17 00:00:00 2001
From: Alan O'Cais <alan.ocais@cecam.org>
Date: Thu, 8 Aug 2024 10:25:15 +0200
Subject: [PATCH 04/52] Make sure the new script is shipped

---
 install_scripts.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/install_scripts.sh b/install_scripts.sh
index ab06e47997..6f01818840 100755
--- a/install_scripts.sh
+++ b/install_scripts.sh
@@ -86,7 +86,7 @@ TOPDIR=$(dirname $(realpath $0))
 # Copy for init directory
 init_files=(
     bash eessi_archdetect.sh eessi_defaults eessi_environment_variables eessi_software_subdir_for_host.py
-    minimal_eessi_env README.md test.py
+    minimal_eessi_env README.md test.py lmod_eessi_archdetect_wrapper.sh
 )
 copy_files_by_list ${TOPDIR}/init ${INSTALL_PREFIX}/init "${init_files[@]}"
 

From 3cf558b03b83b8485fa28d42abbe7def64d3fdee Mon Sep 17 00:00:00 2001
From: Richard Top <richard.topouchian@uib.no>
Date: Fri, 9 Aug 2024 08:02:41 +0000
Subject: [PATCH 05/52] {2023.06}[foss/2022b] MDAnalysis v2.4.2

---
 .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml
index d0f9f66b06..bd928e3608 100644
--- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml
+++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml
@@ -4,4 +4,5 @@ easyconfigs:
       options:
         # see https://github.com/easybuilders/easybuild-easyconfigs/pull/21136
         from-commit: d8076ebaf8cb915762adebf88d385cc672b350dc
-  - gnuplot-5.4.6-GCCcore-12.2.0.eb 
+  - gnuplot-5.4.6-GCCcore-12.2.0.eb
+  - MDAnalysis-2.4.2-foss-2022b.eb 

From a10f8198703d84b912c4ac5859c4be6e9c486f8a Mon Sep 17 00:00:00 2001
From: Richard Top <richard.topouchian@uib.no>
Date: Fri, 9 Aug 2024 09:32:34 +0000
Subject: [PATCH 06/52] {2023.06}[GCCcore/12.3.0] orjson v3.9.15

---
 .../2023.06/eessi-2023.06-eb-4.9.2-2023a.yml                  | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml
index 0c08646cc8..e8fe8ab120 100644
--- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml
+++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml
@@ -41,3 +41,7 @@ easyconfigs:
         # see https://github.com/easybuilders/easybuild-easyconfigs/pull/21136
         from-commit: d8076ebaf8cb915762adebf88d385cc672b350dc
   - grpcio-1.57.0-GCCcore-12.3.0.eb
+  - orjson-3.9.15-GCCcore-12.3.0.eb:
+      options:
+        # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20880
+        from-commit: bc6e08f89759b8b70166de5bfcb5056b9db8ec90

From 19e1bd201b1a718d899a0407db9118e1874247d4 Mon Sep 17 00:00:00 2001
From: Kenneth Hoste <kenneth.hoste@ugent.be>
Date: Fri, 9 Aug 2024 15:05:22 +0200
Subject: [PATCH 07/52] {2023.06,a64fx}[foss/2023a] OpenFOAM 10, 11, v2312

---
 .../2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml
index 5521b92398..f38c06ea8b 100644
--- a/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml
+++ b/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml
@@ -4,3 +4,17 @@ easyconfigs:
   - SciPy-bundle-2023.07-gfbf-2023a.eb
   - ESPResSo-4.2.2-foss-2023a.eb
   - ParaView-5.11.2-foss-2023a.eb
+  - OpenFOAM-10-foss-2023a.eb:
+      options:
+        # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20958
+        from-commit: dbadb2074464d816740ee0e95595c2cb31b6338f
+  - OpenFOAM-11-foss-2023a.eb:
+      options:
+        # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20958
+        from-commit: dbadb2074464d816740ee0e95595c2cb31b6338f
+  - OpenFOAM-v2312-foss-2023a.eb:
+      options:
+        # https://github.com/easybuilders/easybuild-easyblocks/pull/3388
+        include-easyblocks-from-commit: c8256a36e7062bc09f5ce30552a9de9827054c9e
+        # https://github.com/easybuilders/easybuild-easyconfigs/pull/20841
+        from-commit: f0e91e6e430ebf902f7788ebb47f0203dee60649

From 4fd3d47b36a6d714344c52b80bcf1205afa958ab Mon Sep 17 00:00:00 2001
From: Pedro Santos Neves <10762799+Neves-P@users.noreply.github.com>
Date: Wed, 14 Aug 2024 17:15:45 +0200
Subject: [PATCH 08/52] Rebuild hatchling-1.18.0-GCCcore-12.3.0

---
 ...0814-eb-4.9.2-hatchling-1.18.0-updated-easyconfig.yml | 9 +++++++++
 1 file changed, 9 insertions(+)
 create mode 100644 easystacks/software.eessi.io/2023.06/rebuilds/20240814-eb-4.9.2-hatchling-1.18.0-updated-easyconfig.yml

diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240814-eb-4.9.2-hatchling-1.18.0-updated-easyconfig.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240814-eb-4.9.2-hatchling-1.18.0-updated-easyconfig.yml
new file mode 100644
index 0000000000..7ab02420ca
--- /dev/null
+++ b/easystacks/software.eessi.io/2023.06/rebuilds/20240814-eb-4.9.2-hatchling-1.18.0-updated-easyconfig.yml
@@ -0,0 +1,9 @@
+# 2024.08.14
+# hatchling-1.18.0 rebuild to account for easyconfig changed upstream 
+# see https://gitlab.com/eessi/support/-/issues/85 and
+# https://github.com/easybuilders/easybuild-easyconfigs/pull/20389
+easyconfigs:
+  - hatchling-1.18.0-GCCcore-12.3.0.eb:
+      options:
+        # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20389
+        from-commit: 9580c0d67d6dd97b160b768a839bfcba6d5b21b9

From 53d5e26d84f57ecc425f2c6a441a793df83930a7 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Wed, 14 Aug 2024 17:32:29 +0200
Subject: [PATCH 09/52] Fix test_suite not being able to retrieve memory on
 systems that use cgroups v2

---
 test_suite.sh | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/test_suite.sh b/test_suite.sh
index 6e73fbd87c..cfaec82026 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -157,7 +157,13 @@ if [[ "${cpuinfo}" =~ (Core\(s\) per socket:[^0-9]*([0-9]+)) ]]; then
 else
     fatal_error "Failed to get the number of cores per socket for the current test hardware with lscpu."
 fi
-cgroup_mem_bytes=$(cat /hostsys/fs/cgroup/memory/slurm/uid_${UID}/job_${SLURM_JOB_ID}/memory.limit_in_bytes)
+cgroup_v1_mem_limit="/sys/fs/cgroup/memory/$(</proc/self/cpuset)/memory.limit_in_bytes"
+cgroup_v2_mem_limit="/sys/fs/cgroup/$(</proc/self/cpuset)/memory.max"
+if [ -f "$cgroup_v1_mem_limit" ]; then
+    cgroup_mem_bytes=$(cat "$cgroup_v1_mem_limit")
+else [ -f "$cgroup_v2_mem_limit" ]; then
+    cgroup_mem_bytes=$(cat "$cgroup_v2_mem_limit")
+fi
 if [[ $? -eq 0 ]]; then
     # Convert to MiB
     cgroup_mem_mib=$((cgroup_mem_bytes/(1024*1024)))

From 936edb89723ff48392b5b710b9e5b9cd847beb9e Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Wed, 14 Aug 2024 17:36:40 +0200
Subject: [PATCH 10/52] Add something in order to prove that this fixes the
 test

---
 .../2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml                | 1 +
 1 file changed, 1 insertion(+)

diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml
index 9d13d5eb3a..695c4a06d9 100644
--- a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml
+++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml
@@ -22,3 +22,4 @@ easyconfigs:
         # see https://github.com/easybuilders/easybuild-easyconfigs/pull/21136
         from-commit: d8076ebaf8cb915762adebf88d385cc672b350dc
   - MODFLOW-6.4.4-foss-2023a.eb
+  - gnuplot-5.4.8-GCCcore-12.3.0.eb

From 4e52f59e1e90988a3721e8bf768a1f8d60182c6b Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Wed, 14 Aug 2024 17:41:19 +0200
Subject: [PATCH 11/52] Fix if-else syntax

---
 test_suite.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test_suite.sh b/test_suite.sh
index cfaec82026..5749e5c995 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -161,7 +161,7 @@ cgroup_v1_mem_limit="/sys/fs/cgroup/memory/$(</proc/self/cpuset)/memory.limit_in
 cgroup_v2_mem_limit="/sys/fs/cgroup/$(</proc/self/cpuset)/memory.max"
 if [ -f "$cgroup_v1_mem_limit" ]; then
     cgroup_mem_bytes=$(cat "$cgroup_v1_mem_limit")
-else [ -f "$cgroup_v2_mem_limit" ]; then
+else
     cgroup_mem_bytes=$(cat "$cgroup_v2_mem_limit")
 fi
 if [[ $? -eq 0 ]]; then

From 33a8a87550f88a6da7ffe06888f6f72d2ad72f02 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Thu, 15 Aug 2024 11:46:03 +0200
Subject: [PATCH 12/52] If max is specified in the cgroupsv2 file, just get the
 system memory

---
 test_suite.sh | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/test_suite.sh b/test_suite.sh
index 5749e5c995..02b22361db 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -163,10 +163,19 @@ if [ -f "$cgroup_v1_mem_limit" ]; then
     cgroup_mem_bytes=$(cat "$cgroup_v1_mem_limit")
 else
     cgroup_mem_bytes=$(cat "$cgroup_v2_mem_limit")
+    if [ "$cgroup_mem_bytes" = 'max' ]; then
+        # In cgroupsv2, the memory.max file may contain 'max', meaning the group can use the full system memory
+        # Here, we get the system memory from /proc/meminfo. Units are supposedly always in kb, but lets match them too
+        cgroup_mem_kilobytes=$(grep -oP 'MemTotal:\s+\K\d+(?=\s+kB)' /proc/meminfo)
+        if [[ $? -eq 0 ]] || [[ -z "$cgroup_mem_kilobytes" ]]; then
+            fatal_error "Failed to get memory limit from /proc/meminfo"
+        fi
+        cgroup_mem_bytes=$(("$cgroup_mem_kilobytes"*1024))
+    fi
 fi
 if [[ $? -eq 0 ]]; then
     # Convert to MiB
-    cgroup_mem_mib=$((cgroup_mem_bytes/(1024*1024)))
+    cgroup_mem_mib=$(("$cgroup_mem_bytes"/(1024*1024)))
 else
     fatal_error "Failed to get the memory limit in bytes from the current cgroup"
 fi

From e69642c1e450bc4a6803c83fedc2a15843a398e2 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Thu, 15 Aug 2024 13:05:00 +0200
Subject: [PATCH 13/52] Correct bash test

---
 test_suite.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test_suite.sh b/test_suite.sh
index 02b22361db..2986e37f7b 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -167,7 +167,7 @@ else
         # In cgroupsv2, the memory.max file may contain 'max', meaning the group can use the full system memory
         # Here, we get the system memory from /proc/meminfo. Units are supposedly always in kb, but lets match them too
         cgroup_mem_kilobytes=$(grep -oP 'MemTotal:\s+\K\d+(?=\s+kB)' /proc/meminfo)
-        if [[ $? -eq 0 ]] || [[ -z "$cgroup_mem_kilobytes" ]]; then
+        if [[ $? -ne 0 ]]; then || [[ -z "$cgroup_mem_kilobytes" ]]; then
             fatal_error "Failed to get memory limit from /proc/meminfo"
         fi
         cgroup_mem_bytes=$(("$cgroup_mem_kilobytes"*1024))

From b1902b34161455ef0f77880346ef14aa033bb6f9 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Thu, 15 Aug 2024 13:07:50 +0200
Subject: [PATCH 14/52] Fix syntax error

---
 test_suite.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test_suite.sh b/test_suite.sh
index 2986e37f7b..847f5ea18e 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -167,7 +167,7 @@ else
         # In cgroupsv2, the memory.max file may contain 'max', meaning the group can use the full system memory
         # Here, we get the system memory from /proc/meminfo. Units are supposedly always in kb, but lets match them too
         cgroup_mem_kilobytes=$(grep -oP 'MemTotal:\s+\K\d+(?=\s+kB)' /proc/meminfo)
-        if [[ $? -ne 0 ]]; then || [[ -z "$cgroup_mem_kilobytes" ]]; then
+        if [[ $? -ne 0 ]] || [[ -z "$cgroup_mem_kilobytes" ]]; then
             fatal_error "Failed to get memory limit from /proc/meminfo"
         fi
         cgroup_mem_bytes=$(("$cgroup_mem_kilobytes"*1024))

From 8f39d6f9814f3e3ad30c46277b62a4cf17168f2f Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Thu, 15 Aug 2024 14:42:39 +0200
Subject: [PATCH 15/52] Exclude TensorFlow test for now, it seems to get stuck.
 First lets make sure we run the test suite on the zen4 prefix...

---
 test_suite.sh | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/test_suite.sh b/test_suite.sh
index 847f5ea18e..7598d9fad0 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -209,7 +209,9 @@ fi
 
 # Run all tests
 echo "Running tests: reframe ${REFRAME_ARGS} --run"
-reframe ${REFRAME_ARGS} --run
+# Exclude TensorFlow, which got stuck on https://github.com/EESSI/software-layer/pull/670#issuecomment-2291084266
+# Let's first make sure the test suite runs on the zen4 prefix...
+reframe ${REFRAME_ARGS} --run --exclude TensorFlow
 reframe_exit_code=$?
 if [[ ${reframe_exit_code} -eq 0 ]]; then
     echo_green "ReFrame runtime ran succesfully with command: reframe ${REFRAME_ARGS} --run."

From 932d9a09e17b8798948522d0d3a1e0dfc4c0bc13 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Thu, 15 Aug 2024 15:06:05 +0200
Subject: [PATCH 16/52] Add some debugging echo's

---
 test_suite.sh | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/test_suite.sh b/test_suite.sh
index 7598d9fad0..69002bdbb5 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -74,8 +74,13 @@ fi
 TMPDIR=$(mktemp -d)
 
 echo ">> Setting up environment..."
-module --force purge
+# No module command, we are outside of the compat layer
+# module --force purge
+echo "Current EESSI env:"
+env | grep "EESSI"
+echo "EESSI_SOFTWARE_SUBDIR_OVERRIDE before calling eessi_software_subdir.py: $EESSI_SOFTWARE_SUBDIR_OVERRIDE"
 export EESSI_SOFTWARE_SUBDIR_OVERRIDE=$(python3 $TOPDIR/eessi_software_subdir.py $DETECTION_PARAMETERS)
+echo "EESSI_SOFTWARE_SUBDIR_OVERRIDE after calling eessi_software_subdir.py: $EESSI_SOFTWARE_SUBDIR_OVERRIDE"
 
 source $TOPDIR/init/bash
 

From 8eb07102bf23d9f3dee1146cafb947823b4144f5 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Thu, 15 Aug 2024 15:31:10 +0200
Subject: [PATCH 17/52] Make sure test suite only lists. Also make sure python
 script that uses archspec is called in a shell that has EESSI initialized, so
 that archspec is available

---
 test_suite.sh | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/test_suite.sh b/test_suite.sh
index 69002bdbb5..6845b230ef 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -79,7 +79,9 @@ echo ">> Setting up environment..."
 echo "Current EESSI env:"
 env | grep "EESSI"
 echo "EESSI_SOFTWARE_SUBDIR_OVERRIDE before calling eessi_software_subdir.py: $EESSI_SOFTWARE_SUBDIR_OVERRIDE"
-export EESSI_SOFTWARE_SUBDIR_OVERRIDE=$(python3 $TOPDIR/eessi_software_subdir.py $DETECTION_PARAMETERS)
+# For this call to be succesful, it needs to be able to import archspec (which is part of EESSI)
+# Thus, we execute it in a subshell where EESSI is already initialized (a bit like a bootstrap)
+export EESSI_SOFTWARE_SUBDIR_OVERRIDE=$(source $TOPDIR/init/bash; python3 $TOPDIR/eessi_software_subdir.py $DETECTION_PARAMETERS)
 echo "EESSI_SOFTWARE_SUBDIR_OVERRIDE after calling eessi_software_subdir.py: $EESSI_SOFTWARE_SUBDIR_OVERRIDE"
 
 source $TOPDIR/init/bash
@@ -216,7 +218,9 @@ fi
 echo "Running tests: reframe ${REFRAME_ARGS} --run"
 # Exclude TensorFlow, which got stuck on https://github.com/EESSI/software-layer/pull/670#issuecomment-2291084266
 # Let's first make sure the test suite runs on the zen4 prefix...
-reframe ${REFRAME_ARGS} --run --exclude TensorFlow
+#reframe ${REFRAME_ARGS} --run --exclude TensorFlow
+# Limit to listing again, until we are sure we run with zen4...
+reframe ${REFRAME_ARGS} --list
 reframe_exit_code=$?
 if [[ ${reframe_exit_code} -eq 0 ]]; then
     echo_green "ReFrame runtime ran succesfully with command: reframe ${REFRAME_ARGS} --run."

From 584c637f2ae87f39bf0d50a0ae8c639d7c1a370b Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Thu, 15 Aug 2024 16:14:57 +0200
Subject: [PATCH 18/52] Redirect the output from sourcing the init script, as
 that is not what we want to capture in the environment variable

---
 test_suite.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test_suite.sh b/test_suite.sh
index 6845b230ef..86a347931b 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -81,7 +81,7 @@ env | grep "EESSI"
 echo "EESSI_SOFTWARE_SUBDIR_OVERRIDE before calling eessi_software_subdir.py: $EESSI_SOFTWARE_SUBDIR_OVERRIDE"
 # For this call to be succesful, it needs to be able to import archspec (which is part of EESSI)
 # Thus, we execute it in a subshell where EESSI is already initialized (a bit like a bootstrap)
-export EESSI_SOFTWARE_SUBDIR_OVERRIDE=$(source $TOPDIR/init/bash; python3 $TOPDIR/eessi_software_subdir.py $DETECTION_PARAMETERS)
+export EESSI_SOFTWARE_SUBDIR_OVERRIDE=$(source $TOPDIR/init/bash > /dev/null 2>&1; python3 $TOPDIR/eessi_software_subdir.py $DETECTION_PARAMETERS)
 echo "EESSI_SOFTWARE_SUBDIR_OVERRIDE after calling eessi_software_subdir.py: $EESSI_SOFTWARE_SUBDIR_OVERRIDE"
 
 source $TOPDIR/init/bash

From faddc7515ea0cf28ab8bd65da15980eb61c6786c Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Thu, 15 Aug 2024 17:13:17 +0200
Subject: [PATCH 19/52] Remove debugging echo's

---
 test_suite.sh | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/test_suite.sh b/test_suite.sh
index 86a347931b..f9f6d0113a 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -74,10 +74,6 @@ fi
 TMPDIR=$(mktemp -d)
 
 echo ">> Setting up environment..."
-# No module command, we are outside of the compat layer
-# module --force purge
-echo "Current EESSI env:"
-env | grep "EESSI"
 echo "EESSI_SOFTWARE_SUBDIR_OVERRIDE before calling eessi_software_subdir.py: $EESSI_SOFTWARE_SUBDIR_OVERRIDE"
 # For this call to be succesful, it needs to be able to import archspec (which is part of EESSI)
 # Thus, we execute it in a subshell where EESSI is already initialized (a bit like a bootstrap)

From bd24ca8e613aa9f511c64f2689aff037e06cc2b6 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Thu, 15 Aug 2024 17:24:59 +0200
Subject: [PATCH 20/52] Remove gnuplot and add ReFrame

---
 .../2023.06/zen4/eessi-2023.06-eb-4.9.2-001-system.yml          | 2 ++
 .../2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml               | 1 -
 2 files changed, 2 insertions(+), 1 deletion(-)
 create mode 100644 easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-001-system.yml

diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-001-system.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-001-system.yml
new file mode 100644
index 0000000000..f1fde247d0
--- /dev/null
+++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-001-system.yml
@@ -0,0 +1,2 @@
+easyconfigs:
+    - ReFrame-4.3.3.eb
diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml
index 695c4a06d9..9d13d5eb3a 100644
--- a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml
+++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml
@@ -22,4 +22,3 @@ easyconfigs:
         # see https://github.com/easybuilders/easybuild-easyconfigs/pull/21136
         from-commit: d8076ebaf8cb915762adebf88d385cc672b350dc
   - MODFLOW-6.4.4-foss-2023a.eb
-  - gnuplot-5.4.8-GCCcore-12.3.0.eb

From 9845452b29054d5739d2e89abafaa5e1ea4410c2 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Thu, 15 Aug 2024 18:32:40 +0200
Subject: [PATCH 21/52] Debugging issue with loading ReFrame

---
 test_suite.sh | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/test_suite.sh b/test_suite.sh
index f9f6d0113a..fe08f7bf83 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -82,6 +82,14 @@ echo "EESSI_SOFTWARE_SUBDIR_OVERRIDE after calling eessi_software_subdir.py: $EE
 
 source $TOPDIR/init/bash
 
+# DEBUGGING
+echo "Checking if ReFrame module exists:"
+ls -al /cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/modules/all/ReFrame/4.3.3.lua
+echo "Checking available ReFrame modules"
+module av ReFrame
+echo "Checking if we can load ReFrame when ignoring the cache"
+module load --ignore_cache ReFrame
+
 # Load the ReFrame module
 # Currently, we load the default version. Maybe we should somehow make this configurable in the future?
 module load ReFrame

From 64d483acade68942dd3408972c15ce0a9d0326c2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jurij=20Pe=C4=8Dar?= <jurij.pecar@embl.de>
Date: Fri, 16 Aug 2024 10:25:23 +0200
Subject: [PATCH 22/52] {2023.06}[GCC/13.2.0] STAR 2.7.11b

---
 .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml   | 1 +
 1 file changed, 1 insertion(+)

diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
index 883483f5d2..dcac6cfc72 100644
--- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
+++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
@@ -15,3 +15,4 @@ easyconfigs:
       options:
         # see https://github.com/easybuilders/easybuild-easyconfigs/pull/21034
         from-commit: 76e7fc6657bab64bfbec826540a3a8f0040258f2
+  - STAR-2.7.11b-GCC-13.2.0.eb

From 56b9be9ad48d41a2555fdeb3c072297ebcd29dc2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jurij=20Pe=C4=8Dar?= <jurij.pecar@embl.de>
Date: Fri, 16 Aug 2024 11:12:42 +0200
Subject: [PATCH 23/52] {2023.06}[GCC/13.2.0] STAR 2.7.11b try 2

---
 .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml  | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
index dcac6cfc72..5011c9d49c 100644
--- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
+++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
@@ -15,4 +15,6 @@ easyconfigs:
       options:
         # see https://github.com/easybuilders/easybuild-easyconfigs/pull/21034
         from-commit: 76e7fc6657bab64bfbec826540a3a8f0040258f2
+  - xxd-9.1.0307-GCCcore-13.2.0.eb
+  - HTSlib-1.19.1-GCC-13.2.0.eb
   - STAR-2.7.11b-GCC-13.2.0.eb

From d189d21dd4b3e3f052a4850814e0b6602d67236f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20R=C3=B6blitz?= <trz42@users.noreply.github.com>
Date: Fri, 16 Aug 2024 12:52:49 +0200
Subject: [PATCH 24/52] Remove redundant easyconfigs
 easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml

Co-authored-by: Kenneth Hoste <kenneth.hoste@ugent.be>
---
 .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml  | 2 --
 1 file changed, 2 deletions(-)

diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
index 5011c9d49c..dcac6cfc72 100644
--- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
+++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
@@ -15,6 +15,4 @@ easyconfigs:
       options:
         # see https://github.com/easybuilders/easybuild-easyconfigs/pull/21034
         from-commit: 76e7fc6657bab64bfbec826540a3a8f0040258f2
-  - xxd-9.1.0307-GCCcore-13.2.0.eb
-  - HTSlib-1.19.1-GCC-13.2.0.eb
   - STAR-2.7.11b-GCC-13.2.0.eb

From 3ce0c951b2308b66f04989aeab64ddd69415d313 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jure=20Pe=C4=8Dar?= <jurij.pecar@embl.de>
Date: Fri, 16 Aug 2024 22:47:35 +0200
Subject: [PATCH 25/52] Update eessi-2023.06-eb-4.9.2-2023b.yml

fetch updated .eb file to remove hardcoded -mavx2
---
 .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
index dcac6cfc72..8479061de7 100644
--- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
+++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
@@ -16,3 +16,6 @@ easyconfigs:
         # see https://github.com/easybuilders/easybuild-easyconfigs/pull/21034
         from-commit: 76e7fc6657bab64bfbec826540a3a8f0040258f2
   - STAR-2.7.11b-GCC-13.2.0.eb
+      options:
+        #see https://github.com/easybuilders/easybuild-easyconfigs/pull/21200
+        from-commit: cd8b1ce595195f132125d9b25a98a9efe702c72a

From 95f9d6d7dc33375ff961030aa340d1c8d7a8d13c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20R=C3=B6blitz?= <trz42@users.noreply.github.com>
Date: Mon, 19 Aug 2024 09:20:38 +0200
Subject: [PATCH 26/52] Add missing ':' at end of line

---
 .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
index 8479061de7..edfd491cce 100644
--- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
+++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
@@ -15,7 +15,7 @@ easyconfigs:
       options:
         # see https://github.com/easybuilders/easybuild-easyconfigs/pull/21034
         from-commit: 76e7fc6657bab64bfbec826540a3a8f0040258f2
-  - STAR-2.7.11b-GCC-13.2.0.eb
+  - STAR-2.7.11b-GCC-13.2.0.eb:
       options:
         #see https://github.com/easybuilders/easybuild-easyconfigs/pull/21200
         from-commit: cd8b1ce595195f132125d9b25a98a9efe702c72a

From 56251cdfccbcefc977abd9633138d6d05f4f24cf Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Mon, 19 Aug 2024 09:58:53 +0200
Subject: [PATCH 27/52] Add ReFrame for Zen4

---
 .../2023.06/zen4/eessi-2023.06-eb-4.9.2-001-system.yml          | 2 ++
 1 file changed, 2 insertions(+)
 create mode 100644 easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-001-system.yml

diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-001-system.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-001-system.yml
new file mode 100644
index 0000000000..f1fde247d0
--- /dev/null
+++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-001-system.yml
@@ -0,0 +1,2 @@
+easyconfigs:
+    - ReFrame-4.3.3.eb

From ab203e2e125857e824d9e9e7c38a6db350276cac Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Mon, 19 Aug 2024 11:35:21 +0200
Subject: [PATCH 28/52] Add gnuplot back in as test build

---
 .../2023.06/eessi-2023.06-eb-4.9.2-2023a.yml  |  1 +
 .../map_software_to_test.py                   | 57 +++++++++++++++++++
 .../eessi_test_mapping/software_to_tests.yml  |  7 +++
 tests/eessi_test_mapping/test_mapping.yml     |  5 ++
 4 files changed, 70 insertions(+)
 create mode 100644 tests/eessi_test_mapping/map_software_to_test.py
 create mode 100644 tests/eessi_test_mapping/software_to_tests.yml
 create mode 100644 tests/eessi_test_mapping/test_mapping.yml

diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml
index e8fe8ab120..e13b1935fd 100644
--- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml
+++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml
@@ -45,3 +45,4 @@ easyconfigs:
       options:
         # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20880
         from-commit: bc6e08f89759b8b70166de5bfcb5056b9db8ec90
+  - gnuplot-5.4.8-GCCcore-12.3.0.eb
diff --git a/tests/eessi_test_mapping/map_software_to_test.py b/tests/eessi_test_mapping/map_software_to_test.py
new file mode 100644
index 0000000000..464921b11b
--- /dev/null
+++ b/tests/eessi_test_mapping/map_software_to_test.py
@@ -0,0 +1,57 @@
+import yaml
+import re
+import os
+
+def load_mappings(file_path):
+    """Load the YAML mappings from a file."""
+    with open(file_path, 'r') as file:
+        config = yaml.safe_load(file)
+    return config['mappings']
+
+def get_tests_for_software(software_name, mappings):
+    """Get the list of tests for a given software name based on the first matching regex pattern."""
+    
+    # Iterate over patterns in the order they appear in the YAML file
+    for pattern, tests in mappings.items():
+        if re.match(pattern, software_name):
+            return tests
+    
+    # If no matches are found, return the default tests if they exist
+    if 'default_tests' in mappings:
+        return mappings['default_tests']
+
+    return []
+
+def read_software_names(file_path):
+    """Read software names from the module_files.list.txt file."""
+    with open(file_path, 'r') as file:
+        software_names = [line.strip() for line in file if line.strip()]
+    return software_names
+
+if __name__ == "__main__":
+    mappings = load_mappings("software_to_tests.yml")
+    
+    # Check if the file module_files.list.txt exists
+    module_file_path = "module_files.list.txt"
+    if not os.path.exists(module_file_path):
+        print(f"Error: {module_file_path} does not exist.")
+    else:
+        software_names = read_software_names(module_file_path)
+        tests_to_run = []
+        for software_name in software_names:
+            additional_tests = get_tests_for_software(software_name, mappings)
+            for test in additional_tests:
+                if test not in tests_to_run:
+                    tests_to_run.append(test)
+            
+            if additional_tests:
+                print(f"Software: {software_name} -> Tests: {additional_tests}")
+            else:
+                print(f"Software: {software_name} -> No tests found")
+
+            if tests_to_run:
+                arg_string = " ".join([f"-n {test_name}" for test_name in tests_to_run])
+                print(f"Full list of tests to run: {tests_to_run}")
+                print(f"Argument string: {arg_string}")
+            else:
+                print(f"Full list of tests to run: No tests found")
diff --git a/tests/eessi_test_mapping/software_to_tests.yml b/tests/eessi_test_mapping/software_to_tests.yml
new file mode 100644
index 0000000000..2c6d504fae
--- /dev/null
+++ b/tests/eessi_test_mapping/software_to_tests.yml
@@ -0,0 +1,7 @@
+mappings:
+  gnuplot/*:
+    - EESSI_ESPRESSO
+  Perl/*:
+    - EESSI_GROMACS
+  default_tests:
+    - EESSI_OSU
diff --git a/tests/eessi_test_mapping/test_mapping.yml b/tests/eessi_test_mapping/test_mapping.yml
new file mode 100644
index 0000000000..603e765a64
--- /dev/null
+++ b/tests/eessi_test_mapping/test_mapping.yml
@@ -0,0 +1,5 @@
+mappings:
+  - gnuplot/*:
+    - EESSI_ESPRESSO
+  - Perl/*:
+    - EESSI_GROMACS

From cd0c6c6dedfebd884a6df96f0b5f796dbf029789 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Mon, 19 Aug 2024 11:36:10 +0200
Subject: [PATCH 29/52] Remove ReFrame, as that was now build and deployed in a
 separate PR

---
 .../2023.06/zen4/eessi-2023.06-eb-4.9.2-001-system.yml          | 2 --
 1 file changed, 2 deletions(-)
 delete mode 100644 easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-001-system.yml

diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-001-system.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-001-system.yml
deleted file mode 100644
index f1fde247d0..0000000000
--- a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-001-system.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-easyconfigs:
-    - ReFrame-4.3.3.eb

From 6f63aea97a24571d87f1017d1af2b5decad6203a Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Mon, 19 Aug 2024 11:48:17 +0200
Subject: [PATCH 30/52] These files belonged to another PR...

---
 .../map_software_to_test.py                   | 57 -------------------
 .../eessi_test_mapping/software_to_tests.yml  |  7 ---
 tests/eessi_test_mapping/test_mapping.yml     |  5 --
 3 files changed, 69 deletions(-)
 delete mode 100644 tests/eessi_test_mapping/map_software_to_test.py
 delete mode 100644 tests/eessi_test_mapping/software_to_tests.yml
 delete mode 100644 tests/eessi_test_mapping/test_mapping.yml

diff --git a/tests/eessi_test_mapping/map_software_to_test.py b/tests/eessi_test_mapping/map_software_to_test.py
deleted file mode 100644
index 464921b11b..0000000000
--- a/tests/eessi_test_mapping/map_software_to_test.py
+++ /dev/null
@@ -1,57 +0,0 @@
-import yaml
-import re
-import os
-
-def load_mappings(file_path):
-    """Load the YAML mappings from a file."""
-    with open(file_path, 'r') as file:
-        config = yaml.safe_load(file)
-    return config['mappings']
-
-def get_tests_for_software(software_name, mappings):
-    """Get the list of tests for a given software name based on the first matching regex pattern."""
-    
-    # Iterate over patterns in the order they appear in the YAML file
-    for pattern, tests in mappings.items():
-        if re.match(pattern, software_name):
-            return tests
-    
-    # If no matches are found, return the default tests if they exist
-    if 'default_tests' in mappings:
-        return mappings['default_tests']
-
-    return []
-
-def read_software_names(file_path):
-    """Read software names from the module_files.list.txt file."""
-    with open(file_path, 'r') as file:
-        software_names = [line.strip() for line in file if line.strip()]
-    return software_names
-
-if __name__ == "__main__":
-    mappings = load_mappings("software_to_tests.yml")
-    
-    # Check if the file module_files.list.txt exists
-    module_file_path = "module_files.list.txt"
-    if not os.path.exists(module_file_path):
-        print(f"Error: {module_file_path} does not exist.")
-    else:
-        software_names = read_software_names(module_file_path)
-        tests_to_run = []
-        for software_name in software_names:
-            additional_tests = get_tests_for_software(software_name, mappings)
-            for test in additional_tests:
-                if test not in tests_to_run:
-                    tests_to_run.append(test)
-            
-            if additional_tests:
-                print(f"Software: {software_name} -> Tests: {additional_tests}")
-            else:
-                print(f"Software: {software_name} -> No tests found")
-
-            if tests_to_run:
-                arg_string = " ".join([f"-n {test_name}" for test_name in tests_to_run])
-                print(f"Full list of tests to run: {tests_to_run}")
-                print(f"Argument string: {arg_string}")
-            else:
-                print(f"Full list of tests to run: No tests found")
diff --git a/tests/eessi_test_mapping/software_to_tests.yml b/tests/eessi_test_mapping/software_to_tests.yml
deleted file mode 100644
index 2c6d504fae..0000000000
--- a/tests/eessi_test_mapping/software_to_tests.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-mappings:
-  gnuplot/*:
-    - EESSI_ESPRESSO
-  Perl/*:
-    - EESSI_GROMACS
-  default_tests:
-    - EESSI_OSU
diff --git a/tests/eessi_test_mapping/test_mapping.yml b/tests/eessi_test_mapping/test_mapping.yml
deleted file mode 100644
index 603e765a64..0000000000
--- a/tests/eessi_test_mapping/test_mapping.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-mappings:
-  - gnuplot/*:
-    - EESSI_ESPRESSO
-  - Perl/*:
-    - EESSI_GROMACS

From 4fef822203aed8a523771d14afa7b7d51f628c72 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Mon, 19 Aug 2024 12:05:34 +0200
Subject: [PATCH 31/52] Remove gnuplot again, it was already present...

---
 .../2023.06/eessi-2023.06-eb-4.9.2-2023a.yml                | 1 -
 test_suite.sh                                               | 6 +-----
 2 files changed, 1 insertion(+), 6 deletions(-)

diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml
index e13b1935fd..e8fe8ab120 100644
--- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml
+++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml
@@ -45,4 +45,3 @@ easyconfigs:
       options:
         # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20880
         from-commit: bc6e08f89759b8b70166de5bfcb5056b9db8ec90
-  - gnuplot-5.4.8-GCCcore-12.3.0.eb
diff --git a/test_suite.sh b/test_suite.sh
index fe08f7bf83..fffd4a7888 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -220,11 +220,7 @@ fi
 
 # Run all tests
 echo "Running tests: reframe ${REFRAME_ARGS} --run"
-# Exclude TensorFlow, which got stuck on https://github.com/EESSI/software-layer/pull/670#issuecomment-2291084266
-# Let's first make sure the test suite runs on the zen4 prefix...
-#reframe ${REFRAME_ARGS} --run --exclude TensorFlow
-# Limit to listing again, until we are sure we run with zen4...
-reframe ${REFRAME_ARGS} --list
+reframe ${REFRAME_ARGS} --run
 reframe_exit_code=$?
 if [[ ${reframe_exit_code} -eq 0 ]]; then
     echo_green "ReFrame runtime ran succesfully with command: reframe ${REFRAME_ARGS} --run."

From a22ee425509b016fbaad5e0437087e8a2acd8696 Mon Sep 17 00:00:00 2001
From: Thomas Roeblitz <thomas.roblitz@uib.no>
Date: Mon, 19 Aug 2024 14:36:02 +0200
Subject: [PATCH 32/52] use upper directory of former 'rw' session in 'ro' mode

---
 eessi_container.sh | 71 +++++++++++++++++++++++++++++++++-------------
 1 file changed, 51 insertions(+), 20 deletions(-)

diff --git a/eessi_container.sh b/eessi_container.sh
index e404b7ee18..7f0c64ef27 100755
--- a/eessi_container.sh
+++ b/eessi_container.sh
@@ -254,7 +254,7 @@ if [[ ${LIST_REPOS} -eq 1 ]]; then
             default_label=", default"
         else
             default_label=""
-	fi
+        fi
         echo "    ${cvmfs_repo} [CVMFS config repo${default_label}]"
     done
     for cfg_repo in "${!cfg_cvmfs_repos[@]}"
@@ -323,7 +323,7 @@ do
     if [[ ! -n "${eessi_cvmfs_repos[${cvmfs_repo_name}]}" ]] ; then
         [[ ${VERBOSE} -eq 1 ]] && echo "repo '${cvmfs_repo_name}' is not an EESSI CVMFS repository..."
         # cvmfs_repo_name is actually a repository ID, use that to obtain
-	#   the actual name from the EESSI_REPOS_CFG_FILE
+        #   the actual name from the EESSI_REPOS_CFG_FILE
         cfg_repo_id=${cvmfs_repo_name}
         cvmfs_repo_name=$(cfg_get_value ${cfg_repo_id} "repo_name")
     fi
@@ -595,11 +595,11 @@ do
     #   that the necessary information for accessing a CVMFS repository is made
     #   available inside the container
     if [[ -n "${cfg_cvmfs_repos[${cvmfs_repo_name}]}" ]] ; then
-	cfg_repo_id=${cvmfs_repo_name}
+        cfg_repo_id=${cvmfs_repo_name}
 
-	# obtain CVMFS repository name from section for the given ID
+        # obtain CVMFS repository name from section for the given ID
         cfg_repo_name=$(cfg_get_value ${cfg_repo_id} "repo_name")
-	# derive domain part from (cfg_)repo_name (everything after first '.')
+        # derive domain part from (cfg_)repo_name (everything after first '.')
         repo_name_domain=${repo_name#*.}
 
         # cfg_cvmfs_repos is populated through reading the file pointed to by
@@ -609,15 +609,15 @@ do
         # copy repos.cfg to job directory --> makes it easier to inspect the job
         cp -a ${EESSI_REPOS_CFG_FILE} ${EESSI_TMPDIR}/repos_cfg/.
 
-	# cfg file should include sections (one per CVMFS repository to be mounted)
-	#   with each section containing the settings:
-	#   - repo_name,
-	#   - repo_version,
-	#   - config_bundle, and
-	#   - a map { filepath_in_bundle -> container_filepath }
+        # cfg file should include sections (one per CVMFS repository to be mounted)
+        #   with each section containing the settings:
+        #   - repo_name,
+        #   - repo_version,
+        #   - config_bundle, and
+        #   - a map { filepath_in_bundle -> container_filepath }
         #
-	# The config_bundle includes the files which are mapped ('->') to a target
-	# location in container:
+        # The config_bundle includes the files which are mapped ('->') to a target
+        # location in container:
         # - default.local -> /etc/cvmfs/default.local
         #   contains CVMFS settings, e.g., CVMFS_HTTP_PROXY, CVMFS_QUOTA_LIMIT, ...
         # - ${repo_name_domain}.conf -> /etc/cvmfs/domain.d/${repo_name_domain}.conf
@@ -641,7 +641,7 @@ do
         # use information to set up dir ${EESSI_TMPDIR}/repos_cfg and define
         #   BIND mounts
         # check if config_bundle exists, if so, unpack it into
-	#   ${EESSI_TMPDIR}/repos_cfg; if it doesn't, exit with an error
+        #   ${EESSI_TMPDIR}/repos_cfg; if it doesn't, exit with an error
         # if config_bundle is relative path (no '/' at start) prepend it with
         #   EESSI_REPOS_CFG_DIR
         config_bundle_path=
@@ -726,7 +726,7 @@ do
     if [[ ${cfg_cvmfs_repos[${cvmfs_repo_name}]} ]]; then
         [[ ${VERBOSE} -eq 1 ]] && echo "repo '${cvmfs_repo_name}' is not an EESSI CVMFS repository..."
         # cvmfs_repo_name is actually a repository ID, use that to obtain
-	#   the actual name from the EESSI_REPOS_CFG_FILE
+        #   the actual name from the EESSI_REPOS_CFG_FILE
         cfg_repo_id=${cvmfs_repo_name}
         cvmfs_repo_name=$(cfg_get_value ${cfg_repo_id} "repo_name")
     fi
@@ -736,15 +736,46 @@ do
 
     # add fusemount options depending on requested access mode ('ro' - read-only; 'rw' - read & write)
     if [[ ${cvmfs_repo_access} == "ro" ]] ; then
-        export EESSI_READONLY="container:cvmfs2 ${cvmfs_repo_name} /cvmfs/${cvmfs_repo_name}"
+        # need to distinguish between basic "ro" access and "ro" after a "rw" session
+        if [[ -d ${EESSI_TMPDIR}/${cvmfs_repo_name}/overlay-upper ]]; then
+            # the overlay-upper directory is only created in a read-write-session, thus
+            # we are resuming from such a session here (otherwise there shouldn't be such
+            # directory yet as it is only created for read-write-sessions a bit further
+            # below); the overlay-upper directory can only exist because it is part of
+            # the ${RESUME} directory or tarball
+            # to be able to see the contents of the read-write session we have to mount
+            # the fuse-overlayfs (in read-only mode) on top of the CernVM-FS repository
+
+            # make the target CernVM-FS repository available under /cvmfs_ro
+            export EESSI_READONLY="container:cvmfs2 ${cvmfs_repo_name} /cvmfs_ro/${cvmfs_repo_name}"
+
+            EESSI_FUSE_MOUNTS+=("--fusemount" "${EESSI_READONLY}")
+
+            # now, put the overlay-upper read-only on top of the repo and make it available under the usual prefix /cvmfs
+            EESSI_READONLY_OVERLAY="container:fuse-overlayfs"
+            # The contents of the previous session are available under
+            #   ${EESSI_TMPDIR} which is bind mounted to ${TMP_IN_CONTAINER}.
+            #   Hence, we have to use ${TMP_IN_CONTAINER}/${cvmfs_repo_name}/overlay-upper
+            # the left-most directory given for the lowerdir argument is put on top,
+            #   and with no upperdir=... the whole overlayfs is made available read-only
+            EESSI_READONLY_OVERLAY+=" -o lowerdir=${TMP_IN_CONTAINER}/${cvmfs_repo_name}/overlay-upper:/cvmfs_ro/${cvmfs_repo_name}"
+            EESSI_READONLY_OVERLAY+=" /cvmfs/${cvmfs_repo_name}"
+            export EESSI_READONLY_OVERLAY
+
+            EESSI_FUSE_MOUNTS+=("--fusemount" "${EESSI_READONLY_OVERLAY}")
+            export EESSI_FUSE_MOUNTS
+        else
+            # basic "ro" access that doesn't require any fuseoverlay-fs
+            export EESSI_READONLY="container:cvmfs2 ${cvmfs_repo_name} /cvmfs/${cvmfs_repo_name}"
 
-        EESSI_FUSE_MOUNTS+=("--fusemount" "${EESSI_READONLY}")
-        export EESSI_FUSE_MOUNTS
+            EESSI_FUSE_MOUNTS+=("--fusemount" "${EESSI_READONLY}")
+            export EESSI_FUSE_MOUNTS
+        fi
     elif [[ ${cvmfs_repo_access} == "rw" ]] ; then
         # use repo-specific overlay directories
         mkdir -p ${EESSI_TMPDIR}/${cvmfs_repo_name}/overlay-upper
         mkdir -p ${EESSI_TMPDIR}/${cvmfs_repo_name}/overlay-work
-	[[ ${VERBOSE} -eq 1 ]] && echo -e "TMP directory contents:\n$(ls -l ${EESSI_TMPDIR})"
+        [[ ${VERBOSE} -eq 1 ]] && echo -e "TMP directory contents:\n$(ls -l ${EESSI_TMPDIR})"
 
         # set environment variables for fuse mounts in Singularity container
         export EESSI_READONLY="container:cvmfs2 ${cvmfs_repo_name} /cvmfs_ro/${cvmfs_repo_name}"
@@ -762,7 +793,7 @@ do
         export EESSI_FUSE_MOUNTS
     else
         echo -e "ERROR: access mode '${cvmfs_repo_access}' for CVMFS repository\n  '${cvmfs_repo_name}' is not known"
-	exit ${REPOSITORY_ERROR_EXITCODE}
+        exit ${REPOSITORY_ERROR_EXITCODE}
     fi
     # create repo_settings.sh file in ${EESSI_TMPDIR}/${cvmfs_repo_name} to store
     #   (intention is that the file could be just sourced to obtain the settings)

From 634abb077d9f0283f6452c4bcb35e1e3f7b30fd4 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Mon, 19 Aug 2024 14:39:21 +0200
Subject: [PATCH 33/52] Be a bit more verbose, for easier debugging of future
 issues. Remove statements that were inserted just to debug this particular
 issue

---
 test_suite.sh | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/test_suite.sh b/test_suite.sh
index fffd4a7888..464670b653 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -74,22 +74,13 @@ fi
 TMPDIR=$(mktemp -d)
 
 echo ">> Setting up environment..."
-echo "EESSI_SOFTWARE_SUBDIR_OVERRIDE before calling eessi_software_subdir.py: $EESSI_SOFTWARE_SUBDIR_OVERRIDE"
 # For this call to be succesful, it needs to be able to import archspec (which is part of EESSI)
 # Thus, we execute it in a subshell where EESSI is already initialized (a bit like a bootstrap)
 export EESSI_SOFTWARE_SUBDIR_OVERRIDE=$(source $TOPDIR/init/bash > /dev/null 2>&1; python3 $TOPDIR/eessi_software_subdir.py $DETECTION_PARAMETERS)
-echo "EESSI_SOFTWARE_SUBDIR_OVERRIDE after calling eessi_software_subdir.py: $EESSI_SOFTWARE_SUBDIR_OVERRIDE"
+echo "EESSI_SOFTWARE_SUBDIR_OVERRIDE: $EESSI_SOFTWARE_SUBDIR_OVERRIDE"
 
 source $TOPDIR/init/bash
 
-# DEBUGGING
-echo "Checking if ReFrame module exists:"
-ls -al /cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/modules/all/ReFrame/4.3.3.lua
-echo "Checking available ReFrame modules"
-module av ReFrame
-echo "Checking if we can load ReFrame when ignoring the cache"
-module load --ignore_cache ReFrame
-
 # Load the ReFrame module
 # Currently, we load the default version. Maybe we should somehow make this configurable in the future?
 module load ReFrame
@@ -147,24 +138,29 @@ echo "Configured reframe with the following environment variables:"
 env | grep "RFM_"
 
 # Inject correct CPU/memory properties into the ReFrame config file
+echo "Collecting system-specific input for the ReFrame configuration file"
 cpuinfo=$(lscpu)
 if [[ "${cpuinfo}" =~ CPU\(s\):[^0-9]*([0-9]+) ]]; then
     cpu_count=${BASH_REMATCH[1]}
+    echo "Detected CPU count: ${cpu_count}"
 else
     fatal_error "Failed to get the number of CPUs for the current test hardware with lscpu."
 fi
 if [[ "${cpuinfo}" =~ Socket\(s\):[^0-9]*([0-9]+) ]]; then
     socket_count=${BASH_REMATCH[1]}
+    echo "Detected socket count: ${socket_count}"
 else
     fatal_error "Failed to get the number of sockets for the current test hardware with lscpu."
 fi
 if [[ "${cpuinfo}" =~ (Thread\(s\) per core:[^0-9]*([0-9]+)) ]]; then
     threads_per_core=${BASH_REMATCH[2]}
+    echo "Detected threads per core: ${threads_per_core}"
 else
     fatal_error "Failed to get the number of threads per core for the current test hardware with lscpu."
 fi
 if [[ "${cpuinfo}" =~ (Core\(s\) per socket:[^0-9]*([0-9]+)) ]]; then
     cores_per_socket=${BASH_REMATCH[2]}
+    echo "Detected cores per socket: ${cores_per_socket}"
 else
     fatal_error "Failed to get the number of cores per socket for the current test hardware with lscpu."
 fi
@@ -190,12 +186,18 @@ if [[ $? -eq 0 ]]; then
 else
     fatal_error "Failed to get the memory limit in bytes from the current cgroup"
 fi
+echo "Detected available memory: ${cgroup_mem_mib} MiB"
+
+echo "Replacing detected system information in template ReFrame config file..."
 cp ${RFM_CONFIG_FILE_TEMPLATE} ${RFM_CONFIG_FILES}
 sed -i "s/__NUM_CPUS__/${cpu_count}/g" $RFM_CONFIG_FILES
 sed -i "s/__NUM_SOCKETS__/${socket_count}/g" $RFM_CONFIG_FILES
 sed -i "s/__NUM_CPUS_PER_CORE__/${threads_per_core}/g" $RFM_CONFIG_FILES
 sed -i "s/__NUM_CPUS_PER_SOCKET__/${cores_per_socket}/g" $RFM_CONFIG_FILES
 sed -i "s/__MEM_PER_NODE__/${cgroup_mem_mib}/g" $RFM_CONFIG_FILES
+# Make debugging easier by printing the final config file:
+echo "Final config file (after replacements):"
+cat "${RFM_CONFIG_FILES}"
 
 # Workaround for https://github.com/EESSI/software-layer/pull/467#issuecomment-1973341966
 export PSM3_DEVICES='self,shm'  # this is enough, since we only run single node for now

From 05c0b038868e2e72510570896f46c31d74710d32 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Tue, 20 Aug 2024 11:02:37 +0200
Subject: [PATCH 34/52] Make things more verbose, so we see where the memory
 limit comes from

---
 test_suite.sh | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/test_suite.sh b/test_suite.sh
index 464670b653..be11fba565 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -167,8 +167,10 @@ fi
 cgroup_v1_mem_limit="/sys/fs/cgroup/memory/$(</proc/self/cpuset)/memory.limit_in_bytes"
 cgroup_v2_mem_limit="/sys/fs/cgroup/$(</proc/self/cpuset)/memory.max"
 if [ -f "$cgroup_v1_mem_limit" ]; then
+    echo "Getting memory limit from file $cgroup_v1_mem_limit"
     cgroup_mem_bytes=$(cat "$cgroup_v1_mem_limit")
-else
+elif [ -f "$cgroup_v2_mem_limit" ]; then
+    echo "Getting memory limit from file $cgroup_v2_mem_limit"
     cgroup_mem_bytes=$(cat "$cgroup_v2_mem_limit")
     if [ "$cgroup_mem_bytes" = 'max' ]; then
         # In cgroupsv2, the memory.max file may contain 'max', meaning the group can use the full system memory
@@ -179,6 +181,8 @@ else
         fi
         cgroup_mem_bytes=$(("$cgroup_mem_kilobytes"*1024))
     fi
+else
+    fatal_error "Both files ${cgroup_v1_mem_limit} and ${cgroup_v2_mem_limit} couldn't be found. Failed to get the memory limit from the current cgroup"
 fi
 if [[ $? -eq 0 ]]; then
     # Convert to MiB

From 141070701f2777a75706ee7e458f5a42bd3f63ee Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Tue, 20 Aug 2024 11:50:31 +0200
Subject: [PATCH 35/52] More verobse

---
 test_suite.sh | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/test_suite.sh b/test_suite.sh
index be11fba565..73ef5d966f 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -166,6 +166,9 @@ else
 fi
 cgroup_v1_mem_limit="/sys/fs/cgroup/memory/$(</proc/self/cpuset)/memory.limit_in_bytes"
 cgroup_v2_mem_limit="/sys/fs/cgroup/$(</proc/self/cpuset)/memory.max"
+echo "cpuset_file: $(</proc/self/cpuset)"
+echo "ls -al /sys/fs/cgroup/memory/$(</proc/self/cpuset)"
+ls -al "/sys/fs/cgroup/memory/$(</proc/self/cpuset)"
 if [ -f "$cgroup_v1_mem_limit" ]; then
     echo "Getting memory limit from file $cgroup_v1_mem_limit"
     cgroup_mem_bytes=$(cat "$cgroup_v1_mem_limit")

From 2576568352973d5b81dd41d43cc08ccd2ad26237 Mon Sep 17 00:00:00 2001
From: Thomas Roeblitz <thomas.roblitz@uib.no>
Date: Tue, 20 Aug 2024 11:50:49 +0200
Subject: [PATCH 36/52] add messages to help understanding which mount options
 were used

---
 eessi_container.sh | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/eessi_container.sh b/eessi_container.sh
index 7f0c64ef27..34fa833d99 100755
--- a/eessi_container.sh
+++ b/eessi_container.sh
@@ -746,6 +746,10 @@ do
             # to be able to see the contents of the read-write session we have to mount
             # the fuse-overlayfs (in read-only mode) on top of the CernVM-FS repository
 
+            echo "While processing '${cvmfs_repo_name}' to be mounted 'read-only' we detected an overlay-upper"
+            echo "  directory (${EESSI_TMPDIR}/${cvmfs_repo_name}/overlay-upper) likely from a previous"
+            echo "  session. Will use it as left-most directory in 'lowerdir' argument for fuse-overlayfs."
+
             # make the target CernVM-FS repository available under /cvmfs_ro
             export EESSI_READONLY="container:cvmfs2 ${cvmfs_repo_name} /cvmfs_ro/${cvmfs_repo_name}"
 
@@ -766,6 +770,8 @@ do
             export EESSI_FUSE_MOUNTS
         else
             # basic "ro" access that doesn't require any fuseoverlay-fs
+            echo "Mounting '${cvmfs_repo_name}' 'read-only' without fuse-overlayfs."
+
             export EESSI_READONLY="container:cvmfs2 ${cvmfs_repo_name} /cvmfs/${cvmfs_repo_name}"
 
             EESSI_FUSE_MOUNTS+=("--fusemount" "${EESSI_READONLY}")

From b24c30d8c68bb024dc84b8bbab6aabc2e0c9eda2 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Tue, 20 Aug 2024 11:56:25 +0200
Subject: [PATCH 37/52] Of course, we should use the mounted dir /hostsys. It
 is entirely possible that inside the container, the /sys directory is
 different

---
 test_suite.sh | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/test_suite.sh b/test_suite.sh
index 73ef5d966f..7c3b7bfb0f 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -164,11 +164,11 @@ if [[ "${cpuinfo}" =~ (Core\(s\) per socket:[^0-9]*([0-9]+)) ]]; then
 else
     fatal_error "Failed to get the number of cores per socket for the current test hardware with lscpu."
 fi
-cgroup_v1_mem_limit="/sys/fs/cgroup/memory/$(</proc/self/cpuset)/memory.limit_in_bytes"
-cgroup_v2_mem_limit="/sys/fs/cgroup/$(</proc/self/cpuset)/memory.max"
+cgroup_v1_mem_limit="/hostsys/fs/cgroup/memory/$(</proc/self/cpuset)/memory.limit_in_bytes"
+cgroup_v2_mem_limit="/hostsys/fs/cgroup/$(</proc/self/cpuset)/memory.max"
 echo "cpuset_file: $(</proc/self/cpuset)"
-echo "ls -al /sys/fs/cgroup/memory/$(</proc/self/cpuset)"
-ls -al "/sys/fs/cgroup/memory/$(</proc/self/cpuset)"
+echo "ls -al /hostsys/fs/cgroup/memory/$(</proc/self/cpuset)"
+ls -al "/hostsys/fs/cgroup/memory/$(</proc/self/cpuset)"
 if [ -f "$cgroup_v1_mem_limit" ]; then
     echo "Getting memory limit from file $cgroup_v1_mem_limit"
     cgroup_mem_bytes=$(cat "$cgroup_v1_mem_limit")

From a53074e0be0becc4f58bc650f1ce9597e68d096d Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Tue, 20 Aug 2024 11:59:47 +0200
Subject: [PATCH 38/52] get cpuset file from host as well

---
 bot/test.sh   | 2 +-
 test_suite.sh | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/bot/test.sh b/bot/test.sh
index d3f3630ea8..4a917af91e 100755
--- a/bot/test.sh
+++ b/bot/test.sh
@@ -206,7 +206,7 @@ else
 fi
 # Bind mount /sys/fs/cgroup so that we can determine the amount of memory available in our cgroup for
 # Reframe configuration
-TEST_STEP_ARGS+=("--extra-bind-paths" "/sys/fs/cgroup:/hostsys/fs/cgroup:ro")
+TEST_STEP_ARGS+=("--extra-bind-paths" "/sys/fs/cgroup:/hostsys/fs/cgroup:ro,/proc/self:/hostproc/self:ro"")
 
 # prepare arguments to test_suite.sh (specific to test step)
 declare -a TEST_SUITE_ARGS=()
diff --git a/test_suite.sh b/test_suite.sh
index 7c3b7bfb0f..6f42547df0 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -164,8 +164,8 @@ if [[ "${cpuinfo}" =~ (Core\(s\) per socket:[^0-9]*([0-9]+)) ]]; then
 else
     fatal_error "Failed to get the number of cores per socket for the current test hardware with lscpu."
 fi
-cgroup_v1_mem_limit="/hostsys/fs/cgroup/memory/$(</proc/self/cpuset)/memory.limit_in_bytes"
-cgroup_v2_mem_limit="/hostsys/fs/cgroup/$(</proc/self/cpuset)/memory.max"
+cgroup_v1_mem_limit="/hostsys/fs/cgroup/memory/$(</hostproc/self/cpuset)/memory.limit_in_bytes"
+cgroup_v2_mem_limit="/hostsys/fs/cgroup/$(</hostproc/self/cpuset)/memory.max"
 echo "cpuset_file: $(</proc/self/cpuset)"
 echo "ls -al /hostsys/fs/cgroup/memory/$(</proc/self/cpuset)"
 ls -al "/hostsys/fs/cgroup/memory/$(</proc/self/cpuset)"

From 8b4e63b88e3d5d33a616a2969b03f61d86dbb8e8 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Tue, 20 Aug 2024 12:02:31 +0200
Subject: [PATCH 39/52] Removed duplicate quote

---
 bot/test.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/bot/test.sh b/bot/test.sh
index 4a917af91e..fe40a7c06c 100755
--- a/bot/test.sh
+++ b/bot/test.sh
@@ -206,7 +206,7 @@ else
 fi
 # Bind mount /sys/fs/cgroup so that we can determine the amount of memory available in our cgroup for
 # Reframe configuration
-TEST_STEP_ARGS+=("--extra-bind-paths" "/sys/fs/cgroup:/hostsys/fs/cgroup:ro,/proc/self:/hostproc/self:ro"")
+TEST_STEP_ARGS+=("--extra-bind-paths" "/sys/fs/cgroup:/hostsys/fs/cgroup:ro,/proc/self:/hostproc/self:ro")
 
 # prepare arguments to test_suite.sh (specific to test step)
 declare -a TEST_SUITE_ARGS=()

From 8ae3eed71860ccf7293248e3808e2673796bd69c Mon Sep 17 00:00:00 2001
From: Kenneth Hoste <kenneth.hoste@ugent.be>
Date: Tue, 20 Aug 2024 12:05:20 +0200
Subject: [PATCH 40/52] use more recent commit for installing STAR 2.7.11b w/
 GCC/13.2.0

---
 .../2023.06/eessi-2023.06-eb-4.9.2-2023b.yml                  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
index edfd491cce..a1e45f0baa 100644
--- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
+++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml
@@ -17,5 +17,5 @@ easyconfigs:
         from-commit: 76e7fc6657bab64bfbec826540a3a8f0040258f2
   - STAR-2.7.11b-GCC-13.2.0.eb:
       options:
-        #see https://github.com/easybuilders/easybuild-easyconfigs/pull/21200
-        from-commit: cd8b1ce595195f132125d9b25a98a9efe702c72a
+        # see https://github.com/easybuilders/easybuild-easyconfigs/pull/21200
+        from-commit: 765ba900daf5953e306c4dad896febe52fdd6c00

From 6d194632ae7c3b73d80e569e46e123cfb91d120d Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Tue, 20 Aug 2024 12:07:21 +0200
Subject: [PATCH 41/52] Apparently, bind-mounting the hosts /proc gives
 garbage, but reading it from the containers' /proc is fine. So let's do that

---
 test_suite.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/test_suite.sh b/test_suite.sh
index 6f42547df0..7c3b7bfb0f 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -164,8 +164,8 @@ if [[ "${cpuinfo}" =~ (Core\(s\) per socket:[^0-9]*([0-9]+)) ]]; then
 else
     fatal_error "Failed to get the number of cores per socket for the current test hardware with lscpu."
 fi
-cgroup_v1_mem_limit="/hostsys/fs/cgroup/memory/$(</hostproc/self/cpuset)/memory.limit_in_bytes"
-cgroup_v2_mem_limit="/hostsys/fs/cgroup/$(</hostproc/self/cpuset)/memory.max"
+cgroup_v1_mem_limit="/hostsys/fs/cgroup/memory/$(</proc/self/cpuset)/memory.limit_in_bytes"
+cgroup_v2_mem_limit="/hostsys/fs/cgroup/$(</proc/self/cpuset)/memory.max"
 echo "cpuset_file: $(</proc/self/cpuset)"
 echo "ls -al /hostsys/fs/cgroup/memory/$(</proc/self/cpuset)"
 ls -al "/hostsys/fs/cgroup/memory/$(</proc/self/cpuset)"

From c2b55354bbc44693b27ced7d40608a39ad6ada64 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Tue, 20 Aug 2024 12:16:27 +0200
Subject: [PATCH 42/52] Remove the bind-mind for /proc, it's not needed anymore

---
 bot/test.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/bot/test.sh b/bot/test.sh
index fe40a7c06c..d3f3630ea8 100755
--- a/bot/test.sh
+++ b/bot/test.sh
@@ -206,7 +206,7 @@ else
 fi
 # Bind mount /sys/fs/cgroup so that we can determine the amount of memory available in our cgroup for
 # Reframe configuration
-TEST_STEP_ARGS+=("--extra-bind-paths" "/sys/fs/cgroup:/hostsys/fs/cgroup:ro,/proc/self:/hostproc/self:ro")
+TEST_STEP_ARGS+=("--extra-bind-paths" "/sys/fs/cgroup:/hostsys/fs/cgroup:ro")
 
 # prepare arguments to test_suite.sh (specific to test step)
 declare -a TEST_SUITE_ARGS=()

From a8602734a213f331ccd77718b96970196b4748fa Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Tue, 20 Aug 2024 12:20:28 +0200
Subject: [PATCH 43/52] Cleanup debugging output

---
 test_suite.sh | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/test_suite.sh b/test_suite.sh
index 7c3b7bfb0f..5dae1c1bf3 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -166,9 +166,6 @@ else
 fi
 cgroup_v1_mem_limit="/hostsys/fs/cgroup/memory/$(</proc/self/cpuset)/memory.limit_in_bytes"
 cgroup_v2_mem_limit="/hostsys/fs/cgroup/$(</proc/self/cpuset)/memory.max"
-echo "cpuset_file: $(</proc/self/cpuset)"
-echo "ls -al /hostsys/fs/cgroup/memory/$(</proc/self/cpuset)"
-ls -al "/hostsys/fs/cgroup/memory/$(</proc/self/cpuset)"
 if [ -f "$cgroup_v1_mem_limit" ]; then
     echo "Getting memory limit from file $cgroup_v1_mem_limit"
     cgroup_mem_bytes=$(cat "$cgroup_v1_mem_limit")

From 997427b401a4f5ca1f45c623359d1cdefd762250 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Tue, 20 Aug 2024 13:35:58 +0200
Subject: [PATCH 44/52] Show effect of disableing LMOD cache

---
 test_suite.sh | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/test_suite.sh b/test_suite.sh
index 464670b653..2a54956c50 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -81,6 +81,18 @@ echo "EESSI_SOFTWARE_SUBDIR_OVERRIDE: $EESSI_SOFTWARE_SUBDIR_OVERRIDE"
 
 source $TOPDIR/init/bash
 
+# Demonstrate the effect of disabling the cache
+echo "Trying to load modules while LMOD cache is used"
+# export LMOD_IGNORE_CACHE=1
+module av patchelf
+module load patchelf/0.17.2-GCCcore-12.2.0.eb
+command -v patchelf
+echo "Trying to load modules while LMOD cache is not used"
+export LMOD_IGNORE_CACHE=1
+module av patchelf
+module load patchelf/0.17.2-GCCcore-12.2.0.eb
+command -v patchelf
+
 # Load the ReFrame module
 # Currently, we load the default version. Maybe we should somehow make this configurable in the future?
 module load ReFrame

From 14a89cb2c74c8c8adafc5d53ecde9223130f8b01 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Tue, 20 Aug 2024 13:37:13 +0200
Subject: [PATCH 45/52] Add patchelf to demonstrate effect of cache in test
 step

---
 .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml
index a22b78718f..6996e6f712 100644
--- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml
+++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml
@@ -6,4 +6,5 @@ easyconfigs:
         from-commit: d8076ebaf8cb915762adebf88d385cc672b350dc
   - gnuplot-5.4.6-GCCcore-12.2.0.eb
   - h5py-3.8.0-foss-2022b.eb
-  - MDAnalysis-2.4.2-foss-2022b.eb 
+  - MDAnalysis-2.4.2-foss-2022b.eb
+  - patchelf-0.17.2-GCCcore-12.2.0.eb

From e6cceb5d8c6f014f1788419698607d3f7f6ac9ed Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Tue, 20 Aug 2024 16:06:28 +0200
Subject: [PATCH 46/52] Fix module name

---
 test_suite.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/test_suite.sh b/test_suite.sh
index 2a54956c50..bb1913e086 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -85,12 +85,12 @@ source $TOPDIR/init/bash
 echo "Trying to load modules while LMOD cache is used"
 # export LMOD_IGNORE_CACHE=1
 module av patchelf
-module load patchelf/0.17.2-GCCcore-12.2.0.eb
+module load patchelf/0.17.2-GCCcore-12.2.0
 command -v patchelf
 echo "Trying to load modules while LMOD cache is not used"
 export LMOD_IGNORE_CACHE=1
 module av patchelf
-module load patchelf/0.17.2-GCCcore-12.2.0.eb
+module load patchelf/0.17.2-GCCcore-12.2.0
 command -v patchelf
 
 # Load the ReFrame module

From 129973eb71263f9ef1189d91eb7baaf83f982eae Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Tue, 20 Aug 2024 20:05:47 +0200
Subject: [PATCH 47/52] Remove debugging output, add clarifying comments

---
 test_suite.sh | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/test_suite.sh b/test_suite.sh
index bb1913e086..41af69643a 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -81,17 +81,9 @@ echo "EESSI_SOFTWARE_SUBDIR_OVERRIDE: $EESSI_SOFTWARE_SUBDIR_OVERRIDE"
 
 source $TOPDIR/init/bash
 
-# Demonstrate the effect of disabling the cache
-echo "Trying to load modules while LMOD cache is used"
-# export LMOD_IGNORE_CACHE=1
-module av patchelf
-module load patchelf/0.17.2-GCCcore-12.2.0
-command -v patchelf
-echo "Trying to load modules while LMOD cache is not used"
+# We have to ignore the LMOD cache, otherwise the software that is built in the build step cannot be found/loaded
+# Reason is that the LMOD cache is normally only updated on the Stratum 0, once everything is ingested
 export LMOD_IGNORE_CACHE=1
-module av patchelf
-module load patchelf/0.17.2-GCCcore-12.2.0
-command -v patchelf
 
 # Load the ReFrame module
 # Currently, we load the default version. Maybe we should somehow make this configurable in the future?

From af8d9dc69f1af69b0f94749db79c92b2d1706465 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Tue, 20 Aug 2024 20:06:38 +0200
Subject: [PATCH 48/52] Don't add patchelf, this PR wasn't really about that -
 we just used it to prove that disabling the LMOD cache was needed

---
 .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml
index 6996e6f712..a22b78718f 100644
--- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml
+++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2022b.yml
@@ -6,5 +6,4 @@ easyconfigs:
         from-commit: d8076ebaf8cb915762adebf88d385cc672b350dc
   - gnuplot-5.4.6-GCCcore-12.2.0.eb
   - h5py-3.8.0-foss-2022b.eb
-  - MDAnalysis-2.4.2-foss-2022b.eb
-  - patchelf-0.17.2-GCCcore-12.2.0.eb
+  - MDAnalysis-2.4.2-foss-2022b.eb 

From b82e18322870c36781966637daa06d17dc53f453 Mon Sep 17 00:00:00 2001
From: Caspar van Leeuwen <casparl@tcn1.local.snellius.surf.nl>
Date: Wed, 21 Aug 2024 12:03:51 +0200
Subject: [PATCH 49/52] Add clear description for why we use /hostsys

---
 test_suite.sh | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/test_suite.sh b/test_suite.sh
index 5dae1c1bf3..584c9dccfc 100755
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -164,6 +164,11 @@ if [[ "${cpuinfo}" =~ (Core\(s\) per socket:[^0-9]*([0-9]+)) ]]; then
 else
     fatal_error "Failed to get the number of cores per socket for the current test hardware with lscpu."
 fi
+
+# The /sys inside the container is not the same as the /sys of the host
+# We want to extract the memory limit from the cgroup on the host (which is typically set by SLURM).
+# Thus, bot/test.sh bind-mounts the host's /sys/fs/cgroup into /hostsys/fs/cgroup
+# and that's the prefix we use to extract the memory limit from
 cgroup_v1_mem_limit="/hostsys/fs/cgroup/memory/$(</proc/self/cpuset)/memory.limit_in_bytes"
 cgroup_v2_mem_limit="/hostsys/fs/cgroup/$(</proc/self/cpuset)/memory.max"
 if [ -f "$cgroup_v1_mem_limit" ]; then

From 00839e1b3e478b25afd01888b41db936d3ec1bbf Mon Sep 17 00:00:00 2001
From: Kenneth Hoste <kenneth.hoste@ugent.be>
Date: Wed, 21 Aug 2024 18:50:46 +0200
Subject: [PATCH 50/52] {2023.06,a64fx}[foss/2023a] R v4.3.2

---
 .../2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml               | 1 +
 1 file changed, 1 insertion(+)

diff --git a/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml
index f38c06ea8b..2f884f1838 100644
--- a/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml
+++ b/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml
@@ -18,3 +18,4 @@ easyconfigs:
         include-easyblocks-from-commit: c8256a36e7062bc09f5ce30552a9de9827054c9e
         # https://github.com/easybuilders/easybuild-easyconfigs/pull/20841
         from-commit: f0e91e6e430ebf902f7788ebb47f0203dee60649
+  - R-4.3.2-gfbf-2023a.eb

From 2a339c3bb4f07af6698cdc65c75a90f1b8754665 Mon Sep 17 00:00:00 2001
From: Pedro Santos Neves <10762799+Neves-P@users.noreply.github.com>
Date: Fri, 23 Aug 2024 09:56:41 +0200
Subject: [PATCH 51/52] Create
 20240719-eb-4.9.2-GObject-Introspection-filter-envvars-a64fx.yml

---
 ...2-GObject-Introspection-filter-envvars-a64fx.yml | 13 +++++++++++++
 1 file changed, 13 insertions(+)
 create mode 100644 easystacks/software.eessi.io/2023.06/rebuilds/20240719-eb-4.9.2-GObject-Introspection-filter-envvars-a64fx.yml

diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240719-eb-4.9.2-GObject-Introspection-filter-envvars-a64fx.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240719-eb-4.9.2-GObject-Introspection-filter-envvars-a64fx.yml
new file mode 100644
index 0000000000..782db66e78
--- /dev/null
+++ b/easystacks/software.eessi.io/2023.06/rebuilds/20240719-eb-4.9.2-GObject-Introspection-filter-envvars-a64fx.yml
@@ -0,0 +1,13 @@
+# 2024.08.23
+# GObject-Introspection sets $LD_LIBRARY_PATH (to many different paths, including $EPREFIX/lib)
+# when calling gcc, and this causes a lot of issues for, especially, scripts using /bin/bash.
+#
+# This rebuild ensures (by using a new EasyBuild hook) that GObject-Introspection will not set
+# environment variables that are configured to be filtered by EasyBuild.
+# This rebuild was not done initially for A64FX. This file is meant to do the same as the
+# previous rebuild of GObject-Introspection-1.76.1-GCCcore-12.3.0 in other architectures, 
+# but for A64FX.
+# 
+# See https://github.com/EESSI/software-layer/issues/196
+easyconfigs:
+  - GObject-Introspection-1.76.1-GCCcore-12.3.0.eb

From 73cf81abc14185c42440bad5660bf023e44d8146 Mon Sep 17 00:00:00 2001
From: Neves-P <p.m.santos.neves@rug.nl>
Date: Fri, 23 Aug 2024 10:01:04 +0200
Subject: [PATCH 52/52] Renamed to correct date

---
 ...40823-eb-4.9.2-GObject-Introspection-filter-envvars-a64fx.yml} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename easystacks/software.eessi.io/2023.06/rebuilds/{20240719-eb-4.9.2-GObject-Introspection-filter-envvars-a64fx.yml => 20240823-eb-4.9.2-GObject-Introspection-filter-envvars-a64fx.yml} (100%)

diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240719-eb-4.9.2-GObject-Introspection-filter-envvars-a64fx.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240823-eb-4.9.2-GObject-Introspection-filter-envvars-a64fx.yml
similarity index 100%
rename from easystacks/software.eessi.io/2023.06/rebuilds/20240719-eb-4.9.2-GObject-Introspection-filter-envvars-a64fx.yml
rename to easystacks/software.eessi.io/2023.06/rebuilds/20240823-eb-4.9.2-GObject-Introspection-filter-envvars-a64fx.yml