diff options
author | V3n3RiX <venerix@koprulu.sector> | 2024-10-22 04:04:46 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2024-10-22 04:04:46 +0100 |
commit | a15e8dc7444560123d7d4be1bccb19afd5b611d0 (patch) | |
tree | 6e26ee0323c09494a66d0f78c4b81e305bb0d096 /dev-lang | |
parent | 3dc4de6331223493015f198dc61854af604da86c (diff) |
gentoo auto-resync : 22:10:2024 - 04:04:46
Diffstat (limited to 'dev-lang')
-rw-r--r-- | dev-lang/Manifest.gz | bin | 21828 -> 21986 bytes | |||
-rw-r--r-- | dev-lang/arc/Manifest | 2 | ||||
-rw-r--r-- | dev-lang/arc/arc-3.2-r1.ebuild (renamed from dev-lang/arc/arc-3.2.ebuild) | 26 | ||||
-rw-r--r-- | dev-lang/elixir/Manifest | 2 | ||||
-rw-r--r-- | dev-lang/elixir/elixir-1.17.3.ebuild | 39 | ||||
-rw-r--r-- | dev-lang/pypy/Manifest | 7 | ||||
-rw-r--r-- | dev-lang/pypy/metadata.xml | 32 | ||||
-rw-r--r-- | dev-lang/pypy/pypy-2.7.7.3.17.ebuild | 315 | ||||
-rw-r--r-- | dev-lang/pypy/pypy-3.10.7.3.17_p1.ebuild | 238 |
9 files changed, 649 insertions, 12 deletions
diff --git a/dev-lang/Manifest.gz b/dev-lang/Manifest.gz Binary files differindex 876799fb0105..5ab623eba69c 100644 --- a/dev-lang/Manifest.gz +++ b/dev-lang/Manifest.gz diff --git a/dev-lang/arc/Manifest b/dev-lang/arc/Manifest index c956e8d59481..6215e04faa55 100644 --- a/dev-lang/arc/Manifest +++ b/dev-lang/arc/Manifest @@ -1,3 +1,3 @@ DIST arc-3.2.tar 276480 BLAKE2B a25695e4b90160d03e534bc7dcff194e922b8463ed9984523ee89fca7d6423e7f0f296118fa3f6046d988e6047e87dc609a56869e19d09435403320b5882f2b8 SHA512 f79cdb9b591582683e18afce24da935e8ab04ba837c5d19ae971bf9ec4abc038e6aeb712f36ffd1111e8d9fbb7a09889425294a15d546e9e6226b296294cc2a1 -EBUILD arc-3.2.ebuild 810 BLAKE2B b6732aad43a5f90804bb258416c84c13482f08b44aa64f6421c7fe46550f8ef87cd84a28232a3d996aa79f89200f4827b7c7951933f9b6e3eaf5b7695bdbc7e6 SHA512 edc77cb36a87ec0cc14f4bfc581dc365468fe917dfa1cbd7d949b02ca09f87322fce997565e3220589cb54ab60e43b3ceed658f79ec3b26ac4649a0724ba8d09 +EBUILD arc-3.2-r1.ebuild 836 BLAKE2B bb1cfcf808d6e58c8a75a365aa032bdb0ce591af1b639f2ff2c594d7abaca5a72ae0921781508c584e7f4eb372f88eb21482b253567f9161d6f3a257478f73d9 SHA512 c50619863a09456d47962069ea2efdf2198a440ee23a03504c43e6e9fbca095eb55b505c731e2789002b545cd257bb291eefcbfde785aad84c33a15e97dab924 MISC metadata.xml 716 BLAKE2B 953d098bdd577c7337a96cf18f762d0d0acb8e0286a65b901b22a2f48b69b1d207b193ab44b294065b5e7bc4aac7d2b207b763ff290aef2dc42fe40c282e3d6e SHA512 3d9cc948dc8a020317462c28d5725aedfc3357f0de3e0d24accd52441d3060411aa8d6e33225bacd81deb34dca03da17d413fa91e92b849ea8c02cd4032d9db4 diff --git a/dev-lang/arc/arc-3.2.ebuild b/dev-lang/arc/arc-3.2-r1.ebuild index e9655cb6f6ca..2b085650c790 100644 --- a/dev-lang/arc/arc-3.2.ebuild +++ b/dev-lang/arc/arc-3.2-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2021 Gentoo Authors +# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -16,24 +16,28 @@ KEYWORDS="~amd64 ~x86" RDEPEND=" !app-arch/arc - dev-scheme/racket:= + dev-scheme/racket:=[-minimal] " -DEPEND="${RDEPEND}" +DEPEND=" + ${RDEPEND} +" + +DOCS=( copyright how-to-run-news ) src_compile() { - # byte-compile some racket modules - local mod + # Byte-compile Racket modules. + local mod="" for mod in ac brackets ; do - raco make --vv ./${mod}.scm || die "raco failed to compile ${mod}" + raco make --vv "./${mod}.scm" || die "raco failed to compile ${mod}" done } src_install() { - dodoc copyright how-to-run-news - rm copyright how-to-run-news || die + einstalldocs + rm "${DOCS[@]}" || die - insinto /usr/share/${PN} - doins -r * + insinto "/usr/share/${PN}" + doins -r ./* - make_wrapper ${PN} "racket --load ./as.scm" /usr/share/${PN} + make_wrapper "${PN}" "racket --load ./as.scm" "/usr/share/${PN}" } diff --git a/dev-lang/elixir/Manifest b/dev-lang/elixir/Manifest index 29ba4272cb9e..e5eb268040ad 100644 --- a/dev-lang/elixir/Manifest +++ b/dev-lang/elixir/Manifest @@ -10,10 +10,12 @@ DIST elixir-1.15.8.tar.gz 3152250 BLAKE2B 5a4eeca0d2a63fa5dbf322f79bc3373a56a639 DIST elixir-1.16.2.tar.gz 3357093 BLAKE2B 61ba738542d33e827f7352b7f0a27aa76fc06f037d35c56efd96be1c26e28be90b6f2998cd2cac0090e5da771f6c45ad12d68644e36a214de36c9e26d4ac9686 SHA512 1e90adcd5d0512d4b394276e431f3987fc61a3f6191cd5c1d0f7fdd82baba99747aa553a3583e0813ffb5a48a32ce02a24e27b641f86a61e421722a802a850c1 DIST elixir-1.16.3.tar.gz 3360376 BLAKE2B ac6cdc16f193560e18338bd3e45a4f88c7d4398969336062551477dfdafaab8ada60ae64c856647b36967205849427413938da87f746bd52d03d78e141ba5a03 SHA512 1511fb78bdcc50850cbf91007ed11c6a89e947d0a743c1e9ed30e1c93c1b47b5377fced17eeb66ac511d4f151d2e00ef2ecc6fb425d0d4afe2451be41a6ba6ee DIST elixir-1.17.2.tar.gz 3255067 BLAKE2B b2902c41262303fe33efeb22f8fe6cf76596f7d9894b018c0d45eaf1858f7d2ffaa1481659ff290c71807b03c5f2ebb17160d7420133d440957f344df6d01126 SHA512 f9d4983c3e7bd054a76bfe0dfa4aea483a4dd84ada432ae5a144167ff8d268499077704214eaaecfda84469c2f747a3594258ca95a7955bffde0c7b0f65985f2 +DIST elixir-1.17.3.tar.gz 3256595 BLAKE2B c016857f74d65de5afcef6d1284b76fc529a542e5cd0dded73701cbdad93f281529a545af1c5a905cb116a3028472703acfdc21ae070f9255bdfd6d5c09bf7a0 SHA512 084514d1362b52e85c0b4d92b8d18c6d2e9fddb4e4eaf4467f8b1c0985f9ceca1b74a0478581d91164935ae0f49610771860c674e080137e52aadc65b666911b EBUILD elixir-1.14.5-r2.ebuild 1118 BLAKE2B 74b30f3045dc0c727661a5f876f03c1e248f7d6fd6495a69e0fca48c630337c7a197069fad6e0be8daa99726b7830e4e5f38b0202af6a444c86700a9a9b8bda3 SHA512 4ab546f1918461f7e8fce2132b49b7bf5a4f1b9646b44b96aeb2d81b43fdc67bd6f057e49114bc5aab762c85c6b7e4816b0a96489dfe01c1c4e85695b941a27f EBUILD elixir-1.15.7.ebuild 1013 BLAKE2B d3a57e16376d96cf438be208fcc63aa6713fc5c85c370765e56a56b2291477aadd73b680eff630f3ea604248ce9797d49181f2534f8f5b934e43360a21133875 SHA512 cda24844929eafabeed65b7d121eec63b1499732d631adf33b50d302ac5dbd443804dcaa90dd088f38f95fe84e69d9f6b7cf7b84aa6cf9f2cf2ab80b05654789 EBUILD elixir-1.15.8.ebuild 1016 BLAKE2B 38ed745bb173bb1cbc7a04cde4eec072618d99020f66ea624b71ed14fb58be9d5368d9aa03033c9126130626a00cf6a1f907c9e41a27147fc85c81eaff3a6ec9 SHA512 db38f2e8d9b7aff16020b1a84d4b898e4444c49b5e39d54f2f361befe17ccfabecced60323ab6bbb8b613007abdd2dd3a6a3a409f058d8f73806fc98e1daf45f EBUILD elixir-1.16.2.ebuild 1066 BLAKE2B 3ff9540b5645b03ae3eba671d803a04340d8c9efabe4053ae7432db6bee88c6931a9a397ae1eb050665e67909f97b197afadafc8ffcaeb7761e0f752a557e7ba SHA512 ea54b6269731ecfa6e64e161d70f00e83db7cb09c18c640ac0064e6904c9a352c7fa2ed8a7998874ce6f7f581916dcea3af4a5cef287094c5a13d13c4bec834b EBUILD elixir-1.16.3.ebuild 1002 BLAKE2B f2b1477a5ea6b1c324c326cb576f7c82e5985bfac2fe49d13ab761716ced0dd3009953201d7fc9f1eb05d2708d13487ba0b89621031db2d5fbd35fd6a8d6b068 SHA512 6961f6a66309b63406e202de3e475e0607dd2a8793b1183d96b5166e76d7aee86dce7413c005bedea03191336917de4911686f2f6856b6e2044f72c079e462cf EBUILD elixir-1.17.2.ebuild 999 BLAKE2B 6eb05e0f3ddd4db24227957791eb26a21d690cbfb5733898f49dfa549e68f356e10a230ed3c9adcd145de7632d98b24bb88521bb348a808369a9acbf5a2aa3f1 SHA512 ad871091ab8a436937a88c4ae4dc4b733571cf7c5d90e1e5bcf583cc5b6304899abb3102e43b528900a77a1bdea9d5b4240825d3a7b86e50feae45009c6071da +EBUILD elixir-1.17.3.ebuild 1002 BLAKE2B c382db1d4be9ba4bb6bba5bfca16d62a57d109ad57bce94dda71fd68ada1b9cdfb2904849401c36c7b7f7e7efa2455eeab0b4d6a5069016617ccada59c7999f2 SHA512 e9d531d7f481d85c1b0a4530b5088ed608204f89fa28f4eaa0e5b0760d507b8d247606e956af347f5fb3ca6c9931697a8fdf97a30edfc0500138817fdb8da3a4 MISC metadata.xml 724 BLAKE2B ae59dba7153a9cdbeb0ed45acf54cf733f07ebc1b43896f88ff09686ecbdd56553e92f7733e5f556d01e622cadb85a24da879799b0f742d7e257425db1f300b4 SHA512 43cc4435aa89e2ba8edaf8f4cead814c514fac07a7c0500f3f7dfe35d2da6f75f835df0d21d862be6dcbffbd9c6e5ea32b21296048ec903c1491ccfd4854316b diff --git a/dev-lang/elixir/elixir-1.17.3.ebuild b/dev-lang/elixir/elixir-1.17.3.ebuild new file mode 100644 index 000000000000..46bdb92ad285 --- /dev/null +++ b/dev-lang/elixir/elixir-1.17.3.ebuild @@ -0,0 +1,39 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="Elixir programming language" +HOMEPAGE="https://elixir-lang.org" +SRC_URI="https://github.com/elixir-lang/elixir/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="Apache-2.0 ErlPL-1.1" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~riscv ~sparc ~x86" +IUSE="test" + +RESTRICT="!test? ( test )" + +# https://hexdocs.pm/elixir/compatibility-and-deprecations.html#between-elixir-and-erlang-otp +DEPEND=" + >=dev-lang/erlang-25:0=[ssl] + <dev-lang/erlang-28 +" +# 'mix' tool collides with sci-biology/phylip, bug #537514 +RDEPEND="${DEPEND} + !!sci-biology/phylip +" +DEPEND+=" + test? ( dev-vcs/git ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-1.9.1-disable-network-tests.patch + "${FILESDIR}"/${PN}-1.10.3-no-Q.patch + "${FILESDIR}"/${PN}-1.10.3-epmd-daemon.patch +) + +src_install() { + emake DESTDIR="${D}" LIBDIR="$(get_libdir)" PREFIX="${EPREFIX}/usr" install + dodoc README.md CHANGELOG.md CODE_OF_CONDUCT.md +} diff --git a/dev-lang/pypy/Manifest b/dev-lang/pypy/Manifest new file mode 100644 index 000000000000..b370f9a647d7 --- /dev/null +++ b/dev-lang/pypy/Manifest @@ -0,0 +1,7 @@ +DIST pypy2.7-gentoo-patches-7.3.17.tar.xz 5324 BLAKE2B 866f172a6df6f0e94a98c611b37ae58635623e33a47619a5e44658d3908337a3f9029ff7de6997f760c3f1679fc83bfc6ddfb66852c492a581b3336b5eec3ed2 SHA512 6ce5266d0748f3c18a5546aa2bd8479ecb45923eb7df8a140a195e7f7b44999b9167ffdd44f7fd789ddd3a62cd77cb917863b0144180a1127befce1f290e650a +DIST pypy2.7-v7.3.17-src.tar.bz2 19907140 BLAKE2B de62ebc4e8102867effdecddca64c19c40458b112a6a56ac0c95247047b9f5437a5da68dffb51c14c21bce463c2ca489c6e6a4f86e8cc597b57df2eca707081e SHA512 82b2b9dbf0ea32c405ddc53d98a3a7a153f494d286e8719a0c40960168aadc0f49c3b313416488338f7f51c8fdb58120de41b1d47a8c8eda7db6d4ec4273b4eb +DIST pypy3.10-gentoo-patches-7.3.17_p1.tar.xz 18104 BLAKE2B 4b6c8c012d34b7ead8f7499edbe4292f21d2d7437694341de0bfb5f74d0717a11eb1c302a60baeb3ab123851a2436657458dad47c2b86a81218eea12d6aa9344 SHA512 73e0733f07be79f444b2fbf18ca7dcad6a76368cb8c185eb630d82e6886ed909548bc1779bf618588e34a572b5d48be0f9a86fc5758d302cf3ff0e94649b4815 +DIST pypy3.10-v7.3.17-src.tar.bz2 23350562 BLAKE2B 0a7a091976b352de61057f238fa386f767dd4d2fbcdcc0b4376066c20c2ad35d3818fa6e9e163ab5fd341856802e8ad1e2891decf5948c13cdb26726cd42019e SHA512 46e30845bbc73cf56f5033a24d3583253ce198522f3a28ae4e789884063ba167d401fc08ae7fc8c7769feed9cd942a8ab38961c8b8794d7fae8f9955479faa96 +EBUILD pypy-2.7.7.3.17.ebuild 7392 BLAKE2B 78ac70ad3efed0c24bd0d1fb0082f6da376e1e97eba050d967ea49d4cd83b2e00edddcaf6faf95da7e134aca743255ce7e7adccd693d984a685fdb21458b15c6 SHA512 7fc70856f2ab6ea40710f0b0ad23ff046abb377af412536eabe75b6235fb597065dcf63597032fd27f5f596681606e68d46ca37504fef9e252557f5f663f9351 +EBUILD pypy-3.10.7.3.17_p1.ebuild 7142 BLAKE2B b5e91d74131969730bdd91d4bf2055f7e7a213d2916b27ac3fe395b563d6e2b3c5e8a5c59fea3dc8bbee196c9b6a9163037836f07ea86a4ad1bbcf31733279bd SHA512 0fc1f19af204b70f13cbf1f5e1e6d864cea64fee85a0cd41b638a75d8c2f3dc91c840406a121e64dc40ebe79dc1baf210da74fca0c011128f4e3d7b3e9fffdab +MISC metadata.xml 1124 BLAKE2B f1d09d26175cf20d1440a9a83352cf6f2f2e514d35d95116caf4a5ee86547f0165a6369e7a6b129ded75d28ba5a0c1c8f4da7d664d7c1e3c1e95153593057b3c SHA512 ae95400c9a1efc75372201c2353b128302355d1d087094953d73c325fa72bc24662d31c7287ae6a2583448ac345bb60744ac19391e07f8da8ef0327627e0e462 diff --git a/dev-lang/pypy/metadata.xml b/dev-lang/pypy/metadata.xml new file mode 100644 index 000000000000..14995e7de68c --- /dev/null +++ b/dev-lang/pypy/metadata.xml @@ -0,0 +1,32 @@ +<?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> + <upstream> + <remote-id type="github">pypy/pypy</remote-id> + </upstream> + <use> + <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="full-stdlib"> + Install complete stdlib as necessary to use PyPy for general + purpose programs. By default, only a limited subset that is + used when building PyPy3 executables is installed. Note + that PyPy2.7's stdlib contains multiple known vulnerabilities. + </flag> + <flag name="symlink"> + Install "pypy3" symlink, making this PyPy slot the default + PyPy3 implementation that is used for building Gentoo packages. + </flag> + <flag name="test-install"> + Install the test suite packages, that are required to run + tests in a few reverse dependencies. + </flag> + </use> +</pkgmetadata> diff --git a/dev-lang/pypy/pypy-2.7.7.3.17.ebuild b/dev-lang/pypy/pypy-2.7.7.3.17.ebuild new file mode 100644 index 000000000000..1d7d43cd1b9c --- /dev/null +++ b/dev-lang/pypy/pypy-2.7.7.3.17.ebuild @@ -0,0 +1,315 @@ +# Copyright 1999-2024 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.bz2 + https://buildbot.pypy.org/pypy/${MY_P}-src.tar.bz2 + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz +" +S="${WORKDIR}/${MY_P}-src" + +LICENSE="MIT" +# pypy -c 'import sysconfig; print sysconfig.get_config_var("SOABI")' +SLOT="${PYVER}/73" +KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86 ~amd64-linux ~x86-linux" +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#pypy-} == ${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) + 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.10.7.3.17_p1.ebuild b/dev-lang/pypy/pypy-3.10.7.3.17_p1.ebuild new file mode 100644 index 000000000000..788436ddabcc --- /dev/null +++ b/dev-lang/pypy/pypy-3.10.7.3.17_p1.ebuild @@ -0,0 +1,238 @@ +# Copyright 1999-2024 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.bz2 + https://buildbot.pypy.org/pypy/${MY_P}-src.tar.bz2 + https://dev.gentoo.org/~mgorny/dist/python/${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}/pypy310-pp73-384" +KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86 ~amd64-linux ~x86-linux" +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-python/pypy3_10-exe-${PYPY_PV}:${PYPY_PV}[bzip2(+),ncurses?] + >=dev-python/pypy3_10-exe-bin-${PYPY_PV}:${PYPY_PV} + ) + dev-lang/python-exec[python_targets_pypy3(-)] + dev-libs/openssl:0= + dev-python/gentoo-common + ensurepip? ( dev-python/ensurepip-wheels ) + gdbm? ( sys-libs/gdbm:0= ) + sqlite? ( dev-db/sqlite:3= ) + tk? ( + dev-lang/tk:0= + dev-tcltk/tix:0= + ) + !dev-python/pypy3_10 + symlink? ( + !<dev-python/pypy3-7.3.17-r100 + ) +" +DEPEND=" + ${RDEPEND} +" + +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="pypy3"' > lib-python/3/epython.py || die + + einfo "Generating caches and CFFI modules ..." + + # 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 + + # 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=a4138e48 + 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 +} + +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,sqlite3,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_sqlite.py || 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 + + # install symlinks for python-exec + local EPYTHON=pypy3 + local scriptdir=${D}$(python_get_scriptdir) + mkdir -p "${scriptdir}" || die + ln -s "../../../bin/pypy3" "${scriptdir}/python3" || die + ln -s python3 "${scriptdir}/python" || die + fi +} |