build/utils: Fix broken exception handling
PATCH 1/1 build/utils: Fix broken exception handling
Checking for explicit exception names is bad, we also want to be able top rely on inheritance. Fix these checks to be part of the real except clauses so SkipPackage is recognised as being inherited from SkipRecipe.
Signed-off-by Richard Purdie <[email protected]>
bitbake/lib/bb/build.py +2 -3
@@ -242,10 +242,9 @@ def exec_func_python(func, d, runfile, cwd=None): try: comp = utils.better_compile(code, func, bbfile) utils.better_exec(comp, {"d": d}, code, bbfile) + except (bb.parse.SkipRecipe, bb.build.FuncFailed): + raise except: - if sys.exc_info()[0] in (bb.parse.SkipRecipe, bb.build.FuncFailed): - raise - raise FuncFailed(func, None) finally: bb.debug(2, "Python function %s finished" % func)
bitbake/lib/bb/utils.py +2 -7
@@ -354,16 +354,11 @@ def better_exec(code, context, text = None, realfile = "<code>"): code = better_compile(code, realfile, realfile) try: exec(code, get_context(), context) - except bb.BBHandledException: - # Error already shown so passthrough - raise - except bb.data_smart.ExpansionError: + except (bb.BBHandledException, bb.parse.SkipRecipe, bb.build.FuncFailed, bb.data_smart.ExpansionError): + # Error already shown so passthrough, no need for traceback raise except Exception as e: (t, value, tb) = sys.exc_info() - - if t in [bb.parse.SkipRecipe, bb.build.FuncFailed]: - raise try: _print_exception(t, value, tb, realfile, text, context) except Exception as e: