diff options
| author | Liguros - Gitlab CI/CD [develop] <gitlab@liguros.net> | 2026-04-09 19:13:35 +0000 |
|---|---|---|
| committer | Liguros - Gitlab CI/CD [develop] <gitlab@liguros.net> | 2026-04-09 19:13:35 +0000 |
| commit | 36c0b912da359cb29be13d9f840a71ce188153cb (patch) | |
| tree | b2a039b1e127810699a630678360ac12c7a8b47a /dev-lang/python | |
| parent | 9d2e1604c9c5507861156ab4013b33d24bafa01f (diff) | |
| download | baldeagleos-repo-36c0b912da359cb29be13d9f840a71ce188153cb.tar.gz baldeagleos-repo-36c0b912da359cb29be13d9f840a71ce188153cb.tar.xz baldeagleos-repo-36c0b912da359cb29be13d9f840a71ce188153cb.zip | |
Adding metadata
Diffstat (limited to 'dev-lang/python')
| -rw-r--r-- | dev-lang/python/Manifest | 13 | ||||
| -rw-r--r-- | dev-lang/python/python-3.10.19.ebuild | 523 | ||||
| -rw-r--r-- | dev-lang/python/python-3.13.13.ebuild (renamed from dev-lang/python/python-3.12.12.ebuild) | 150 | ||||
| -rw-r--r-- | dev-lang/python/python-3.14.4.ebuild (renamed from dev-lang/python/python-3.11.14.ebuild) | 457 |
4 files changed, 375 insertions, 768 deletions
diff --git a/dev-lang/python/Manifest b/dev-lang/python/Manifest index 9011d64e116e..3f0592dfb01f 100644 --- a/dev-lang/python/Manifest +++ b/dev-lang/python/Manifest @@ -1,22 +1,21 @@ -DIST Python-3.10.19.tar.xz 19873020 BLAKE2B 194c36643fbdfaa777523ede07cc751c8de7dc549223ba1e48d55796fc8c7b1b6f835d62e8cd1d34e011497a9df971ad073a3949dfdfe88043a65e9cb7bb7f72 SHA512 9ea1e952bb5f7c9cc8d3efd8e7ae0059c129b6e09d12ded7d4e22476fad35f2c8186b1e003ea35a0099ffa5ff0a114985c3e960fba84e7037670b840a3e19c68 -DIST Python-3.10.19.tar.xz.asc 833 BLAKE2B 7378ba5751974d758cbedb0b14d239883da8f6e514232909056952be5f66496d5b59d0435f6cc34b9df85fdf3969537c85eea044e6af9faed7041d2a78e77b2a SHA512 64bcee68c2f4e0718daaf19d405f4a5bd0ce3fc3d13bb5cbae8d4a36e419dd104c94323b497f1d06110f6b62a1b3b351279c534145f4e8cea9af0d7bb0a8b5c9 DIST Python-3.10.20.tar.xz 19868028 BLAKE2B 2c87aba3688454eeba9828689f7d6b4cd31d12b23cff8849f6565ba3731030a726f00285d95c301f4cd6ea4316a0b63b10b2d551e03c7eaf7750f69a422626e1 SHA512 591d3acf7ef47307b8c58fec9516731b374bcdf6eb21883410f67402f823a183f1abffec1116583e394610730f414d5a98b4c3437ea5174a4d2adbb99b8f6e5b DIST Python-3.10.20.tar.xz.asc 833 BLAKE2B a0c698708b74cc9510374c07cc65b69fd492aeef1e910e58289f7f197edf5d42b4a14a09971c36fd8e8d01b744197a58ce081a8830610009306136ee3dc279ff SHA512 cb90ce514c63c63adc10cbb3db778eae626b922461715954daf08b3a3a99b8b4c750fded624787b7d28fc10a203b0e0e5494b91e5305ef56a23fda46c023c203 -DIST Python-3.11.14.tar.xz 20326860 BLAKE2B d0db72842e46fd2b95d245e8fe4550a52ad2eabcb95900d8beb2f871ed25494dba395bf30e93591ecc42b99cd587c6ecb06578d1232fe51a04e37bf00dec307d SHA512 8b5aa917fe67dbaa3c306239ed56c16cd7a3b4b701fab0b3dc0d342d60176c75440713bcab0c59a3289ac4a0f06103bd31140c492556e1937fcdbd990675f9e5 -DIST Python-3.11.14.tar.xz.asc 833 BLAKE2B 5b32ac50e6e725d9949bb6e89179d1c06c4e7d04ea82f6b80b64573c7e05b94da12de5738d0d7a5b73ad8d4cf1a5b35c5738c9e5a4ef93f97bb660f6f8b7cfc7 SHA512 d0049fd6f6d06ae5d86b3587080be060d522dd52e7e56270125541d5617582ea3977b75c7e585da005694665cfc5657e39033a730187c506edc252965f4df769 DIST Python-3.11.15.tar.xz 20332596 BLAKE2B 8be4dd30aff7a2615fd37754dc6ed1caede1507ef7716e500a2e1d1aa421668e810a2c13dfc743bcd47576a7715588476bd8c3d42275a24215a85109d6da7062 SHA512 1667f4839acfd23d05917a12993983b7dc3ab4438a37c72496fd040ac6981f4dea9dc95461ca701a6862beedb56c423fb83398b8b18e39e1efe12f539fced1c1 DIST Python-3.11.15.tar.xz.asc 833 BLAKE2B dd4134701ef36d22c7bca8ea16794d3e85dc2a2b6323b2babfdeb2652ade1db8b7d4256cb68a40ee1c1a2b5885666e25791c1e4d6c044cc8d49f68693ec65887 SHA512 673822ca037acb521bf7d3e7433f83cc2d60c8d102cfbf6695234e2a50ce12a7003040ad4017438510ebbb1ff0ba6727253fae250b07bc0e3d24b5578e80be52 -DIST Python-3.12.12.tar.xz 20798712 BLAKE2B 3ce140b5b2c5e3b055118c8595385c7d79582c64cd8dfe9dbd062f8e38a7a995bf51f7c61e1faa768bd36c315c3493d27cd81c7425c7416454f41f77431eac0f SHA512 4b99d240dd96a6e154909dcffe87f8bb38193d634cd80a1c3d9e819b7a63af2afa46d5e6423e81f00dd388840dc29a4a71580f6aa1ce9a12e559c1d63f65a205 -DIST Python-3.12.12.tar.xz.asc 963 BLAKE2B 243d7e8000768b562ff771ec8dd8fdc6be2bc36174a1f0f8b00038df2264c9d1c8a14913d07df2826fead822a16db18ef08b40d553f6a9bdc0ea39645d6d798a SHA512 32c10fd427c6f9f11595493d1b4d4c3cade85bffd439fe11e8b0b2c619e06734097b6aaedfdb4fe035b7fdd7196714dba77cdc806923e4454d5bcf60056991a0 DIST Python-3.12.13.tar.xz 20801708 BLAKE2B 94b99c75e3aba1d1a953b5447f8ad6b7ebec921bc8cf32a9dfd449e574e4b7e2a010f0f267c31c859acec0092669203c71c90386c80203968126d9dbfb6ae85d SHA512 e1eb66f0b34581f0155e3ce25ba72cf0b4b1107672ed0ad3e86bcfe616945c9204c41ffc492f32b1066b9154913ff88343038967ad8711dd05e6f2332fdb735b DIST Python-3.12.13.tar.xz.asc 963 BLAKE2B e6bc572fd207fe203cf8018bca89777c7033e46d25cc598b5715658f556d26b6f3b1652f13518850ad62a37254ab4ecf5f770197cb847306ffef96b747840e88 SHA512 903fd3baa7e29891bb00fb159ec9c43804a71002c4cd38902d25bf4e5167f856b37d211a5b1098ee60e1ea41f8a10a1596dd2382edc6d7367d55dd4154807fc7 DIST Python-3.13.12.tar.xz 22926488 BLAKE2B a744a81e39e4897abcaf11d6186c106d703c668ca41beefc8d56003d3b37b84a64284f0e9ca9dcc26a6b7ac6faf495b98e5172159ff91e8c01d52993cdc354b7 SHA512 5edecdf13999d8629f31543dffdcba521dbb5633577e481ee49275e377509a2f6d700624c26f95b57a8ff9501378d10d7c07c1d0e7e19be0d6c88f05b6315a13 DIST Python-3.13.12.tar.xz.asc 963 BLAKE2B c3e70ac00672c04692ff773d1dc0ae5495bc863782f65e20c8804c7888968471f9a16f42277ca88e1d256abb7d17cdcbc70b311ad35834054cf5be2445930eb5 SHA512 6d42bc51b3658e1b092e7ab44306f6fc968646a7a9aeb63a3c443d1f75e27153a2138e88c15cebf8d559ce6d7744acecd4e6026c6d0be6fde070f804042d4aea +DIST Python-3.13.13.tar.xz 22957612 BLAKE2B ea7761b9c47df08949798fb7b618ecc111f2d352b0ca317f3b6320d227c4728d18e1d63c45a2d5958bcf73e47d38b71d94b057c74d5a016110f9eee7337e6c22 SHA512 0ef615150a52865fe7ca0d0e106cf98488f113a56e5ae1b1437673f03880423839d04abe1999006f9835c77d8802d5ae94a1bdf63d18074a9a19c81e6f7b69e8 +DIST Python-3.13.13.tar.xz.asc 963 BLAKE2B d8f5d8bfc3e0e7140669f5478d846e5d6d2c44a805f6e44fcfa8fa1f72575771695719179a20c6e42994f27b144e9a61ba8d5fa25805f40fbcaf6421c322e81d SHA512 21e5235cd9a9df3546370feb55ac32539e08601b79ee7b1e39006028f192be6be0434f2f8384fdcc993b70bde7471be3b36ce9850abf0473d1fe2c7cdc98304b DIST Python-3.14.3.tar.xz 23778568 BLAKE2B 9312d28b8bd44c642eeb2d608827984610154f3adba0cdb318b959fc643f58a90f7e10c84b485a844577b1fe1f374ec85d585e6664b5b532531b60f77c951e27 SHA512 9fd875f7a1d96d64e7150913ef38b72b0aeecfcbc24ba46967e57b6495146b0cba6b940c273561fc4d656b6d0ce2e23ffb7bd32bcd0b61fd59a6d90585998c07 DIST Python-3.14.3.tar.xz.sigstore 5215 BLAKE2B bb6b0aae97c9b7312b7a6f6bf3fc200a95432ae28d49e6b8bbf2ff97d6c6c65f3a60d3adad96eee3bf5f18163dda0a46768f22c6cf18b3be83fda536d73ac048 SHA512 0eda4ba0e9920ef927882507dc41e5bb35758ada6b5d54d312715ffd258a281edd776695109577f8ec54c915b5d4dcf19c2ba79efc2cb3dc3b3d85c82acf49f0 +DIST Python-3.14.4.tar.xz 23855332 BLAKE2B cb96ace0b3a0316ffc8f2fca1e9b67dc8df7d9fe81c1daff1d8883634683703a0e458d6eea61f01b3641bb76997b9e39c939a0c8c28ce5edd7b166e41b2cc1f8 SHA512 89a7f8b8a31f48d150badb4751df137d47d9014c9c422649a1a55aef5618aa7f0259dd18c151e6804fa8312c6a21544332a9f630ee81150dc00505637e62bb8c +DIST Python-3.14.4.tar.xz.sigstore 5219 BLAKE2B 5d4e076139082e525c2758a64ca2cc4c05c69e601ffc9c402d5a041f8b867ee5f37264ded3bfa014cc979ccd3c573c208d2321ac5a3be93b906116bd0d8a5c37 SHA512 ec41d0d25fa3cd87cf62adcbe6b9e575cecc49f947a64ca997aa792ed22d93ef1bbc4dc2848e365dfb43b6c447dcf47417f9c68a5881d0ede8750fece9f97a87 DIST python-gentoo-patches-3.10.15.tar.xz 15896 BLAKE2B f908b409dbcedeb4e2fa7255d9dedfb8f86f39b9b12612d45662d2305012692753874befa5377e1bcb2e8fc04b54bf206948e12eb7bc357a764c1b1e496e5997 SHA512 a647882ede8d7b97e301e472e91f4573dce9f8bf4e408449444625fdf79859a54fd828daa60c7960721f34c3d6d82e2e45db2c55f2fc093097a0db42f7363b8c DIST python-gentoo-patches-3.11.8.tar.xz 8484 BLAKE2B 2a6b9275cfcb2edc639a8bfebaa061ccdf3c43c1fda46a97a3cb7ed6eb629d7b581932bf7e3561b7559533e2374e4c5138e7929f1d8edc3e93829ee701ac0779 SHA512 bcc4a0175b7d5f78eb7c431afad5ed4681512e5ec3a0394ff291b11a4d1867212fc093ded0f2e1f504c63f7035cde4d8b19c386d3cb4e50d7a49366a1872905d -DIST python-gentoo-patches-3.12.12.tar.xz 12012 BLAKE2B 4a030f976e73160f74dd760a8cac55a5889bf821e998b717962aac8b79780c314dfbabf93a6919daa75565c3ef31dcf6af87f3ec6768db0ff02154c4c112ab08 SHA512 d5ee32b93fb4a1910a8e3aa0486ae284885c05bd03ada3540f4990b4f12c837cd154e76511db663542dde74d652c3d1d279098319dcc991e7195e8db5befea12 DIST python-gentoo-patches-3.12.13.tar.xz 12084 BLAKE2B 598ea3d4a395a99d7b78fb592b486efc0af0625309a044442b1eaa81761621110a2de16abff09840426a53b35c0f848531b2e272cb80b970319bf55585603087 SHA512 26ecf8065cc71ad36c1ce43727f8eec4b0b660c99ed0612c807b99f069851d71b0517da48187464b90bffccc4278cee462166f8972c405bb07d70751f0e2d499 DIST python-gentoo-patches-3.13.12.tar.xz 8992 BLAKE2B e7a26ddbd76f337a0f3958e55d6f77864308d3db5b5b8bec36aa50c1845d28284c6d0ce4c847eb0ca2a51367baaf454be9c62bc1932ffdff5a4ee06c9701c3b4 SHA512 ef87942f8d1d145112b2275d1fce9f6faea19c37ed3e37fd8762f4470ecaa1d87f5a471f287d3e1bf7507af351894c15872ceea0ea41d4903707c12d4cf0c4d0 +DIST python-gentoo-patches-3.13.13.tar.xz 9000 BLAKE2B 583b48258c4048e0bf4c202b4e87de8a74d864c1b082f4de44569a2b736d3ecc43dd326961311667ceecd377338daae7ae2f624e2b3a056ba32f7b240227a227 SHA512 aeddb6ebd18f850642551bff11d81e667e7440e7c5d7337452fe9b34fe420dca2cbc04f916fd403f892289d5de26b933f4b19c59501d967ef67ce352a284d568 DIST python-gentoo-patches-3.14.3.tar.xz 8012 BLAKE2B a8106360a6c77e0e19ecdf55e924b85cfd6dae65d54b7c306a793b08da5214993631b92b1cff385c2d995799055a4e4ca3a461d4e1e049ada38e97b4eae54a31 SHA512 1747a99cdc2ec29b985bc75f53f9f4cbd6f9377bfb06f6576b2970bd30ae8461a39ba870021866cf0f79320e2775047b2f70d53a06c5687ebac23b3ae68c157a +DIST python-gentoo-patches-3.14.4.tar.xz 8012 BLAKE2B 07928ae9e2c057b75edabe287e0201a9aa35ddcfbb1b35c3729c25ccea707c343214ed82e0ad5df65a0994c0e263f7f50e8dd95ebdaae37210c14e1cc1f2d492 SHA512 8c8cf86842f42fa8634c0faee2c1e6dd51c621ae42d48300b0ab185d90653ad58e30c967a6b455e237303aa52d139a2980b948f8613725884d6aa0df016e07d8 diff --git a/dev-lang/python/python-3.10.19.ebuild b/dev-lang/python/python-3.10.19.ebuild deleted file mode 100644 index c8fc8aca4d21..000000000000 --- a/dev-lang/python/python-3.10.19.ebuild +++ /dev/null @@ -1,523 +0,0 @@ -# Copyright 2021-2026 Liguros Authors -# Distributed under the terms of the GNU General Public License v2 -EAPI=8 -WANT_LIBTOOL="none" - -inherit autotools check-reqs flag-o-matic multiprocessing pax-utils prefix python-utils-r1 toolchain-funcs verify-sig - -MY_PV=${PV/_rc/rc} -MY_P="Python-${MY_PV%_p*}" -PYVER=$(ver_cut 1-2) -PATCHSET="python-gentoo-patches-3.10.15" - -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 ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" -IUSE="bluetooth build +ensurepip examples gdbm hardened libedit libressl lto +ncurses pgo +readline +sqlite +ssl test tk valgrind" -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-lang/python-exec[python_targets_python${PYVER/./_}(-)] - dev-libs/libffi:= - dev-python/gentoo-common - sys-apps/util-linux:= - >=sys-libs/zlib-1.1.3:= - virtual/libcrypt:= - virtual/libintl - ensurepip? ( dev-python/ensurepip-wheels ) - gdbm? ( sys-libs/gdbm:=[berkdb] ) - 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? ( - !libressl? ( >=dev-libs/openssl-1.1.1:= ) - libressl? ( >=dev-libs/libressl-3.5.0:= ) - ) - tk? ( - >=dev-lang/tcl-8.0:= - >=dev-lang/tk-8.0:= - dev-tcltk/blt:= - dev-tcltk/tix - ) - !!<sys-apps/sandbox-2.21 - !build? ( app-misc/mime-types ) -" -# bluetooth requires headers from bluez -DEPEND=" - ${RDEPEND} - bluetooth? ( net-wireless/bluez ) - test? ( app-arch/xz-utils[extra-filters(+)] ) - valgrind? ( dev-debug/valgrind ) -" -# autoconf-archive needed to eautoreconf -BDEPEND=" - dev-build/autoconf-archive - app-alternatives/awk - virtual/pkgconfig - verify-sig? ( sec-keys/openpgp-keys-python ) - !sys-devel/gcc[libffi(-)]" -PDEPEND="app-eselect/eselect-python" - -VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/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 ) - -pkg_pretend() { - use test && check-reqs_pkg_pretend -} - -pkg_setup() { - use test && check-reqs_pkg_setup -} - -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. - rm -r Modules/expat || die - rm -r Modules/_ctypes/libffi* || die - - if use libressl; then - eapply -p0 ${FILESDIR}/hashopenssl-3.10.5-r1.patch - eapply -p0 ${FILESDIR}/patch-Modules__ssl_c - fi - - local PATCHES=( - "${WORKDIR}/${PATCHSET}" - ) - - default - - # https://bugs.gentoo.org/850151 - sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" setup.py || die - - # force the correct number of jobs - # https://bugs.gentoo.org/737660 - local jobs=$(makeopts_jobs) - sed -i -e "s:-j0:-j${jobs}:" Makefile.pre.in || die - sed -i -e "/self\.parallel/s:True:${jobs}:" setup.py || die - - eautoreconf -} - -src_configure() { - local disable - # 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 - - # https://bugs.gentoo.org/700012 - if is-flagq -flto || is-flagq '-flto=*'; then - append-cflags $(test-flags-CC -ffat-lto-objects) - fi - - # 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 - - if use pgo; then - local profile_task_flags=( - -m test - "-j$(makeopts_jobs)" - --pgo-extended - -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 - - -x test_gdb - - # 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 - ) - - 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 - --with-system-expat - --with-system-ffi - --with-platlibdir=lib - --with-pkg-config=yes - --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip - - $(use_with lto) - $(use_enable pgo optimizations) - $(use_with readline readline "$(usex libedit editline readline)") - $(use_with valgrind) - ) - - # disable implicit optimization/debugging flags - local -x OPT= - - if tc-is-cross-compiler ; then - # 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 - local -x CFLAGS_NODIST=${CFLAGS_FOR_BUILD} - local -x LDFLAGS_NODIST=${LDFLAGS_FOR_BUILD} - local -x CFLAGS= LDFLAGS= - - # We need to build our own Python on CBUILD first, and feed it in. - # bug #847910 - local myeconfargs_cbuild=( - "${myeconfargs[@]}" - - --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 - ) - - myeconfargs+=( - # Point the imminent CHOST build to the Python we just - # built for CBUILD. - --with-build-python="${WORKDIR}"/${P}-${CBUILD}/python - ) - - mkdir "${WORKDIR}"/${P}-${CBUILD} || die - pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die - # We disable _ctypes and _crypt for CBUILD because Python's setup.py can't handle locating - # libdir correctly for cross. - PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _ctypes _crypt" \ - ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" - - # Avoid as many dependencies as possible for the cross build. - cat >> Makefile <<-EOF || die - MODULE_NIS_STATE=disabled - MODULE__DBM_STATE=disabled - MODULE__GDBM_STATE=disabled - MODULE__DBM_STATE=disabled - MODULE__SQLITE3_STATE=disabled - MODULE__HASHLIB_STATE=disabled - MODULE__SSL_STATE=disabled - MODULE__CURSES_STATE=disabled - MODULE__CURSES_PANEL_STATE=disabled - MODULE_READLINE_STATE=disabled - MODULE__TKINTER_STATE=disabled - MODULE_PYEXPAT_STATE=disabled - MODULE_ZLIB_STATE=disabled - EOF - - # 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. - PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _ctypes _crypt" emake - popd &> /dev/null || die - 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 - - hprefixify setup.py - 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 - - # force-disable modules we don't want built - local disable_modules=( NIS ) - use gdbm || disable_modules+=( _GDBM _DBM ) - use sqlite || disable_modules+=( _SQLITE3 ) - use ssl || disable_modules+=( _HASHLIB _SSL ) - use ncurses || disable_modules+=( _CURSES _CURSES_PANEL ) - use readline || disable_modules+=( READLINE ) - use tk || disable_modules+=( _TKINTER ) - - local mod - for mod in "${disable_modules[@]}"; do - echo "MODULE_${mod}_STATE=disabled" - done >> Makefile || die - - # 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 - # Prevent using distutils bundled by setuptools. - # https://bugs.gentoo.org/823728 - export SETUPTOOLS_USE_DISTUTILS=stdlib - - # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't - # end up writing bytecode & violating sandbox. - # bug #831897 - local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} - - if use pgo ; then - # bug 660358 - local -x COLUMNS=80 - local -x PYTHONDONTWRITEBYTECODE= - - addpredict "/usr/lib/python${PYVER}/site-packages" - 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=( - -u-network - -j "$(makeopts_jobs)" - - # fails - -x test_gdb - ) - - if use sparc ; then - # bug #788022 - test_opts+=( - -x test_multiprocessing_fork - -x test_multiprocessing_forkserver - ) - fi - - # workaround docutils breaking tests - cat > Lib/docutils.py <<-EOF || die - raise ImportError("Thou shalt not import!") - EOF - - # bug 660358 - local -x COLUMNS=80 - local -x PYTHONDONTWRITEBYTECODE= - # workaround https://bugs.gentoo.org/775416 - addwrite "/usr/lib/python${PYVER}/site-packages" - - nonfatal emake test EXTRATESTOPTS="${test_opts[*]}" \ - CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty - local ret=${?} - - rm Lib/docutils.py || die - - [[ ${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}" 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 ensurepip; then - rm -r "${libdir}"/ensurepip || die - fi - 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,test/test_tk*} || 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 - # 2to3, pydoc - ln -s "../../../bin/2to3-${PYVER}" "${scriptdir}/2to3" || die - 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.11.0_beta4-r2; then - ewarn "Python 3.11.0b4 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.11 modules, e.g. using:" - ewarn - ewarn " emerge -1v /usr/lib/python3.11/site-packages" - fi - done -} diff --git a/dev-lang/python/python-3.12.12.ebuild b/dev-lang/python/python-3.13.13.ebuild index 66af12199e76..6a4ef23125a6 100644 --- a/dev-lang/python/python-3.12.12.ebuild +++ b/dev-lang/python/python-3.13.13.ebuild @@ -1,12 +1,16 @@ -# Copyright 2021-2025 Liguros Authors +# Copyright 2021-2026 Liguros Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=8 +EAPI="8" + +LLVM_COMPAT=( 18 ) +LLVM_OPTIONAL=1 WANT_LIBTOOL="none" -inherit autotools check-reqs flag-o-matic multiprocessing pax-utils -inherit python-utils-r1 toolchain-funcs verify-sig +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/_rc/rc} +MY_PV=${PV} MY_P="Python-${MY_PV%_p*}" PYVER=$(ver_cut 1-2) PATCHSET="python-gentoo-patches-${MY_PV}" @@ -29,8 +33,10 @@ 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 libressl libedit +ncurses pgo +readline +sqlite +ssl test tk valgrind + bluetooth debug +ensurepip examples gdbm jit libressl 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. @@ -42,14 +48,13 @@ RDEPEND=" app-arch/bzip2:= app-arch/xz-utils:= app-crypt/libb2 + app-misc/mime-types >=dev-libs/expat-2.1:= dev-libs/libffi:= dev-libs/mpdecimal:= dev-python/gentoo-common >=sys-libs/zlib-1.1.3:= - virtual/libcrypt:= virtual/libintl - ensurepip? ( dev-python/ensurepip-pip ) gdbm? ( sys-libs/gdbm:=[berkdb] ) kernel_linux? ( sys-apps/util-linux:= ) ncurses? ( >=sys-libs/ncurses-5.2:= ) @@ -74,10 +79,8 @@ DEPEND=" ${RDEPEND} bluetooth? ( net-wireless/bluez ) test? ( - app-arch/xz-utils dev-python/ensurepip-pip dev-python/ensurepip-setuptools - dev-python/ensurepip-wheel ) valgrind? ( dev-debug/valgrind ) " @@ -86,16 +89,22 @@ BDEPEND=" dev-build/autoconf-archive app-alternatives/awk virtual/pkgconfig + jit? ( + $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/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 +PDEPEND=" + ensurepip? ( dev-python/ensurepip-pip ) +" VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc @@ -106,12 +115,38 @@ QA_PKGCONFIG_VERSION=${PYVER} # false positives -- functions specific to *BSD QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) +declare -rgA PYTHON_KERNEL_CHECKS=( + ["CROSS_MEMORY_ATTACH"]="test_external_inspection" #bug 938589 + ["DNOTIFY"]="test_fcntl" # bug 938662 +) + pkg_pretend() { - use test && check-reqs_pkg_pretend + if use pgo || use test; then + check-reqs_pkg_pretend + fi + + 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[-jit]. Instead," + ewarn "please consider reporting JIT problems upstream." + fi } pkg_setup() { - use test && check-reqs_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() { @@ -126,14 +161,9 @@ src_prepare() { # TODO: Makefile has annoying deps on expat headers #rm -r Modules/expat || die - if use libressl; then - eapply -p1 ${FILESDIR}/hashopenssl-3.12.4.patch - eapply -p1 ${FILESDIR}/ssl-3.12.3-r1.patch - eapply -p1 ${FILESDIR}/configure_ac.patch - fi - local PATCHES=( "${WORKDIR}/${PATCHSET}" + "${FILESDIR}"/${PN}-3.13.4-libressl.patch ) default @@ -199,7 +229,7 @@ build_cbuild_python() { # 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 _crypt + #_ctypes EOF ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" @@ -218,7 +248,6 @@ src_configure() { 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. @@ -232,8 +261,13 @@ src_configure() { # Set baseline test skip flags. COMMON_TEST_SKIPS=( + # running gdb inside an ebuild as non-root, within sandbox, + # and possibly within a container is unreliable + -x test_gdb # this is actually test_gdb.test_pretty_print -x test_pretty_print + # https://bugs.gentoo.org/933840 + -x test_perf_profiler ) # Arch-specific skips. See #931888 for a collection of these. @@ -262,11 +296,6 @@ src_configure() { -x test_statistics ) ;; - powerpc64-*) # big endian - COMMON_TEST_SKIPS+=( - -x test_descr - ) - ;; riscv*) COMMON_TEST_SKIPS+=( -x test_urllib2 @@ -277,15 +306,23 @@ src_configure() { # bug 788022 -x test_multiprocessing_fork -x test_multiprocessing_forkserver + -x test_multiprocessing_spawn -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 @@ -307,6 +344,7 @@ src_configure() { -m test "-j$(makeopts_jobs)" --pgo-extended + --verbose3 -u-network # We use a timeout because of how often we've had hang issues @@ -321,7 +359,6 @@ src_configure() { # They'll even hang here but be fine in src_test sometimes. # bug #828535 (and related: bug #788022) -x test_asyncio - -x test_concurrent_futures -x test_httpservers -x test_logging -x test_multiprocessing_fork @@ -331,35 +368,12 @@ src_configure() { # Hangs (actually runs indefinitely executing itself w/ many cpython builds) # bug #900429 -x test_tools - ) - # 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 + # Fails with LibreSSL + # https://github.com/libressl/portable/issues/1133 + -x test_hashlib + -x test_ssl + ) if has_version "app-arch/rpm" ; then # Avoid sandbox failure (attempts to write to /var/lib/rpm) @@ -367,7 +381,8 @@ src_configure() { -x test_distutils ) fi - local -x PROFILE_TASK="${profile_task_flags[*]}" + # PGO sometimes fails randomly + local -x PROFILE_TASK="${profile_task_flags[*]} || true" fi local myeconfargs=( @@ -376,12 +391,14 @@ src_configure() { # a chance for users rebuilding python before glibc ac_cv_header_stropts_h=no + # libressl doesn't find hashlib (From OpenBSD) + ac_cv_working_openssl_hashlib=yes + --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 @@ -392,16 +409,16 @@ src_configure() { --with-platlibdir=lib --with-pkg-config=yes --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + --enable-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 ) @@ -473,6 +490,7 @@ src_compile() { # bug 660358 local -x COLUMNS=80 local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp fi # also need to clear the flags explicitly here or they end up @@ -512,6 +530,7 @@ src_test() { # bug 660358 local -x COLUMNS=80 local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp nonfatal emake -Onone test EXTRATESTOPTS="${test_opts[*]}" \ CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty @@ -523,10 +542,6 @@ src_test() { src_install() { local libdir=${ED}/usr/lib/python${PYVER} - # the Makefile rules are broken - # https://github.com/python/cpython/issues/100221 - mkdir -p "${libdir}"/lib-dynload || die - # -j1 hack for now for bug #843458 emake -j1 DESTDIR="${D}" TEST_MODULES=no altinstall @@ -603,8 +618,7 @@ src_install() { EOF chmod +x "${scriptdir}/python${pymajor}-config" || die ln -s "python${pymajor}-config" "${scriptdir}/python-config" || die - # 2to3, pydoc - ln -s "../../../bin/2to3-${PYVER}" "${scriptdir}/2to3" || die + # pydoc ln -s "../../../bin/pydoc${PYVER}" "${scriptdir}/pydoc" || die # idle if use tk; then diff --git a/dev-lang/python/python-3.11.14.ebuild b/dev-lang/python/python-3.14.4.ebuild index dcaedf42a02f..e0d3d456d56b 100644 --- a/dev-lang/python/python-3.11.14.ebuild +++ b/dev-lang/python/python-3.14.4.ebuild @@ -1,14 +1,20 @@ # Copyright 2021-2026 Liguros Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=8 +EAPI="8" + +LLVM_COMPAT=( 19 ) +LLVM_OPTIONAL=1 +VERIFY_SIG_METHOD=sigstore WANT_LIBTOOL="none" -inherit autotools check-reqs flag-o-matic multiprocessing pax-utils prefix python-utils-r1 toolchain-funcs verify-sig +inherit autotools check-reqs eapi9-ver flag-o-matic linux-info llvm-r1 +inherit multiprocessing pax-utils python-utils-r1 toolchain-funcs +inherit verify-sig -MY_PV=${PV/_rc/rc} +MY_PV=${PV/_/} MY_P="Python-${MY_PV%_p*}" PYVER=$(ver_cut 1-2) -PATCHSET="python-gentoo-patches-3.11.8" +PATCHSET="python-gentoo-patches-${MY_PV}" DESCRIPTION="An interpreted, interactive, object-oriented programming language" HOMEPAGE=" @@ -19,15 +25,19 @@ 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 + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.sigstore ) " S="${WORKDIR}/${MY_P}" LICENSE="PSF-2" SLOT="${PYVER}" -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" -IUSE="bluetooth build +ensurepip examples gdbm hardened libedit libressl lto +ncurses pgo +readline +sqlite +ssl test tk valgrind" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE=" + bluetooth debug +ensurepip examples gdbm jit libressl libedit +ncurses pgo + +readline +sqlite +ssl tail-call-interp test tk valgrind +" +REQUIRED_USE="jit? ( ${LLVM_REQUIRED_USE} )" RESTRICT="!test? ( test )" # Do not add a dependency on dev-lang/python to this ebuild. @@ -38,20 +48,16 @@ RESTRICT="!test? ( test )" RDEPEND=" app-arch/bzip2:= app-arch/xz-utils:= - app-crypt/libb2 + app-arch/zstd:= + app-misc/mime-types >=dev-libs/expat-2.1:= - dev-lang/python-exec[python_targets_python${PYVER/./_}(-)] dev-libs/libffi:= + dev-libs/mpdecimal:= dev-python/gentoo-common - sys-apps/util-linux:= >=sys-libs/zlib-1.1.3:= - virtual/libcrypt:= virtual/libintl - ensurepip? ( - dev-python/ensurepip-pip - dev-python/ensurepip-setuptools - ) gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) ncurses? ( >=sys-libs/ncurses-5.2:= ) readline? ( !libedit? ( >=sys-libs/readline-4.1:= ) @@ -60,7 +66,7 @@ RDEPEND=" sqlite? ( >=dev-db/sqlite-3.3.8:3= ) ssl? ( !libressl? ( >=dev-libs/openssl-1.1.1:= ) - libressl? ( >=dev-libs/libressl-3.5.0:= ) + libressl? ( >=dev-libs/libressl-3.9.1:= ) ) tk? ( >=dev-lang/tcl-8.0:= @@ -68,15 +74,13 @@ RDEPEND=" dev-tcltk/blt:= dev-tcltk/tix ) - !!<sys-apps/sandbox-2.21 - !build? ( app-misc/mime-types ) " +# libressl? ( <=dev-libs/libressl-4.0.0:= ) # bluetooth requires headers from bluez DEPEND=" ${RDEPEND} bluetooth? ( net-wireless/bluez ) test? ( - app-arch/xz-utils[extra-filters(+)] dev-python/ensurepip-pip dev-python/ensurepip-setuptools ) @@ -87,77 +91,171 @@ BDEPEND=" dev-build/autoconf-archive app-alternatives/awk virtual/pkgconfig - verify-sig? ( sec-keys/openpgp-keys-python ) - !sys-devel/gcc[libffi(-)]" -PDEPEND="app-eselect/eselect-python" + jit? ( + $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/llvm:${LLVM_SLOT} + ') + ) +" +if [[ ${PV} != *_alpha* ]]; then + RDEPEND+=" + dev-lang/python-exec[python_targets_python${PYVER/./_}(-)] + " +fi +PDEPEND=" + ensurepip? ( dev-python/ensurepip-pip ) +" -VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/python.org.asc +# https://www.python.org/downloads/metadata/sigstore/ +VERIFY_SIG_CERT_IDENTITY=hugo@python.org +VERIFY_SIG_CERT_OIDC_ISSUER=https://github.com/login/oauth # large file tests involve a 2.5G file being copied (duplicated) CHECKREQS_DISK_BUILD=5500M -QA_PKGCONFIG_VERSION=${PYVER} +QA_PKGCONFIG_VERSION=${PYVER%t} # false positives -- functions specific to *BSD QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) +declare -rgA PYTHON_KERNEL_CHECKS=( + ["CROSS_MEMORY_ATTACH"]="test_external_inspection" #bug 938589 + ["DNOTIFY"]="test_fcntl" # bug 938662 +) + pkg_pretend() { - use test && check-reqs_pkg_pretend + if use pgo || use test; then + check-reqs_pkg_pretend + fi + + 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[-jit]. Instead," + ewarn "please consider reporting JIT problems upstream." + fi } pkg_setup() { - use test && check-reqs_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} + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.sigstore} fi default } src_prepare() { # Ensure that internal copies of expat and libffi are not used. - rm -r Modules/expat || die - rm -r Modules/_ctypes/libffi* || die - - if use libressl; then - eapply -p0 ${FILESDIR}/hashopenssl-3.10.5-r1.patch - eapply -p0 ${FILESDIR}/ssl.patch - fi + # TODO: Makefile has annoying deps on expat headers + #rm -r Modules/expat || die local PATCHES=( "${WORKDIR}/${PATCHSET}" ) - default + if use libressl; then + eapply -p1 "${FILESDIR}"/${PN}-3.14.2-libressl.patch + fi - # https://bugs.gentoo.org/850151 - sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" setup.py || die + default # force the correct number of jobs # https://bugs.gentoo.org/737660 - local jobs=$(makeopts_jobs) - sed -i -e "s:-j0:-j${jobs}:" Makefile.pre.in || die - sed -i -e "/self\.parallel/s:True:${jobs}:" setup.py || die + 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() { - local disable # 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 - # https://bugs.gentoo.org/700012 - if is-flagq -flto || is-flagq '-flto=*'; then - append-cflags $(test-flags-CC -ffat-lto-objects) - fi - # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. # PKG_CONFIG needed for cross. tc-export CXX PKG_CONFIG @@ -167,18 +265,101 @@ src_configure() { dbmliborder+="${dbmliborder:+:}gdbm" fi + # Set baseline test skip flags. + COMMON_TEST_SKIPS=( + # running gdb inside an ebuild as non-root, within sandbox, + # and possibly within a container is unreliable + -x test_gdb + # this is actually test_gdb.test_pretty_print + -x test_pretty_print + # https://bugs.gentoo.org/933840 + -x test_perf_profiler + ) + + # 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 + ) + ;; + riscv*) + COMMON_TEST_SKIPS+=( + -x test_urllib2 + ) + ;; + sparc*) + COMMON_TEST_SKIPS+=( + # bug 788022 + -x test_multiprocessing_fork + -x test_multiprocessing_forkserver + -x test_multiprocessing_spawn + + -x test_ctypes + # 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 - -x test_gdb + "${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. @@ -193,6 +374,11 @@ src_configure() { # Hangs (actually runs indefinitely executing itself w/ many cpython builds) # bug #900429 -x test_tools + + # Fails with LibreSSL + # https://github.com/libressl/portable/issues/1133 + -x test_hashlib + -x test_ssl ) if has_version "app-arch/rpm" ; then @@ -201,7 +387,8 @@ src_configure() { -x test_distutils ) fi - local -x PROFILE_TASK="${profile_task_flags[*]}" + # PGO sometimes fails randomly + local -x PROFILE_TASK="${profile_task_flags[*]} || true" fi local myeconfargs=( @@ -210,94 +397,63 @@ src_configure() { # a chance for users rebuilding python before glibc ac_cv_header_stropts_h=no + # libressl doesn't find hashlib (From OpenBSD) + ac_cv_working_openssl_hashlib=yes + --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-ffi + --with-system-libmpdec --with-platlibdir=lib --with-pkg-config=yes --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + --enable-gil - $(use_with lto) + $(use_with debug assertions) + $(use_enable jit experimental-jit) $(use_enable pgo optimizations) $(use_with readline readline "$(usex libedit editline readline)") + $(use_with tail-call-interp) $(use_with valgrind) ) + if tc-is-lto; then + 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 - # 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 - local -x CFLAGS_NODIST=${CFLAGS_FOR_BUILD} - local -x LDFLAGS_NODIST=${LDFLAGS_FOR_BUILD} - local -x CFLAGS= LDFLAGS= - - # We need to build our own Python on CBUILD first, and feed it in. - # bug #847910 - local myeconfargs_cbuild=( - "${myeconfargs[@]}" - - --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 - ) - + build_cbuild_python myeconfargs+=( # Point the imminent CHOST build to the Python we just # built for CBUILD. --with-build-python="${WORKDIR}"/${P}-${CBUILD}/python ) - - mkdir "${WORKDIR}"/${P}-${CBUILD} || die - pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die - # We disable _ctypes and _crypt for CBUILD because Python's setup.py can't handle locating - # libdir correctly for cross. - PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _ctypes _crypt" \ - ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" - - # Avoid as many dependencies as possible for the cross build. - cat >> Makefile <<-EOF || die - MODULE_NIS_STATE=disabled - MODULE__DBM_STATE=disabled - MODULE__GDBM_STATE=disabled - MODULE__DBM_STATE=disabled - MODULE__SQLITE3_STATE=disabled - MODULE__HASHLIB_STATE=disabled - MODULE__SSL_STATE=disabled - MODULE__CURSES_STATE=disabled - MODULE__CURSES_PANEL_STATE=disabled - MODULE_READLINE_STATE=disabled - MODULE__TKINTER_STATE=disabled - MODULE_PYEXPAT_STATE=disabled - MODULE_ZLIB_STATE=disabled - EOF - - # 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. - PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _ctypes _crypt" emake - popd &> /dev/null || die fi # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get @@ -311,7 +467,6 @@ src_configure() { append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw fi - hprefixify setup.py econf "${myeconfargs[@]}" if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then @@ -320,20 +475,6 @@ src_configure() { die "Broken sem_open function (bug 496328)" fi - # force-disable modules we don't want built - local disable_modules=( NIS ) - use gdbm || disable_modules+=( _GDBM _DBM ) - use sqlite || disable_modules+=( _SQLITE3 ) - use ssl || disable_modules+=( _HASHLIB _SSL ) - use ncurses || disable_modules+=( _CURSES _CURSES_PANEL ) - use readline || disable_modules+=( READLINE ) - use tk || disable_modules+=( _TKINTER ) - - local mod - for mod in "${disable_modules[@]}"; do - echo "MODULE_${mod}_STATE=disabled" - done >> Makefile || die - # install epython.py as part of stdlib echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die } @@ -342,21 +483,21 @@ src_compile() { # Ensure sed works as expected # https://bugs.gentoo.org/594768 local -x LC_ALL=C - # Prevent using distutils bundled by setuptools. - # https://bugs.gentoo.org/823728 - export SETUPTOOLS_USE_DISTUTILS=stdlib + 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= - - addpredict "/usr/lib/python${PYVER}/site-packages" + local -x TMPDIR=/var/tmp fi # also need to clear the flags explicitly here or they end up @@ -387,38 +528,21 @@ src_test() { local -x LOGNAME=buildbot local test_opts=( + --verbose3 -u-network -j "$(makeopts_jobs)" - - # fails - -x test_gdb + "${COMMON_TEST_SKIPS[@]}" ) - if use sparc ; then - # bug #788022 - test_opts+=( - -x test_multiprocessing_fork - -x test_multiprocessing_forkserver - ) - fi - - # workaround docutils breaking tests - cat > Lib/docutils.py <<-EOF || die - raise ImportError("Thou shalt not import!") - EOF - # bug 660358 local -x COLUMNS=80 local -x PYTHONDONTWRITEBYTECODE= - # workaround https://bugs.gentoo.org/775416 - addwrite "/usr/lib/python${PYVER}/site-packages" + local -x TMPDIR=/var/tmp - nonfatal emake test EXTRATESTOPTS="${test_opts[*]}" \ + nonfatal emake -Onone test EXTRATESTOPTS="${test_opts[*]}" \ CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty local ret=${?} - rm Lib/docutils.py || die - [[ ${ret} -eq 0 ]] || die "emake test failed" } @@ -426,7 +550,7 @@ src_install() { local libdir=${ED}/usr/lib/python${PYVER} # -j1 hack for now for bug #843458 - emake -j1 DESTDIR="${D}" altinstall + emake -j1 DESTDIR="${D}" TEST_MODULES=no altinstall # Fix collisions between different slots of Python. rm "${ED}/usr/$(get_libdir)/libpython3.so" || die @@ -452,15 +576,12 @@ src_install() { fi rm -r "${libdir}"/ensurepip/_bundled || die - if ! use ensurepip; then - rm -r "${libdir}"/ensurepip || die - fi 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,test/test_tk*} || die + rm -r "${libdir}/"{idlelib,tkinter} || die fi ln -s ../python/EXTERNALLY-MANAGED "${libdir}/EXTERNALLY-MANAGED" || die @@ -504,8 +625,7 @@ src_install() { EOF chmod +x "${scriptdir}/python${pymajor}-config" || die ln -s "python${pymajor}-config" "${scriptdir}/python-config" || die - # 2to3, pydoc - ln -s "../../../bin/2to3-${PYVER}" "${scriptdir}/2to3" || die + # pydoc ln -s "../../../bin/pydoc${PYVER}" "${scriptdir}/pydoc" || die # idle if use tk; then @@ -514,17 +634,14 @@ src_install() { } pkg_postinst() { - local v - for v in ${REPLACING_VERSIONS}; do - if ver_test "${v}" -lt 3.11.0_beta4-r2; then - ewarn "Python 3.11.0b4 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.11 modules, e.g. using:" - ewarn - ewarn " emerge -1v /usr/lib/python3.11/site-packages" - fi - done + if ver_replacing -lt 3.14.0_beta3; then + ewarn "Python 3.14.0b3 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.14 modules, e.g. using:" + ewarn + ewarn " emerge -1v /usr/lib/python3.14/site-packages" + fi } |
