summaryrefslogtreecommitdiff
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-10-18 03:20:05 +0000
committerZac Medico <zmedico@gentoo.org>2009-10-18 03:20:05 +0000
commit9a8793683773443cf0e7e05161e45507fbaffced (patch)
tree85c33441dece902be13f2799f0afc7ab2da511e0 /pym
parentImplement __len__. (trunk r14598) (diff)
downloadportage-multirepo-9a8793683773443cf0e7e05161e45507fbaffced.tar.gz
portage-multirepo-9a8793683773443cf0e7e05161e45507fbaffced.tar.bz2
portage-multirepo-9a8793683773443cf0e7e05161e45507fbaffced.zip
Bug #288906 - Fix Scheduler._dblink_elog() to always append messages to the
build log if available (regardless whether or not message goes to stdout). (trunk r14600) svn path=/main/branches/2.1.7/; revision=14634
Diffstat (limited to 'pym')
-rw-r--r--pym/_emerge/Scheduler.py33
1 files changed, 19 insertions, 14 deletions
diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py
index 0a9e8709..bfcba9f3 100644
--- a/pym/_emerge/Scheduler.py
+++ b/pym/_emerge/Scheduler.py
@@ -10,6 +10,15 @@ import sys
import textwrap
import time
import weakref
+
+try:
+ from io import StringIO
+except ImportError:
+ # Needed for python-2.6 with USE=build since
+ # io imports threading which imports thread
+ # which is unavailable.
+ from StringIO import StringIO
+
import portage
from portage import os
from portage import _encodings
@@ -495,23 +504,19 @@ class Scheduler(PollScheduler):
def _dblink_elog(self, pkg_dblink, phase, func, msgs):
log_path = pkg_dblink.settings.get("PORTAGE_LOG_FILE")
- log_file = None
- out = sys.stdout
background = self._background
+ out = StringIO()
- if background and log_path is not None:
- log_file = codecs.open(_unicode_encode(log_path,
- encoding=_encodings['fs'], errors='strict'),
- mode='a', encoding=_encodings['content'],
- errors='backslashreplace')
- out = log_file
+ for msg in msgs:
+ func(msg, phase=phase, key=pkg_dblink.mycpv, out=out)
- try:
- for msg in msgs:
- func(msg, phase=phase, key=pkg_dblink.mycpv, out=out)
- finally:
- if log_file is not None:
- log_file.close()
+ out_str = out.getvalue()
+
+ if not background:
+ portage.util.writemsg_stdout(out_str, noiselevel=-1)
+
+ if log_path is not None:
+ self._append_to_log_path(log_path, out_str)
def _dblink_emerge_log(self, msg):
self._logger.log(msg)