diff options
-rw-r--r-- | dev-python/pypy/Manifest | 2 | ||||
-rw-r--r-- | dev-python/pypy/pypy-7.3.5_rc2.ebuild | 160 |
2 files changed, 162 insertions, 0 deletions
diff --git a/dev-python/pypy/Manifest b/dev-python/pypy/Manifest index 433d96e1c4e4..ce23a54a40e1 100644 --- a/dev-python/pypy/Manifest +++ b/dev-python/pypy/Manifest @@ -1,5 +1,7 @@ DIST pypy2.7-gentoo-patches-7.3.3_p2.tar.xz 11184 BLAKE2B b2b9b94478609372d616c65a87cbb12a07e217928beef9fac26c428f81c662ef390db3fd85bf368ffcc8c6fa3802e506412b7bebd14bdc453009008bc3459d25 SHA512 9ab8ed99b42b36e9c212683ef93f7f1fb99caecf056293ab9a5734f8b52eedec192860702baa121630558530cb5c4652f8542300ecaaaa282377ea6456618b95 DIST pypy2.7-gentoo-patches-7.3.3_p3.tar.xz 12936 BLAKE2B 7d00353f79d535044e4e2c9cb8ad06d637bca4707123a566989b0ab97ac2f22d9f631d1d5f4e32bf1e0d5202dbc31fffa8d39718963da2a4594f814b90aa8132 SHA512 818910bbe3c01399a0da361a48098a4e875ddd7d4fd50f23bc06501dae7ed5eb3ee773b0dd76d256d141ba190d55b5c725fa4d7ed8d7a9841e6be81babaf518b DIST pypy2.7-gentoo-patches-7.3.4.tar.xz 7844 BLAKE2B d06694fa085667e40ef8805c29f7ccf95b49f9de4e99e3ebfa3d69c4202a0ddcebb54c524d7d9f9ec67573a8d2ebe38fb7023d4d3ecef67afc907ecef5c16c02 SHA512 aa8ffefb5d30070ae86c1c14c55c277e39d3da66aea3a0951319158fb65e716e7fa7864e8bf5d26314d4b2a8030c766b63cad6a3663822d2875cd8cc1f3f2de5 +DIST pypy2.7-gentoo-patches-7.3.5rc2.tar.xz 5792 BLAKE2B 2380dc09be7e8dccfcc151e5c3cc5cc0aeb6a5a284b3b3fa8d12bdc0c6352d0da4fc3cb52762c1b5a38b97b3736147cb10986e0e6fdb622ff277445ba7228252 SHA512 1e269a02fc70b67fe44a8d57303a1565acbdb4b7f8065ec489b6bdd9275281e4b516fd1e01223e9635e4759a71c73be941f02e6bc561ab728d6a67e22bda47e3 DIST pypy2.7-v7.3.3-src.tar.bz2 20881821 BLAKE2B ce1ecdd1fffe40574c7662da6038b84d2bca47ab168939ef0c12be2c6348317f17a94a3026e7fa53c71601edc153aefd98f770bd148e7af07ca751c0a5fc1252 SHA512 c2b6c44fdcac5f9445fab01572f859228fc286891fd09a4ddb95d283683d805276c853ec8e61fcd04cb9ee811d0e959d19bb03fdd7442c044f28a773633122e7 DIST pypy2.7-v7.3.4-src.tar.bz2 21571561 BLAKE2B d0ac56fadec63fe7e65728c36c2aaf96fc5f54919dddbca9571a24c42a9e3e21f672f84555a18a384c4715f0489bd7aef009c0a47b635de88c472a93e2ae8d71 SHA512 4c18c2dbfbf0cc1034bea773828204df77aec7ef82119fb94e5cb762ce1783e00ad70e99d1432b4948dc132e726bdc6015f4a5bf10a5b10415bcfe99da2ecd17 +DIST pypy2.7-v7.3.5rc2-src.tar.bz2 21561927 BLAKE2B 1fd8aeba0698c95015716109d6a3aec74f95d1a4faea130ffe872b43d0ef8e1e8f8b742aeae6048ab596c5b78634e83c83c95ce3ed047d068dae7bddc02e1281 SHA512 d1d4b45c29c5e4c1735744b4aac46c87787bda7db496c8865e099e669f666f223ed9c014f3637065bb7762eda39a0116bab54078cf10ce8fbd8505d1ab952575 diff --git a/dev-python/pypy/pypy-7.3.5_rc2.ebuild b/dev-python/pypy/pypy-7.3.5_rc2.ebuild new file mode 100644 index 000000000000..82edf15baf9d --- /dev/null +++ b/dev-python/pypy/pypy-7.3.5_rc2.ebuild @@ -0,0 +1,160 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit pax-utils python-utils-r1 + +PYPY_PV=${PV%_p*} +MY_P=pypy2.7-v${PYPY_PV/_} +PATCHSET="pypy2.7-gentoo-patches-${PV/_}" + +DESCRIPTION="A fast, compliant alternative implementation of the Python language" +HOMEPAGE="https://www.pypy.org/" +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" +# pypy -c 'import sysconfig; print sysconfig.get_config_var("SOABI")' +SLOT="0/73" +KEYWORDS="" +IUSE="bzip2 gdbm +jit ncurses sqlite tk" + +RDEPEND=" + || ( + >=dev-python/pypy-exe-${PV}:${PYPY_PV}[bzip2?,ncurses?] + >=dev-python/pypy-exe-bin-${PV}:${PYPY_PV} + ) + 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-bin-7.3.0:0" +DEPEND="${RDEPEND}" + +src_prepare() { + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + ) + default + + sed -e "s^@EPREFIX@^${EPREFIX}^" \ + -i lib-python/2.7/distutils/command/install.py || die +} + +src_compile() { + # copy over to make sys.prefix happy + cp -p "${BROOT}"/usr/lib/pypy2.7/pypy-c-${PYPY_PV} pypy-c || die + cp -p "${BROOT}"/usr/lib/pypy2.7/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 + + einfo "Generating caches and CFFI modules ..." + + # Generate Grammar and PatternGrammar pickles. + ./pypy-c -c "import lib2to3.pygram, lib2to3.patcomp; lib2to3.patcomp.PatternCompiler()" \ + || die "Generation of Grammar and PatternGrammar pickles failed" + + # Generate cffi modules + # Please keep in sync with pypy/tool/build_cffi_imports.py! +#cffi_build_scripts = { +# "_ssl": "_ssl_build.py", +# "sqlite3": "_sqlite3_build.py", +# "audioop": "_audioop_build.py", +# "tk": "_tkinter/tklib_build.py", +# "curses": "_curses_build.py" if sys.platform != "win32" else None, +# "syslog": "_syslog_build.py" if sys.platform != "win32" else None, +# "gdbm": "_gdbm_build.py" if sys.platform != "win32" else None, +# "pwdgrp": "_pwdgrp_build.py" if sys.platform != "win32" else None, +# "resource": "_resource_build.py" if sys.platform != "win32" else None, + cffi_targets=( 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 + + # 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 + + local ignored_tests=( + # network + --ignore=lib-python/2.7/test/test_urllibnet.py + --ignore=lib-python/2.7/test/test_urllib2net.py + # lots of free space + --ignore=lib-python/2.7/test/test_zipfile64.py + ) + + ./pypy-c ./pypy/test_all.py --pypy=./pypy-c -vv \ + "${ignored_tests[@]}" lib-python || die +} + +src_install() { + local dest=/usr/lib/pypy2.7 + einfo "Installing PyPy ..." + dosym pypy-c-${PYPY_PV} "${dest}/pypy-c" + insinto "${dest}" + # preserve mtimes to avoid obsoleting caches + insopts -p + doins -r include lib_pypy lib-python + + # replace copied headers with symlinks + for x in "${BROOT}"/usr/lib/pypy2.7/include/${PYPY_PV}/*; do + dosym "${PYPY_PV}/${x##*/}" "${dest}/include/${x##*/}" + done + + dosym ../lib/pypy2.7/pypy-c /usr/bin/pypy + dodoc README.rst + + if ! use gdbm; then + rm -r "${ED}${dest}"/lib_pypy/gdbm.py \ + "${ED}${dest}"/lib-python/*2.7/test/test_gdbm.py || die + fi + if ! use sqlite; then + rm -r "${ED}${dest}"/lib-python/*2.7/sqlite3 \ + "${ED}${dest}"/lib_pypy/_sqlite3.py \ + "${ED}${dest}"/lib-python/*2.7/test/test_sqlite.py || die + fi + if ! use tk; then + rm -r "${ED}${dest}"/lib-python/*2.7/{idlelib,lib-tk} \ + "${ED}${dest}"/lib_pypy/_tkinter \ + "${ED}${dest}"/lib-python/*2.7/test/test_{tcl,tk,ttk*}.py || die + fi + + local -x EPYTHON=pypy + 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 + + echo "EPYTHON='${EPYTHON}'" > epython.py || die + python_moduleinto /usr/lib/pypy2.7/site-packages + python_domodule epython.py + + einfo "Byte-compiling Python standard library..." + python_optimize "${ED}${dest}" + + # remove to avoid collisions + rm "${PYTHON}" || die +} |