Patchwork [bitbake-devel] bitbake & hob: reparse config files, when sanity check updates bblayers.conf

login
register
mail settings
Submitter Cristiana Voicu
Date Feb. 12, 2013, 10:11 a.m.
Message ID <1360663886-9545-1-git-send-email-cristiana.voicu@intel.com>
Download mbox | patch
Permalink /patch/44503/
State New
Headers show

Comments

Cristiana Voicu - Feb. 12, 2013, 10:11 a.m.
I've sent a patch to poky, with some changes in sanity.bbclass. When bblayers.conf
is updated, it updates also a variable to know when to reparse configuration files.
This patch contains the changes to reparse conf files, after a sanity check which
changes bblayers.conf.

[YOCTO #3213]
Signed-off-by: Cristiana Voicu <cristiana.voicu@intel.com>
---
 bitbake/lib/bb/cooker.py                    |   14 ++++++++++----
 bitbake/lib/bb/ui/crumbs/hobeventhandler.py |    4 ++++
 2 files changed, 14 insertions(+), 4 deletions(-)
Richard Purdie - Feb. 12, 2013, 1:07 p.m.
On Tue, 2013-02-12 at 12:11 +0200, Cristiana Voicu wrote:
> I've sent a patch to poky, with some changes in sanity.bbclass. When bblayers.conf
> is updated, it updates also a variable to know when to reparse configuration files.
> This patch contains the changes to reparse conf files, after a sanity check which
> changes bblayers.conf.
> 
> [YOCTO #3213]
> Signed-off-by: Cristiana Voicu <cristiana.voicu@intel.com>
> ---
>  bitbake/lib/bb/cooker.py                    |   14 ++++++++++----
>  bitbake/lib/bb/ui/crumbs/hobeventhandler.py |    4 ++++
>  2 files changed, 14 insertions(+), 4 deletions(-)

Can we rename this variable please, its not well namespaced.
BB_INVALIDCONF would probably be a better name to indicate what the
problem is, not the solution and the BB prefix indicates its something
BitBake is expected to act upon.

Cheers,

Richard

Patch

diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index f70a04f..d31b93c 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -977,10 +977,16 @@  class BBCooker:
             bb.fetch.fetcher_init(data)
         bb.codeparser.parser_cache_init(data)
         bb.event.fire(bb.event.ConfigParsed(), data)
-        bb.parse.init_parser(data)
-        data.setVar('BBINCLUDED',bb.parse.get_file_depends(data))
-        self.configuration.data = data
-        self.configuration.data_hash = data.get_hash()
+
+        if data.getVar("REPARSE_NEEDED") is True:
+            data.setVar("REPARSE_NEEDED", False)
+            self.parseConfigurationFiles(self.configuration.prefile,
+                                         self.configuration.postfile)
+        else:
+            bb.parse.init_parser(data)
+            data.setVar('BBINCLUDED',bb.parse.get_file_depends(data))
+            self.configuration.data = data
+            self.configuration.data_hash = data.get_hash()
 
     def handleCollections( self, collections ):
         """Handle collections"""
diff --git a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
index d953f34..637375f 100644
--- a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
+++ b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
@@ -202,6 +202,10 @@  class HobHandler(gobject.GObject):
             self.run_next_command()
 
         elif isinstance(event, bb.event.SanityCheckPassed):
+            reparse = self.runCommand(["getVariable", "REPARSE_NEEDED"]) or None
+            if reparse is True:
+                self.runCommand(["setVariable", "REPARSE_NEEDED", False])
+                self.runCommand(["parseConfigurationFiles", "", ""])
             self.run_next_command()
 
         elif isinstance(event, bb.event.SanityCheckFailed):