[yocto] [PATCH] poky-sanity.bbclass: update conf/templateconf.cfg for existing installations

Bill Randle william.c.randle at intel.com
Mon Mar 21 11:24:48 PDT 2016


Updates of existing installations for the meta-yocto to meta-poky transition will
update the bblayers.conf file, but not the templateconf.cfg file. This
patch updates the template file to point to meta-poky/conf, if necessary.

Fixes [YOCTO #9278]

Signed-off-by: Bill Randle <william.c.randle at intel.com>
---
 meta-poky/classes/poky-sanity.bbclass | 42 +++++++++++++++++++++++++++++++----
 meta-poky/conf/layer.conf             |  2 +-
 2 files changed, 39 insertions(+), 5 deletions(-)

diff --git a/meta-poky/classes/poky-sanity.bbclass b/meta-poky/classes/poky-sanity.bbclass
index 287a9e3..4add57e 100644
--- a/meta-poky/classes/poky-sanity.bbclass
+++ b/meta-poky/classes/poky-sanity.bbclass
@@ -3,10 +3,44 @@
 python poky_update_bblayersconf() {
     current_version = int(d.getVar('POKY_BBLAYERS_CONF_VERSION', True) or -1)
     latest_version = int(d.getVar('REQUIRED_POKY_BBLAYERS_CONF_VERSION', True) or -1)
+    if current_version == -1 or latest_version == -1:
+        # one or the other missing => malformed configuration
+        raise NotImplementedError("You need to update bblayers.conf manually for this version transition")
 
-    # No version transitions here yet
-    raise NotImplementedError("You need to update bblayers.conf manually for this version transision")
+    success = True
+
+    # check for out of date templateconf.cfg file
+    lines = []
+    fn = os.path.join(d.getVar('TOPDIR', True), 'conf/templateconf.cfg')
+
+    lines = sanity_conf_read(fn)
+    index, meta_yocto_line = sanity_conf_find_line(r'^meta-yocto/', lines)
+    if meta_yocto_line:
+        lines[index] = meta_yocto_line.replace('meta-yocto', 'meta-poky')
+        with open(fn, "w") as f:
+            f.write(''.join(lines))
+        bb.note("Your conf/templateconf.cfg file was updated from meta-yocto to meta-poky")
+
+    # add any additional layer checks/changes here
+
+    if success:
+        current_version = latest_version
+        bblayers_fn = bblayers_conf_file(d)
+        lines = sanity_conf_read(bblayers_fn)
+        # sanity_conf_update() will erroneously find a match when the var name
+        # is used in a comment, so do our own here. The code below can be
+        # removed when sanity_conf_update() is fixed in OE-Core.
+        #sanity_conf_update(bblayers_fn, lines, 'POKY_BBLAYERS_CONF_VERSION', current_version)
+        index, line = sanity_conf_find_line(r'^POKY_BBLAYERS_CONF_VERSION', lines)
+        lines[index] = 'POKY_BBLAYERS_CONF_VERS = "%d"\n' % current_version
+        with open(bblayers_fn, "w") as f:
+            f.write(''.join(lines))
+        bb.note("Your conf/bblayers.conf has been automatically updated.")
+    if success:
+        return
+
+    raise NotImplementedError("You need to update bblayers.conf manually for this version transition")
 }
 
-# Prepend to ensure our function runs before the OE-Core one
-BBLAYERS_CONF_UPDATE_FUNCS =+ "conf/bblayers.conf:POKY_BBLAYERS_CONF_VERSION:REQUIRED_POKY_BBLAYERS_CONF_VERSION:poky_update_bblayersconf"
+# ensure our function runs after the OE-Core one
+BBLAYERS_CONF_UPDATE_FUNCS += "conf/bblayers.conf:POKY_BBLAYERS_CONF_VERSION:REQUIRED_POKY_BBLAYERS_CONF_VERSION:poky_update_bblayersconf"
diff --git a/meta-poky/conf/layer.conf b/meta-poky/conf/layer.conf
index b5ffd9e..8b7b33d 100644
--- a/meta-poky/conf/layer.conf
+++ b/meta-poky/conf/layer.conf
@@ -15,4 +15,4 @@ LAYERVERSION_yocto = "3"
 
 LAYERDEPENDS_yocto = "core"
 
-REQUIRED_POKY_BBLAYERS_CONF_VERSION = "1"
+REQUIRED_POKY_BBLAYERS_CONF_VERSION = "2"
-- 
2.5.0




More information about the yocto mailing list