forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dev-python/pypy: Backport secfix to 7.3.4_p1
Signed-off-by: Michał Górny <[email protected]>
- Loading branch information
Showing
2 changed files
with
161 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
DIST pypy2.7-gentoo-patches-7.3.4.tar.xz 7844 BLAKE2B d06694fa085667e40ef8805c29f7ccf95b49f9de4e99e3ebfa3d69c4202a0ddcebb54c524d7d9f9ec67573a8d2ebe38fb7023d4d3ecef67afc907ecef5c16c02 SHA512 aa8ffefb5d30070ae86c1c14c55c277e39d3da66aea3a0951319158fb65e716e7fa7864e8bf5d26314d4b2a8030c766b63cad6a3663822d2875cd8cc1f3f2de5 | ||
DIST pypy2.7-gentoo-patches-7.3.4_p1.tar.xz 8880 BLAKE2B dbf76e26b38187aafc5d60ee6189148d6211624689d5c6151d9c77ea5d744774db1bdf7230f97da16623045525449eeefc9d6ead168d8fdb166593c203918601 SHA512 78ed998ec6b8f2ac4bdd381496477d5e337841b1d7da0e77bd39a4748d3dd1a08ac6353561ca618d4cade24d26756ff4c221459162bc532e6597b8e9c7cd8d62 | ||
DIST pypy2.7-gentoo-patches-7.3.5rc3.tar.xz 5796 BLAKE2B b1c0fb0a8d86d117a9d4102777605eedd026b614f4b66272b3fc5da246bbe5edf516e95a40471117b61078c18b9fc615e55e0992a5d0a1be7caf9026ee26b6be SHA512 8699813837dfa4560a6e73b96f770c5d5999ce008e17cf62a856a454cb0b63146787a54934874162c79345488959e0936b3bd03823bc9f8e276f80df1122f7a8 | ||
DIST pypy2.7-v7.3.4-src.tar.bz2 21571561 BLAKE2B d0ac56fadec63fe7e65728c36c2aaf96fc5f54919dddbca9571a24c42a9e3e21f672f84555a18a384c4715f0489bd7aef009c0a47b635de88c472a93e2ae8d71 SHA512 4c18c2dbfbf0cc1034bea773828204df77aec7ef82119fb94e5cb762ce1783e00ad70e99d1432b4948dc132e726bdc6015f4a5bf10a5b10415bcfe99da2ecd17 | ||
DIST pypy2.7-v7.3.5rc3-src.tar.bz2 21563312 BLAKE2B e343dcd617026ea5f951f3d24deeb59736c9a6ecc91d1b9c1bd980b6f3c239a5bf0edb9b72a0847a6aeeaead8aca9ecf537af81c9fcf0a2f6647c99edc0d1735 SHA512 e080771ea10a30820f8844b3f512a7681f2e619e8a37fa8ac60198f3c8c3780a8e08aa63749be375c00cd547994f428df44e2cd9f61b272b215ded433374e0a1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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="~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 | ||
} |