-
Notifications
You must be signed in to change notification settings - Fork 145
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
EasyBuild v4.0 #447
Comments
You folks do know that https://snarky.ca/stop-using-python-2-6 was written 3 1/2 year ago? |
We're fully aware that Python 2.6 is obsolete, and has been for a long time, yet we opt to keep supporting it for now. I re-evaluated whether or not to keep support for Python 2.6 while working on the port to Python 3.x (in the The main benefit would be being able to remove small parts of code that are required to maintain Python 2.6 support, which we haven't touched in years (so they have very little impact on development), and being able to clean up the mess (a bit) in the In my view, neither of those reasons are compelling enough to drop Python 2.6 support and annoy a minority of our user base along the way, especially since it has little impact on other users or ongoing development. |
@hugovk Would you be willing to show us how to get the Python versions being used to pip install:
Each of these repos has a 4.x branch that will add Python 3 support. The current users should all be on legacy Python and Python 2.4 is still supported. It would be interesting to know which versions of Python are being used to install the EasyBuild tools. Thx. |
@cclauss Are you looking for this? https://pypistats.org/packages/easybuild The Python 2.4 is a mistake in the |
Yes, https://pypistats.org is the easiest way. And using the CLI client:
Here's the pip installs for easybuild from PyPI for April 2019:
easybuild-framework:
easybuild-easyconfigs:
easybuild-easyblocks:
|
Those stats aren't very useful though, since the |
Hey easybuilders! I'm currently helping out on gc3pie, trying to get it to Python 2.7 + 3.x support. Our main motivation for maintaining 2.6 support is that you have us as a dependency. Truth be told though, the task of updating to Python 3 is made much more difficult when we have to support 2.6 (numerous backports, lack of dict comprehensions and so on). Regarding the popularity of various Python versions, I also don't believe you can trust the above stats from pypi due to CI. Referring to https://www.jetbrains.com/research/python-developers-survey-2018/#python-3-adoption, we can see that for every 1000 Python users, 3 of them are still on 2.6. I think unless there are specific users with compelling reasons for it, supporting 2.6 is a bit of a waste of developer time at this point. So I was wondering, if you decided not to drop 2.6 support, perhaps you would like to version lock to a stable, 2.6 supporting gc3pie for now? |
@interrogator , @boegel is away on holiday so you might have to wait a bit for a response. My 2c, I think EB should officially drop python2.6 support in v4.0 but keep it in the CI until it becomes too painful to maintain. For the purposes of the CI, locking to a gc3pie version is straightforward. |
OK. I'll wait to hear from @boegel . Feel free to do a version lock in any case, no harm in that I don't think! |
Drop support for Python 2.6. |
@boegel any updates on this? |
@interrogator We're working away the last hurdles for EasyBuild 4.0, still hoping to release it by the end of this month (Aug'19)... There's an early pre-release available via easybuilders/easybuild-easyconfigs#8568, you can use Running on top of Python 3 should work fine with that version (which is a bit behind the current Ignore the warnings you'll see popping up for local variables (something like |
In particular, I'd like to know if you're willing/able to lock to a commit/release of |
@interrogator We only have a minimal required version for GC3Pie now, which is If people are stuck to Python 2.6, they can keep using the latest GC3Pie 2.5.x? |
We'll release GC3Pie 2.6 in a few days. It's likely the 2.6.x releases will be the last ones to support Python 2.6. |
Update: |
@boegel As @riccardomurri points out, anything after the forthcoming gc3pie may not support 2.6, so if you don't add a version lock shortly, a new version of gc3pie could cause problem on your side. So by specifying a maximum version, you'll avoid that problem. Make sense? |
EasyBuild v4.0.0 has been released (see https://pypi.org/project/easybuild/4.0.0/), so closing this... Last remaining TODO is updating the bootstrap script, which is tackled via easybuilders/easybuild-framework#3017 |
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)drop deprecated functionality (seelog.deprecated
statements)log.deprecated("...", '4.0')
statements will now simply result an errorsupport running EasyBuild on top of (both Python 2.7 &) Python 3 (because 2+3=4)[DONE]support Python 3.x easybuild-framework#133blocker:vsc-base
should be compatible with Python 3 (cfr. start looking into making vsc-base Py3 compatible hpcugent/vsc-base#231, )vsc-base
&vsc-install
into framework, seeingest vsc-base & vsc-install easybuild-framework#2708see PRs marked withpython3
label: https://github.com/easybuilders/easybuild-framework/labels/python3avoid[DONE]setuptools
dependencyonly needed forpkg_resources.declare_namespace
used to spreadeasybuild
namespace across multiple directoriesalso relevant for(OK)--include-*
support, but can be worked around?pkg_resources.declare_namespace
bypkgutil.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#2837Packaging & installation
try to avoid requiring(DONE)setuptools
to install EasyBuild (try to avoid requiring setuptools to install EasyBuild easybuild-framework#2941)Documentation
Features
more flexibility w.r.t. dependency versions?(fat) easyconfigs in YAML syntax (.yeb
)?drop(will look into deprecating this in EasyBuild 4.x)exts_classmap
?replacedummy
toolchain withsystem
toolchaindeprecatedummy
toolchain to trigger deprecation warning on use, to be removed in EasyBuild 5.0see Please rename thedummy
toolchain easybuild-framework#1181done, see deprecate 'dummy' toolchain, replace with 'system' toolchain easybuild-framework#2877system
toolchain to EasyBuild 3.x: support using 'system' as alias for 'dummy' toolchain easybuild-framework#2960[ ] deprecateruntest
in favor oftestopts
, see deprecate runtest in favor of testopts (was: Add pretestopts and testops) easybuild-framework#2868stable support for(needs more time)--containerize
Easyblocks
PythonPackage
switch to installing Python packages with(not switching the default, but will keep requiringpip
by default (rather thansetup.py install
, i.e.setuptools
)use_pip = True
in contributed easyconfigs)needs to be re-evaluated...enable(already done indownload_dep_fail
by 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
ictce
toolchain (already deprecated in EasyBuild 3.8.0)archive easyconfigs using deprecated ictce or intel (< 2016a) toolchain easybuild-easyconfigs#8558goolf/1.4.10
(already deprecated in EasyBuild 3.8.0)archive easyconfigs using deprecated goolf(c) toolchain easybuild-easyconfigs#8557intel
andfoss
toolchains? (already deprecated in EasyBuild 3.8.0)intel/2016a
:archive easyconfigs using deprecated ictce or intel (< 2016a) toolchain easybuild-easyconfigs#8558foss/2016a
:archive easyconfigs using a gompi/foss toolchain older than {gompi,foss}/2016a easybuild-easyconfigs#8585(EasyBuild v3.9.4)archive ancient versions of GC3Pie/GCC/OpenMPI/ORCA easybuild-easyconfigs#8586(EasyBuild v3.9.4)"basic" Python atGCCcore
+ SciPy bundle?{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)adopt ComputeCanada's approach to installing Python packages for multiple Python versionsadd support for multi_deps easyconfig parameter (syntactic sugar for iterative list of builddependencies) easybuild-framework#2813avoid warnings w.r.t. naming of local variables(all done!)warn if non-single-letter local variables not named 'local_*' or '_*' are used + enhance --fix-deprecated-easyconfigs to rename them easybuild-framework#2938docs update @ add documentation on use of local variables in easyconfig files #527The text was updated successfully, but these errors were encountered: