From patchwork Fri Oct 19 14:46:48 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: base.bbclass: Add PKGTRIPLETS and PKGMLTRIPLETS variables Date: Fri, 19 Oct 2012 14:46:48 -0000 From: Richard Purdie X-Patchwork-Id: 38329 Message-Id: <1350658008.2520.26.camel@ted> To: openembedded-core 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 --- 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)