* [gentoo-dev] [PATCH 0/9] Python 3.13 freethreading support
@ 2024-10-09 11:47 Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 1/9] dev-lang/python: Remove old Michał Górny
` (8 more replies)
0 siblings, 9 replies; 10+ messages in thread
From: Michał Górny @ 2024-10-09 11:47 UTC (permalink / raw
To: gentoo-dev; +Cc: Michał Górny
Hello,
Here's a patchset that adds support for Python 3.13 freethreading
version.
Originally, this was dev-lang/python:3.13[-gil]. However, since it is
ABI-incompatible at extension level with the regular build of CPython,
upstream decided to split it into a separate /usr/lib/python3.13t
install tree, with its own .so suffix, wheel tag and so on. All things
considered, it seems to make most sense to treat it separately in Gentoo
as well.
So for this, we do:
1. Introduce dev-lang/python-freethreading that installs
the freethreading version of CPython (:3.13t).
2. Introduce 'python3_13t' Python target for it.
Note that at this point freethreading support is limited. Some packages
do support it, others may work incidentally. Right now, the stable ABI
is not supported at all. Hopefully, this will be improved
in the future (and I really do hope we won't have to repeat this split
for Python 3.14). In any case, the extra advantage of splitting it
right now is that it permits us to test freethreading support separately
and explicitly mark packages that work with that.
Freethreading is considered experimental upstream. Unlike python3_13
target, python3_13t is not intended to be unmasked on stable. We are
also using a separate package name to avoid having to hack PV into
something like 3.13.0 + 3.13.0-r100, and to avoid having Portage insist
on installing the freethreading version, as it loves to proactively
upgrade stuff. In fact, perhaps we should consider splitting all slots
of Python into separate packages in the future.
That said, the current implementation is not nice for PYTHON_COMPAT:
PYTHON_COMPAT=( pypy3 python3_{10..13} python3_13t )
I'm still considering our options here, but I don't think there's any
really clean way of avoiding this.
Michał Górny (9):
dev-lang/python: Remove old
dev-lang/python: Remove freethreading support
profiles: Copy dev-lang/python entries for python-freethreading
dev-lang/python-freethreading: New package, 3.13.0
profiles: Add python3_13t (freethreading) target
install-qa-check.d: Support dev-lang/python-freethreading
python-utils-r1.eclass: Support python3_13t (freethreading) target
app-portage/gpyutils: Add python3.13t
distutils-r1.eclass: Do not use stable ABI wheels in freethreading
.../gpyutils/files/implementations.txt | 1 +
dev-lang/python-freethreading/Manifest | 3 ++
.../python-freethreading/files/pydoc.conf | 6 +++
.../python-freethreading/files/pydoc.init | 24 ++++++++++
dev-lang/python-freethreading/metadata.xml | 39 +++++++++++++++
.../python-freethreading-3.13.0.ebuild} | 47 +++++++------------
dev-lang/python/Manifest | 3 --
dev-lang/python/metadata.xml | 4 --
dev-lang/python/python-3.13.0.ebuild | 15 +++---
eclass/distutils-r1.eclass | 13 +++--
eclass/python-utils-r1.eclass | 10 ++--
eclass/tests/python-utils-r1.sh | 8 ++--
metadata/install-qa-check.d/60python-site | 2 +-
profiles/arch/alpha/package.use.mask | 1 +
profiles/arch/hppa/package.use.mask | 1 +
profiles/arch/loong/package.use.mask | 1 +
profiles/arch/m68k/package.mask | 1 +
profiles/arch/m68k/package.use.mask | 1 +
profiles/arch/mips/package.use.mask | 1 +
profiles/arch/s390/package.use.mask | 1 +
profiles/base/make.defaults | 3 +-
profiles/base/package.use.force | 7 +--
profiles/base/package.use.mask | 2 +
profiles/base/use.stable.mask | 2 +
profiles/desc/python_single_target.desc | 1 +
profiles/desc/python_targets.desc | 1 +
profiles/features/hardened/package.use | 1 +
profiles/features/musl/package.use.mask | 1 +
profiles/features/prefix/package.use.mask | 1 +
profiles/features/selinux/package.use.force | 1 +
profiles/targets/desktop/gnome/package.use | 1 +
profiles/targets/desktop/package.use | 2 +
32 files changed, 143 insertions(+), 62 deletions(-)
create mode 100644 dev-lang/python-freethreading/Manifest
create mode 100644 dev-lang/python-freethreading/files/pydoc.conf
create mode 100644 dev-lang/python-freethreading/files/pydoc.init
create mode 100644 dev-lang/python-freethreading/metadata.xml
rename dev-lang/{python/python-3.13.0_rc3.ebuild => python-freethreading/python-freethreading-3.13.0.ebuild} (92%)
--
2.47.0
^ permalink raw reply [flat|nested] 10+ messages in thread
* [gentoo-dev] [PATCH 1/9] dev-lang/python: Remove old
2024-10-09 11:47 [gentoo-dev] [PATCH 0/9] Python 3.13 freethreading support Michał Górny
@ 2024-10-09 11:47 ` Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 2/9] dev-lang/python: Remove freethreading support Michał Górny
` (7 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Michał Górny @ 2024-10-09 11:47 UTC (permalink / raw
To: gentoo-dev; +Cc: Michał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org>
---
dev-lang/python/Manifest | 3 -
dev-lang/python/python-3.13.0_rc3.ebuild | 665 -----------------------
2 files changed, 668 deletions(-)
delete mode 100644 dev-lang/python/python-3.13.0_rc3.ebuild
diff --git a/dev-lang/python/Manifest b/dev-lang/python/Manifest
index 96902bb9783e..daddb0dad1f4 100644
--- a/dev-lang/python/Manifest
+++ b/dev-lang/python/Manifest
@@ -10,8 +10,6 @@ DIST Python-3.12.7.tar.xz 20444032 BLAKE2B eed8744261cab3b401963ec5187a8b814adb9
DIST Python-3.12.7.tar.xz.asc 963 BLAKE2B 8c7db3d1971d93a10c611a2e6dd3679d0b331b48df87b5fe410b089061e48753d98af67084d4f051a31ae803fce3aa3c7af7cba9c692640f50068bd1e46f40e6 SHA512 4d0a7a0da2c81888e93d8ff89ca2ed4bb85a7b0bd00f0d54a14e2c201affac2677ef3984d2b5aea253e624f6465548d9032eefdd9033c1eb3864d82cfd8d3df0
DIST Python-3.13.0.tar.xz 22532980 BLAKE2B 4a4e397199402de8c9fe8e4d63443ed972cbe8a4f541743908d699c7987127d159d600fd14145b6a946e8671426279d230c9155fdc5863c1e49a945eedcbf21b SHA512 44a143c9b96b55b01885ec020c3364265bda55289615cd7d5071915b0d0178a6f35e7551a89090001fcb7f3172d38177a56bf8b8532b15c9dbc50295c9210152
DIST Python-3.13.0.tar.xz.asc 963 BLAKE2B d05f02692a9fea42b73dbfe5dc42bd6533555e5ecb848510d2b94bb7f0e55d4a0f89bcd20b073ed2c7f7a68be35b12cb6dbff6bc16fc9a4592ded2c339ada7fd SHA512 1b8bb0fe4eb93e31ec1770e90b94d44b5864c0391aad5dcba3a30d8e505d9b17107385414353c0060007f8a536254f49b8e919f36ddf6421a6e4330f817f1a3e
-DIST Python-3.13.0rc3.tar.xz 22527884 BLAKE2B 9c6423e9871b30af70ece10598e798da443b40b3e40cae86ec59d396184df005627a5edeedf34d31c7953f972850e41d1cc708edd8e39c1327d319b0f6973049 SHA512 152e5b6d64048c1779612e66d5999c424ca7c61c8a0f4973f7b3019629d6a7923b422aec0bee30e7bc2d589a807d87e15a19b8fb4446bcf082eb663885a49b36
-DIST Python-3.13.0rc3.tar.xz.asc 963 BLAKE2B e03d902eee320939cb77094e1b64e0101d0172ebdcc502255da1c0fc84476f43fafe900321c78cd78248a751b3a3921572ba4f305ed77ed78f175184b21f667f SHA512 c8f80b12f5e3021a11fc3ef5ce84572db9de7165ce89a03206cb0727b54f90ca2e444a16df064e6423e15b7bf2364db088b0c9315967dd340e735eabf7b892ce
DIST Python-3.8.20.tar.xz 18962788 BLAKE2B 715c75e0c0a3d3b77af7f07478311bb0554b80aac72915be703aa2d0dd6459a972e5669808e64da14a0b91bb183e00655055c1726f302dc3ccd8721e3b4ae3e6 SHA512 3c9341ee1fd33cb687958dcf2b7c0c7700489726c4d530c3e9d9537d46a6ab534541a4b312232d8505bea395a07e4518c42d75fb7571103e6b266f8f44115c61
DIST Python-3.8.20.tar.xz.asc 833 BLAKE2B 5c86c15a1090b42e42bb7512565b1a7ad9d2137d59e9fd1ab0f83fdfc37dfcf184389418d6703db809e9c8c04a169af292665a2b58bf5dc61b7724ecbb4132d9 SHA512 a751ae0407a593d97acac4d5f8a0456580c753efa12a7d960125c219b4897fdb26fc1ffd43d8ea33ad1449162dd3b2904c16b6c51c57561ba73de3ffa62e0eed
DIST Python-3.9.20.tar.xz 19648968 BLAKE2B 80a337ff406130599b8320068d11bc275d23473cedd7c85fcb9e40134f0f2d533be6e712139e788a6423cdc74cea938f306aa37c2a5099e3051f3e390159279c SHA512 c828f33edf1704e3149499d6d34e89264cb5cdb2b09ff05561641b359716d7996f0fe928629e09f006b1fd7850fdaf937275919c7fdd83f5efc32707c64d814b
@@ -23,6 +21,5 @@ DIST python-gentoo-patches-3.12.6_p2.tar.xz 8144 BLAKE2B 2f36ce972e0b3e2884c9df6
DIST python-gentoo-patches-3.12.6_p4-r1.tar.xz 9072 BLAKE2B 831f6c4284035832e0536ad3211d10c078e6c356e1fa593dd45984b29253deaf703bcb71e1b488508992dd37d5a140591c9193f1620bb966e39b048e4d5c6746 SHA512 9c61e0396c98fb45f3dccad9165e3f2b7bbeabd4a6fe88cc6e05a9d3012e39068571e63527dc831efaf24cb0e8fee75f60454481b2d1a0a44bedba69a7ed5c95
DIST python-gentoo-patches-3.12.7_p1-r1.tar.xz 10552 BLAKE2B c71ffbbaa4dccd012fced7979c54f2b895ac207a892fd4b0118ab9ef678931c5449f6205855bf5fab9bc7fb5e5af0fc7c5b89bab608e5539855db571bb9d3aa4 SHA512 62207e2eb44e4eeb464ba4bdcefe15b3e03793793cbd033c153cdbf1c9a861779f3bb7259dc09e786c183450123ea283583d9870eca9d6c7b25e5f3dba6f89d6
DIST python-gentoo-patches-3.13.0.tar.xz 8316 BLAKE2B 8fb8ba8f41f310140ad7066b614952023112d5043e5d82058364125611785144c1843e87eecb7669bcbab51c40d0694069526219f7419a7009517ce0821b74ba SHA512 0eb31ebfa3411020aa70b3b66fd7eec98b4b7a686b0e8f1f7ed76a8186a7c1ee85ccd9565a86a1d7ec13b975855eeb7303036af05e2dfdce3d64e4ad99299df4
-DIST python-gentoo-patches-3.13.0rc3-r1.tar.xz 8324 BLAKE2B 8a8124bf2c8bcb93113e7a17394dd83087c7f7d49e56e6878947029c496dcf8f6acb1da62124c73ee4121639fbaa6c3cbea13032c786c8b57bbbc379386394cf SHA512 cdfdd0f744f87438863432880791c611ae14f6169fdce08bfc22deb1e5b1f62aeb87044e6f7b15524b26bef8383ca1641d9b2861558bba597a74551e3ef478a7
DIST python-gentoo-patches-3.8.20_p2.tar.xz 42296 BLAKE2B c0f2c4d0adcb6c10eb68342b911016666cb68308717a5ca1369100a39229ce16c6e9dfdf9e1b4cffe0191d03ca5ee7d9568cd24885fd0f4f32f14e2e8c0a96a3 SHA512 cb9e98c0dd823b6e4f8a60e9095ab58e596cd9411b675678a0d4adefc92b37e14cecc7cecb82e287ac34a9ce1d4595f261b0736bcc9fc62c43c7d8c0b3be70e7
DIST python-gentoo-patches-3.9.20_p1.tar.xz 34944 BLAKE2B 332454661adc03033c7e8a5fcc91081b7d405826e9bf89bb2c2e178a0795e4415c9e87ae923756470ee973441f242e194b397354964b8f43dadd4965d210a4f4 SHA512 19bf7227535526a733633723b75d49786dfd8738595c1115b4e05665bc13a1ea70cbf0cc62cb27e81c75f5db2aa56ab985eaa5abde6243697caccb2cb5288005
diff --git a/dev-lang/python/python-3.13.0_rc3.ebuild b/dev-lang/python/python-3.13.0_rc3.ebuild
deleted file mode 100644
index c71af7471360..000000000000
--- a/dev-lang/python/python-3.13.0_rc3.ebuild
+++ /dev/null
@@ -1,665 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="8"
-
-LLVM_COMPAT=( 18 )
-LLVM_OPTIONAL=1
-WANT_LIBTOOL="none"
-
-inherit autotools check-reqs flag-o-matic linux-info llvm-r1
-inherit multiprocessing pax-utils python-utils-r1 toolchain-funcs
-inherit verify-sig
-
-MY_PV=${PV/_}
-MY_P="Python-${MY_PV%_p*}"
-PYVER=$(ver_cut 1-2)
-PATCHSET="python-gentoo-patches-${MY_PV}-r1"
-
-DESCRIPTION="An interpreted, interactive, object-oriented programming language"
-HOMEPAGE="
- https://www.python.org/
- https://github.com/python/cpython/
-"
-SRC_URI="
- https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz
- https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz
- verify-sig? (
- https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc
- )
-"
-S="${WORKDIR}/${MY_P}"
-
-LICENSE="PSF-2"
-SLOT="${PYVER}"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-IUSE="
- bluetooth build +debug +ensurepip examples gdbm +gil jit
- libedit +ncurses pgo +readline +sqlite +ssl test tk valgrind
-"
-REQUIRED_USE="jit? ( ${LLVM_REQUIRED_USE} )"
-RESTRICT="!test? ( test )"
-
-# Do not add a dependency on dev-lang/python to this ebuild.
-# If you need to apply a patch which requires python for bootstrapping, please
-# run the bootstrap code on your dev box and include the results in the
-# patchset. See bug 447752.
-
-RDEPEND="
- app-arch/bzip2:=
- app-arch/xz-utils:=
- app-crypt/libb2
- >=dev-libs/expat-2.1:=
- dev-libs/libffi:=
- dev-libs/mpdecimal:=
- dev-python/gentoo-common
- >=sys-libs/zlib-1.1.3:=
- virtual/libintl
- ensurepip? ( dev-python/ensurepip-pip )
- gdbm? ( sys-libs/gdbm:=[berkdb] )
- kernel_linux? ( sys-apps/util-linux:= )
- ncurses? ( >=sys-libs/ncurses-5.2:= )
- readline? (
- !libedit? ( >=sys-libs/readline-4.1:= )
- libedit? ( dev-libs/libedit:= )
- )
- sqlite? ( >=dev-db/sqlite-3.3.8:3= )
- ssl? ( >=dev-libs/openssl-1.1.1:= )
- tk? (
- >=dev-lang/tcl-8.0:=
- >=dev-lang/tk-8.0:=
- dev-tcltk/blt:=
- dev-tcltk/tix
- )
-"
-# bluetooth requires headers from bluez
-DEPEND="
- ${RDEPEND}
- bluetooth? ( net-wireless/bluez )
- test? (
- dev-python/ensurepip-pip
- dev-python/ensurepip-setuptools
- dev-python/ensurepip-wheel
- )
- valgrind? ( dev-debug/valgrind )
-"
-# autoconf-archive needed to eautoreconf
-BDEPEND="
- dev-build/autoconf-archive
- app-alternatives/awk
- virtual/pkgconfig
- jit? (
- $(llvm_gen_dep '
- sys-devel/clang:${LLVM_SLOT}
- sys-devel/llvm:${LLVM_SLOT}
- ')
- )
- verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 )
-"
-RDEPEND+="
- !build? ( app-misc/mime-types )
-"
-if [[ ${PV} != *_alpha* ]]; then
- RDEPEND+="
- dev-lang/python-exec[python_targets_python${PYVER/./_}(-)]
- "
-fi
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc
-
-# large file tests involve a 2.5G file being copied (duplicated)
-CHECKREQS_DISK_BUILD=5500M
-
-QA_PKGCONFIG_VERSION=${PYVER}
-# false positives -- functions specific to *BSD
-QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags )
-
-declare -rA PYTHON_KERNEL_CHECKS=(
- ["CROSS_MEMORY_ATTACH"]="test_external_inspection" #bug 938589
- ["DNOTIFY"]="test_fcntl" # bug 938662
-)
-
-pkg_pretend() {
- if use pgo || use test; then
- check-reqs_pkg_pretend
- fi
-
- if ! use gil || use jit; then
- ewarn "USE=-gil and USE=jit flags are considered experimental upstream. Using"
- ewarn "them could lead to unexpected breakage, including race conditions"
- ewarn "and crashes, respectively. Please do not file Gentoo bugs, unless"
- ewarn "you can reproduce the problem with dev-lang/python[gil,-jit]. Instead,"
- ewarn "please consider reporting freethreading / JIT problems upstream."
- fi
-}
-
-pkg_setup() {
- if [[ ${MERGE_TYPE} != binary ]]; then
- use jit && llvm-r1_pkg_setup
- if use test || use pgo; then
- check-reqs_pkg_setup
-
- local CONFIG_CHECK
- for f in "${!PYTHON_KERNEL_CHECKS[@]}"; do
- CONFIG_CHECK+="~${f} "
- done
- linux-info_pkg_setup
- fi
- fi
-}
-
-src_unpack() {
- if use verify-sig; then
- verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc}
- fi
- default
-}
-
-src_prepare() {
- # Ensure that internal copies of expat and libffi are not used.
- # TODO: Makefile has annoying deps on expat headers
- #rm -r Modules/expat || die
-
- local PATCHES=(
- "${WORKDIR}/${PATCHSET}"
- )
-
- default
-
- # force the correct number of jobs
- # https://bugs.gentoo.org/737660
- sed -i -e "s:-j0:-j$(makeopts_jobs):" Makefile.pre.in || die
-
- # breaks tests when using --with-wheel-pkg-dir
- rm -r Lib/test/wheeldata || die
-
- eautoreconf
-}
-
-build_cbuild_python() {
- # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181
- local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi)
-
- # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get
- # propagated to sysconfig for built extensions
- #
- # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway)
- local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto"
- local -x LDFLAGS_NODIST=${BUILD_LDFLAGS}
- local -x CFLAGS= LDFLAGS=
- local -x BUILD_CFLAGS="${CFLAGS_NODIST}"
- local -x BUILD_LDFLAGS=${LDFLAGS_NODIST}
-
- # We need to build our own Python on CBUILD first, and feed it in.
- # bug #847910
- local myeconfargs_cbuild=(
- "${myeconfargs[@]}"
-
- --prefix="${BROOT}"/usr
- --libdir="${cbuild_libdir:2}"
-
- # Avoid needing to load the right libpython.so.
- --disable-shared
-
- # As minimal as possible for the mini CBUILD Python
- # we build just for cross to satisfy --with-build-python.
- --without-lto
- --without-readline
- --disable-optimizations
- )
-
- mkdir "${WORKDIR}"/${P}-${CBUILD} || die
- pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die
-
- # Avoid as many dependencies as possible for the cross build.
- mkdir Modules || die
- cat > Modules/Setup.local <<-EOF || die
- *disabled*
- nis
- _dbm _gdbm
- _sqlite3
- _hashlib _ssl
- _curses _curses_panel
- readline
- _tkinter
- pyexpat
- zlib
- # We disabled these for CBUILD because Python's setup.py can't handle locating
- # libdir correctly for cross. This should be rechecked for the pure Makefile approach,
- # and uncommented if needed.
- #_ctypes
- EOF
-
- ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}"
-
- # Unfortunately, we do have to build this immediately, and
- # not in src_compile, because CHOST configure for Python
- # will check the existence of the --with-build-python value
- # immediately.
- emake
- popd &> /dev/null || die
-}
-
-src_configure() {
- # disable automagic bluetooth headers detection
- if ! use bluetooth; then
- local -x ac_cv_header_bluetooth_bluetooth_h=no
- fi
-
- append-flags -fwrapv
- filter-flags -malign-double
-
- # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile.
- # PKG_CONFIG needed for cross.
- tc-export CXX PKG_CONFIG
-
- local dbmliborder=
- if use gdbm; then
- dbmliborder+="${dbmliborder:+:}gdbm"
- fi
-
- # Set baseline test skip flags.
- COMMON_TEST_SKIPS=(
- # this is actually test_gdb.test_pretty_print
- -x test_pretty_print
- )
-
- # Arch-specific skips. See #931888 for a collection of these.
- case ${CHOST} in
- alpha*)
- COMMON_TEST_SKIPS+=(
- -x test_builtin
- -x test_capi
- -x test_cmath
- -x test_float
- # timeout
- -x test_free_threading
- -x test_math
- -x test_numeric_tower
- -x test_random
- -x test_statistics
- # bug 653850
- -x test_resource
- -x test_strtod
- )
- ;;
- mips*)
- COMMON_TEST_SKIPS+=(
- -x test_ctypes
- -x test_external_inspection
- -x test_statistics
- )
- ;;
- powerpc64-*) # big endian
- COMMON_TEST_SKIPS+=(
- -x test_descr
- )
- ;;
- riscv*)
- COMMON_TEST_SKIPS+=(
- -x test_urllib2
- )
- ;;
- sparc*)
- COMMON_TEST_SKIPS+=(
- # bug 788022
- -x test_multiprocessing_fork
- -x test_multiprocessing_forkserver
-
- -x test_ctypes
- -x test_descr
- # bug 931908
- -x test_exceptions
- )
- ;;
- esac
-
- # Kernel-config specific skips
- for option in "${!PYTHON_KERNEL_CHECKS[@]}"; do
- if ! linux_config_exists || ! linux_chkconfig_present "${option}"
- then
- COMMON_TEST_SKIPS+=( -x "${PYTHON_KERNEL_CHECKS[${option}]}" )
- fi
- done
-
- # musl-specific skips
- use elibc_musl && COMMON_TEST_SKIPS+=(
- # various musl locale deficiencies
- -x test__locale
- -x test_c_locale_coercion
- -x test_locale
- -x test_re
-
- # known issues with find_library on musl
- # https://bugs.python.org/issue21622
- -x test_ctypes
-
- # fpathconf, ttyname errno values
- -x test_os
- )
-
- if use pgo; then
- local profile_task_flags=(
- -m test
- "-j$(makeopts_jobs)"
- --pgo-extended
- --verbose3
- -u-network
-
- # We use a timeout because of how often we've had hang issues
- # here. It also matches the default upstream PROFILE_TASK.
- --timeout 1200
-
- "${COMMON_TEST_SKIPS[@]}"
-
- -x test_dtrace
-
- # All of these seem to occasionally hang for PGO inconsistently
- # They'll even hang here but be fine in src_test sometimes.
- # bug #828535 (and related: bug #788022)
- -x test_asyncio
- -x test_httpservers
- -x test_logging
- -x test_multiprocessing_fork
- -x test_socket
- -x test_xmlrpc
-
- # Hangs (actually runs indefinitely executing itself w/ many cpython builds)
- # bug #900429
- -x test_tools
-
- # Fails in profiling run, passes in src_test().
- -x test_capi
- )
-
- # Arch-specific skips. See #931888 for a collection of these.
- case ${CHOST} in
- alpha*)
- profile_task_flags+=(
- -x test_os
- )
- ;;
- hppa*)
- profile_task_flags+=(
- -x test_descr
- # bug 931908
- -x test_exceptions
- -x test_os
- )
- ;;
- powerpc64-*) # big endian
- profile_task_flags+=(
- # bug 931908
- -x test_exceptions
- )
- ;;
- riscv*)
- profile_task_flags+=(
- -x test_statistics
- )
- ;;
- esac
-
- if has_version "app-arch/rpm" ; then
- # Avoid sandbox failure (attempts to write to /var/lib/rpm)
- profile_task_flags+=(
- -x test_distutils
- )
- fi
- local -x PROFILE_TASK="${profile_task_flags[*]}"
- fi
-
- local myeconfargs=(
- # glibc-2.30 removes it; since we can't cleanly force-rebuild
- # Python on glibc upgrade, remove it proactively to give
- # a chance for users rebuilding python before glibc
- ac_cv_header_stropts_h=no
-
- --enable-shared
- --without-static-libpython
- --enable-ipv6
- --infodir='${prefix}/share/info'
- --mandir='${prefix}/share/man'
- --with-computed-gotos
- --with-dbmliborder="${dbmliborder}"
- --with-libc=
- --enable-loadable-sqlite-extensions
- --without-ensurepip
- --without-lto
- --with-system-expat
- --with-system-libmpdec
- --with-platlibdir=lib
- --with-pkg-config=yes
- --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip
-
- $(use_with debug assertions)
- $(use_enable gil)
- $(use_enable jit experimental-jit)
- $(use_enable pgo optimizations)
- $(use_with readline readline "$(usex libedit editline readline)")
- $(use_with valgrind)
- )
-
- # https://bugs.gentoo.org/700012
- if tc-is-lto; then
- append-cflags $(test-flags-CC -ffat-lto-objects)
- myeconfargs+=(
- --with-lto
- )
- fi
-
- # Force-disable modules we don't want built.
- # See Modules/Setup for docs on how this works. Setup.local contains our local deviations.
- cat > Modules/Setup.local <<-EOF || die
- *disabled*
- nis
- $(usev !gdbm '_gdbm _dbm')
- $(usev !sqlite '_sqlite3')
- $(usev !ssl '_hashlib _ssl')
- $(usev !ncurses '_curses _curses_panel')
- $(usev !readline 'readline')
- $(usev !tk '_tkinter')
- EOF
-
- # disable implicit optimization/debugging flags
- local -x OPT=
-
- if tc-is-cross-compiler ; then
- build_cbuild_python
- myeconfargs+=(
- # Point the imminent CHOST build to the Python we just
- # built for CBUILD.
- --with-build-python="${WORKDIR}"/${P}-${CBUILD}/python
- )
- fi
-
- # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get
- # propagated to sysconfig for built extensions
- local -x CFLAGS_NODIST=${CFLAGS}
- local -x LDFLAGS_NODIST=${LDFLAGS}
- local -x CFLAGS= LDFLAGS=
-
- # Fix implicit declarations on cross and prefix builds. Bug #674070.
- if use ncurses; then
- append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw
- fi
-
- econf "${myeconfargs[@]}"
-
- if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then
- eerror "configure has detected that the sem_open function is broken."
- eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777."
- die "Broken sem_open function (bug 496328)"
- fi
-
- # install epython.py as part of stdlib
- echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die
-}
-
-src_compile() {
- # Ensure sed works as expected
- # https://bugs.gentoo.org/594768
- local -x LC_ALL=C
- export PYTHONSTRICTEXTENSIONBUILD=1
-
- # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't
- # end up writing bytecode & violating sandbox.
- # bug #831897
- local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE}
-
- # Gentoo hack to disable accessing system site-packages
- export GENTOO_CPYTHON_BUILD=1
-
- if use pgo ; then
- # bug 660358
- local -x COLUMNS=80
- local -x PYTHONDONTWRITEBYTECODE=
- fi
-
- # also need to clear the flags explicitly here or they end up
- # in _sysconfigdata*
- emake CPPFLAGS= CFLAGS= LDFLAGS=
-
- # Restore saved value from above.
- local -x PYTHONDONTWRITEBYTECODE=${_PYTHONDONTWRITEBYTECODE}
-
- # Work around bug 329499. See also bug 413751 and 457194.
- if has_version dev-libs/libffi[pax-kernel]; then
- pax-mark E python
- else
- pax-mark m python
- fi
-}
-
-src_test() {
- # Tests will not work when cross compiling.
- if tc-is-cross-compiler; then
- elog "Disabling tests due to crosscompiling."
- return
- fi
-
- # this just happens to skip test_support.test_freeze that is broken
- # without bundled expat
- # TODO: get a proper skip for it upstream
- local -x LOGNAME=buildbot
-
- local test_opts=(
- --verbose3
- -u-network
- -j "$(makeopts_jobs)"
- "${COMMON_TEST_SKIPS[@]}"
- )
-
- # bug 660358
- local -x COLUMNS=80
- local -x PYTHONDONTWRITEBYTECODE=
-
- nonfatal emake -Onone test EXTRATESTOPTS="${test_opts[*]}" \
- CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty
- local ret=${?}
-
- [[ ${ret} -eq 0 ]] || die "emake test failed"
-}
-
-src_install() {
- local libdir=${ED}/usr/lib/python${PYVER}
-
- # -j1 hack for now for bug #843458
- emake -j1 DESTDIR="${D}" TEST_MODULES=no altinstall
-
- # Fix collisions between different slots of Python.
- rm "${ED}/usr/$(get_libdir)/libpython3.so" || die
-
- # Cheap hack to get version with ABIFLAGS
- local abiver=$(cd "${ED}/usr/include"; echo python*)
- if [[ ${abiver} != python${PYVER} ]]; then
- # Replace python3.X with a symlink to python3.Xm
- rm "${ED}/usr/bin/python${PYVER}" || die
- dosym "${abiver}" "/usr/bin/python${PYVER}"
- # Create python3.X-config symlink
- dosym "${abiver}-config" "/usr/bin/python${PYVER}-config"
- # Create python-3.5m.pc symlink
- dosym "python-${PYVER}.pc" "/usr/$(get_libdir)/pkgconfig/${abiver/${PYVER}/-${PYVER}}.pc"
- fi
-
- # python seems to get rebuilt in src_install (bug 569908)
- # Work around it for now.
- if has_version dev-libs/libffi[pax-kernel]; then
- pax-mark E "${ED}/usr/bin/${abiver}"
- else
- pax-mark m "${ED}/usr/bin/${abiver}"
- fi
-
- rm -r "${libdir}"/ensurepip/_bundled || die
- if ! use sqlite; then
- rm -r "${libdir}/"sqlite3 || die
- fi
- if ! use tk; then
- rm -r "${ED}/usr/bin/idle${PYVER}" || die
- rm -r "${libdir}/"{idlelib,tkinter} || die
- fi
-
- ln -s ../python/EXTERNALLY-MANAGED "${libdir}/EXTERNALLY-MANAGED" || die
-
- dodoc Misc/{ACKS,HISTORY,NEWS}
-
- if use examples; then
- docinto examples
- find Tools -name __pycache__ -exec rm -fr {} + || die
- dodoc -r Tools
- fi
- insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510
- local libname=$(
- printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' |
- emake --no-print-directory -s -f - 2>/dev/null
- )
- newins Tools/gdb/libpython.py "${libname}"-gdb.py
-
- newconfd "${FILESDIR}/pydoc.conf" pydoc-${PYVER}
- newinitd "${FILESDIR}/pydoc.init" pydoc-${PYVER}
- sed \
- -e "s:@PYDOC_PORT_VARIABLE@:PYDOC${PYVER/./_}_PORT:" \
- -e "s:@PYDOC@:pydoc${PYVER}:" \
- -i "${ED}/etc/conf.d/pydoc-${PYVER}" \
- "${ED}/etc/init.d/pydoc-${PYVER}" || die "sed failed"
-
- # python-exec wrapping support
- local pymajor=${PYVER%.*}
- local EPYTHON=python${PYVER}
- local scriptdir=${D}$(python_get_scriptdir)
- mkdir -p "${scriptdir}" || die
- # python and pythonX
- ln -s "../../../bin/${abiver}" "${scriptdir}/python${pymajor}" || die
- ln -s "python${pymajor}" "${scriptdir}/python" || die
- # python-config and pythonX-config
- # note: we need to create a wrapper rather than symlinking it due
- # to some random dirname(argv[0]) magic performed by python-config
- cat > "${scriptdir}/python${pymajor}-config" <<-EOF || die
- #!/bin/sh
- exec "${abiver}-config" "\${@}"
- EOF
- chmod +x "${scriptdir}/python${pymajor}-config" || die
- ln -s "python${pymajor}-config" "${scriptdir}/python-config" || die
- # pydoc
- ln -s "../../../bin/pydoc${PYVER}" "${scriptdir}/pydoc" || die
- # idle
- if use tk; then
- ln -s "../../../bin/idle${PYVER}" "${scriptdir}/idle" || die
- fi
-}
-
-pkg_postinst() {
- local v
- for v in ${REPLACING_VERSIONS}; do
- if ver_test "${v}" -lt 3.13.0_beta2; then
- ewarn "Python 3.13.0b2 has changed its module ABI. The .pyc files"
- ewarn "installed previously are no longer valid and will be regenerated"
- ewarn "(or ignored) on the next import. This may cause sandbox failures"
- ewarn "when installing some packages and checksum mismatches when removing"
- ewarn "old versions. To actively prevent this, rebuild all packages"
- ewarn "installing Python 3.13 modules, e.g. using:"
- ewarn
- ewarn " emerge -1v /usr/lib/python3.13/site-packages"
- fi
- done
-}
--
2.47.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-dev] [PATCH 2/9] dev-lang/python: Remove freethreading support
2024-10-09 11:47 [gentoo-dev] [PATCH 0/9] Python 3.13 freethreading support Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 1/9] dev-lang/python: Remove old Michał Górny
@ 2024-10-09 11:47 ` Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 3/9] profiles: Copy dev-lang/python entries for python-freethreading Michał Górny
` (6 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Michał Górny @ 2024-10-09 11:47 UTC (permalink / raw
To: gentoo-dev; +Cc: Michał Górny
Remove freethreading support from dev-lang/python in favor of a separate
package. These two variations of Python are not ABI compatible and use
separate installation trees.
Signed-off-by: Michał Górny <mgorny@gentoo.org>
---
dev-lang/python/metadata.xml | 4 ----
dev-lang/python/python-3.13.0.ebuild | 15 ++++++++-------
profiles/base/make.defaults | 3 +--
profiles/base/package.use.force | 6 ------
4 files changed, 9 insertions(+), 19 deletions(-)
diff --git a/dev-lang/python/metadata.xml b/dev-lang/python/metadata.xml
index 97c6bd965b9f..22ce986e0676 100644
--- a/dev-lang/python/metadata.xml
+++ b/dev-lang/python/metadata.xml
@@ -14,10 +14,6 @@
to bootstrap pip and setuptools (if disabled, it will
be only possible to use venv `--without-pip`)
</flag>
- <flag name="gil">
- Build with Global Interpreter Lock. Disable to use
- the experimental freethreading mode.
- </flag>
<flag name="jit">
Enable experimental Just-In-Time compilation support.
</flag>
diff --git a/dev-lang/python/python-3.13.0.ebuild b/dev-lang/python/python-3.13.0.ebuild
index 1f61895afb04..46dc39bae618 100644
--- a/dev-lang/python/python-3.13.0.ebuild
+++ b/dev-lang/python/python-3.13.0.ebuild
@@ -34,7 +34,7 @@ LICENSE="PSF-2"
SLOT="${PYVER}"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="
- bluetooth build debug +ensurepip examples gdbm +gil jit
+ bluetooth build debug +ensurepip examples gdbm jit
libedit +ncurses pgo +readline +sqlite +ssl test tk valgrind
"
REQUIRED_USE="jit? ( ${LLVM_REQUIRED_USE} )"
@@ -124,12 +124,12 @@ pkg_pretend() {
check-reqs_pkg_pretend
fi
- if ! use gil || use jit; then
- ewarn "USE=-gil and USE=jit flags are considered experimental upstream. Using"
- ewarn "them could lead to unexpected breakage, including race conditions"
+ if use jit; then
+ ewarn "USE=jit is considered experimental upstream. Using it"
+ ewarn "could lead to unexpected breakage, including race conditions"
ewarn "and crashes, respectively. Please do not file Gentoo bugs, unless"
- ewarn "you can reproduce the problem with dev-lang/python[gil,-jit]. Instead,"
- ewarn "please consider reporting freethreading / JIT problems upstream."
+ ewarn "you can reproduce the problem with dev-lang/python[-jit]. Instead,"
+ ewarn "please consider reporting JIT problems upstream."
fi
}
@@ -431,9 +431,10 @@ src_configure() {
--with-platlibdir=lib
--with-pkg-config=yes
--with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip
+ # for freethreading version, see dev-lang/python-freethreading
+ --enable-gil
$(use_with debug assertions)
- $(use_enable gil)
$(use_enable jit experimental-jit)
$(use_enable pgo optimizations)
$(use_with readline readline "$(usex libedit editline readline)")
diff --git a/profiles/base/make.defaults b/profiles/base/make.defaults
index 181383d87993..ac0a704fc11d 100644
--- a/profiles/base/make.defaults
+++ b/profiles/base/make.defaults
@@ -123,8 +123,7 @@ PYTHONDONTWRITEBYTECODE="1"
# This MUST be kept in sync with the PYTHON_TARGETS below
# Mike Gilbert <floppym@gentoo.org> (2018-05-23)
# sys-apps/baselayout-2.5 needs split-usr enabled.
-# dev-lang/python:3.13 and later needs gil enabled
-BOOTSTRAP_USE="unicode pkg-config split-usr xml python_targets_python3_12 python_single_target_python3_12 gil"
+BOOTSTRAP_USE="unicode pkg-config split-usr xml python_targets_python3_12 python_single_target_python3_12"
# Mike Gilbert <floppym@gentoo.org> (2012-05-15)
# Default target(s) for python-r1.eclass
diff --git a/profiles/base/package.use.force b/profiles/base/package.use.force
index fe7d666017ea..9d51b4e49703 100644
--- a/profiles/base/package.use.force
+++ b/profiles/base/package.use.force
@@ -7,12 +7,6 @@
# as it'll always build Ada.
dev-lang/gnat-gpl ada
-# Michał Górny <mgorny@gentoo.org> (2024-06-29)
-# Disabling GIL (enabling freethreading) is experimental and prone
-# to break packages. Should you choose to test it, please do not file
-# Gentoo bugs and report any issues you hit upstream.
-dev-lang/python gil
-
# Sam James <sam@gentoo.org> (2024-06-03)
# Poor rendering performance otherwise (bug #931215).
kde-plasma/kwin caps
--
2.47.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-dev] [PATCH 3/9] profiles: Copy dev-lang/python entries for python-freethreading
2024-10-09 11:47 [gentoo-dev] [PATCH 0/9] Python 3.13 freethreading support Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 1/9] dev-lang/python: Remove old Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 2/9] dev-lang/python: Remove freethreading support Michał Górny
@ 2024-10-09 11:47 ` Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 4/9] dev-lang/python-freethreading: New package, 3.13.0 Michał Górny
` (5 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Michał Górny @ 2024-10-09 11:47 UTC (permalink / raw
To: gentoo-dev; +Cc: Michał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org>
---
profiles/arch/alpha/package.use.mask | 1 +
profiles/arch/hppa/package.use.mask | 1 +
profiles/arch/loong/package.use.mask | 1 +
profiles/arch/m68k/package.mask | 1 +
profiles/arch/m68k/package.use.mask | 1 +
profiles/arch/mips/package.use.mask | 1 +
profiles/arch/s390/package.use.mask | 1 +
profiles/base/package.use.mask | 2 ++
profiles/features/hardened/package.use | 1 +
profiles/features/musl/package.use.mask | 1 +
profiles/features/prefix/package.use.mask | 1 +
profiles/features/selinux/package.use.force | 1 +
profiles/targets/desktop/gnome/package.use | 1 +
profiles/targets/desktop/package.use | 2 ++
14 files changed, 16 insertions(+)
diff --git a/profiles/arch/alpha/package.use.mask b/profiles/arch/alpha/package.use.mask
index 43de7be3517f..9d1db4f4ed3a 100644
--- a/profiles/arch/alpha/package.use.mask
+++ b/profiles/arch/alpha/package.use.mask
@@ -44,6 +44,7 @@ media-video/ffmpeg libplacebo
# Michał Górny <mgorny@gentoo.org> (2024-05-08)
# Requires sys-devel/{clang,llvm}:16.
dev-lang/python jit
+dev-lang/python-freethreading jit
# matoro <matoro_gentoo@matoro.tk> (2024-02-29)
# sys-apps/xdg-desktop-portal is not keyworded here, #925731
diff --git a/profiles/arch/hppa/package.use.mask b/profiles/arch/hppa/package.use.mask
index f0a070bc7539..2c95d6d6e52a 100644
--- a/profiles/arch/hppa/package.use.mask
+++ b/profiles/arch/hppa/package.use.mask
@@ -35,6 +35,7 @@ app-arch/mt-st test
# Michał Górny <mgorny@gentoo.org> (2024-05-08)
# Requires sys-devel/{clang,llvm}:16.
dev-lang/python jit
+dev-lang/python-freethreading jit
# Ionen Wolkens <ionen@gentoo.org> (2024-01-23)
# Needs dev-qt/qtquick3d:6 which itself needs media-libs/assimp that
diff --git a/profiles/arch/loong/package.use.mask b/profiles/arch/loong/package.use.mask
index a10a477151eb..0b95971b2079 100644
--- a/profiles/arch/loong/package.use.mask
+++ b/profiles/arch/loong/package.use.mask
@@ -78,6 +78,7 @@ app-office/libreoffice qt6
# Requires arch-specific code in python (relocs handling), in addition to
# sys-devel/{clang,llvm}.
dev-lang/python jit
+dev-lang/python-freethreading jit
# WANG Xuerui <xen0n@gentoo.org> (2024-05-16)
# dev-ruby/asciidoctor has some really heavy deps, and is not keyworded on
diff --git a/profiles/arch/m68k/package.mask b/profiles/arch/m68k/package.mask
index c9a806f67556..d89f98a653aa 100644
--- a/profiles/arch/m68k/package.mask
+++ b/profiles/arch/m68k/package.mask
@@ -4,3 +4,4 @@
# Andreas K. Hüttel <dilfridge@gentoo.org>
# Requires 32bit alignment, so we mask it for the moment
dev-lang/python:3.13
+dev-lang/python-freethreading:3.13
diff --git a/profiles/arch/m68k/package.use.mask b/profiles/arch/m68k/package.use.mask
index 5351d18a96b0..71f581c559c5 100644
--- a/profiles/arch/m68k/package.use.mask
+++ b/profiles/arch/m68k/package.use.mask
@@ -9,6 +9,7 @@ dev-python/pytest-services test
# Michał Górny <mgorny@gentoo.org> (2024-05-08)
# Requires sys-devel/{clang,llvm}:16.
dev-lang/python jit
+dev-lang/python-freethreading jit
# James Le Cuirot (2023-12-12)
# USE=bpf depends on sys-devel/clang which is not keyworded on m68k
diff --git a/profiles/arch/mips/package.use.mask b/profiles/arch/mips/package.use.mask
index 113fd19129af..cebe39b29a9e 100644
--- a/profiles/arch/mips/package.use.mask
+++ b/profiles/arch/mips/package.use.mask
@@ -114,6 +114,7 @@ media-video/ffmpeg libplacebo
# Michał Górny <mgorny@gentoo.org> (2024-05-08)
# Requires sys-devel/{clang,llvm}:16.
dev-lang/python jit
+dev-lang/python-freethreading jit
# matoro <matoro_gentoo@matoro.tk> (2024-05-01)
# Sanitizers supported on both 32-bit and 64-bit mips, #779742
diff --git a/profiles/arch/s390/package.use.mask b/profiles/arch/s390/package.use.mask
index ae7ab5ecfa16..7affc9018254 100644
--- a/profiles/arch/s390/package.use.mask
+++ b/profiles/arch/s390/package.use.mask
@@ -24,6 +24,7 @@ x11-misc/xdg-utils plasma
# Michał Górny <mgorny@gentoo.org> (2024-05-08)
# Requires sys-devel/{clang,llvm}:16.
dev-lang/python jit
+dev-lang/python-freethreading jit
# NRK <nrk@disroot.org> (2024-04-08)
# media-libs/libraw is not keyworded
diff --git a/profiles/base/package.use.mask b/profiles/base/package.use.mask
index 72294300a0cb..62cdcb4af48b 100644
--- a/profiles/base/package.use.mask
+++ b/profiles/base/package.use.mask
@@ -64,6 +64,7 @@ dev-games/openscenegraph ffmpeg
# to use it, please do not file Gentoo bugs and report any issues you
# hit upstream.
dev-lang/python jit
+dev-lang/python-freethreading jit
# Sam James <sam@gentoo.org> (2024-06-24)
# Breaks installed gems in hard-to-debug ways.
@@ -877,6 +878,7 @@ dev-lang/moarvm asan
# Mike Gilbert <floppym@gentoo.org> (2015-05-16)
# dev-lang/python[berkdb] fails with recent multilib sys-libs/db (bug 519584).
dev-lang/python berkdb
+dev-lang/python-freethreading berkdb
# Andrew Savchenko <bircoph@gentoo.org> (2015-02-11)
# Cluster code is still under development, only base functionality
diff --git a/profiles/features/hardened/package.use b/profiles/features/hardened/package.use
index 133173669515..6af7a25324f5 100644
--- a/profiles/features/hardened/package.use
+++ b/profiles/features/hardened/package.use
@@ -2,4 +2,5 @@
# Distributed under the terms of the GNU General Public License v2
dev-lang/python gdbm
+dev-lang/python-freethreading gdbm
sys-libs/gdbm berkdb
diff --git a/profiles/features/musl/package.use.mask b/profiles/features/musl/package.use.mask
index 1bae192c2abe..ded3fe7aa315 100644
--- a/profiles/features/musl/package.use.mask
+++ b/profiles/features/musl/package.use.mask
@@ -28,6 +28,7 @@ kde-plasma/kwin caps
# Python does not support JIT on musl, see
# https://peps.python.org/pep-0744/#support.
dev-lang/python jit
+dev-lang/python-freethreading jit
# Robert Förster <Dessa@gmake.de> (2024-05-06)
# dev-db/mongodb is masked on musl
diff --git a/profiles/features/prefix/package.use.mask b/profiles/features/prefix/package.use.mask
index 12bba1c5f9e8..87932e3be420 100644
--- a/profiles/features/prefix/package.use.mask
+++ b/profiles/features/prefix/package.use.mask
@@ -46,6 +46,7 @@ app-editors/emacs m17n-lib
# NOTE to prefix devs: if it needs to not be a global mask, talk to me because
# it currently causes failures on linux. It can be made a "less global" mask.
dev-lang/python berkdb
+dev-lang/python-freethreading berkdb
# Elias Pipping <pipping@gentoo.org> (2007-11-15)
# pkg_postinst tries to create/delete a user, fails
diff --git a/profiles/features/selinux/package.use.force b/profiles/features/selinux/package.use.force
index 39b396c108df..4d300c1000e7 100644
--- a/profiles/features/selinux/package.use.force
+++ b/profiles/features/selinux/package.use.force
@@ -5,6 +5,7 @@
# sys-apps/policycoreutils has PYTHON_USE_WITH="xml" set, so we force it
# here to allow stages to build with USE=xml on python
dev-lang/python xml
+dev-lang/python-freethreading xml
# Sven Vermeulen <swift@gentoo.org> (2013-04-19)
# sys-apps/policycoreutils (semanage command) uses sepolgen, which requires libselinux with USE="python".
diff --git a/profiles/targets/desktop/gnome/package.use b/profiles/targets/desktop/gnome/package.use
index a60190ee8b3e..7c88271b65d3 100644
--- a/profiles/targets/desktop/gnome/package.use
+++ b/profiles/targets/desktop/gnome/package.use
@@ -35,6 +35,7 @@ app-crypt/gcr vala
# Required for gnome-base/gnome-2.32 to be merged directly, for
# gnome-extra/hamster-applet-2.32 and x11-misc/alacarte-0.13
dev-lang/python sqlite
+dev-lang/python-freethreading sqlite
# Required by app-accessibility/orca-3
app-accessibility/speech-dispatcher python
diff --git a/profiles/targets/desktop/package.use b/profiles/targets/desktop/package.use
index fda02fd6d089..bc24b59438a6 100644
--- a/profiles/targets/desktop/package.use
+++ b/profiles/targets/desktop/package.use
@@ -51,6 +51,7 @@ media-fonts/fonts-meta emoji
# Andreas K. Hüttel <dilfridge@gentoo.org> (2022-04-18)
# Avoid a circular dependency, bug 764623
dev-lang/python -bluetooth
+dev-lang/python-freethreading -bluetooth
# Andreas Sturmlechner <asturm@gentoo.org> (2021-12-18)
# Required by media-gfx/digikam, kde-apps/libkexiv2
@@ -59,6 +60,7 @@ media-gfx/exiv2 xmp
# Andreas Sturmlechner <asturm@gentoo.org> (2020-02-05)
# Required by many packages, most notably Mozilla products
dev-lang/python sqlite
+dev-lang/python-freethreading sqlite
# Lars Wendler <polynomial-c@gentoo.org> (2019-03-20)
# Enable client by default. Usually desktop users need the client.
--
2.47.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-dev] [PATCH 4/9] dev-lang/python-freethreading: New package, 3.13.0
2024-10-09 11:47 [gentoo-dev] [PATCH 0/9] Python 3.13 freethreading support Michał Górny
` (2 preceding siblings ...)
2024-10-09 11:47 ` [gentoo-dev] [PATCH 3/9] profiles: Copy dev-lang/python entries for python-freethreading Michał Górny
@ 2024-10-09 11:47 ` Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 5/9] profiles: Add python3_13t (freethreading) target Michał Górny
` (4 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Michał Górny @ 2024-10-09 11:47 UTC (permalink / raw
To: gentoo-dev; +Cc: Michał Górny
A separate package installing the freethreading version
of dev-lang/python.
Closes: https://bugs.gentoo.org/940507
Signed-off-by: Michał Górny <mgorny@gentoo.org>
---
dev-lang/python-freethreading/Manifest | 3 +
.../python-freethreading/files/pydoc.conf | 6 +
.../python-freethreading/files/pydoc.init | 24 +
dev-lang/python-freethreading/metadata.xml | 39 ++
.../python-freethreading-3.13.0.ebuild | 654 ++++++++++++++++++
5 files changed, 726 insertions(+)
create mode 100644 dev-lang/python-freethreading/Manifest
create mode 100644 dev-lang/python-freethreading/files/pydoc.conf
create mode 100644 dev-lang/python-freethreading/files/pydoc.init
create mode 100644 dev-lang/python-freethreading/metadata.xml
create mode 100644 dev-lang/python-freethreading/python-freethreading-3.13.0.ebuild
diff --git a/dev-lang/python-freethreading/Manifest b/dev-lang/python-freethreading/Manifest
new file mode 100644
index 000000000000..733309cd531a
--- /dev/null
+++ b/dev-lang/python-freethreading/Manifest
@@ -0,0 +1,3 @@
+DIST Python-3.13.0.tar.xz 22532980 BLAKE2B 4a4e397199402de8c9fe8e4d63443ed972cbe8a4f541743908d699c7987127d159d600fd14145b6a946e8671426279d230c9155fdc5863c1e49a945eedcbf21b SHA512 44a143c9b96b55b01885ec020c3364265bda55289615cd7d5071915b0d0178a6f35e7551a89090001fcb7f3172d38177a56bf8b8532b15c9dbc50295c9210152
+DIST Python-3.13.0.tar.xz.asc 963 BLAKE2B d05f02692a9fea42b73dbfe5dc42bd6533555e5ecb848510d2b94bb7f0e55d4a0f89bcd20b073ed2c7f7a68be35b12cb6dbff6bc16fc9a4592ded2c339ada7fd SHA512 1b8bb0fe4eb93e31ec1770e90b94d44b5864c0391aad5dcba3a30d8e505d9b17107385414353c0060007f8a536254f49b8e919f36ddf6421a6e4330f817f1a3e
+DIST python-gentoo-patches-3.13.0.tar.xz 8316 BLAKE2B 8fb8ba8f41f310140ad7066b614952023112d5043e5d82058364125611785144c1843e87eecb7669bcbab51c40d0694069526219f7419a7009517ce0821b74ba SHA512 0eb31ebfa3411020aa70b3b66fd7eec98b4b7a686b0e8f1f7ed76a8186a7c1ee85ccd9565a86a1d7ec13b975855eeb7303036af05e2dfdce3d64e4ad99299df4
diff --git a/dev-lang/python-freethreading/files/pydoc.conf b/dev-lang/python-freethreading/files/pydoc.conf
new file mode 100644
index 000000000000..3c6920cc96c4
--- /dev/null
+++ b/dev-lang/python-freethreading/files/pydoc.conf
@@ -0,0 +1,6 @@
+# /etc/init.d/pydoc.conf
+
+# This file contains the configuration for pydoc's internal webserver.
+
+# Default port for Python's pydoc server.
+@PYDOC_PORT_VARIABLE@="7464"
diff --git a/dev-lang/python-freethreading/files/pydoc.init b/dev-lang/python-freethreading/files/pydoc.init
new file mode 100644
index 000000000000..f8e05636da4e
--- /dev/null
+++ b/dev-lang/python-freethreading/files/pydoc.init
@@ -0,0 +1,24 @@
+#!/sbin/openrc-run
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public Licence v2
+
+start() {
+ local pydoc_port="${@PYDOC_PORT_VARIABLE@-${PYDOC_PORT}}"
+
+ if [ -z "${pydoc_port}" ]; then
+ eerror "Port not set"
+ return 1
+ fi
+
+ ebegin "Starting pydoc server on port ${pydoc_port}"
+ start-stop-daemon --start --background --make-pidfile \
+ --pidfile /var/run/@PYDOC@.pid \
+ --exec /usr/bin/@PYDOC@ -- -p "${pydoc_port}"
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping pydoc server"
+ start-stop-daemon --stop --quiet --pidfile /var/run/@PYDOC@.pid
+ eend $?
+}
diff --git a/dev-lang/python-freethreading/metadata.xml b/dev-lang/python-freethreading/metadata.xml
new file mode 100644
index 000000000000..6ac236700532
--- /dev/null
+++ b/dev-lang/python-freethreading/metadata.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ <name>Python</name>
+ </maintainer>
+ <use>
+ <flag name="bluetooth">
+ Build Bluetooth protocol support in socket module
+ </flag>
+ <flag name="ensurepip">
+ Install the ensurepip module that uses bundled wheels
+ to bootstrap pip and setuptools (if disabled, it will
+ be only possible to use venv `--without-pip`)
+ </flag>
+ <flag name="jit">
+ Enable experimental Just-In-Time compilation support.
+ </flag>
+ <flag name="libedit">
+ Link readline extension against <pkg>dev-libs/libedit</pkg>
+ instead of <pkg>sys-libs/readline</pkg>
+ </flag>
+ <flag name="pgo">
+ Optimize the build using Profile Guided Optimization (PGO)
+ by running Python's test suite and collecting statistics
+ based on its performance. This will take longer to build.
+ </flag>
+ <flag name="valgrind">
+ Disable pymalloc when running under
+ <pkg>dev-debug/valgrind</pkg> is detected (may incur minor
+ performance penalty even when valgrind is not used)
+ </flag>
+ </use>
+ <upstream>
+ <remote-id type="cpe">cpe:/a:python:python</remote-id>
+ <remote-id type="github">python/cpython</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-lang/python-freethreading/python-freethreading-3.13.0.ebuild b/dev-lang/python-freethreading/python-freethreading-3.13.0.ebuild
new file mode 100644
index 000000000000..65b4a1c51ac2
--- /dev/null
+++ b/dev-lang/python-freethreading/python-freethreading-3.13.0.ebuild
@@ -0,0 +1,654 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="8"
+
+LLVM_COMPAT=( 18 )
+LLVM_OPTIONAL=1
+WANT_LIBTOOL="none"
+
+inherit autotools check-reqs flag-o-matic linux-info llvm-r1
+inherit multiprocessing pax-utils python-utils-r1 toolchain-funcs
+inherit verify-sig
+
+MY_PV=${PV/_}
+MY_P="Python-${MY_PV%_p*}"
+PYVER="$(ver_cut 1-2)t"
+PATCHSET="python-gentoo-patches-${MY_PV}"
+
+DESCRIPTION="An interpreted, interactive, object-oriented programming language"
+HOMEPAGE="
+ https://www.python.org/
+ https://github.com/python/cpython/
+"
+SRC_URI="
+ https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz
+ https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz
+ verify-sig? (
+ https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc
+ )
+"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="PSF-2"
+SLOT="${PYVER}"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="
+ bluetooth build debug +ensurepip examples gdbm jit
+ libedit +ncurses pgo +readline +sqlite +ssl test tk valgrind
+"
+REQUIRED_USE="jit? ( ${LLVM_REQUIRED_USE} )"
+RESTRICT="!test? ( test )"
+
+# Do not add a dependency on dev-lang/python to this ebuild.
+# If you need to apply a patch which requires python for bootstrapping, please
+# run the bootstrap code on your dev box and include the results in the
+# patchset. See bug 447752.
+
+RDEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-crypt/libb2
+ >=dev-libs/expat-2.1:=
+ dev-libs/libffi:=
+ dev-libs/mpdecimal:=
+ dev-python/gentoo-common
+ >=sys-libs/zlib-1.1.3:=
+ virtual/libintl
+ ensurepip? ( dev-python/ensurepip-pip )
+ gdbm? ( sys-libs/gdbm:=[berkdb] )
+ kernel_linux? ( sys-apps/util-linux:= )
+ ncurses? ( >=sys-libs/ncurses-5.2:= )
+ readline? (
+ !libedit? ( >=sys-libs/readline-4.1:= )
+ libedit? ( dev-libs/libedit:= )
+ )
+ sqlite? ( >=dev-db/sqlite-3.3.8:3= )
+ ssl? ( >=dev-libs/openssl-1.1.1:= )
+ tk? (
+ >=dev-lang/tcl-8.0:=
+ >=dev-lang/tk-8.0:=
+ dev-tcltk/blt:=
+ dev-tcltk/tix
+ )
+"
+# bluetooth requires headers from bluez
+DEPEND="
+ ${RDEPEND}
+ bluetooth? ( net-wireless/bluez )
+ test? (
+ dev-python/ensurepip-pip
+ dev-python/ensurepip-setuptools
+ dev-python/ensurepip-wheel
+ )
+ valgrind? ( dev-debug/valgrind )
+"
+# autoconf-archive needed to eautoreconf
+BDEPEND="
+ dev-build/autoconf-archive
+ app-alternatives/awk
+ virtual/pkgconfig
+ jit? (
+ $(llvm_gen_dep '
+ sys-devel/clang:${LLVM_SLOT}
+ sys-devel/llvm:${LLVM_SLOT}
+ ')
+ )
+ verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 )
+"
+RDEPEND+="
+ !build? ( app-misc/mime-types )
+"
+if [[ ${PV} != *_alpha* ]]; then
+ RDEPEND+="
+ dev-lang/python-exec[python_targets_python${PYVER/./_}(-)]
+ "
+fi
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc
+
+# large file tests involve a 2.5G file being copied (duplicated)
+CHECKREQS_DISK_BUILD=5500M
+
+QA_PKGCONFIG_VERSION=${PYVER}
+# false positives -- functions specific to *BSD
+QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags )
+
+declare -rA PYTHON_KERNEL_CHECKS=(
+ ["CROSS_MEMORY_ATTACH"]="test_external_inspection" #bug 938589
+ ["DNOTIFY"]="test_fcntl" # bug 938662
+)
+
+pkg_pretend() {
+ if use pgo || use test; then
+ check-reqs_pkg_pretend
+ fi
+
+ ewarn "Freethreading build is considered experimental upstream. Using it"
+ ewarn "could lead to unexpected breakage, including race conditions"
+ ewarn "and crashes, respectively. Please do not file Gentoo bugs, unless"
+ ewarn "you can reproduce the problem with dev-lang/python. Instead,"
+ ewarn "please consider reporting freethreading problems upstream."
+}
+
+pkg_setup() {
+ if [[ ${MERGE_TYPE} != binary ]]; then
+ use jit && llvm-r1_pkg_setup
+ if use test || use pgo; then
+ check-reqs_pkg_setup
+
+ local CONFIG_CHECK
+ for f in "${!PYTHON_KERNEL_CHECKS[@]}"; do
+ CONFIG_CHECK+="~${f} "
+ done
+ linux-info_pkg_setup
+ fi
+ fi
+}
+
+src_unpack() {
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc}
+ fi
+ default
+}
+
+src_prepare() {
+ # Ensure that internal copies of expat and libffi are not used.
+ # TODO: Makefile has annoying deps on expat headers
+ #rm -r Modules/expat || die
+
+ local PATCHES=(
+ "${WORKDIR}/${PATCHSET}"
+ )
+
+ default
+
+ # force the correct number of jobs
+ # https://bugs.gentoo.org/737660
+ sed -i -e "s:-j0:-j$(makeopts_jobs):" Makefile.pre.in || die
+
+ # breaks tests when using --with-wheel-pkg-dir
+ rm -r Lib/test/wheeldata || die
+
+ eautoreconf
+}
+
+build_cbuild_python() {
+ # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181
+ local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi)
+
+ # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get
+ # propagated to sysconfig for built extensions
+ #
+ # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway)
+ local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto"
+ local -x LDFLAGS_NODIST=${BUILD_LDFLAGS}
+ local -x CFLAGS= LDFLAGS=
+ local -x BUILD_CFLAGS="${CFLAGS_NODIST}"
+ local -x BUILD_LDFLAGS=${LDFLAGS_NODIST}
+
+ # We need to build our own Python on CBUILD first, and feed it in.
+ # bug #847910
+ local myeconfargs_cbuild=(
+ "${myeconfargs[@]}"
+
+ --prefix="${BROOT}"/usr
+ --libdir="${cbuild_libdir:2}"
+
+ # Avoid needing to load the right libpython.so.
+ --disable-shared
+
+ # As minimal as possible for the mini CBUILD Python
+ # we build just for cross to satisfy --with-build-python.
+ --without-lto
+ --without-readline
+ --disable-optimizations
+ )
+
+ mkdir "${WORKDIR}"/${P}-${CBUILD} || die
+ pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die
+
+ # Avoid as many dependencies as possible for the cross build.
+ mkdir Modules || die
+ cat > Modules/Setup.local <<-EOF || die
+ *disabled*
+ nis
+ _dbm _gdbm
+ _sqlite3
+ _hashlib _ssl
+ _curses _curses_panel
+ readline
+ _tkinter
+ pyexpat
+ zlib
+ # We disabled these for CBUILD because Python's setup.py can't handle locating
+ # libdir correctly for cross. This should be rechecked for the pure Makefile approach,
+ # and uncommented if needed.
+ #_ctypes
+ EOF
+
+ ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}"
+
+ # Unfortunately, we do have to build this immediately, and
+ # not in src_compile, because CHOST configure for Python
+ # will check the existence of the --with-build-python value
+ # immediately.
+ emake
+ popd &> /dev/null || die
+}
+
+src_configure() {
+ # disable automagic bluetooth headers detection
+ if ! use bluetooth; then
+ local -x ac_cv_header_bluetooth_bluetooth_h=no
+ fi
+
+ append-flags -fwrapv
+ filter-flags -malign-double
+
+ # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile.
+ # PKG_CONFIG needed for cross.
+ tc-export CXX PKG_CONFIG
+
+ local dbmliborder=
+ if use gdbm; then
+ dbmliborder+="${dbmliborder:+:}gdbm"
+ fi
+
+ # Set baseline test skip flags.
+ COMMON_TEST_SKIPS=(
+ # this is actually test_gdb.test_pretty_print
+ -x test_pretty_print
+ )
+
+ # Arch-specific skips. See #931888 for a collection of these.
+ case ${CHOST} in
+ alpha*)
+ COMMON_TEST_SKIPS+=(
+ -x test_builtin
+ -x test_capi
+ -x test_cmath
+ -x test_float
+ # timeout
+ -x test_free_threading
+ -x test_math
+ -x test_numeric_tower
+ -x test_random
+ -x test_statistics
+ # bug 653850
+ -x test_resource
+ -x test_strtod
+ )
+ ;;
+ mips*)
+ COMMON_TEST_SKIPS+=(
+ -x test_ctypes
+ -x test_external_inspection
+ -x test_statistics
+ )
+ ;;
+ powerpc64-*) # big endian
+ COMMON_TEST_SKIPS+=(
+ -x test_descr
+ )
+ ;;
+ riscv*)
+ COMMON_TEST_SKIPS+=(
+ -x test_urllib2
+ )
+ ;;
+ sparc*)
+ COMMON_TEST_SKIPS+=(
+ # bug 788022
+ -x test_multiprocessing_fork
+ -x test_multiprocessing_forkserver
+
+ -x test_ctypes
+ -x test_descr
+ # bug 931908
+ -x test_exceptions
+ )
+ ;;
+ esac
+
+ # Kernel-config specific skips
+ for option in "${!PYTHON_KERNEL_CHECKS[@]}"; do
+ if ! linux_config_exists || ! linux_chkconfig_present "${option}"
+ then
+ COMMON_TEST_SKIPS+=( -x "${PYTHON_KERNEL_CHECKS[${option}]}" )
+ fi
+ done
+
+ # musl-specific skips
+ use elibc_musl && COMMON_TEST_SKIPS+=(
+ # various musl locale deficiencies
+ -x test__locale
+ -x test_c_locale_coercion
+ -x test_locale
+ -x test_re
+
+ # known issues with find_library on musl
+ # https://bugs.python.org/issue21622
+ -x test_ctypes
+
+ # fpathconf, ttyname errno values
+ -x test_os
+ )
+
+ if use pgo; then
+ local profile_task_flags=(
+ -m test
+ "-j$(makeopts_jobs)"
+ --pgo-extended
+ --verbose3
+ -u-network
+
+ # We use a timeout because of how often we've had hang issues
+ # here. It also matches the default upstream PROFILE_TASK.
+ --timeout 1200
+
+ "${COMMON_TEST_SKIPS[@]}"
+
+ -x test_dtrace
+
+ # All of these seem to occasionally hang for PGO inconsistently
+ # They'll even hang here but be fine in src_test sometimes.
+ # bug #828535 (and related: bug #788022)
+ -x test_asyncio
+ -x test_httpservers
+ -x test_logging
+ -x test_multiprocessing_fork
+ -x test_socket
+ -x test_xmlrpc
+
+ # Hangs (actually runs indefinitely executing itself w/ many cpython builds)
+ # bug #900429
+ -x test_tools
+
+ # Fails in profiling run, passes in src_test().
+ -x test_capi
+ )
+
+ # Arch-specific skips. See #931888 for a collection of these.
+ case ${CHOST} in
+ alpha*)
+ profile_task_flags+=(
+ -x test_os
+ )
+ ;;
+ hppa*)
+ profile_task_flags+=(
+ -x test_descr
+ # bug 931908
+ -x test_exceptions
+ -x test_os
+ )
+ ;;
+ powerpc64-*) # big endian
+ profile_task_flags+=(
+ # bug 931908
+ -x test_exceptions
+ )
+ ;;
+ riscv*)
+ profile_task_flags+=(
+ -x test_statistics
+ )
+ ;;
+ esac
+
+ if has_version "app-arch/rpm" ; then
+ # Avoid sandbox failure (attempts to write to /var/lib/rpm)
+ profile_task_flags+=(
+ -x test_distutils
+ )
+ fi
+ local -x PROFILE_TASK="${profile_task_flags[*]}"
+ fi
+
+ local myeconfargs=(
+ # glibc-2.30 removes it; since we can't cleanly force-rebuild
+ # Python on glibc upgrade, remove it proactively to give
+ # a chance for users rebuilding python before glibc
+ ac_cv_header_stropts_h=no
+
+ --enable-shared
+ --without-static-libpython
+ --enable-ipv6
+ --infodir='${prefix}/share/info'
+ --mandir='${prefix}/share/man'
+ --with-computed-gotos
+ --with-dbmliborder="${dbmliborder}"
+ --with-libc=
+ --enable-loadable-sqlite-extensions
+ --without-ensurepip
+ --without-lto
+ --with-system-expat
+ --with-system-libmpdec
+ --with-platlibdir=lib
+ --with-pkg-config=yes
+ --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip
+ --disable-gil
+
+ $(use_with debug assertions)
+ $(use_enable jit experimental-jit)
+ $(use_enable pgo optimizations)
+ $(use_with readline readline "$(usex libedit editline readline)")
+ $(use_with valgrind)
+ )
+
+ # https://bugs.gentoo.org/700012
+ if tc-is-lto; then
+ append-cflags $(test-flags-CC -ffat-lto-objects)
+ myeconfargs+=(
+ --with-lto
+ )
+ fi
+
+ # Force-disable modules we don't want built.
+ # See Modules/Setup for docs on how this works. Setup.local contains our local deviations.
+ cat > Modules/Setup.local <<-EOF || die
+ *disabled*
+ nis
+ $(usev !gdbm '_gdbm _dbm')
+ $(usev !sqlite '_sqlite3')
+ $(usev !ssl '_hashlib _ssl')
+ $(usev !ncurses '_curses _curses_panel')
+ $(usev !readline 'readline')
+ $(usev !tk '_tkinter')
+ EOF
+
+ # disable implicit optimization/debugging flags
+ local -x OPT=
+
+ if tc-is-cross-compiler ; then
+ build_cbuild_python
+ myeconfargs+=(
+ # Point the imminent CHOST build to the Python we just
+ # built for CBUILD.
+ --with-build-python="${WORKDIR}"/${P}-${CBUILD}/python
+ )
+ fi
+
+ # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get
+ # propagated to sysconfig for built extensions
+ local -x CFLAGS_NODIST=${CFLAGS}
+ local -x LDFLAGS_NODIST=${LDFLAGS}
+ local -x CFLAGS= LDFLAGS=
+
+ # Fix implicit declarations on cross and prefix builds. Bug #674070.
+ if use ncurses; then
+ append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw
+ fi
+
+ econf "${myeconfargs[@]}"
+
+ if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then
+ eerror "configure has detected that the sem_open function is broken."
+ eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777."
+ die "Broken sem_open function (bug 496328)"
+ fi
+
+ # install epython.py as part of stdlib
+ echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die
+}
+
+src_compile() {
+ # Ensure sed works as expected
+ # https://bugs.gentoo.org/594768
+ local -x LC_ALL=C
+ export PYTHONSTRICTEXTENSIONBUILD=1
+
+ # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't
+ # end up writing bytecode & violating sandbox.
+ # bug #831897
+ local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE}
+
+ # Gentoo hack to disable accessing system site-packages
+ export GENTOO_CPYTHON_BUILD=1
+
+ if use pgo ; then
+ # bug 660358
+ local -x COLUMNS=80
+ local -x PYTHONDONTWRITEBYTECODE=
+ fi
+
+ # also need to clear the flags explicitly here or they end up
+ # in _sysconfigdata*
+ emake CPPFLAGS= CFLAGS= LDFLAGS=
+
+ # Restore saved value from above.
+ local -x PYTHONDONTWRITEBYTECODE=${_PYTHONDONTWRITEBYTECODE}
+
+ # Work around bug 329499. See also bug 413751 and 457194.
+ if has_version dev-libs/libffi[pax-kernel]; then
+ pax-mark E python
+ else
+ pax-mark m python
+ fi
+}
+
+src_test() {
+ # Tests will not work when cross compiling.
+ if tc-is-cross-compiler; then
+ elog "Disabling tests due to crosscompiling."
+ return
+ fi
+
+ # this just happens to skip test_support.test_freeze that is broken
+ # without bundled expat
+ # TODO: get a proper skip for it upstream
+ local -x LOGNAME=buildbot
+
+ local test_opts=(
+ --verbose3
+ -u-network
+ -j "$(makeopts_jobs)"
+ "${COMMON_TEST_SKIPS[@]}"
+ )
+
+ # bug 660358
+ local -x COLUMNS=80
+ local -x PYTHONDONTWRITEBYTECODE=
+
+ nonfatal emake -Onone test EXTRATESTOPTS="${test_opts[*]}" \
+ CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty
+ local ret=${?}
+
+ [[ ${ret} -eq 0 ]] || die "emake test failed"
+}
+
+src_install() {
+ local libdir=${ED}/usr/lib/python${PYVER}
+
+ # -j1 hack for now for bug #843458
+ emake -j1 DESTDIR="${D}" TEST_MODULES=no altinstall
+
+ # Fix collisions between different slots of Python.
+ rm "${ED}/usr/$(get_libdir)/libpython3.so" || die
+ # Fix collision with GIL-enabled build.
+ rm "${ED}/usr/bin/python3.13" || die
+ mv "${ED}"/usr/bin/pydoc{${PYVER%t},${PYVER}} || die
+ mv "${ED}"/usr/share/man/man1/python{${PYVER%t},${PYVER}}.1 || die
+
+ # Cheap hack to get version with ABIFLAGS
+ local abiver=$(cd "${ED}/usr/include"; echo python*)
+ if [[ ${abiver} != python${PYVER} ]]; then
+ # Replace python3.X with a symlink to python3.Xm
+ rm "${ED}/usr/bin/python${PYVER}" || die
+ dosym "${abiver}" "/usr/bin/python${PYVER}"
+ # Create python3.X-config symlink
+ dosym "${abiver}-config" "/usr/bin/python${PYVER}-config"
+ # Create python-3.5m.pc symlink
+ dosym "python-${PYVER}.pc" "/usr/$(get_libdir)/pkgconfig/${abiver/${PYVER}/-${PYVER}}.pc"
+ fi
+
+ # python seems to get rebuilt in src_install (bug 569908)
+ # Work around it for now.
+ if has_version dev-libs/libffi[pax-kernel]; then
+ pax-mark E "${ED}/usr/bin/${abiver}"
+ else
+ pax-mark m "${ED}/usr/bin/${abiver}"
+ fi
+
+ rm -r "${libdir}"/ensurepip/_bundled || die
+ if ! use sqlite; then
+ rm -r "${libdir}/"sqlite3 || die
+ fi
+ if use tk; then
+ # rename to avoid collision with dev-lang/python
+ mv "${ED}"/usr/bin/idle{${PYVER%t},${PYVER}} || die
+ else
+ rm -r "${ED}/usr/bin/idle${PYVER%t}" || die
+ rm -r "${libdir}/"{idlelib,tkinter} || die
+ fi
+
+ ln -s ../python/EXTERNALLY-MANAGED "${libdir}/EXTERNALLY-MANAGED" || die
+
+ dodoc Misc/{ACKS,HISTORY,NEWS}
+
+ if use examples; then
+ docinto examples
+ find Tools -name __pycache__ -exec rm -fr {} + || die
+ dodoc -r Tools
+ fi
+ insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510
+ local libname=$(
+ printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' |
+ emake --no-print-directory -s -f - 2>/dev/null
+ )
+ newins Tools/gdb/libpython.py "${libname}"-gdb.py
+
+ newconfd "${FILESDIR}/pydoc.conf" pydoc-${PYVER}
+ newinitd "${FILESDIR}/pydoc.init" pydoc-${PYVER}
+ sed \
+ -e "s:@PYDOC_PORT_VARIABLE@:PYDOC${PYVER/./_}_PORT:" \
+ -e "s:@PYDOC@:pydoc${PYVER}:" \
+ -i "${ED}/etc/conf.d/pydoc-${PYVER}" \
+ "${ED}/etc/init.d/pydoc-${PYVER}" || die "sed failed"
+
+ # python-exec wrapping support
+ local pymajor=${PYVER%.*}
+ local EPYTHON=python${PYVER}
+ local scriptdir=${D}$(python_get_scriptdir)
+ mkdir -p "${scriptdir}" || die
+ # python and pythonX
+ ln -s "../../../bin/${abiver}" "${scriptdir}/python${pymajor}" || die
+ ln -s "python${pymajor}" "${scriptdir}/python" || die
+ # python-config and pythonX-config
+ # note: we need to create a wrapper rather than symlinking it due
+ # to some random dirname(argv[0]) magic performed by python-config
+ cat > "${scriptdir}/python${pymajor}-config" <<-EOF || die
+ #!/bin/sh
+ exec "${abiver}-config" "\${@}"
+ EOF
+ chmod +x "${scriptdir}/python${pymajor}-config" || die
+ ln -s "python${pymajor}-config" "${scriptdir}/python-config" || die
+ # pydoc
+ ln -s "../../../bin/pydoc${PYVER}" "${scriptdir}/pydoc" || die
+ # idle
+ if use tk; then
+ ln -s "../../../bin/idle${PYVER}" "${scriptdir}/idle" || die
+ fi
+}
--
2.47.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-dev] [PATCH 5/9] profiles: Add python3_13t (freethreading) target
2024-10-09 11:47 [gentoo-dev] [PATCH 0/9] Python 3.13 freethreading support Michał Górny
` (3 preceding siblings ...)
2024-10-09 11:47 ` [gentoo-dev] [PATCH 4/9] dev-lang/python-freethreading: New package, 3.13.0 Michał Górny
@ 2024-10-09 11:47 ` Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 6/9] install-qa-check.d: Support dev-lang/python-freethreading Michał Górny
` (3 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Michał Górny @ 2024-10-09 11:47 UTC (permalink / raw
To: gentoo-dev; +Cc: Michał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org>
---
profiles/base/package.use.force | 1 +
profiles/base/use.stable.mask | 2 ++
profiles/desc/python_single_target.desc | 1 +
profiles/desc/python_targets.desc | 1 +
4 files changed, 5 insertions(+)
diff --git a/profiles/base/package.use.force b/profiles/base/package.use.force
index 9d51b4e49703..800efe47743b 100644
--- a/profiles/base/package.use.force
+++ b/profiles/base/package.use.force
@@ -253,6 +253,7 @@ dev-lang/python-exec python_targets_python3_10
dev-lang/python-exec python_targets_python3_11
dev-lang/python-exec python_targets_python3_12
dev-lang/python-exec python_targets_python3_13
+dev-lang/python-exec python_targets_python3_13t
dev-lang/python-exec python_targets_pypy3
# Zac Medico <zmedico@gentoo.org> (2010-10-20)
diff --git a/profiles/base/use.stable.mask b/profiles/base/use.stable.mask
index 9167592b9e10..d1197864f26b 100644
--- a/profiles/base/use.stable.mask
+++ b/profiles/base/use.stable.mask
@@ -16,6 +16,8 @@ llvm_slot_19
# Python implementations without stable keywords.
python_targets_python3_13
python_single_target_python3_13
+python_targets_python3_13t
+python_single_target_python3_13t
python_targets_pypy3
python_single_target_pypy3
diff --git a/profiles/desc/python_single_target.desc b/profiles/desc/python_single_target.desc
index 427e206dd196..d168b301a8d8 100644
--- a/profiles/desc/python_single_target.desc
+++ b/profiles/desc/python_single_target.desc
@@ -7,4 +7,5 @@ python3_10 - Build for Python 3.10 only
python3_11 - Build for Python 3.11 only
python3_12 - Build for Python 3.12 only
python3_13 - Build for Python 3.13 only
+python3_13t - Build for Python 3.13 freethreading only
pypy3 - Build for PyPy3 only
diff --git a/profiles/desc/python_targets.desc b/profiles/desc/python_targets.desc
index b48cc57e99fb..298b54067be7 100644
--- a/profiles/desc/python_targets.desc
+++ b/profiles/desc/python_targets.desc
@@ -7,4 +7,5 @@ python3_10 - Build with Python 3.10
python3_11 - Build with Python 3.11
python3_12 - Build with Python 3.12
python3_13 - Build with Python 3.13
+python3_13t - Build with Python 3.13 freethreading
pypy3 - Build with PyPy3
--
2.47.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-dev] [PATCH 6/9] install-qa-check.d: Support dev-lang/python-freethreading
2024-10-09 11:47 [gentoo-dev] [PATCH 0/9] Python 3.13 freethreading support Michał Górny
` (4 preceding siblings ...)
2024-10-09 11:47 ` [gentoo-dev] [PATCH 5/9] profiles: Add python3_13t (freethreading) target Michał Górny
@ 2024-10-09 11:47 ` Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 7/9] python-utils-r1.eclass: Support python3_13t (freethreading) target Michał Górny
` (2 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Michał Górny @ 2024-10-09 11:47 UTC (permalink / raw
To: gentoo-dev; +Cc: Michał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org>
---
metadata/install-qa-check.d/60python-site | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/metadata/install-qa-check.d/60python-site b/metadata/install-qa-check.d/60python-site
index facfb54f1b3c..1a4ee0ca9f4e 100644
--- a/metadata/install-qa-check.d/60python-site
+++ b/metadata/install-qa-check.d/60python-site
@@ -53,7 +53,7 @@ python_site_check() {
# check for packages installing outside site-packages
case ${CATEGORY}/${PN} in
- dev-lang/python|dev-python/pypy*|dev-python/python-tests)
+ dev-lang/python|dev-lang/python-freethreading|dev-python/pypy*|dev-python/python-tests)
;;
*)
while IFS= read -d $'\0' -r f; do
--
2.47.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-dev] [PATCH 7/9] python-utils-r1.eclass: Support python3_13t (freethreading) target
2024-10-09 11:47 [gentoo-dev] [PATCH 0/9] Python 3.13 freethreading support Michał Górny
` (5 preceding siblings ...)
2024-10-09 11:47 ` [gentoo-dev] [PATCH 6/9] install-qa-check.d: Support dev-lang/python-freethreading Michał Górny
@ 2024-10-09 11:47 ` Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 8/9] app-portage/gpyutils: Add python3.13t Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 9/9] distutils-r1.eclass: Do not use stable ABI wheels in freethreading Michał Górny
8 siblings, 0 replies; 10+ messages in thread
From: Michał Górny @ 2024-10-09 11:47 UTC (permalink / raw
To: gentoo-dev; +Cc: Michał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org>
---
eclass/python-utils-r1.eclass | 10 +++++++---
eclass/tests/python-utils-r1.sh | 8 ++++----
2 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass
index 796be7ab456a..ffaa0708ed5b 100644
--- a/eclass/python-utils-r1.eclass
+++ b/eclass/python-utils-r1.eclass
@@ -41,6 +41,7 @@ inherit multiprocessing toolchain-funcs
_PYTHON_ALL_IMPLS=(
pypy3
python3_{10..13}
+ python3_13t
)
readonly _PYTHON_ALL_IMPLS
@@ -136,7 +137,7 @@ _python_set_impls() {
# please keep them in sync with _PYTHON_ALL_IMPLS
# and _PYTHON_HISTORICAL_IMPLS
case ${i} in
- pypy3|python3_9|python3_1[0-3])
+ pypy3|python3_9|python3_1[0-3]|python3_13t)
;;
jython2_7|pypy|pypy1_[89]|pypy2_0|python2_[5-7]|python3_[1-9])
obsolete+=( "${i}" )
@@ -232,7 +233,7 @@ _python_impl_matches() {
return 0
;;
3.8|3.9|3.1[1-3])
- [[ ${impl} == python${pattern/./_} ]] && return 0
+ [[ ${impl%t} == python${pattern/./_} ]] && return 0
;;
*)
# unify value style to allow lax matching
@@ -435,7 +436,7 @@ _python_export() {
or "")
EOF
)
- val=${PYTHON}${flags}-config
+ val=${PYTHON%t}${flags}-config
;;
*)
die "${impl}: obtaining ${var} not supported"
@@ -448,6 +449,9 @@ _python_export() {
PYTHON_PKG_DEP)
local d
case ${impl} in
+ python*t)
+ PYTHON_PKG_DEP="dev-lang/python-freethreading:${impl#python}"
+ ;;
python*)
PYTHON_PKG_DEP="dev-lang/python:${impl#python}"
;;
diff --git a/eclass/tests/python-utils-r1.sh b/eclass/tests/python-utils-r1.sh
index 93cea324a3df..f0318305031e 100755
--- a/eclass/tests/python-utils-r1.sh
+++ b/eclass/tests/python-utils-r1.sh
@@ -64,7 +64,7 @@ tmpfile=$(mktemp)
inherit python-utils-r1
-for minor in {10..13}; do
+for minor in {10..13} 13t; do
ebegin "Testing python3.${minor}"
eindent
test_var EPYTHON "python3_${minor}" "python3.${minor}"
@@ -72,9 +72,9 @@ for minor in {10..13}; do
if [[ -x /usr/bin/python3.${minor} ]]; then
abiflags=$(/usr/bin/python3.${minor} -c 'import sysconfig; print(sysconfig.get_config_var("ABIFLAGS"))')
test_var PYTHON_SITEDIR "python3_${minor}" "/usr/lib*/python3.${minor}/site-packages"
- test_var PYTHON_INCLUDEDIR "python3_${minor}" "/usr/include/python3.${minor}${abiflags}"
- test_var PYTHON_LIBPATH "python3_${minor}" "/usr/lib*/libpython3.${minor}${abiflags}$(get_libname)"
- test_var PYTHON_CONFIG "python3_${minor}" "/usr/bin/python3.${minor}${abiflags}-config"
+ test_var PYTHON_INCLUDEDIR "python3_${minor}" "/usr/include/python3.${minor%t}${abiflags}"
+ test_var PYTHON_LIBPATH "python3_${minor}" "/usr/lib*/libpython3.${minor%t}${abiflags}$(get_libname)"
+ test_var PYTHON_CONFIG "python3_${minor}" "/usr/bin/python3.${minor%t}${abiflags}-config"
test_var PYTHON_CFLAGS "python3_${minor}" "*-I/usr/include/python3.${minor}*"
test_var PYTHON_LIBS "python3_${minor}" "*-lpython3.${minor}*"
fi
--
2.47.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-dev] [PATCH 8/9] app-portage/gpyutils: Add python3.13t
2024-10-09 11:47 [gentoo-dev] [PATCH 0/9] Python 3.13 freethreading support Michał Górny
` (6 preceding siblings ...)
2024-10-09 11:47 ` [gentoo-dev] [PATCH 7/9] python-utils-r1.eclass: Support python3_13t (freethreading) target Michał Górny
@ 2024-10-09 11:47 ` Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 9/9] distutils-r1.eclass: Do not use stable ABI wheels in freethreading Michał Górny
8 siblings, 0 replies; 10+ messages in thread
From: Michał Górny @ 2024-10-09 11:47 UTC (permalink / raw
To: gentoo-dev; +Cc: Michał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org>
---
app-portage/gpyutils/files/implementations.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/app-portage/gpyutils/files/implementations.txt b/app-portage/gpyutils/files/implementations.txt
index 45705e04e3e1..95b321ec9437 100644
--- a/app-portage/gpyutils/files/implementations.txt
+++ b/app-portage/gpyutils/files/implementations.txt
@@ -23,6 +23,7 @@ python3_10 old 3.10
python3_11 old 3.11
python3_12 current 3.12
python3_13 experimental 3.13
+python3_13t experimental 3.13t
pypy1_8 2.7-pypy-1.8 dead p1.8
pypy1_9 2.7-pypy-1.9 dead p1.9
--
2.47.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-dev] [PATCH 9/9] distutils-r1.eclass: Do not use stable ABI wheels in freethreading
2024-10-09 11:47 [gentoo-dev] [PATCH 0/9] Python 3.13 freethreading support Michał Górny
` (7 preceding siblings ...)
2024-10-09 11:47 ` [gentoo-dev] [PATCH 8/9] app-portage/gpyutils: Add python3.13t Michał Górny
@ 2024-10-09 11:47 ` Michał Górny
8 siblings, 0 replies; 10+ messages in thread
From: Michał Górny @ 2024-10-09 11:47 UTC (permalink / raw
To: gentoo-dev; +Cc: Michał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org>
---
eclass/distutils-r1.eclass | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index c3a7d112b03f..7ab8dcae3265 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -1494,9 +1494,16 @@ distutils-r1_python_compile() {
# that this relies on the assumption that we're building
# from the oldest to the newest implementation,
# and the wheels are forward-compatible.
- if [[ ( ! ${DISTUTILS_EXT} && ${whl} == *py3-none-any* ) ||
- ( ${EPYTHON} == python* && ${whl} == *-abi3-* ) ]]
- then
+ if [[
+ ( ! ${DISTUTILS_EXT} && ${whl} == *py3-none-any* ) ||
+ (
+ ${EPYTHON} == python* &&
+ # freethreading does not support stable ABI
+ # at the moment
+ ${EPYTHON} != *t &&
+ ${whl} == *-abi3-*
+ )
+ ]]; then
distutils_wheel_install "${BUILD_DIR}/install" "${whl}"
return
fi
--
2.47.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2024-10-09 12:01 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-09 11:47 [gentoo-dev] [PATCH 0/9] Python 3.13 freethreading support Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 1/9] dev-lang/python: Remove old Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 2/9] dev-lang/python: Remove freethreading support Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 3/9] profiles: Copy dev-lang/python entries for python-freethreading Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 4/9] dev-lang/python-freethreading: New package, 3.13.0 Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 5/9] profiles: Add python3_13t (freethreading) target Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 6/9] install-qa-check.d: Support dev-lang/python-freethreading Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 7/9] python-utils-r1.eclass: Support python3_13t (freethreading) target Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 8/9] app-portage/gpyutils: Add python3.13t Michał Górny
2024-10-09 11:47 ` [gentoo-dev] [PATCH 9/9] distutils-r1.eclass: Do not use stable ABI wheels in freethreading Michał Górny
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox