From b131229145e1f2c372d6230a7b554e436c13c3f9 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 30 May 2014 15:56:11 +0100 Subject: 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 --- lib/bb/build.py | 5 ++--- lib/bb/utils.py | 9 ++------- 2 files changed, 4 insertions(+), 10 deletions(-) (limited to 'lib') diff --git a/lib/bb/build.py b/lib/bb/build.py index 98ee36ce5..32022d808 100644 --- a/lib/bb/build.py +++ b/lib/bb/build.py @@ -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) diff --git a/lib/bb/utils.py b/lib/bb/utils.py index c179394dc..96d821881 100644 --- a/lib/bb/utils.py +++ b/lib/bb/utils.py @@ -354,16 +354,11 @@ def better_exec(code, context, text = None, realfile = ""): 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: -- cgit 1.2.3-korg