summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/__init__.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-07-17 23:53:49 +0000
committerZac Medico <zmedico@gentoo.org>2008-07-17 23:53:49 +0000
commitf88ccbcd7f42c880e6f2c741d114ba049064f904 (patch)
tree15000ccfaf86246e7b9e9d82b5f860a63ca4481f /pym/_emerge/__init__.py
parentf202826c41db708712a1847c11f2298b1314b2d9 (diff)
downloadportage-f88ccbcd7f42c880e6f2c741d114ba049064f904.tar.gz
portage-f88ccbcd7f42c880e6f2c741d114ba049064f904.tar.bz2
portage-f88ccbcd7f42c880e6f2c741d114ba049064f904.zip
Redirect dblink elog messages from stdout to the log file when in background
mode. This is implemented by adding a new "out" parameter to the portage.elog.e* functions, which can be used to send output to an arbitary file instead of stdout. svn path=/main/trunk/; revision=11117
Diffstat (limited to 'pym/_emerge/__init__.py')
-rw-r--r--pym/_emerge/__init__.py24
1 files changed, 22 insertions, 2 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index b6e942963..cb760e172 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -8465,8 +8465,9 @@ class Scheduler(PollScheduler):
_fetch_log = "/var/log/emerge-fetch.log"
class _iface_class(SlotObject):
- __slots__ = ("dblinkEbuildPhase", "dblinkDisplayMerge", "fetch",
- "register", "schedule", "scheduleYield", "unregister")
+ __slots__ = ("dblinkEbuildPhase", "dblinkDisplayMerge",
+ "dblinkElog", "fetch", "register", "schedule",
+ "scheduleYield", "unregister")
class _fetch_iface_class(SlotObject):
__slots__ = ("log_file", "schedule")
@@ -8534,6 +8535,7 @@ class Scheduler(PollScheduler):
self._sched_iface = self._iface_class(
dblinkEbuildPhase=self._dblink_ebuild_phase,
dblinkDisplayMerge=self._dblink_display_merge,
+ dblinkElog=self._dblink_elog,
fetch=fetch_iface, register=self._register,
schedule=self._schedule_wait, scheduleYield=self._schedule_yield,
unregister=self._unregister)
@@ -8728,6 +8730,24 @@ class Scheduler(PollScheduler):
finally:
f.close()
+ 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._max_jobs > 1
+
+ if background and log_path is not None:
+ log_file = open(log_path, 'a')
+ out = log_file
+
+ 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()
+
def _dblink_display_merge(self, pkg_dblink, msg, level=0, noiselevel=0):
log_path = pkg_dblink.settings.get("PORTAGE_LOG_FILE")
background = self._max_jobs > 1