summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2011-11-17 14:02:06 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-11-18 10:47:09 +0000
commitcb66ebaa8bd950c9a58558ee4d74e8f4f6777403 (patch)
treea1dd64bb1edd958dfc1d3d3027ad9a3bf9939e09
parentf2d077255d9ddf9b87e9a781b989bcce69047cf5 (diff)
downloadpoky-cb66ebaa8bd950c9a58558ee4d74e8f4f6777403.tar.gz
siggen.py: Fix diffsigs output for filename comparisions
When comparing sig files, if the recipe locations had changed, the dependent tasks list would show as changed even if the actual hash had not changed. This updates the code to only compare the base part of the pathnames. It also tweaks some of the output to add newlines to aid comparing two lists of variables as it makes the location of the difference clearer. (Bitbake rev: 165a22ddcc647b945707fb5c483146bb336d5f66) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--bitbake/lib/bb/siggen.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py
index 12257914cd..611772a27f 100644
--- a/bitbake/lib/bb/siggen.py
+++ b/bitbake/lib/bb/siggen.py
@@ -235,6 +235,16 @@ def compare_sigfiles(a, b):
235 removed = sb - sa 235 removed = sb - sa
236 return changed, added, removed 236 return changed, added, removed
237 237
238 def clean_basepaths(a):
239 b = {}
240 for x in a:
241 if x.startswith("virtual:"):
242 y = x.rsplit(":", 1)[0] + x.rsplit("/", 1)[1]
243 else:
244 y = x.rsplit("/", 1)[1]
245 b[y] = a[x]
246 return b
247
238 if 'basewhitelist' in a_data and a_data['basewhitelist'] != b_data['basewhitelist']: 248 if 'basewhitelist' in a_data and a_data['basewhitelist'] != b_data['basewhitelist']:
239 print "basewhitelist changed from %s to %s" % (a_data['basewhitelist'], b_data['basewhitelist']) 249 print "basewhitelist changed from %s to %s" % (a_data['basewhitelist'], b_data['basewhitelist'])
240 250
@@ -242,7 +252,7 @@ def compare_sigfiles(a, b):
242 print "taskwhitelist changed from %s to %s" % (a_data['taskwhitelist'], b_data['taskwhitelist']) 252 print "taskwhitelist changed from %s to %s" % (a_data['taskwhitelist'], b_data['taskwhitelist'])
243 253
244 if a_data['taskdeps'] != b_data['taskdeps']: 254 if a_data['taskdeps'] != b_data['taskdeps']:
245 print "Task dependencies changed from %s to %s" % (sorted(a_data['taskdeps']), sorted(b_data['taskdeps'])) 255 print "Task dependencies changed from:\n%s\nto:\n%s" % (sorted(a_data['taskdeps']), sorted(b_data['taskdeps']))
246 256
247 if a_data['basehash'] != b_data['basehash']: 257 if a_data['basehash'] != b_data['basehash']:
248 print "basehash changed from %s to %s" % (a_data['basehash'], b_data['basehash']) 258 print "basehash changed from %s to %s" % (a_data['basehash'], b_data['basehash'])
@@ -265,7 +275,9 @@ def compare_sigfiles(a, b):
265 print "Variable %s value changed from %s to %s" % (dep, a_data['varvals'][dep], b_data['varvals'][dep]) 275 print "Variable %s value changed from %s to %s" % (dep, a_data['varvals'][dep], b_data['varvals'][dep])
266 276
267 if 'runtaskhashes' in a_data and 'runtaskhashes' in b_data: 277 if 'runtaskhashes' in a_data and 'runtaskhashes' in b_data:
268 changed, added, removed = dict_diff(a_data['runtaskhashes'], b_data['runtaskhashes']) 278 a = clean_basepaths(a_data['runtaskhashes'])
279 b = clean_basepaths(b_data['runtaskhashes'])
280 changed, added, removed = dict_diff(a, b)
269 if added: 281 if added:
270 for dep in added: 282 for dep in added:
271 print "Dependency on task %s was added" % (dep) 283 print "Dependency on task %s was added" % (dep)
@@ -274,7 +286,7 @@ def compare_sigfiles(a, b):
274 print "Dependency on task %s was removed" % (dep) 286 print "Dependency on task %s was removed" % (dep)
275 if changed: 287 if changed:
276 for dep in changed: 288 for dep in changed:
277 print "Hash for dependent task %s changed from %s to %s" % (dep, a_data['runtaskhashes'][dep], b_data['runtaskhashes'][dep]) 289 print "Hash for dependent task %s changed from %s to %s" % (dep, a[dep], b[dep])
278 elif 'runtaskdeps' in a_data and 'runtaskdeps' in b_data and sorted(a_data['runtaskdeps']) != sorted(b_data['runtaskdeps']): 290 elif 'runtaskdeps' in a_data and 'runtaskdeps' in b_data and sorted(a_data['runtaskdeps']) != sorted(b_data['runtaskdeps']):
279 print "Tasks this task depends on changed from %s to %s" % (sorted(a_data['runtaskdeps']), sorted(b_data['runtaskdeps'])) 291 print "Tasks this task depends on changed from %s to %s" % (sorted(a_data['runtaskdeps']), sorted(b_data['runtaskdeps']))
280 292