| # 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 |