From b10dffaf537bc8bebc034d64afa1f477cd50cccc Mon Sep 17 00:00:00 2001 From: Robert Yang Date: Mon, 28 Nov 2016 01:34:19 -0800 Subject: multilib.bbclass: update DEFAULTTUNE for image recipe Fixed: MACHINE = "qemux86-64" require conf/multilib.conf MULTILIBS = "multilib:lib32" DEFAULTTUNE_virtclass-multilib-lib32 = "x86" $ bitbake -e lib32-core-image-minimal | grep ^TUNE_ARCH= TUNE_ARCH="x86_64" This is incorrect, it should be i686 (or other 32 bit tunes), this makes we can't conditionlly install some packages, for example, the recipe-A sets: COMPATIBLE_HOST = "x86_64.*-linux" Then it only can be installed when TARGET_ARCH is x86_64: IMAGE_INSTALL_x86-64 += "package-A" But it would be error when "bitbake lib32-core-image-minimal": ERROR: lib32-recipe-A was skipped: incompatible with host i686-pokymllib32-linux (not in COMPATIBLE_HOST) This is because TARGET_ARCH is not updated to "i686" when multilib, this patch can fix the problem. Signed-off-by: Robert Yang --- meta/classes/multilib.bbclass | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass index d5a31287a8..5d2d0489be 100644 --- a/meta/classes/multilib.bbclass +++ b/meta/classes/multilib.bbclass @@ -23,6 +23,13 @@ python multilib_virtclass_handler () { overrides = overrides.replace("pn-${PN}", "pn-${PN}:pn-" + pn) e.data.setVar("OVERRIDES", overrides) + def multilib_set_default_tune(): + # DEFAULTTUNE can change TARGET_ARCH override so expand this now before update_data + newtune = e.data.getVar("DEFAULTTUNE_" + "virtclass-multilib-" + variant, False) + if newtune: + e.data.setVar("DEFAULTTUNE", newtune) + e.data.setVar('DEFAULTTUNE_ML_%s' % variant, newtune) + if bb.data.inherits_class('image', e.data): e.data.setVar("MLPREFIX", variant + "-") e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False)) @@ -30,6 +37,9 @@ python multilib_virtclass_handler () { target_vendor = e.data.getVar("TARGET_VENDOR_" + "virtclass-multilib-" + variant, False) if target_vendor: e.data.setVar("TARGET_VENDOR", target_vendor) + + multilib_set_default_tune() + return if bb.data.inherits_class('cross-canadian', e.data): @@ -65,11 +75,7 @@ python multilib_virtclass_handler () { pkgs += " " + variant + "-" + pkg e.data.setVar(whitelist, pkgs) - # DEFAULTTUNE can change TARGET_ARCH override so expand this now before update_data - newtune = e.data.getVar("DEFAULTTUNE_" + "virtclass-multilib-" + variant, False) - if newtune: - e.data.setVar("DEFAULTTUNE", newtune) - e.data.setVar('DEFAULTTUNE_ML_%s' % variant, newtune) + multilib_set_default_tune() } addhandler multilib_virtclass_handler -- cgit 1.2.3-korg