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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 argv = build_utils.ExpandFileArgs(argv) | 112 argv = build_utils.ExpandFileArgs(argv) |
113 | 113 |
114 parser = optparse.OptionParser() | 114 parser = optparse.OptionParser() |
115 build_utils.AddDepfileOption(parser) | 115 build_utils.AddDepfileOption(parser) |
116 | 116 |
117 parser.add_option( | 117 parser.add_option( |
118 '--src-gendirs', | 118 '--src-gendirs', |
119 help='Directories containing generated java files.') | 119 help='Directories containing generated java files.') |
120 parser.add_option( | 120 parser.add_option( |
121 '--java-srcjars', | 121 '--java-srcjars', |
| 122 action='append', |
| 123 default=[], |
122 help='List of srcjars to include in compilation.') | 124 help='List of srcjars to include in compilation.') |
123 parser.add_option( | 125 parser.add_option( |
124 '--classpath', | 126 '--classpath', |
125 action='append', | 127 action='append', |
126 help='Classpath for javac. If this is specified multiple times, they ' | 128 help='Classpath for javac. If this is specified multiple times, they ' |
127 'will all be appended to construct the classpath.') | 129 'will all be appended to construct the classpath.') |
128 parser.add_option( | 130 parser.add_option( |
129 '--javac-includes', | 131 '--javac-includes', |
130 help='A list of file patterns. If provided, only java files that match' | 132 help='A list of file patterns. If provided, only java files that match' |
131 'one of the patterns will be compiled.') | 133 'one of the patterns will be compiled.') |
(...skipping 14 matching lines...) Expand all Loading... |
146 parser.add_option('--jar-path', help='Jar output path.') | 148 parser.add_option('--jar-path', help='Jar output path.') |
147 | 149 |
148 parser.add_option('--stamp', help='Path to touch on success.') | 150 parser.add_option('--stamp', help='Path to touch on success.') |
149 | 151 |
150 options, args = parser.parse_args(argv) | 152 options, args = parser.parse_args(argv) |
151 | 153 |
152 classpath = [] | 154 classpath = [] |
153 for arg in options.classpath: | 155 for arg in options.classpath: |
154 classpath += build_utils.ParseGypList(arg) | 156 classpath += build_utils.ParseGypList(arg) |
155 | 157 |
| 158 java_srcjars = [] |
| 159 for arg in options.java_srcjars: |
| 160 java_srcjars += build_utils.ParseGypList(arg) |
| 161 |
156 java_files = args | 162 java_files = args |
157 if options.src_gendirs: | 163 if options.src_gendirs: |
158 src_gendirs = build_utils.ParseGypList(options.src_gendirs) | 164 src_gendirs = build_utils.ParseGypList(options.src_gendirs) |
159 java_files += build_utils.FindInDirectories(src_gendirs, '*.java') | 165 java_files += build_utils.FindInDirectories(src_gendirs, '*.java') |
160 | 166 |
| 167 input_files = classpath + java_srcjars + java_files |
161 with build_utils.TempDir() as temp_dir: | 168 with build_utils.TempDir() as temp_dir: |
162 classes_dir = os.path.join(temp_dir, 'classes') | 169 classes_dir = os.path.join(temp_dir, 'classes') |
163 os.makedirs(classes_dir) | 170 os.makedirs(classes_dir) |
164 if options.java_srcjars: | 171 if java_srcjars: |
165 java_dir = os.path.join(temp_dir, 'java') | 172 java_dir = os.path.join(temp_dir, 'java') |
166 os.makedirs(java_dir) | 173 os.makedirs(java_dir) |
167 for srcjar in build_utils.ParseGypList(options.java_srcjars): | 174 for srcjar in java_srcjars: |
168 build_utils.ExtractAll(srcjar, path=java_dir) | 175 build_utils.ExtractAll(srcjar, path=java_dir) |
169 java_files += build_utils.FindInDirectory(java_dir, '*.java') | 176 java_files += build_utils.FindInDirectory(java_dir, '*.java') |
170 | 177 |
171 if options.javac_includes: | 178 if options.javac_includes: |
172 javac_includes = build_utils.ParseGypList(options.javac_includes) | 179 javac_includes = build_utils.ParseGypList(options.javac_includes) |
173 filtered_java_files = [] | 180 filtered_java_files = [] |
174 for f in java_files: | 181 for f in java_files: |
175 for include in javac_includes: | 182 for include in javac_includes: |
176 if fnmatch.fnmatch(f, include): | 183 if fnmatch.fnmatch(f, include): |
177 filtered_java_files.append(f) | 184 filtered_java_files.append(f) |
(...skipping 16 matching lines...) Expand all Loading... |
194 # the output are actually from the input .java files. For example, if a | 201 # the output are actually from the input .java files. For example, if a |
195 # .java file is deleted or an inner class is removed, the classes | 202 # .java file is deleted or an inner class is removed, the classes |
196 # directory should not contain the corresponding old .class file after | 203 # directory should not contain the corresponding old .class file after |
197 # running this action. | 204 # running this action. |
198 build_utils.DeleteDirectory(options.classes_dir) | 205 build_utils.DeleteDirectory(options.classes_dir) |
199 shutil.copytree(classes_dir, options.classes_dir) | 206 shutil.copytree(classes_dir, options.classes_dir) |
200 | 207 |
201 if options.depfile: | 208 if options.depfile: |
202 build_utils.WriteDepfile( | 209 build_utils.WriteDepfile( |
203 options.depfile, | 210 options.depfile, |
204 classpath + build_utils.GetPythonDependencies()) | 211 input_files + build_utils.GetPythonDependencies()) |
205 | 212 |
206 if options.stamp: | 213 if options.stamp: |
207 build_utils.Touch(options.stamp) | 214 build_utils.Touch(options.stamp) |
208 | 215 |
209 | 216 |
210 if __name__ == '__main__': | 217 if __name__ == '__main__': |
211 sys.exit(main(sys.argv[1:])) | 218 sys.exit(main(sys.argv[1:])) |
212 | 219 |
213 | 220 |
OLD | NEW |