[PATCH 0/5] distutils-r1.eclass: Correctness fixes and abi3t support for wheel reuse
Michał Górny <[email protected]>
| Newsgroups | gmane.linux.gentoo.devel |
|---|---|
| Message-ID | <[email protected]> |
First of all, change the build order so that builds happen from
the oldest to the newest Python version. Rather than building all
freethreaded versions first, build each one immediately before
the respective GIL-enabled version. In other words, we now build:
py3.12 py3.13 py3.14t py3.14 py3.15t py3.15
Notably, this ensures that the wheels available for reuse are always
compatible with the current interpreter. Previously, an early py3.15t
build could produce a wheel that wouldn't be compatible with py3.12,
and stuff would break if not for our overzealous *-abi3-* check.
Secondly, improve the wheel reuse logic to split and match individual
tags correctly. This means that *-cp315-abi3.abi3t-* wheels are now
correctly considered supported on GIL-enabled Python 3.15. Also update
it to support abi3t tags for future freethreading Python versions.
Add a safety check for the Python tag to ensure that our assumptions
do not break in the future.
Thirdly, reverse the wheel choice so that the latest wheel produced is
preferred. For example, when building cryptography for the full set
of targets, we get both a *-cp312-abi3-* wheel
and a *-cp315-abi3.abi3t-* wheel. For Python 3.15, we want to prefer
the latter over the former, much like traditional Python installers do.
Michał Górny (5):
python-utils-r1.eclass: Reorder impls for ascending versions
distutils-r1.eclass: Match tags precisely in the wheel reuse logic
distutils-r1.eclass: Support abi3t wheel reuse for freethreading
distutils-r1.eclass: Prefer later wheels for reuse
distutils-r1.eclass: Add a Python tag safety check for wheel reuse
eclass/distutils-r1.eclass | 79 ++++++++++++++++++++++++++++-------
eclass/python-utils-r1.eclass | 4 +-
2 files changed, 65 insertions(+), 18 deletions(-)