summaryrefslogtreecommitdiffstats
path: root/bitbake/lib
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2014-11-07 17:45:07 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-11-08 11:14:31 +0000
commit636dcb84fe541cf146aa0f9f2ca0abfe8ddfab2e (patch)
treefc401b320a9f741ae100c8f218389e6e5fd029c2 /bitbake/lib
parent695d25452d6ad2d743b9b9fb3d418e1a0f166188 (diff)
downloadpoky-636dcb84fe541cf146aa0f9f2ca0abfe8ddfab2e.tar.gz
bitbake: siggen: Ensure we output if the ordering of runtaskdeps changes
Order of runtaskdeps is important. If the hashes differ we should print output. This is complicated by shared work where the filenames themselves can differ, but the checksum should not. This fixes a case where two different checksums could show no output with bitbake-diffsigs. (Bitbake rev: 40c95cb9def282dc88234cd72ff462d7a01e47c1) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib')
-rw-r--r--bitbake/lib/bb/siggen.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py
index 86d9ca0593..1033785e05 100644
--- a/bitbake/lib/bb/siggen.py
+++ b/bitbake/lib/bb/siggen.py
@@ -307,6 +307,12 @@ def clean_basepaths(a):
307 b[clean_basepath(x)] = a[x] 307 b[clean_basepath(x)] = a[x]
308 return b 308 return b
309 309
310def clean_basepaths_list(a):
311 b = []
312 for x in a:
313 b.append(clean_basepath(x))
314 return b
315
310def compare_sigfiles(a, b, recursecb = None): 316def compare_sigfiles(a, b, recursecb = None):
311 output = [] 317 output = []
312 318
@@ -406,6 +412,17 @@ def compare_sigfiles(a, b, recursecb = None):
406 for f in removed: 412 for f in removed:
407 output.append("Dependency on checksum of file %s was removed" % (f)) 413 output.append("Dependency on checksum of file %s was removed" % (f))
408 414
415 changed = []
416 for idx, task in enumerate(a_data['runtaskdeps']):
417 a = a_data['runtaskdeps'][idx]
418 b = b_data['runtaskdeps'][idx]
419 if a_data['runtaskhashes'][a] != b_data['runtaskhashes'][b]:
420 changed.append("%s with hash %s\n changed to\n%s with hash %s" % (a, a_data['runtaskhashes'][a], b, b_data['runtaskhashes'][b]))
421
422 if changed:
423 output.append("runtaskdeps changed from %s to %s" % (clean_basepaths_list(a_data['runtaskdeps']), clean_basepaths_list(b_data['runtaskdeps'])))
424 output.append("\n".join(changed))
425
409 426
410 if 'runtaskhashes' in a_data and 'runtaskhashes' in b_data: 427 if 'runtaskhashes' in a_data and 'runtaskhashes' in b_data:
411 a = a_data['runtaskhashes'] 428 a = a_data['runtaskhashes']