]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
devupstream.bbclass: Disable devupstream when multilib is enabled rbt/dev
authorRobert Yang <liezhi.yang@windriver.com>
Fri, 28 Jun 2019 11:54:04 +0000 (19:54 +0800)
committerRobert Yang <liezhi.yang@windriver.com>
Fri, 28 Jun 2019 12:25:41 +0000 (20:25 +0800)
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 <liezhi.yang@windriver.com>
meta/classes/devupstream.bbclass

index 7780c5482c62118af45a6d3522bf0fec63f8e4bd..25403da7735270102cddb2882340cc2054292b61 100644 (file)
 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")