From a0ce71216d8378c9c7efc2e32897c1b40ff2f640 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Tue, 16 Jan 2024 17:53:52 +0100 Subject: [PATCH 01/17] {2023.06}[system] EasyBuild v4.9.0 (for test purposes only) --- eessi-2023.06-eb-4.9.0-001-system.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 eessi-2023.06-eb-4.9.0-001-system.yml diff --git a/eessi-2023.06-eb-4.9.0-001-system.yml b/eessi-2023.06-eb-4.9.0-001-system.yml new file mode 100644 index 0000000000..a7bce002c7 --- /dev/null +++ b/eessi-2023.06-eb-4.9.0-001-system.yml @@ -0,0 +1,4 @@ +easyconfigs: + - EasyBuild-4.9.0.eb: + options: + from-pr: 19464 From 3a8b44a603e214363cf9fd6eaef8abed6303a678 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Tue, 16 Jan 2024 21:12:42 +0100 Subject: [PATCH 02/17] moved test easystack file to new directory --- .../pilot.nessi.no/2023.06/eessi-2023.06-eb-4.9.0-001-system.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename eessi-2023.06-eb-4.9.0-001-system.yml => easystacks/pilot.nessi.no/2023.06/eessi-2023.06-eb-4.9.0-001-system.yml (100%) diff --git a/eessi-2023.06-eb-4.9.0-001-system.yml b/easystacks/pilot.nessi.no/2023.06/eessi-2023.06-eb-4.9.0-001-system.yml similarity index 100% rename from eessi-2023.06-eb-4.9.0-001-system.yml rename to easystacks/pilot.nessi.no/2023.06/eessi-2023.06-eb-4.9.0-001-system.yml From e53dd196a93b953abc9eb40b81c8c6e738bb5779 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Mon, 22 Jan 2024 23:35:23 +0100 Subject: [PATCH 03/17] attempt to use archdetect --- init/eessi_defaults | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init/eessi_defaults b/init/eessi_defaults index da057fbfd2..54a705ff8b 100644 --- a/init/eessi_defaults +++ b/init/eessi_defaults @@ -12,5 +12,5 @@ export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO_OVERRIDE:=/cvmfs/pilot.nessi.no}" export EESSI_VERSION="${EESSI_VERSION_OVERRIDE:=2023.06}" # use archdetect by default, unless otherwise specified # 2024-01-16: switch back to archspec with NESSI for now -export EESSI_USE_ARCHDETECT="${EESSI_USE_ARCHDETECT:=0}" -export EESSI_USE_ARCHSPEC="${EESSI_USE_ARCHSPEC:=1}" +export EESSI_USE_ARCHDETECT="${EESSI_USE_ARCHDETECT:=1}" +export EESSI_USE_ARCHSPEC="${EESSI_USE_ARCHSPEC:=0}" From 5d8083b6713d93988ae88c664b71dcd5cc8ffe98 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Mon, 22 Jan 2024 23:52:07 +0100 Subject: [PATCH 04/17] print a few more messages to verify CPU detection works --- 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 eb616b1311..7aff2cdc60 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -143,7 +143,7 @@ fi # Set all the EESSI environment variables (respecting $EESSI_SOFTWARE_SUBDIR_OVERRIDE) # $EESSI_SILENT - don't print any messages # $EESSI_BASIC_ENV - give a basic set of environment variables -EESSI_SILENT=1 EESSI_BASIC_ENV=1 source $TOPDIR/init/eessi_environment_variables +EESSI_SILENT=0 EESSI_BASIC_ENV=1 source $TOPDIR/init/eessi_environment_variables if [[ -z ${EESSI_SOFTWARE_SUBDIR} ]]; then fatal_error "Failed to determine software subdirectory?!" From 89a6af5614ddbe5b86bd246842bc12baecf43c4c Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Tue, 23 Jan 2024 00:03:43 +0100 Subject: [PATCH 05/17] do not set EESSI_SILENT --- EESSI-install-software.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 7aff2cdc60..df47df4e9c 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -143,7 +143,8 @@ fi # Set all the EESSI environment variables (respecting $EESSI_SOFTWARE_SUBDIR_OVERRIDE) # $EESSI_SILENT - don't print any messages # $EESSI_BASIC_ENV - give a basic set of environment variables -EESSI_SILENT=0 EESSI_BASIC_ENV=1 source $TOPDIR/init/eessi_environment_variables +# EESSI_SILENT=1 EESSI_BASIC_ENV=1 source $TOPDIR/init/eessi_environment_variables +EESSI_BASIC_ENV=1 source $TOPDIR/init/eessi_environment_variables if [[ -z ${EESSI_SOFTWARE_SUBDIR} ]]; then fatal_error "Failed to determine software subdirectory?!" From 5a0c0cca11eca7a812d5646d3c7170ddbb51fe64 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Tue, 23 Jan 2024 00:56:04 +0100 Subject: [PATCH 06/17] attempt to fix failing CI checking for missing installations --- ...4.9.0-001-system.yml => eessi-2023.06-eb-4.8.2-001-system.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename easystacks/pilot.nessi.no/2023.06/{eessi-2023.06-eb-4.9.0-001-system.yml => eessi-2023.06-eb-4.8.2-001-system.yml} (100%) diff --git a/easystacks/pilot.nessi.no/2023.06/eessi-2023.06-eb-4.9.0-001-system.yml b/easystacks/pilot.nessi.no/2023.06/eessi-2023.06-eb-4.8.2-001-system.yml similarity index 100% rename from easystacks/pilot.nessi.no/2023.06/eessi-2023.06-eb-4.9.0-001-system.yml rename to easystacks/pilot.nessi.no/2023.06/eessi-2023.06-eb-4.8.2-001-system.yml From 20eb40edafa2d3c65875e245bb2e825b43b61191 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Tue, 23 Jan 2024 22:45:59 +0100 Subject: [PATCH 07/17] remove obsolete test files, correct cpupath for skylake --- .../archspec-linux-E5-2680-v3.all.output | 1 - .../archspec-linux-E5-2680-v3.cpuinfo | 25 ------------------- .../archspec-linux-E5-2680-v3.output | 1 - .../archspec-linux-6132.all.output | 2 +- 4 files changed, 1 insertion(+), 28 deletions(-) delete mode 100644 tests/archdetect/x86_64/intel/broadwell/archspec-linux-E5-2680-v3.all.output delete mode 100644 tests/archdetect/x86_64/intel/broadwell/archspec-linux-E5-2680-v3.cpuinfo delete mode 100644 tests/archdetect/x86_64/intel/broadwell/archspec-linux-E5-2680-v3.output diff --git a/tests/archdetect/x86_64/intel/broadwell/archspec-linux-E5-2680-v3.all.output b/tests/archdetect/x86_64/intel/broadwell/archspec-linux-E5-2680-v3.all.output deleted file mode 100644 index a047dd42cc..0000000000 --- a/tests/archdetect/x86_64/intel/broadwell/archspec-linux-E5-2680-v3.all.output +++ /dev/null @@ -1 +0,0 @@ -x86_64/intel/haswell:x86_64/generic \ No newline at end of file diff --git a/tests/archdetect/x86_64/intel/broadwell/archspec-linux-E5-2680-v3.cpuinfo b/tests/archdetect/x86_64/intel/broadwell/archspec-linux-E5-2680-v3.cpuinfo deleted file mode 100644 index 7bb5aa958f..0000000000 --- a/tests/archdetect/x86_64/intel/broadwell/archspec-linux-E5-2680-v3.cpuinfo +++ /dev/null @@ -1,25 +0,0 @@ -processor : 0 -vendor_id : GenuineIntel -cpu family : 6 -model : 63 -model name : Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz -stepping : 2 -microcode : 0x3c -cpu MHz : 1757.910 -cache size : 30720 KB -physical id : 0 -siblings : 12 -core id : 0 -cpu cores : 12 -apicid : 0 -initial apicid : 0 -fpu : yes -fpu_exception : yes -cpuid level : 15 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb invpcid_single tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm xsaveopt cqm_llc cqm_occup_llc ibpb ibrs stibp dtherm arat pln pts spec_ctrl intel_stibp -bogomips : 4987.97 -clflush size : 64 -cache_alignment : 64 -address sizes : 46 bits physical, 48 bits virtual -power management: diff --git a/tests/archdetect/x86_64/intel/broadwell/archspec-linux-E5-2680-v3.output b/tests/archdetect/x86_64/intel/broadwell/archspec-linux-E5-2680-v3.output deleted file mode 100644 index 5af6120686..0000000000 --- a/tests/archdetect/x86_64/intel/broadwell/archspec-linux-E5-2680-v3.output +++ /dev/null @@ -1 +0,0 @@ -x86_64/intel/haswell diff --git a/tests/archdetect/x86_64/intel/skylake_avx512/archspec-linux-6132.all.output b/tests/archdetect/x86_64/intel/skylake_avx512/archspec-linux-6132.all.output index c9fa524ea6..1916ae4153 100644 --- a/tests/archdetect/x86_64/intel/skylake_avx512/archspec-linux-6132.all.output +++ b/tests/archdetect/x86_64/intel/skylake_avx512/archspec-linux-6132.all.output @@ -1 +1 @@ -x86_64/intel/skylake_avx512:x86_64/intel/haswell:x86_64/generic \ No newline at end of file +x86_64/intel/skylake_avx512:x86_64/intel/broadwell:x86_64/generic From cafb53a608906ce0b9892b68f1d49762097c833c Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Wed, 24 Jan 2024 00:20:22 +0100 Subject: [PATCH 08/17] define directory that contains repos cfg --- .github/workflows/tests_scripts.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/tests_scripts.yml b/.github/workflows/tests_scripts.yml index 4e44351f27..0edaacccf3 100644 --- a/.github/workflows/tests_scripts.yml +++ b/.github/workflows/tests_scripts.yml @@ -49,6 +49,7 @@ jobs: - name: list available repos run: | + export EESSI_REPOS_CFG_DIR_OVERRIDE=${PWD}/repos ./eessi_container.sh --list-repos - name: test load_easybuild_module.sh script @@ -88,6 +89,7 @@ jobs: # run wrapper script + capture & check output out="${PWD}/eb-${EB_VERSION}.out" + export EESSI_REPOS_CFG_DIR_OVERRIDE=${PWD}/repos ./eessi_container.sh --access rw --mode run --verbose --repository nessi.no-2023.06-software /software-layer/run_in_compat_layer_env.sh /software-layer/eb-${EB_VERSION}.sh 2>&1 | tee ${out} pattern="^This is EasyBuild ${EB_VERSION} " grep "${pattern}" ${out} || (echo "Pattern '${pattern}' not found in output!" && exit 1) @@ -99,6 +101,7 @@ jobs: export SINGULARITY_BIND="${PWD}:/software-layer" # force using x86_64/generic, to avoid triggering an installation from scratch sed -i "s@./EESSI-install-software.sh@\"export EESSI_SOFTWARE_SUBDIR_OVERRIDE='x86_64/generic'; ./EESSI-install-software.sh\"@g" install_software_layer.sh + export EESSI_REPOS_CFG_DIR_OVERRIDE=${PWD}/repos ./eessi_container.sh --mode run --verbose --repository nessi.no-2023.06-software /software-layer/install_software_layer.sh - name: test create_directory_tarballs.sh script @@ -107,6 +110,7 @@ jobs: export SINGULARITY_BIND="${PWD}:/software-layer" # scripts need to be copied to /tmp, # since create_directory_tarballs.sh must be accessible from within build container + export EESSI_REPOS_CFG_DIR_OVERRIDE=${PWD}/repos ./eessi_container.sh --mode run --verbose --repository nessi.no-2023.06-software /software-layer/create_directory_tarballs.sh 2023.06 # check if tarballs have been produced ls -l *.tar.gz From a82f1639a4c9961e06599bd919e8f8c35f012841 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Wed, 24 Jan 2024 00:58:51 +0100 Subject: [PATCH 09/17] bump eb version to 4.8.0 --- .github/workflows/tests_scripts.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests_scripts.yml b/.github/workflows/tests_scripts.yml index a2fb0412d8..1b9680b720 100644 --- a/.github/workflows/tests_scripts.yml +++ b/.github/workflows/tests_scripts.yml @@ -52,7 +52,7 @@ jobs: # can't test with EasyBuild versions older than v4.5.2 when using EESSI 2023.06, # since Python in compat layer is Python 3.11.x; # testing with a single EasyBuild version takes a while in GitHub Actions, so stick to a single sensible version - for EB_VERSION in '4.6.0'; do + for EB_VERSION in '4.8.0'; do # Create script that uses load_easybuild_module.sh which we can run in compat layer environment # note: Be careful with single vs double quotes below! # ${EB_VERSION} should be expanded, so use double quotes; From 2c1d681ecf5d7a8925d8e6c8a62372325921b430 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Wed, 24 Jan 2024 08:39:31 +0100 Subject: [PATCH 10/17] test CI against software.eessi.io and show last eb log --- .github/workflows/tests_scripts.yml | 43 +++++++++++++++++++++++++++++ load_easybuild_module.sh | 7 ++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests_scripts.yml b/.github/workflows/tests_scripts.yml index 1b9680b720..f733668d62 100644 --- a/.github/workflows/tests_scripts.yml +++ b/.github/workflows/tests_scripts.yml @@ -44,6 +44,49 @@ jobs: export EESSI_REPOS_CFG_DIR_OVERRIDE=${PWD}/repos ./eessi_container.sh --list-repos + - name: test load_easybuild_module.sh script with software.eessi.io + run: | + # bind current directory into container as /software-layer + export SINGULARITY_BIND="${PWD}:/software-layer" + + # can't test with EasyBuild versions older than v4.5.2 when using EESSI 2023.06, + # since Python in compat layer is Python 3.11.x; + # testing with a single EasyBuild version takes a while in GitHub Actions, so stick to a single sensible version + for EB_VERSION in '4.6.0'; do + # Create script that uses load_easybuild_module.sh which we can run in compat layer environment + # note: Be careful with single vs double quotes below! + # ${EB_VERSION} should be expanded, so use double quotes; + # For statements using variables that are only defined in the script, like ${EASYBUILD_INSTALLPATH}, + # use single quotes to avoid expansion while creating the script. + test_script="${PWD}/eb-${EB_VERSION}.sh" + echo '#!/bin/bash' > ${test_script} + # both $EB and $TMPDIR environment must be set, required by load_easybuild_module.sh script + echo 'export EB="eb"' >> ${test_script} + echo 'export TMPDIR=$(mktemp -d)' >> ${test_script} + # set up environment to have utility functions in place that load_easybuild_module.sh script relies on, + # along with $EESSI_* environment variables, and Lmod + echo 'ls -l /software-layer/' >> ${test_script} + echo 'source /software-layer/scripts/utils.sh' >> ${test_script} + echo 'source /software-layer/init/eessi_environment_variables' >> ${test_script} + echo 'source ${EPREFIX}/usr/share/Lmod/init/bash' >> ${test_script} + # minimal configuration for EasyBuild so we can test installation aspect of load_easybuild_module.sh script + echo "export EASYBUILD_INSTALLPATH=/tmp/eb-${EB_VERSION}" >> ${test_script} + echo 'module use ${EASYBUILD_INSTALLPATH}/modules/all' >> ${test_script} + echo '' >> ${test_script} + echo "source /software-layer/load_easybuild_module.sh ${EB_VERSION}" >> ${test_script} + echo 'module list' >> ${test_script} + echo 'eb --version' >> ${test_script} + + chmod u+x ${test_script} + + # run wrapper script + capture & check output + out="${PWD}/eb-${EB_VERSION}.out" + export EESSI_REPOS_CFG_DIR_OVERRIDE=${PWD}/repos + ./eessi_container.sh --access rw --mode run --verbose --repository EESSI /software-layer/run_in_compat_layer_env.sh /software-layer/eb-${EB_VERSION}.sh 2>&1 | tee ${out} + pattern="^This is EasyBuild ${EB_VERSION} " + grep "${pattern}" ${out} || (echo "Pattern '${pattern}' not found in output!" && exit 1) + done + - name: test load_easybuild_module.sh script run: | # bind current directory into container as /software-layer diff --git a/load_easybuild_module.sh b/load_easybuild_module.sh index d1bfd18bb5..412d3894c6 100755 --- a/load_easybuild_module.sh +++ b/load_easybuild_module.sh @@ -68,7 +68,12 @@ else ok_msg="Latest EasyBuild release installed, let's go!" fail_msg="Installing latest EasyBuild release failed, that's not good... (output: ${eb_install_out})" ${EB} --install-latest-eb-release 2>&1 | tee ${eb_install_out} - check_exit_code $? "${ok_msg}" "${fail_msg}" + exit_code=$? + if [[ $exit_code -ne 0 ]]; then + # show last log + cat $(${EB} --last-log) + fi + check_exit_code ${exit_code} "${ok_msg}" "${fail_msg}" # maybe the module obtained with --install-latest-eb-release is exactly the EasyBuild version we wanted? IGNORE_CACHE='' From dcab6f2b0b4cfbfa69966bd5b18a4815f6777f38 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Wed, 24 Jan 2024 08:49:27 +0100 Subject: [PATCH 11/17] add fuse mount for cvmfs-config --- eessi_container.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/eessi_container.sh b/eessi_container.sh index 6e68524edb..149387f4ad 100755 --- a/eessi_container.sh +++ b/eessi_container.sh @@ -576,6 +576,7 @@ declare -a EESSI_FUSE_MOUNTS=() # always mount cvmfs-config repo (to get access to software.eessi.io) # Commented out intentionally EESSI_FUSE_MOUNTS+=("--fusemount" "container:cvmfs2 cvmfs-config.cern.ch /cvmfs/cvmfs-config.cern.ch") +EESSI_FUSE_MOUNTS+=("--fusemount" "container:cvmfs2 cvmfs-config.cern.ch /cvmfs/cvmfs-config.cern.ch") if [[ "${ACCESS}" == "ro" ]]; then export EESSI_READONLY="container:cvmfs2 ${repo_name} /cvmfs/${repo_name}" From 63101e77cf9a791212e07ec3ea274e520da7e2d8 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Wed, 24 Jan 2024 09:06:06 +0100 Subject: [PATCH 12/17] override repo for specific task --- .github/workflows/tests_scripts.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests_scripts.yml b/.github/workflows/tests_scripts.yml index f733668d62..a744ee7c1c 100644 --- a/.github/workflows/tests_scripts.yml +++ b/.github/workflows/tests_scripts.yml @@ -82,6 +82,7 @@ jobs: # run wrapper script + capture & check output out="${PWD}/eb-${EB_VERSION}.out" export EESSI_REPOS_CFG_DIR_OVERRIDE=${PWD}/repos + export EESSI_CVMFS_REPO_OVERRIDE="software.eessi.io" ./eessi_container.sh --access rw --mode run --verbose --repository EESSI /software-layer/run_in_compat_layer_env.sh /software-layer/eb-${EB_VERSION}.sh 2>&1 | tee ${out} pattern="^This is EasyBuild ${EB_VERSION} " grep "${pattern}" ${out} || (echo "Pattern '${pattern}' not found in output!" && exit 1) From c124baad6c053df25a2cf04bba235648da633541 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Wed, 24 Jan 2024 10:20:34 +0100 Subject: [PATCH 13/17] repo override needs to include /cvmfs/ --- .github/workflows/tests_scripts.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests_scripts.yml b/.github/workflows/tests_scripts.yml index a744ee7c1c..4693e147ab 100644 --- a/.github/workflows/tests_scripts.yml +++ b/.github/workflows/tests_scripts.yml @@ -82,7 +82,7 @@ jobs: # run wrapper script + capture & check output out="${PWD}/eb-${EB_VERSION}.out" export EESSI_REPOS_CFG_DIR_OVERRIDE=${PWD}/repos - export EESSI_CVMFS_REPO_OVERRIDE="software.eessi.io" + export EESSI_CVMFS_REPO_OVERRIDE="/cvmfs/software.eessi.io" ./eessi_container.sh --access rw --mode run --verbose --repository EESSI /software-layer/run_in_compat_layer_env.sh /software-layer/eb-${EB_VERSION}.sh 2>&1 | tee ${out} pattern="^This is EasyBuild ${EB_VERSION} " grep "${pattern}" ${out} || (echo "Pattern '${pattern}' not found in output!" && exit 1) From 8460e9e4a449a09de8e087ef58af4f89ce8a3f91 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Fri, 26 Jan 2024 05:26:28 +0100 Subject: [PATCH 14/17] small update to show more debug info --- load_easybuild_module.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/load_easybuild_module.sh b/load_easybuild_module.sh index 412d3894c6..decde14e51 100755 --- a/load_easybuild_module.sh +++ b/load_easybuild_module.sh @@ -71,6 +71,7 @@ else exit_code=$? if [[ $exit_code -ne 0 ]]; then # show last log + echo "show last log: cat $(${EB} --last-log)" cat $(${EB} --last-log) fi check_exit_code ${exit_code} "${ok_msg}" "${fail_msg}" From a538fde6f37bd5a6f05c09fd1fc9be4da5f948ca Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Fri, 26 Jan 2024 05:37:14 +0100 Subject: [PATCH 15/17] show which pip3 is used --- load_easybuild_module.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/load_easybuild_module.sh b/load_easybuild_module.sh index decde14e51..32d492d3db 100755 --- a/load_easybuild_module.sh +++ b/load_easybuild_module.sh @@ -55,6 +55,7 @@ else EB_TMPDIR=${TMPDIR}/ebtmp echo ">> Temporary installation (in ${EB_TMPDIR})..." pip_install_out=${TMPDIR}/pip_install.out + which pip3 pip3 install --prefix ${EB_TMPDIR} easybuild &> ${pip_install_out} # keep track of original $PATH and $PYTHONPATH values, so we can restore them From 160bfc250a56a18f385211e6965d65a4bd377625 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Fri, 26 Jan 2024 06:00:15 +0100 Subject: [PATCH 16/17] more info about pip3 run and which eb is used --- load_easybuild_module.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/load_easybuild_module.sh b/load_easybuild_module.sh index 32d492d3db..e91697e3ac 100755 --- a/load_easybuild_module.sh +++ b/load_easybuild_module.sh @@ -57,6 +57,10 @@ else pip_install_out=${TMPDIR}/pip_install.out which pip3 pip3 install --prefix ${EB_TMPDIR} easybuild &> ${pip_install_out} + if [[ $? -ne 0 ]]; then + echo "pip3 installing easybuild failed; see command output below" + cat ${pip_install_out} + fi # keep track of original $PATH and $PYTHONPATH values, so we can restore them ORIG_PATH=${PATH} @@ -68,6 +72,7 @@ else eb_install_out=${TMPDIR}/eb_install.out ok_msg="Latest EasyBuild release installed, let's go!" fail_msg="Installing latest EasyBuild release failed, that's not good... (output: ${eb_install_out})" + which ${EB} ${EB} --install-latest-eb-release 2>&1 | tee ${eb_install_out} exit_code=$? if [[ $exit_code -ne 0 ]]; then From 1227362c562ec12258ca5753b689ca76547dc5bd Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Fri, 26 Jan 2024 06:45:05 +0100 Subject: [PATCH 17/17] add pip3 output, run eb with debug info, add retry step --- load_easybuild_module.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/load_easybuild_module.sh b/load_easybuild_module.sh index e91697e3ac..e8fd762c13 100755 --- a/load_easybuild_module.sh +++ b/load_easybuild_module.sh @@ -60,6 +60,9 @@ else if [[ $? -ne 0 ]]; then echo "pip3 installing easybuild failed; see command output below" cat ${pip_install_out} + else + echo "pip3 installing easybuild succeeded; see command output below" + cat ${pip_install_out} fi # keep track of original $PATH and $PYTHONPATH values, so we can restore them @@ -73,12 +76,20 @@ else ok_msg="Latest EasyBuild release installed, let's go!" fail_msg="Installing latest EasyBuild release failed, that's not good... (output: ${eb_install_out})" which ${EB} - ${EB} --install-latest-eb-release 2>&1 | tee ${eb_install_out} + ${EB} --debug --install-latest-eb-release 2>&1 | tee ${eb_install_out} exit_code=$? if [[ $exit_code -ne 0 ]]; then # show last log echo "show last log: cat $(${EB} --last-log)" cat $(${EB} --last-log) + + # retry: wait a minute, then rerun command + date + SLEEP=60 + echo "first attempt failed, retrying it after waiting $SLEEP seconds" + sleep $SLEEP + date + ${EB} --debug --install-latest-eb-release 2>&1 | tee -a ${eb_install_out} fi check_exit_code ${exit_code} "${ok_msg}" "${fail_msg}"