Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions easybuild/easyconfigs/p/Python/Python-3.6.2-GCCcore-6.4.0-bare.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name = 'Python'
version = '3.6.2'
versionsuffix = '-bare'

homepage = 'http://python.org/'

description = """
Python is a programming language that lets you work more quickly and
integrate your systems more effectively.

Note: This module is meant to provide a builddependency for other Python
modules while using EasyBuild's --minimaltoolchain option. Modules
built with it will require the full Python later
"""

toolchain = {'name': 'GCCcore', 'version': '6.4.0'}
toolchainopts = {'pic': True}

source_urls = ['http://www.python.org/ftp/%(namelower)s/%(version)s/']
sources = [SOURCE_TGZ]
checksums = ['7919489310a5f17f7acbab64d731e46dca0702874840dadce8bd4b2b3b8e7a82']

builddependencies = [
('binutils', '2.28'),
]

dependencies = [
('bzip2', '1.0.6'),
('libreadline', '7.0'),
('ncurses', '6.0'),
('SQLite', '3.19.3'),
('zlib', '1.2.11'),
]

osdependencies = [
# rely upon distribution for timely security updates
('openssl-devel', 'libssl-dev', 'libopenssl-devel'),
]

# We hide this by default since users should not use it in production,
# high-performance Python should be delivered at compiler level with
# a default extension set
# hidden = True

# bare installation: only known module deps for GCCcore tools included
exts_list = []

# Until such time that EasyBuild accepts 'rpath' as a toolchainopt...
# add RPATH so this can be used as a builddependency for "bare" PythonPackages
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's not start adding (imho) nasty workarounds like this for missing features in the EasyBuild framework...

I have to admit this is a nice way of building pressure for actually implementing support for rpath as a toolchain option though... ;-)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that EB doesn't update LD_LIBRARY_PATH with builddependencies, then unless the RPATH is set in the python binary, any PythonPackages built on top of it will fail during the sanity check (python -c 'import foo') due to not finding libpythonX.Y.so. I've have 100+ EBs dealing with Python-bare. The EBs in 3.3.1 barely scratch the surface, probably due to this fact. I'm telling you, from experience, if you want to build with --minimal-toolchains then you need the RPATH in python-bare.

I don't care how the RPATH is added, but it needs to be added given the current framework for --minimal-toolchains to be useful.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If there's any kind of runtime dependency on Python, then Python shouldn't be listed as a build dependency?

So, even with support for rpath as a toolchain option, I'm not 100% convinced that this is the right way to go.

Also relevant: the concept of link dependencies that is yet to be completed in framework, see easybuilders/easybuild-framework#1960

preconfigopts = """
sed -e\
's:LINKFORSHARED) -o $@ Programs/python.o:LINKFORSHARED) -Wl,-rpath=%(installdir)s/lib -o $@ Programs/python.o:'\
-i.eb Makefile.pre.in
"""

moduleclass = 'lang'