From 5d9424dfc0d4fb4190eac70b58ef1acb635d9635 Mon Sep 17 00:00:00 2001 From: Robert Yang Date: Fri, 28 Jun 2019 19:54:04 +0800 Subject: devupstream.bbclass: Disable devupstream when multilib is enabled Fixed: MACHINE = "qemux86-64" require conf/multilib.conf MULTILIBS = "multilib:lib32" DEFAULTTUNE_virtclass-multilib-lib32 = "x86" PREFERRED_VERSION_lttng-modules = "2.10.10+git%" $ bitbake world NOTE: preferred version 2.10.10+git% of lttng-modules not available (for item lib32-lttng-modules) NOTE: versions of lttng-modules available: 2.10.10 ERROR: Multiple versions of lttng-modules are due to be built (/path/to/lttng-modules_2.10.10.bb virtual:devupstream:target:/path/to/lttng-modules_2.10.10.bb). Only one version of a given PN should be built in any given build. You likely need to set PREFERRED_VERSION_lttng-modules to select the correct version or don't depend on multiple versions. This is because 2.10.10+git% will be built for non-multilib lttng-modules since the PREFERRED_VERSION is set, but this version doesn't provide lib32-lttng-modules, so 2.10.10 will be built, then the error happens. Bitbake can't extend an extended recipe, for example: virtual:multilib:lib32:virtual:devupstream:target Or in a reverse order: virtual:devupstream:target:virtual:multilib:lib32 So disable devupstream when multilib is enabled. Signed-off-by: Robert Yang --- meta/classes/devupstream.bbclass | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meta/classes/devupstream.bbclass b/meta/classes/devupstream.bbclass index 7780c5482c..25403da773 100644 --- a/meta/classes/devupstream.bbclass +++ b/meta/classes/devupstream.bbclass @@ -19,6 +19,12 @@ CLASSOVERRIDE .= ":class-devupstream" python devupstream_virtclass_handler () { + # bitbake can't extend an extended recipe, for example: + # virtual:multilib:lib32:virtual:devupstream:target + # So disable devupstream when multilib is enabled. + if d.getVar('MULTILIBS'): + raise bb.parse.SkipRecipe("Disable devupstream when multilib is enabled") + # Do nothing if this is inherited, as it's for BBCLASSEXTEND if "devupstream" not in (d.getVar('BBCLASSEXTEND') or ""): bb.error("Don't inherit devupstream, use BBCLASSEXTEND") -- cgit 1.2.3-korg