From 80dfd9952e4b140aa5b797b765f4d95fb65a7c98 Mon Sep 17 00:00:00 2001 From: Michał Górny Date: Wed, 8 Mar 2017 10:04:47 +0100 Subject: 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. --- dev-python/pypy/pypy-5.6.0.ebuild | 25 ++++++++++++++++++------- dev-python/pypy/pypy-9999.ebuild | 25 ++++++++++++++++++------- 2 files changed, 36 insertions(+), 14 deletions(-) (limited to 'dev-python/pypy') diff --git a/dev-python/pypy/pypy-5.6.0.ebuild b/dev-python/pypy/pypy-5.6.0.ebuild index ce1b1a3f7641..34c1826c856f 100644 --- a/dev-python/pypy/pypy-5.6.0.ebuild +++ b/dev-python/pypy/pypy-5.6.0.ebuild @@ -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" +} + +src_compile() { + emake -C "${T}"/usession*-current/testing_1 - use doc && emake -C pypy/doc/ html + # 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 diff --git a/dev-python/pypy/pypy-9999.ebuild b/dev-python/pypy/pypy-9999.ebuild index de88fb98a5f1..de566f88e80d 100644 --- a/dev-python/pypy/pypy-9999.ebuild +++ b/dev-python/pypy/pypy-9999.ebuild @@ -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" +} + +src_compile() { + emake -C "${T}"/usession*-current/testing_1 - use doc && emake -C pypy/doc/ html + # 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 -- cgit v1.2.3-65-gdbad