-
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
Possible bug in symbol version lookup? "GLIBC_PRIVATE" #229
Comments
I think |
@ehashman edit: needed to extract the What arguments should I use, and what information should I be looking for? Case-insensitive search on the output of
|
@dralley it would likely be helpful if you uploaded a copy of your built wheel as well as sharing the line-by-line steps you used to build it. |
Wheels and build script in the zip file CMD: |
I thought I had linked the full code already but apparently not: https://github.com/dralley/createrepo_c |
The script itself is not in the source code because I want it to be done by CI eventually, just debugging the process at the moment. I should mention that this came straight from the manylinux demo script https://github.com/pypa/python-manylinux-demo/tree/master/travis and I used the same script for 2 other packages successfully. |
The issue is definitely
Scanning through the runtime dependencies of |
Looks like project's build picks up the wrong Not sure why it is building with the wrong library though. |
@lkollar Thank you for the help! That is strange indeed. |
@lkollar I think this issue is a duplicate of pypa/manylinux#411 (comment)? Or they are at least possibly talking about the same issue. They claim they avoided the issue by avoiding libcurl, which we can't do. |
Apologize for all the edits and comments I've made and then deleted. It's my first time dealing with any of these tools or even messing around with the concepts of symbols and linking (I know of them, but I'm a Python dev, not a C dev). Such is the process of learning 😄 I'm able to confirm your results -- I'll test the packages tomorrow and verify that everything works as expected. Strangely, there's no reference to |
So the issue is definitely that the build is picking up the wrong version of libcrypt. The .so.1 version is the old version that's part of libc (so we can't vendor it), but has been deprecated and isn't available on all systems anymore (so we can't assume the system will provide it, either). So there's just no way for a manylinux wheel to link to the .so.1 version. The .so.2 version is the new standalone package, which acts like a normal shared library. So that's the version that you need to use. There are two ways you might be picking up the wrong version:
I think the second option is more likely. For example, maybe when you dnf install libcurl, you get a library that uses libcrypt.so.1. If that's what's going on, then what it means is that you can't use the distro-provided libcurl; instead you need to download the libcurl source and build it yourself, making sure that it uses libcrypt.so.2. (Libcurl is just an example here. Replace with "any libraries that use libcrypt.so.1.) |
Hello... I filed that very #411 issue, and in the end in our case we fall back on using the platform's curl executable when libcurl is not linked... I am following the present issue, in case some solution finally were landed, but have no more clue on a workaround sorry. |
I believe @njsmith is right, and it is option 2. This is an environmental problem so I will close this issue in favor of @myselfhimself 's issue. |
Filing this after a discussion with @njsmith on the wheel-builders mailing list.
I'm trying to build a manylinux2014-based Python wheel for the "createrepo_c" library. It compiles properly in the docker container (and every other platform I've tried) but "auditwheel repair" always fails.
Here is the output from auditwheel repair and auditwheel show:
I went through all of those symbols and compared them against the symbol version whitelist here
All of the versions of GCC and Glib that are listed exist in the whitelist, except for one which is rather strange.
Is this a bug? I don't know what
GLIBC_PRIVATE
is, but it doesn't match the general pattern, and I don't think this library is depending on any private glibc interfaces or anything like that.The text was updated successfully, but these errors were encountered: