mirror of
https://git.yoctoproject.org/poky
synced 2026-09-20 03:49:32 +02:00
event: improve output for syntax errors in handlers
Note: this includes IndentationError, which is a subclass of SyntaxError. (Bitbake rev: 156ea134e82d873ca4b5343261da2291a2b32ef6) Signed-off-by: Chris Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
37cb4cc02b
commit
fc801b9073
@@ -150,6 +150,7 @@ def fire_from_worker(event, d):
|
|||||||
event = pickle.loads(event[7:-8])
|
event = pickle.loads(event[7:-8])
|
||||||
fire_ui_handlers(event, d)
|
fire_ui_handlers(event, d)
|
||||||
|
|
||||||
|
noop = lambda _: None
|
||||||
def register(name, handler):
|
def register(name, handler):
|
||||||
"""Register an Event handler"""
|
"""Register an Event handler"""
|
||||||
|
|
||||||
@@ -161,10 +162,15 @@ def register(name, handler):
|
|||||||
# handle string containing python code
|
# handle string containing python code
|
||||||
if isinstance(handler, basestring):
|
if isinstance(handler, basestring):
|
||||||
tmp = "def %s(e):\n%s" % (name, handler)
|
tmp = "def %s(e):\n%s" % (name, handler)
|
||||||
comp = bb.utils.better_compile(tmp, "%s(e)" % name,
|
try:
|
||||||
"bb.event._registerCode")
|
code = compile(tmp, "%s(e)" % name, "exec")
|
||||||
|
except SyntaxError:
|
||||||
|
logger.error("Unable to register event handler '%s':\n%s", name,
|
||||||
|
''.join(traceback.format_exc(limit=0)))
|
||||||
|
_handlers[name] = noop
|
||||||
|
return
|
||||||
env = {}
|
env = {}
|
||||||
bb.utils.simple_exec(comp, env)
|
bb.utils.simple_exec(code, env)
|
||||||
func = bb.utils.better_eval(name, env)
|
func = bb.utils.better_eval(name, env)
|
||||||
_handlers[name] = func
|
_handlers[name] = func
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user