diff options
Diffstat (limited to 'dev-python/pypy3')
-rw-r--r-- | dev-python/pypy3/Manifest | 3 | ||||
-rw-r--r-- | dev-python/pypy3/pypy3-7.3.10_rc3.ebuild | 209 |
2 files changed, 212 insertions, 0 deletions
diff --git a/dev-python/pypy3/Manifest b/dev-python/pypy3/Manifest index c28251118ede..e0821a423851 100644 --- a/dev-python/pypy3/Manifest +++ b/dev-python/pypy3/Manifest @@ -1,4 +1,7 @@ +DIST pypy3.9-gentoo-patches-7.3.10rc3.tar.xz 8712 BLAKE2B 65c5461b4830cd8ee29512d9ce5f7ac9e629710b5177a568f52657e92eefe7d7f1ba3321bd3ee91e94bbccd090ae9b14180617b059b761b0497b1825d66e65f6 SHA512 61fe98885fdd17c03c16316930f277f804dd6a2aa70a9c51ac5287d16c0b53eac58d0db2a55b28bdea1b0ac2a04d9a408343e321f44c57037b747dd76569d3a2 DIST pypy3.9-gentoo-patches-7.3.9_p9.tar.xz 16508 BLAKE2B 30e61ebccb4949c5da6f1837df0e4474eda99c2b2262994b41ce9a5de58b543562010a28d20abb4d1c53c866d668c717802afd617efbcca142610a67cf1a48da SHA512 20d72fe0b7592f6f326faf8f989dacc4c6204203b270f033ff528bc845e68ea2092fa0a16176e91e882d028f549e6622c609e1566d3bc018b34178de76c48992 +DIST pypy3.9-v7.3.10rc3-src.tar.bz2 23453446 BLAKE2B eefedc5d49602f19c9d39f20f060ddb4f00bd49681fee64fa98a7c7a3856df7f4ae4e17e51a3fa37137d049b463855ce7e2c95abd9878665b66fc9b90a91ec6c SHA512 d831c8c716f40514e54845ec7ab6b3ecf1af74bc66504196dda251d66feff4e206c77535484ef1747dc390db2bdc2be38e9be3401831b321ea043016e42c2a27 DIST pypy3.9-v7.3.9-src.tar.bz2 26976726 BLAKE2B bf1ed21c575901abac020120aaff07ab57f1404713211b19cbd1eb4d6ffc675b7933be8c6fffc2b69ab467963d6598534cd5aa90c02feddad596611d2a6b6581 SHA512 83f8a6a2da351c190d2d224242cbc35e35529c7a8e8d842eaf5c945cbce2e172b02a340f32af3d49df8d5288370d794d5bc95fc12dd4a13d817c925abf06198a +EBUILD pypy3-7.3.10_rc3.ebuild 5677 BLAKE2B d6ccdc810cb4511ef5f3e9eb13d3ccd6ede6e28f77454a96aa3eceaa382e58de793c06ea6cf7f3cfd107982f1950d96e010dc9c9ac41e7b629f9f918ecb64cbc SHA512 5d0dd4426e5623d3cc77d7f1b3178030a2a028db8bcf337eaee05e40f74ff035a37535047bacdd4b69c9d08ac199220849b885a0c4dffb8bca9d708d8b06a0c1 EBUILD pypy3-7.3.9_p9.ebuild 5730 BLAKE2B d9d2ae7ede9d548494c0d4f14d150e28a9ad921d82fa1d0ea39289a6e8090f66c7d72de5539cd3f5f8ad30a3b7a918e42c664e1426618fc611bc5193172082f8 SHA512 ae32e79948584725dfcf36df6098d9f17402f187f26dc1c6dbeaac50134907880776cc8ad48efb2222a8eeb22f7c8516b2d2e10c6c27cb05386c09416285a8be MISC metadata.xml 531 BLAKE2B 0f727c7ced9fb24ba0dc0b41d51c177b3711de33b838bf46cfdde5d8b751de9694873c13fe8153747f2cb533c078c54f004ee84b1c3c57b6f8d62128ffb9dba2 SHA512 331b66647a58047ded4bcf1529e3ca16b21cbb37afa82d8be0a4b6ad605e17bf3f1478fad1ea3b9c970bdf5162cb41e6adcb029a261fcbf894e807998b9219f6 diff --git a/dev-python/pypy3/pypy3-7.3.10_rc3.ebuild b/dev-python/pypy3/pypy3-7.3.10_rc3.ebuild new file mode 100644 index 000000000000..ae5eeb7df0a2 --- /dev/null +++ b/dev-python/pypy3/pypy3-7.3.10_rc3.ebuild @@ -0,0 +1,209 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python2_7 ) +inherit pax-utils python-any-r1 toolchain-funcs + +PYPY_PV=${PV%_p*} +MY_P=pypy3.9-v${PYPY_PV/_rc/rc} +PATCHSET="pypy3.9-gentoo-patches-${PV/_rc/rc}" + +DESCRIPTION="A fast, compliant alternative implementation of the Python (3.9) language" +HOMEPAGE=" + https://www.pypy.org/ + https://foss.heptapod.net/pypy/pypy/ +" +SRC_URI=" + 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="0/pypy39-pp73-336" +KEYWORDS="" +IUSE="+ensurepip gdbm +jit ncurses sqlite test tk" +# many tests are failing upstream +# see https://buildbot.pypy.org/summary?branch=py3.9 +RESTRICT="test" + +RDEPEND=" + || ( + >=dev-python/pypy3-exe-${PYPY_PV}:3.9-${PYPY_PV}[bzip2(+),ncurses?] + >=dev-python/pypy3-exe-bin-${PYPY_PV}:3.9-${PYPY_PV} + ) + dev-lang/python-exec[python_targets_pypy3(-)] + dev-libs/openssl:0= + ensurepip? ( dev-python/ensurepip-wheels ) + gdbm? ( sys-libs/gdbm:0= ) + sqlite? ( dev-db/sqlite:3= ) + tk? ( + dev-lang/tk:0= + dev-tcltk/tix:0= + ) +" +DEPEND=" + ${RDEPEND} + test? ( + ${PYTHON_DEPS} + !!dev-python/pytest-forked + ) +" + +pkg_setup() { + use test && python-any-r1_pkg_setup +} + +src_prepare() { + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + ) + default + + eapply_user +} + +src_configure() { + tc-export CC +} + +src_compile() { + mkdir bin || die + # switch to the layout expected for cffi module builds + mkdir include/pypy3.9 || die + # copy over to make sys.prefix happy + cp -p "${BROOT}"/usr/bin/pypy3.9-c-${PYPY_PV} pypy3.9-c || die + cp -p "${BROOT}"/usr/include/pypy3.9/${PYPY_PV}/* include/pypy3.9/ || die + # (not installed by pypy-exe) + rm pypy/module/cpyext/include/_numpypy/numpy/README || die + mv pypy/module/cpyext/include/* include/pypy3.9/ || die + mv pypy/module/cpyext/parse/*.h include/pypy3.9/ || die + pax-mark m pypy3.9-c + + # verify the subslot + local soabi=$( + ./pypy3.9-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 Grammar and PatternGrammar pickles. + ./pypy3.9-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! + # (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 ) + 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 + ../pypy3.9-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=63d4659f + local local_cksum=$( + ../pypy3.9-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.[co]" -delete || die + find -type d -empty -delete || die +} + +src_test() { + # (unset) + local -x PYTHONDONTWRITEBYTECODE= + local -x COLUMNS=80 + + # Test runner requires Python 2 too. However, it spawns PyPy3 + # internally so that we end up testing the correct interpreter. + # (--deselect for failing doctests) + "${EPYTHON}" ./pypy/test_all.py --pypy=./pypy3.9-c -vv lib-python || die +} + +src_install() { + einfo "Installing PyPy ..." + dodir /usr/bin + dosym pypy3.9-c-${PYPY_PV} /usr/bin/pypy3.9 + dosym pypy3.9 /usr/bin/pypy3 + insinto /usr/lib/pypy3.9 + # preserve mtimes to avoid obsoleting caches + insopts -p + doins -r lib-python/3/. lib_pypy/. + insinto /usr/include + doins -r include/pypy3.9 + + # replace copied headers with symlinks + for x in "${BROOT}"/usr/include/pypy3.9/${PYPY_PV}/*; do + dosym "${PYPY_PV}/${x##*/}" "/usr/include/pypy3.9/${x##*/}" + done + + dodoc README.rst + + local dest=/usr/lib/pypy3.9 + 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 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 + + local -x EPYTHON=pypy3 + local -x PYTHON=${ED}/usr/bin/pypy3.9-c-${PYPY_PV} + # temporarily copy to build tree to facilitate module builds + cp -p "${BROOT}/usr/bin/pypy3.9-c-${PYPY_PV}" "${PYTHON}" || die + + einfo "Byte-compiling Python standard library..." + python_optimize "${ED}${dest}" + + # remove to avoid collisions + rm "${PYTHON}" || die +} |