dev-python/pypy: Generate caches earlier, in compile

Generate the caches in compile phase since they are needed for tests.

Closes: https://bugs.gentoo.org/636490
This commit is contained in:
Michał Górny
2017-11-05 00:59:59 +01:00
parent 76ad7134d3
commit 61ee5e7fe9
2 changed files with 74 additions and 70 deletions

View File

@@ -178,6 +178,42 @@ src_compile() {
pax-mark m pypy-c libpypy-c.so
use doc && emake -C pypy/doc html
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() {
@@ -216,8 +252,6 @@ src_install() {
# Install docs
use doc && dodoc -r pypy/doc/_build/html
einfo "Generating caches and byte-compiling ..."
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
@@ -227,39 +261,7 @@ src_install() {
echo "EPYTHON='${EPYTHON}'" > epython.py || die
python_domodule epython.py
# Generate Grammar and PatternGrammar pickles.
"${PYTHON}" -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 "${ED%/}${dest}"/lib_pypy || die
for t in "${cffi_targets[@]}"; do
# tkinter doesn't work via -m
"${PYTHON}" "_${t}_build.py" || die "Failed to build CFFI bindings for ${t}"
done
# Cleanup temporary objects
find "${ED%/}${dest}" -name "_cffi_*.[co]" -delete || die
find "${ED%/}${dest}" -type d -empty -delete || die
einfo "Byte-compiling Python standard library..."
# compile the installed modules
python_optimize "${ED%/}${dest}"

View File

@@ -184,6 +184,42 @@ src_compile() {
pax-mark m pypy-c libpypy-c.so
use doc && emake -C pypy/doc html
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() {
@@ -222,8 +258,6 @@ src_install() {
# Install docs
use doc && dodoc -r pypy/doc/_build/html
einfo "Generating caches and byte-compiling ..."
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
@@ -233,39 +267,7 @@ src_install() {
echo "EPYTHON='${EPYTHON}'" > epython.py || die
python_domodule epython.py
# Generate Grammar and PatternGrammar pickles.
"${PYTHON}" -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 "${ED%/}${dest}"/lib_pypy || die
for t in "${cffi_targets[@]}"; do
# tkinter doesn't work via -m
"${PYTHON}" "_${t}_build.py" || die "Failed to build CFFI bindings for ${t}"
done
# Cleanup temporary objects
find "${ED%/}${dest}" -name "_cffi_*.[co]" -delete || die
find "${ED%/}${dest}" -type d -empty -delete || die
einfo "Byte-compiling Python standard library..."
# compile the installed modules
python_optimize "${ED%/}${dest}"