Eliminate the call to digestgen in EbuildBuild._fetchonly_exit, and make Scheduler._generate_digests call it earlier when --fetchonly is enabled. This avoids event loop recursion which is not compatible with asyncio (digestgen makes many calls that can trigger event loop recursion).
X-Gentoo-bug: 614116 X-Gentoo-bug-url: https://bugs.gentoo.org/show_bug.cgi?id=614116 --- pym/_emerge/EbuildBuild.py | 5 ----- pym/_emerge/Scheduler.py | 3 --- 2 files changed, 8 deletions(-) diff --git a/pym/_emerge/EbuildBuild.py b/pym/_emerge/EbuildBuild.py index 001f55f..11eb1c9 100644 --- a/pym/_emerge/EbuildBuild.py +++ b/pym/_emerge/EbuildBuild.py @@ -21,7 +21,6 @@ from _emerge.TaskSequence import TaskSequence import portage from portage import _encodings, _unicode_decode, _unicode_encode, os from portage.package.ebuild.digestcheck import digestcheck -from portage.package.ebuild.digestgen import digestgen from portage.package.ebuild.doebuild import _check_temp_dir from portage.package.ebuild._spawn_nofetch import spawn_nofetch @@ -168,10 +167,6 @@ class EbuildBuild(CompositeTask): if self.returncode != os.EX_OK: portdb = self.pkg.root_config.trees[self._tree].dbapi spawn_nofetch(portdb, self._ebuild_path, settings=self.settings) - elif 'digest' in self.settings.features: - if not digestgen(mysettings=self.settings, - myportdb=self.pkg.root_config.trees[self._tree].dbapi): - self.returncode = 1 self.wait() def _pre_clean_exit(self, pre_clean_phase): diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py index 58ff971..079fac7 100644 --- a/pym/_emerge/Scheduler.py +++ b/pym/_emerge/Scheduler.py @@ -616,9 +616,6 @@ class Scheduler(PollScheduler): tasks are started. """ - if '--fetchonly' in self.myopts: - return os.EX_OK - digest = '--digest' in self.myopts if not digest: for pkgsettings in self.pkgsettings.values(): -- 2.10.2