summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2012-04-12 14:04:18 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-04-13 13:48:45 +0100
commit46db11c4a789034b7040faf127ab865148bedad8 (patch)
treee2c53d91f9f771efcb2d35e7340524ba91e81e71
parent5e3c12313edc4b51ddd432ecbbd3b1f5295b3c14 (diff)
downloadopenembedded-core-46db11c4a789034b7040faf127ab865148bedad8.tar.gz
openembedded-core-46db11c4a789034b7040faf127ab865148bedad8.tar.bz2
openembedded-core-46db11c4a789034b7040faf127ab865148bedad8.tar.xz
openembedded-core-46db11c4a789034b7040faf127ab865148bedad8.zip
base.bbclass: Fix PACKAGECONFIG issues with native and nativesdk BBCLASSEXTEND recipes (and multilib)
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. [YOCTO #2225] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/base.bbclass36
1 files changed, 31 insertions, 5 deletions
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index ef9267a12..02e1ff5b7 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)