From f217b65f124fd81c15d48e2381bf2f575b96da0c Mon Sep 17 00:00:00 2001 From: Paul Eggleton Date: Mon, 3 Apr 2017 11:19:03 +1200 Subject: [PATCH] bitbake: lib/bb/data: fix dependency handling for contains and multiple values The code that determines variable dependencies uses the codeparser to find references to "contains" type operations e.g. bb.utils.contains(). That function can take multiple items to check, and all specified items have to be present. However this code didn't handle that - it assumed that only one item would be specified and thus it was treating the multiple items as a single item with spaces in between. Split the value and check if all words are present in order to determine whether the check is "set" or "unset". (Bitbake rev: 272f1245acdd4fb85cb78612aa03627a9c246d8f) Signed-off-by: Paul Eggleton Signed-off-by: Richard Purdie --- bitbake/lib/bb/data.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/bitbake/lib/bb/data.py b/bitbake/lib/bb/data.py index a85cb3abff..0403754dee 100644 --- a/bitbake/lib/bb/data.py +++ b/bitbake/lib/bb/data.py @@ -296,11 +296,13 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d): newvalue = "" for k in sorted(contains): l = (d.getVar(k) or "").split() - for word in sorted(contains[k]): - if word in l: - newvalue += "\n%s{%s} = Set" % (k, word) + for item in sorted(contains[k]): + for word in item.split(): + if not word in l: + newvalue += "\n%s{%s} = Unset" % (k, item) + break else: - newvalue += "\n%s{%s} = Unset" % (k, word) + newvalue += "\n%s{%s} = Set" % (k, item) if not newvalue: return value if not value: