summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-07-17 11:39:16 +0000
committerZac Medico <zmedico@gentoo.org>2008-07-17 11:39:16 +0000
commitfa8402bc1ef747630f31506c3de99f4d0ecac03b (patch)
treec4fea5dacaadea8c8b4ce3611dbf55fa4db0fdc7 /pym/_emerge
parent9d8f65e9a50dd78186e69afa8dce5c9d4b921bf3 (diff)
downloadportage-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
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/__init__.py61
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()