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


Reply via email to