From 971680e49bc5923d86ea9cbbd08fd680e5cec6dc Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Tue, 19 Mar 2024 18:37:43 +0100 Subject: [PATCH 1/9] Add MODFLOW-6.4.4 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml index 384aa04a9c..d38510e4f3 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml @@ -52,3 +52,6 @@ easyconfigs: - ipympl-0.9.3-foss-2023a.eb: options: from-pr: 20126 + - MODFLOW-6.4.4-foss-2023a.eb: + options: + from-pr: 20142 From 6a75fadb6f18288625b44ece84e2c08769486189 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Wed, 20 Mar 2024 15:08:10 +0100 Subject: [PATCH 2/9] Build SuperLU first from a PR with the fix of our earlier issue in https://github.com/EESSI/software-layer/pull/507#issuecomment-2007779533 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml index d38510e4f3..b6c4775802 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml @@ -52,6 +52,9 @@ easyconfigs: - ipympl-0.9.3-foss-2023a.eb: options: from-pr: 20126 + - SuperLU_DIST-8.1.2-foss-2023a.eb: + options: + from-pr: 20162 - MODFLOW-6.4.4-foss-2023a.eb: options: from-pr: 20142 From 60ef117fb231fed3027d1ccb93ca988f1c4cf3cb Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Wed, 20 Mar 2024 16:44:28 +0100 Subject: [PATCH 3/9] Add PETSc as explicit build item, since it needs an EasyBlock change --- .../2023.06/eessi-2023.06-eb-4.9.0-2023a.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml index b6c4775802..f4709fb336 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml @@ -55,6 +55,10 @@ easyconfigs: - SuperLU_DIST-8.1.2-foss-2023a.eb: options: from-pr: 20162 + - PETSc-3.20-3-foss-2023a.eb: + options: + include-easyblocks-from-pr: 3086 + from-pr: 19686 - MODFLOW-6.4.4-foss-2023a.eb: options: from-pr: 20142 From 7ad8d02fcdde79a5c3ca2ab94a6ae7e2fd6aef8d Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Wed, 20 Mar 2024 16:59:06 +0100 Subject: [PATCH 4/9] Fix typo --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml index f4709fb336..846d89d3cb 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml @@ -55,7 +55,7 @@ easyconfigs: - SuperLU_DIST-8.1.2-foss-2023a.eb: options: from-pr: 20162 - - PETSc-3.20-3-foss-2023a.eb: + - PETSc-3.20.3-foss-2023a.eb: options: include-easyblocks-from-pr: 3086 from-pr: 19686 From b18d458a532517798a12fb2ee71c021f8756eb91 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Tue, 26 Mar 2024 18:19:36 +0100 Subject: [PATCH 5/9] Rebuild GCCcore, include a casacore rebuild to prove it solves the issue - we'll strip it before merging --- ...Ccore-13.2.0-fix-tree-optimization-arm.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/rebuilds/20240326-eb-4.9.0-GCCcore-13.2.0-fix-tree-optimization-arm.yml diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240326-eb-4.9.0-GCCcore-13.2.0-fix-tree-optimization-arm.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240326-eb-4.9.0-GCCcore-13.2.0-fix-tree-optimization-arm.yml new file mode 100644 index 0000000000..12a7390c55 --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/rebuilds/20240326-eb-4.9.0-GCCcore-13.2.0-fix-tree-optimization-arm.yml @@ -0,0 +1,19 @@ +# 2024-03-26 +# Rebuild GCCcore to fix a compiler bug in the tree-vectorizer +# We encountered it in https://github.com/EESSI/software-layer/pull/479#issuecomment-1957091774 +# and https://github.com/EESSI/software-layer/pull/507#issuecomment-2011724613 +# Upstream issue: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111478 +# Upstream fix: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=e5f1956498251a4973d52c8aad3faf34d0443169 +# Fix in EasyBuild https://github.com/easybuilders/easybuild-easyconfigs/pull/19974 +# https://github.com/easybuilders/easybuild-easyconfigs/pull/20218 +easyconfigs: + - GCCcore-12.3.0.eb: + options: + from-pr: 20218 + - GCCcore-13.2.0.eb: + options: + from-pr: 19974 + - casacore-3.5.0-foss-2023b.eb: + options: + from-pr: 19840 + include-easyblocks-from-pr: 3088 From 106d615fe390354fca94434953b84e61e6febe17 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Tue, 26 Mar 2024 18:21:01 +0100 Subject: [PATCH 6/9] Strip fix for casacore for now, to show that a GCCcore rebuild can fix the issue --- eb_hooks.py | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/eb_hooks.py b/eb_hooks.py index d93ee37067..9c6e2e4e61 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -160,32 +160,6 @@ def post_prepare_hook(self, *args, **kwargs): POST_PREPARE_HOOKS[self.name](self, *args, **kwargs) -def parse_hook_casacore_disable_vectorize(ec, eprefix): - """ - Disable 'vectorize' toolchain option for casacore 3.5.0 on aarch64/neoverse_v1 - Compiling casacore 3.5.0 with GCC 13.2.0 (foss-2023b) gives an error when building for aarch64/neoverse_v1. - See also, https://github.com/EESSI/software-layer/pull/479 - """ - if ec.name == 'casacore': - tcname, tcversion = ec['toolchain']['name'], ec['toolchain']['version'] - if ( - LooseVersion(ec.version) == LooseVersion('3.5.0') and - tcname == 'foss' and tcversion == '2023b' - ): - cpu_target = get_eessi_envvar('EESSI_SOFTWARE_SUBDIR') - if cpu_target == CPU_TARGET_NEOVERSE_V1: - if not hasattr(ec, 'toolchainopts'): - ec['toolchainopts'] = {} - ec['toolchainopts']['vectorize'] = False - print_msg("Changed toochainopts for %s: %s", ec.name, ec['toolchainopts']) - else: - print_msg("Not changing option vectorize for %s on non-neoverse_v1", ec.name) - else: - print_msg("Not changing option vectorize for %s %s %s", ec.name, ec.version, ec.toolchain) - else: - raise EasyBuildError("casacore-specific hook triggered for non-casacore easyconfig?!") - - def parse_hook_cgal_toolchainopts_precise(ec, eprefix): """Enable 'precise' rather than 'strict' toolchain option for CGAL on POWER.""" if ec.name == 'CGAL': @@ -605,7 +579,6 @@ def inject_gpu_property(ec): PARSE_HOOKS = { - 'casacore': parse_hook_casacore_disable_vectorize, 'CGAL': parse_hook_cgal_toolchainopts_precise, 'fontconfig': parse_hook_fontconfig_add_fonts, 'OpenBLAS': parse_hook_openblas_relax_lapack_tests_num_errors, From eedc0a8db61dc5bb6be822fee3302188b2a9b3c1 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Tue, 26 Mar 2024 22:53:25 +0100 Subject: [PATCH 7/9] Add newline at end of file --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml index 881b26a9ba..9382e4fd2a 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml @@ -62,4 +62,5 @@ easyconfigs: from-pr: 19686 - MODFLOW-6.4.4-foss-2023a.eb: options: - from-pr: 20142 \ No newline at end of file + from-pr: 20142 + From 12309813da7e58e4b8118f5f1f6c1d06dd865580 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Tue, 26 Mar 2024 23:18:29 +0100 Subject: [PATCH 8/9] Make sure rebuilds are done before other EasyStack files. Also, quote some variables when used in single brackets to get rid of '[: too many arguments' errors --- EESSI-install-software.sh | 8 ++++++-- EESSI-remove-software.sh | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 371dddaf55..34124953f6 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -203,8 +203,12 @@ ${EESSI_PREFIX}/scripts/gpu_support/nvidia/install_cuda_host_injections.sh -c 12 # ${EESSI_PREFIX}/scripts/gpu_support/nvidia/link_nvidia_host_libraries.sh # use PR patch file to determine in which easystack files stuff was added -changed_easystacks=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^easystacks/.*yml$' | egrep -v 'known-issues|missing') -if [ -z ${changed_easystacks} ]; then +# Get rebuild easystacks seperately, so they can be rebuild first. +# This avoids missing dependencies when the regular EasyStacks are built. +changed_easystacks_rebuilds=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^easystacks/.*yml$' | egrep -v 'known-issues|missing' | grep "/rebuilds/") +changed_easystacks=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^easystacks/.*yml$' | egrep -v 'known-issues|missing' | grep -v "/rebuilds/") +all_changed_easystacks="${changed_easystacks_rebuilds} ${changed_easystacks}" +if [ -z "${all_changed_easystacks}" ]; then echo "No missing installations, party time!" # Ensure the bot report success, as there was nothing to be build here else diff --git a/EESSI-remove-software.sh b/EESSI-remove-software.sh index 446a156cb8..c9ca19992d 100755 --- a/EESSI-remove-software.sh +++ b/EESSI-remove-software.sh @@ -92,7 +92,7 @@ pr_diff=$(ls [0-9]*.diff | head -1) # if this script is run as root, use PR patch file to determine if software needs to be removed first if [ $EUID -eq 0 ]; then changed_easystacks_rebuilds=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^easystacks/.*yml$' | egrep -v 'known-issues|missing' | grep "/rebuilds/") - if [ -z ${changed_easystacks_rebuilds} ]; then + if [ -z "${changed_easystacks_rebuilds}" ]; then echo "No software needs to be removed." else for easystack_file in ${changed_easystacks_rebuilds}; do From 4c895d10f600dc65226e4fb2485443e881fe2d1c Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Wed, 27 Mar 2024 13:32:44 +0100 Subject: [PATCH 9/9] loop over all_changed_easystacks, to include the rebuilds, and make sure they happen first --- 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 34124953f6..42a0ecca80 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -212,7 +212,7 @@ if [ -z "${all_changed_easystacks}" ]; then echo "No missing installations, party time!" # Ensure the bot report success, as there was nothing to be build here else - for easystack_file in ${changed_easystacks}; do + for easystack_file in ${all_changed_easystacks}; do echo -e "Processing easystack file ${easystack_file}...\n\n"