Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
142 changes: 141 additions & 1 deletion RELEASE_NOTES
Original file line number Diff line number Diff line change
@@ -1,7 +1,147 @@
This file contains a description of the major changes to the easybuild-framework EasyBuild package.
For more detailed information, please see the git log.

These release notes can also be consulted at https://easybuild.readthedocs.io/en/latest/Release_notes.html.
These release notes can also be consulted at https://docs.easybuild.io/release-notes .


v5.0.0 (18 March 2025)
----------------------

- remove support for Python 2.7 and 3.5 (#4229, #4270, #4306, #4473, #4477, #4476, #4478, #4524, #4607, #4756, #4810, #4811)
- also run unit test suite with Python 3.12 + 3.13 (#4484, #4674)
- changed defaults in EasyBuild configuration:
- enable --trace by default (#4250, #4310, #4311, #4491)
- enable RPATH linking by default (#4448, #4515, #4779)
- disable strict RPATH sanity check by default, allow re-enabling it via `--strict-rpath-sanity-check` configuration option (#4475)
- enable `module-depends-on` by default (#4500)
- enable `module-extensions` by default (#4501)
- set default maximum level of parallellism to `16` via `max-parallel` configuration option (#4606, #4777, #4816)
- use Slurm as the default job backend (#4659)
- enable keeping of symbolic links by default when copying (set `keepsymlinks` easyconfig parameter to `True`) (#4773)
- changed behaviour:
- change default for `change_into_dir` option in `extract_file` function to to `False` (#4246)
- enforce correct `.patch(.*)` extension for patch files (#4247)
- create `lib` -> `lib64` symlink (or vice versa) *before* running `postinstallcmds` (#4435)
- don't allow unresolved templates in easyconfig parameters by default + add support for `--allow-unresolved-templates` configuration option (#4516, #4725, #4726, #4727)
- switch default checksum to `sha256` (#4523)
- only allow use of `rpath` toolchain option when `system` toolchain is used (#4585, #4808)
- use default value `$XDG_CONFIG_DIRS` from XDG basedir spec: `/etc/xdg` (instead of `/etc`) (#4591)
- reverse order for parsing files in `XDG_CONFIG_DIRS` (#4630)
- move verifying of checksums from `source` to `fetch` step, to include it with `--fetch` (#4624, #4729)
- drop support for pep8 package (was used for `--check-contrib` + `--check-style`) (#4634)
- specify changes that should be made by generated module files via `module_load_environment` attribute of `EasyBlock` class (#4653, #4754, #4761, #4774, #4799, #4784, #4801, #4802, #4803, #4809)
- let jobs retweak easyconfigs themselves by passing down `--try-*` options (#4669)
- refactor `make_extension_string` method in `EasyBlock` class (#4690)
- change `Toolchain.get_flag` so it doesn't automatically prepend a dash (`-`) to compiler flags (#4698)
- rename `Compiler.COMPILER*_FLAGS` to `Compiler.COMPILER*_OPTIONS` (#4698)
- change semantics of `--dry-run`, so it doesn't imply `--robot` (#4704)
- run sanity checks commands from an empty temporary directory (rather than the software install directory) (#4723)
- add context manager for allowing unresolved templates and make the state members private (#4735)
- also remove support for directly setting `enable_templating` and `expect_resolved_template_values`
- various enhancements:
- `run_shell_cmd` function to run shell commands which replaces both the (now deprecated) `run_cmd` and `run_cmd_qa` functions (#4284, #4314, #4321, #4322, #4327, #4334, #4335, #4336, #4351, #4356, #4378, #4380, #4383, #4390, #4422, #4423, #4427, #4428, #4430, #4431, #4432, #4441, #4443, #4444, #4453, #4454, #4471, #4504, #4509, #4544, #4612, #4617, #4664, #4721, #4728, #4731, #4755, #4757)
- detect Fortran `.mod` files for installations using `GCCcore` toolchain (#4389)
- create `env.sh` and `cmd.sh` helper scripts in `run_shell_cmd` to allow starting interactive shell to debug failing shell commands (#4486, #4611, #4662, #4666, #4685, #4792)
- add support for alternate easyconfig parameters/templates/constants (#4511, #4514, #4549, #4555)
- create reproducible tarballs for sources created via `git_config` (requires `.tar.xz` + Python 3.9+) (#4248, #4517, #4522, #4660, #4733, #4797, #4798, #4813)
- use more granular exit codes when `EasyBuildError` is raised (#4534)
- prepend to `$PYTHONPATH` or `$EBPYTHONPREFIXES` in generated module files by automatically scanning for Python site package directories (as configured via `prefer-python-search-path`) (#4539, #4686)
- copy build directory and/or log file(s) if installation failed to path specified via `--failed-install-build-dirs-path` or `--failed-install-logs-path` (#4601)
- add `--search-path-cpp-headers` configuration option to control how EasyBuild sets paths to headers at build time (#4645)
- add `module-search-path-headers` configuration option to control how modules set search paths to header files (#4655)
- add `--keep-debug-symbols` configuration option to set default value of '`debug`' toolchain option (#4688, #4764)
- add `--search-path-linker` option to control linker options at build time (#4697)
- don't raise error when required extensions are not found when installing extensions in parallel (#4671)
- mark support for installing extensions in parallel as being mature, since it's no longer experimental (#4672)
- mark easystack support as being mature, since it's no longer experimental (#4673)
- and several additional small enhancements:
- enhance download instructions by mentioning active source path (#4459)
- add CUDA compute capability integer format templates (`cuda_int_*_sep`) (#4463)
- add new `get_cwd` function to `tools.filetools` to retrieve current working directory (#4525)
- use `dict.items()` instead of repeatedly getting the value (#4533)
- set `usedforsecurity` to `False` when calling `hashlib.md5` with Python >= 3.9 (#4550)
- add `GNU_FTP_SOURCE` template constant (#4598)
- allow using `amend/try-amend` multiple times in an easystack file entry (#4667)
- add support for `%(rpath_enabled)s` template value (#4670)
- add `resolve_template` method to `EasyConfig` class (#4677)
- allow templates in `custom_paths` & `custom_commands` sanity-check arguments (#4679)
- updates and fixes for `findPythonDeps` script (#4682, #4740)
- allow use of custom delimiter for paths in module generator (#4687)
- enhance `get_software_libdir` to return full paths if requested (#4699)
- enhance `EasyBlock` class to allow passing in `logfile` (#4707)
- avoid checking loaded module twice in `findUpdatedEcs.sh` script (#4710)
- allow nesting values in checksum dicts (#4711) Flamefire:non-dict MERGED 2024-12-02T12:14:12Z
- use `enumerate` where applicable + fix for `ModuleGenerator._generate_multi_deps_list` (#4720)
- faster `nub` function (#4737)
- enhance `apply_regex_substitutions` to support use of multi-line patterns, requiring matching all patterns in each file, and use pre-compiled regular expressions (#4758)
- ignore other classes if software specific easyblock class was found (#4769)
- also allow trailing whitespaces for `examples` and `citing` easyconfig parameters (#4796)
- enhance `get_gpu_info` to also use `amd-smi` for AMD GPUs if possible (#4805)
- various changes, improvemnents, and fixes for the supported modules tools (Environment Modules + Lmod)
- drop load storm safe guard for Environment Modules v4.2.4+ (#4373)
- run unit tests on an updated versions of Environment Modules: v4.5.3 + v5.3.1 (#4415)
- add `check_group` support for module files in Tcl syntax (#4418)
- bump minimum required Lmod to 8.0.0 (#4424)
- bump minimum required Tmod (4.x) to 4.3.0 (#4425)
- use `getenv` modulefile command with `EnvironmentModules` >= 4.2.0 (#4614)
- add module cache build support in `EnvironmentModules` class (#4615)
- derive `EnvironmentModules` class directly from `ModulesTool` rather than from to be deprecated `EnvironmentModulesTcl` (#4625)
- adapt `module show` command run to cope with non-zero exit code for non-existing module (required for Environment Modules v5.5+ and Lmod 8.7.56+) (#4739)
- various improvements for the framework test suite:
- allow test case filtering by class name (#4788)
- improve test failure output for `assertEqual` (#4807)
- fix `test_modulerc` by taking into account that wrapper module may also be shown as being loaded (#4778)
- (temporarily) use 5.0.x branch for easyblocks + easyconfigs in CI workflows (#4358)
- fix GitHub Actions for CentOS 7.9 container (#4712)
- stop using Ubuntu 20.4 in GitHub Actions workflows, use Ubuntu 22.04 instead (#4783)
- update GitHub actions workflows to use `ubuntu-24.04` where possible (#4795)
- various small bug fixes:
- silence output of included easyblocks for `--terse` (#4765)
- avoid processing the same EasyConfig multiple times (#4767)
- fix easyconfig parameter deprecation (#4479, #4480)
- switch from `ls` to `bash` in tests that are expecting this to be a binary (#4492)
- fix the checksum type check (#4578)
- fix `to_checksums` with `None` values in dicts and recursion (#4579)
- fix `test_toy_lock_cleanup_signals` (#4600)
- resolve symlink when making log dir writable (#4658)
- fix typo in `veryloose` toolchain option for RISC-V (#4668)
- fix dry-run output when using `multi_deps` (#4678)
- make `LooseVersion('1.0') == LooseVersion('1')` (#4691)
- fix FFT entry in `--list-toolchains` output for Cray toolchains (#4719)
- avoid making build directory read-only (#4736)
- deprecated functionality:
- `easybuild.tools.py2vs3` module (#4229)
- rename unclear `*run*` methods to `*install_extension*` + rename `install_extensions` to `install_all_extensions` (#4400)
- deprecate `run_cmd` and `run_cmd_qa` & co, move them to `easybuild._deprecated` module (#4433)
- deprecate support for `EnvironmentModulesC` and `EnvironmentModulesTcl` module tools (#4439)
- deprecate old checksum types (incl. md5) (#4526, #4545)
- deprecate use of `parallel` easyconfig parameter and fix updating the template value (#4580)
- convert template constant lists to dicts and export the constants by name (#4595)
- rename '`source`' step to '`extract`' (affects `skipsteps` easyconfig parameter + `--stop` option) (#4629)
- deprecate `make_module_req_guess` method in `EasyBlock` class (#4653, #4763)
- deprecate support for GC3Pie as job backend (#4659)
- add deprecation warning for `optarch` value without leading dash (#4698)
- deprecate `post_install_step` method in `EasyBlock`, was renamed to `post_processing_step` (#4715)
- remove functionality that was deprecated in EasyBuild v4.x, including:
- EasyBuild bootstrap script (#4233)
- support for YAML-based easyconfig format (.yeb) (#4237)
- `wait-on-lock` configuration setting (#4239)
- `dummy` toolchain (#4240)
- `accept-eula` configuration setting (#4242)
- `is_generic_easyblock` function from `easybuild.framework.easyconfig.easyconfig` (#4243)
- `use_git_am` option for `apply_patch` function (#4244)
- `fetch_extension_sources` method in `EasyBlock` class (#4245)
- support for 32-bit targets (#4272)
- `descr` option for `simple_option` function (#4273)
- `Toolchain.add_dependencies` method (#4274)
- `copytree`, `rmtree2` functions from `easybuild.filetools` (#4275)
- `skip_symlinks` option for `adjust_permissions` function (#4275)
- `log_error` option from `which` function (#4276)
- `skip_lower` option from `template_constant_dict` (#4277)
- `disable_templating` + `default_fallback` options in `get_easyblock_class` (#4278)
- `mod_exists_regex_template` options in `ModulesTool.exist` (#4279)
- other changes
- take into account that `VERBOSE_VERSION` imported from `easybuild.easyblocks` is now a string value (#4357)


v4.9.4 (22 September 2024)
Expand Down
2 changes: 1 addition & 1 deletion easybuild/tools/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
# recent setuptools versions will *TRANSFORM* something like 'X.Y.Zdev' into 'X.Y.Z.dev0', with a warning like
# UserWarning: Normalizing '2.4.0dev' to '2.4.0.dev0'
# This causes problems further up the dependency chain...
VERSION = LooseVersion('5.0.0beta2')
VERSION = LooseVersion('5.0.0')
UNKNOWN = 'UNKNOWN'
UNKNOWN_EASYBLOCKS_VERSION = '0.0.UNKNOWN.EASYBLOCKS'

Expand Down
Loading