]> code.ossystems Code Review - openembedded-core.git/commitdiff
utils.bbclass/multilib.class: Added misc supporting functions.
authorLianhao Lu <lianhao.lu@intel.com>
Fri, 29 Jul 2011 14:21:58 +0000 (22:21 +0800)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 15 Aug 2011 14:13:33 +0000 (15:13 +0100)
1. Added variable MULTILIB_VARIANTS to store all the instance variants
for multilib extend.

2. Added function all_multilib_tune_values to collect the variable
values for all multilib instance.

3. multilib bbclass handler will save the orignal value of all variables
defined in MULTILIB_SAVE_VARNAME.

Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
meta/classes/multilib.bbclass
meta/classes/utils.bbclass
meta/conf/bitbake.conf
meta/conf/multilib.conf

index 6e1669fb7f6fc5092b48244dd1046feca2378dfc..571b7be9615dd51bd895589300ed9a1938a9b687 100644 (file)
@@ -6,7 +6,12 @@ python multilib_virtclass_handler () {
     variant = e.data.getVar("BBEXTENDVARIANT", True)
     if cls != "multilib" or not variant:
         return
+    save_var_name=e.data.getVar("MULTILIB_SAVE_VARNAME", True) or ""
+    for name in save_var_name.split():
+        val=e.data.getVar(name, True)
+        if val:
+            e.data.setVar(name + "_MULTILIB_ORIGINAL", val)
+
     override = ":virtclass-multilib-" + variant
 
     e.data.setVar("MLPREFIX", variant + "-")
index 8c3a9b87e9404eb5ed0914f0b5be41e196fc2a26..c66c18449a0ef0834463445aab2d6d4db86b09d0 100644 (file)
@@ -341,3 +341,32 @@ def base_set_filespath(path, d):
                for o in overrides.split(":"):
                        filespath.append(os.path.join(p, o))
        return ":".join(filespath)
+
+def extend_variants(d, var, extend, delim=':'):
+       """Return a string of all bb class extend variants for the given extend"""
+       variants = []
+       whole = d.getVar(var, True) or ""
+       for ext in whole.split():
+               eext = ext.split(delim)
+               if len(eext) > 1 and eext[0] == extend:
+                       variants.append(eext[1])
+       return " ".join(variants)
+
+def all_multilib_tune_values(d, var, unique=True):
+       """Return a string of all ${var} in all multilib tune configuration"""
+       values = []
+       value = d.getVar(var, True) or ""
+       if value != "":
+               values.append(value)
+       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)
+               value = localdata.getVar(var, True) or ""
+               if value != "":
+                       values.append(value)
+       if unique:
+               values = set(values)
+       return " ".join(values)
index 7bb68b8dc5235ca7b314e4cb9964c481d2dde4e7..b30951648d4710fcaa6e3eea446e3ea78ae86497 100644 (file)
@@ -749,3 +749,4 @@ BB_HASHTASK_WHITELIST ?= "(.*-cross$|.*-native$|.*-cross-initial$|.*-cross-inter
 BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM USER FILESPATH USERNAME STAGING_DIR_HOST STAGING_DIR_TARGET COREBASE"
 
 MLPREFIX ??= ""
+MULTILIB_VARIANTS ??= ""
index f2a20023553859acd38174d20909e4ef4e5b2cf8..36793d247e4be3a317fad22d064b04b50570dcdf 100644 (file)
@@ -1,6 +1,9 @@
 
 baselib = "${@d.getVar('BASE_LIB_tune-' + (d.getVar('DEFAULTTUNE', True) or 'INVALID'), True) or 'lib'}"
 
+MULTILIB_VARIANTS = "${@extend_variants(d,'MULTILIBS','multilib')}"
+MULTILIB_SAVE_VARNAME = "DEFAULTTUNE"
+
 MULTILIBS ??= "multilib:lib32"
 
 BBCLASSEXTEND_append_pn-acl = " ${MULTILIBS}"