[oe-commits] [bitbake] branch master-next updated: parse/ast, event: Ensure we reset registered handlers during parsing

git at git.openembedded.org git at git.openembedded.org
Tue Jun 14 12:13:23 UTC 2016


rpurdie pushed a commit to branch master-next
in repository bitbake.

The following commit(s) were added to refs/heads/master-next by this push:
       new  0219271   parse/ast, event: Ensure we reset registered handlers during parsing
0219271 is described below

commit 0219271d4130c1f4cf071c7577a4101c54c04921
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
AuthorDate: Tue Jun 14 12:48:37 2016 +0100

    parse/ast, event: Ensure we reset registered handlers during parsing
    
    When parsing, we should reset the event handlers we registered when
    done. If we don't do this, parse order may change the build, depending
    on what the parse handlers do to the metadata.
    
    This issue showed up as a basehash change:
    
    ERROR: Bitbake's cached basehash does not match the one we just generated (
    /media/build1/poky/meta/recipes-core/meta/nativesdk-buildtools-perl-dummy.bb.do_unpack)!
    
    This is due to the eventhandler in nativesdk.bbclass being run, despite
    this .bb file not inheriting nativesdk.bbclass. The parse order was
    different between the signature generation and the main multithreaded
    parse.
    
    Diffsigs showed:
    
    bitbake-diffsigs 1.0-r2.do_unpack.sigbasedata.*
    basehash changed from 887d1c25962156cae859c1542e69a8d7 to cb84fcfafe15fc92fb7ab8c6d97014ca
    Variable PN value changed from 'nativesdk-buildtools-perl-dummy' to '${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}'
    
    with PN being set by the event handler.
    
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 lib/bb/event.py     | 7 +++++++
 lib/bb/parse/ast.py | 4 +++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/lib/bb/event.py b/lib/bb/event.py
index 6fb3712..9b4a4f9 100644
--- a/lib/bb/event.py
+++ b/lib/bb/event.py
@@ -227,6 +227,13 @@ def remove(name, handler):
     """Remove an Event handler"""
     _handlers.pop(name)
 
+def get_handlers():
+    return _handlers
+
+def set_handlers(handlers):
+    global _handlers
+    _handlers = handlers
+
 def set_eventfilter(func):
     global _eventfilter
     _eventfilter = func
diff --git a/lib/bb/parse/ast.py b/lib/bb/parse/ast.py
index 548929f..8b9baa7 100644
--- a/lib/bb/parse/ast.py
+++ b/lib/bb/parse/ast.py
@@ -306,7 +306,8 @@ def handleInherit(statements, filename, lineno, m):
     statements.append(InheritNode(filename, lineno, classes))
 
 def finalize(fn, d, variant = None):
-    all_handlers = {}
+    saved_handlers = bb.event.get_handlers().copy()
+
     for var in d.getVar('__BBHANDLERS', False) or []:
         # try to add the handler
         handlerfn = d.getVarFlag(var, "filename", False)
@@ -331,6 +332,7 @@ def finalize(fn, d, variant = None):
     d.setVar('BBINCLUDED', bb.parse.get_file_depends(d))
 
     bb.event.fire(bb.event.RecipeParsed(fn), d)
+    bb.event.set_handlers(saved_handlers)
 
 def _create_variants(datastores, names, function, onlyfinalise):
     def create_variant(name, orig_d, arg = None):

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list