diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-11-29 10:29:06 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-12-03 15:12:33 +0000 |
commit | 86bf1f5603e8f98019544e45f51bd0db9a48112a (patch) | |
tree | 3d64bce6d47f8281917e0c3eeaf2cbe2adb25958 /lib/bb/data_smart.py | |
parent | 1f500149ecd533a6edbeea902c3f1e009c755154 (diff) | |
download | bitbake-86bf1f5603e8f98019544e45f51bd0db9a48112a.tar.gz |
data_smart: Improve get_hash to account for overrides and key expansion
An issue was uncovered where changing:
IMAGE_INSTALL_append = "X"
to
IMAGE_INSTALL_append = "X Y"
in local.conf would not get noticed by bitbake. The issue is that
the configuration hash doesn't account for overrides or key expansion.
This patch improves get_hash to account for these. This means the hash
does account for changes like the above.
[YOCTO #3503]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/data_smart.py')
-rw-r--r-- | lib/bb/data_smart.py | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/bb/data_smart.py b/lib/bb/data_smart.py index ec3c04e30..fb8d9d53c 100644 --- a/lib/bb/data_smart.py +++ b/lib/bb/data_smart.py @@ -474,12 +474,16 @@ class DataSmart(MutableMapping): def get_hash(self): data = {} - config_whitelist = set((self.getVar("BB_HASHCONFIG_WHITELIST", True) or "").split()) - keys = set(key for key in iter(self) if not key.startswith("__")) + d = self.createCopy() + bb.data.expandKeys(d) + bb.data.update_data(d) + + config_whitelist = set((d.getVar("BB_HASHCONFIG_WHITELIST", True) or "").split()) + keys = set(key for key in iter(d) if not key.startswith("__")) for key in keys: if key in config_whitelist: continue - value = self.getVar(key, False) or "" + value = d.getVar(key, False) or "" data.update({key:value}) data_str = str([(k, data[k]) for k in sorted(data.keys())]) |