summaryrefslogtreecommitdiff
path: root/dev-lang
diff options
context:
space:
mode:
Diffstat (limited to 'dev-lang')
-rw-r--r--dev-lang/erlang/erlang-29.0.ebuild2
-rw-r--r--dev-lang/execline/execline-2.9.9.1.ebuild2
-rw-r--r--dev-lang/go/go-1.26.7.ebuild2
-rw-r--r--dev-lang/pypy/Manifest4
-rw-r--r--dev-lang/pypy/pypy-2.7.8.0.0.ebuild315
-rw-r--r--dev-lang/pypy/pypy-3.11.8.0.0.ebuild236
-rw-r--r--dev-lang/pypy3-exe-bin/Manifest8
-rw-r--r--dev-lang/pypy3-exe-bin/pypy3-exe-bin-3.11.8.0.0.ebuild78
-rw-r--r--dev-lang/pypy3-exe/Manifest2
-rw-r--r--dev-lang/pypy3-exe/pypy3-exe-3.11.8.0.0.ebuild136
-rw-r--r--dev-lang/spidermonkey/spidermonkey-140.16.0.ebuild2
-rw-r--r--dev-lang/swig/swig-4.3.1.ebuild2
12 files changed, 784 insertions, 5 deletions
diff --git a/dev-lang/erlang/erlang-29.0.ebuild b/dev-lang/erlang/erlang-29.0.ebuild
index d99c9b2fa61e..6b2468c169af 100644
--- a/dev-lang/erlang/erlang-29.0.ebuild
+++ b/dev-lang/erlang/erlang-29.0.ebuild
@@ -22,7 +22,7 @@ LICENSE="Apache-2.0"
# same build of ERTS that was used when compiling the code. See
# http://erlang.org/doc/system_principles/misc.html for more information.
SLOT="0/${PV}"
-KEYWORDS="amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos ~x64-solaris"
+KEYWORDS="amd64 ~arm ~arm64 ~hppa ppc ppc64 ~riscv ~sparc x86 ~x64-macos ~x64-solaris"
IUSE="doc java +kpoll odbc sctp ssl systemd tk wxwidgets"
RDEPEND="
diff --git a/dev-lang/execline/execline-2.9.9.1.ebuild b/dev-lang/execline/execline-2.9.9.1.ebuild
index dbec89f4acb5..37c9ff28e85a 100644
--- a/dev-lang/execline/execline-2.9.9.1.ebuild
+++ b/dev-lang/execline/execline-2.9.9.1.ebuild
@@ -11,7 +11,7 @@ SRC_URI="https://www.skarnet.org/software/${PN}/${P}.tar.gz"
LICENSE="ISC"
SLOT="0/$(ver_cut 1-2).0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~x86"
+KEYWORDS="~alpha amd64 arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~x86"
RDEPEND=">=dev-libs/skalibs-2.15.0.0:="
DEPEND="${RDEPEND}"
diff --git a/dev-lang/go/go-1.26.7.ebuild b/dev-lang/go/go-1.26.7.ebuild
index 7f3008914e96..c94eb4ca111b 100644
--- a/dev-lang/go/go-1.26.7.ebuild
+++ b/dev-lang/go/go-1.26.7.ebuild
@@ -20,7 +20,7 @@ case ${PV} in
*)
SRC_URI="https://go.dev/dl/go${MY_PV}.src.tar.gz "
S="${WORKDIR}"/go
- KEYWORDS="-* amd64 ~arm ~arm64 ~loong ~mips ppc64 ~riscv ~s390 x86 ~x64-macos ~x64-solaris"
+ KEYWORDS="-* amd64 ~arm arm64 ~loong ~mips ppc64 ~riscv ~s390 x86 ~x64-macos ~x64-solaris"
;;
esac
diff --git a/dev-lang/pypy/Manifest b/dev-lang/pypy/Manifest
index 85c9725f4467..d5caf4281daa 100644
--- a/dev-lang/pypy/Manifest
+++ b/dev-lang/pypy/Manifest
@@ -1,4 +1,8 @@
DIST pypy2.7-gentoo-patches-7.3.23.tar.xz 5316 BLAKE2B 923494c49ef09b1929ba1986891a08f23e4343c44eac792a688ac88b48d21770101ca50fcdf3986c686adefb24fbf58aef674ec608feea775984ab8a16385cb6 SHA512 c1d07caef19b77cb4950d56c1de8079900fc21728061f8620210932d2cd85f701407ce7b9947d2ef044211d1ffe8b77ce445da3c5aef69321b45e7ab8550dee3
+DIST pypy2.7-gentoo-patches-8.0.0.tar.xz 988 BLAKE2B 6bd236da38a45c50891758f6446fa70c81358141b8904062d2d1e27a7a938ee970c592108a081c8e9c83c869415b235e0202eae93ccf8d050866567976ed1fcd SHA512 a365d070448374777e7b2a7f5f7226e7ade89fd427c44b01f1cd8acaa215095de91a85321f9ca8283d04ed1d9aeaa5d191f5b2e33e44a831e38912d56a7a970e
DIST pypy2.7-v7.3.23-src.tar.bz2 21023543 BLAKE2B 7638e5aecd30d9c2c9ab22b1ab9a43331685885ee90ebfda8d2a88da34e4b0b998bd967eed30b309110b9d40b14df75f24a7e9219c7383b542602869ee1a12d9 SHA512 3750fc9c5309baa7627d00a77b4b2b1e0d755b75841acd0fcee484bc332f1e9ed9c1f33d2f4800777f20ea8849356f39c84167f96b9ebfdd7e479798d62eac06
+DIST pypy2.7-v8.0.0-src.tar.gz 21312909 BLAKE2B 5ee9800c5399b1af82fde2f729fc63f6523e345b070176c4c13c9bd2cc0537baa6d04875042d4bd96ecec0c3bc5e8e79c08add1443b9c99ae40d396b91178ef7 SHA512 e0ae52034b5e03d413c47e1ddd9a7bde3549c70b4519c1630367c314ebce58638af78d5936c89943de1907477eb4bec8c149d850836991af14a50c9e643dfa63
DIST pypy3.11-gentoo-patches-7.3.23.tar.xz 3096 BLAKE2B d0852f8c9f715359487e07f5c80c4f3ac48da7eb650fd328535c40d8ec6318cf4c9f4b08838e976e2f88723472a42ccfcaf61d3a1b4af8319a44b476202b8c05 SHA512 81d6bb2e25a387bfe805263e7ecfb927a2292824e03b58ff4942b52bf4057d13ddf5d7944f8ee2e6c1553bde5650ac5d7af8689ab586a33ab5c58e4565da126a
+DIST pypy3.11-gentoo-patches-8.0.0.tar.xz 1392 BLAKE2B 1324f7a4f4950359b929835c1f0cfcb99022bf0098a0515a08ae24d811c2bdc5bd64e877d6c7e5b0b9dd33523c1b93f556bbec68c92fdad0670eb4e44a20c5b9 SHA512 c8e1a9eeb4ca44adb113477ce1bced9d3e3a7f693852dcc3b83b588b113fb1f1ca7a1c24151c31f321bdc763dd2fcdeea03031e3bb9d0d3f899ca083bc33df72
DIST pypy3.11-v7.3.23-src.tar.bz2 25005650 BLAKE2B d0976c47fb04d1c96d7b4c1202ba43e586c8585f0c770c313c61407dc9c91245b6d4b07371d004646f43765f997f1deadcd938033bcc3429d848af63dbc75714 SHA512 4351cf30227af06ece5d69fe86a17355eadf2dcdbddf8119c04a720a4f9f388c6ae45a3496feb623950fb4a4a9f70c1910502adb325a12b1b0e34a7ba35563c2
+DIST pypy3.11-v8.0.0-src.tar.gz 25897899 BLAKE2B 80e41af342fde7676990b1ea7aa689fcbbe5000d59cc41dc112597dba9f20a7ba5d1dd09feef130b78fa62f91fdf92c212ae9d796ecb3ea863983ff70b672398 SHA512 3e29f2bc76dc2db6d2409d580299c16e54927c1d7f06d697c0550d55a6fec2570e41f283d72730a19ad9166121a01cc5e380c33858a86b96356d4fd9d1780ade
diff --git a/dev-lang/pypy/pypy-2.7.8.0.0.ebuild b/dev-lang/pypy/pypy-2.7.8.0.0.ebuild
new file mode 100644
index 000000000000..25a3f76d557c
--- /dev/null
+++ b/dev-lang/pypy/pypy-2.7.8.0.0.ebuild
@@ -0,0 +1,315 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit pax-utils toolchain-funcs
+
+PYVER=$(ver_cut 1-2)
+PATCHSET_PV=$(ver_cut 3-)
+PYPY_PV=${PATCHSET_PV%_p*}
+
+MY_P="pypy${PYVER}-v${PYPY_PV/_}"
+PATCHSET="pypy${PYVER}-gentoo-patches-${PATCHSET_PV/_rc/rc}"
+
+DESCRIPTION="A fast, compliant alternative implementation of the Python (${PYVER}) language"
+HOMEPAGE="
+ https://pypy.org/
+ https://github.com/pypy/pypy/
+"
+SRC_URI="
+ https://downloads.python.org/pypy/${MY_P}-src.tar.gz
+ https://distfiles.gentoo.org/pub/proj/python/patchsets/pypy${PYVER}/${PATCHSET}.tar.xz
+"
+S="${WORKDIR}/${MY_P}-src"
+
+LICENSE="MIT"
+# pypy -c 'import sysconfig; print sysconfig.get_config_var("SOABI")'
+SLOT="${PYVER}/pypy-80"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+IUSE="bzip2 full-stdlib gdbm +jit ncurses sqlite tk"
+RESTRICT="test"
+
+RDEPEND="
+ || (
+ >=dev-python/pypy-exe-bin-${PYPY_PV}:${PYPY_PV}
+ >=dev-python/pypy-exe-${PYPY_PV}:${PYPY_PV}[bzip2?,ncurses?]
+ )
+ dev-libs/openssl:0=
+ gdbm? ( sys-libs/gdbm:0= )
+ sqlite? ( dev-db/sqlite:3= )
+ tk? (
+ dev-lang/tk:0=
+ dev-tcltk/tix:0=
+ )
+ !dev-python/pypy
+"
+DEPEND="
+ ${RDEPEND}
+"
+
+src_prepare() {
+ local PATCHES=(
+ "${WORKDIR}/${PATCHSET}"
+ )
+
+ default
+}
+
+src_configure() {
+ tc-export CC
+}
+
+src_compile() {
+ # copy over to make sys.prefix happy
+ cp -p "${BROOT}/usr/lib/pypy${PYVER}/pypy-c-${PYPY_PV}" pypy-c || die
+ cp -p "${BROOT}/usr/lib/pypy${PYVER}/include/${PYPY_PV}"/* include/ || die
+ # (not installed by pypy)
+ rm pypy/module/cpyext/include/_numpypy/numpy/README || die
+ mv pypy/module/cpyext/include/* include/ || die
+ mv pypy/module/cpyext/parse/*.h include/ || die
+ pax-mark m pypy-c
+
+ # verify the subslot
+ local soabi=$(
+ ./pypy-c - <<-EOF
+ import sysconfig
+ print sysconfig.get_config_var("SOABI")
+ EOF
+ )
+ [[ ${soabi} == ${SLOT#*/} ]] || die "update subslot to ${soabi}"
+
+ einfo "Generating caches and CFFI modules ..."
+
+ if use full-stdlib; then
+ # Generate Grammar and PatternGrammar pickles.
+ ./pypy-c - <<-EOF || die "Generation of Grammar and PatternGrammar pickles failed"
+ import lib2to3.pygram
+ import lib2to3.patcomp
+ lib2to3.patcomp.PatternCompiler()
+ EOF
+
+ # Generate cffi modules
+ # Please keep in sync with pypy/tool/build_cffi_imports.py!
+ cffi_targets=( pypy_util ssl audioop syslog pwdgrp resource )
+ use gdbm && cffi_targets+=( gdbm )
+ use ncurses && cffi_targets+=( curses )
+ use sqlite && cffi_targets+=( sqlite3 )
+ use tk && cffi_targets+=( tkinter/tklib )
+
+ local t
+ # all modules except tkinter output to .
+ # tkinter outputs to the correct dir ...
+ cd lib_pypy || die
+ for t in "${cffi_targets[@]}"; do
+ # tkinter doesn't work via -m
+ ../pypy-c "_${t}_build.py" || die "Failed to build CFFI bindings for ${t}"
+ done
+
+ # Verify that CFFI module list is up-to-date
+ local expected_cksum=-7df4eab0
+ local local_cksum=$(
+ ../pypy-c - <<-EOF
+ import binascii
+ import json
+ from pypy_tools.build_cffi_imports import cffi_build_scripts as x
+ print("%08x" % (binascii.crc32(json.dumps(x)),))
+ EOF
+ )
+ if [[ ${local_cksum} != ${expected_cksum} ]]; then
+ die "Please verify cffi_targets and update checksum to ${local_cksum}"
+ fi
+
+ # Cleanup temporary objects
+ find -name "_cffi_*.[co]" -delete || die
+ find -type d -empty -delete || die
+ fi
+}
+
+src_test() {
+ # (unset)
+ local -x PYTHONDONTWRITEBYTECODE=
+ local -x COLUMNS=80
+
+ local ignored_tests=(
+ # network
+ --ignore=lib-python/${PYVER}/test/test_urllibnet.py
+ --ignore=lib-python/${PYVER}/test/test_urllib2net.py
+ # lots of free space
+ --ignore=lib-python/${PYVER}/test/test_zipfile64.py
+
+ # broken by expat-2.4.5
+ --ignore=lib-python/${PYVER}/test/test_minidom.py
+ --ignore=lib-python/${PYVER}/test/test_xml_etree.py
+ --ignore=lib-python/${PYVER}/test/test_xml_etree_c.py
+ )
+
+ ./pypy-c ./pypy/test_all.py --pypy=./pypy-c -vv \
+ "${ignored_tests[@]}" lib-python || die
+}
+
+src_install() {
+ local dest="/usr/lib/pypy${PYVER}"
+ einfo "Installing PyPy ..."
+ dosym "pypy-c-${PYPY_PV}" "${dest}/pypy-c"
+ insinto "${dest}"
+ # preserve mtimes to avoid obsoleting caches
+ insopts -p
+ if use full-stdlib; then
+ doins -r include lib_pypy lib-python
+
+ # replace copied headers with symlinks
+ for x in "${BROOT}/usr/lib/pypy${PYVER}/include/${PYPY_PV}"/*; do
+ dosym "${PYPY_PV}/${x##*/}" "${dest}/include/${x##*/}"
+ done
+
+ if ! use gdbm; then
+ rm -r "${ED}${dest}"/lib_pypy/gdbm.py \
+ "${ED}${dest}"/lib-python/*${PYVER}/test/test_gdbm.py || die
+ fi
+ if ! use sqlite; then
+ rm -r "${ED}${dest}"/lib-python/*${PYVER}/sqlite3 \
+ "${ED}${dest}"/lib_pypy/_sqlite3.py \
+ "${ED}${dest}"/lib-python/*${PYVER}/test/test_sqlite.py || die
+ fi
+ if ! use tk; then
+ rm -r "${ED}${dest}"/lib-python/*${PYVER}/{idlelib,lib-tk} \
+ "${ED}${dest}"/lib_pypy/_tkinter \
+ "${ED}${dest}"/lib-python/*${PYVER}/test/test_{tcl,tk,ttk*}.py || die
+ fi
+ else
+ # install only the absolutely minimal subset of modules needed
+ # for pypy3 build
+ local lib_py_modules=(
+ # base modules needed to even start pypy (and import site)
+ __future__.py
+ codecs.py
+ copy_reg.py
+ encodings
+ genericpath.py
+ linecache.py
+ os.py
+ pkgutil.py
+ posixpath.py
+ re.py
+ runpy.py
+ site.py
+ sre_compile.py
+ sre_constants.py
+ sre_parse.py
+ stat.py
+ string.py
+ sysconfig.py
+ traceback.py
+ warnings.py
+ UserDict.py
+
+ # needed for python_optimize
+ compileall.py
+ getopt.py
+ py_compile.py
+ struct.py
+
+ # needed for rpython
+ argparse.py
+ atexit.py
+ base64.py
+ bdb.py
+ bisect.py
+ cmd.py
+ code.py
+ codeop.py
+ collections.py
+ colorsys.py
+ contextlib.py
+ copy.py
+ ctypes
+ dis.py
+ fnmatch.py
+ functools.py
+ gettext.py
+ hashlib.py
+ heapq.py
+ inspect.py
+ io.py
+ json
+ keyword.py
+ locale.py
+ logging
+ new.py
+ opcode.py
+ optparse.py
+ pdb.py
+ pickle.py
+ platform.py
+ pprint.py
+ random.py
+ repr.py
+ shlex.py
+ shutil.py
+ StringIO.py
+ subprocess.py
+ tempfile.py
+ textwrap.py
+ threading.py
+ tokenize.py
+ weakref.py
+ zipfile.py
+ )
+
+ local distutils_modules=(
+ # needed by site
+ __init__.py
+ errors.py
+ sysconfig.py
+ sysconfig_cpython.py
+ sysconfig_pypy.py
+ )
+
+ local lib_pypy_modules=(
+ # needed by site
+ _sysconfigdata.py
+
+ # needed by rpython
+ cffi
+ _ctypes
+ _ffi.py
+ _functools.py
+ _sha.py
+ _sha256.py
+ _sha512.py
+
+ # NB: we're deliberately skipping _hashlib to avoid some deps
+ )
+
+ cd "lib-python/${PYVER}" || die
+ insinto "${dest}/lib-python/${PYVER}"
+ doins -r "${lib_py_modules[@]}"
+ cd - >/dev/null || die
+
+ cd "lib-python/${PYVER}/distutils" || die
+ insinto "${dest}/lib-python/${PYVER}/distutils"
+ doins -r "${distutils_modules[@]}"
+ cd - >/dev/null || die
+
+ cd lib_pypy || die
+ insinto "${dest}/lib_pypy"
+ doins -r "${lib_pypy_modules[@]}"
+ cd - >/dev/null || die
+ fi
+
+ dosym "../lib/pypy${PYVER}/pypy-c" /usr/bin/pypy
+ dodoc README.rst
+
+ local -x PYTHON="${ED}${dest}/pypy-c-${PYPY_PV}"
+ # temporarily copy to build tree to facilitate module builds
+ cp -p "${BROOT}${dest}/pypy-c-${PYPY_PV}" "${PYTHON}" || die
+
+ einfo "Byte-compiling Python standard library..."
+ "${PYTHON}" -m compileall \
+ -x 'bad_coding|badsyntax|make_ssl_data|lib2to3/tests/data' \
+ -q -f -d "${dest}" "${ED}/${dest}" || die
+
+ # remove to avoid collisions
+ rm "${PYTHON}" || die
+}
diff --git a/dev-lang/pypy/pypy-3.11.8.0.0.ebuild b/dev-lang/pypy/pypy-3.11.8.0.0.ebuild
new file mode 100644
index 000000000000..2bca80190456
--- /dev/null
+++ b/dev-lang/pypy/pypy-3.11.8.0.0.ebuild
@@ -0,0 +1,236 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit multiprocessing pax-utils python-utils-r1 toolchain-funcs
+
+PYVER=$(ver_cut 1-2)
+PATCHSET_PV=$(ver_cut 3-)
+PYPY_PV=${PATCHSET_PV%_p*}
+
+MY_P="pypy${PYVER}-v${PYPY_PV/_}"
+PATCHSET="pypy${PYVER}-gentoo-patches-${PATCHSET_PV/_rc/rc}"
+
+DESCRIPTION="A fast, compliant alternative implementation of the Python (${PYVER}) language"
+HOMEPAGE="
+ https://pypy.org/
+ https://github.com/pypy/pypy/
+"
+SRC_URI="
+ https://downloads.python.org/pypy/${MY_P}-src.tar.gz
+ https://distfiles.gentoo.org/pub/proj/python/patchsets/pypy${PYVER}/${PATCHSET}.tar.xz
+"
+S="${WORKDIR}/${MY_P}-src"
+
+LICENSE="MIT"
+# pypy3 -c 'import sysconfig; print(sysconfig.get_config_var("SOABI"))'
+# also check pypy/interpreter/pycode.py -> pypy_incremental_magic
+SLOT="${PYVER}/pypy311-pp80-432"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+IUSE="+ensurepip gdbm +jit ncurses sqlite symlink +test-install tk"
+# many tests are failing upstream
+# see https://buildbot.pypy.org/summary?branch=py${PYVER}
+RESTRICT="test"
+
+RDEPEND="
+ || (
+ dev-lang/pypy3-exe:${PV%_p*}[bzip2(+),ncurses?]
+ dev-lang/pypy3-exe-bin:${PV%_p*}
+ )
+ dev-libs/openssl:0=
+ dev-python/gentoo-common
+ gdbm? ( sys-libs/gdbm:0= )
+ sqlite? ( dev-db/sqlite:3= )
+ tk? (
+ dev-lang/tk:0=
+ dev-tcltk/tix:0=
+ )
+ symlink? (
+ !dev-lang/pypy:3.10[symlink(-)]
+ !<dev-python/pypy3-7.3.17-r100
+ )
+"
+DEPEND="
+ ${RDEPEND}
+"
+
+PDEPEND="
+ ensurepip? (
+ dev-python/ensurepip-pip
+ dev-python/ensurepip-setuptools
+ )
+"
+
+src_prepare() {
+ local PATCHES=(
+ "${WORKDIR}/${PATCHSET}"
+ )
+
+ default
+}
+
+src_configure() {
+ tc-export CC
+}
+
+src_compile() {
+ mkdir bin || die
+ # switch to the layout expected for cffi module builds
+ mkdir "include/pypy${PYVER}" || die
+ # copy over to make sys.prefix happy
+ cp -p "${BROOT}/usr/bin/pypy${PYVER}-c-${PYPY_PV}" pypy${PYVER}-c || die
+ cp -p "${BROOT}/usr/include/pypy${PYVER}/${PYPY_PV}"/* include/pypy${PYVER}/ || die
+ # (not installed by pypy-exe)
+ rm pypy/module/cpyext/include/_numpypy/numpy/README || die
+ mv pypy/module/cpyext/include/* "include/pypy${PYVER}/" || die
+ mv pypy/module/cpyext/parse/*.h "include/pypy${PYVER}/" || die
+ pax-mark m "pypy${PYVER}-c"
+
+ # verify the subslot
+ local soabi=$(
+ "./pypy${PYVER}-c" - <<-EOF
+ import importlib.util
+ import sysconfig
+ soabi = sysconfig.get_config_var("SOABI")
+ magic = importlib.util._RAW_MAGIC_NUMBER & 0xffff
+ print(f"{soabi}-{magic}")
+ EOF
+ )
+ [[ ${soabi} == ${SLOT#*/} ]] || die "update subslot to ${soabi}"
+
+ # Add epython.py to the distribution
+ echo "EPYTHON=\"pypy${PYVER}\"" > lib-python/3/epython.py || die
+
+ einfo "Generating caches and CFFI modules ..."
+
+ # Generate Grammar and PatternGrammar pickles.
+ "./pypy${PYVER}-c" - <<-EOF || die "Generation of Grammar and PatternGrammar pickles failed"
+ import lib2to3.pygram
+ import lib2to3.patcomp
+ lib2to3.patcomp.PatternCompiler()
+ EOF
+
+ # Generate cffi modules
+ # Please keep in sync with lib_pypy/pypy_tools/build_cffi_imports.py!
+ # (NB: we build CFFI modules first to avoid error log when importing
+ # build_cffi_imports).
+ cffi_targets=(
+ pypy_util blake2/_blake2 sha3/_sha3 ssl
+ audioop syslog pwdgrp resource lzma posixshmem
+ ctypes_test testmultiphase
+ )
+ use gdbm && cffi_targets+=( gdbm )
+ use ncurses && cffi_targets+=( curses )
+ use sqlite && cffi_targets+=( sqlite3 )
+ use tk && cffi_targets+=( tkinter/tklib )
+
+ local t
+ # all modules except tkinter output to .
+ # tkinter outputs to the correct dir ...
+ cd lib_pypy || die
+ for t in "${cffi_targets[@]}"; do
+ # tkinter doesn't work via -m
+ "../pypy${PYVER}-c" "_${t}_build.py" || die "Failed to build CFFI bindings for ${t}"
+ done
+ # testcapi does not have a "build" script
+ "../pypy${PYVER}-c" -c "import _testcapi" || die
+
+ # Verify that CFFI module list is up-to-date
+ local expected_cksum=46dc6ae7
+ local local_cksum=$(
+ "../pypy${PYVER}-c" - <<-EOF
+ import binascii
+ import json
+ from pypy_tools.build_cffi_imports import cffi_build_scripts as x
+ print("%08x" % (binascii.crc32(json.dumps(x).encode()),))
+ EOF
+ )
+ if [[ ${local_cksum} != ${expected_cksum} ]]; then
+ die "Please verify cffi_targets and update checksum to ${local_cksum}"
+ fi
+
+ # Cleanup temporary objects
+ find \( -name "*_cffi.c" -o -name '*.o' \) -delete || die
+ find -type d -empty -delete || die
+ cd .. || die
+
+ # Generate sysconfig data
+ local host_gnu_type=$(sh pypy/tool/release/config.guess)
+ local overrides=(
+ HOST_GNU_TYPE "${host_gnu_type:-unknown}"
+ INCLUDEPY "${EPREFIX}/usr/include/pypy${PYVER}"
+ LIBDIR "${EPREFIX}/usr/$(get_libdir)"
+ TZPATH "${EPREFIX}/usr/share/zoneinfo"
+ WHEEL_PKG_DIR "${EPREFIX}/usr/lib/python/ensurepip"
+ )
+ "./pypy${PYVER}-c" -m sysconfig --generate-posix-vars "${overrides[@]}" || die
+ local outdir
+ outdir=$(<pybuilddir.txt) || die
+ cp "${outdir}"/_sysconfigdata__*.py lib-python/3/ || die
+}
+
+src_install() {
+ local dest="/usr/lib/pypy${PYVER}"
+ einfo "Installing PyPy ..."
+ dodir /usr/bin
+ dosym "pypy${PYVER}-c-${PYPY_PV}" "/usr/bin/pypy${PYVER}"
+ insinto "${dest}"
+ # preserve mtimes to avoid obsoleting caches
+ insopts -p
+ doins -r lib-python/3/. lib_pypy/.
+ insinto /usr/include
+ doins -r "include/pypy${PYVER}"
+
+ # replace copied headers with symlinks
+ for x in "${BROOT}/usr/include/pypy${PYVER}/${PYPY_PV}"/*; do
+ dosym "${PYPY_PV}/${x##*/}" "/usr/include/pypy${PYVER}/${x##*/}"
+ done
+
+ dodoc README.rst
+
+ rm -r "${ED}${dest}"/ensurepip/_bundled || die
+ if ! use ensurepip; then
+ rm -r "${ED}${dest}"/ensurepip || die
+ fi
+ if ! use gdbm; then
+ rm -r "${ED}${dest}"/_gdbm* || die
+ fi
+ if ! use test-install; then
+ rm -r "${ED}${dest}"/{ctypes,tkinter,unittest}/test \
+ "${ED}${dest}"/{distutils,lib2to3}/tests \
+ "${ED}${dest}"/idlelib/idle_test || die
+ fi
+ if ! use sqlite; then
+ rm -r "${ED}${dest}"/sqlite3 \
+ "${ED}${dest}"/_sqlite3* \
+ "${ED}${dest}"/test/test_sqlite3 || die
+ fi
+ if ! use tk; then
+ rm -r "${ED}${dest}"/{idlelib,tkinter} \
+ "${ED}${dest}"/_tkinter \
+ "${ED}${dest}"/test/test_{tcl,tk,ttk*}.py || die
+ fi
+ # remove test last since we have some file removals above
+ if ! use test-install; then
+ rm -r "${ED}${dest}"/test || die
+ fi
+ dosym ../python/EXTERNALLY-MANAGED "${dest}/EXTERNALLY-MANAGED"
+
+ local -x PYTHON="${ED}/usr/bin/pypy${PYVER}-c-${PYPY_PV}"
+ # temporarily copy to build tree to facilitate module builds
+ cp -p "${BROOT}/usr/bin/pypy${PYVER}-c-${PYPY_PV}" "${PYTHON}" || die
+
+ einfo "Byte-compiling Python standard library..."
+ # exclude list from CPython Makefile.pre.in
+ "${PYTHON}" -m compileall -j "$(makeopts_jobs)" -o 0 -o 1 -o 2 \
+ -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+ --hardlink-dupes -q -f -d "${dest}" "${ED}${dest}" || die
+
+ # remove to avoid collisions
+ rm "${PYTHON}" || die
+
+ if use symlink; then
+ dosym pypy${PYVER} /usr/bin/pypy3
+ fi
+}
diff --git a/dev-lang/pypy3-exe-bin/Manifest b/dev-lang/pypy3-exe-bin/Manifest
index 2a90babca725..f5219a71e995 100644
--- a/dev-lang/pypy3-exe-bin/Manifest
+++ b/dev-lang/pypy3-exe-bin/Manifest
@@ -6,3 +6,11 @@ DIST pypy3-exe-3.11.7.3.23-1.ppc64le-musl.gpkg.tar 7403520 BLAKE2B 2b202a0c22ae6
DIST pypy3-exe-3.11.7.3.23-1.ppc64le.gpkg.tar 11315200 BLAKE2B c0dc4f06b5427bc65581bfb49a7847be2f37d23b2bd0e1f7b9a7a937431ad0351d9d841fc073ab0ce6e713c46aedaa34bb081170f2d948d52a92fd0e338340bc SHA512 8c1af07bd889d88e9535803d3c3a2fa3be88c027daa98ed6b2af22c5ad7b4530c549250f80cbd62cc379f83ed43f7522edb60c7e62a24c2e13332ddbed610680
DIST pypy3-exe-3.11.7.3.23-1.x86-musl.gpkg.tar 9717760 BLAKE2B a7b72adc8b2f186e5685b4e2665eede2c7c1042d4c920eb1dce4bc4c0049bb84d34e2d7a1a66cdf68612732cf35ae1149119b519a7c20202b352dff1532f41e0 SHA512 49333e243f4eee4f0124603fb7596d8e8f28997211e7ef86a4c0fe555b77de35a0479c8546edfd777d4196b314d709cd5189d0334f45875fa5bec1d6fecd9fa6
DIST pypy3-exe-3.11.7.3.23-1.x86.gpkg.tar 9707520 BLAKE2B a12ef9dbbc59033222bf57601d841860aa27beff44b21f633cd41dcfa3ecd50f6ba08efdbfafbe2475dbd7bda12dbc0dc16dae64f89f0d8d1e8a6b900149d70e SHA512 222c416e68c6cce4068ff30055e26ed7c99127f0b9617f8de0f825111ed35bddc81887875ed7122f004975fca14e4267291bf4f3ff00211e9ba4890c9b2f0be6
+DIST pypy3-exe-3.11.8.0.0-1.amd64-musl.gpkg.tar 12032000 BLAKE2B abbe7ae60eec8e225bac1673dccad2302aa3517317b82e485ba07e7e68eda027044c2d6916d323578d998d99535643717388bbd3d6be78e2a033f91ec464f1e1 SHA512 95a89634be0f7572facc46415acf69b6e1298f9e12cdb9847f664d19b5de4e9227d109a254a7a425cb2c6b85b5f4635cda931bf75be1cb59b238c128333c4f85
+DIST pypy3-exe-3.11.8.0.0-1.amd64.gpkg.tar 12083200 BLAKE2B 77e6989bdec5795345f3ad4e47fbfacdee4cf08d6cfab844dbc0b4930e05f3960fb707a17f2c8c68ac03ed3b52d1415b90f37b29eb3a9e645be8f89fb65311e3 SHA512 66f44514a176a1247fc864fe780e9efd8ac06b0a3c4012c47e1dfcd02b77004ed27a244c9d8dcd1dfa279417c8ec75edadcd731a22cbd88d06402b4dd1e2a412
+DIST pypy3-exe-3.11.8.0.0-1.arm64-musl.gpkg.tar 10516480 BLAKE2B 1752e4cfa2b2ba8dd92eed46220f731296fd2850b1322937fdf56ebe461c62629822e252d9639d4e7b21dc808b576ade3f79064e3127d5290fc61a0a5f4b74c9 SHA512 2d14be085283ecff82e262082b64c823afebc807acd6af936ebf38348ef6823cec1af634274ca2a115d4884d151850259262e08f5250249cd0fc7e07e493b739
+DIST pypy3-exe-3.11.8.0.0-1.arm64.gpkg.tar 10475520 BLAKE2B 53b8c9cb22705b2b0ebfdde1000fd0048a55c820db9ca1c85cc7b4bf774c6449d5d6202316a3d074a549b73c78f7a598d3dec512366287ef94839c4baa9a8fe3 SHA512 9f4e1bf7f2231e80fc04f3e769f3a5604a2603726dde42edacd44fe949a4d8e24f7261f04048f2d6c7c0c1aff8cca92f6981c27cd934d26fca274957608a41e1
+DIST pypy3-exe-3.11.8.0.0-1.ppc64le-musl.gpkg.tar 6912000 BLAKE2B 784455a155c218f2b927fa7cb97fb3000fe56ae958e099021002ec1fe380c26861d18034bbdde699c3b1ff3d0e1054a6b776acf5175864f1a25ee21678bab7a0 SHA512 d79ddd95c6dffe65901fc26239d53edb57a95a6d45e975f61ddc1c4c93201f76394520fe817648a885b8e4f7557df0aea5e243725e8e3be408b7c5298d1f1f5c
+DIST pypy3-exe-3.11.8.0.0-1.ppc64le.gpkg.tar 10741760 BLAKE2B c5062e3b1e0565c19142fb69e16ed58ea4554b60a01e799c78202a84eee0a230eebdc6c89bf4d8ac6a5c58f96bacbbbac475f01902d04e64acdad0f77b8a0a16 SHA512 3111204200894c051baa164168ad726fa1be520ffd0d92bc40f103bcb5f23354b653f56248d3142ccfc18877b667922e57076d924b80ab3cffecdc9fec13e47b
+DIST pypy3-exe-3.11.8.0.0-1.x86-musl.gpkg.tar 9472000 BLAKE2B 6fe4626e392a47915647081afb0b53e4071e9c0f91fb818dd2bf8b75702453beb36e6fb020e7d161f8db38be7f7fb8df9875c5ad4339a598f85d3da64a9e5124 SHA512 409d1d1c7a72450525943d56f70f78cb0fa24b4e9fe02dcf2897a553b4c1d254f1fb1cce7a0ef1a5ff5b90cc679293701cb47762c2380807aae11c6ae547d9bb
+DIST pypy3-exe-3.11.8.0.0-1.x86.gpkg.tar 9523200 BLAKE2B 3c2cd68746b37616ae6f881b797209b900ecfa1a5565a2c224c6ba2f5d6d5f2a3733f2ecb56c89bbc5e9aef20957ccf967e74b52a9dcb9c4387c24edb8279a6b SHA512 325fc7a16725dbf995a5c5d6aad2e50cdf4a18e27e5280c9833b7f17ef740317ea3640888ba48939d175c6df13520feb55319b9d23eeebb36cf6a68e12c143d2
diff --git a/dev-lang/pypy3-exe-bin/pypy3-exe-bin-3.11.8.0.0.ebuild b/dev-lang/pypy3-exe-bin/pypy3-exe-bin-3.11.8.0.0.ebuild
new file mode 100644
index 000000000000..2fa2a4810f9b
--- /dev/null
+++ b/dev-lang/pypy3-exe-bin/pypy3-exe-bin-3.11.8.0.0.ebuild
@@ -0,0 +1,78 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit pax-utils unpacker
+
+PYVER=$(ver_cut 1-2)
+PATCHSET_PV=$(ver_cut 3-)
+PYPY_PV=${PATCHSET_PV%_p*}
+MY_P=pypy3-exe-${PV}-1
+
+DESCRIPTION="PyPy3.11 executable (pre-built version)"
+HOMEPAGE="
+ https://pypy.org/
+ https://github.com/pypy/pypy/
+"
+SRC_URI="
+ elibc_glibc? (
+ amd64? (
+ https://distfiles.gentoo.org/pub/proj/python/binpkg/amd64/pypy3-exe/${MY_P}.amd64.gpkg.tar
+ )
+ arm64? (
+ https://distfiles.gentoo.org/pub/proj/python/binpkg/arm64/pypy3-exe/${MY_P}.arm64.gpkg.tar
+ )
+ ppc64? (
+ https://distfiles.gentoo.org/pub/proj/python/binpkg/ppc64le/pypy3-exe/${MY_P}.ppc64le.gpkg.tar
+ )
+ x86? (
+ https://distfiles.gentoo.org/pub/proj/python/binpkg/x86/pypy3-exe/${MY_P}.x86.gpkg.tar
+ )
+ )
+ elibc_musl? (
+ amd64? (
+ https://distfiles.gentoo.org/pub/proj/python/binpkg/amd64-musl/pypy3-exe/${MY_P}.amd64-musl.gpkg.tar
+ )
+ arm64? (
+ https://distfiles.gentoo.org/pub/proj/python/binpkg/arm64-musl/pypy3-exe/${MY_P}.arm64-musl.gpkg.tar
+ )
+ ppc64? (
+ https://distfiles.gentoo.org/pub/proj/python/binpkg/ppc64le-musl/pypy3-exe/${MY_P}.ppc64le-musl.gpkg.tar
+ )
+ x86? (
+ https://distfiles.gentoo.org/pub/proj/python/binpkg/x86-musl/pypy3-exe/${MY_P}.x86-musl.gpkg.tar
+ )
+ )
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="${PV%_p*}"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+
+# sys-devel/gcc for libgcc_s.so
+RDEPEND="
+ app-arch/bzip2:0/1
+ dev-libs/expat:0/0
+ dev-libs/libffi:0/8
+ sys-libs/ncurses:0/6
+ >=virtual/zlib-1.1.3:0/1
+ virtual/libintl:0/0
+ elibc_glibc? (
+ sys-devel/gcc
+ >=sys-libs/glibc-2.35
+ )
+ !dev-lang/pypy3-exe:${SLOT}
+"
+
+QA_PREBUILT="
+ usr/bin/pypy${PYVER}-c-${PYPY_PV}
+"
+
+src_install() {
+ insinto /
+ doins -r image/usr
+ fperms +x "/usr/bin/pypy${PYVER}-c-${PYPY_PV}"
+ pax-mark m "${ED}/usr/bin/pypy${PYVER}-c-${PYPY_PV}"
+}
diff --git a/dev-lang/pypy3-exe/Manifest b/dev-lang/pypy3-exe/Manifest
index e2ef69b6088c..b6614e3b2267 100644
--- a/dev-lang/pypy3-exe/Manifest
+++ b/dev-lang/pypy3-exe/Manifest
@@ -1,2 +1,4 @@
DIST pypy3.11-gentoo-patches-7.3.23.tar.xz 3096 BLAKE2B d0852f8c9f715359487e07f5c80c4f3ac48da7eb650fd328535c40d8ec6318cf4c9f4b08838e976e2f88723472a42ccfcaf61d3a1b4af8319a44b476202b8c05 SHA512 81d6bb2e25a387bfe805263e7ecfb927a2292824e03b58ff4942b52bf4057d13ddf5d7944f8ee2e6c1553bde5650ac5d7af8689ab586a33ab5c58e4565da126a
+DIST pypy3.11-gentoo-patches-8.0.0.tar.xz 1392 BLAKE2B 1324f7a4f4950359b929835c1f0cfcb99022bf0098a0515a08ae24d811c2bdc5bd64e877d6c7e5b0b9dd33523c1b93f556bbec68c92fdad0670eb4e44a20c5b9 SHA512 c8e1a9eeb4ca44adb113477ce1bced9d3e3a7f693852dcc3b83b588b113fb1f1ca7a1c24151c31f321bdc763dd2fcdeea03031e3bb9d0d3f899ca083bc33df72
DIST pypy3.11-v7.3.23-src.tar.bz2 25005650 BLAKE2B d0976c47fb04d1c96d7b4c1202ba43e586c8585f0c770c313c61407dc9c91245b6d4b07371d004646f43765f997f1deadcd938033bcc3429d848af63dbc75714 SHA512 4351cf30227af06ece5d69fe86a17355eadf2dcdbddf8119c04a720a4f9f388c6ae45a3496feb623950fb4a4a9f70c1910502adb325a12b1b0e34a7ba35563c2
+DIST pypy3.11-v8.0.0-src.tar.gz 25897899 BLAKE2B 80e41af342fde7676990b1ea7aa689fcbbe5000d59cc41dc112597dba9f20a7ba5d1dd09feef130b78fa62f91fdf92c212ae9d796ecb3ea863983ff70b672398 SHA512 3e29f2bc76dc2db6d2409d580299c16e54927c1d7f06d697c0550d55a6fec2570e41f283d72730a19ad9166121a01cc5e380c33858a86b96356d4fd9d1780ade
diff --git a/dev-lang/pypy3-exe/pypy3-exe-3.11.8.0.0.ebuild b/dev-lang/pypy3-exe/pypy3-exe-3.11.8.0.0.ebuild
new file mode 100644
index 000000000000..01280f42766d
--- /dev/null
+++ b/dev-lang/pypy3-exe/pypy3-exe-3.11.8.0.0.ebuild
@@ -0,0 +1,136 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit check-reqs pax-utils toolchain-funcs
+
+PYVER=$(ver_cut 1-2)
+PATCHSET_PV=$(ver_cut 3-)
+PYPY_PV=${PATCHSET_PV%_p*}
+
+MY_P="pypy${PYVER}-v${PYPY_PV/_}"
+PATCHSET="pypy${PYVER}-gentoo-patches-${PATCHSET_PV/_rc/rc}"
+
+DESCRIPTION="PyPy3.11 executable (build from source)"
+HOMEPAGE="
+ https://pypy.org/
+ https://github.com/pypy/pypy/
+"
+SRC_URI="
+ https://downloads.python.org/pypy/${MY_P}-src.tar.gz
+ https://distfiles.gentoo.org/pub/proj/python/patchsets/pypy${PYVER}/${PATCHSET}.tar.xz
+"
+S="${WORKDIR}/${MY_P}-src"
+
+LICENSE="MIT"
+SLOT="${PV%_p*}"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+IUSE="+jit low-memory ncurses cpu_flags_x86_sse2"
+
+RDEPEND="
+ app-arch/bzip2:0=
+ dev-libs/expat:0=
+ dev-libs/libffi:0=
+ >=virtual/zlib-1.1.3:=
+ virtual/libintl:0=
+ ncurses? ( sys-libs/ncurses:0= )
+ !dev-lang/pypy3-exe-bin:${SLOT}
+"
+DEPEND="
+ ${RDEPEND}
+"
+BDEPEND="
+ || (
+ dev-lang/pypy:2.7
+ dev-python/pypy
+ )
+ virtual/pkgconfig
+"
+
+check_env() {
+ if use low-memory; then
+ CHECKREQS_MEMORY="1750M"
+ use amd64 && CHECKREQS_MEMORY="3500M"
+ else
+ CHECKREQS_MEMORY="3G"
+ use amd64 && CHECKREQS_MEMORY="6G"
+ fi
+
+ check-reqs_pkg_pretend
+}
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && check_env
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && check_env
+}
+
+src_prepare() {
+ local PATCHES=(
+ "${WORKDIR}/${PATCHSET}"
+ )
+ default
+}
+
+src_configure() {
+ tc-export CC
+
+ local jit_backend
+ if use jit; then
+ jit_backend='--jit-backend='
+
+ # We only need the explicit sse2 switch for x86.
+ # On other arches we can rely on autodetection which uses
+ # compiler macros. Plus, --jit-backend= doesn't accept all
+ # the modern values...
+
+ if use x86; then
+ if use cpu_flags_x86_sse2; then
+ jit_backend+=x86
+ else
+ jit_backend+=x86-without-sse2
+ fi
+ else
+ jit_backend+=auto
+ fi
+ fi
+
+ local args=(
+ --no-shared
+ $(usex jit -Ojit -O2)
+
+ ${jit_backend}
+
+ pypy/goal/targetpypystandalone
+ --withmod-bz2
+ $(usex ncurses --with{,out}mod-_minimal_curses)
+ )
+
+ local interp=( pypy )
+ if use low-memory; then
+ local -x PYPY_GC_MAX_DELTA=200MB
+ interp+=( --jit loop_longevity=300 )
+ fi
+
+ # translate into the C sources
+ # we're going to build them ourselves since otherwise pypy does not
+ # free up the unneeded memory before spawning the compiler
+ set -- "${interp[@]}" rpython/bin/rpython --batch --source "${args[@]}"
+ echo -e "\033[1m${@}\033[0m"
+ "${@}" || die "translation failed"
+}
+
+src_compile() {
+ emake -C "${T}"/usession*-0/testing_1
+}
+
+src_install() {
+ cd "${T}"/usession*-0 || die
+ newbin "testing_1/pypy${PYVER}-c" "pypy${PYVER}-c-${PYPY_PV}"
+ insinto "/usr/include/pypy${PYVER}/${PYPY_PV}"
+ doins *.h
+ pax-mark m "${ED}/usr/bin/pypy${PYVER}-c-${PYPY_PV}"
+}
diff --git a/dev-lang/spidermonkey/spidermonkey-140.16.0.ebuild b/dev-lang/spidermonkey/spidermonkey-140.16.0.ebuild
index 13441e316a7b..05781293a5f4 100644
--- a/dev-lang/spidermonkey/spidermonkey-140.16.0.ebuild
+++ b/dev-lang/spidermonkey/spidermonkey-140.16.0.ebuild
@@ -64,7 +64,7 @@ SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}
S="${WORKDIR}/firefox-${PV%_*}"
LICENSE="MPL-2.0"
SLOT="$(ver_cut 1)/140.11.0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm arm64 ~loong ~ppc ppc64 ~riscv x86"
IUSE="clang cpu_flags_arm_neon debug +jit test"
diff --git a/dev-lang/swig/swig-4.3.1.ebuild b/dev-lang/swig/swig-4.3.1.ebuild
index f0003666928e..870bb8253380 100644
--- a/dev-lang/swig/swig-4.3.1.ebuild
+++ b/dev-lang/swig/swig-4.3.1.ebuild
@@ -11,7 +11,7 @@ SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tar.gz"
LICENSE="GPL-3+ BSD BSD-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
IUSE="ccache doc pcre test"
# tests are automagic for many languages and quite brittle
RESTRICT="!test? ( test ) test"