-# Copyright 1999-2016 Gentoo Foundation
+# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=5
inherit check-reqs eutils mercurial multilib multiprocessing pax-utils \
python-any-r1 toolchain-funcs versionator
-DESCRIPTION="A fast, compliant alternative implementation of Python 3"
+CPY_PATCHSET_VERSION="3.3.5-0"
+
+DESCRIPTION="A fast, compliant alternative implementation of the Python (3.3) language"
HOMEPAGE="http://pypy.org/"
-SRC_URI=""
+SRC_URI="
+ https://dev.gentoo.org/~floppym/python-gentoo-patches-${CPY_PATCHSET_VERSION}.tar.xz"
LICENSE="MIT"
-SLOT="0/$(get_version_component_range 1-2 ${PV})"
+# XX from pypy3-XX.so module suffix
+SLOT="0/55"
KEYWORDS=""
IUSE="bzip2 gdbm +jit libressl low-memory ncurses sandbox +shadowstack sqlite cpu_flags_x86_sse2 tk"
virtual/libffi:0=
virtual/libintl:0=
dev-libs/expat:0=
- !libressl? ( dev-libs/openssl:0= )
- libressl? ( dev-libs/libressl:= )
+ !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= )
DEPEND="${RDEPEND}
low-memory? ( virtual/pypy:0 )
!low-memory? ( ${PYTHON_DEPS} )"
+# doc? ( dev-python/sphinx )
-S="${WORKDIR}/${P}-src"
+# Who would care about predictable directory names?
+S="${WORKDIR}/pypy3-v${PV%_*}-src"
pkg_pretend() {
if [[ ${MERGE_TYPE} != binary ]]; then
# apply CPython stdlib patches
pushd lib-python/3 > /dev/null || die
- epatch "${FILESDIR}"/5.2.0-distutils-c++.patch
+ epatch "${FILESDIR}"/5.2.0-distutils-c++.patch \
+ "${WORKDIR}"/patches/24_all_sqlite-3.8.4.patch
popd > /dev/null || die
epatch_user
pax-mark m pypy-c libpypy-c.so
}
+src_test() {
+ # (unset)
+ local -x PYTHONDONTWRITEBYTECODE
+
+ # Test runner requires Python 2 too. However, it spawns PyPy3
+ # internally so that we end up testing the correct interpreter.
+ "${PYTHON}" ./pypy/test_all.py --pypy=./pypy-c lib-python || die
+}
+
src_install() {
local dest=/usr/$(get_libdir)/pypy3
einfo "Installing PyPy ..."
# "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,
+# "_gdbm": "_gdbm_build.py" if sys.platform != "win32" else None,
# "pwdgrp": "_pwdgrp_build.py" if sys.platform != "win32" else None,
- cffi_targets=( audioop syslog pwdgrp )
+# "resource": "_resource_build.py" if sys.platform != "win32" else None,
+# "lzma": "_lzma_build.py",
+# "_decimal": "_decimal_build.py",
+ cffi_targets=( audioop syslog pwdgrp resource lzma decimal )
use gdbm && cffi_targets+=( gdbm )
use ncurses && cffi_targets+=( curses )
use sqlite && cffi_targets+=( sqlite3 )