dev-python/pypy3: Split translation and compile phases

Like in dev-python/pypy, use --source to disable auto-spawning
compilation phase in rpython. Instead, run it manually in src_compile().
This way we reduce memory consumption (since rpython normally does not
free the lots of memory it used during the translation while spawning
the compiler), and make the process easier to resume.
This commit is contained in:
Michał Górny
2017-03-08 11:56:27 +01:00
parent b03b6ba8e7
commit 890fe16c41
2 changed files with 36 additions and 18 deletions

View File

@@ -94,7 +94,7 @@ src_prepare() {
epatch_user
}
src_compile() {
src_configure() {
tc-export CC
local jit_backend
@@ -151,16 +151,22 @@ src_compile() {
"${PYTHON}" --jit loop_longevity=300 )
fi
set -- "${interp[@]}" rpython/bin/rpython --batch "${args[@]}"
# 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 "compile error"
"${@}" || die "translation failed"
}
# Exception occurred:
# File "/tmp/1/pypy3-2.4.0-src/pypy/config/makerestdoc.py", line 199, in config_role
# assert txt.check()
# AssertionError
#use doc && emake -C pypy/doc/ html
src_compile() {
emake -C "${T}"/usession*-current/testing_1
# copy back to make sys.prefix happy
cp -p "${T}"/usession*-current/testing_1/{pypy-c,libpypy-c.so} . || die
pax-mark m pypy-c libpypy-c.so
#use doc && emake -C pypy/doc html
}
src_test() {
@@ -175,10 +181,11 @@ src_test() {
src_install() {
local dest=/usr/$(get_libdir)/pypy3
einfo "Installing PyPy ..."
insinto "${dest}"
doins -r include lib_pypy lib-python pypy-c libpypy-c.so
fperms a+x ${dest}/pypy-c ${dest}/libpypy-c.so
exeinto "${dest}"
doexe pypy-c libpypy-c.so
pax-mark m "${ED%/}${dest}/pypy-c" "${ED%/}${dest}/libpypy-c.so"
insinto "${dest}"
doins -r include lib_pypy lib-python
dosym ../$(get_libdir)/pypy3/pypy-c /usr/bin/pypy3
dodoc README.rst

View File

@@ -103,7 +103,7 @@ src_prepare() {
epatch_user
}
src_compile() {
src_configure() {
tc-export CC
local jit_backend
@@ -160,12 +160,22 @@ src_compile() {
"${PYTHON}" --jit loop_longevity=300 )
fi
set -- "${interp[@]}" rpython/bin/rpython --batch "${args[@]}"
# 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 "compile error"
"${@}" || die "translation failed"
}
#use doc && emake -C pypy/doc/ html
src_compile() {
emake -C "${T}"/usession*-current/testing_1
# copy back to make sys.prefix happy
cp -p "${T}"/usession*-current/testing_1/{pypy-c,libpypy-c.so} . || die
pax-mark m pypy-c libpypy-c.so
#use doc && emake -C pypy/doc html
}
src_test() {
@@ -180,10 +190,11 @@ src_test() {
src_install() {
local dest=/usr/$(get_libdir)/pypy3
einfo "Installing PyPy ..."
insinto "${dest}"
doins -r include lib_pypy lib-python pypy-c libpypy-c.so
fperms a+x ${dest}/pypy-c ${dest}/libpypy-c.so
exeinto "${dest}"
doexe pypy-c libpypy-c.so
pax-mark m "${ED%/}${dest}/pypy-c" "${ED%/}${dest}/libpypy-c.so"
insinto "${dest}"
doins -r include lib_pypy lib-python
dosym ../$(get_libdir)/pypy3/pypy-c /usr/bin/pypy3
dodoc README.rst