Hi,

Long story short, upgrades for PyPy are a mess in Gentoo right now.
To fix that mess, I'd like to propose slotting PYTHON_TARGETS for PyPy
much like we slot them for CPython.
This roughly means:

- "pypy3" target will only match PyPy3.10 going forward, and be removed
  once we fully migrate to PyPy3.11

- a new "pypy3_11" target will be added for PyPy3.11, and every new
  PyPy slot will receive its own target

- shebangs for Python scripts will now refer to "pypy3.x" rather than
  "pypy3", so "pypy3" executable will eventually become a convenience
  wrapper much like "python" is now

On the plus side, users will be able to take the safer upgrade path,
by rebuilding everything with PyPy3.11 support without losing PyPy3.10
support immediately (and ending up with messed up depgraph if something
fails in the middle).

On the minus side, we'll have to test things on PyPy3.11 explicitly,
so more work.  On the other hand, it's not so bad — at least we'll keep
a track of problems with PyPy3.11 rather than guessing if it's good
enough to switch already, and then having lots of sudden breakage
without the old version to compare to.

-- 
Best regards,
Michał Górny


Michał Górny (10):
  profiles: Add pypy3_11 target
  python-utils-r1.eclass: Add pypy3_11 target
  app-portage/gpyutils: Add pypy3_11 target
  dev-lang/pypy3-exe: Readd KEYWORDS
  dev-lang/pypy3-exe-bin: Readd KEYWORDS
  dev-lang/pypy: Readd KEYWORDS
  dev-python/pypy3: Remove pypy3.11 version, it's a separate target
  dev-lang/pypy: Do not default-enable USE=symlink in :3.11
  python-any-r1.eclass: Fix := stripping again (now we have :3.11=)
  python-r1.eclass: Fix PYTHON_PKG_DEP stripping (we have :3.11= now)

 .../gpyutils/files/implementations.txt        |  1 +
 dev-lang/pypy/pypy-3.11.7.3.18_p1.ebuild      |  3 ++-
 .../pypy3-exe-bin-3.11.7.3.18.ebuild          |  1 +
 .../pypy3-exe/pypy3-exe-3.11.7.3.18.ebuild    |  1 +
 dev-python/pypy3/pypy3-7.3.18-r100.ebuild     | 18 --------------
 eclass/python-any-r1.eclass                   |  4 ++--
 eclass/python-r1.eclass                       |  2 +-
 eclass/python-utils-r1.eclass                 | 24 +++++++++----------
 eclass/tests/python-utils-r1.sh               | 19 +++++++++++++--
 profiles/base/package.use.force               |  1 +
 profiles/base/use.stable.mask                 |  2 ++
 profiles/desc/python_single_target.desc       |  3 ++-
 profiles/desc/python_targets.desc             |  3 ++-
 13 files changed, 44 insertions(+), 38 deletions(-)
 delete mode 100644 dev-python/pypy3/pypy3-7.3.18-r100.ebuild


Reply via email to