summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/pypy')
-rw-r--r--dev-python/pypy/Manifest6
-rw-r--r--dev-python/pypy/metadata.xml11
-rw-r--r--dev-python/pypy/pypy-7.3.16.ebuild306
-rw-r--r--dev-python/pypy/pypy-7.3.5_p2.ebuild160
-rw-r--r--dev-python/pypy/pypy-7.3.6_rc1.ebuild164
5 files changed, 319 insertions, 328 deletions
diff --git a/dev-python/pypy/Manifest b/dev-python/pypy/Manifest
index ee788eabeb89..07bbe9c11ef5 100644
--- a/dev-python/pypy/Manifest
+++ b/dev-python/pypy/Manifest
@@ -1,4 +1,2 @@
-DIST pypy2.7-gentoo-patches-7.3.5_p2.tar.xz 8976 BLAKE2B 4bd12fa964da45a516b6d8cee8f2b9b1cd4cac9ee2e6369de1e8be5be2abab77e60a0fdc9416a76624b22f385135659b84edf7c64aa98f59a1c94f837c7e0d20 SHA512 ab47d5a0199997501f246399c3650919cc20423cc7e9517f16d1640e1863819016a944659e10af3e8ca803060f983546603feaba7c8f4cc3fb4996506fe59919
-DIST pypy2.7-gentoo-patches-7.3.6rc1.tar.xz 7904 BLAKE2B 3a5b8efaa67d5a1b4f65a56c6256a3b1efa765079e0fb2c2d380b325175f2e8f3a7d7c4886f734374b6069b3ebf3ac63483f90ada0ece72ff5d8e5c82940c875 SHA512 820d6155e3451b22076719eb3ffc29fab74965761faeade52013d3928fd63cd00b8c5d045f0da0bc1f303a9d2998cd210cd6bec05b2ca01c8b281a61c9a4a73c
-DIST pypy2.7-v7.3.5-src.tar.bz2 21572184 BLAKE2B 388b8623c2c5de839dea0e60acc5e11a6a774b4a6cdc051691053a97fe13ec12c6735a4be64015653ef420c0d8af2c79d8faa90a7dfc3042e29f35f4e1ded6c3 SHA512 a30c666c29eec7cca7e2e52f26480958b5885cd59c6b2e3d3c0d8c1cc55c298e878fc95f88e38a4297bb3d7d1cc1f77470de958e5acfd317e1fc8bdd5d013dcb
-DIST pypy2.7-v7.3.6rc1-src.tar.bz2 21617621 BLAKE2B 659dd16920b157dae94c5d1f7a9346c7b933ec8c6a3019e36aaa6911bd01d5c9d064a75baa3d8f3df423db4d5a1de5d4f3c8fb63c8d5188d23401b07cc7611be SHA512 f8b949488c3af8acc5533d92238b7bca9ce59c24e93413e0db88094eaf58af5f92a9c9a941f3b7184d2761af2c2c4775891353df053a0762519606a4ce7ca544
+DIST pypy2.7-gentoo-patches-7.3.16.tar.xz 5312 BLAKE2B b265dd7afee097ad66bacd9df01514eed6bb30afe19410b2594ee7c2d61ababc67e11c0dd0392a0b1f81e0bc609963cde044834ab24e67d007d101b8aa8052cb SHA512 0d0309f3ed7314f6d310b0e34eedbbfdcc5a75d9bbd59b9071e567968bb10925549435776fab5bc7ec97e2b3422921dc282619427f930d89df6c7bc98ea701c1
+DIST pypy2.7-v7.3.16-src.tar.bz2 19843601 BLAKE2B 9c37a03561fcdf742eccde760f6cadcbc2e1b140dd6d3e67856cc072e0c3db85759c398f590ed44fb4e4ed2f5f7745d5589cb9a95cefcbec79f3b1be6c4956e1 SHA512 131635433e53d4d86730a3daf1ad81799a7dd1117511618cc2607ac7234ce3aa5c833400df09cbd3376a391e125d6d2ec3471f120f81a6d53700f5c3d087793c
diff --git a/dev-python/pypy/metadata.xml b/dev-python/pypy/metadata.xml
index efd7c8c21836..cfd619229f75 100644
--- a/dev-python/pypy/metadata.xml
+++ b/dev-python/pypy/metadata.xml
@@ -5,4 +5,15 @@
<email>python@gentoo.org</email>
<name>Python</name>
</maintainer>
+ <upstream>
+ <remote-id type="github">pypy/pypy</remote-id>
+ </upstream>
+ <use>
+ <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>
+ </use>
</pkgmetadata>
diff --git a/dev-python/pypy/pypy-7.3.16.ebuild b/dev-python/pypy/pypy-7.3.16.ebuild
new file mode 100644
index 000000000000..798e07131013
--- /dev/null
+++ b/dev-python/pypy/pypy-7.3.16.ebuild
@@ -0,0 +1,306 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit pax-utils
+
+PYPY_PV=${PV%_p*}
+MY_P=pypy2.7-v${PYPY_PV/_}
+PATCHSET="pypy2.7-gentoo-patches-${PV/_rc/rc}"
+
+DESCRIPTION="A fast, compliant alternative implementation of the Python language"
+HOMEPAGE="
+ https://www.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="0/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=
+ )
+"
+DEPEND="
+ ${RDEPEND}
+"
+
+src_prepare() {
+ local PATCHES=(
+ "${WORKDIR}/${PATCHSET}"
+ )
+ default
+}
+
+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
+
+ # 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/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
+
+ # broken by expat-2.4.5
+ --ignore=lib-python/2.7/test/test_minidom.py
+ --ignore=lib-python/2.7/test/test_xml_etree.py
+ --ignore=lib-python/2.7/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/pypy2.7
+ 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/pypy2.7/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/*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
+ 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/2.7 || die
+ insinto "${dest}/lib-python/2.7"
+ doins -r "${lib_py_modules[@]}"
+ cd - >/dev/null || die
+
+ cd lib-python/2.7/distutils || die
+ insinto "${dest}/lib-python/2.7/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/pypy2.7/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-python/pypy/pypy-7.3.5_p2.ebuild b/dev-python/pypy/pypy-7.3.5_p2.ebuild
deleted file mode 100644
index 090224f64c7f..000000000000
--- a/dev-python/pypy/pypy-7.3.5_p2.ebuild
+++ /dev/null
@@ -1,160 +0,0 @@
-# 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="amd64 ~arm64 ~ppc64 x86 ~amd64-linux ~x86-linux"
-IUSE="bzip2 gdbm +jit ncurses sqlite tk"
-
-RDEPEND="
- || (
- >=dev-python/pypy-exe-${PYPY_PV}:${PYPY_PV}[bzip2?,ncurses?]
- >=dev-python/pypy-exe-bin-${PYPY_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
-}
diff --git a/dev-python/pypy/pypy-7.3.6_rc1.ebuild b/dev-python/pypy/pypy-7.3.6_rc1.ebuild
deleted file mode 100644
index c4b76dcdef06..000000000000
--- a/dev-python/pypy/pypy-7.3.6_rc1.ebuild
+++ /dev/null
@@ -1,164 +0,0 @@
-# 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/_rc/rc}"
-
-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-${PYPY_PV}:${PYPY_PV}[bzip2?,ncurses?]
- >=dev-python/pypy-exe-bin-${PYPY_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
-
- # verify the subslot
- local soabi=$(./pypy-c -c 'import sysconfig; print sysconfig.get_config_var("SOABI")')
- [[ ${soabi#pypy-} == ${SLOT#*/} ]] || die "update subslot to ${soabi}"
-
- 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
-}