Patchwork base.bbclass: Add PKGTRIPLETS and PKGMLTRIPLETS variables

login
register
mail settings
Submitter Richard Purdie
Date Oct. 19, 2012, 2:46 p.m.
Message ID <1350658008.2520.26.camel@ted>
Download mbox | patch
Permalink /patch/38329/
State Accepted
Commit f91322edc8b9f2a5906f3908bde2508ae97f2816
Headers show

Comments

Richard Purdie - Oct. 19, 2012, 2:46 p.m.
These variables correspond to the PACKAGE_ARCH list combined with the TARGET_VENDOR
and TARGET_OS values. These can be used to traverse the pkgdata structure.

Setting these once in base.bbclass stops pkgdata needing to recalculate the values
and is also useful for the reworked shlibs code in a patch that will follow this.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---

Patch

diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index f8efbf9..860f390 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -334,6 +334,38 @@  do_build () {
 	:
 }
 
+def set_packagetriplet(d):
+    archs = []
+    tos = []
+    tvs = []
+
+    archs.append(d.getVar("PACKAGE_ARCHS", True).split())
+    tos.append(d.getVar("TARGET_OS", True))
+    tvs.append(d.getVar("TARGET_VENDOR", True))
+
+    def settriplet(d, varname, archs, tos, tvs):
+        triplets = []
+        for i in range(len(archs)):
+            for arch in archs[i]:
+                triplets.append(arch + tvs[i] + "-" + tos[i])
+        triplets.reverse()
+        d.setVar(varname, " ".join(triplets))
+
+    settriplet(d, "PKGTRIPLETS", archs, tos, tvs)
+
+    variants = d.getVar("MULTILIB_VARIANTS", True) or ""
+    for item in variants.split():
+        localdata = bb.data.createCopy(d)
+        overrides = localdata.getVar("OVERRIDES", False) + ":virtclass-multilib-" + item
+        localdata.setVar("OVERRIDES", overrides)
+        bb.data.update_data(localdata)
+
+        archs.append(localdata.getVar("PACKAGE_ARCHS", True).split())
+        tos.append(localdata.getVar("TARGET_OS", True))
+        tvs.append(localdata.getVar("TARGET_VENDOR", True))
+
+    settriplet(d, "PKGMLTRIPLETS", archs, tos, tvs)
+
 python () {
     import exceptions, string, re
 
@@ -521,6 +553,8 @@  python () {
     if ".zip" in srcuri:
         d.appendVarFlag('do_unpack', 'depends', ' unzip-native:do_populate_sysroot')
 
+    set_packagetriplet(d)
+
     # 'multimachine' handling
     mach_arch = d.getVar('MACHINE_ARCH', True)
     pkg_arch = d.getVar('PACKAGE_ARCH', True)