diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py index d6dd698eff..7dc1c68709 100644 --- a/bitbake/lib/bb/data_smart.py +++ b/bitbake/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/bitbake/lib/bb/tests/data.py b/bitbake/lib/bb/tests/data.py index fe947f5ba7..a4a9dd30fb 100644 --- a/bitbake/lib/bb/tests/data.py +++ b/bitbake/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):