Patchwork [bitbake-devel] siggen: compare runtaskdeps dictionary even when they have the same size

login
register
mail settings
Submitter Martin Jansa
Date Feb. 22, 2012, 3:01 p.m.
Message ID <1329922919-29294-1-git-send-email-Martin.Jansa@gmail.com>
Download mbox | patch
Permalink /patch/21581/
State Accepted
Commit ca52bf32b479811bd7fed41648bedcc06b00430b
Headers show

Comments

Martin Jansa - Feb. 22, 2012, 3:01 p.m.
* otherwise it reports lots of changed checksums just because it compares different tasks

  notice linux-libc-headers_3.1.bb.do_package_write:
  Task dependency hash changed from 42acced29debf54d598802474c5e9cbb to f438a54f995df77620d0727d6f4b4ce5 (for linux-libc-headers_3.1.bb.do_package_write and linux-gta04_git.bb.do_deploy)
  Task dependency hash changed from 61f8babe1d10c6e7fb1423112bb04e1e to 1b3e21ff106ecfcb7ddf76a1e29537bb (for linux-nokia900-meego_git.bb.do_deploy and linux-gta04_git.bb.do_package_write)
  Task dependency hash changed from 512f9d6686d760b318d8b11c8b589226 to 42acced29debf54d598802474c5e9cbb (for linux-nokia900-meego_git.bb.do_package_write and linux-libc-headers_3.1.bb.do_package_write)
  Task dependency hash changed from 153e91dfd1d2053fda7b98cc08d4b802 to 92a293bdd8ed234932b87a66025038c5 (for systemd-serialgetty.bb.do_package_write and systemd-serialgetty.bb.do_package_write)
  Task dependency hash changed from 730abebf9954794bb440c2f3239f79fe to 413eaebaff27a2fd16f5cf68c1f4ff17 (for systemd_git.bb.do_package_write and systemd_git.bb.do_package_write)

  with this patch:
  Dependency on task linux-nokia900-meego_git.bb.do_package_write was added
  Dependency on task linux-nokia900-meego_git.bb.do_deploy was added
  Dependency on task linux-gta04_git.bb.do_deploy was removed
  Dependency on task linux-gta04_git.bb.do_package_write was removed
  Hash for dependent task systemd_git.bb.do_package_write changed from 730abebf9954794bb440c2f3239f79fe to 413eaebaff27a2fd16f5cf68c1f4ff17
  Hash for dependent task systemd-serialgetty.bb.do_package_write changed from 153e91dfd1d2053fda7b98cc08d4b802 to 92a293bdd8ed234932b87a66025038c5

* added test if there is different task with same hash then we don't
  show it as added/removed dependency, because bitbake doesn't care

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 lib/bb/siggen.py |   47 ++++++++++++++++++++++++++---------------------
 1 files changed, 26 insertions(+), 21 deletions(-)
Richard Purdie - Feb. 22, 2012, 8:33 p.m.
On Wed, 2012-02-22 at 16:01 +0100, Martin Jansa wrote:
> * otherwise it reports lots of changed checksums just because it compares different tasks
> 
>   notice linux-libc-headers_3.1.bb.do_package_write:
>   Task dependency hash changed from 42acced29debf54d598802474c5e9cbb to f438a54f995df77620d0727d6f4b4ce5 (for linux-libc-headers_3.1.bb.do_package_write and linux-gta04_git.bb.do_deploy)
>   Task dependency hash changed from 61f8babe1d10c6e7fb1423112bb04e1e to 1b3e21ff106ecfcb7ddf76a1e29537bb (for linux-nokia900-meego_git.bb.do_deploy and linux-gta04_git.bb.do_package_write)
>   Task dependency hash changed from 512f9d6686d760b318d8b11c8b589226 to 42acced29debf54d598802474c5e9cbb (for linux-nokia900-meego_git.bb.do_package_write and linux-libc-headers_3.1.bb.do_package_write)
>   Task dependency hash changed from 153e91dfd1d2053fda7b98cc08d4b802 to 92a293bdd8ed234932b87a66025038c5 (for systemd-serialgetty.bb.do_package_write and systemd-serialgetty.bb.do_package_write)
>   Task dependency hash changed from 730abebf9954794bb440c2f3239f79fe to 413eaebaff27a2fd16f5cf68c1f4ff17 (for systemd_git.bb.do_package_write and systemd_git.bb.do_package_write)
> 
>   with this patch:
>   Dependency on task linux-nokia900-meego_git.bb.do_package_write was added
>   Dependency on task linux-nokia900-meego_git.bb.do_deploy was added
>   Dependency on task linux-gta04_git.bb.do_deploy was removed
>   Dependency on task linux-gta04_git.bb.do_package_write was removed
>   Hash for dependent task systemd_git.bb.do_package_write changed from 730abebf9954794bb440c2f3239f79fe to 413eaebaff27a2fd16f5cf68c1f4ff17
>   Hash for dependent task systemd-serialgetty.bb.do_package_write changed from 153e91dfd1d2053fda7b98cc08d4b802 to 92a293bdd8ed234932b87a66025038c5
> 
> * added test if there is different task with same hash then we don't
>   show it as added/removed dependency, because bitbake doesn't care
> 
> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
> ---
>  lib/bb/siggen.py |   47 ++++++++++++++++++++++++++---------------------
>  1 files changed, 26 insertions(+), 21 deletions(-)

Merged to master, thanks.

Richard

Patch

diff --git a/lib/bb/siggen.py b/lib/bb/siggen.py
index f31d66a..5621e1b 100644
--- a/lib/bb/siggen.py
+++ b/lib/bb/siggen.py
@@ -292,27 +292,32 @@  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:
-        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)
+        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:
+	        bdep_found = False
+	        if removed:
+		    for bdep in removed:
+		    	if a[dep] == b[bdep]:
+			   #print "Dependency on task %s was replaced by %s with same hash" % (dep, bdep)
+			   bdep_found = True
+		if not bdep_found:
+                    print "Dependency on task %s was added with hash %s" % (dep, a[dep])
+        if removed:
+            for dep in removed:
+	        adep_found = False
+	        if added:
+		    for adep in added:
+		    	if a[adep] == b[dep]:
+			   #print "Dependency on task %s was replaced by %s with same hash" % (adep, dep)
+			   adep_found = True
+		if not adep_found:
+                   print "Dependency on task %s was removed with hash %s" % (dep, b[dep])
+        if changed:
+            for dep in changed:
+                print "Hash for dependent task %s changed from %s to %s" % (dep, a[dep], b[dep])
 
 def dump_sigfile(a):
     p1 = pickle.Unpickler(file(a, "rb"))