From 192442f781f48b962def4ad0c2f42d0af77c5e33 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Mon, 17 Mar 2025 19:02:04 +0100 Subject: [PATCH 1/2] bump version to 5.0.0 --- easybuild/tools/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easybuild/tools/version.py b/easybuild/tools/version.py index 973803c07d..7b1716a497 100644 --- a/easybuild/tools/version.py +++ b/easybuild/tools/version.py @@ -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' From 57a317b4a4b89af7f9d8173944edf4dc2777cf84 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Mon, 17 Mar 2025 22:08:13 +0100 Subject: [PATCH 2/2] update release notes for EasyBuild v5.0.0 --- RELEASE_NOTES | 142 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 141 insertions(+), 1 deletion(-) diff --git a/RELEASE_NOTES b/RELEASE_NOTES index d531df52d7..9375667477 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -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)