data_smart: Improve the calculation of config hash

For config hash, we put the keys in structure of "set()", which is not
order sensitive. Therefore when calculating the md5 value for config
hash, we need to identify the order of the keys.

(Bitbake rev: 0f1b142a3f6b8125bf023c2e5ec269618869abf7)

Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Dongxiao Xu 2012-04-17 16:21:37 +08:00 committed by Richard Purdie
parent a6820f43f5
commit c27655793b
1 changed files with 4 additions and 3 deletions

View File

@ -462,13 +462,14 @@ class DataSmart(MutableMapping):
self.delVar(var)
def get_hash(self):
data = ""
data = {}
config_whitelist = set((self.getVar("BB_HASHCONFIG_WHITELIST", True) or "").split())
keys = set(key for key in iter(self) if not key.startswith("__"))
for key in keys:
if key in config_whitelist:
continue
value = self.getVar(key, False) or ""
data = data + key + ': ' + str(value) + '\n'
data.update({key:value})
return hashlib.md5(data).hexdigest()
data_str = str([(k, data[k]) for k in sorted(data.keys())])
return hashlib.md5(data_str).hexdigest()