dev-python/pypy: Split translation and compile phases

Use the --source option to disable automatic compiling of generating C
sources, and build them manually afterwards. Most importantly, this
significantly reduces memory use because pypy failed to free memory that
was used for the translation, and that is no longer needed when
the compilation is started. Furthermore, it makes resuming compilation
possible.
This commit is contained in:
Michał Górny
2017-03-08 10:04:47 +01:00
parent a5bfdb537c
commit 80dfd9952e
2 changed files with 36 additions and 14 deletions

View File

@@ -105,7 +105,7 @@ src_prepare() {
epatch_user
}
src_compile() {
src_configure() {
tc-export CC
local jit_backend
@@ -162,12 +162,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)/pypy
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)/pypy/pypy-c /usr/bin/pypy
dodoc README.rst

View File

@@ -111,7 +111,7 @@ src_prepare() {
epatch_user
}
src_compile() {
src_configure() {
tc-export CC
local jit_backend
@@ -168,12 +168,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() {
@@ -186,10 +196,11 @@ src_test() {
src_install() {
local dest=/usr/$(get_libdir)/pypy
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)/pypy/pypy-c /usr/bin/pypy
dodoc README.rst