From d3809b77c418804a524b618b51c2af7661e22e93 Mon Sep 17 00:00:00 2001 From: Paul Eggleton Date: Mon, 13 Jul 2015 16:05:12 +0100 Subject: bitbake: lib/bb: provide mechanism to bypass UI log suppression The recent change to connect through the shell logging functions had an unexpected side-effect - bb.error() and bb.fatal() cause a flag to be set internally such that BitBake's UI will not print the full task log on failure; unfortunately we have in places within the OpenEmbedded metadata called these shell logging functions under error situations where we still want to see the full log (i.e., the message we're sending doesn't include the full error). Thus, provide a mechanism to fatally exit with an error but unset the flag, utilising the built-in python logging functionality that allows extra values to be passed in the log record. (Bitbake rev: e561b997c55e8537d82aa1339adfff4505cc38b7) Signed-off-by: Paul Eggleton Signed-off-by: Richard Purdie --- bitbake/lib/bb/__init__.py | 8 ++++---- bitbake/lib/bb/build.py | 7 ++++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/bitbake/lib/bb/__init__.py b/bitbake/lib/bb/__init__.py index 1a30fa11d7..1f7946e7b7 100644 --- a/bitbake/lib/bb/__init__.py +++ b/bitbake/lib/bb/__init__.py @@ -94,11 +94,11 @@ def note(*args): def warn(*args): logger.warn(''.join(args)) -def error(*args): - logger.error(''.join(args)) +def error(*args, **kwargs): + logger.error(''.join(args), extra=kwargs) -def fatal(*args): - logger.critical(''.join(args)) +def fatal(*args, **kwargs): + logger.critical(''.join(args), extra=kwargs) raise BBHandledException() def deprecated(func, name=None, advice=""): diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py index cce01feba2..34399640c0 100644 --- a/bitbake/lib/bb/build.py +++ b/bitbake/lib/bb/build.py @@ -350,6 +350,8 @@ exit $? # The caller will call exit themselves, so bb.error() is # what we want here rather than bb.fatal() bb.error(value) + elif cmd == 'bbfatal_log': + bb.error(value, forcelog=True) elif cmd == 'bbdebug': splitval = value.split(' ', 1) level = int(splitval[0]) @@ -446,7 +448,10 @@ def _exec_task(fn, task, d, quieterr): self.triggered = False logging.Handler.__init__(self, logging.ERROR) def emit(self, record): - self.triggered = True + if getattr(record, 'forcelog', False): + self.triggered = False + else: + self.triggered = True # Handle logfiles si = open('/dev/null', 'r') -- cgit v1.2.3-54-g00ecf