[oe-commits] [openembedded-core] 02/10: blacklist.bbclass: fix for multilib

git at git.openembedded.org git at git.openembedded.org
Wed Apr 12 18:35:29 UTC 2017


This is an automated email from the git hooks/post-receive script.

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

commit d3200161b8cfcc7be71c8f71607469ab2f9ff4d8
Author: Robert Yang <liezhi.yang at windriver.com>
AuthorDate: Wed Apr 12 02:26:31 2017 -0700

    blacklist.bbclass: fix for multilib
    
    * Fixed:
      The netmap has been blacklisted in
      meta-networking/recipes-kernel/netmap/netmap_git.bb, but lib32-netmap still can
      be built (suppose it doesn't depend on another broken recipe netmap-modules, it
      is a little complicated, will talk below):
      $ bitbake lib32-netmap
    
      This is because of the old code masks on bb.event.ConfigParsed which can only
      handle global blacklist, netmap sets blacklist in the recipe, so it can't be
      handled, and lib32-netmap can be built. which was incorrect:
      blacklist_multilib_eventhandler[eventmask] = "bb.event.ConfigParsed"
    
      Move multilib code into multilib.bbclass can fix the problem easily:
      $ bitbake lib32-netmap
        ERROR: Nothing PROVIDES 'lib32-netmap'
        ERROR: lib32-netmap was skipped: Recipe is blacklisted: BROKEN: <foo>
    
    * Not fixed
      Another problem is netmap-modules has also been blacklisted in the recipe, and
      the recipe inherits module.bbclass, so multilib.bbclass doesn't handle it as the
      code shows:
        # There should only be one kernel in multilib configs
        # We also skip multilib setup for module packages.
        provides = (e.data.getVar("PROVIDES") or "").split()
        if "virtual/kernel" in provides or bb.data.inherits_class('module-base', e.data):
            raise bb.parse.SkipPackage("We shouldn't have multilib variants for the kernel")
    
      And netmap-modules provides lib32-netmap-modules which is handled in
      multilib_global.bbclass, so bitbake lib32-netmap-modules can't show
      the blacklist message:
      $ bitbake netmap-modules
      ERROR: Nothing PROVIDES 'netmap-modules'
      ERROR: netmap-modules was skipped: Recipe is blacklisted: BROKEN: <foo>
      ERROR: netmap-modules was skipped: We shouldn't have multilib variants for the kernel
    
      $ bitbake lib32-netmap-modules
      ERROR: Nothing PROVIDES 'lib32-netmap-modules'. Close matches:
        netmap-modules
        netmap-modules
        lib32-fbset-modes
    
      Note the different messages between netmap-modules and lib32-netmap-modules.
      This is because multilib.bbclass doesn't handle the "module" recipe so
      there is no PN called lib32-netmap-modules, therefore blacklist.bbclass can't
      handle it.
    
      Note, there are two "netmap-modules" which needs to be fixed later.
    
    Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/classes/blacklist.bbclass | 25 -------------------------
 meta/classes/multilib.bbclass  |  6 ++++++
 2 files changed, 6 insertions(+), 25 deletions(-)

diff --git a/meta/classes/blacklist.bbclass b/meta/classes/blacklist.bbclass
index 3413a5b..e58564c 100644
--- a/meta/classes/blacklist.bbclass
+++ b/meta/classes/blacklist.bbclass
@@ -12,31 +12,6 @@
 #   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')
-    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):
-                e.data.setVarFlag('PNBLACKLIST', newpkg, reason)
-}
-
 python () {
     blacklist = d.getVarFlag('PNBLACKLIST', d.getVar('PN'))
 
diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass
index 401e0c2..ab04597 100644
--- a/meta/classes/multilib.bbclass
+++ b/meta/classes/multilib.bbclass
@@ -53,6 +53,12 @@ python multilib_virtclass_handler () {
  
     override = ":virtclass-multilib-" + variant
 
+    blacklist = e.data.getVarFlag('PNBLACKLIST', e.data.getVar('PN'))
+    if blacklist:
+        pn_new = variant + "-" + e.data.getVar('PN')
+        if not e.data.getVarFlag('PNBLACKLIST', pn_new):
+            e.data.setVarFlag('PNBLACKLIST', pn_new, blacklist)
+
     e.data.setVar("MLPREFIX", variant + "-")
     e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False))
     e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override)

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


More information about the Openembedded-commits mailing list