From 10968b4266a74f2f55e66368784e9b9c2aa4f592 Mon Sep 17 00:00:00 2001 From: Aníbal Limón Date: Thu, 2 Feb 2017 16:29:21 -0600 Subject: bitbake: bitbake-layers: Handle exception raised bytinfoil.prepare() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The tinfoil.prepare method can raise Exceptions when is parsing initial data so add this call inside try, finally to avoid get blocked for don't call tinfoil.shutdown(). The tinfoil_init function was remove because isn't make sense now since tinfoil.prepare() needs to be inside try, finally closures. Example of raised exception and gets blocked: $ bitbake-layers add-layer ~/repos/meta-openembedded/meta-python/ Traceback (most recent call last): File "/home/alimon/repos/poky/bitbake/bin/bitbake-layers", line 83, in main tinfoil.prepare(True) ... File "/home/alimon/repos/poky/bitbake/lib/bb/tinfoil.py", line 268, in run_command raise TinfoilCommandFailed(result[1]) bb.tinfoil.TinfoilCommandFailed: Traceback (most recent call last): File "/home/alimon/repos/poky/bitbake/lib/bb/command.py", line 81, in runCommand result = command_method(self, commandline) ... File "/home/alimon/repos/poky/bitbake/lib/bb/cooker.py", line 1314, in handleCollections raise CollectionError("Errors during parsing layer configuration") bb.cooker.CollectionError: Errors during parsing layer configuration (Bitbake rev: 61ebe9a026652e32f9482f66fc3fe7a8672fc093) Signed-off-by: Aníbal Limón Signed-off-by: Richard Purdie --- bitbake/bin/bitbake-layers | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/bitbake/bin/bitbake-layers b/bitbake/bin/bitbake-layers index 1e2cfbcac1..66fc7ca21f 100755 --- a/bitbake/bin/bitbake-layers +++ b/bitbake/bin/bitbake-layers @@ -31,15 +31,6 @@ sys.path[0:0] = [os.path.join(topdir, 'lib')] import bb.tinfoil - -def tinfoil_init(parserecipes): - import bb.tinfoil - tinfoil = bb.tinfoil.Tinfoil(tracking=True) - tinfoil.prepare(not parserecipes) - tinfoil.logger.setLevel(logger.getEffectiveLevel()) - return tinfoil - - def logger_create(name, output=sys.stderr): logger = logging.getLogger(name) loggerhandler = logging.StreamHandler(output) @@ -86,8 +77,10 @@ def main(): logger_setup_color(logger, global_args.color) plugins = [] - tinfoil = tinfoil_init(False) + tinfoil = bb.tinfoil.Tinfoil(tracking=True) + tinfoil.logger.setLevel(logger.getEffectiveLevel()) try: + tinfoil.prepare(True) for path in ([topdir] + tinfoil.config_data.getVar('BBPATH').split(':')): pluginpath = os.path.join(path, 'lib', 'bblayers') -- cgit 1.2.3-korg