diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-10-18 03:20:05 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-10-18 03:20:05 +0000 |
commit | 9a8793683773443cf0e7e05161e45507fbaffced (patch) | |
tree | 85c33441dece902be13f2799f0afc7ab2da511e0 /pym/_emerge/Scheduler.py | |
parent | 20f4557207c9d63cbc46164e4b40aff9f4d7d7ca (diff) | |
download | portage-9a8793683773443cf0e7e05161e45507fbaffced.tar.gz portage-9a8793683773443cf0e7e05161e45507fbaffced.tar.bz2 portage-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/_emerge/Scheduler.py')
-rw-r--r-- | pym/_emerge/Scheduler.py | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py index 0a9e87096..bfcba9f3e 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) |