summaryrefslogtreecommitdiffstats
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
parent429802fe6691c8a70ec9735c0db4c6a4e1e1b038 (diff)
downloadpoky-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>
-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 3d773b1d69..cf8919c64f 100644
--- a/bitbake/lib/bb/data_smart.py
+++ b/bitbake/lib/bb/data_smart.py
@@ -616,7 +616,8 @@ class DataSmart(MutableMapping):
616 cachename = var + "[" + flag + "]" 616 cachename = var + "[" + flag + "]"
617 value = self.expand(value, cachename) 617 value = self.expand(value, cachename)
618 if value and flag == "_content" and local_var is not None and "_removeactive" in local_var: 618 if value and flag == "_content" and local_var is not None and "_removeactive" in local_var:
619 filtered = filter(lambda v: v not in local_var["_removeactive"], 619 removes = [self.expand(r) for r in local_var["_removeactive"]]
620 filtered = filter(lambda v: v not in removes,
620 value.split(" ")) 621 value.split(" "))
621 value = " ".join(filtered) 622 value = " ".join(filtered)
622 if expand: 623 if expand:
diff --git a/bitbake/lib/bb/tests/data.py b/bitbake/lib/bb/tests/data.py
index 944a906653..9b09ff4c61 100644
--- a/bitbake/lib/bb/tests/data.py
+++ b/bitbake/lib/bb/tests/data.py
@@ -259,6 +259,13 @@ class TestConcatOverride(unittest.TestCase):
259 bb.data.update_data(self.d) 259 bb.data.update_data(self.d)
260 self.assertEqual(self.d.getVar("TEST", True), "") 260 self.assertEqual(self.d.getVar("TEST", True), "")
261 261
262 def test_remove_expansion(self):
263 self.d.setVar("BAR", "Z")
264 self.d.setVar("TEST", "${BAR}/X Y")
265 self.d.setVar("TEST_remove", "${BAR}/X")
266 bb.data.update_data(self.d)
267 self.assertEqual(self.d.getVar("TEST", True), "Y")
268
262class TestOverrides(unittest.TestCase): 269class TestOverrides(unittest.TestCase):
263 def setUp(self): 270 def setUp(self):
264 self.d = bb.data.init() 271 self.d = bb.data.init()