mirror of
https://git.yoctoproject.org/poky
synced 2026-06-02 01:19:52 +00:00
bitbake: data_smart: Fix inactive overide accidental variable value corruption
Setting something like:
BAR:append:unusedoverride
should cause BAR to be None, not "" which was what the datastore was
returning. This caused problems when mixing variables like:
RDEPENDS:${PN}:inactiveoverride
RDEPENDS:${BPN}
since key expansion would report key overlap when there was none. This
is a bug in the datastore. Fix it and add a test too.
[YOCTO #14088]
(Bitbake rev: 699e36c270d863258502d315ed00a1b940bfbf96)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -750,8 +750,6 @@ class DataSmart(MutableMapping):
|
|||||||
|
|
||||||
|
|
||||||
if flag == "_content" and local_var is not None and ":append" in local_var and not parsing:
|
if flag == "_content" and local_var is not None and ":append" in local_var and not parsing:
|
||||||
if not value:
|
|
||||||
value = ""
|
|
||||||
self.need_overrides()
|
self.need_overrides()
|
||||||
for (r, o) in local_var[":append"]:
|
for (r, o) in local_var[":append"]:
|
||||||
match = True
|
match = True
|
||||||
@@ -760,11 +758,11 @@ class DataSmart(MutableMapping):
|
|||||||
if not o2 in self.overrides:
|
if not o2 in self.overrides:
|
||||||
match = False
|
match = False
|
||||||
if match:
|
if match:
|
||||||
|
if value is None:
|
||||||
|
value = ""
|
||||||
value = value + r
|
value = value + r
|
||||||
|
|
||||||
if flag == "_content" and local_var is not None and ":prepend" in local_var and not parsing:
|
if flag == "_content" and local_var is not None and ":prepend" in local_var and not parsing:
|
||||||
if not value:
|
|
||||||
value = ""
|
|
||||||
self.need_overrides()
|
self.need_overrides()
|
||||||
for (r, o) in local_var[":prepend"]:
|
for (r, o) in local_var[":prepend"]:
|
||||||
|
|
||||||
@@ -774,6 +772,8 @@ class DataSmart(MutableMapping):
|
|||||||
if not o2 in self.overrides:
|
if not o2 in self.overrides:
|
||||||
match = False
|
match = False
|
||||||
if match:
|
if match:
|
||||||
|
if value is None:
|
||||||
|
value = ""
|
||||||
value = r + value
|
value = r + value
|
||||||
|
|
||||||
parser = None
|
parser = None
|
||||||
|
|||||||
@@ -405,6 +405,11 @@ class TestOverrides(unittest.TestCase):
|
|||||||
bb.data.expandKeys(self.d)
|
bb.data.expandKeys(self.d)
|
||||||
self.assertEqual(self.d.getVar("VERSION"), "2")
|
self.assertEqual(self.d.getVar("VERSION"), "2")
|
||||||
|
|
||||||
|
def test_append_and_unused_override(self):
|
||||||
|
# Had a bug where an unused override append could return "" instead of None
|
||||||
|
self.d.setVar("BAR:append:unusedoverride", "testvalue2")
|
||||||
|
self.assertEqual(self.d.getVar("BAR"), None)
|
||||||
|
|
||||||
class TestKeyExpansion(unittest.TestCase):
|
class TestKeyExpansion(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.d = bb.data.init()
|
self.d = bb.data.init()
|
||||||
|
|||||||
Reference in New Issue
Block a user