From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 2B69D158046 for ; Sat, 12 Oct 2024 08:13:06 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id E4206E29E6; Sat, 12 Oct 2024 08:13:01 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id A8A9DE29E2 for ; Sat, 12 Oct 2024 08:13:01 +0000 (UTC) Message-ID: Subject: [gentoo-dev] [RFC] Splitting dev-lang/python into per-slot packages, starting with 3.14 From: =?UTF-8?Q?Micha=C5=82_G=C3=B3rny?= To: gentoo-dev@lists.gentoo.org Cc: python@gentoo.org Date: Sat, 12 Oct 2024 10:12:56 +0200 Organization: Gentoo Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-h55E+zaSOKEc8IZqVCTw" User-Agent: Evolution 3.52.4 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply MIME-Version: 1.0 X-Archives-Salt: ab03943f-db2c-43b6-8be0-483daaff0f72 X-Archives-Hash: 41389360db5f9e2016c9f19d2193af64 --=-h55E+zaSOKEc8IZqVCTw Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello, Historically, all versions of CPython were slotted in a single package, i.e.: dev-lang/python:3.N This approach has been causing a major annoyance for users -- due to Portage "greedy" upgrade behavior, any time a new Python version was keyworded, Portage insisted on installing it, even though user's selected targets did not request the specific version. The potentially worst consequence of that would be random user scripts stopping to work, as they suddenly start using new Python, while all their dependencies are still installed per PYTHON_TARGETS. Upstream has recently added freethreading support to CPython. Since this support is not ABI compatible with the regular build, we need to introduce a separate target for it, and to package it separately. In the planned patchset, I've already put it as a separate package (dev- lang/python-freethreading), because otherwise Portage would insist on upgrading to it! However, I think the cleanest way forward would be to stop slotting CPython like this, and instead have a separate package for each version, just like the vast majority of distributions do, i.e.: dev-lang/python3_N This naturally means that only the specific version requested (e.g. via targets) would be installed, and no cross-slot autoupgrades would happen. Ideally, I'd like to start doing that with Python 3.14 whose first alpha is expected next week. Depending on how they handle freethreading, we'd end up having the first or both of: dev-lang/python3_14 dev-lang/python3_14t (Alternatives: python-3_14, python-freethreading-3_14? Though I think following PYTHON_TARGETS is cleaner here.) As a side notice, the existing versions would probably remain as-is until removal, since there's really no gain in splitting them, given we'd have to retain compatibility with existing depstrings. Comments? --=20 Best regards, Micha=C5=82 G=C3=B3rny --=-h55E+zaSOKEc8IZqVCTw Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iQFGBAABCgAwFiEEx2qEUJQJjSjMiybFY5ra4jKeJA4FAmcKL4gSHG1nb3JueUBn ZW50b28ub3JnAAoJEGOa2uIyniQOSuoH/3xN3bfkiRKY8Zoj0mvpDCVE3h2BJCSm GBG+REKjH/OR6B8bpLFwCHzwLuZw7ba61Qy+cTjyFf79wiQtB1MV8aP+5NL7baAu YPlh1mv58PlWfvmFpcukH+RhCAjmqQbmnkzA7RXpQGZSPyciJxrKte5XGTErMc95 QB5nRE5WLc6OcPnionWBJpasE9JcGCsxKvUCj1WaRxQDkFPs8lx5ocdPB4f36XNJ gLqJ4BvzwDpFk0Ywq2pj2l+miv40F3kcTT+ZughYcv1MIna3v4Prw5jxaiaWDpQr FqdixqNwT/WiuJ15U39iEpoze0pUo9K6i5ZGcbyslZ3a2JDPZD/SSh0= =HSzr -----END PGP SIGNATURE----- --=-h55E+zaSOKEc8IZqVCTw--