Repository navigation
Use sysconfig data for wheel tags and stable-ABI validation - #5362
Conversation
047b272 to
d0b137a
Compare
d0b137a to
c7cdf44
Compare
|
I'm working in jaraco/skeleton#224 to add 3.15t to the build matrix (for skeleton projects). |
c7cdf44 to
2382f7e
Compare
|
One nit, not a blocker: after this change setuptools/setuptools/command/bdist_wheel.py Lines 527 to 532 in 2382f7e When cross-compiling, that entry gets the building interpreter's version rather than the configured target's, which is inconsistent with the rest of the PR. |
a4c7b5c to
3c3e71b
Compare
Wheel tags and limited-API validation currently mix sysconfig values with the running interpreter's version, implementation and pointer size. Cross builds can therefore emit host-specific tags or reject stable-ABI wheels supported by the target. Derive interpreter details from sysconfig, retaining best-effort fallbacks when configuration data is unavailable. Fall back to SOABI when VERSION is missing or invalid, and use EXT_SUFFIX for Windows debug builds when Py_DEBUG is unavailable. Validate tags against the configured interpreter's version and ABI instead of tags.sys_tags(), preserving platform overrides and compressed ABI3/ABI3T tags. Cover differing host and target configurations, missing metadata, and native limited-API wheel builds, including --skip-build and importing the extension. Add Python 3.15t to CI.
3c3e71b to
00595bf
Compare
Should be fixed now. |
Summary of changes
Wheel tags and limited-API validation currently combine sysconfig values with information from the running interpreter. When cross-compiling, this can produce host-specific tags or reject stable-ABI wheels supported by the target.
Use sysconfig data for the Python version, implementation, pointer size and debug status, retaining best-effort fallbacks when configuration data is unavailable. Fall back to
SOABIwhenVERSIONis missing or invalid, and useEXT_SUFFIXfor Windows debug builds whenPy_DEBUGis unavailable.Validate wheel tags against the configured interpreter's version and ABI instead of
tags.sys_tags(), preserving platform overrides and compressed ABI3/ABI3T tags. Add regression coverage for differing host and target configurations, missing metadata, and native limited-API wheels, including--skip-buildand importing the extension. Also add Python 3.15t to CI.Follow-up to #5193 and #5352.
Closes #5360
Testing
test_bdist_wheel.pyandtest_build_ext.pytests on CPython 3.14 and 3.15t: 188 passed each; CPython 3.14t and PyPy 3.11: 186 passed and 2 skipped each.Pull Request Checklist
newsfragments/.(See documentation for details)