[oe-commits] Richard Purdie : multilib/clsextend: Improve handling of regexps in PACKAGES_DYNAMIC

git at git.openembedded.org git at git.openembedded.org
Mon Oct 22 13:58:12 UTC 2012


Module: openembedded-core.git
Branch: master-next
Commit: 593faec6e0155bdd7a43ee84c24de8ee20287681
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=593faec6e0155bdd7a43ee84c24de8ee20287681

Author: Richard Purdie <richard.purdie at linuxfoundation.org>
Date:   Mon Oct 22 12:20:04 2012 +0000

multilib/clsextend: Improve handling of regexps in PACKAGES_DYNAMIC

Now that PACKAGES_DYNAMIC is more standardised, starting with ^ anchors,
the variable manipulations performed by clsextend for multilib don't work.

This patch at least improves it to hack around the problem and enable
mulitlib builds to work again. If this code doesn't do the right thing, the
recipe is free to override the variable with the correct multilib case.

Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>

---

 meta/classes/multilib.bbclass |    2 +-
 meta/lib/oe/classextend.py    |   16 ++++++++++++++++
 2 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass
index eaaad5f..3824f3b 100644
--- a/meta/classes/multilib.bbclass
+++ b/meta/classes/multilib.bbclass
@@ -75,7 +75,7 @@ python __anonymous () {
     clsextend.map_depends_variable("DEPENDS")
     clsextend.map_packagevars()
     clsextend.map_variable("PROVIDES")
-    clsextend.map_variable("PACKAGES_DYNAMIC")
+    clsextend.map_regexp_variable("PACKAGES_DYNAMIC")
     clsextend.map_variable("PACKAGE_INSTALL")
     clsextend.map_variable("INITSCRIPT_PACKAGES")
 }
diff --git a/meta/lib/oe/classextend.py b/meta/lib/oe/classextend.py
index 86b1e8a..857a6c9 100644
--- a/meta/lib/oe/classextend.py
+++ b/meta/lib/oe/classextend.py
@@ -33,6 +33,22 @@ class ClassExtender(object):
             self.d.setVar(varname, newdata)
         return newdata
 
+    def map_regexp_variable(self, varname, setvar = True):
+        var = self.d.getVar(varname, True)
+        if not var:
+            return ""
+        var = var.split()
+        newvar = []
+        for v in var:
+            if v.startswith("^"):
+                newvar.append("^" + self.extname + "-" + v[1:])
+            else:
+                newvar.append(self.extend_name(v))
+        newdata =  " ".join(newvar)
+        if setvar:
+            self.d.setVar(varname, newdata)
+        return newdata
+
     def map_depends(self, dep):
         if dep.endswith(("-native", "-native-runtime")):
             return dep





More information about the Openembedded-commits mailing list