diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-07-17 11:39:16 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-07-17 11:39:16 +0000 |
commit | fa8402bc1ef747630f31506c3de99f4d0ecac03b (patch) | |
tree | c4fea5dacaadea8c8b4ce3611dbf55fa4db0fdc7 | |
parent | 9d8f65e9a50dd78186e69afa8dce5c9d4b921bf3 (diff) | |
download | portage-fa8402bc1ef747630f31506c3de99f4d0ecac03b.tar.gz portage-fa8402bc1ef747630f31506c3de99f4d0ecac03b.tar.bz2 portage-fa8402bc1ef747630f31506c3de99f4d0ecac03b.zip |
Make BinpkgVerifier redirect output to the fetch log when in background mode.
svn path=/main/trunk/; revision=11102
-rw-r--r-- | pym/_emerge/__init__.py | 61 |
1 files changed, 41 insertions, 20 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 46aef7da2..32f676122 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -2955,8 +2955,15 @@ class Binpkg(CompositeTask): verifier = None if self._verify: - verifier = BinpkgVerifier(background=self.background, pkg=self.pkg) - self._start_task(verifier, self._verifier_exit) + verifier = BinpkgVerifier(background=self.background, + logfile=self.scheduler.fetch.log_file, pkg=self.pkg) + + if self.background: + verifier.addExitListener(self._verifier_exit) + self._current_task = verifier + self.scheduler.fetch.schedule(verifier) + else: + self._start_task(verifier, self._verifier_exit) return self._verifier_exit(verifier) @@ -3211,7 +3218,7 @@ class BinpkgFetcher(SpawnProcess): self.locked = False class BinpkgVerifier(AsynchronousTask): - __slots__ = ("pkg",) + __slots__ = ("logfile", "pkg",) def _start(self): """ @@ -3224,24 +3231,38 @@ class BinpkgVerifier(AsynchronousTask): root_config = pkg.root_config bintree = root_config.trees["bintree"] rval = os.EX_OK + stdout_orig = sys.stdout + stderr_orig = sys.stderr + log_file = None + if self.background and self.logfile is not None: + log_file = open(self.logfile, 'a') try: - bintree.digestCheck(pkg) - except portage.exception.FileNotFound: - writemsg("!!! Fetching Binary failed " + \ - "for '%s'\n" % pkg.cpv, noiselevel=-1) - rval = 1 - except portage.exception.DigestException, e: - writemsg("\n!!! Digest verification failed:\n", - noiselevel=-1) - writemsg("!!! %s\n" % e.value[0], - noiselevel=-1) - writemsg("!!! Reason: %s\n" % e.value[1], - noiselevel=-1) - writemsg("!!! Got: %s\n" % e.value[2], - noiselevel=-1) - writemsg("!!! Expected: %s\n" % e.value[3], - noiselevel=-1) - rval = 1 + if log_file is not None: + sys.stdout = log_file + sys.stderr = log_file + try: + bintree.digestCheck(pkg) + except portage.exception.FileNotFound: + writemsg("!!! Fetching Binary failed " + \ + "for '%s'\n" % pkg.cpv, noiselevel=-1) + rval = 1 + except portage.exception.DigestException, e: + writemsg("\n!!! Digest verification failed:\n", + noiselevel=-1) + writemsg("!!! %s\n" % e.value[0], + noiselevel=-1) + writemsg("!!! Reason: %s\n" % e.value[1], + noiselevel=-1) + writemsg("!!! Got: %s\n" % e.value[2], + noiselevel=-1) + writemsg("!!! Expected: %s\n" % e.value[3], + noiselevel=-1) + rval = 1 + finally: + sys.stdout = stdout_orig + sys.stderr = stderr_orig + if log_file is not None: + log_file.close() self.returncode = rval self.wait() |