-
Notifications
You must be signed in to change notification settings - Fork 156
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
get_supported() should return more possibilities #125
Comments
What kind of project would produce such wheels anyway? |
To answer my own question: milksnake produces such wheels. |
Technically any package could use this capability - all they need to do is to bundle a platform-dependent binary, which they then interact with via Python-independent interfaces (e.g. launch via subprocess, and then communicate via pipes and/or sockets). But yeah, the more likely case for it coming up is when an extension module depends on a compatibility shim that handles the interaction with the CPython runtime, so only that shim needs to be rebuilt when the CPython ABI changes. |
Ok, so making sure that |
Yeah, I think that's the key missing combination - platform dependent, but not Python ABI dependent. |
Ok, what about the limited ABI? Should such wheels be named like -py3-abi3-$platform.whl? I didn't see anything in the spec about the limited ABI requiring CPython specifically, although it doesn't look like there's any other implementation that supports it. |
Aye, I think it would make sense to allow that combination as well, as it would allow the publisher to indicate that their Python code was implementation independent, and it was only their extension modules that required a particular runtime ABI. |
Wheel already includes |
I don't have a strong opinion on the automated scanning - in any case where I've needed this, it's been as part of a build script that could pass the required settings to force |
I have always thought that automated scanning of file contents was far, far too clever. Scanning of setuptools Extension objects is somewhere between just clever enough or too clever. Did we ever grow a flag that means 'the last tag should be whichever platform we are compiling on now'? |
For example bdist_wheel could know that abi3 dlls on Windows have the same filenames as non-abi3 dlls, but link with PYTHON3.DLL (which we could determine by running the Windows equivalent of objdump or ldd on the file) but on Linux abi3 dlls probably have a different extension. OSX probably does something else. Can we dump all the symbols from the library to determine whether they are using abi3 correctly or accidentally referenced a non-abi3 api? |
I suggested autodetection because I was ignorant about how ABI3 works. While there is an easy way to detect if ABI3 was used, the proper Python tags are very hard to determine automatically, which is I guess why the |
Now that we've delegated this functionality to |
Originally reported by: Antoine Pitrou (Bitbucket: pitrou, GitHub: pitrou)
The following result isn't compatible with a tag such as
py2.py3-none-linux_x86_64
.Reference: https://mail.python.org/pipermail/distutils-sig/2014-October/025176.html
The text was updated successfully, but these errors were encountered: