[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(-)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.