From deabbd3a80705ce16e0e3c9e18f61c90d33935bc Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Wed, 14 Oct 2009 06:34:51 +0000 Subject: Bug #288906 - Fix Scheduler._dblink_elog() to always append messages to the build log if available (regardless whether or not message goes to stdout). svn path=/main/trunk/; revision=14600 --- pym/_emerge/Scheduler.py | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) (limited to 'pym/_emerge/Scheduler.py') diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py index f2247578b..eb2f89497 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) -- cgit v1.2.3-1-g7c22