summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/EbuildPhase.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-03-24 21:32:38 -0700
committerZac Medico <zmedico@gentoo.org>2011-03-24 21:32:38 -0700
commit3081e651fc3cd3a0729bb1fbe2e93fbc58dcef0d (patch)
tree84c0c38f442d42c4352602070e16a07716a73772 /pym/_emerge/EbuildPhase.py
parentf823031ed33bda9579d265b62607380bb255dfdd (diff)
downloadportage-3081e651fc3cd3a0729bb1fbe2e93fbc58dcef0d.tar.gz
portage-3081e651fc3cd3a0729bb1fbe2e93fbc58dcef0d.tar.bz2
portage-3081e651fc3cd3a0729bb1fbe2e93fbc58dcef0d.zip
MergeProcess: Fix PORTAGE_BACKGROUND/LOG_FILE use
In this subprocess we don't want PORTAGE_BACKGROUND to suppress stdout/stderr output since they are pipes. We also don't want to open PORTAGE_LOG_FILE, since it will already be opened by the parent process, so we set the PORTAGE_BACKGROUND="subprocess" value for use in conditional logging code involving PORTAGE_LOG_FILE.
Diffstat (limited to 'pym/_emerge/EbuildPhase.py')
-rw-r--r--pym/_emerge/EbuildPhase.py29
1 files changed, 18 insertions, 11 deletions
diff --git a/pym/_emerge/EbuildPhase.py b/pym/_emerge/EbuildPhase.py
index e3270c893..a24608b88 100644
--- a/pym/_emerge/EbuildPhase.py
+++ b/pym/_emerge/EbuildPhase.py
@@ -121,9 +121,10 @@ class EbuildPhase(CompositeTask):
# Don't open the log file during the clean phase since the
# open file can result in an nfs lock on $T/build.log which
# prevents the clean phase from removing $T.
- logfile = self.settings.get("PORTAGE_LOG_FILE")
- if self.phase in ("clean", "cleanrm"):
- logfile = None
+ logfile = None
+ if self.phase not in ("clean", "cleanrm") and \
+ self.settings.get("PORTAGE_BACKGROUND") != "subprocess":
+ logfile = self.settings.get("PORTAGE_LOG_FILE")
fd_pipes = None
if not self.background and self.phase == 'nofetch':
@@ -151,13 +152,16 @@ class EbuildPhase(CompositeTask):
if not fail:
self.returncode = None
+ logfile = None
+ if self.settings.get("PORTAGE_BACKGROUND") != "subprocess":
+ logfile = self.settings.get("PORTAGE_LOG_FILE")
+
if self.phase == "install":
out = portage.StringIO()
_check_build_log(self.settings, out=out)
msg = _unicode_decode(out.getvalue(),
encoding=_encodings['content'], errors='replace')
- self.scheduler.output(msg,
- log_path=self.settings.get("PORTAGE_LOG_FILE"))
+ self.scheduler.output(msg, log_path=logfile)
if fail:
self._die_hooks()
@@ -173,12 +177,10 @@ class EbuildPhase(CompositeTask):
msg = _unicode_decode(out.getvalue(),
encoding=_encodings['content'], errors='replace')
if msg:
- self.scheduler.output(msg,
- log_path=self.settings.get("PORTAGE_LOG_FILE"))
+ self.scheduler.output(msg, log_path=logfile)
post_phase_cmds = _post_phase_cmds.get(self.phase)
if post_phase_cmds is not None:
- logfile = settings.get("PORTAGE_LOG_FILE")
if logfile is not None and self.phase in ("install",):
# Log to a temporary file, since the code we are running
# reads PORTAGE_LOG_FILE for QA checks, and we want to
@@ -204,7 +206,10 @@ class EbuildPhase(CompositeTask):
self._assert_current(post_phase)
- log_path = self.settings.get("PORTAGE_LOG_FILE")
+ log_path = None
+ if self.settings.get("PORTAGE_BACKGROUND") != "subprocess":
+ log_path = self.settings.get("PORTAGE_LOG_FILE")
+
if post_phase.logfile is not None and \
post_phase.logfile != log_path:
# We were logging to a temp file (see above), so append
@@ -293,5 +298,7 @@ class EbuildPhase(CompositeTask):
msg = _unicode_decode(out.getvalue(),
encoding=_encodings['content'], errors='replace')
if msg:
- self.scheduler.output(msg,
- log_path=self.settings.get("PORTAGE_LOG_FILE"))
+ log_path = None
+ if self.settings.get("PORTAGE_BACKGROUND") != "subprocess":
+ log_path = self.settings.get("PORTAGE_LOG_FILE")
+ self.scheduler.output(msg, log_path=log_path)