Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
easyconfigs:
- Python-bundle-PyPI-2025.07-GCCcore-14.3.0.eb
19 changes: 18 additions & 1 deletion eb_hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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"""
Expand Down Expand Up @@ -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,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like being consistent, but this does mean we got in uncharted territory compared to EasyBuild...

Maybe we should only do this where we've seen it matter, i.e. for maturin?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't really like that it would then basically mix different Rust versions for e.g. Python-bundle-PyPI (which has a build dependency on Rust itself, but also on maturin). But I can give that a try and see if that works. There are not that many easyconfigs that depend on Rust, so we can easily extend that list later on.

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':
Expand Down
Loading