]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
bitbake/event/ast: Add RecipePreFinalise event
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 9 Jun 2011 16:30:17 +0000 (17:30 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 9 Jun 2011 21:43:46 +0000 (22:43 +0100)
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>
bitbake/lib/bb/event.py
bitbake/lib/bb/parse/ast.py
bitbake/lib/bb/ui/knotty.py

index a3288b619b995af03c98cebfbd5258c931245731..7d47edb9e72fd639eb429bbf70b21d829c164ffe 100644 (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"""
 
index 547ea679b55848c7831187b6be6735fcfb07fc5a..1180911a7d4fef559aee6ad7e97aa18b03c0ccf5 100644 (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)
 
index f330c084dfc2021cbb695932ac8e1770aef0b02e..997eb3fe89c32814aba353864819f80671149b05 100644 (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