[OE-core] [PATCH 1/1] devupstream.bbclass: Disable devupstream when multilib is enabled

Richard Purdie richard.purdie at linuxfoundation.org
Sun Jun 30 08:04:42 UTC 2019


On Fri, 2019-06-28 at 20:15 +0800, Robert Yang wrote:
> 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 at windriver.com>
> ---
>  meta/classes/devupstream.bbclass | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/meta/classes/devupstream.bbclass
> b/meta/classes/devupstream.bbclass
> index 7780c54..25403da 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")


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



More information about the Openembedded-core mailing list