Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2014 The Chromium Authors. All rights reserved. | 2 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Compare the artifacts from two builds.""" | 6 """Compare the artifacts from two builds.""" |
| 7 | 7 |
| 8 import difflib | 8 import difflib |
| 9 import json | 9 import json |
| 10 import optparse | 10 import optparse |
| (...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 536 if os.path.isabs(path): | 536 if os.path.isabs(path): |
| 537 print >> sys.stderr, ('not support abs path %s used for target %s' | 537 print >> sys.stderr, ('not support abs path %s used for target %s' |
| 538 % (path, target)) | 538 % (path, target)) |
| 539 continue | 539 continue |
| 540 files.append(path) | 540 files.append(path) |
| 541 return files | 541 return files |
| 542 | 542 |
| 543 | 543 |
| 544 def compare_deps(first_dir, second_dir, targets): | 544 def compare_deps(first_dir, second_dir, targets): |
| 545 """Print difference of dependent files.""" | 545 """Print difference of dependent files.""" |
| 546 COFF_TIMESTAMP_DIFF_PATTERN = re.compile(r'[1-3] out of ') | |
| 546 for target in targets: | 547 for target in targets: |
| 547 first_deps = get_deps(first_dir, target) | 548 first_deps = get_deps(first_dir, target) |
| 548 second_deps = get_deps(second_dir, target) | 549 second_deps = get_deps(second_dir, target) |
| 549 print 'Checking %s difference: (%s deps)' % (target, len(first_deps)) | 550 print 'Checking %s difference: (%s deps)' % (target, len(first_deps)) |
| 550 if set(first_deps) != set(second_deps): | 551 if set(first_deps) != set(second_deps): |
| 551 # Since we do not thiks this case occur, we do not do anything special | 552 # Since we do not thiks this case occur, we do not do anything special |
| 552 # for this case. | 553 # for this case. |
| 553 print 'deps on %s are different: %s' % ( | 554 print 'deps on %s are different: %s' % ( |
| 554 target, set(first_deps).symmetric_difference(set(second_deps))) | 555 target, set(first_deps).symmetric_difference(set(second_deps))) |
| 555 continue | 556 continue |
| 556 max_filepath_len = max(len(n) for n in first_deps) | 557 max_filepath_len = max(len(n) for n in first_deps) |
| 557 for d in first_deps: | 558 for d in first_deps: |
| 558 first_file = os.path.join(first_dir, d) | 559 first_file = os.path.join(first_dir, d) |
| 559 second_file = os.path.join(second_dir, d) | 560 second_file = os.path.join(second_dir, d) |
| 560 result = compare_files(first_file, second_file) | 561 result = compare_files(first_file, second_file) |
| 561 if result: | 562 if result: |
| 562 print('%-*s: %s' % (max_filepath_len, d, result)) | 563 if (sys.platform == 'win32' and |
|
M-A Ruel
2016/09/02 16:30:26
This code belongs to binary_diff(); should passlis
Yoshisato Yanagisawa
2016/09/05 02:44:25
I cannot catch what you mean exactly but I guess y
| |
| 564 COFF_TIMESTAMP_DIFF_PATTERN.match(result)): | |
| 565 continue | |
| 566 print(' %-*s: %s' % (max_filepath_len, d, result)) | |
| 563 | 567 |
| 564 | 568 |
| 565 def compare_build_artifacts(first_dir, second_dir, target_platform, | 569 def compare_build_artifacts(first_dir, second_dir, target_platform, |
| 566 recursive=False): | 570 recursive=False): |
| 567 """Compares the artifacts from two distinct builds.""" | 571 """Compares the artifacts from two distinct builds.""" |
| 568 if not os.path.isdir(first_dir): | 572 if not os.path.isdir(first_dir): |
| 569 print >> sys.stderr, '%s isn\'t a valid directory.' % first_dir | 573 print >> sys.stderr, '%s isn\'t a valid directory.' % first_dir |
| 570 return 1 | 574 return 1 |
| 571 if not os.path.isdir(second_dir): | 575 if not os.path.isdir(second_dir): |
| 572 print >> sys.stderr, '%s isn\'t a valid directory.' % second_dir | 576 print >> sys.stderr, '%s isn\'t a valid directory.' % second_dir |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 658 parser.error('--target-platform is required') | 662 parser.error('--target-platform is required') |
| 659 | 663 |
| 660 return compare_build_artifacts(os.path.abspath(options.first_build_dir), | 664 return compare_build_artifacts(os.path.abspath(options.first_build_dir), |
| 661 os.path.abspath(options.second_build_dir), | 665 os.path.abspath(options.second_build_dir), |
| 662 options.target_platform, | 666 options.target_platform, |
| 663 options.recursive) | 667 options.recursive) |
| 664 | 668 |
| 665 | 669 |
| 666 if __name__ == '__main__': | 670 if __name__ == '__main__': |
| 667 sys.exit(main()) | 671 sys.exit(main()) |
| OLD | NEW |