[bitbake-devel] [PATCH 2/6] data_smart: Improve the calculation of config hash
Dongxiao Xu
dongxiao.xu at intel.com
Mon Apr 9 08:41:58 UTC 2012
The order of keys are not sensitive for config hash, so we need to
identify its order while calculating the md5 value.
While for certain values, order is also not sensitive (for example,
BBINCLUDED), we also need to identify its order while calculating md5
value.
This could fix the problem that Martin Jansa reported in the mailing
list:
http://lists.linuxtogo.org/pipermail/bitbake-devel/2012-March/002122.html
Signed-off-by: Dongxiao Xu <dongxiao.xu at intel.com>
---
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 2c200db..cc61a03 100644
--- a/lib/bb/data_smart.py
+++ b/lib/bb/data_smart.py
@@ -462,13 +462,17 @@ class DataSmart(MutableMapping):
self.delVar(var)
def get_hash(self):
- data = ""
+ data = {}
config_whitelist = set((self.getVar("BB_HASHCONFIG_WHITELIST", True) or "").split())
+ config_sort = set((self.getVar("BB_HASHCONFIG_SORT", 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'
+ if key in config_sort:
+ value = " ".join(sorted(value.split()))
+ 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()
--
1.7.4.1
More information about the bitbake-devel
mailing list