diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2012-08-27 21:44:34 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-09-07 12:10:44 +0100 |
commit | d5226c96d3c64bcfa8922327594663352703a8a8 (patch) | |
tree | cdf675fea864f33cc939be42753ca9e3d71e4c6e /bitbake | |
parent | 19d0abe14cd6590dc7a9d81f88c18833e1b35a1b (diff) | |
download | poky-d5226c96d3c64bcfa8922327594663352703a8a8.tar.gz |
bitbake: lib/bb/siggen.py: make signature dump/compare functions return a list
These functions become a little bit more reusable if they return a list
containing the output rather than just printing it.
(Bitbake rev: a0ad2a947b71abcc0a1244cf139b9e9dfd8ee049)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rwxr-xr-x | bitbake/bin/bitbake-diffsigs | 7 | ||||
-rwxr-xr-x | bitbake/bin/bitbake-dumpsig | 4 | ||||
-rw-r--r-- | bitbake/lib/bb/siggen.py | 68 |
3 files changed, 46 insertions, 33 deletions
diff --git a/bitbake/bin/bitbake-diffsigs b/bitbake/bin/bitbake-diffsigs index 5eb77ce59d..146cab8119 100755 --- a/bitbake/bin/bitbake-diffsigs +++ b/bitbake/bin/bitbake-diffsigs | |||
@@ -7,6 +7,9 @@ sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), ' | |||
7 | import bb.siggen | 7 | import bb.siggen |
8 | 8 | ||
9 | if len(sys.argv) > 2: | 9 | if len(sys.argv) > 2: |
10 | bb.siggen.compare_sigfiles(sys.argv[1], sys.argv[2]) | 10 | output = bb.siggen.compare_sigfiles(sys.argv[1], sys.argv[2]) |
11 | else: | 11 | else: |
12 | bb.siggen.dump_sigfile(sys.argv[1]) | 12 | output = bb.siggen.dump_sigfile(sys.argv[1]) |
13 | |||
14 | if output: | ||
15 | print '\n'.join(output) | ||
diff --git a/bitbake/bin/bitbake-dumpsig b/bitbake/bin/bitbake-dumpsig index 59740c87c9..ccbc412583 100755 --- a/bitbake/bin/bitbake-dumpsig +++ b/bitbake/bin/bitbake-dumpsig | |||
@@ -6,4 +6,6 @@ sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), ' | |||
6 | 6 | ||
7 | import bb.siggen | 7 | import bb.siggen |
8 | 8 | ||
9 | bb.siggen.dump_sigfile(sys.argv[1]) | 9 | output = bb.siggen.dump_sigfile(sys.argv[1]) |
10 | if output: | ||
11 | print '\n'.join(output) | ||
diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py index d0a4d18e0e..8d1501b8ae 100644 --- a/bitbake/lib/bb/siggen.py +++ b/bitbake/lib/bb/siggen.py | |||
@@ -302,6 +302,8 @@ def clean_basepaths(a): | |||
302 | return b | 302 | return b |
303 | 303 | ||
304 | def compare_sigfiles(a, b): | 304 | def compare_sigfiles(a, b): |
305 | output = [] | ||
306 | |||
305 | p1 = pickle.Unpickler(open(a, "rb")) | 307 | p1 = pickle.Unpickler(open(a, "rb")) |
306 | a_data = p1.load() | 308 | a_data = p1.load() |
307 | p2 = pickle.Unpickler(open(b, "rb")) | 309 | p2 = pickle.Unpickler(open(b, "rb")) |
@@ -320,50 +322,50 @@ def compare_sigfiles(a, b): | |||
320 | return changed, added, removed | 322 | return changed, added, removed |
321 | 323 | ||
322 | if 'basewhitelist' in a_data and a_data['basewhitelist'] != b_data['basewhitelist']: | 324 | if 'basewhitelist' in a_data and a_data['basewhitelist'] != b_data['basewhitelist']: |
323 | print "basewhitelist changed from %s to %s" % (a_data['basewhitelist'], b_data['basewhitelist']) | 325 | output.append("basewhitelist changed from %s to %s" % (a_data['basewhitelist'], b_data['basewhitelist'])) |
324 | if a_data['basewhitelist'] and b_data['basewhitelist']: | 326 | if a_data['basewhitelist'] and b_data['basewhitelist']: |
325 | print "changed items: %s" % a_data['basewhitelist'].symmetric_difference(b_data['basewhitelist']) | 327 | output.append("changed items: %s" % a_data['basewhitelist'].symmetric_difference(b_data['basewhitelist'])) |
326 | 328 | ||
327 | if 'taskwhitelist' in a_data and a_data['taskwhitelist'] != b_data['taskwhitelist']: | 329 | if 'taskwhitelist' in a_data and a_data['taskwhitelist'] != b_data['taskwhitelist']: |
328 | print "taskwhitelist changed from %s to %s" % (a_data['taskwhitelist'], b_data['taskwhitelist']) | 330 | output.append("taskwhitelist changed from %s to %s" % (a_data['taskwhitelist'], b_data['taskwhitelist'])) |
329 | if a_data['taskwhitelist'] and b_data['taskwhitelist']: | 331 | if a_data['taskwhitelist'] and b_data['taskwhitelist']: |
330 | print "changed items: %s" % a_data['taskwhitelist'].symmetric_difference(b_data['taskwhitelist']) | 332 | output.append("changed items: %s" % a_data['taskwhitelist'].symmetric_difference(b_data['taskwhitelist'])) |
331 | 333 | ||
332 | if a_data['taskdeps'] != b_data['taskdeps']: | 334 | if a_data['taskdeps'] != b_data['taskdeps']: |
333 | print "Task dependencies changed from:\n%s\nto:\n%s" % (sorted(a_data['taskdeps']), sorted(b_data['taskdeps'])) | 335 | output.append("Task dependencies changed from:\n%s\nto:\n%s" % (sorted(a_data['taskdeps']), sorted(b_data['taskdeps']))) |
334 | 336 | ||
335 | if a_data['basehash'] != b_data['basehash']: | 337 | if a_data['basehash'] != b_data['basehash']: |
336 | print "basehash changed from %s to %s" % (a_data['basehash'], b_data['basehash']) | 338 | output.append("basehash changed from %s to %s" % (a_data['basehash'], b_data['basehash'])) |
337 | 339 | ||
338 | changed, added, removed = dict_diff(a_data['gendeps'], b_data['gendeps'], a_data['basewhitelist'] & b_data['basewhitelist']) | 340 | changed, added, removed = dict_diff(a_data['gendeps'], b_data['gendeps'], a_data['basewhitelist'] & b_data['basewhitelist']) |
339 | if changed: | 341 | if changed: |
340 | for dep in changed: | 342 | for dep in changed: |
341 | print "List of dependencies for variable %s changed from %s to %s" % (dep, a_data['gendeps'][dep], b_data['gendeps'][dep]) | 343 | output.append("List of dependencies for variable %s changed from %s to %s" % (dep, a_data['gendeps'][dep], b_data['gendeps'][dep])) |
342 | if a_data['gendeps'][dep] and b_data['gendeps'][dep]: | 344 | if a_data['gendeps'][dep] and b_data['gendeps'][dep]: |
343 | print "changed items: %s" % a_data['gendeps'][dep].symmetric_difference(b_data['gendeps'][dep]) | 345 | output.append("changed items: %s" % a_data['gendeps'][dep].symmetric_difference(b_data['gendeps'][dep])) |
344 | if added: | 346 | if added: |
345 | for dep in added: | 347 | for dep in added: |
346 | print "Dependency on variable %s was added" % (dep) | 348 | output.append("Dependency on variable %s was added" % (dep)) |
347 | if removed: | 349 | if removed: |
348 | for dep in removed: | 350 | for dep in removed: |
349 | print "Dependency on Variable %s was removed" % (dep) | 351 | output.append("Dependency on Variable %s was removed" % (dep)) |
350 | 352 | ||
351 | 353 | ||
352 | changed, added, removed = dict_diff(a_data['varvals'], b_data['varvals']) | 354 | changed, added, removed = dict_diff(a_data['varvals'], b_data['varvals']) |
353 | if changed: | 355 | if changed: |
354 | for dep in changed: | 356 | for dep in changed: |
355 | print "Variable %s value changed from %s to %s" % (dep, a_data['varvals'][dep], b_data['varvals'][dep]) | 357 | output.append("Variable %s value changed from %s to %s" % (dep, a_data['varvals'][dep], b_data['varvals'][dep])) |
356 | 358 | ||
357 | changed, added, removed = dict_diff(a_data['file_checksum_values'], b_data['file_checksum_values']) | 359 | changed, added, removed = dict_diff(a_data['file_checksum_values'], b_data['file_checksum_values']) |
358 | if changed: | 360 | if changed: |
359 | for f in changed: | 361 | for f in changed: |
360 | print "Checksum for file %s changed from %s to %s" % (f, a_data['file_checksum_values'][f], b_data['file_checksum_values'][f]) | 362 | output.append("Checksum for file %s changed from %s to %s" % (f, a_data['file_checksum_values'][f], b_data['file_checksum_values'][f])) |
361 | if added: | 363 | if added: |
362 | for f in added: | 364 | for f in added: |
363 | print "Dependency on checksum of file %s was added" % (f) | 365 | output.append("Dependency on checksum of file %s was added" % (f)) |
364 | if removed: | 366 | if removed: |
365 | for f in removed: | 367 | for f in removed: |
366 | print "Dependency on checksum of file %s was removed" % (f) | 368 | output.append("Dependency on checksum of file %s was removed" % (f)) |
367 | 369 | ||
368 | 370 | ||
369 | if 'runtaskhashes' in a_data and 'runtaskhashes' in b_data: | 371 | if 'runtaskhashes' in a_data and 'runtaskhashes' in b_data: |
@@ -376,58 +378,64 @@ def compare_sigfiles(a, b): | |||
376 | if removed: | 378 | if removed: |
377 | for bdep in removed: | 379 | for bdep in removed: |
378 | if a[dep] == b[bdep]: | 380 | if a[dep] == b[bdep]: |
379 | #print "Dependency on task %s was replaced by %s with same hash" % (dep, bdep) | 381 | #output.append("Dependency on task %s was replaced by %s with same hash" % (dep, bdep)) |
380 | bdep_found = True | 382 | bdep_found = True |
381 | if not bdep_found: | 383 | if not bdep_found: |
382 | print "Dependency on task %s was added with hash %s" % (dep, a[dep]) | 384 | output.append("Dependency on task %s was added with hash %s" % (dep, a[dep])) |
383 | if removed: | 385 | if removed: |
384 | for dep in removed: | 386 | for dep in removed: |
385 | adep_found = False | 387 | adep_found = False |
386 | if added: | 388 | if added: |
387 | for adep in added: | 389 | for adep in added: |
388 | if a[adep] == b[dep]: | 390 | if a[adep] == b[dep]: |
389 | #print "Dependency on task %s was replaced by %s with same hash" % (adep, dep) | 391 | #output.append("Dependency on task %s was replaced by %s with same hash" % (adep, dep)) |
390 | adep_found = True | 392 | adep_found = True |
391 | if not adep_found: | 393 | if not adep_found: |
392 | print "Dependency on task %s was removed with hash %s" % (dep, b[dep]) | 394 | output.append("Dependency on task %s was removed with hash %s" % (dep, b[dep])) |
393 | if changed: | 395 | if changed: |
394 | for dep in changed: | 396 | for dep in changed: |
395 | print "Hash for dependent task %s changed from %s to %s" % (dep, a[dep], b[dep]) | 397 | output.append("Hash for dependent task %s changed from %s to %s" % (dep, a[dep], b[dep])) |
396 | 398 | ||
397 | 399 | ||
398 | a_taint = a_data.get('taint', None) | 400 | a_taint = a_data.get('taint', None) |
399 | b_taint = b_data.get('taint', None) | 401 | b_taint = b_data.get('taint', None) |
400 | if a_taint != b_taint: | 402 | if a_taint != b_taint: |
401 | print "Taint (by forced/invalidated task) changed from %s to %s" % (a_taint, b_taint) | 403 | output.append("Taint (by forced/invalidated task) changed from %s to %s" % (a_taint, b_taint)) |
404 | |||
405 | return output | ||
402 | 406 | ||
403 | 407 | ||
404 | def dump_sigfile(a): | 408 | def dump_sigfile(a): |
409 | output = [] | ||
410 | |||
405 | p1 = pickle.Unpickler(open(a, "rb")) | 411 | p1 = pickle.Unpickler(open(a, "rb")) |
406 | a_data = p1.load() | 412 | a_data = p1.load() |
407 | 413 | ||
408 | print "basewhitelist: %s" % (a_data['basewhitelist']) | 414 | output.append("basewhitelist: %s" % (a_data['basewhitelist'])) |
409 | 415 | ||
410 | print "taskwhitelist: %s" % (a_data['taskwhitelist']) | 416 | output.append("taskwhitelist: %s" % (a_data['taskwhitelist'])) |
411 | 417 | ||
412 | print "Task dependencies: %s" % (sorted(a_data['taskdeps'])) | 418 | output.append("Task dependencies: %s" % (sorted(a_data['taskdeps']))) |
413 | 419 | ||
414 | print "basehash: %s" % (a_data['basehash']) | 420 | output.append("basehash: %s" % (a_data['basehash'])) |
415 | 421 | ||
416 | for dep in a_data['gendeps']: | 422 | for dep in a_data['gendeps']: |
417 | print "List of dependencies for variable %s is %s" % (dep, a_data['gendeps'][dep]) | 423 | output.append("List of dependencies for variable %s is %s" % (dep, a_data['gendeps'][dep])) |
418 | 424 | ||
419 | for dep in a_data['varvals']: | 425 | for dep in a_data['varvals']: |
420 | print "Variable %s value is %s" % (dep, a_data['varvals'][dep]) | 426 | output.append("Variable %s value is %s" % (dep, a_data['varvals'][dep])) |
421 | 427 | ||
422 | if 'runtaskdeps' in a_data: | 428 | if 'runtaskdeps' in a_data: |
423 | print "Tasks this task depends on: %s" % (a_data['runtaskdeps']) | 429 | output.append("Tasks this task depends on: %s" % (a_data['runtaskdeps'])) |
424 | 430 | ||
425 | if 'file_checksum_values' in a_data: | 431 | if 'file_checksum_values' in a_data: |
426 | print "This task depends on the checksums of files: %s" % (a_data['file_checksum_values']) | 432 | output.append("This task depends on the checksums of files: %s" % (a_data['file_checksum_values'])) |
427 | 433 | ||
428 | if 'runtaskhashes' in a_data: | 434 | if 'runtaskhashes' in a_data: |
429 | for dep in a_data['runtaskhashes']: | 435 | for dep in a_data['runtaskhashes']: |
430 | print "Hash for dependent task %s is %s" % (dep, a_data['runtaskhashes'][dep]) | 436 | output.append("Hash for dependent task %s is %s" % (dep, a_data['runtaskhashes'][dep])) |
431 | 437 | ||
432 | if 'taint' in a_data: | 438 | if 'taint' in a_data: |
433 | print "Tainted (by forced/invalidated task): %s" % a_data['taint'] | 439 | output.append("Tainted (by forced/invalidated task): %s" % a_data['taint']) |
440 | |||
441 | return output | ||