commit: 0bf72716cacc7f79abb61ad3ce33332c743809c9
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 2 16:49:33 2020 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Mon Mar 2 16:51:15 2020 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=0bf72716
doebuild: avoid emerge --pretend --fetchonly event loop recursion
Fixes: ec654122c0eb ("fetch: drop privileges early for NFS root_squash (bug
601252)")
Bug: https://bugs.gentoo.org/601252
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>
lib/portage/package/ebuild/doebuild.py | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/lib/portage/package/ebuild/doebuild.py
b/lib/portage/package/ebuild/doebuild.py
index 384a3e632..75fcb8a51 100644
--- a/lib/portage/package/ebuild/doebuild.py
+++ b/lib/portage/package/ebuild/doebuild.py
@@ -1095,8 +1095,16 @@ def doebuild(myebuild, mydo, _unused=DeprecationWarning,
settings=None, debug=0,
digests=dist_digests)
loop = asyncio._safe_loop()
- if not
loop.run_until_complete(loop.run_in_executor(ForkExecutor(loop=loop),
- _fetch_subprocess, fetchme, mysettings,
listonly, dist_digests)):
+ if loop.is_running():
+ # Called by EbuildFetchonly for emerge
--pretend --fetchonly.
+ success = fetch(fetchme, mysettings,
listonly=listonly,
+ fetchonly=fetchonly,
allow_missing_digests=False,
+ digests=dist_digests)
+ else:
+ success = loop.run_until_complete(
+
loop.run_in_executor(ForkExecutor(loop=loop),
+ _fetch_subprocess, fetchme, mysettings,
listonly, dist_digests))
+ if not success:
# Since listonly mode is called by emerge
--pretend in an
# asynchronous context, spawn_nofetch would
trigger event loop
# recursion here, therefore delegate execution
of pkg_nofetch