]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
build: send logging messages to the log file for python functions
authorChris Larson <chris_larson@mentor.com>
Fri, 10 Dec 2010 04:38:35 +0000 (23:38 -0500)
committerChris Larson <chris_larson@mentor.com>
Fri, 10 Dec 2010 14:56:15 +0000 (09:56 -0500)
Signed-off-by: Chris Larson <chris_larson@mentor.com>
lib/bb/build.py
lib/bb/msg.py
lib/bb/ui/knotty.py

index 163077f198088ec10b036eb7a0b64a111c129cc9..d60146173b28e145ee99cfd6321711a1435ac8c7 100644 (file)
@@ -29,12 +29,14 @@ import os
 import sys
 import logging
 import bb
+import bb.msg
 import bb.utils
 import bb.process
 from contextlib import nested
 from bb import data, event, mkdirhier, utils
 
-logger = logging.getLogger("BitBake.Build")
+bblogger = logging.getLogger('BitBake')
+logger = logging.getLogger('BitBake.Build')
 
 NULL = open('/dev/null', 'r')
 
@@ -175,7 +177,7 @@ def exec_func(func, d, dirs = None):
     with nested(logfile, bb.utils.fileslocked(lockfiles)):
         try:
             if ispython:
-                exec_func_python(func, d, runfile, cwd=adir)
+                exec_func_python(func, d, runfile, logfile, cwd=adir)
             else:
                 exec_func_shell(func, d, runfile, logfile, cwd=adir, fakeroot=fakeroot)
         finally:
@@ -190,7 +192,8 @@ def {function}(d):
 
 {function}(d)
 """
-def exec_func_python(func, d, runfile, cwd=None):
+logformatter = bb.msg.BBLogFormatter("%(levelname)s: %(message)s")
+def exec_func_python(func, d, runfile, logfile, cwd=None):
     """Execute a python BB 'function'"""
 
     bbfile = d.getVar('file', True)
@@ -202,6 +205,10 @@ def exec_func_python(func, d, runfile, cwd=None):
     if cwd:
         os.chdir(cwd)
 
+    handler = logging.StreamHandler(logfile)
+    handler.setFormatter(logformatter)
+    bblogger.addHandler(handler)
+
     try:
         comp = utils.better_compile(code, func, bbfile)
         utils.better_exec(comp, {"d": d}, code, bbfile)
@@ -211,6 +218,7 @@ def exec_func_python(func, d, runfile, cwd=None):
 
         raise FuncFailed(func, None)
     finally:
+        bblogger.removeHandler(handler)
         os.chdir(olddir)
 
 def exec_func_shell(function, d, runfile, logfile, cwd=None, fakeroot=False):
index 42e20a8ecafac7fddafc50524c83b89b6187f21e..0c1fa3bfc452a465d1a303c7af324848193b3c64 100644 (file)
@@ -30,6 +30,15 @@ import warnings
 import bb
 import bb.event
 
+class BBLogFormatter(logging.Formatter):
+    """Formatter which ensures that our 'plain' messages (logging.INFO + 1) are used as is"""
+
+    def format(self, record):
+        if record.levelno == logging.INFO + 1:
+            return record.getMessage()
+        else:
+            return logging.Formatter.format(self, record)
+
 class Loggers(dict):
     def __getitem__(self, key):
         if key in self:
index a60c1853a2478577880f80ef5ef560a1e68d3a93..b8cb2c05e59c00d5fdcd8252b5ee8fdb25e542f6 100644 (file)
@@ -26,6 +26,7 @@ import itertools
 import xmlrpclib
 import logging
 import progressbar
+import bb.msg
 from bb import ui
 from bb.ui import uihelper
 
@@ -57,15 +58,6 @@ class NonInteractiveProgress(object):
         self.fobj.write("done.\n")
         self.fobj.flush()
 
-class BBLogFormatter(logging.Formatter):
-    """Formatter which ensures that our 'plain' messages (logging.INFO + 1) are used as is"""
-
-    def format(self, record):
-        if record.levelno == logging.INFO + 1:
-            return record.getMessage()
-        else:
-            return logging.Formatter.format(self, record)
-
 def main(server, eventHandler):
 
     # Get values of variables which control our output
@@ -85,7 +77,7 @@ def main(server, eventHandler):
         logging.addLevelName(level, logging.getLevelName(logging.DEBUG))
 
     console = logging.StreamHandler(sys.stdout)
-    format = BBLogFormatter("%(levelname)s: %(message)s")
+    format = bb.msg.BBLogFormatter("%(levelname)s: %(message)s")
     console.setFormatter(format)
     logger.addHandler(console)