From ebd4e86f5fbee507fcbdaacfc08e532da26f7680 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 6 Feb 2026 09:48:24 +0100 Subject: [PATCH 1/7] use Rust 1.91.1 instead of 1.88.0 for 2025b --- eb_hooks.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/eb_hooks.py b/eb_hooks.py index 2165e248..5d804075 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -151,7 +151,6 @@ def is_gcccore_1220_based(**kwargs): ) - def get_cuda_version(ec, check_deps=True, check_builddeps=True): """ Returns the CUDA version that this EasyConfig (ec) uses as a (build)dependency. @@ -255,6 +254,10 @@ def parse_hook(ec, *args, **kwargs): # inject the GPU property (if required) ec = inject_gpu_property(ec) + # run parse_hook_rust_2025b for any 2025b easyconfig + if ec['toolchain']['version'] in ['14.3.0', '2025b']: + parse_hook_rust_2025b(ec, eprefix) + def parse_list_of_dicts_env(var_name): """Parse a list of dicts that are stored in an environment variable string""" @@ -632,6 +635,20 @@ def parse_hook_qt5_check_qtwebengine_disable(ec, eprefix): raise EasyBuildError("Qt5-specific hook triggered for non-Qt5 easyconfig?!") +def parse_hook_rust_2025b(ec, eprefix): + """ + Replace build dependency on Rust 1.88.0 (used by the 2025b toolchain) by 1.91.1, + as 1.88.0 causes segmentation faults on A64FX. + cfr. https://github.com/EESSI/software-layer/pull/1357 + """ + orig_rust = ('Rust', '1.88.0') + new_rust = ('Rust', '1.91.1') + if orig_rust in ec['builddependencies']: + rust_index = ec['builddependencies'].index(orig_rust) + ec['builddependencies'][rust_index] = new_rust + print_msg(f"Replaced {orig_rust} build dependency by {new_rust}.") + + def parse_hook_ucx_eprefix(ec, eprefix): """Make UCX aware of compatibility layer via additional configuration options.""" if ec.name == 'UCX': From 1a227c7bedd6150cd5a943ce6036c4de24b55c22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 6 Feb 2026 09:50:05 +0100 Subject: [PATCH 2/7] add Python-bundle-PyPI-2025.07-GCCcore-14.3.0.eb --- .../software.eessi.io/2025.06/eessi-2025.06-eb-5.2.0-2025b.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 easystacks/software.eessi.io/2025.06/eessi-2025.06-eb-5.2.0-2025b.yml diff --git a/easystacks/software.eessi.io/2025.06/eessi-2025.06-eb-5.2.0-2025b.yml b/easystacks/software.eessi.io/2025.06/eessi-2025.06-eb-5.2.0-2025b.yml new file mode 100644 index 00000000..36517661 --- /dev/null +++ b/easystacks/software.eessi.io/2025.06/eessi-2025.06-eb-5.2.0-2025b.yml @@ -0,0 +1,2 @@ +easyconfigs: + - Python-bundle-PyPI-2025.07-GCCcore-14.3.0.eb From 39bf2e83b8e3061d821c8602c16f89db7c7ab358 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 6 Feb 2026 10:03:12 +0100 Subject: [PATCH 3/7] change rust hook to a maturin-specific one for now --- eb_hooks.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/eb_hooks.py b/eb_hooks.py index 5d804075..128aa9ee 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -254,10 +254,6 @@ def parse_hook(ec, *args, **kwargs): # inject the GPU property (if required) ec = inject_gpu_property(ec) - # run parse_hook_rust_2025b for any 2025b easyconfig - if ec['toolchain']['version'] in ['14.3.0', '2025b']: - parse_hook_rust_2025b(ec, eprefix) - def parse_list_of_dicts_env(var_name): """Parse a list of dicts that are stored in an environment variable string""" @@ -635,18 +631,21 @@ def parse_hook_qt5_check_qtwebengine_disable(ec, eprefix): raise EasyBuildError("Qt5-specific hook triggered for non-Qt5 easyconfig?!") -def parse_hook_rust_2025b(ec, eprefix): +def parse_hook_maturin(ec, eprefix): """ - Replace build dependency on Rust 1.88.0 (used by the 2025b toolchain) by 1.91.1, + Replace build dependency on Rust 1.88.0 by 1.91.1, as 1.88.0 causes segmentation faults on A64FX. cfr. https://github.com/EESSI/software-layer/pull/1357 """ - orig_rust = ('Rust', '1.88.0') - new_rust = ('Rust', '1.91.1') - if orig_rust in ec['builddependencies']: - rust_index = ec['builddependencies'].index(orig_rust) - ec['builddependencies'][rust_index] = new_rust - print_msg(f"Replaced {orig_rust} build dependency by {new_rust}.") + if ec.name == 'maturin': + orig_rust = ('Rust', '1.88.0') + new_rust = ('Rust', '1.91.1') + if orig_rust in ec['builddependencies']: + rust_index = ec['builddependencies'].index(orig_rust) + ec['builddependencies'][rust_index] = new_rust + print_msg(f"Replaced {orig_rust} build dependency by {new_rust}.") + else: + raise EasyBuildError("maturin-specific hook triggered for non-maturin easyconfig?!") def parse_hook_ucx_eprefix(ec, eprefix): @@ -1835,6 +1834,7 @@ def post_easyblock_hook(self, *args, **kwargs): 'fontconfig': parse_hook_fontconfig_add_fonts, 'FreeImage': parse_hook_freeimage_aarch64, 'grpcio': parse_hook_grpcio_zlib, + 'maturin': parse_hook_maturin, 'Mesa': parse_hook_mesa_use_llvm_minimal, 'OpenBLAS': parse_hook_openblas_relax_lapack_tests_num_errors, 'pybind11': parse_hook_pybind11_replace_catch2, From 00711bd25b4d3057e8a5eb9ee4f0550f4c7c16f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 6 Feb 2026 15:43:33 +0100 Subject: [PATCH 4/7] also check for maturin version --- eb_hooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eb_hooks.py b/eb_hooks.py index 128aa9ee..34cc0797 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -637,7 +637,7 @@ def parse_hook_maturin(ec, eprefix): as 1.88.0 causes segmentation faults on A64FX. cfr. https://github.com/EESSI/software-layer/pull/1357 """ - if ec.name == 'maturin': + if ec.name == 'maturin' and ec.version == '1.9.1': orig_rust = ('Rust', '1.88.0') new_rust = ('Rust', '1.91.1') if orig_rust in ec['builddependencies']: From 68ba610fd0bc4dca8963bdc7794d7125c368cf23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 6 Feb 2026 15:45:54 +0100 Subject: [PATCH 5/7] Update eb_hooks.py Co-authored-by: Kenneth Hoste --- eb_hooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eb_hooks.py b/eb_hooks.py index 34cc0797..b9a333cc 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -643,7 +643,7 @@ def parse_hook_maturin(ec, eprefix): if orig_rust in ec['builddependencies']: rust_index = ec['builddependencies'].index(orig_rust) ec['builddependencies'][rust_index] = new_rust - print_msg(f"Replaced {orig_rust} build dependency by {new_rust}.") + print_msg(f"Replaced {orig_rust} build dependency by {new_rust} for {ec.name} {ec.version}") else: raise EasyBuildError("maturin-specific hook triggered for non-maturin easyconfig?!") From 916e3b40661ee754d5d288629063c935b44edef9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 6 Feb 2026 15:48:37 +0100 Subject: [PATCH 6/7] split maturin if statement --- eb_hooks.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/eb_hooks.py b/eb_hooks.py index b9a333cc..7aeb76c3 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -637,13 +637,14 @@ def parse_hook_maturin(ec, eprefix): as 1.88.0 causes segmentation faults on A64FX. cfr. https://github.com/EESSI/software-layer/pull/1357 """ - if ec.name == 'maturin' and ec.version == '1.9.1': - orig_rust = ('Rust', '1.88.0') - new_rust = ('Rust', '1.91.1') - if orig_rust in ec['builddependencies']: - rust_index = ec['builddependencies'].index(orig_rust) - ec['builddependencies'][rust_index] = new_rust - print_msg(f"Replaced {orig_rust} build dependency by {new_rust} for {ec.name} {ec.version}") + if ec.name == 'maturin': + if ec.version == '1.9.1': + orig_rust = ('Rust', '1.88.0') + new_rust = ('Rust', '1.91.1') + if orig_rust in ec['builddependencies']: + rust_index = ec['builddependencies'].index(orig_rust) + ec['builddependencies'][rust_index] = new_rust + print_msg(f"Replaced {orig_rust} build dependency by {new_rust} for {ec.name} {ec.version}") else: raise EasyBuildError("maturin-specific hook triggered for non-maturin easyconfig?!") From 29d84feac7d06c98061d8146a6062d6a86566c5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 6 Feb 2026 15:50:57 +0100 Subject: [PATCH 7/7] remove easystack --- .../software.eessi.io/2025.06/eessi-2025.06-eb-5.2.0-2025b.yml | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 easystacks/software.eessi.io/2025.06/eessi-2025.06-eb-5.2.0-2025b.yml diff --git a/easystacks/software.eessi.io/2025.06/eessi-2025.06-eb-5.2.0-2025b.yml b/easystacks/software.eessi.io/2025.06/eessi-2025.06-eb-5.2.0-2025b.yml deleted file mode 100644 index 36517661..00000000 --- a/easystacks/software.eessi.io/2025.06/eessi-2025.06-eb-5.2.0-2025b.yml +++ /dev/null @@ -1,2 +0,0 @@ -easyconfigs: - - Python-bundle-PyPI-2025.07-GCCcore-14.3.0.eb