[oe-commits] Otavio Salvador : blacklist.bbclass: Avoid blacklist specific handle in base.bbclass

git at git.openembedded.org git at git.openembedded.org
Tue Aug 13 21:55:59 UTC 2013


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

Author: Otavio Salvador <otavio at ossystems.com.br>
Date:   Sat Aug 10 17:19:30 2013 -0300

blacklist.bbclass: Avoid blacklist specific handle in base.bbclass

base.bbclass had code which handled the PNBLACKLIST in case of
multilib use. This is better to be done in the blacklist.bbclass so it
has all logic in a single place.

Signed-off-by: Otavio Salvador <otavio at ossystems.com.br>
Signed-off-by: Saul Wold <sgw at linux.intel.com>

---

 meta/classes/base.bbclass      |   10 ----------
 meta/classes/blacklist.bbclass |   25 +++++++++++++++++++++++++
 2 files changed, 25 insertions(+), 10 deletions(-)

diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index 9974879..98b823e 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -141,7 +141,6 @@ def pkgarch_mapping(d):
 def preferred_ml_updates(d):
     # If any PREFERRED_PROVIDER or PREFERRED_VERSION are set,
     # we need to mirror these variables in the multilib case;
-    # likewise the PNBLACKLIST flags.
     multilibs = d.getVar('MULTILIBS', True) or ""
     if not multilibs:
         return
@@ -154,21 +153,12 @@ def preferred_ml_updates(d):
 
     versions = []
     providers = []
-    blacklists = d.getVarFlags('PNBLACKLIST') or {}
     for v in d.keys():
         if v.startswith("PREFERRED_VERSION_"):
             versions.append(v)
         if v.startswith("PREFERRED_PROVIDER_"):
             providers.append(v)
 
-    for pkg, reason in blacklists.items():
-        if pkg.endswith(("-native", "-crosssdk")) or pkg.startswith(("nativesdk-", "virtual/nativesdk-")) or 'cross-canadian' in pkg:
-            continue
-        for p in prefixes:
-            newpkg = p + "-" + pkg
-            if not d.getVarFlag('PNBLACKLIST', newpkg, True):
-                d.setVarFlag('PNBLACKLIST', newpkg, reason)
-
     for v in versions:
         val = d.getVar(v, False)
         pkg = v.replace("PREFERRED_VERSION_", "")
diff --git a/meta/classes/blacklist.bbclass b/meta/classes/blacklist.bbclass
index 75abd99..a0141a8 100644
--- a/meta/classes/blacklist.bbclass
+++ b/meta/classes/blacklist.bbclass
@@ -12,6 +12,31 @@
 #   PNBLACKLIST[pn] = "message"
 #
 
+# Cope with PNBLACKLIST flags for multilib case
+addhandler blacklist_multilib_eventhandler
+blacklist_multilib_eventhandler[eventmask] = "bb.event.ConfigParsed"
+python blacklist_multilib_eventhandler() {
+    multilibs = e.data.getVar('MULTILIBS', True)
+    if not multilibs:
+        return
+
+    # this block has been copied from base.bbclass so keep it in sync
+    prefixes = []
+    for ext in multilibs.split():
+        eext = ext.split(':')
+        if len(eext) > 1 and eext[0] == 'multilib':
+            prefixes.append(eext[1])
+
+    blacklists = e.data.getVarFlags('PNBLACKLIST') or {}
+    for pkg, reason in blacklists.items():
+        if pkg.endswith(("-native", "-crosssdk")) or pkg.startswith(("nativesdk-", "virtual/nativesdk-")) or 'cross-canadian' in pkg:
+            continue
+        for p in prefixes:
+            newpkg = p + "-" + pkg
+            if not e.data.getVarFlag('PNBLACKLIST', newpkg, True):
+                e.data.setVarFlag('PNBLACKLIST', newpkg, reason)
+}
+
 python () {
     blacklist = d.getVarFlag('PNBLACKLIST', d.getVar('PN', True), True)
 



More information about the Openembedded-commits mailing list