summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2014-09-13 08:50:26 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-09-13 08:52:49 +0100
commitfceef0cace6670a8c5f15cd2f31a191176732730 (patch)
tree44894c81118fc2d4c9a8bce3c94c3dd6f6f17915 /bitbake
parent429802fe6691c8a70ec9735c0db4c6a4e1e1b038 (diff)
downloadast2050-yocto-poky-fceef0cace6670a8c5f15cd2f31a191176732730.zip
ast2050-yocto-poky-fceef0cace6670a8c5f15cd2f31a191176732730.tar.gz
bitbake: data_smart: Fix remove operator and its interaction with data expansion
If you have: FOO = "${bindir}/X Y" FOO_remove = "${bindir}/X" the expected result is "Y". Currently this doesn't work since the removed expressions are not expanded first. This patch adjusts things so the expressions are expanded before being processed for removal. Also add a test to ensure this case continues to work. [YOCTO #6624] (Bitbake rev: 72a1ca4a104ccab73d6abcbd44db9c2636a58572) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/data_smart.py3
-rw-r--r--bitbake/lib/bb/tests/data.py7
2 files changed, 9 insertions, 1 deletions
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py
index 3d773b1..cf8919c 100644
--- a/bitbake/lib/bb/data_smart.py
+++ b/bitbake/lib/bb/data_smart.py
@@ -616,7 +616,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:
- filtered = filter(lambda v: v not in local_var["_removeactive"],
+ removes = [self.expand(r) for r in local_var["_removeactive"]]
+ filtered = filter(lambda v: v not in removes,
value.split(" "))
value = " ".join(filtered)
if expand:
diff --git a/bitbake/lib/bb/tests/data.py b/bitbake/lib/bb/tests/data.py
index 944a906..9b09ff4 100644
--- a/bitbake/lib/bb/tests/data.py
+++ b/bitbake/lib/bb/tests/data.py
@@ -259,6 +259,13 @@ class TestConcatOverride(unittest.TestCase):
bb.data.update_data(self.d)
self.assertEqual(self.d.getVar("TEST", True), "")
+ def test_remove_expansion(self):
+ self.d.setVar("BAR", "Z")
+ self.d.setVar("TEST", "${BAR}/X Y")
+ self.d.setVar("TEST_remove", "${BAR}/X")
+ bb.data.update_data(self.d)
+ self.assertEqual(self.d.getVar("TEST", True), "Y")
+
class TestOverrides(unittest.TestCase):
def setUp(self):
self.d = bb.data.init()
OpenPOWER on IntegriCloud