devupstream.bbclass: Disable devupstream when multilib is enabled
cover devupstream.bbclass: Disable devupstream when multilib is enabled
The following changes since commit 9f674a88c781c7092d5b3460922a1579b9fe4bf9:
busybox: Fix typo in syslog initscript (2019-06-27 13:27:54 +0100)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib rbt/dev
http://git.pokylinux.org/cgit.cgi//log/?h=rbt/dev
Robert Yang (1):
devupstream.bbclass: Disable devupstream when multilib is enabled
meta/classes/devupstream.bbclass | 6 ++++++ 1 file changed, 6 insertions(+)
Signature · 1 line
2.7.4
PATCH 1/1 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.
--- meta/classes/devupstream.bbclass | 6 ++++++ 1 file changed, 6 insertions(+)
meta/classes/devupstream.bbclass +6 -0
@@ -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")
Signature · 1 line
2.7.4
Quoted 57 lines · Robert Yang
Fixed:
MACHINE = "qemux86-64"
requireconf/multilib.conf
MULTILIBS = "multilib:lib32"
DEFAULTTUNE_virtclass-multilib-lib32 = "x86"PREFERRED_VERSION_lttng-modules = "2.10.10+git%"
$ bitbake worldNOTE: 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
thePREFERRED_VERSIONis 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:targetOr in a reverse order:
virtual:devupstream:target:virtual:multilib:lib32So disable devupstream when multilib is enabled.
Signed-off-by Robert Yang <[email protected]>--- meta/classes/devupstream.bbclass | 6 ++++++ 1 file changed, 6 insertions(+)meta/classes/devupstream.bbclass +6
-0@@ -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 ""):
Quoted 1 line
bb.error("Don't inherit devupstream, use BBCLASSEXTEND")
This is a bit of a serious problem with devupstream as it means we can't rely upon it for default recipes. We need to file a bug about this and find a way to fix it, perhaps teaching multilib about devupstream so it can set BBCLASSEXTEND accordingly.
Cheers,
Richard
Quoted 57 lines · Richard Purdie
Quoted 56 lines · Robert Yang
Fixed:
MACHINE = "qemux86-64"
requireconf/multilib.conf
MULTILIBS = "multilib:lib32"
DEFAULTTUNE_virtclass-multilib-lib32 = "x86"PREFERRED_VERSION_lttng-modules = "2.10.10+git%"
$ bitbake worldNOTE: 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
thePREFERRED_VERSIONis 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:targetOr in a reverse order:
virtual:devupstream:target:virtual:multilib:lib32So disable devupstream when multilib is enabled.
Signed-off-by Robert Yang <[email protected]>--- meta/classes/devupstream.bbclass | 6 ++++++ 1 file changed, 6 insertions(+)meta/classes/devupstream.bbclass +6
-0@@ -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
Quoted 8 lines
Quoted 2 lines
meta/classes/devupstream.bbclass +0
-0if "devupstream" not in (d.getVar('BBCLASSEXTEND') or ""):
bb.error("Don't inherit devupstream, use BBCLASSEXTEND")This is a bit of a serious problem with devupstream as it means we can't rely upon it for default recipes. We need to file a bug about this and find a way to fix it, perhaps teaching multilib about devupstream so it can set BBCLASSEXTEND accordingly.
I filed a bug and assigned it you:
https://bugzilla.yoctoproject.org/show_bug.cgi?id=13424
After more investigations, it seems that we should modify ast.py:multi_finalize(), although I file the bug in oe-core product.
// Robert
Quoted 6 lines
Cheers,
Richard
Quoted 8 lines · Robert Yang
The following changes since commit
9f674a88c781c7092d5b3460922a1579b9fe4bf9:busybox: Fix typo in syslog initscript (2019-06-27 13:27:54 +0100)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib rbt/dev http://git.pokylinux.org/cgit.cgi//log/?h=rbt/dev
Sorry, here should be oe-core, not poky:
git://git.openembedded.org/openembedded-core-contrib rbt/dev
http://cgit.openembedded.org//log/?h=rbt/dev
// Robert
Quoted 7 lines
Robert Yang (1):
devupstream.bbclass: Disable devupstream when multilib is enabledmeta/classes/devupstream.bbclass | 6 ++++++ 1 file changed, 6 insertions(+)