[gnome-continuous-yocto/gnomeostree-3.28-rocko: 3739/8267] bitbake: lib/bb/build: enable access to logger within tasks



commit c61b525e9190d1f6e18c3d7fc16736c075317b1d
Author: Paul Eggleton <paul eggleton linux intel com>
Date:   Tue Dec 13 10:53:51 2016 +1300

    bitbake: lib/bb/build: enable access to logger within tasks
    
    In certain circumstances it can be useful to get access to BitBake's
    logger within a task; the main example is in OpenEmbedded's image
    construction code where we want to be able to check the log file for
    errors and warnings, but we don't want to see any errors or warnings
    that were emitted through the logger; so we need a way to exclude those.
    In order to do this, pass the logger object into the task via a
    BB_TASK_LOGGER variable, and add a logging handler class to bb.utils
    that can be added to it in order to keep a list of warnings/errors that
    have been emitted.
    
    (Bitbake rev: f1cd6fab604f14d8686b1d783cbfe012d923ee42)
    
    Signed-off-by: Paul Eggleton <paul eggleton linux intel com>
    Signed-off-by: Ross Burton <ross burton intel com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 bitbake/lib/bb/build.py |    1 +
 bitbake/lib/bb/utils.py |   11 +++++++++++
 2 files changed, 12 insertions(+), 0 deletions(-)
---
diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py
index 7a7aabb..0c2c1ba 100644
--- a/bitbake/lib/bb/build.py
+++ b/bitbake/lib/bb/build.py
@@ -562,6 +562,7 @@ def _exec_task(fn, task, d, quieterr):
 
     localdata.setVar('BB_LOGFILE', logfn)
     localdata.setVar('BB_RUNTASK', task)
+    localdata.setVar('BB_TASK_LOGGER', bblogger)
 
     flags = localdata.getVarFlags(task)
 
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py
index 9073f15..a22a05e 100644
--- a/bitbake/lib/bb/utils.py
+++ b/bitbake/lib/bb/utils.py
@@ -1503,3 +1503,14 @@ def load_plugins(logger, plugins, pluginpath):
                 plugins.append(obj or plugin)
             else:
                 plugins.append(plugin)
+
+
+class LogCatcher(logging.Handler):
+    """Logging handler for collecting logged messages so you can check them later"""
+    def __init__(self):
+        self.messages = []
+        logging.Handler.__init__(self, logging.WARNING)
+    def emit(self, record):
+        self.messages.append(bb.build.logformatter.format(record))
+    def contains(self, message):
+        return (message in self.messages)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]