-
Notifications
You must be signed in to change notification settings - Fork 704
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
add easyconfig for 'Python-core' built with GCCcore which can be used as a build dep #5072
Conversation
…that depend on it)
Test report by @verdurin |
From #4962 Note: Here's a quick list of things I have working with Python-bare and GCCcore.... NTLR ASE asyncoro ATK cairo cairocffi cffi colorama Cycler Cython dbus-glib dispy Docutils FFmpeg FIAT FLTK FOX freeglut FTGL GConf Gdk-Pixbuf GEOS gettext Ghostscript GLEW GLib GObject-Introspection GST-plugins-base GStreamer GTK+ HarfBuzz ImageMagick jemalloc json2html libdap libdrm libepoxy libglade libGLU libICE libspatialite libxml2 libxslt LLVM Mako MarkupSafe matplotlib Mesa mpmath myriad Pango ply PostgreSQL psycopg2 PyCairo pycparser PyGObject PyGTK PyOpenGL PyQt PyQt5 PySlurm Python PyYAML PyZMQ QCA QJson QScintilla QScintilla5 Qt Qt5 Qwt QwtPolar rebuild.FLTK rebuild.PyGObject requests setuptools simplejson SIP six SWIG sympy Tk VTK wxPython X11 xprop |
Is this approach going to work for all those??? I don't want to expand the "core/base" GCCcore Python with all of that. How will they be added so that their Python version is clear? |
@JackPerdue Hmm, that's a long list... For some of them, like Stuff like If the core of what the software provides is a Python package (that's not the case for X11 imho, see discussion in #4979), then we should make the Python version for which it was built clear via |
Well.. the point was to keep Python "bare".... e.g. exts_list = [] It doesn't even have "setuptools" (I think)... by design. It's much easier to manage extensions individually than trying to lump them all into a giant EasyConfig that won't build (like R). |
@JackPerdue I disagree on the latter, because it also leads to an explosion of modules for Python packages. With your approach, it's even worse imho because the modules you obtain don't even provide a working installation unless you load an additional The Python packages we'd include as extensions should remain fairly limited in number, certainly less than a full As soon as you need Python as a runtime dep, you need to use a full Also, including some Python packages as extensions doesn't mean you can't flesh out others as stand-alone modules, you can still do that. But, the whole Python-built-with-GCCcore-to-be-used-as-a-build-dep complicates that imho, since I don't see a good way of making it clear that loading that module implies that you need to load a full |
BTW (as mentioned in previous PR), I have a bunch for iompi/iimpi/gompi as well. |
I like the idea of I know that this is not back-compatible, but how about the |
Regarding @JackPerdue's comment
I would strongly suggest the EB community to adopt what we have been doing at Compute Canada. Our modules that provide python bindings or python packages work with all supported versions of python. You load the same module for mpi4py to use it with python/2.7, 3.5 or 3.6. All that is needed for that is to forgo PYTHONPATH in favor of a sitecustomize.py file and an environment variable (which we named EBPYTHONPREFIXES). The only path that PYTHONPATH has is the one that contains sitecustomize.py Our sitecustomize.py looks like this. It would have to be refined for the broader EB community.
|
This is no longer necessary |
This is an alternate approach to #4962, the main differences being:
Python-core
as software name, to avoid confusion with a fullPython
installationPython
module to shadow a loadedPython-core
(that was part of the reason why I renamed thisPython
built withGCCcore
asPython-core
, to avoid a name clash withPython
)The purpose of this
Python-core
is similar to what @JackPerdue had in mind: to be used as a build dependency for modules installed withGCCcore
. If other software needs the Python bits provided by those modules, they'll either need to loadPython-core
as a build dep, or load a fullPython
as a dependency.I consider this a blocker for EasyBuild v3.4.0, since I'm not in favour of including the 'bare'
Python
withGCCcore
that got merged in #4962...Thoughts @easybuilders/easybuild-easyconfigs-maintainers & @JackPerdue?