mirror of
https://git.yoctoproject.org/poky
synced 2026-02-07 01:06:37 +01:00
The bitbake logger changes the way debug is logged and adds different levels within debug, this is passed as argument to the function and breaks compatibility with vanilla loggers. This implements a way to handle this adding a new function for debug, that will dispatch the correct logging method signature. Also overrides info method to use logging.INFO + 1 in order to see plain data. Also this commit fix the issue of not showing the test summary and results when running from bitbake. [YOCTO #10686] (From OE-Core rev: 619c9ab308fbef9e3563dc661e432603e764b562) Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com> Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
69 lines
1.8 KiB
Python
69 lines
1.8 KiB
Python
# Enable other layers to have modules in the same named directory
|
|
from pkgutil import extend_path
|
|
__path__ = extend_path(__path__, __name__)
|
|
|
|
|
|
# Borrowed from CalledProcessError
|
|
|
|
class CommandError(Exception):
|
|
def __init__(self, retcode, cmd, output = None):
|
|
self.retcode = retcode
|
|
self.cmd = cmd
|
|
self.output = output
|
|
def __str__(self):
|
|
return "Command '%s' returned non-zero exit status %d with output: %s" % (self.cmd, self.retcode, self.output)
|
|
|
|
def avoid_paths_in_environ(paths):
|
|
"""
|
|
Searches for every path in os.environ['PATH']
|
|
if found remove it.
|
|
|
|
Returns new PATH without avoided PATHs.
|
|
"""
|
|
import os
|
|
|
|
new_path = ''
|
|
for p in os.environ['PATH'].split(':'):
|
|
avoid = False
|
|
for pa in paths:
|
|
if pa in p:
|
|
avoid = True
|
|
break
|
|
if avoid:
|
|
continue
|
|
|
|
new_path = new_path + p + ':'
|
|
|
|
new_path = new_path[:-1]
|
|
return new_path
|
|
|
|
def make_logger_bitbake_compatible(logger):
|
|
import logging
|
|
|
|
"""
|
|
Bitbake logger redifines debug() in order to
|
|
set a level within debug, this breaks compatibility
|
|
with vainilla logging, so we neeed to redifine debug()
|
|
method again also add info() method with INFO + 1 level.
|
|
"""
|
|
def _bitbake_log_debug(*args, **kwargs):
|
|
lvl = logging.DEBUG
|
|
|
|
if isinstance(args[0], int):
|
|
lvl = args[0]
|
|
msg = args[1]
|
|
args = args[2:]
|
|
else:
|
|
msg = args[0]
|
|
args = args[1:]
|
|
|
|
logger.log(lvl, msg, *args, **kwargs)
|
|
|
|
def _bitbake_log_info(msg, *args, **kwargs):
|
|
logger.log(logging.INFO + 1, msg, *args, **kwargs)
|
|
|
|
logger.debug = _bitbake_log_debug
|
|
logger.info = _bitbake_log_info
|
|
|
|
return logger
|