We clear append/prepend on newly set variables, we should also clear remove operations. If we don't do this, there is no way we can actually delete a remove operation. Bitbake internally uses parsing=True to avoid these side effects when making its own internal calls.
Also add a testcase to bitbake-selftest to ensure we remain consistent going forward from here. Signed-off-by: Richard Purdie <richard.pur...@linuxfoundation.org> --- lib/bb/data_smart.py | 2 ++ lib/bb/tests/data.py | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/lib/bb/data_smart.py b/lib/bb/data_smart.py index d6dd698..7dc1c68 100644 --- a/lib/bb/data_smart.py +++ b/lib/bb/data_smart.py @@ -546,6 +546,8 @@ class DataSmart(MutableMapping): del self.dict[var]["_append"] if "_prepend" in self.dict[var]: del self.dict[var]["_prepend"] + if "_remove" in self.dict[var]: + del self.dict[var]["_remove"] if var in self.overridedata: active = [] self.need_overrides() diff --git a/lib/bb/tests/data.py b/lib/bb/tests/data.py index fe947f5..a4a9dd3 100644 --- a/lib/bb/tests/data.py +++ b/lib/bb/tests/data.py @@ -283,6 +283,12 @@ class TestConcatOverride(unittest.TestCase): self.d.setVar("TEST_remove", "val") self.assertEqual(self.d.getVar("TEST"), "bar") + def test_remove_cleared(self): + self.d.setVar("TEST", "${VAL} ${BAR}") + self.d.setVar("TEST_remove", "val") + self.d.setVar("TEST", "${VAL} ${BAR}") + self.assertEqual(self.d.getVar("TEST"), "val bar") + # Ensure the value is unchanged if we have an inactive remove override # (including that whitespace is preserved) def test_remove_inactive_override(self): -- 2.7.4 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core