-
Notifications
You must be signed in to change notification settings - Fork 150
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
We should probably allow libz linkage, and maybe libexpat #152
Comments
The dump for python interpreter on manylinux1 and manylinux2010 images are not quit the same.
That being said, I do agree that at least About
If its ABI is stable, then vendoring it might still be the way to go, it would be unused on systems having a python interpreter linking against it but still be used on systems without it. |
expat has been ABI compatible since the 2.0 release where there was a SONAME change. CentOS 5 includes expat 1.95 where as CentOS 6 has 2.0.1. |
Are there any Pythons that do not link against libz and libexpat? How should we fix this properly? I guess we have to confirm ABI compatibility for all versions of libz and libexpat that may be linked to any installed Python. |
|
This should help investigate pypa/auditwheel#152
This should help investigate pypa/auditwheel#152
Can we separate this into two: remove libz and continue exploring libexpat? |
@mattip, in fact, having checked both, removing |
These libs aren't mentioned in PEP 513, but auditwheel allows them (pypa/auditwheel#152) and so built wheels may depend on them.
hmm so slightly annoyingly the official
|
Here's the output of
ldd python3
on my system (Ubuntu 18.10):Most of that is glibc or kernel stuff. The exceptions are
libexpat.so.1
, andlibz.so.1
.ldd /usr/bin/python2
gives a similar list, except it's missinglibexpat.so.1
.The standard auditwheel profiles don't allow wheels to link against
libz.so.1
orlibexpat.so.1
– they get vendored instead. (See also: pypa/manylinux#296)However... this doesn't actually work!
Because of how ELF symbol resolution works, it doesn't matter whether you vendor these libraries: if they show up in
ldd <the interpreter>
, then any symbols in the system version of those libraries will be used by all python extensions, no matter what they vendor or link against. Basically the system version oflibz.so.1
andlibexpat.so.1
are gettingLD_PRELOAD
ed into every extension module.And apparently... this works? I haven't seen any bugs about it. And it's plausible to me that these libraries have extremely stable ABIs.
So maybe we should add them to the list of libraries that auditwheel will allow you to depend on without vendoring... the vendoring isn't doing much anyway.
The text was updated successfully, but these errors were encountered: