-
Notifications
You must be signed in to change notification settings - Fork 144
EasyBuild 5.0 working group
Kenneth Hoste edited this page Jun 7, 2023
·
4 revisions
Useful links:
-
EUM'23 talk: https://easybuild.io/eum23/#easybuild5
-
GitHub Project: https://github.com/orgs/easybuilders/projects/18
-
milestones:
-
Sync meeting notes: https://github.com/easybuilders/easybuild/wiki/EasyBuild-5.0-working-group
Every 1st Wed of the month at 14:00 CE(S)T, via Zoom
- Wed 5 July 2023, 14:00 CEST
- Wed 2 Aug 2023, 14:00 CEST
- Wed 6 Sep 2023, 14:00 CEST
- Wed 4 Oct 2023, 14:00 CEST
...
Attendees: Bart, Sebastian, Kenneth, Jasper, Simon, Mikael, Alexandre
- We should check the ideas in https://github.com/easybuilders/easybuild/wiki/Breaking-changes-being-considered-for-EasyBuild-v5.0
-
GitHub Actions no longer support testing on top of Python 2.7 (cfr. framework PR #4267)
- see https://github.com/actions/runner-images/issues/7401 + https://github.com/actions/setup-python/issues/672
- Python 3.6 will follow quickly - we really want to keep testing on top of that
- Python 3.6 EOL is 21 Dec 2021
- we need to explore running the tests in a container that provides Python 3.6
- could use work done in PR #3968 as a base for that
-
proposal on splitting up extensions for Python/Perl/R
- prepped by Alex + Mikael
- see https://hackmd.io/K1QhWGfdQWa2ZtlXlWVCCA
- progress in context of
2023a
common toolchains:
- WIP PR #137 to include overview of changes in EasyBuild 5.0
-
5.0.x
branch was synced withdevelop
on 2023-06-07 - minor conflicts fixed (commit f378bac) - some progress on enabling
--trace
by default by Simon (PR #4250)- Simon: fixing the tests is painful, but we're very close, only 1 test is failing (unexpected output being generated)
- could consider setting
$EASYBUILD_DISABLE_TRACE
in test setup?
- very little progress by Kenneth on new
run
function (issue #4252)- may be useful to pair up with someone on this in the coming weeks?
- proposals for EasyBuild 5.0:
- rename unclear
ExtensionEasyblock.run()
method (issue #4113) - include entire flag in optarch (instead of excluding the initial dash) and maybe make it only per-compiler (issue #4269)
-
--optarch='march=x86-64 -mtune=generic'
vs--optarch='-march=x86-64 -mtune=generic'
-
- stop relying on
distutils
(https://github.com/easybuilders/easybuild-framework/issues/3963)- can already start testing with Python 3.12 pre-release, see https://github.com/actions/setup-python/releases/tag/v4.6.0
- stop relying on
imp
(will no longer be available in Python 3.12) (issue #4264) - require Lmod >= 7.0 ?
- Simon will write up a proposal for this soon to get community feedback
- Simon will also write a proposal for toolchain support policy (going back N common toolchain versions)
- rename unclear
-
5.0.x
branch was synced withdevelop
on 2023-06-07 - trivial conflicts fixed (commit f93e6cd) - no merged or WIP PRs for now
- TODO
- consistently import
LooseVersion
fromeasybuild.tools
instead ofdistutils.version
in all easyblocks - enable
download_dep_fail
,use_pip
,sanity_pip_check
by default inPythonPackage
- and then remove
use_pip = True
& co in all easyconfigs
- and then remove
- update version of
config.guess
used byConfigureMake
(issue #2826)- important to test across a bunch of OSs & CPU architectures
- Kenneth: aarch64 (Graviton* in AWS + Ampere Altra in Azure + A64FX in Isambard)
- Kenneth: power9le (emulated)
- Sebastian: riscv64
- important to test across a bunch of OSs & CPU architectures
- consistently import
-
5.0.x
branch was synced withdevelop
on 2023-06-07 - trivial conflicts fixed (commit c0fd7db) - no merged or WIP PRs for now
- TODO
- archive easyconfigs using a deprecated toolchains + toolchain policy
- archive ancient easyconfigs using
system
toolchain - archive directories that only have patches in them + cleaned up unused patches
- remove
use_pip = True
& co in all easyconfigs
Attendees: Simon, Kenneth, Adam, Bart, Mikael, Kurt, Alex, Jasper
- (2023-04-07) remove (deprecated) EasyBuild bootstrap script (PR #4233)
- (2023-04-12) remove support for Python 2.7 and 3.5 (PR #4229)
- (2023-04-12) remove experimental support for YAML-based easyconfig format (
.yeb
) (PR #4237) - clean up deprecated functionality
- (2023-04-15) remove deprecated
--wait-on-lock
option (PR #4239) - (2023-04-15) remove deprecated dummy toolchain (PR #4240)
- (2023-04-15) remove deprecated
--accept-eula
option (PR #4242) - (2023-04-15) remove deprecated
is_generic_easyblock
fromeasyconfig.py
(PR #4243) - (2023-04-15) remove deprecated
use_git_am
option toapply_patch
(PR #4244) - (2023-04-15) remove deprecated
fetch_extension_sources
(PR #4245) - (2023-04-15) change default for
change_into_dir
toFalse
forextract_file
(PR #4246)
- (2023-04-15) remove deprecated
- (2023-04-15) enforce correct
.patch(.*)
extension for patch files (PR #4247) - (2023-04-15) bump version to 5.0.0dev (PR #4236)
- (2023-04-07) version bump to 5.0.0dev (PR #2917)
- (2023-04-13) stop importing from deprecated
easybuild.tools.py2vs3
module + stop testing with Python 2.7 and 3.5 (PR #2916)
- (2023-04-07) version bump to 5.0.0dev (PR #17671)
https://github.com/easybuilders/easybuild-framework/pulls?q=is%3Aopen+is%3Apr+label%3AEasyBuild-5.0+
- enable
--trace
by default (PR #4250) [WIP Simon]
(no open PRs currently)
(no open PRs currently)
- rename unclear
ExtensionEasyblock.run()
method (issue #4113) - new
run
function (issue #4252)- Kenneth is currently exploring use of
run_cmd
+run_cmd_qa
functions, to design API ofrun
function - one
run
function vs multiple smallerrun_*
functions - keeping desired feature in the back of our head:
- dropping into an interactive shell for a failing command
- "wrapper" functions to run
make
with custom error patterns, etc.
- also ties to desire for better error reporting
- Kenneth is currently exploring use of
- enable
download_dep_fail
,use_pip
,sanity_pip_check
by default inPythonPackage
easyblock (issues #1865 + #2127) - update version of
config.guess
used byConfigureMake
(issue #2826) - import
LooseVersion
fromeasybuild.tools
- archive easyconfigs for EasyBuild 5.0 (issue #17848) [WIP Simon]
- we should also check easyconfigs using system toolchain
- clean up unused patches (issue #11116)
- framework: https://github.com/easybuilders/easybuild-framework/milestone/71
- easyblocks: https://github.com/easybuilders/easybuild-easyblocks/milestone/73
- easyconfigs: https://github.com/easybuilders/easybuild-easyconfigs/milestone/72
- Unclear whether we'll actually drop support for Lmod 6 + 7
- Most recent Lmod 6.x was released in 2016
- Most recent Lmod 7.x was released in 2019
- Mostly to motivate people to move to Lmod 8.x
- No real benefit to EasyBuild in terms of code cleanup, etc.
- Simon will open issue to request input from sites that care (with some deadline)
- Sites that use Ubuntu include Umeå Univ. + JSC, maybe others
- We may also be annoying people who can't control the Lmod being used (not sysadmins)
- What about with Python/R/Perl easyconfigs and their extensions?
- completely bare (no extensions) + bundles of extensions on top
- minimal (only key extensions like
pip
for Python, etc.) - for Python, getting rid of
cryptography
extensions (because it pulls inRust
as a build dependency) - only extensions to install Python packages: pip/setuptools/wheel/poetry/hatchling/build (+ virtualenv?)
- separate bundle of Python build tools like pip & co
- alias pip="python3 -m pip" in Python easyconfig
- absolute minimum for Python: pip+wheel+setuptools
- separate eayconfigs for poetry + hatchling + ...
- rule to decide which extensions to include in Python could be "which Python packages are needed to install virtualenv with Python"
- another rule could be "no extra dependencies should be added to Python just to support a particular extension"
- whatever policy we come up with, it should be clearly motivated, documented, and easy to understand
- who comes up with a couple of very concrete proposals on how to split Python extensions into bundles, along with clear rules that dictate what goes where?
- Alex + Mikael
- via https://hackmd.io/K1QhWGfdQWa2ZtlXlWVCCA
- aim should be Python in 2023a common toolchains (based on upcoming GCC 12.3?)
- by next EB 5.0 sync meeting (7 June)
- similar discussion/rules needed for R + Perl + ...
- R: devtools only? (https://cran.r-project.org/web/packages/devtools/)
- CRAN bundle on top of R, similar to Bioconductor bundle?
- should also consider user interface, how do we inform users that R doesn't include all of CRAN anymore?
- may be a non-issue, most people probably just load R-bundle-Bioconductor
- aspects to come up with rules for extensions
- where do sources come from (CRAN/PyPI vs GitHub)
- build vs runtime
- extra deps needed
- startup performance (# paths in $PYTHONPATH)