From 1fe650142246a9bfe9ccc76ce60516397292b076 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 7 Aug 2026 14:53:45 +0200 Subject: [PATCH 01/13] fetch all sources before installing software from easystack file --- EESSI-install-software.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 74f7c9d1..622fa50f 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -430,6 +430,12 @@ else echo_green "All set, let's start installing some software with EasyBuild v${eb_version} in ${EASYBUILD_INSTALLPATH}..." if [ -f ${easystack_file} ]; then + echo_green "Downloading sources for easystack file ${easystack_file}..." + ${EB} --fetch-all --easystack ${easystack_file} --robot + if [ $? -ne 0 ]; then + fatal_error "Could not download all required source files for this easystack file." + fi + echo_green "Feeding easystack file ${easystack_file} to EasyBuild..." if [[ ${easystack_file} == *"/rebuilds/"* ]]; then From 8337cb9bcdeec7b09d28fa6b1bfec921a3e4f5b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 7 Aug 2026 14:58:30 +0200 Subject: [PATCH 02/13] add easystack --- .../software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml diff --git a/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml b/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml new file mode 100644 index 00000000..2eaa622d --- /dev/null +++ b/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml @@ -0,0 +1,4 @@ +easyconfigs: + - Automake-1.16.5.eb + - Automake-1.18.1-GCCcore-15.2.0.eb + - parallel-20260522-GCCcore-15.2.0.eb From 8c01b018d8155c9b18cce69f9c35fe4b5aec9d06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 7 Aug 2026 15:07:19 +0200 Subject: [PATCH 03/13] add from-commit --- .../software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml b/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml index 2eaa622d..d3f8cdd8 100644 --- a/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml +++ b/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml @@ -1,4 +1,6 @@ easyconfigs: - Automake-1.16.5.eb - Automake-1.18.1-GCCcore-15.2.0.eb - - parallel-20260522-GCCcore-15.2.0.eb + - parallel-20260522-GCCcore-15.2.0.eb: + options: + from-commit: cf3efa2000133a41fca32162f8de24a7cfda0a7d From e9b6583672ca3e60ddf64e1262732fcf1714a228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 7 Aug 2026 15:12:52 +0200 Subject: [PATCH 04/13] remove parallel --- .../software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml b/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml index d3f8cdd8..44b54399 100644 --- a/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml +++ b/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml @@ -1,6 +1,3 @@ easyconfigs: - Automake-1.16.5.eb - Automake-1.18.1-GCCcore-15.2.0.eb - - parallel-20260522-GCCcore-15.2.0.eb: - options: - from-commit: cf3efa2000133a41fca32162f8de24a7cfda0a7d From ac3d1040a5bc3a6bbd20b5a6a4036dc04c4b5bbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 7 Aug 2026 15:19:27 +0200 Subject: [PATCH 05/13] remove failing item --- .../software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml b/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml index 44b54399..8d6051b9 100644 --- a/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml +++ b/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml @@ -1,3 +1,2 @@ easyconfigs: - - Automake-1.16.5.eb - Automake-1.18.1-GCCcore-15.2.0.eb From d7679ca814926d9cc3d15dadd0f56f3e4b05076d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 7 Aug 2026 15:29:28 +0200 Subject: [PATCH 06/13] remove easystack file --- .../software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml diff --git a/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml b/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml deleted file mode 100644 index 8d6051b9..00000000 --- a/easystacks/software.eessi.io/2026.06/eessi-2026.06-eb-5.3.1-test.yml +++ /dev/null @@ -1,2 +0,0 @@ -easyconfigs: - - Automake-1.18.1-GCCcore-15.2.0.eb From d371a5180d9f5e0ab6db63a6a5b55b13e498ca0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 7 Aug 2026 22:51:01 +0200 Subject: [PATCH 07/13] check if eb --fetch-all is available, otherwise use --fetch --- EESSI-install-software.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 622fa50f..b5f0cade 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -431,7 +431,10 @@ else if [ -f ${easystack_file} ]; then echo_green "Downloading sources for easystack file ${easystack_file}..." - ${EB} --fetch-all --easystack ${easystack_file} --robot + # run eb --help to determine if --fetch-all is supported (available since 5.3.0), otherwise fall back to --fetch + fetch_option="--fetch" + ${EB} --help | grep -q -e "fetch-all" && fetch_option="--fetch-all" + ${EB} ${fetch_option} --easystack ${easystack_file} --robot if [ $? -ne 0 ]; then fatal_error "Could not download all required source files for this easystack file." fi From 38edc879c99feb53a7da36dae11ed4cae640bbf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Tue, 18 Aug 2026 13:37:33 +0200 Subject: [PATCH 08/13] disable fetching sources if EESSI_SKIP_FETCH_EASYSTACK_SOURCES is set --- EESSI-install-software.sh | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index b5f0cade..9a745c4f 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -430,13 +430,16 @@ else echo_green "All set, let's start installing some software with EasyBuild v${eb_version} in ${EASYBUILD_INSTALLPATH}..." if [ -f ${easystack_file} ]; then - echo_green "Downloading sources for easystack file ${easystack_file}..." - # run eb --help to determine if --fetch-all is supported (available since 5.3.0), otherwise fall back to --fetch - fetch_option="--fetch" - ${EB} --help | grep -q -e "fetch-all" && fetch_option="--fetch-all" - ${EB} ${fetch_option} --easystack ${easystack_file} --robot - if [ $? -ne 0 ]; then - fatal_error "Could not download all required source files for this easystack file." + if [ -z $EESSI_SKIP_FETCH_EASYSTACK_SOURCES ]; then + # run eb --help to determine if --fetch-all is supported (available since 5.3.0), otherwise fall back to --fetch + fetch_option="--fetch" + ${EB} --help | grep -q -e "fetch-all" && fetch_option="--fetch-all" + echo_green "Downloading sources for easystack file ${easystack_file} using eb ${fetch_option}..." + echo "(note: this step can be skipped by setting $EESSI_SKIP_FETCH_EASYSTACK_SOURCES to a non-empty value)" + ${EB} ${fetch_option} --easystack ${easystack_file} --robot + if [ $? -ne 0 ]; then + fatal_error "Could not download all required source files for this easystack file." + fi fi echo_green "Feeding easystack file ${easystack_file} to EasyBuild..." From fe3e3cca1a309961b8efcd4095b5bc8436f13cfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Wed, 16 Sep 2026 20:24:26 +0200 Subject: [PATCH 09/13] Apply suggestion from @boegel Co-authored-by: Kenneth Hoste --- EESSI-install-software.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 91d42397..d5105ea9 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -441,7 +441,7 @@ else fetch_option="--fetch" ${EB} --help | grep -q -e "fetch-all" && fetch_option="--fetch-all" echo_green "Downloading sources for easystack file ${easystack_file} using eb ${fetch_option}..." - echo "(note: this step can be skipped by setting $EESSI_SKIP_FETCH_EASYSTACK_SOURCES to a non-empty value)" + echo '(note: this step can be skipped by setting $EESSI_SKIP_FETCH_EASYSTACK_SOURCES to a non-empty value)' ${EB} ${fetch_option} --easystack ${easystack_file} --robot if [ $? -ne 0 ]; then fatal_error "Could not download all required source files for this easystack file." From 44d0b2f8e4f1602a7bba6dbe806c47610a79e53e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Wed, 16 Sep 2026 20:49:43 +0200 Subject: [PATCH 10/13] only fetch sources for added items --- EESSI-install-software.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index d5105ea9..d1a676aa 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -440,9 +440,18 @@ else # run eb --help to determine if --fetch-all is supported (available since 5.3.0), otherwise fall back to --fetch fetch_option="--fetch" ${EB} --help | grep -q -e "fetch-all" && fetch_option="--fetch-all" - echo_green "Downloading sources for easystack file ${easystack_file} using eb ${fetch_option}..." + easystack_additions=$(mktemp --suffix=.yml) + echo "easyconfigs: " > ${easystack_additions} + # use the PR diff file to find which items have been added to this particular easystack file + # and dump that to a temporary easystack file that we can use to fetch the sources for only these added items + awk -v file="${easystack_file}" ' + /^diff --git / { found=0 } + $0 == "+++ b/" file { found=1; next } + found && /^\+/ && !/^\+\+\+/ { sub(/^\+/, ""); print } + ' "${diff_file}" >> ${easystack_additions} + echo_green "Downloading sources for added items in easystack file ${easystack_file} using eb ${fetch_option}..." echo '(note: this step can be skipped by setting $EESSI_SKIP_FETCH_EASYSTACK_SOURCES to a non-empty value)' - ${EB} ${fetch_option} --easystack ${easystack_file} --robot + ${EB} ${fetch_option} --easystack ${easystack_additions} --robot if [ $? -ne 0 ]; then fatal_error "Could not download all required source files for this easystack file." fi From 665d132d36fc61b790e5de7c1c2221f2932d001d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Wed, 16 Sep 2026 20:52:21 +0200 Subject: [PATCH 11/13] clean up temporary easystack file --- EESSI-install-software.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index d1a676aa..74ff8d5a 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -455,6 +455,7 @@ else if [ $? -ne 0 ]; then fatal_error "Could not download all required source files for this easystack file." fi + rm ${easystack_additions} fi echo_green "Feeding easystack file ${easystack_file} to EasyBuild..." From 10abf841598085feda38a5965081c8eb98f293c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Wed, 16 Sep 2026 21:01:30 +0200 Subject: [PATCH 12/13] let awk print the first line of the easystack as well --- EESSI-install-software.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 74ff8d5a..c6309541 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -441,10 +441,10 @@ else fetch_option="--fetch" ${EB} --help | grep -q -e "fetch-all" && fetch_option="--fetch-all" easystack_additions=$(mktemp --suffix=.yml) - echo "easyconfigs: " > ${easystack_additions} # use the PR diff file to find which items have been added to this particular easystack file # and dump that to a temporary easystack file that we can use to fetch the sources for only these added items awk -v file="${easystack_file}" ' + BEGIN { print "easyconfigs:" } /^diff --git / { found=0 } $0 == "+++ b/" file { found=1; next } found && /^\+/ && !/^\+\+\+/ { sub(/^\+/, ""); print } From a69e3831bac173da281942151eb42b83c4cbca73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Wed, 16 Sep 2026 21:08:34 +0200 Subject: [PATCH 13/13] use empty list if there are no additions in an easystack file Enhance awk script to handle empty additions case. --- EESSI-install-software.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index c6309541..a7ae9601 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -444,10 +444,19 @@ else # use the PR diff file to find which items have been added to this particular easystack file # and dump that to a temporary easystack file that we can use to fetch the sources for only these added items awk -v file="${easystack_file}" ' - BEGIN { print "easyconfigs:" } /^diff --git / { found=0 } $0 == "+++ b/" file { found=1; next } - found && /^\+/ && !/^\+\+\+/ { sub(/^\+/, ""); print } + found && /^\+/ && !/^\+\+\+/ { + sub(/^\+/, "") + additions = additions $0 "\n" + count++ + } + END { + if (count) + printf "easyconfigs:\n%s", additions + else + print "easyconfigs: []" + } ' "${diff_file}" >> ${easystack_additions} echo_green "Downloading sources for added items in easystack file ${easystack_file} using eb ${fetch_option}..." echo '(note: this step can be skipped by setting $EESSI_SKIP_FETCH_EASYSTACK_SOURCES to a non-empty value)'