bitbake: 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.

(Bitbake rev: b131229145e1f2c372d6230a7b554e436c13c3f9)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2014-05-30 15:56:11 +01:00
parent 4a78f52d87
commit 8a43a6a32b
2 changed files with 4 additions and 10 deletions

View File

@ -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)

View File

@ -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: