mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-07-29 22:28:08 -07:00
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:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user