summaryrefslogtreecommitdiff
path: root/meta-phosphor/classes/obmc-phosphor-utils.bbclass
diff options
context:
space:
mode:
authorBrad Bishop <bradleyb@fuzziesquirrel.com>2016-08-24 21:08:35 +0300
committerPatrick Williams <patrick@stwcx.xyz>2016-09-06 04:55:38 +0300
commit167aaae32fdf48950b620e2059784e9d031ec76b (patch)
treeb6922a01d9a7c53451f7e9a94ec5705ca30a91fe /meta-phosphor/classes/obmc-phosphor-utils.bbclass
parent522234c8e22c43ac7ece5b0b33b379c94dc49277 (diff)
downloadopenbmc-167aaae32fdf48950b620e2059784e9d031ec76b.tar.xz
utils: add compose list utilities
Utilities for generating lists from an arbitrary number of other lists. LIST1 = "0 1" LIST2 = "x y" FORMAT = "str{0}-fmt{1}" LIST3="${@compose_list(d, 'FORMAT', 'LIST1', 'LIST2')}" results in after expansion: LIST3="str0-fmtx str0-fmty str1-fmtx str1-fmty" LIST1 = "0 1 2" LIST2 = "a b c" LIST3 = "x y z"" FORMAT = "python{0}-str{1}-fmt{2}" LIST3="${@compose_list_zip(d, 'FORMAT', 'LIST1', 'LIST2', 'LIST3')}" results in after expansion: LIST3="python0-stra-fmtx python1-strb-fmty python2-strc-fmtz" Change-Id: Ibcdbd579fa628803a279c65042303dd8336edcaf Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'meta-phosphor/classes/obmc-phosphor-utils.bbclass')
-rw-r--r--meta-phosphor/classes/obmc-phosphor-utils.bbclass15
1 files changed, 15 insertions, 0 deletions
diff --git a/meta-phosphor/classes/obmc-phosphor-utils.bbclass b/meta-phosphor/classes/obmc-phosphor-utils.bbclass
index 036af9b17..b5073a635 100644
--- a/meta-phosphor/classes/obmc-phosphor-utils.bbclass
+++ b/meta-phosphor/classes/obmc-phosphor-utils.bbclass
@@ -27,3 +27,18 @@ def set_append(d, var, val, sep=' '):
def listvar_to_list(d, list_var, sep=' '):
return filter(bool, (d.getVar(list_var, True) or '').split(sep))
+
+
+def compose_list(d, fmtvar, *listvars, **kw):
+ import itertools
+ fmt = d.getVar(fmtvar, True)
+ lists = [listvar_to_list(d, x) for x in listvars]
+ lst = [fmt.format(*x) for x in itertools.product(*lists)]
+ return (kw.get('sep') or ' ').join(lst)
+
+
+def compose_list_zip(d, fmtvar, *listvars, **kw):
+ fmt = d.getVar(fmtvar, True)
+ lists = [listvar_to_list(d, x) for x in listvars]
+ lst = [fmt.format(*x) for x in zip(*lists)]
+ return (kw.get('sep') or ' ').join(lst)