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 |
11 import os | 11 import os |
12 import struct | 12 import struct |
13 import sys | 13 import sys |
14 import time | 14 import time |
15 | 15 |
16 | 16 |
17 BASE_DIR = os.path.dirname(os.path.abspath(__file__)) | 17 BASE_DIR = os.path.dirname(os.path.abspath(__file__)) |
18 | 18 |
19 | 19 |
20 # List of files that are known to be non deterministic. This is a temporary | 20 # List of files that are known to be non deterministic. This is a temporary |
21 # workaround to find regression on the deterministic builders. | 21 # workaround to find regression on the deterministic builders. |
22 # TODO(sebmarchand): Remove this once all the files are deterministic. | 22 # TODO(sebmarchand): Remove this once all the files are deterministic. |
23 WHITELIST = { | 23 WHITELIST = { |
| 24 # http://crbug.com/383340 |
| 25 'android': { |
| 26 # Completed. |
| 27 }, |
| 28 |
| 29 # http://crbug.com/383364 |
| 30 'ios': { |
| 31 # TODO(maruel): Add files. |
| 32 }, |
| 33 |
| 34 # http://crbug.com/330263 |
| 35 'linux': { |
| 36 # Completed. |
| 37 }, |
| 38 |
| 39 # http://crbug.com/330262 |
| 40 'mac': { |
| 41 # TODO(maruel): Add files. |
| 42 }, |
| 43 |
| 44 # http://crbug.com/330260 |
24 'win': { | 45 'win': { |
25 'base_unittests.exe', | 46 'base_unittests.exe', |
26 'base_unittests.isolated', | 47 'base_unittests.isolated', |
27 'browser_tests.exe', | 48 'browser_tests.exe', |
28 'browser_tests.isolated', | 49 'browser_tests.isolated', |
29 'chrome.dll', | 50 'chrome.dll', |
30 'chrome.exe', | 51 'chrome.exe', |
31 'chrome_child.dll', | 52 'chrome_child.dll', |
32 'chrome_watcher.dll', | 53 'chrome_watcher.dll', |
33 'clearkeycdm.dll', | 54 'clearkeycdm.dll', |
(...skipping 15 matching lines...) Expand all Loading... |
49 'pdf.dll', | 70 'pdf.dll', |
50 'peerconnection_server.exe', | 71 'peerconnection_server.exe', |
51 'ppapi_nacl_tests_pnacl_newlib_x32.nexe', | 72 'ppapi_nacl_tests_pnacl_newlib_x32.nexe', |
52 'ppapi_nacl_tests_pnacl_newlib_x64.nexe', | 73 'ppapi_nacl_tests_pnacl_newlib_x64.nexe', |
53 'sync_integration_tests.exe', | 74 'sync_integration_tests.exe', |
54 'sync_integration_tests.isolated', | 75 'sync_integration_tests.isolated', |
55 'test_registrar.exe', | 76 'test_registrar.exe', |
56 'unit_tests.exe', | 77 'unit_tests.exe', |
57 'unit_tests.isolated', | 78 'unit_tests.isolated', |
58 }, | 79 }, |
59 'linux': { | |
60 'browser_tests.isolated', | |
61 'nacl_helper_nonsfi', | |
62 'nacl_irt_x86_64.nexe', | |
63 'ppapi_nacl_tests_glibc_x64.nexe', | |
64 'ppapi_nacl_tests_newlib_x64.nexe', | |
65 'ppapi_nacl_tests_pnacl_newlib_x64.nexe', | |
66 'unit_tests.isolated', | |
67 }, | |
68 'mac': { }, | |
69 'android': { }, | |
70 'ios': { }, | |
71 } | 80 } |
72 | 81 |
73 def get_files_to_compare(build_dir, recursive=False): | 82 def get_files_to_compare(build_dir, recursive=False): |
74 """Get the list of files to compare.""" | 83 """Get the list of files to compare.""" |
75 allowed = frozenset( | 84 allowed = frozenset( |
76 ('', '.apk', '.app', '.dll', '.dylib', '.exe', '.nexe', '.so')) | 85 ('', '.apk', '.app', '.dll', '.dylib', '.exe', '.nexe', '.so')) |
77 non_x_ok_exts = frozenset(('.apk', '.isolated')) | 86 non_x_ok_exts = frozenset(('.apk', '.isolated')) |
78 def check(f): | 87 def check(f): |
79 if not os.path.isfile(f): | 88 if not os.path.isfile(f): |
80 return False | 89 return False |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 parser.error('--target-platform is required') | 258 parser.error('--target-platform is required') |
250 | 259 |
251 return compare_build_artifacts(os.path.abspath(options.first_build_dir), | 260 return compare_build_artifacts(os.path.abspath(options.first_build_dir), |
252 os.path.abspath(options.second_build_dir), | 261 os.path.abspath(options.second_build_dir), |
253 options.target_platform, | 262 options.target_platform, |
254 options.recursive) | 263 options.recursive) |
255 | 264 |
256 | 265 |
257 if __name__ == '__main__': | 266 if __name__ == '__main__': |
258 sys.exit(main()) | 267 sys.exit(main()) |
OLD | NEW |