Skip to content

Commit

Permalink
dev-python/pypy3: Split translation and compile phases
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
mgorny committed Mar 8, 2017
1 parent b03b6ba commit 890fe16
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 18 deletions.
29 changes: 18 additions & 11 deletions dev-python/pypy3/pypy3-5.5.0_alpha.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ src_prepare() {
epatch_user
}

src_compile() {
src_configure() {
tc-export CC

local jit_backend
Expand Down Expand Up @@ -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"
}

src_compile() {
emake -C "${T}"/usession*-current/testing_1

# 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
# 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() {
Expand All @@ -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

Expand Down
25 changes: 18 additions & 7 deletions dev-python/pypy3/pypy3-9999.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ src_prepare() {
epatch_user
}

src_compile() {
src_configure() {
tc-export CC

local jit_backend
Expand Down Expand Up @@ -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"
}

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() {
Expand All @@ -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

Expand Down

0 comments on commit 890fe16

Please sign in to comment.