-
Notifications
You must be signed in to change notification settings - Fork 148
Closed
Description
This issue keeps track of what changed are planned for EasyBuild v4.0, in which backwards-incompatible changes will be made compared to EasyBuild v3.x.
ETA for EasyBuild v4.0: summer 2019 (subject to change!)
Codebase
-
drop support for using EasyBuild on top of Python 2.6 (?)(not dropping Py2.6 support for now)after consulting with community via user survey?only if Python 2.6 support really gets in the way (mainly w.r.t. also supporting Python 3)- (turns out this is not needed, we can keep supporting Python 2.6 without too much hassle)
-
drop deprecated functionality (seelog.deprecatedstatements)- (no action needed here,
log.deprecated("...", '4.0')statements will now simply result an error
- (no action needed here,
-
support running EasyBuild on top of (both Python 2.7 &) Python 3 (because 2+3=4)[DONE]- see
support Python 3.x easybuild-framework#133 blocker:vsc-baseshould be compatible with Python 3 (cfr. start looking into making vsc-base Py3 compatible hpcugent/vsc-base#231, )- fixed by ingesting
vsc-base&vsc-installinto framework, seeingest vsc-base & vsc-install easybuild-framework#2708
- fixed by ingesting
see PRs marked withpython3label: https://github.com/easybuilders/easybuild-framework/labels/python3
- see
-
avoid[DONE]setuptoolsdependencyonly needed forpkg_resources.declare_namespaceused to spreadeasybuildnamespace across multiple directoriesalso relevant for(OK)--include-*support, but can be worked around?- central idea is to basically just replace the use of
pkg_resources.declare_namespacebypkgutil.extend_path, which seems to be the one true way (tm), cfr. https://packaging.python.org/guides/packaging-namespace-packages/#pkgutil-style-namespace-packages ("This is the recommended approach for the highest level of compatibility.") see drop requirement for setuptools as runtime dependency easybuild-framework#2836 + only import from pkg_resources (provided by setuptools) to check GC3Pie version easybuild-framework#2837
Packaging & installation
-
try to avoid requiring(DONE)setuptoolsto install EasyBuild (try to avoid requiring setuptools to install EasyBuild easybuild-framework#2941) - update bootstrap script to be able to install EasyBuild 4.0 (see update bootstrap script to support installing EasyBuild v4.0 easybuild-framework#3017)
Documentation
- overview of (breaking) changes
- release notes
Features
more flexibility w.r.t. dependency versions?- unclear how at this point...
(fat) easyconfigs in YAML syntax (.yeb)?- unlikely, unless someone has time to work on it...
drop(will look into deprecating this in EasyBuild 4.x)exts_classmap?-
replacedummytoolchain withsystemtoolchaindeprecatedummytoolchain to trigger deprecation warning on use, to be removed in EasyBuild 5.0see Please rename thedummytoolchain easybuild-framework#1181done, see deprecate 'dummy' toolchain, replace with 'system' toolchain easybuild-framework#2877- also add alias for
systemtoolchain to EasyBuild 3.x: support using 'system' as alias for 'dummy' toolchain easybuild-framework#2960
[ ] deprecateruntestin favor oftestopts, see deprecate runtest in favor of testopts (was: Add pretestopts and testops) easybuild-framework#2868stable support for(needs more time)--containerize
Easyblocks
-
PythonPackageswitch to installing Python packages with(not switching the default, but will keep requiringpipby default (rather thansetup.py install, i.e.setuptools)use_pip = Truein contributed easyconfigs)- cfr. https://docs.python.org/2/installing/index.html
needs to be re-evaluated...-
enable(already done indownload_dep_failby default, to ensure that no dependencies are automatically downloaded by whichever Python installation tool is being usedPythonBundle)
-
custom easyblock for(done, see add custom easyblock for OpenMPI easybuild-easyblocks#1789)OpenMPI
Easyconfigs
- archiving of old easyconfig files
- anything using
ictcetoolchain (already deprecated in EasyBuild 3.8.0) - anything using
goolf/1.4.10(already deprecated in EasyBuild 3.8.0) - also oldest versions of
intelandfosstoolchains? (already deprecated in EasyBuild 3.8.0) - <
intel/2016a:archive easyconfigs using deprecated ictce or intel (< 2016a) toolchain easybuild-easyconfigs#8558 - <
foss/2016a:archive easyconfigs using a gompi/foss toolchain older than {gompi,foss}/2016a easybuild-easyconfigs#8585(EasyBuild v3.9.4) - archive easyconfig for old software versions:
archive ancient versions of GC3Pie/GCC/OpenMPI/ORCA easybuild-easyconfigs#8586(EasyBuild v3.9.4)- try to avoid losing support for particular software packages while doing this...
- anything using
-
"basic" Python atGCCcore+ SciPy bundle?- done, see
{lang}[GCCcore/8.2.0] Python v3.7.2 easybuild-easyconfigs#7898 (Python 3.7.2),{lang}[GCCcore/8.2.0] Python v2.7.15 easybuild-easyconfigs#7821 (Python 2.7.15),{lang}[foss/2019a] SciPy-bundle v2019.03 w/ Python 2.7.15 + 3.7.2 easybuild-easyconfigs#7921 (SciPy-bundle)
- done, see
-
adopt ComputeCanada's approach to installing Python packages for multiple Python versions -
avoid warnings w.r.t. naming of local variables(all done!)- cfr. recommended naming scheme for local variables in
warn if non-single-letter local variables not named 'local_*' or '_*' are used + enhance --fix-deprecated-easyconfigs to rename them easybuild-framework#2938
- cfr. recommended naming scheme for local variables in