diff options
-rw-r--r-- | dev-python/pypy3-exe/Manifest | 1 | ||||
-rw-r--r-- | dev-python/pypy3-exe/pypy3-exe-7.3.3_rc1_p37.ebuild | 157 |
2 files changed, 158 insertions, 0 deletions
diff --git a/dev-python/pypy3-exe/Manifest b/dev-python/pypy3-exe/Manifest index 51f8c3e0b009..09c8da41a5db 100644 --- a/dev-python/pypy3-exe/Manifest +++ b/dev-python/pypy3-exe/Manifest @@ -2,3 +2,4 @@ DIST pypy3.6-v7.3.1-src.tar.bz2 22712809 BLAKE2B 4250b3fe98c611b9635319c106b80e8 DIST pypy3.6-v7.3.2-src.tar.bz2 22736022 BLAKE2B e2338ac3f7af06b987c43e93eab9ff14d46262143472b0393b30b011fff67d33add45d8198cee7109354e09c52a2540938abeef364b0cf12f2891ca9c7aac2a4 SHA512 ed861a57d6edf1548c061d10295313a05d0ac54fe68a8755211ff76fa2dc78d7b1479c6152dc5d0d1cdce4e247c240c1a2edf59ec8a53d0004ec7713514c9c35 DIST pypy3.6-v7.3.3rc1-src.tar.bz2 22401663 BLAKE2B 278b71a3b608999ee20b6558598eda453f3a87645965b8b705a11d05784722106c04b405375f62bd8e7ce2968df311314ee1672a2ddecb0f6afc49a3cbe8e670 SHA512 d865125925603e74412be7e750ab403670f05e76f2dfe6280c8b0ef123ed3e2f463d9457b65aa4f84c47a3529b2d3bca84b84307623bf995f60b549c85dcce2d DIST pypy3.7-v7.3.2-src.tar.bz2 25060911 BLAKE2B 35ecfee4c64e13539827c65a61e0cd359de4046f77553629cdf63479327c6ad86afd1443caa7a911a6271f496f0f3caf1b919ce91de717d0a71d008927b7f77b SHA512 563a9cf63e818b95aeb14c25b55bb5fb0bf8283f0b9f2bdd9a8833989beb651681f53f52368fb9db2c75fb60be0456eec87d48b557740b57847c4104003cb288 +DIST pypy3.7-v7.3.3rc1-src.tar.bz2 24511164 BLAKE2B 7fba1fde1bb248006f95fbb52dd9f237086f7221b99d6a288c1a32188a76ed76b1908e7f2054fd969b597c422c566214dd1e9ec409e243a776e8fa466fbf2039 SHA512 f98e7d209f75c4fa5645db16e1cc721ba80d44ad76030bd1c412800bb723ba528a83da89c8793a7e105d8391e72eeef7cb0198f9b30041178e90b628f14e5a3e diff --git a/dev-python/pypy3-exe/pypy3-exe-7.3.3_rc1_p37.ebuild b/dev-python/pypy3-exe/pypy3-exe-7.3.3_rc1_p37.ebuild new file mode 100644 index 000000000000..ab01a0805456 --- /dev/null +++ b/dev-python/pypy3-exe/pypy3-exe-7.3.3_rc1_p37.ebuild @@ -0,0 +1,157 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +# pypy3 needs to be built using python 2 +PYTHON_COMPAT=( python2_7 ) +inherit check-reqs pax-utils python-any-r1 toolchain-funcs + +PYPY_PV=${PV%_p37} +MY_P=pypy3.7-v${PYPY_PV/_/} +DESCRIPTION="PyPy3 executable (build from source)" +HOMEPAGE="https://pypy.org/" +SRC_URI="https://buildbot.pypy.org/pypy/${MY_P}-src.tar.bz2" +S="${WORKDIR}/${MY_P}-src" + +LICENSE="MIT" +SLOT="${PV}" +KEYWORDS="" +IUSE="bzip2 +jit low-memory ncurses cpu_flags_x86_sse2" + +RDEPEND=">=sys-libs/zlib-1.1.3:0= + dev-libs/libffi:0= + virtual/libintl:0= + dev-libs/expat:0= + bzip2? ( app-arch/bzip2:0= ) + ncurses? ( sys-libs/ncurses:0= ) + !dev-python/pypy3-exe-bin:${PV}" +DEPEND="${RDEPEND}" +BDEPEND=" + low-memory? ( dev-python/pypy ) + !low-memory? ( + || ( + dev-python/pypy + dev-lang/python:2.7 + ) + )" + +check_env() { + if use low-memory; then + 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 + + # unset to allow forcing pypy below :) + use low-memory && EPYTHON= + if [[ ! ${EPYTHON} || ${EPYTHON} == pypy ]] && + { has_version -b dev-python/pypy || + has_version -b dev-python/pypy-bin; } + then + einfo "Using PyPy to perform the translation." + EPYTHON=pypy + else + einfo "Using ${EPYTHON:-python2} to perform the translation. Please note that upstream" + einfo "recommends using PyPy for that. If you wish to do so, please install" + einfo "dev-python/pypy and ensure that EPYTHON variable is unset." + python-any-r1_pkg_setup + fi + fi +} + +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=( + --no-shared + $(usex jit -Ojit -O2) + + ${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=( "${EPYTHON}" ) + if use low-memory; then + interp=( env PYPY_GC_MAX_DELTA=200MB + "${EPYTHON}" --jit loop_longevity=300 ) + fi + + if [[ ${EPYTHON} != pypy ]]; then + # reuse bundled pycparser to avoid external dep + mkdir -p "${T}"/pymod/cffi || die + : > "${T}"/pymod/cffi/__init__.py || die + cp -r lib_pypy/cffi/_pycparser "${T}"/pymod/cffi/ || die + local -x PYTHONPATH=${T}/pymod:${PYTHONPATH} + fi + + # translate into the C sources + # we're going to build 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 +} + +src_install() { + local dest=/usr/lib/pypy3.7 + exeinto "${dest}" + newexe "${T}"/usession*-0/testing_1/pypy3-c pypy3-c-${PYPY_PV} + insinto "${dest}"/include/${PYPY_PV} + doins include/pypy_* + pax-mark m "${ED}${dest}/pypy3-c-${PYPY_PV}" +} |