commit:     63eb3421cece1d55055e4f4e6f89b0fd5e86b4e4
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Feb 14 08:05:18 2019 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Feb 14 22:06:52 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=63eb3421

dev-python/pypy: Bump to 7.0.0

Bump to the new 7.0.0 release, and update CPython patchset.  Upstream
has apparently started using /usr/lib/pypy2.7 as package location
independently of prefix, so our patches stopped being necessary (but we
need subslot bump to move everything).  Thanks to Sander Sweers
for the early notification and research on the new release.

Bug: https://bugs.gentoo.org/677398
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/pypy/Manifest          |   2 +
 dev-python/pypy/pypy-7.0.0.ebuild | 282 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 284 insertions(+)

diff --git a/dev-python/pypy/Manifest b/dev-python/pypy/Manifest
index 40d382a050f..b80b41a599b 100644
--- a/dev-python/pypy/Manifest
+++ b/dev-python/pypy/Manifest
@@ -1,2 +1,4 @@
 DIST pypy2-v6.0.0-src.tar.bz2 19741694 BLAKE2B 
55f5000e590613b516b12c3682a658fe6a17fbe264be3d61a81698cdf098b39177cf4355eb3f28980209c7a0e005498201cbad8884e3aa02cc86a228d1552046
 SHA512 
d3bdcd65fc83f2fda3203a604733fe6765049a17cca2715cd6045dc302a6159b4741a821c53fa4c97acf7297cef4c62e941a6a6eb7f8a253a93a28dcf2aa2ca0
+DIST pypy2.7-v7.0.0-src.tar.bz2 19811330 BLAKE2B 
38089896934d79d2b3f5813cc9dae23b0534d9d312871b22336a277d5a15b82d748f66f896558cfdb45a23004944a648436e89ae36fadc107930e7b99963e12b
 SHA512 
7fb5682ee4226af51008f50a81c922e44c231410fe36b7656efa20f22c855ba30a01bc96ee897b4c7a02941d37a405c922b09855977313878e34aaad6bf023dc
 DIST python-gentoo-patches-2.7.14-0.tar.xz 13428 BLAKE2B 
0048e48ddaaa4bef08451354fde95a123042880f26dddc9267c7f9a90fd8abb40955e26ee8c9dfc5a1165556bb3e11585b27288e635d42a4000dd3d7654c41ad
 SHA512 
6da5b52065752b54e9215d0f0809c75167dc3690d0e94fa21dd7595626925bc5c1dd065d31b3bd696d7087f3986de145d3a335a29eb7bd77442637a7ec2863c1
+DIST python-gentoo-patches-2.7.15.tar.xz 16208 BLAKE2B 
5739c2b3a236d48f8e33f0fe6515bfe7a8f99096f6223b402653988feac2513d37d26b6e40e5e049852f42657358170e468ca60097e0e2294e760787c12ad591
 SHA512 
687fd008d1d41b1e65ce5417f6f6aba84ffd42f7af44ef97c03a7806b28e6888f8df043a0c15187a8b229cc17642853e6feb25494db97f4d10f8a66f8ebcbcca

diff --git a/dev-python/pypy/pypy-7.0.0.ebuild 
b/dev-python/pypy/pypy-7.0.0.ebuild
new file mode 100644
index 00000000000..b3575616959
--- /dev/null
+++ b/dev-python/pypy/pypy-7.0.0.ebuild
@@ -0,0 +1,282 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python2_7 pypy )
+inherit check-reqs pax-utils python-any-r1 toolchain-funcs
+
+# note: remember to update this to newest dev-lang/python:2.7 on bump
+CPY_PATCHSET_VERSION="2.7.15"
+MY_P=pypy2.7-v${PV}
+
+DESCRIPTION="A fast, compliant alternative implementation of the Python 
language"
+HOMEPAGE="http://pypy.org/";
+SRC_URI="https://bitbucket.org/pypy/pypy/downloads/${MY_P}-src.tar.bz2
+       
https://dev.gentoo.org/~floppym/python/python-gentoo-patches-${CPY_PATCHSET_VERSION}.tar.xz";
+
+LICENSE="MIT"
+# pypy -c 'import sysconfig; print sysconfig.get_config_var("SOABI")'
+# pypy 7.0.0: install directory changed to 'pypy2.7'
+SLOT="0/41-py27"
+KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="bzip2 gdbm +jit libressl low-memory ncurses sandbox sqlite 
cpu_flags_x86_sse2 test tk"
+
+RDEPEND=">=sys-libs/zlib-1.1.3:0=
+       virtual/libffi:0=
+       virtual/libintl:0=
+       dev-libs/expat:0=
+       !libressl? ( dev-libs/openssl:0=[-bindist] )
+       libressl? ( dev-libs/libressl:0= )
+       bzip2? ( app-arch/bzip2:0= )
+       gdbm? ( sys-libs/gdbm:0= )
+       ncurses? ( sys-libs/ncurses:0= )
+       sqlite? ( dev-db/sqlite:3= )
+       tk? (
+               dev-lang/tk:0=
+               dev-tcltk/tix:0=
+       )
+       !dev-python/pypy-bin:0"
+# don't enforce the dep on pypy with USE=low-memory since it's going
+# to cause either collisions or circular dep on itself
+DEPEND="${RDEPEND}
+       !low-memory? (
+               || (
+                       dev-python/pypy
+                       dev-python/pypy-bin
+                       (
+                               dev-lang/python:2.7
+                               
dev-python/pycparser[python_targets_python2_7(-),python_single_target_python2_7(+)]
+                       )
+               )
+       )"
+
+S="${WORKDIR}/${MY_P}-src"
+
+check_env() {
+       if use low-memory; then
+               if ! python_is_installed pypy; then
+                       eerror "USE=low-memory requires a (possibly old) 
version of dev-python/pypy"
+                       eerror "or dev-python/pypy-bin being installed. Please 
install it using e.g.:"
+                       eerror
+                       eerror "  $ emerge -1v dev-python/pypy-bin"
+                       eerror
+                       eerror "before attempting to build 
dev-python/pypy[low-memory]."
+                       die "dev-python/pypy-bin (or dev-python/pypy) needs to 
be installed for USE=low-memory"
+               fi
+
+               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() {
+       if [[ ${MERGE_TYPE} != binary ]]; then
+               check_env
+
+               if python_is_installed pypy; then
+                       if [[ ! ${EPYTHON} || ${EPYTHON} == pypy ]] || use 
low-memory; then
+                               einfo "Using already-installed PyPy to perform 
the translation."
+                               local EPYTHON=pypy
+                       else
+                               einfo "Using ${EPYTHON} to perform the 
translation. Please note that upstream"
+                               einfo "recommends using PyPy for that. If you 
wish to do so, please unset"
+                               einfo "the EPYTHON variable."
+                       fi
+               fi
+
+               python-any-r1_pkg_setup
+       fi
+}
+
+src_prepare() {
+       eapply 
"${FILESDIR}/1.9-distutils.unixccompiler.UnixCCompiler.runtime_library_dir_option.patch"
+       eapply "${FILESDIR}"/5.9.0-shared-lib.patch     # 517002
+
+       # apply CPython stdlib patches
+       pushd lib-python/2.7 > /dev/null || die
+       # TODO: cpy turkish locale patch now fixes C code
+       # probably needs better port to pypy, if it is broken there
+       eapply "${FILESDIR}"/5.8.0_all_distutils_cxx.patch
+       eapply -p2 "${WORKDIR}"/patches/0011-use_pyxml.patch
+       popd > /dev/null || die
+
+       eapply_user
+}
+
+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=(
+               --shared
+               $(usex jit -Ojit -O2)
+               $(usex sandbox --sandbox '')
+
+               ${jit_backend}
+
+               pypy/goal/targetpypystandalone
+       )
+
+       # Avoid linking against libraries disabled by use flags
+       local opts=(
+               bzip2:bz2
+               ncurses:_minimal_curses
+       )
+
+       local opt
+       for opt in "${opts[@]}"; do
+               local flag=${opt%:*}
+               local mod=${opt#*:}
+
+               args+=(
+                       $(usex ${flag} --withmod --withoutmod)-${mod}
+               )
+       done
+
+       local interp=( "${PYTHON}" )
+       if use low-memory; then
+               interp=( env PYPY_GC_MAX_DELTA=200MB
+                       "${PYTHON}" --jit loop_longevity=300 )
+       fi
+
+       # translate into the C sources
+       # we're going to make 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
+
+       # copy back to make sys.prefix happy
+       cp -p "${T}"/usession*-0/testing_1/{pypy-c,libpypy-c.so} . || die
+       pax-mark m pypy-c libpypy-c.so
+
+       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 = {
+#    "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=( 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 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
+               # no module named 'worker' -- a lot
+               --ignore=lib-python/2.7/test/test_xpickle.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 ..."
+       exeinto "${dest}"
+       doexe pypy-c libpypy-c.so
+       pax-mark m "${ED%/}${dest}/pypy-c" "${ED%/}${dest}/libpypy-c.so"
+       insinto "${dest}"
+       # preserve mtimes to avoid obsoleting caches
+       insopts -p
+       doins -r include lib_pypy lib-python
+       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 PYTHON=${ED%/}${dest}/pypy-c
+       # we can't use eclass function since PyPy is dumb and always gives
+       # paths relative to the interpreter
+       local PYTHON_SITEDIR=${EPREFIX}/usr/lib/pypy2.7/site-packages
+       python_export pypy EPYTHON
+
+       echo "EPYTHON='${EPYTHON}'" > epython.py || die
+       python_domodule epython.py
+
+       einfo "Byte-compiling Python standard library..."
+
+       # compile the installed modules
+       python_optimize "${ED%/}${dest}"
+}

Reply via email to