From a981df3cc9bf410d24f39919959952bdc6c76d03 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Thu, 9 Jun 2011 17:30:17 +0100 Subject: 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. Signed-off-by: Richard Purdie --- lib/bb/event.py | 10 +++++++--- lib/bb/parse/ast.py | 15 +++++++++------ lib/bb/ui/knotty.py | 1 + 3 files changed, 17 insertions(+), 9 deletions(-) (limited to 'lib') diff --git a/lib/bb/event.py b/lib/bb/event.py index a3288b619..7d47edb9e 100644 --- a/lib/bb/event.py +++ b/lib/bb/event.py @@ -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""" diff --git a/lib/bb/parse/ast.py b/lib/bb/parse/ast.py index 547ea679b..1180911a7 100644 --- a/lib/bb/parse/ast.py +++ b/lib/bb/parse/ast.py @@ -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) diff --git a/lib/bb/ui/knotty.py b/lib/bb/ui/knotty.py index f330c084d..997eb3fe8 100644 --- a/lib/bb/ui/knotty.py +++ b/lib/bb/ui/knotty.py @@ -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 -- cgit 1.2.3-korg