OLD | NEW |
---|---|
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # | 2 # |
3 # Copyright 2013 The Chromium Authors. All rights reserved. | 3 # Copyright 2013 The Chromium Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 import fnmatch | 7 import fnmatch |
8 import optparse | 8 import optparse |
9 import os | 9 import os |
10 import shutil | 10 import shutil |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
47 line = Colorize(line, warning_re, warning_color) | 47 line = Colorize(line, warning_re, warning_color) |
48 elif error_re.match(line): | 48 elif error_re.match(line): |
49 line = Colorize(line, error_re, error_color) | 49 line = Colorize(line, error_re, error_color) |
50 elif marker_re.match(line): | 50 elif marker_re.match(line): |
51 line = Colorize(line, marker_re, marker_color) | 51 line = Colorize(line, marker_re, marker_color) |
52 return line | 52 return line |
53 | 53 |
54 return '\n'.join(map(ApplyColor, output.split('\n'))) | 54 return '\n'.join(map(ApplyColor, output.split('\n'))) |
55 | 55 |
56 | 56 |
57 ERRORPRONE_OPTIONS = [ | |
58 '-Xepdisable:' | |
59 # Something in chrome_private_java makes this check crash. | |
cjhopman
2015/05/20 02:21:29
We should file a chromium bug about these. And may
raywilliams_chromium
2015/05/20 21:31:55
Yeah, maybe this can go away if we ever switch to
| |
60 'com.google.errorprone.bugpatterns.ClassCanBeStatic,' | |
61 # These crash on lots of targets. | |
62 'com.google.errorprone.bugpatterns.WrongParameterPackage,' | |
63 'com.google.errorprone.bugpatterns.GuiceOverridesGuiceInjectableMethod,' | |
64 'com.google.errorprone.bugpatterns.GuiceOverridesJavaxInjectableMethod,' | |
65 'com.google.errorprone.bugpatterns.ElementsCountedInLoop' | |
66 ] | |
67 | |
57 def DoJavac( | 68 def DoJavac( |
58 classpath, classes_dir, chromium_code, java_files): | 69 classpath, classes_dir, chromium_code, |
70 errorprone_path, java_files): | |
59 """Runs javac. | 71 """Runs javac. |
60 | 72 |
61 Builds |java_files| with the provided |classpath| and puts the generated | 73 Builds |java_files| with the provided |classpath| and puts the generated |
62 .class files into |classes_dir|. If |chromium_code| is true, extra lint | 74 .class files into |classes_dir|. If |chromium_code| is true, extra lint |
63 checking will be enabled. | 75 checking will be enabled. |
64 """ | 76 """ |
65 | 77 |
66 jar_inputs = [] | 78 jar_inputs = [] |
67 for path in classpath: | 79 for path in classpath: |
68 if os.path.exists(path + '.TOC'): | 80 if os.path.exists(path + '.TOC'): |
(...skipping 12 matching lines...) Expand all Loading... | |
81 '-d', classes_dir] | 93 '-d', classes_dir] |
82 if chromium_code: | 94 if chromium_code: |
83 # TODO(aurimas): re-enable '-Xlint:deprecation' checks once they are fixed. | 95 # TODO(aurimas): re-enable '-Xlint:deprecation' checks once they are fixed. |
84 javac_args.extend(['-Xlint:unchecked']) | 96 javac_args.extend(['-Xlint:unchecked']) |
85 else: | 97 else: |
86 # XDignore.symbol.file makes javac compile against rt.jar instead of | 98 # XDignore.symbol.file makes javac compile against rt.jar instead of |
87 # ct.sym. This means that using a java internal package/class will not | 99 # ct.sym. This means that using a java internal package/class will not |
88 # trigger a compile warning or error. | 100 # trigger a compile warning or error. |
89 javac_args.extend(['-XDignore.symbol.file']) | 101 javac_args.extend(['-XDignore.symbol.file']) |
90 | 102 |
91 javac_cmd = ['javac'] + javac_args + java_files | 103 if errorprone_path: |
104 javac_cmd = [errorprone_path] + ERRORPRONE_OPTIONS | |
105 else: | |
106 javac_cmd = ['javac'] | |
107 | |
108 javac_cmd = javac_cmd + javac_args + java_files | |
92 | 109 |
93 def Compile(): | 110 def Compile(): |
94 build_utils.CheckOutput( | 111 build_utils.CheckOutput( |
95 javac_cmd, | 112 javac_cmd, |
96 print_stdout=chromium_code, | 113 print_stdout=chromium_code, |
97 stderr_filter=ColorJavacOutput) | 114 stderr_filter=ColorJavacOutput) |
98 | 115 |
99 record_path = os.path.join(classes_dir, 'javac.md5.stamp') | 116 record_path = os.path.join(classes_dir, 'javac.md5.stamp') |
100 md5_check.CallAndRecordIfStale( | 117 md5_check.CallAndRecordIfStale( |
101 Compile, | 118 Compile, |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
177 default='', | 194 default='', |
178 help='List of .class file patterns to exclude from the jar.') | 195 help='List of .class file patterns to exclude from the jar.') |
179 | 196 |
180 parser.add_option( | 197 parser.add_option( |
181 '--chromium-code', | 198 '--chromium-code', |
182 type='int', | 199 type='int', |
183 help='Whether code being compiled should be built with stricter ' | 200 help='Whether code being compiled should be built with stricter ' |
184 'warnings for chromium code.') | 201 'warnings for chromium code.') |
185 | 202 |
186 parser.add_option( | 203 parser.add_option( |
204 '--errorprone-path', | |
205 help='Path to the errorprone compiler executable.') | |
cjhopman
2015/05/20 02:21:29
If this is going to make us use errorprone instead
raywilliams_chromium
2015/05/20 21:31:55
Interesting observation!
I actually like use-erro
| |
206 | |
207 parser.add_option( | |
187 '--classes-dir', | 208 '--classes-dir', |
188 help='Directory for compiled .class files.') | 209 help='Directory for compiled .class files.') |
189 parser.add_option('--jar-path', help='Jar output path.') | 210 parser.add_option('--jar-path', help='Jar output path.') |
190 parser.add_option( | 211 parser.add_option( |
191 '--main-class', | 212 '--main-class', |
192 help='The class containing the main method.') | 213 help='The class containing the main method.') |
193 parser.add_option( | 214 parser.add_option( |
194 '--manifest-entry', | 215 '--manifest-entry', |
195 action='append', | 216 action='append', |
196 help='Key:value pairs to add to the .jar manifest.') | 217 help='Key:value pairs to add to the .jar manifest.') |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
234 if fnmatch.fnmatch(f, include): | 255 if fnmatch.fnmatch(f, include): |
235 filtered_java_files.append(f) | 256 filtered_java_files.append(f) |
236 break | 257 break |
237 java_files = filtered_java_files | 258 java_files = filtered_java_files |
238 | 259 |
239 if len(java_files) != 0: | 260 if len(java_files) != 0: |
240 DoJavac( | 261 DoJavac( |
241 classpath, | 262 classpath, |
242 classes_dir, | 263 classes_dir, |
243 options.chromium_code, | 264 options.chromium_code, |
265 options.errorprone_path, | |
244 java_files) | 266 java_files) |
245 | 267 |
246 if options.jar_path: | 268 if options.jar_path: |
247 if options.main_class or options.manifest_entry: | 269 if options.main_class or options.manifest_entry: |
248 if options.manifest_entry: | 270 if options.manifest_entry: |
249 entries = map(lambda e: e.split(":"), options.manifest_entry) | 271 entries = map(lambda e: e.split(":"), options.manifest_entry) |
250 else: | 272 else: |
251 entries = [] | 273 entries = [] |
252 manifest_file = os.path.join(temp_dir, 'manifest') | 274 manifest_file = os.path.join(temp_dir, 'manifest') |
253 CreateManifest(manifest_file, classpath, options.main_class, entries) | 275 CreateManifest(manifest_file, classpath, options.main_class, entries) |
(...skipping 19 matching lines...) Expand all Loading... | |
273 input_files + build_utils.GetPythonDependencies()) | 295 input_files + build_utils.GetPythonDependencies()) |
274 | 296 |
275 if options.stamp: | 297 if options.stamp: |
276 build_utils.Touch(options.stamp) | 298 build_utils.Touch(options.stamp) |
277 | 299 |
278 | 300 |
279 if __name__ == '__main__': | 301 if __name__ == '__main__': |
280 sys.exit(main(sys.argv[1:])) | 302 sys.exit(main(sys.argv[1:])) |
281 | 303 |
282 | 304 |
OLD | NEW |