bitbake/event/ast: Add RecipePreFinalise event

One of the implications is we need to register the event handlers before
executing the anonymous python functions. I can't find any issue with making
that change in any existing metadata use cases.

(Bitbake rev: a981df3cc9bf410d24f39919959952bdc6c76d03)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2011-06-09 17:30:17 +01:00
parent af93b8937e
commit b8321c5658
3 changed files with 17 additions and 9 deletions

View File

@ -206,13 +206,17 @@ def getName(e):
class ConfigParsed(Event):
"""Configuration Parsing Complete"""
class RecipeParsed(Event):
""" Recipe Parsing Complete """
class RecipeEvent(Event):
def __init__(self, fn):
self.fn = fn
Event.__init__(self)
class RecipePreFinalise(RecipeEvent):
""" Recipe Parsing Complete but not yet finialised"""
class RecipeParsed(RecipeEvent):
""" Recipe Parsing Complete """
class StampUpdate(Event):
"""Trigger for any adjustment of the stamp files to happen"""

View File

@ -308,12 +308,6 @@ def handleInherit(statements, filename, lineno, m):
def finalize(fn, d, variant = None):
bb.data.expandKeys(d)
bb.data.update_data(d)
code = []
for funcname in bb.data.getVar("__BBANONFUNCS", d) or []:
code.append("%s(d)" % funcname)
bb.utils.simple_exec("\n".join(code), {"d": d})
bb.data.update_data(d)
all_handlers = {}
for var in bb.data.getVar('__BBHANDLERS', d) or []:
@ -321,6 +315,15 @@ def finalize(fn, d, variant = None):
handler = bb.data.getVar(var, d)
bb.event.register(var, handler)
bb.event.fire(bb.event.RecipePreFinalise(fn), d)
bb.data.update_data(d)
code = []
for funcname in bb.data.getVar("__BBANONFUNCS", d) or []:
code.append("%s(d)" % funcname)
bb.utils.simple_exec("\n".join(code), {"d": d})
bb.data.update_data(d)
tasklist = bb.data.getVar('__BBTASKS', d) or []
bb.build.add_tasks(tasklist, d)

View File

@ -228,6 +228,7 @@ def main(server, eventHandler):
bb.event.StampUpdate,
bb.event.ConfigParsed,
bb.event.RecipeParsed,
bb.event.RecipePreFinalise,
bb.runqueue.runQueueEvent,
bb.runqueue.runQueueExitWait)):
continue