diff options
Diffstat (limited to 'poky/meta/classes/multilib.bbclass')
-rw-r--r-- | poky/meta/classes/multilib.bbclass | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/poky/meta/classes/multilib.bbclass b/poky/meta/classes/multilib.bbclass index 519c1a55b..6c6499a23 100644 --- a/poky/meta/classes/multilib.bbclass +++ b/poky/meta/classes/multilib.bbclass @@ -11,8 +11,12 @@ python multilib_virtclass_handler () { # 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) or "make-mod-scripts" in e.data.getVar("PN"): - raise bb.parse.SkipRecipe("We shouldn't have multilib variants for the kernel") + non_ml_recipes = d.getVar('NON_MULTILIB_RECIPES').split() + bpn = e.data.getVar("BPN") + if "virtual/kernel" in provides or \ + bb.data.inherits_class('module-base', e.data) or \ + bpn in non_ml_recipes: + raise bb.parse.SkipRecipe("We shouldn't have multilib variants for %s" % bpn) save_var_name=e.data.getVar("MULTILIB_SAVE_VARNAME") or "" for name in save_var_name.split(): @@ -35,6 +39,10 @@ python multilib_virtclass_handler () { return if bb.data.inherits_class('cross-canadian', e.data): + # Multilib cross-candian should use the same nativesdk sysroot without MLPREFIX + e.data.setVar("RECIPE_SYSROOT", "${WORKDIR}/recipe-sysroot") + e.data.setVar("STAGING_DIR_TARGET", "${WORKDIR}/recipe-sysroot") + e.data.setVar("STAGING_DIR_HOST", "${WORKDIR}/recipe-sysroot") e.data.setVar("MLPREFIX", variant + "-") override = ":virtclass-multilib-" + variant e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override) @@ -46,10 +54,10 @@ python multilib_virtclass_handler () { if bb.data.inherits_class('nativesdk', e.data) or bb.data.inherits_class('crosssdk', e.data): raise bb.parse.SkipRecipe("We can't extend nativesdk recipes") - if bb.data.inherits_class('allarch', e.data) and not bb.data.inherits_class('packagegroup', e.data): + if bb.data.inherits_class('allarch', e.data) and not d.getVar('MULTILIB_VARIANTS') \ + and not bb.data.inherits_class('packagegroup', e.data): raise bb.parse.SkipRecipe("Don't extend allarch recipes which are not packagegroups") - # Expand this since this won't work correctly once we set a multilib into place e.data.setVar("ALL_MULTILIB_PACKAGE_ARCHS", e.data.getVar("ALL_MULTILIB_PACKAGE_ARCHS")) @@ -65,12 +73,11 @@ python multilib_virtclass_handler () { e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False)) e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override) - # Expand the WHITELISTs with multilib prefix - for whitelist in ["WHITELIST_GPL-3.0", "LGPLv2_WHITELIST_GPL-3.0"]: - pkgs = e.data.getVar(whitelist) - for pkg in pkgs.split(): - pkgs += " " + variant + "-" + pkg - e.data.setVar(whitelist, pkgs) + # Expand WHITELIST_GPL-3.0 with multilib prefix + pkgs = e.data.getVar("WHITELIST_GPL-3.0") + for pkg in pkgs.split(): + pkgs += " " + variant + "-" + pkg + e.data.setVar("WHITELIST_GPL-3.0", pkgs) # DEFAULTTUNE can change TARGET_ARCH override so expand this now before update_data newtune = e.data.getVar("DEFAULTTUNE_" + "virtclass-multilib-" + variant, False) @@ -117,6 +124,7 @@ python __anonymous () { clsextend.map_variable("INITSCRIPT_PACKAGES") clsextend.map_variable("USERADD_PACKAGES") clsextend.map_variable("SYSTEMD_PACKAGES") + clsextend.map_variable("UPDATERCPN") } PACKAGEFUNCS_append = " do_package_qa_multilib" @@ -131,7 +139,8 @@ python do_package_qa_multilib() { i = i[len('virtual/'):] if (not i.startswith('kernel-module')) and (not i.startswith(mlprefix)) and \ (not 'cross-canadian' in i) and (not i.startswith("nativesdk-")) and \ - (not i.startswith("rtld")) and (not i.startswith('kernel-vmlinux')): + (not i.startswith("rtld")) and (not i.startswith('kernel-vmlinux')) \ + and (not i.startswith("kernel-image")): candidates.append(i) if len(candidates) > 0: msg = "%s package %s - suspicious values '%s' in %s" \ @@ -142,6 +151,10 @@ python do_package_qa_multilib() { if not ml: return + # exception for ${MLPREFIX}target-sdk-provides-dummy + if 'target-sdk-provides-dummy' in d.getVar('PN'): + return + packages = d.getVar('PACKAGES') for pkg in packages.split(): check_mlprefix(pkg, 'RDEPENDS', ml) |