From: Ross Burton Date: Mon, 2 Feb 2015 15:09:25 +0000 (+0000) Subject: data_smart: split expanded removal values when handling _remove X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=207013b6dde82f9654f9be996695c8335b95a288;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git data_smart: split expanded removal values when handling _remove Given these assignments: TEST="a b c d" TEST_remove = "b d" TEST evaluates to "a c". However, if the _remove override is given as a variable: TEST="a b c d" FOO = "b d" TEST_remove = "${FOO} TEST evaluates to "a b c d", because when FOO is expanded it isn't split into a list. Solve this by splitting all members of removeactive once they've been expanded. [ YOCTO #7272 ] Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- diff --git a/lib/bb/data_smart.py b/lib/bb/data_smart.py index b1ea33fc306..7bb7b4aae3f 100644 --- a/lib/bb/data_smart.py +++ b/lib/bb/data_smart.py @@ -621,7 +621,8 @@ class DataSmart(MutableMapping): cachename = var + "[" + flag + "]" value = self.expand(value, cachename) if value and flag == "_content" and local_var is not None and "_removeactive" in local_var: - removes = [self.expand(r) for r in local_var["_removeactive"]] + removes = [self.expand(r).split() for r in local_var["_removeactive"]] + removes = reduce(lambda a, b: a+b, removes, []) filtered = filter(lambda v: v not in removes, value.split()) value = " ".join(filtered)