[OE-core] [PATCH] base.bbclass: Fix PACKAGECONFIG issues with native and nativesdk BBCLASSEXTEND recipes (and multilib)

Martin Jansa martin.jansa at gmail.com
Fri Apr 13 12:43:54 UTC 2012


On Thu, Apr 12, 2012 at 02:04:18PM +0100, Richard Purdie wrote:
> This patch fixes up the issues that were being seen where BBCLASSEXTEND and
> PACKAGECONFIG were interacting badly. It also ensures PACKAGECONFIG interacts
> properly with multilib builds.
> 
> Ideally some of this code will be abstracted into lib/oe/classextend.py but
> at this point in release more invasive changes like this are inappropriate.
> 
> This patch also removed empty strings from expressions rather than
> passing them around as this was complicating the additional code
> unnecessarily.
> 
> The patch was verified against the OE-Core metadata where the return values of 
> expandFilter() were sanity checked by hand for native/nativesdk and
> multilib combinations.

I can confirm it also fixes gtk+-native depends, cannot do more tests
now.

meta-oe people could be interested in this patch
http://git.openembedded.org/meta-openembedded-contrib/commit/?h=jansa/xorg&id=1ab99af784f5f1564f28f6afc4718d630b42a606
when this change hits oe-core

> [YOCTO #2225]
> 
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
> ---
> diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
> index 2e8a0b0..3c9d76c 100644
> --- a/meta/classes/base.bbclass
> +++ b/meta/classes/base.bbclass
> @@ -305,9 +305,32 @@ python () {
>      pkgconfigflags = d.getVarFlags("PACKAGECONFIG") or {}
>      if pkgconfigflags:
>          pkgconfig = (d.getVar('PACKAGECONFIG', True) or "").split()
> +        pn = d.getVar("PN", True)
> +        mlprefix = d.getVar("MLPREFIX", True)
> +
> +        def expandFilter(appends, extension, prefix):
> +            appends = bb.utils.explode_deps(d.expand(" ".join(appends)))
> +            newappends = []
> +            for a in appends:
> +               if a.endswith("-native") or a.endswith("-cross"):
> +                   newappends.append(a)
> +               elif a.startswith("virtual/"):
> +                   subs = a.split("/", 1)[1]
> +                   newappends.append("virtual/" + prefix + subs + extension)
> +               else:
> +                   newappends.append(prefix + a + extension)
> +            return newappends
> +
>          def appendVar(varname, appends):
>              if not appends:
>                  return
> +            if varname.find("DEPENDS") != -1:
> +                if pn.endswith("-nativesdk"):
> +                    appends = expandFilter(appends, "-nativesdk", "")
> +                if pn.endswith("-native"):
> +                    appends = expandFilter(appends, "-native", "")
> +                if mlprefix:
> +                    appends = expandFilter(appends, "", mlprefix)
>              varname = d.expand(varname)
>              d.appendVar(varname, " " + " ".join(appends))
>  
> @@ -324,11 +347,14 @@ python () {
>              elif len(items) == 4:
>                  enable, disable, depend, rdepend = items
>              if flag in pkgconfig:
> -                extradeps.append(depend)
> -                extrardeps.append(rdepend)
> -                extraconf.append(enable)
> -            else:
> -                extraconf.append(disable)
> +                if depend:
> +                    extradeps.append(depend)
> +                if rdepend:
> +                    extrardeps.append(rdepend)
> +                if enable:
> +                    extraconf.append(enable)
> +            elif disable:
> +                    extraconf.append(disable)
>          appendVar('DEPENDS', extradeps)
>          appendVar('RDEPENDS_${PN}', extrardeps)
>          appendVar('EXTRA_OECONF', extraconf)
> 
> 
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20120413/86660c3a/attachment-0002.sig>


More information about the Openembedded-core mailing list