-
Notifications
You must be signed in to change notification settings - Fork 144
EasyBuild 5.0 sync meetings
attending: ?
- status of
5.0.x
branches- synced with
develop
on 2024-02-07, only trivial merge conflicts had to be fixed
- synced with
- merged PRs
- framework
- deprecate support for
EnvironmentModulesC
(v3.2.x) andEnvironmentModulesTcl
(ancient v1.x) module tools (PR #4439)
- deprecate support for
- easyblocks
- various PRs to port software-specific easyblocks to
run_shell_cmd
- for Perl, we are ignoring exit code of shell command in
test_step
, that seems like a bug (PR #3162) - being fixed in easyblocks PR #3170
- no easyconfig for PALM (recently merged easyblock)
- for Perl, we are ignoring exit code of shell command in
- various PRs to port software-specific easyblocks to
- framework
- open PRs
- framework
- drop load storm safe guard for Environment Modules v4.2.4+ (PR #4373)
- should also switch to
depends_on
with Lmod as default?
- should also switch to
- replace
parallel
easyconfig parameter bymaxparallel
(PR #4398) - rename unclear
*run*
methods to*install_extension*
+ renameinstall_extensions
toinstall_all_extensions
(PR #4400)- "
see http://easybuild.readthedocs.org/en/latest/Deprecated-functionality.html for more information
" => this really needs to be updated (although link does still work), in a separate framework PR
- "
- bump minimum required Tmod (4.x) to 4.3.0 (PR #4425)
- blocked by PR #4415 to fix running of test suite with Tmod >= v4.3
- deprecate
run_cmd
andrun_cmd_qa
& co, move them toeasybuild._deprecated
module (WIP) (PR #4433)- WIP until
run_shell_cmd
implementation is complete (incl. Q&A support)
- WIP until
- create
lib
/lib64
symlink before runningpostinstallcmds
(PR #4435)- requires fixes in easyconfigs that will get broken because of this
- add support for running shell commands asynchronously with
run_shell_cmd
(PR #4444)- last place where framework itself still relies on
run_cmd
- implementation of
EasyBlock.install_extensions_parallel
can be improved further, but can be left for future PRs (even post-5.0 release) - ready for review/merge! => maybe Alex
- requires small change in easyblocks (see easyblocks PR #3163)
- last place where framework itself still relies on
- enable RPATH linking by default (PR #4448)
- drop load storm safe guard for Environment Modules v4.2.4+ (PR #4373)
- easyblocks
- 33 open PRs to port software-specific easyblocks to
run_shell_cmd
... - 9 open PRs to remove unused easyblocks
- update
run_async
methods inRPackage
,Rmpi
, andRserve
easyblocks to use submitrun_shell_cmd
call into thread pool (PR #3163)- required because of changes in framework PR #4444
- fix extension filter for Perl packages (PR #2699)
- 33 open PRs to port software-specific easyblocks to
- easyconfigs
- clean up easyconfigs that explicitly set
use_pip
,sanity_pip_check
anddownload_dep_fail
(PR #19265)
- clean up easyconfigs that explicitly set
- framework
- TODO
- directories that don't contain any library files shouldn't be added to
$LD_LIBRARY_PATH
(issue #3504)- makes sense for (bundles of) Python packages
- Clean up SLURM/Batchsystem environment before doing builds (issue #4434)
- should be done opt-in, via
--clean-up-slurm-env
configuration setting
- should be done opt-in, via
- change default backend for
--job
to Slurm (+ deprecate GC3Pie support) - document how to start playing with development pre-release version of EasyBuild 5.0
- create easyconfig to install
EasyBuild/dev-5.0.x-<datestamp>
- create easyconfig to install
- directories that don't contain any library files shouldn't be added to
attending: Simon, Jasper, Kenneth, Adam, Bart
- Alex reworked framework PR #4400
- companion easyblocks PR #3064 is ready for review
- Kenneth made progress on adopting
run_shell_cmd
inEasyblock.install_extensions_parallel
(PR #4444](https://github.com/easybuilders/easybuild-framework/pull/4444)) -
use_pip
is now enabled by default inPythonPackage
- easyconfigs PR #19265 needs a fix in the tests
- Simon has been migrating easyblocks
- one by one
- see overview at https://github.com/easybuilders/easybuild-easyblocks/issues/3089
- some easyblocks are being removed (ATLAS, ARB)
- removing BLACS easyblock causes trouble because
det_interface
function is also used in ScaLAPACK easyblock - if someone else wants to help porting easyblocks, communicate which ones you'll be tackling
- start in the middle
- Bart's overview table at https://docs.easybuild.io/easybuild-v5/run_shell_cmd is really useful
- Jasper will join the effort with Simon, starting at 'L'
- Bart can help migrate easyblocks, will focus on those in 'P' group (+ remove PGI easyblock)
- Jasper still needs to look into
parallel
/maxparallel
- Adam is up for helping with documentation
attending: Jasper, Alex, Simon, Sebastian, Kenneth (sort of)
- status of
5.0.x
branches- synced with
develop
on 20240119
- synced with
- merged PRs
- framework
- easyblocks
- easyconfigs
- archive EasyBuild 3.x easyconfigs (PR #19656)
- open PRs
- framework
- replace
parallel
easyconfig parameter bymaxparallel
(PR #4398) - rename unclear
*run*
methods to*install_extension*
+ renameinstall_extensions
toinstall_all_extensions
(PR #4400) - create
lib
/lib64
symlink before runningpostinstallcmds
(PR #4435) - deprecate support for
EnvironmentModulesC
andEnvironmentModulesTcl
module tools (PR #4439)- should just kick out these modules tools from testing configuration
- add support for running shell commands asynchronously with
run_shell_cmd
(WIP) (PR #4444)
- replace
- easyblocks
- fix extension filter for Perl packages (PR #2699)
- (still) awaiting more tests, need to compose list of relevant easyconfigs
- enable
download_dep_fail
,use_pip
,sanity_pip_check
by default inPythonPackage
easyblock (PR #3022)- good progress on dealing with easyconfigs that were not enabling these parameters yet, see checklist in PR comment
- open issues:
- PyTorch (see PR #3079)
- update
ConfigureMake
easyblock to error out on unknown configure args (PR #3025)- opt-out mechanism is implemented, some more requested changes => active work-in-progress
- rename
run
method toinstall_extension
, and likewise forprerun
topre_install_extension
,postrun
topost_install_extension
, andrun_async
toinstall_extension_async
(PR #3064)- blocked by framework PR #4400
- disable
use_pip
by default for PyTorch, except for recent versions (>= 2.0) (PR #3079)- blocker for PR #3022
- should be ready to merge (despite failed test report)
- fix extension filter for Perl packages (PR #2699)
- easyconfigs
- clean up easyconfigs that explicitly set
use_pip
,sanity_pip_check
anddownload_dep_fail
(PR #19265)- synced with
5.0.x
by@boegel
on 18 Jan'24 - we should also add a check in easyconfigs test suite to prevent that
use_pip = True
& co are re-introduced in easyconfigs...
- synced with
- replace
parallel
bymaxparallel
(PR #19375)
- clean up easyconfigs that explicitly set
- docs
- document how to transition from
run_cmd
torun_shell_cmd
(PR #238)
- document how to transition from
- framework
- TODO
- (Kenneth) finish run_shell_cmd async PR + review Bart's docs PR
- (Simon) auto-enable use_pip for PyTorch
- (Sebastian) auto-enable use_pip & co in PythonPackage
- (Alex) renaming
run
PR - (Jasper) look into PR for
parallel
->maxparallel
- porting easyblocks to
run_shell_cmd
- separate PRs: GCC, PyTorch, TensorFlow, ...
attending: Kenneth, Bart, Simon, Sebastian
- merged PRs (since last meeting)
-
easyblock #3046
- needs small follow-up for pythonpackage.py, for consistency: easyblock #3074
- easyblock #3067
- framework #4430
- framework #4431
- framework #4432
- easyconfigs #19494
- easyconfigs #19500
- easyconfigs #19501
-
easyblock #3046
- open PRs
-
easyblock PR #2699: fix extension filter for Perl packages
- waiting until other easyconfigs using
PerlModule
have been checked/fixed
- waiting until other easyconfigs using
-
easyblocks PR #3022: enable
download_dep_fail
,use_pip
,sanity_pip_check
by default inPythonPackage
easyblock- Waiting for fixing easyconfigs mentioned it the list
- once problem with
CMakePythonPackage
is fixed inPythonPackage
easyblock, half of the easyconfigs not enablinguse_pip
will be working fine
-
easyblock PR #3025: update
ConfigureMake
easyblock to error out on unknown configure args- opt-out support has been added
-
easyblock PR #3074: pythonpackage: Remove
hidden=True
fromrun_shell_cmd
for consistency - framework PR #3285: Deprecate failure to resolve a template value
-
framework PR #4248: Change tar command used in
get_source_tarball_from_git
to get reproducible tarballs - framework PR #4373: drop load storm safe guard for Environment Modules v4.2.4+
-
framework PR #4398: Replace
parallel
easyconfig parameter bymaxparallel
-
framework PR #4400: rename unclear
*run*
methods to*install_extension*
+ renameinstall_extensions
toinstall_all_extensions
- needs more work, current approach doesn't actually work to make sure that easyblocks that haven't migrated yet to new methods
-
easyblock PR #3064: rename
run
method to install_extension, and likewise for prerun topre_install_extension
, postrun topost_install_extension
, andrun_async
toinstall_extension_async
-
framework PR #4424: bump minimum required Lmod to 8.0.0
- should we required a more recent Lmod 8.x?
- harder to pick a particular 8.x than just using 8.0
- except if we require Lmod >= 8.2.8 which supports
extensions
in module files - => ready to merge!
-
framework PR #4425: bump minimum required Tmod (4.x) to 4.3.0
- requires framework PR ##4415: Run unit tests on an updated version of Modules 4
-
framwork PR #4433: deprecate
run_cmd
andrun_cmd_qa
& co, move them toeasybuild._deprecated
module (WIP)- should only be merged once implementation of
run_shell_cmd
- should only be merged once implementation of
-
framwork PR #4435: Create lib/lib64 symlink before running postinstallcmds
- will break some existing easyconfigs, so should only be done for EasyBuild 5.0
-
easyblock PR #2699: fix extension filter for Perl packages
- other
- we should also deprecate support for Tcl-based modules tools, like ancient pure Tcl + Tmod 3.2.x
- support for GC3Pie should be deprecated + use Slurm as default job backend
- TODO
- documentation on how to convert
run_cmd
torun_shell_cmd
(Bart) - support testing easyconfigs + easyblocks with 5.0.x branch (Sebastian)
- async option or thread pool for run_shell_cmd (Kenneth)
- fix issue with
use_pip = True
+CMakePythonPackage
(Kenneth) - Sebastian: review Bart's easyblock PR
- documentation on how to convert
attending: Kenneth, Bart, Simon, Mikael, Sebastian
- merged PRs (since last meeting)
- (none)
- status of
5.0.x
branches- synced with
develop
after release of EasyBuild v4.9.0 (on 2023-12-31 + 2024-01-01) - for now, let's keep merging changes for EasyBuild v5.0 to
5.0.x
branches, and keepdevelop
for a potential v4.9.x release (but hopefully there won't be a need for one) - re-evaluate during sync meeting of Feb'24
- synced with
- open PRs
- framework
- deprecate failure to resolve a template value (PR #3285)
- Kenneth should take a detailed look at this
- raising an error when a template could not be resolved is fine, since we don't really want to continue anyway if that's the case
- change
tar
command used inget_source_tarball_from_git
to get reproducible tarballs (PR #4248)- Jasper's testing shows that this won't really work as is
- doesn't work on macOS
- only works when
.git
folder is not retained - in the fridge for now, awaiting feedback from contributor + Jasper
- drop load storm safe guard for Environment Modules v4.2.4+ (PR #4373)
- need to think how to align this with Lmod
- do we change to using
depends_on
by default? (framework issue #4397)- helps with keeping default behaviour with Tmod & Lmod
- supported since July 2017 (cfr. this commit)
- => so yes
- should also bump required Tmod version to 4.3 in PR #4373
- better in a separate PR
- along with Lmod to 8.x, see issue #871
- detect Fortran
.mod
files in GCCcore installations (PR #4389)- only prints warning, unless EasyBuild is configured with
--fail-on-mod_files-gcccore
, so good to go as is? => yep - see also issue #4203 for list of easyconfigs where we need to whitelist (incl. Clang, AOCC, etc.)
- only prints warning, unless EasyBuild is configured with
- replace
parallel
easyconfig parameter bymaxparallel
(PR #4398)- see also easyconfigs PR #19375
- trivial change
parallel
->maxparallel
, but does change 721 easyconfigs (457 of which archived easyconfigs)
- trivial change
- do we need to "soften the blow" a bit w.r.t. easyconfigs still using
parallel
(deprecate it rather than hard remove it)?
- see also easyconfigs PR #19375
- rename unclear
run
methods to install extensions (PR #4400)- basically ready to merge, except that
log.deprecated
calls should use'6.0'
instead of'5.0'
- needs matching easyblocks PR
- basically ready to merge, except that
- use
run_shell_cmd
in scripts (PR #4422)- ready to review/merge => Simon
- implement support for '
stream_output
' option inrun_shell_cmd
(PR #4423)- ready to review/merge => Simon
- deprecate failure to resolve a template value (PR #3285)
- easyblocks
- fix extension filter for Perl packages (PR #2699)
- awaiting test of other easyconfigs that (indirectly) rely on
PerlModule
easyblock (Kenneth)
- awaiting test of other easyconfigs that (indirectly) rely on
- enable
download_dep_fail
,use_pip
,sanity_pip_check
by default in PythonPackage easyblock (PR #3022)- awaiting test report with relevant easyconfigs
- awaiting easyconfigs PR that sets
use_pip
& co toFalse
where needed => Kenneth - list of easyconfigs that need to be looked into @ https://github.com/easybuilders/easybuild-easyblocks/pull/3022#issuecomment-1875814148
- update
ConfigureMake
easyblock to error out on unknown configure args (PR #3025) - convert generic easyblocks to
run_shell_cmd
(PR #3046)- awaiting review/testing (Sebastian)
- fix extension filter for Perl packages (PR #2699)
- easyconfigs
- clean up easyconfigs that explicitly set
use_pip
,sanity_pip_check
anddownload_dep_fail
(PR #19265)
- clean up easyconfigs that explicitly set
- framework
- TODO
-
run_shell_cmd
- implement async option
- complete transition to
run_shell_cmd
in framework - complete docs (Bart)
-
attending: Jasper, Kenneth, Sebastian, Bart, Simon, Alex, Alexandre
- rename unclear run methods to install extensions (PR #4400)
- let's deprecate
run
& co rather than remove them -
run
should print deprecation warning + callinstall_extension
, etc.
- let's deprecate
- migrate generic easyblocks to
run_shell_command
(PR #3046)-
$GITHUB_BASE_REF
is sometimes empty?! - may need to implement a fallback to determine framework branch to use
-
- kim-api (PR #19399 through PR #19405, except
#19400
)- required because of check for Fortran
.mod
files when usingGCCcore
- there may be others...
- required because of check for Fortran
- change
tar
command used inget_source_tarball_from_git
to get reproducible tarballs (framework PR #4248)- didn't work on macOS, so introduces a regression
- got different checksums when retaining
.git
subdirectory- maybe because order of hidden files is not controlled?
attending: Simon, Jasper, Sebastian, Kenneth, Adam, Alex, Mikael, Bart
- merged PRs
- better structure in docs for changes in EasyBuild v5.0 docs #230
- note: only in
develop
branch for now, not in live documentation yet
- note: only in
- better structure in docs for changes in EasyBuild v5.0 docs #230
- open PRs
- [Simon] detect Fortran
.mod
files in GCCcore installations PR #4389- we should make some extra effort to filter out blatant false positives?
- actual Fortran
.mod
files will have this as output fromfile
command:gzip compressed data
- one step further would be to unzip and look for something like
GFORTRAN module version ....
, but that's maybe a bridge too far? - for now, let's merge as is, we can try to weed out false positives later if there's a real need for it
- need to update
boegelbot
to set$EASYBUILD_FAIL_ON_MOD_FILES_GCCCORE=1
when using EasyBuild v5.0
- [Jasper] change
tar
command used inget_source_tarball_from_git
to get reproducible tarballs (framework PR #4248)- Jasper will take a look soon
- [Kenneth, Sebastian review/merge] enable
download_dep_fail
,use_pip
,sanity_pip_check
by default in PythonPackage easyblock (easyblocks PR #3022)- [Kenneth] submit test reports
- [Sebastian] Clean up easyconfigs that set these
True
=> easyconfigs PR #19265
- Deprecate failure to resolve a template value (framework PR #3285)
- needs to be ported to
5.0.x
- needs to be ported to
- update
ConfigureMake
easyblock to error out on unknown configure args (easyblocks PR #3025)- see also easyblocks PR #3026 to start producing warnings for unknown configure options in EasyBuild 4.x
- we should first fix the easyconfigs that are affected by this...
- [Simon] detect Fortran
- ideas: yay or nay?
-
--read-only-installdir
by default? (framework issue #123)- impact:
- annoying to remove install dirs later
- potentially problematic for sites that have a group of users installing software with EasyBuild
- impact:
- change order of
extract
andprepare
steps (framework issue #1376)- load (only build?) dependencies before extracting sources
- don't run sanity check in install dir (framework issue #4044)
- Simon has some use cases where they're currently "abusing" sanity check commands to make changes in install, which require that environment is correctly set up
-
PythonPackage
easyblock:modulename
should be a first-class parameter, not under the options parameter (issue #2352) - fix inconsistent license variable naming used in easyblocks (easyblocks issue #3043)
- should always be
$EB_SOFTWARENAME_LICENSE_SERVER
- should always be
-
CMakeMake
could defaultCMAKE_BUILD_TYPE
toRelWithDebInfo
instead ofRelease
(issue #3032) - separate framework issue to open (Bart): enable
-g
by default (debug
toolchain option) - including module extensions info in generated module file should be enabled by default
- implies a sufficiently recent Lmod (>= 8.2.0)
- will work even with older Lmod versions, because there's a version check in generated module file itself
- should
depends_on
by enabled by default? => Mikael will open an issue
-
- TODOs
- [Kenneth,Sebastian] set up copy of boegelbot to test with EasyBuild
5.0.x
branches- Sebastian has looked into this a bit
- can add support for
BRANCH=5.0.x
- [Kenneth | Alex | Bart] Document
run_shell_cmd
changes- should be PR to
easybuild-v5/run_shell_cmd/
page in docs (develop
branch)
- should be PR to
- [Kenneth + Alex] finish implementation of
run_shell_cmd
- improve error output in case of long output produced by command
- detect long output, point to output file?
stream_output
asynchronous
-
qa_patterns
+qa_wait_patterns
- improve error output in case of long output produced by command
- [Bart,Alex,Adam,Jasper] start porting easyblocks to
run_shell_cmd
- start with commonly used ones like ConfigureMake, CMakeMake, PythonPackage, EB_GCC, etc.
- framework PR #4383 can be helpful for inspiration
- first steps for generic easyblocks done in https://github.com/easybuilders/easybuild-easyblocks/pull/3046
- [Sebastian] get easyblocks PR #3022 merged to auto-enable
use_pip
& co - [Kenneth] update easyconfigs that use an easyblock that derives from
PythonPackage
but do not enableuse_pip
& co yet to explicitly useFalse
- this should ideally be done before easyblocks PR #3022 is merged...
- should also check whether easyblocks that derive from
PythonPackage
will need to getuse_pip = False
... - check in easyconfigs test suite only checks easyconfigs that use
PythonPackage
orPythonBundle
, not stuff that derives from them => should be fixed
- [Alex] rename
Extension.run
method that is used for installing extensions (cfr. framework issue #4113)- deprecating use of
.run(...)
- better name:
-
Extension.install_as_extension
?
-
- definitely also affects
Extension.postrun
andExtension.prerun
- deprecating use of
- [WHO?] see if we can limit the damage done by archiving easyconfigs using a deprecated toolchain
- https://hackmd.io/1A9e6dTATbWDaDodoIGPrw
- could try and crowdsource easyconfigs with more recent toolchain for these together with call for testing for pre-release of EasyBuild v5.0
- [Kenneth,Sebastian] set up copy of boegelbot to test with EasyBuild
- other
- Bart's cheat sheet on
run_shell_cmd
run_cmd -> run_shell_cmd result: (out, code) = ... -> res = ...; res.output, res.exit_code parameter changes: log_ok, log_all, simple, regexp -> (remove!) inp -> stdin log_output=False -> output_file=True (reversed default) path -> work_dir force_in_dry_run -> in_dry_run verbose=True -> verbose_dry_run=False (reversed default) shell=None (->True) -> use_bash=True trace=True -> hidden=False (reversed meaning) stream_output, with_hooks (unchanged) asynchronous (NYI, don't touch for now!) new parameters: fail_on_error=True, split_error=False, env=None qa_patterns=None (NYI) qa_wait_patterns=None (NYI) Derived from detailed notes: run_cmd run_shell_cmd (out, code) .output, .exit_code, .stderr (if split_stderr=True) cmd cmd log_ok=True (removed: always True) log_all=False (removed: always True) simple=False (removed: always return named tuple) inp=None stdin=None regexp=True (removed: no automatic scanning for stuff that looks like errors) log_output=False output_file=True path=None work_dir=None force_in_dry_run=False in_dry_run=False verbose=True verbose_dry_run=False shell=None(->True) use_bash=True trace=True hidden=False stream_output=None stream_output=False asynchronous=False asynchronous=False (NYI) with_hooks=True with_hooks=True fail_on_error=True (NEW) split_error=False (NEW) env=None (NEW) qa_patterns=None (NEW,NYI) qa_wait_patterns=None (NEW,NYI) run_cmd :param cmd: command to run :param log_ok: only run output/exit code for failing commands (exit code non-zero) :param log_all: always log command output and exit code :param simple: if True, just return True/False to indicate success, else return a tuple: (output, exit_code) :param inp: the input given to the command via stdin :param regexp: regex used to check the output for errors; if True it will use the default (see parse_log_for_error) :param log_output: indicate whether all output of command should be logged to a separate temporary logfile :param path: path to execute the command in; current working directory is used if unspecified :param force_in_dry_run: force running the command during dry run :param verbose: include message on running the command in dry run output :param shell: allow commands to not run in a shell (especially useful for cmd lists), defaults to True :param trace: print command being executed as part of trace output :param stream_output: enable streaming command output to stdout :param asynchronous: run command asynchronously (old: returns subprocess.Popen instance if set to True) :param with_hooks: trigger pre/post run_shell_cmd hooks (if defined) run_shell_cmd :param fail_on_error: fail on non-zero exit code (enabled by default) :param split_stderr: split of stderr from stdout output :param stdin: input to be sent to stdin (nothing if set to None) :param env: environment to use to run command (if None, inherit current process environment) :param hidden: do not show command in terminal output (when using --trace, or with --extended-dry-run / -x) :param in_dry_run: also run command in dry run mode :param verbose_dry_run: show that command is run in dry run mode (overrules 'hidden') :param work_dir: working directory to run command in (current working directory if None) :param use_bash: execute command through bash shell (enabled by default) :param output_file: collect command output in temporary output file :param stream_output: stream command output to stdout :param asynchronous: run command asynchronously :param with_hooks: trigger pre/post run_shell_cmd hooks (if defined) :param qa_patterns: list of 2-tuples with patterns for questions + corresponding answers :param qa_wait_patterns: list of 2-tuples with patterns for non-questions and number of iterations to allow these patterns to match with end out command output :return: Named tuple with: - output: command output, stdout+stderr combined if split_stderr is disabled, only stdout otherwise - exit_code: exit code of command (integer) - stderr: stderr output if split_stderr is enabled, None otherwise
- Bart's cheat sheet on
attending: Mikael, Sebastian, Bart
- merged PRs
- start adopting
run_shell_cmd
in easyblock.py (+ use f-strings) (PR #4383)
- start adopting
- open PRs
- [Kenneth,Mikael] better structure in docs for changes in EasyBuild v5.0 docs #230
- [Kenneth] detect Fortran .mod files in GCCcore installations PR #4389
- [Jasper] change
tar
command used inget_source_tarball_from_git
to get reproducible tarballs (framework PR #4248) - [WHO? review/merge] enable
download_dep_fail
,use_pip
,sanity_pip_check
by default in PythonPackage easyblock (easyblocks PR #3022)- [Kenneth] submit test reports
- [Sebastian] Clean up easyconfigs that set these true PR #19265
- Deprecate failure to resolve a template value (framework PR #3285)
- needs to be ported to
5.0.x
- needs to be ported to
- update
ConfigureMake
easyblock to error out on unknown configure args (easyblocks PR #3025)- see also easyblocks PR #3026 to start producing warnings for unknown configure options in EasyBuild 4.x
- we should first fix the easyconfigs that are affected by this...
- TODOs
- [Kenneth] set up copy of boegelbot to test with EasyBuild
5.0.x
branches - [Kenneth | Alex] Document
run_shell_cmd
changes - [Kenneth + Alex] finish implementation of
run_shell_cmd
stream_output
asynchronous
-
qa_patterns
+qa_wait_patterns
- [Bart,Alex,Adam,Jasper] start porting easyblocks to
run_shell_cmd
- start with commonly used ones like ConfigureMake, CMakeMake, PythonPackage, EB_GCC, etc.
- framework PR #4383 can be helpful for inspiration
- [Sebastian] get easyblocks PR #3022 merged to auto-enable
use_pip
& co - [Kenneth] update easyconfigs that use an easyblock that derives from
PythonPackage
but do not enableuse_pip
& co yet to explicitly useFalse
- this should ideally be done before easyblocks PR #3022 is merged...
- should also check whether easyblocks that derive from
PythonPackage
will need to getuse_pip = False
... - check in easyconfigs test suite only checks easyconfigs that use
PythonPackage
orPythonBundle
, not stuff that derives from them => should be fixed
- [WHO?] rename
Extension.run
method that is used for installing extensions (cfr. framework issue #4113)- deprecating use of
.run(...)
- deprecating use of
- [WHO?] see if we can limit the damage done by archiving easyconfigs using a deprecated toolchain
- https://hackmd.io/1A9e6dTATbWDaDodoIGPrw
- could try and crowdsource easyconfigs with more recent toolchain for these together with call for testing for pre-release of EasyBuild v5.0
- [Kenneth] set up copy of boegelbot to test with EasyBuild
attending: Kenneth, Sebastian, Adam, Mikael
- merged PRs
- open PRs
- [Jasper] change
tar
command used inget_source_tarball_from_git
to get reproducible tarballs (framework PR #4248) - [WHO? review/merge] enable
download_dep_fail
,use_pip
,sanity_pip_check
by default in PythonPackage easyblock (easyblocks PR #3022)- [Kenneth] submit test reports
- Deprecate failure to resolve a template value (framework PR #3285)
- needs to be ported to
5.0.x
- needs to be ported to
- update
ConfigureMake
easyblock to error out on unknown configure args (easyblocks PR #3025)- see also easyblocks PR #3026 to start producing warnings for unknown configure options in EasyBuild 4.x
- we should first fix the easyconfigs that are affected by this...
- [Jasper] change
- TODOs
- [Kenneth + Alex] finish implementation of
run_shell_cmd
stream_output
asynchronous
-
qa_patterns
+qa_wait_patterns
- [Bart,Alex,Adam,Jasper] start porting easyblocks to
run_shell_cmd
- start with commonly used ones like ConfigureMake, CMakeMake, PythonPackage, EB_GCC, etc.
- framework PR #4383 can be helpful for inspiration
- [Kenneth,Adam] better structure in docs for changes in EasyBuild v5.0
- [Sebastian] get easyblocks PR #3022 merged to auto-enable
use_pip
& co - [Kenneth] update easyconfigs that use an easyblock that derives from
PythonPackage
but do not enableuse_pip
& co yet to explicitly useFalse
- this should ideally be done before easyblocks PR #3022 is merged...
- should also check whether easyblocks that derive from
PythonPackage
will need to getuse_pip = False
... - check in easyconfigs test suite only checks easyconfigs that use
PythonPackage
orPythonBundle
, not stuff that derives from them => should be fixed
- [Sebastian] clean up easyconfigs that explicitly set
use_pip
& co toTrue
- only after easyblocks PR #3022 is merged
-
use_pip = True
,'use_pip': True
=> remove -
sanity_pip_check = True
=> remove -
download_dep_fail = True
=> remove
- [WHO?] rename
Extension.run
method that is used for installing extensions (cfr. framework issue #4113)- deprecating use of
.run(...)
- deprecating use of
- [WHO?] see if we can limit the damage done by archiving easyconfigs using a deprecated toolchain
- https://hackmd.io/1A9e6dTATbWDaDodoIGPrw
- could try and crowdsource easyconfigs with more recent toolchain for these together with call for testing for pre-release of EasyBuild v5.0
- [Kenneth + Alex] finish implementation of
attending: Kenneth, Adam, (Mikael)
- merged PRs
- change
run_shell_cmd
to store command output in temporary file(s) by default + passRunShellCmdResult
instance toRunShellCmdError
(framework PR #4356)
- change
- open PRs
- [Jasper] change
tar
command used inget_source_tarball_from_git
to get reproducible tarballs (framework PR #4248) - [WHO? review/merge] enable
download_dep_fail
,use_pip
,sanity_pip_check
by default in PythonPackage easyblock (easyblocks PR #3022)- [Kenneth] submit test reports
- [Adam to review/merge] rename
shell
option inrun_shell_cmd
touse_bash
(framework PR #4378)
- [Jasper] change
- next steps
- [Alex,Kenneth] fix error reporting in
5.0.x
branch- failing to resolve dependencies doesn't produce an error message anymore (only non-zero exit code)
- [Kenneth + Alex] finish implementation of
run_shell_cmd
so framework can be updated to only userun_shell_cmd
(no morerun_cmd
)- implement support for
stream_output
option (required ineasybuild/tools/containers/*.py
) - implement support for
asynchronous
option (required for--parallel-extensions-install
support)
- implement support for
- [Kenneth?] implement support for Q&A commands in
run_shell_cmd
- implement support for
qa_patterns
andqa_wait_patterns
options
- implement support for
- [Bart,Alex,Adam,Jasper] start porting easyblocks to
run_shell_cmd
- start with commonly used ones like
ConfigureMake
,CMakeMake
,PythonPackage
,EB_GCC
, etc.
- start with commonly used ones like
- [WHO?] rename
Extension.run
method that is used for installing extensions (cfr. framework issue #4113) - get easyblocks PR #3022 merged to auto-enable
use_pip
& co- Kenneth can look into submitting a bunch of test reports for affected easyblocks
- [Kenneth] update easyconfigs that use an easyblock that derives from
PythonPackage
but do not enableuse_pip
& co yet to explicitly useFalse
- WIP script to identify the easyconfigs to update (which somehow triggers open file handle limit...)
- [WHO?] clean up easyconfigs that explicitly set
use_pip
& co toTrue
- only after easyblocks PR #3022 is merged
- [Alex(structure),Bart(run_shell_cmd transition table),Adam?] update documentation to have a more complete overview of changes in EasyBuild 5.0
- cfr. https://docs.easybuild.io/easybuild-v5/overview-of-changes
- should include an overview of how to transition from
run_cmd
torun_shell_cmd
, inspired by how easyblocks are updated to adoptrun_shell_cmd
- organise based on users vs contributors vs developers
- Changes relevant to end users =>
docs/roles/end-users/easybuild-v5
- trace output by default =>
docs/easybuild-v5/trace_output
- error reporting =>
docs/easybuild-v5/error_reporting
- Lmod version
- toolchain support policy
- Python 2 no longer supported
- RIP experimental .yeb
- RIP bootstrap script
- trace output by default =>
- contributors
- easyconfigs
- toolchain support policy
- enforce correct .patch(.*) extension for patch files
- easyblocks/framework
run_shell_cmd
py2vs3
- RIP Python 2
- removal of deprecated functionality
- changed defaults
-
change_dir
inextract_file
-
- easyconfigs
- developers/maintainers
- toolchain support policy
- (see easyblocks/framework contributors)
- Changes relevant to end users =>
- separate pages for:
run_shell_cmd
- [WHO?] see if we can limit the damage done by archiving easyconfigs using a deprecated toolchain
- [Alex,Kenneth] fix error reporting in
attending: Kenneth, Bart, Simon, Alexandre, Sebastian, Adam, Alex, Jasper
- merged PRs
- use 5.0.x branch for easyblocks + easyconfigs in CI workflows (for now) (framework PR #4358)
- take into account that
VERBOSE_VERSION
imported from easybuild.easyblocks is now a string value (framework PR #4357)
- open PRs
- [Kenneth,Alex] change
run_shell_cmd
to store command output in temporary file(s) by default + passRunShellCmdResult
instance toRunShellCmdError
(framework PR #4356)- status: reviewed + updated based on review, ready to merge?
- [Jasper] change
tar
command used inget_source_tarball_from_git
to get reproducible tarballs (framework PR #4248)- PR branch needs to be updated with current
5.0.x
to re-trigger CI - someone should play with this across different systems/OSs to verify whether this is indeed sufficient to obtain reproducible tarballs for easyconfigs using
git_config
- PR branch needs to be updated with current
- deprecate failure to resolve a template value (framework PR #3285)
- needs thorough review/testing
- needs to be updated with current
5.0.x
branch to re-trigger CI - Kenneth will ask Alexander to move to
5.0.x
- enable
download_dep_fail
,use_pip
,sanity_pip_check
by default in PythonPackage easyblock (easyblocks PR #3022)- needs review + testing with a handful of existing easyconfigs to ensure no bugs have crept in the refactoring, at least one test for each easyblock that was touched in the PR
- [Alexander?] update
ConfigureMake
easyblock to error out on unknown configure args (easyblocks PR #3025)- fix for easyblocks issue #157
- see also easyblocks PR #3026, and the list of easyconfigs that are known to be impacted by this change
- [Kenneth,Alex] change
- next steps
- [Alex]
get framework PR #4356 merged to fix storing of command output to file(s) - [Alex] fix error reporting in
5.0.x
branch- failing to resolve dependencies doesn't produce an error message anymore (only non-zero exit code)
- [Kenneth + Alex] finish implementation of
run_shell_cmd
so framework can be updated to only userun_shell_cmd
(no morerun_cmd
)- rename
shell
option touse_bash
- implement support for
stream_output
option (required ineasybuild/tools/containers/*.py
) - implement support for
asynchronous
option (required for--parallel-extensions-install
support)
- rename
- [Kenneth?] implement support for Q&A commands in
run_shell_cmd
- implement support for
qa_patterns
andqa_wait_patterns
options
- implement support for
- [Bart,Alex,Adam,Jasper] start porting easyblocks to
run_shell_cmd
- start with commonly used ones like
ConfigureMake
,CMakeMake
,PythonPackage
,EB_GCC
, etc.
- start with commonly used ones like
- [WHO?] rename
Extension.run
method that is used for installing extensions (cfr. framework issue #4113) - get easyblocks PR #3022 merged to auto-enable
use_pip
& co- Kenneth can look into submitting a bunch of test reports for affected easyblocks
- [Kenneth] update easyconfigs that use an easyblock that derives from
PythonPackage
but do not enableuse_pip
& co yet to explicitly useFalse
- WIP script to identify the easyconfigs to update (which somehow triggers open file handle limit...)
- [WHO?] clean up easyconfigs that explicitly set
use_pip
& co toTrue
- only after easyblocks PR #3022 is merged
- [Alex(structure),Bart(run_shell_cmd transition table)] update documentation to have a more complete overview of changes in EasyBuild 5.0
- cfr. https://docs.easybuild.io/easybuild-v5/overview-of-changes
- should include an overview of how to transition from
run_cmd
torun_shell_cmd
, inspired by how easyblocks are updated to adoptrun_shell_cmd
- [WHO?] see if we can limit the damage done by archiving easyconfigs using a deprecated toolchain
- supported software (excl. versions) in EasyBuild v4.8.2 vs current 5.0.x branch: 3,292 vs 2,365 => ~29% decrease :-/
- should compose a list of stuff that was lost, see what worth salvaging
- can be done in HackMD, then crowdsource which ones we should care about => https://hackmd.io/1A9e6dTATbWDaDodoIGPrw
- supported software (excl. versions) in EasyBuild v4.8.2 vs current 5.0.x branch: 3,292 vs 2,365 => ~29% decrease :-/
- [Alex]
attending: Kenneth, Mikael
- merged PRs
- document policy on supported toolchain generations (docs PRs #200 + #216)
- not strictly tied to EasyBuild 5.0 (except for archiving of easyconfigs)
- live in EasyBuild docs @ https://docs.easybuild.io/policies/toolchains
- improve error reporting for failing shell commands (and EasyBuild crashes) (PR #4351)
- use
LooseVersion
fromeasybuild.tools
in all easyblocks (easyblocks PR #3018)-
VERSION
andVERBOSE_VERSION
constants ineasybuild.easyblocks
are now string values (used to beLooseVersion
instance) - requires framework #4357: take into account that
VERBOSE_VERSION
imported fromeasybuild.easyblocks
is now a string value
-
- don't auto-enable use of
-DSCOTCH_PTHREAD
when using MPI library other than Intel MPI in SCOTCH easyblock (PR #3019) - improve error reporting for failing shell commands (and EasyBuild crashes) #4351
- document policy on supported toolchain generations (docs PRs #200 + #216)
- open PRs
- change
tar
command used inget_source_tarball_from_git
to get reproducible tarballs (framework PR #4248) - take into account that
VERBOSE_VERSION
imported from easybuild.easyblocks is now a string value (framwork PR #4357) - change
run_shell_cmd
to always store command output in temporary file(s) + passRunShellCmdResult
instance toRunShellCmdError
(WIP (framework PR #4356)- tests are failing, needs more work
- enable
download_dep_fail
,use_pip
,sanity_pip_check
by default inPythonPackage
easyblock (easyblocks PR #3022)- worth doing a couple of test build for this...
- change
- other
- framework issue #4354: Extract errors from shell commands
- next 5 goals
- start cleaning up easyconfigs w.r.t.
use_pip
& co- requires that easyblocks PR #3022 is merged first
- Kenneth is working on a script to figure out which easyconfigs need to get
use_pip = False
& co
- continue
run_cmd_shell
effort- get framework PR #4356 merged
- implement
stream_output
support
- start switching to
run_shell_cmd
in easyblocks - test impact of framework PR #4248: are source tarballs for easyconfigs using
git_config
really reproducable across systems/OSs? - update overview of changes in EasyBuild 5.0 in docs
- start cleaning up easyconfigs w.r.t.
- timeline
- EasyBuild 4.8.2 release soon
- may be last EasyBuild 4.x release
- 2023b common toolchain update could be reason for EasyBuild v4.9.0 release (~end of Nov'23)
- for now, stick to
5.0.x
branches, until we're sure that EasyBuild 5.0 can be released soon enough
- EasyBuild 4.8.2 release soon
attending: Kenneth, Alex, Simon, Mikael, Adam
- merged PRs
- stop importing from
easybuild.tools.py2vs3
(+ minor cleanup in init easyblocks test) (easyblocks PR #3015) - scripts to archive easyconfigs (easyconfigs PR #18934)
- script used to archive easyconfigs using SYSTEM toolchain needs a whitelist to avoid archiving things like GCC-system.eb, etc.
- archiving of old easyconfigs
- all done for all toolchain versions older than 2020a (across 14 PRs)
- remove old archived easyconfigs (EasyBuild 4.x archive) (PR #18982)
- use more recent easyconfigs in tests for --search (PR #18995)
- archive SYSTEM level easyconfigs from before 2018-10-11 (PR #19013)
- fallout
- support for 937 (out of ~3,300) software packages will be lost in EasyBuild 5.0
- ~28% of all software EasyBuild currently supports...
- with EasyBuild 4.0, is was way less dramatic (1840 -> 1669, ~9%)
- we can/should add easyconfigs back with more recent toolchains to partially mitigate this...
- a bunch of these are:
- toolchains we no longer use
- stuff like pandas that's still supported as extension
- complex ones like RELION, ...
- support for 937 (out of ~3,300) software packages will be lost in EasyBuild 5.0
- we should also do a cleanup sweep of patches
- overview of software in EasyBuild docs should also include extensions?
- stop importing from
- open PRs
- improve error reporting for failing shell commands (and EasyBuild crashes) (framework PR #4351)
- reviewed by Alex, suggested changes made by Kenneth, ready for re-review + merge...
- in some way, it would be easier to always have stdout and stderr command output split
- but then we lose "context" of errors
- can we collect both stdout+stderr mixed and stderr output only when running a command?
- Use
LooseVersion
fromeasybuild.tools
and sort imports (easyblocks PR #3018)- use of
LooseVersion
ineasybuild/easyblocks/__init__.py
is causing trouble
- use of
- don't auto-enable use of -DSCOTCH_PTHREAD when using MPI library other than Intel MPI in SCOTCH easyblock (easyblocks PR #3019)
- improve error reporting for failing shell commands (and EasyBuild crashes) (framework PR #4351)
- next 5 goals
- [Kenneth,Alex] get (framework PR #4351) merged (better error reporting)
-
[Kenneth] implement support for
stream_output
inrun_cmd_shell
function + switch torun_cmd_shell
ineasybuild/tools/containers/*.py
-
[Mikael,Kenneth] get (easyblocks PR #3018) merged (
LooseVersion
import)- need to stop using
LooseVersion
ineasybuild/easyblocks/__init__.py
- need to stop using
-
[Sebastian?] enable
download_dep_fail
+use_pip
+sanity_pip_check
by default inPythonPackage
+PythonBundle
easyblocks- easyconfigs cleanup should be less painful now
- Kenneth is working on script to identify eaysconfigs that do not already enable these parameters
-
[Alex] start switching to
run_shell_cmd
in easyblocks...
attending: Kenneth, Mikael, Sebastian, Adam, Alexandre
- merged PRs
- fix test suite: stop testing with Python 3.5 and Lmod 6.x, stop using
toolchain.DUMMY
(easyblocks PR #3014) - update version of
config.guess
used byConfigureMake
(easyblocks PR #3013)
- fix test suite: stop testing with Python 3.5 and Lmod 6.x, stop using
- open PRs
- improve error reporting for failing shell commands (and EasyBuild crashes) (framework PR #4351)
- => will be reviewed/tested/merged this week by ...
- stop importing from
easybuild.tools.py2vs3
(+ minor cleanup in init easyblocks test) (easyblocks PR #3015)- => will be reviewed/merged this week by ...
- scripts to archive easyconfigs (easyconfigs PR #18934)
- => will be reviewed/tested/merged this week by ...
- improve error reporting for failing shell commands (and EasyBuild crashes) (framework PR #4351)
- next 5 goals
- [Alex + Kenneth] get framework PR #4351 that implements better error reporting merged
-
[Kenneth] implement support for
stream_output
inrun_cmd_shell
function + switch torun_cmd_shell
ineasybuild/tools/containers/*.py
-
[Chia-jung Hsu] switch easyblocks to
LooseVersion
fromeasybuild.tools.*
(only change import statements) -
[Sebastian] enable
download_dep_fail
+use_pip
+sanity_pip_check
by default inPythonPackage
+PythonBundle
easyblocks- explicitely set these to
False
in easyconfigs not setting them toTrue
- easyconfigs using any easyblock that derives from
PythonPackage
orPythonBundle
- Kenneth can look into generating a list of easyconfigs that will need fixing (setting to False)
- easyconfigs using any easyblock that derives from
- clean up easyconfigs explicitly setting these to
True
- easyconfigs test suite should report explicit setting these to
True
- explicitely set these to
-
[Mikael] archive easyconfigs
- using a
2016a
/2016b
/2016.x
toolchain - using GCC 5.4.0 or older as toolchain
- using scripts implemented by Mikael (easyconfigs PR #18934)
- using a
Attendees: Kenneth, Sebastian, Mikael, Alexandre, Bart, Simon, Jasper, Adam
-
5.0.x
branch was synced withdevelop
on 2023-10-02 (commit d450a80) - merged PRs:
- ...
- open PRs:
- change
tar
command used inget_source_tarball_from_git
to get reproducible tarballs (PR #4248)
- change
- TODO
- for
run_shell_cmd
- improve error reporting
- raise
EasyBuildError
instead ofsubprocess.CalledProcessError
- implement better error reporting, using a new
report_error
function that uses return value produced byrun_shell_cmd
(which cmd used, includes output, exit code, working dir, ...) - WIP:
== installing... >> running command: [started at: 2023-10-04 13:59:58] [working dir: /private/tmp/kehoste/bzip2/1.0.6/system-system/bzip2-1.0.6] [output logged in /tmp/eb-leexxvrd/easybuild-run-rrpla98w.log] xxmake -f Makefile-libbz2_so CC=gcc CFLAGS='-Wall -Winline -O3 -fPIC -g $(BIGFILES)' - full command: xxmake -f Makefile-libbz2_so CC=gcc CFLAGS='-Wall -Winline -O3 -fPIC -g $(BIGFILES)' - exit code: 127 - working directory: /private/tmp/kehoste/bzip2/1.0.6/system-system/bzip2-1.0.6 - output: /tmp/eb-leexxvrd/shell-cmd-errorq2fsapve/xxmake.out - stderr: /tmp/eb-leexxvrd/shell-cmd-errorq2fsapve/xxmake.err ERROR: shell command 'xxmake' failed!
-
run_shell_cmd
could create script to source to start interactive debug shell, something like:export TEST=foo cd /tmp/test history -s "test 1 2 3" echo "Failing command was 'test 1 2 3'"
- raise
- implement missing options in
run_shell_cmd
stream_output
asynchronous
-
qa_patterns
+qa_wait_patterns
- complete transition to
run_shell_cmd
ineasybuild-framework
- TODO:
easybuild/framework/easyblock.py
easybuild/framework/extension.py
easybuild/toolchains/linalg/flexiblas.py
easybuild/tools/containers/*.py
easybuild/tools/job/slurm.py
easybuild/tools/options.py
easybuild/tools/package/utilities.py
- TODO:
- gradually switch easyblocks to
run_shell_cmd
(in5.0.x
branch) - add support for dropping into a interactive shell if command failed (cfr. issue #3950)
- global configuration option to opt-in to letting EasyBuild drop into an interactive shell if a shell command failed
- only when command is not expected to fail
- only when there's a tty
- opt-out option in
run_shell_cmd
for specific commands
- improve error reporting
- tackle other ideas, see https://github.com/easybuilders/easybuild-framework/labels/EasyBuild-5.0
- for
- how can we activate more people?
- half-day "sprint" to outline next things to do?
- better overview of easy things to do to make progress => open issues
- archiving of easyconfigs
- for oldest toolchains (older than 2020a)
- generation by generation
- step 1:
grep '^toolchain.*2019b' easybuild/easyconfigs
- step 2:
grep '^toolchain.*GCC.*8.3.0' easybuild/easyconfigs
- step 3: close easyocnfig PRs using these toolchains
- don't worry about conflicts that get introduced by PRs currently open to
develop
- by letter subdir
- doesn't really work due to dependencies
- oldest easyconfigs using
system
toolchain => archive software versions older than 5 years
- for oldest toolchains (older than 2020a)
-
5.0.x
branch was synced withdevelop
on 2023-10-04 (commit b2d86f5)- trivial conflicts fixed
- next steps
- switching from
run_cmd
torun_shell_cmd
- tricky for ones using
run_cmd_qa
- tricky for ones using
- switching to
LooseVersion
fromeasybuild.tools.*
(only change import statements) - enable
use_pip
+sanity_pip_check
inPythonPackage
- clean up easyconfigs after archiving
- remove dead easyblocks
- remove dead code in easyblocks (ancient software versions)
- update
config.guess
inConfigureMake
(issue #2826)
- switching from
-
5.0.x
branch was synced withdevelop
on 2023-10-04 (commit db2d79d)- trivial conflicts fixed
- [Kenneth]
run_shell_cmd
error reporting - [Mikael] archiving easyconfigs
- {foss,intel}/2016a + GCC(core) 4.9.3-2.25
- script in
scripts/
subdirectory in easybuild-easyconfigs repo
- [Mikael's colleague?] flip defaults for
download_dep_fail
+use_pip
+sanity_check_pip
inPythonPackage
easyblock - [Mikael's colleague?] fix
LooseVersion
imports in easyblocks - [Sebastian] update
config.guess
inConfigureMake
(issue #2826) - [Mikael] clean up SCOTCH easyblock (issue #2972)
- Mon 9 Oct 10:00 CEST
Attendees: Kenneth Hoste, Simon Branford, Alex Domingo, Jasper Grimm, Mikael Öhman, Bart Oldeman, Alexandre Strube
-
5.0.x
branch was synced withdevelop
on 2023-09-06 (commit 02ed943)- conflicts fixed, mostly due to support for
run_shell_cmd
hook that was added indevelop
via PR #4323
- conflicts fixed, mostly due to support for
- merged PRs:
- Simon's PR to remove deprecated functionality:
-
PR #4273 remove deprecated
descr
option forsimple_option
-
PR #4274 remove deprecated
Toolchain.add_dependencies
-
PR #4275 remove deprecated functionality from
filetools
-
PR #4276 remove deprecated log_error option from
which
function -
PR #4277 remove deprecated
skip_lower
option fromtemplate_constant_dict
-
PR #4278 remove deprecated options from
easyconfig.py
-
PR #4279 removed deprecated
mod_exists_regex_template
inModulesTool.exist
-
PR #4273 remove deprecated
- progress on
run_shell_cmd
:- initial implementation of
run
function to replacerun_cmd
+run_cmd_qa
(PR #4284) - copy
load_source
function fromeasybuild.tools.py2vs3.py3
toeasybuild.tools.filetools
so it can be used ineasybuild.tools.hooks
(PR #4306) - disable trace output for commands run in
get_source_tarball_from_git
(PR #4310) - fix broken github tests in options
test.framework.options
by disabling trace output indownload_repo
andfetch_files_from_pr
functions (PR #4311) - fix for
test_get_source_tarball_from_git
broken by trace output (PR #4310) - fix broken github tests in options
test.framework.options
by disabling trace output indownload_repo
andfetch_files_from_pr functions
(PR #4311) - implement
fail_on_error
/in_dry_run
/output_file
options + enable caching for run function, and switch fromrun_cmd
torun
function in systemtools (PR #4314) - implement support in
run
function for splitting stdout and stderr output (split_stderr
) + passing down environment to use, and switch torun
function for running module commands (PR #4321) - also include command used + working directory in return value of
run
function (PR #4322) - implement support in '
run
' function for running command in different working directory + switch torun
function in filetools (PR #4327) - trigger
run_shell_cmd
hook inrun
function (PR #4334)-
run_shell_cmd
hook will also be supported in EasyBuild v4.8.1
-
- rename
run
function torun_shell_cmd
(PR #4335 + PR #4336)
- initial implementation of
- Simon's PR to remove deprecated functionality:
- open PRs:
- change
tar
command used inget_source_tarball_from_git
to get reproducible tarballs (PR #4248)
- change
- TODO
- for
run_shell_cmd
- improve error reporting
- raise
EasyBuildError
instead ofsubprocess.CalledProcessError
- implement better error reporting, using a new
report_error
function that uses return value produced byrun_shell_cmd
(which cmd used, includes output, exit code, working dir, ...)
- raise
- implement missing options in
run_shell_cmd
stream_output
asynchronous
-
qa_patterns
+qa_wait_patterns
- complete transition to
run_shell_cmd
ineasybuild-framework
- TODO:
easybuild/framework/easyblock.py
easybuild/framework/extension.py
easybuild/toolchains/linalg/flexiblas.py
easybuild/tools/containers/*.py
easybuild/tools/job/slurm.py
easybuild/tools/options.py
easybuild/tools/package/utilities.py
- TODO:
- gradually switch easyblocks to
run_shell_cmd
(in5.0.x
branch) - add support for dropping into a interactive shell if command failed (cfr. issue #3950)
- global configuration option to opt-in to letting EasyBuild drop into an interactive shell if a shell command failed
- only when command is not expected to fail
- only when there's a tty
- opt-out option in
run_shell_cmd
for specific commands
- improve error reporting
- tackle other ideas, see https://github.com/easybuilders/easybuild-framework/labels/EasyBuild-5.0
- for
-
5.0.x
branch was synced withdevelop
on 2023-09-06 (commit d7b8b45)- trivial conflicts fixed
-
5.0.x
branch was synced withdevelop
on 2023-09-06 (commit a82280d)- trivial conflicts fixed
Attendees: Kenneth, Kurt, Alexandre, Sebastian, ...
- open PRs:
-
PR #178
--trace
enabled by default -
PR #200 Supported Toolchain Generations Policy
- From the discussion in https://github.com/easybuilders/easybuild/issues/872
-
PR #178
- toolchain support policy (issue #872)
- supported Lmod versions (issue #871)
- definitely drop support for Lmod 6
- dropping support for Lmod 7 probably has low impact
- should we require a minimal Lmod 8.x version (8.2 or 8.3)
- for extensions, depends_on, etc.
- bump to
REQ_VERSION
to 8.0 (or 8.3),DEPR_VERSION
to 8.5
-
5.0.x
branch was synced withdevelop
on 2023-06-07 - minor conflicts fixed (commit f378bac) - merged PRs:
- PR #4272 remove support for 32-bit targets
- open PRs:
-
PR #4284: initial progress by Kenneth, following discussion with Alex, on new
run
function (issue #4252)
-
PR #4284: initial progress by Kenneth, following discussion with Alex, on new
- several PRs for code cleanup in
5.0.x
branch, by removing deprecated stuff-
PR #4273 remove deprecated
descr
option forsimple_option
-
PR #4274 remove deprecated
Toolchain.add_dependencies
-
PR #4275 remove deprecated functionality from
filetools
-
PR #4276 remove deprecated log_error option from
which
function -
PR #4277 remove deprecated
skip_lower
option fromtemplate_constant_dict
-
PR #4278 remove deprecated options from
easyconfig.py
-
PR #4279 removed deprecated
mod_exists_regex_template
inModulesTool.exist
-
PR #4273 remove deprecated
- proposals for EasyBuild 5.0:
-
5.0.x
branch was synced withdevelop
on 2023-06-07 - trivial conflicts fixed (commit f93e6cd) - no merged or WIP PRs for now
- TODO
- stop using deprecated
py2vs3
module in easyblocks - start switching to new
run
function - 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
- stop using deprecated
-
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: Kenneth, Simon, Jasper, Kurt, Mikael, Alex, Adam, Sebastian, Bart
- merged PRs:
- open PRs:
-
PR #178
--trace
enabled by default -
PR #200 Supported Toolchain Generations Policy
- From the discussion in https://github.com/easybuilders/easybuild/issues/872
-
PR #178
- toolchain support policy (issue #872)
- supported Lmod versions (issue #871)
- definitely drop support for Lmod 6
- dropping support for Lmod 7 probably has low impact
- should we require a minimal Lmod 8.x version (8.2 or 8.3)
- for extensions, depends_on, etc.
- bump to
REQ_VERSION
to 8.0 (or 8.3),DEPR_VERSION
to 8.5
-
5.0.x
branch was synced withdevelop
on 2023-06-07 - minor conflicts fixed (commit f378bac) - merged PRs:
-
PR #4250: enabling
--trace
by default (by Simon) -
PR #4270 update
check_python_version
to reflect that only Python >= 3.6 is supported - stop relying on
imp
(will no longer be available in Python 3.12) (issue #4264)- fixed in PR #4280 in
develop
- fixed in PR #4280 in
-
PR #4250: enabling
- open PRs:
-
PR #4284: initial progress by Kenneth, following discussion with Alex, on new
run
function (issue #4252)- feedback from Simon in PR
- next steps:
- expand tests run with new
run
function (in same PR?) - start using new
run
function in framework where possible (no unsupported options used) - follow-up PR? - start using new
run
in easyblocks- probably split across multiple PRs
- with reasonabe effort regarding testing, not testing all easyconfigs affected...
- implement missing features by expanding basic
run
function - support for setting environment variables in the scope of the command being run
- implement support for dropping into a shell when a command fails (issue #3950)
- should be configurable (globally + per
run
invocation)-
shell_on_error=True
?
-
- only do this when exit on error is enabled (
fail_on_error=True
) - only do this when
eb
is run in an interactive shell - Mikael has looked into this a bit
- use
pty.spawn
+ something likecmd || bash -l
?
- should be configurable (globally + per
- expand tests run with new
-
PR #4284: initial progress by Kenneth, following discussion with Alex, on new
- several PRs for code cleanup in
5.0.x
branch, by removing deprecated stuff- PR #4272 remove support for 32-bit targets
-
PR #4273 remove deprecated
desc
option forsimple_option
-
PR #4274 remove deprecated
Toolchain.add_dependencies
-
PR #4275 remove deprecated functionality from
filetools
-
PR #4276 remove deprecated log_error option from
which
function -
PR #4277 remove deprecated
skip_lower
option fromtemplate_constant_dict
-
PR #4278 remove deprecated options from
easyconfig.py
-
PR #4279 removed deprecated
mod_exists_regex_template
inModulesTool.exist
- 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
- require Lmod >= 7.0 ?
- Community feedback in https://github.com/easybuilders/easybuild/issues/871
- No objections to dropping support for Lmod 6
-
eb
options simplification- John: "Using eb to build software is the last step. eb has a large number of arguments that continue to grow."
- separate
ec
command doesn't seem like a good idea
- separate
- Simon: It might be possible to make a split using
subparser
, but I have no firm idea or suggestion here and I'm unlikely to spend time on this.-
eb build
,eb github
, ... - unclear where all options would end up
- significant effort
- some options would apply to multiple subcommands, so would be "top-level" (like
--debug
) - opportunity to review current options and see if they're still needed and make sense
- re-design of CLI may result in significant delay for EasyBuild 5.0
- so maybe something for a "quick" EasyBuild 6.0 release?
- to some extent this "complaint" can be tackled by defining
eb*
aliases - main issue is that output of
eb --help
is massive - maybe this is more about shortening of
help
output-
eb --help=github
, ...
-
-
- John: "Using eb to build software is the last step. eb has a large number of arguments that continue to grow."
- 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
- stop using deprecated
py2vs3
module in easyblocks - start switching to new
run
function - 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
- stop using deprecated
-
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: 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