Skip to content

Commit b952664

Browse files
author
Samuel Moors
committed
merge develop
2 parents 39f3a9a + 28df329 commit b952664

48 files changed

Lines changed: 932 additions & 497 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

RELEASE_NOTES

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,67 @@ For more detailed information, please see the git log.
33

44
These release notes can also be consulted at https://docs.easybuild.io/release-notes .
55

6-
The latest version of easybuild-easyblocks provides 199 software-specific easyblocks and 45 generic easyblocks.
6+
The latest version of easybuild-easyblocks provides 200 software-specific easyblocks and 45 generic easyblocks.
7+
8+
9+
v5.1.1 (6 July 2025)
10+
--------------------
11+
12+
update/bugfix release
13+
14+
- new easyblocks:
15+
- add custom easyblock for BLIS, which can also be used for AOCL-BLAS (#3773)
16+
- enhancements:
17+
- add support for iterative build of OpenBLAS with 64-bit integers (#2753)
18+
- add Kokkos mapping for AMD zen4 and NVIDIA Grace to LAMMPS easyblock (#3742)
19+
- enhance LLVM easyblock to use `dlopen` for AMDGPU/CUDA libomptarget / offload target libraries (#3747)
20+
- enhance Rust easyblock to allow specifying channel to use (stable vs nightly) (#3749)
21+
- enhance `run_pip_check` function to respect EasyBuild configuration option to ignore unversioned (0.0.0) Python packages (#3753)
22+
- enhance SuperLU easyblock to set configure options for ParMETIS (or disable it if ParMETIS is not a dependency) (#3767)
23+
- symlink CUPTI files to standard locations in CUDA installation (#3791)
24+
- enhance `PythonPackage` to allow specifying location to temporary installation used in test step + also update `$PATH` to pick up on binaries/scripts from it (#3797)
25+
- add support for `UCX`, `CUDA` and `mpi_abi` directly in MPICH easyblock (#3807)
26+
- refactor LLVM easyblock and install OpenMP library symlinks (#3815)
27+
- enhance `Bundle` generic easyblock to also run test step for each bundle component (#3748, #3752, #3775)
28+
- updates:
29+
- remove `2to3` file from sanity check in Anaconda easyblock (no longer there in recent versions) (#3761)
30+
- update numpy easyblock to support installing numpy >= 2.0 (#3777)
31+
- update Mesa easyblock to use not use removed `swrast` as gallium driver for Mesa versions >= 25.x (#3790)
32+
- bug fixes:
33+
- bug fixes for custom easyblock for LLVM:
34+
- ensure sysroot dynamic linker is used + add ignore patterns for failing tests that can be ignored in LLVM easyblock (#3741)
35+
- fix configuration option for OpenMP offload target + logic in sanity check step in LLVM easyblock (#3755)
36+
- use `self.start_dir` in LLVM easyblock (#3770)
37+
- moved logic from the constructor to `configure_step` in LLVM easyblock (so it can be used to install bundle component) (#3781)
38+
- fix LLVM easyblock to allow building with multiple versions at once (#3812)
39+
- do not create compiler configs for LLVM < 19 (#3817)
40+
- fix condition to ignore failed LLVM GPU tests (#3819)
41+
- fix/simplify use of `self.cfg.dependencies()` in various easyblocks: `CMake` (#3810), `OpenFOAM` (#3814), `PETSc` (#3813), `SLEPc` (#3811), `Term::ReadLine::Gnu` (#3808)
42+
- take into account that `f90wrap_version` may be `None` in MetalWalls easyblock (#3468)
43+
- fix `enhance_sanity_check` for `PythonPackage` (#3477)
44+
- improve reliability of PyTorch test reporting (#3723)
45+
- also install OpenCOSMORS for ORCA versions >= 6.0 (#3726)
46+
- fix missed f-string in `PythonPackage` easyblock (#3729)
47+
- use `--enable-install-libiberty` to enable `libiberty` for `binutils` + move `libiberty.a` binutils library to `lib` subdirectory if it's the only file in `lib64` subdirectory (#3736, #3822)
48+
- make sure RPATH wrappers shipped via `buildenv` are world executable (#3743)
49+
- take into account that `$PYTHONPATH` and `$PATH` may be unset in configure step of custom easyblock for scipy (#3744)
50+
- set `$HOME` to temporary folder for TensorFlow build and tests (#3751)
51+
- fix unbound variable `install_args` in Conda easyblock (#3763)
52+
- set `$CARGO_NET_OFFLINE` to `true` in `set_cargo_vars` method of `Cargo` easyblock (only if `offline` mode is used), so it's set for every extension when `CargoPythonBundle` easyblock is used (#3764)
53+
- fix test step for `CMakeNinja` easyblock by customizing `test_cmd` and `runtest` easyconfig parameters (#3771)
54+
- use `parallel` property rather than value of (deprecated) `parallel` easyconfig parameter in ORCA easyblock (#3772)
55+
- (re)set environment variables used by `cargo` in prepare step of `Cargo` easyblock (#3774)
56+
- don't forcibly set `$LD_LIBRARY_PATH` in LAMMPS sanity check (#3776)
57+
- add missing call to `make_module_step` for components in `Bundle` easyblock (#3801)
58+
- add support for hwloc to MPICH easyblock (#3821)
59+
- enhancements and fixes for test suite:
60+
- allow test case filtering and other `unittest` arguments (#3653)
61+
- other changes:
62+
- disable trace output when unpacking crates in Cargo easyblock (#3750)
63+
- update Rust easyblock to disable installations of docs via `--disable-docs` configure option (#3768)
64+
- simplify remaining `super()` calls (#3780)
65+
- handle `$PATH` environment variable with `module_load_environment` in init of `Binary` easyblock (#3787)
66+
- change ABAQUS easyblock to use `LM_LICENSE_FILE` instead of `ABAQUSLM_LICENSE_FILE` (#3794)
767

868

969
v5.1.0 (26 May 2025)

easybuild/easyblocks/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
# recent setuptools versions will *TRANSFORM* something like 'X.Y.Zdev' into 'X.Y.Z.dev0', with a warning like
4343
# UserWarning: Normalizing '2.4.0dev' to '2.4.0.dev0'
4444
# This causes problems further up the dependency chain...
45-
VERSION = '5.1.1.dev0'
45+
VERSION = '5.1.2.dev0'
4646
UNKNOWN = 'UNKNOWN'
4747

4848

easybuild/easyblocks/a/abaqus.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,6 @@ def make_module_extra(self):
366366
txt = super().make_module_extra()
367367
license_file = os.getenv('EB_ABAQUS_LICENSE_FILE', None)
368368
if license_file is not None:
369-
txt += self.module_generator.prepend_paths('ABAQUSLM_LICENSE_FILE', [license_file], allow_abs=True)
369+
txt += self.module_generator.prepend_paths('LM_LICENSE_FILE', [license_file], allow_abs=True)
370370

371371
return txt

easybuild/easyblocks/a/amber.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -328,10 +328,13 @@ def install_step(self):
328328

329329
super().install_step()
330330

331-
# Run the tests located in the build directory
331+
# Run the tests
332332
if self.cfg['runtest']:
333333
if LooseVersion(self.version) >= LooseVersion('24'):
334-
testdir = os.path.join(self.builddir, 'test')
334+
if self.name == 'AmberTools':
335+
testdir = os.path.join(self.builddir, 'AmberTools', 'test')
336+
elif self.name == 'Amber':
337+
testdir = os.path.join(self.builddir, 'test')
335338
testname_cs = 'test.cuda.serial'
336339
testname_cp = 'test.cuda.parallel'
337340
else:
@@ -341,12 +344,16 @@ def install_step(self):
341344
pretestcommands = 'source %s/amber.sh && cd %s' % (self.installdir, testdir)
342345

343346
# serial tests
344-
run_shell_cmd("%s && make test.serial" % pretestcommands)
347+
if LooseVersion(self.version) >= LooseVersion('24'):
348+
run_shell_cmd("%s && make test" % pretestcommands)
349+
else:
350+
run_shell_cmd("%s && make test.serial" % pretestcommands)
345351
if self.with_cuda:
346352
res = run_shell_cmd(f"{pretestcommands} && make {testname_cs}")
347353
if res.exit_code > 0:
348354
self.log.warning("Check the output of the Amber cuda tests for possible failures")
349355

356+
# parallel tests
350357
if self.with_mpi:
351358
# Hard-code parallel tests to use 4 threads
352359
env.setvar("DO_PARALLEL", self.toolchain.mpi_cmd_for('', 4))
@@ -373,11 +380,15 @@ def sanity_check_step(self):
373380
binaries.append('pmemd.cuda.MPI')
374381
else:
375382
binaries.append('pmemd.cuda_DPFP.MPI')
383+
if self.name == 'AmberTools':
384+
binaries.append('gem.pmemd')
376385

377386
if self.with_mpi:
378387
binaries.extend(['sander.MPI'])
379388
if self.name == 'Amber':
380389
binaries.append('pmemd.MPI')
390+
if self.name == 'AmberTools':
391+
binaries.append('gem.pmemd.MPI')
381392

382393
custom_paths = {
383394
'files': [os.path.join(self.installdir, 'bin', binary) for binary in binaries],

easybuild/easyblocks/a/anaconda.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import stat
3434

3535
from easybuild.easyblocks.generic.binary import Binary
36-
from easybuild.framework.easyconfig import CUSTOM
3736
from easybuild.tools.filetools import adjust_permissions, clean_dir
3837
from easybuild.tools.modules import MODULE_LOAD_ENV_HEADERS
3938
from easybuild.tools.run import run_shell_cmd
@@ -42,16 +41,6 @@
4241
class EB_Anaconda(Binary):
4342
"""Support for building/installing Anaconda and Miniconda."""
4443

45-
@staticmethod
46-
def extra_options():
47-
"""Add extra config options specific to Python."""
48-
extra_vars = {
49-
'fix_python_shebang_for': [['bin/*'], "List of files for which Python shebang should be fixed "
50-
"to '#!/usr/bin/env python' (glob patterns supported) "
51-
"(default: ['bin/*'])", CUSTOM],
52-
}
53-
return Binary.extra_options(extra_vars)
54-
5544
def __init__(self, *args, **kwargs):
5645
"""Initialize class variables."""
5746
super().__init__(*args, **kwargs)
@@ -85,7 +74,7 @@ def sanity_check_step(self):
8574
Custom sanity check for Anaconda and Miniconda
8675
"""
8776
custom_paths = {
88-
'files': [os.path.join('bin', x) for x in ['2to3', 'conda', 'pydoc', 'python', 'sqlite3']],
77+
'files': [os.path.join('bin', x) for x in ['conda', 'pydoc', 'python', 'sqlite3']],
8978
'dirs': ['bin', 'etc', 'lib', 'pkgs'],
9079
}
9180
super().sanity_check_step(custom_paths=custom_paths)

easybuild/easyblocks/a/armadillo.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,6 @@
3838
class EB_Armadillo(CMakeMake):
3939
"""Support for building Armadillo."""
4040

41-
@staticmethod
42-
def extra_options():
43-
"""Extra easyconfig parameters for Armadillo."""
44-
extra_vars = CMakeMake.extra_options()
45-
extra_vars['separate_build_dir'][0] = True
46-
return extra_vars
47-
4841
def configure_step(self):
4942
"""Set some extra environment variables before configuring."""
5043

easybuild/easyblocks/b/binutils.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
from easybuild.easyblocks.generic.configuremake import ConfigureMake
3838
from easybuild.framework.easyconfig import CUSTOM
3939
from easybuild.tools.build_log import EasyBuildError
40-
from easybuild.tools.filetools import apply_regex_substitutions, copy_file, symlink
40+
from easybuild.tools.filetools import apply_regex_substitutions, copy_file, move_file, remove_dir, symlink
4141
from easybuild.tools.modules import get_software_libdir, get_software_root
4242
from easybuild.tools.run import run_shell_cmd
4343
from easybuild.tools.systemtools import RISCV, get_cpu_family, get_gcc_version, get_shared_lib_ext
@@ -225,6 +225,20 @@ def install_step(self):
225225
copy_file(os.path.join(self.cfg['start_dir'], 'libiberty', 'libiberty.texi'),
226226
os.path.join(self.installdir, 'info', 'libiberty.texi'))
227227

228+
# if only libiberty.a is installed in 'lib64' subdirectory,
229+
# move it to 'lib' subdirectory and remove empty 'lib64' subdirectory,
230+
# so 'lib64' will be symlinked to 'lib' (by EasyBlock.post_processing_step)
231+
lib64_path = os.path.join(self.installdir, 'lib64')
232+
libiberty_static_lib = 'libiberty.a'
233+
if os.path.exists(lib64_path) and os.listdir(lib64_path) == [libiberty_static_lib]:
234+
lib_path = os.path.join(self.installdir, 'lib')
235+
self.log.info(f"Found only {libiberty_static_lib} in {lib64_path}, moving it to {lib_path}")
236+
src_path = os.path.join(lib64_path, libiberty_static_lib)
237+
target_path = os.path.join(lib_path, libiberty_static_lib)
238+
move_file(src_path, target_path)
239+
self.log.info(f"Removing (now empty) {lib64_path} directory")
240+
remove_dir(lib64_path)
241+
228242
def sanity_check_step(self):
229243
"""Custom sanity check for binutils."""
230244

easybuild/easyblocks/b/blat.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ def configure_step(self):
4242
"""Configure build: just create a 'bin' directory."""
4343
mkdir("bin")
4444

45-
def build_step(self, verbose=False):
45+
def build_step(self, *args, **kwargs):
4646
"""Build BLAT using make and the appropriate options (e.g. BINDIR=)."""
4747
self.cfg.update('prebuildopts', "MACHTYPE=x86_64")
4848
bindir = os.path.join(os.getcwd(), "bin")
4949
self.cfg.update('buildopts', "BINDIR=%s" % bindir)
5050

51-
return super().build_step(verbose=verbose)
51+
return super().build_step(*args, **kwargs)

easybuild/easyblocks/c/cgal.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,6 @@
4242
class EB_CGAL(CMakeMake):
4343
"""Support for building CGAL."""
4444

45-
@staticmethod
46-
def extra_options():
47-
extra_vars = CMakeMake.extra_options()
48-
extra_vars['separate_build_dir'][0] = True
49-
return extra_vars
50-
5145
def configure_step(self):
5246
"""Set some extra environment variables before configuring."""
5347

easybuild/easyblocks/c/clang.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,14 @@ def __init__(self, *args, **kwargs):
120120
"""Initialize custom class variables for Clang."""
121121

122122
super().__init__(*args, **kwargs)
123+
124+
if LooseVersion(self.version) >= LooseVersion('18.1.6'):
125+
raise EasyBuildError(
126+
"The Clang EasyBlock has been deprecated and does not support LLVM versions >= 18.1.6. "
127+
"Please use the 'LLVM' EasyBlock instead, which supports building Clang as well "
128+
"as other LLVM projects."
129+
)
130+
123131
self.llvm_src_dir = None
124132
self.llvm_obj_dir_stage1 = None
125133
self.llvm_obj_dir_stage2 = None

0 commit comments

Comments
 (0)