summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2012-01-19 19:37:29 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-01-20 16:37:13 +0000
commit7da7dff83ed765c9cde1d7f91ee1b65e49520481 (patch)
tree422bcda5438e57b9b027b96a473a11766cd98cd4
parent8b713708541f85a4252c0f7b683aff4407c7d3e0 (diff)
downloadbitbake-7da7dff83ed765c9cde1d7f91ee1b65e49520481.tar.gz
siggen: Ensure correct runtask dependency output is shown for diffsigs
The actual task names are discounted for comparison of dependent tasks, only the actual hashes are used. This updates the comparison code to account for this change, attempting heuristic matching for more user friendly output but falling back to showing the changed hashes directly. This avoids some confusing output to users where it looked like tasks had changed when they had not and actually had the same hash but a different taskname. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/siggen.py36
1 files changed, 21 insertions, 15 deletions
diff --git a/lib/bb/siggen.py b/lib/bb/siggen.py
index 22417b9cd..d9d029461 100644
--- a/lib/bb/siggen.py
+++ b/lib/bb/siggen.py
@@ -281,21 +281,27 @@ def compare_sigfiles(a, b):
print "Variable %s value changed from %s to %s" % (dep, a_data['varvals'][dep], b_data['varvals'][dep])
if 'runtaskhashes' in a_data and 'runtaskhashes' in b_data:
- a = clean_basepaths(a_data['runtaskhashes'])
- b = clean_basepaths(b_data['runtaskhashes'])
- changed, added, removed = dict_diff(a, b)
- if added:
- for dep in added:
- print "Dependency on task %s was added" % (dep)
- if removed:
- for dep in removed:
- print "Dependency on task %s was removed" % (dep)
- if changed:
- for dep in changed:
- print "Hash for dependent task %s changed from %s to %s" % (dep, a[dep], b[dep])
- elif 'runtaskdeps' in a_data and 'runtaskdeps' in b_data and sorted(a_data['runtaskdeps']) != sorted(b_data['runtaskdeps']):
- print "Tasks this task depends on changed from %s to %s" % (sorted(a_data['runtaskdeps']), sorted(b_data['runtaskdeps']))
- print "changed items: %s" % a_data['runtaskdeps'].symmetric_difference(b_data['runtaskdeps'])
+ if len(a_data['runtaskdeps']) != len(b_data['runtaskdeps']):
+ a = clean_basepaths(a_data['runtaskhashes'])
+ b = clean_basepaths(b_data['runtaskhashes'])
+ changed, added, removed = dict_diff(a, b)
+ if added:
+ for dep in added:
+ print "Dependency on task %s was added" % (dep)
+ if removed:
+ for dep in removed:
+ print "Dependency on task %s was removed" % (dep)
+ if changed:
+ for dep in changed:
+ print "Hash for dependent task %s changed from %s to %s" % (dep, a[dep], b[dep])
+ else:
+ for i in range(len(a_data['runtaskdeps'])):
+ aent = a_data['runtaskdeps'][i]
+ bent = b_data['runtaskdeps'][i]
+ aname = clean_basepath(aent)
+ bname = clean_basepath(bent)
+ if a_data['runtaskhashes'][aent] != b_data['runtaskhashes'][bent]:
+ print "Task dependency hash changed from %s to %s (for %s and %s)" % (a_data['runtaskhashes'][aent], b_data['runtaskhashes'][bent], aname, bname)
def dump_sigfile(a):
p1 = pickle.Unpickler(file(a, "rb"))