[2/2] multilib: skip packages that provide virtual/kernel

Submitted by Bruce Ashfield on Jan. 31, 2013, 6:31 p.m. | Patch ID: 43773


Message ID 828b1143477da079956a5541f8cc66c07ab6a3cc.1359656303.git.bruce.ashfield@windriver.com
State Accepted
Commit 12e76e123f66c36910f1fadece620024b2264a26
Headers show

Commit Message

Bruce Ashfield Jan. 31, 2013, 6:31 p.m.
Rather than keying on recipes that inherit kernel.bbclass, we should
be checking for providers of virtual/kernel when skipping kernel
recipes in multlib builds.

Not all providers of virtual/kernel inherit kernel.bbclass (notably
linux-dummy), so checking on the provider is a more complete check.

We need to be sure to check for inheritance of module-base as well, this
allows for packages that provides modules to avoid the multilib renaming.

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
 meta/classes/multilib.bbclass |    4 +++-
 meta/lib/oe/classextend.py    |    2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

Patch hide | download patch | download mbox

diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass
index f5f3c69..f1696b6 100644
--- a/meta/classes/multilib.bbclass
+++ b/meta/classes/multilib.bbclass
@@ -10,7 +10,9 @@  python multilib_virtclass_handler () {
     e.data.setVar('STAGING_KERNEL_DIR', e.data.getVar('STAGING_KERNEL_DIR', True))
     # There should only be one kernel in multilib configs
-    if bb.data.inherits_class('kernel', e.data) or bb.data.inherits_class('module-base', e.data):
+    # We also skip multilib setup for module packages.
+    provides = (e.data.getVar("PROVIDES", True) 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")
     if bb.data.inherits_class('image', e.data):
diff --git a/meta/lib/oe/classextend.py b/meta/lib/oe/classextend.py
index 19e1254..61cbb8f 100644
--- a/meta/lib/oe/classextend.py
+++ b/meta/lib/oe/classextend.py
@@ -5,7 +5,7 @@  class ClassExtender(object):
         self.pkgs_mapping = []
     def extend_name(self, name):
-        if name.startswith("kernel-module"):
+        if name.startswith("kernel-module") or name == "virtual/kernel":
             return name
         if name.startswith("rtld"):
             return name