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 """Instruments classes and jar files. | 7 """Instruments classes and jar files. |
8 | 8 |
9 This script corresponds to the 'emma_instr' action in the java build process. | 9 This script corresponds to the 'emma_instr' action in the java build process. |
10 Depending on whether emma_instrument is set, the 'emma_instr' action will either | 10 Depending on whether emma_instrument is set, the 'emma_instr' action will either |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 """Adds options related to instrumentation to |option_parser|.""" | 51 """Adds options related to instrumentation to |option_parser|.""" |
52 _AddCommonOptions(option_parser) | 52 _AddCommonOptions(option_parser) |
53 option_parser.add_option('--source-dirs', | 53 option_parser.add_option('--source-dirs', |
54 help='Space separated list of source directories. ' | 54 help='Space separated list of source directories. ' |
55 'source-files should not be specified if ' | 55 'source-files should not be specified if ' |
56 'source-dirs is specified') | 56 'source-dirs is specified') |
57 option_parser.add_option('--source-files', | 57 option_parser.add_option('--source-files', |
58 help='Space separated list of source files. ' | 58 help='Space separated list of source files. ' |
59 'source-dirs should not be specified if ' | 59 'source-dirs should not be specified if ' |
60 'source-files is specified') | 60 'source-files is specified') |
| 61 option_parser.add_option('--java-sources-file', |
| 62 help='File containing newline-separated .java paths') |
61 option_parser.add_option('--src-root', | 63 option_parser.add_option('--src-root', |
62 help='Root of the src repository.') | 64 help='Root of the src repository.') |
63 option_parser.add_option('--emma-jar', | 65 option_parser.add_option('--emma-jar', |
64 help='Path to emma.jar.') | 66 help='Path to emma.jar.') |
65 option_parser.add_option( | 67 option_parser.add_option( |
66 '--filter-string', default='', | 68 '--filter-string', default='', |
67 help=('Filter string consisting of a list of inclusion/exclusion ' | 69 help=('Filter string consisting of a list of inclusion/exclusion ' |
68 'patterns separated with whitespace and/or comma.')) | 70 'patterns separated with whitespace and/or comma.')) |
69 | 71 |
70 | 72 |
(...skipping 24 matching lines...) Expand all Loading... |
95 shutil.copy(options.input_path, options.output_path) | 97 shutil.copy(options.input_path, options.output_path) |
96 | 98 |
97 if options.stamp: | 99 if options.stamp: |
98 build_utils.Touch(options.stamp) | 100 build_utils.Touch(options.stamp) |
99 | 101 |
100 if options.depfile: | 102 if options.depfile: |
101 build_utils.WriteDepfile(options.depfile, | 103 build_utils.WriteDepfile(options.depfile, |
102 build_utils.GetPythonDependencies()) | 104 build_utils.GetPythonDependencies()) |
103 | 105 |
104 | 106 |
105 def _GetSourceDirsFromSourceFiles(source_files_string): | 107 def _GetSourceDirsFromSourceFiles(source_files): |
106 """Returns list of directories for the files in |source_files_string|. | 108 """Returns list of directories for the files in |source_files|. |
107 | 109 |
108 Args: | 110 Args: |
109 source_files_string: String generated from GN or GYP containing the list | 111 source_files: List of source files. |
110 of source files. | |
111 | 112 |
112 Returns: | 113 Returns: |
113 List of source directories. | 114 List of source directories. |
114 """ | 115 """ |
115 source_files = build_utils.ParseGypList(source_files_string) | |
116 return list(set(os.path.dirname(source_file) for source_file in source_files)) | 116 return list(set(os.path.dirname(source_file) for source_file in source_files)) |
117 | 117 |
118 | 118 |
119 def _CreateSourcesListFile(source_dirs, sources_list_file, src_root): | 119 def _CreateSourcesListFile(source_dirs, sources_list_file, src_root): |
120 """Adds all normalized source directories to |sources_list_file|. | 120 """Adds all normalized source directories to |sources_list_file|. |
121 | 121 |
122 Args: | 122 Args: |
123 source_dirs: List of source directories. | 123 source_dirs: List of source directories. |
124 sources_list_file: File into which to write the JSON list of sources. | 124 sources_list_file: File into which to write the JSON list of sources. |
125 src_root: Root which sources added to the file should be relative to. | 125 src_root: Root which sources added to the file should be relative to. |
(...skipping 25 matching lines...) Expand all Loading... |
151 this function. | 151 this function. |
152 options: optparse options dictionary. | 152 options: optparse options dictionary. |
153 args: List of extra args from optparse. | 153 args: List of extra args from optparse. |
154 option_parser: optparse.OptionParser object. | 154 option_parser: optparse.OptionParser object. |
155 | 155 |
156 Returns: | 156 Returns: |
157 An exit code. | 157 An exit code. |
158 """ | 158 """ |
159 if not (options.input_path and options.output_path and | 159 if not (options.input_path and options.output_path and |
160 options.coverage_file and options.sources_list_file and | 160 options.coverage_file and options.sources_list_file and |
161 (options.source_files or options.source_dirs) and | 161 (options.source_files or options.source_dirs or |
| 162 options.java_sources_file) and |
162 options.src_root and options.emma_jar): | 163 options.src_root and options.emma_jar): |
163 option_parser.error('All arguments are required.') | 164 option_parser.error('All arguments are required.') |
164 | 165 |
165 if os.path.exists(options.coverage_file): | 166 if os.path.exists(options.coverage_file): |
166 os.remove(options.coverage_file) | 167 os.remove(options.coverage_file) |
167 temp_dir = tempfile.mkdtemp() | 168 temp_dir = tempfile.mkdtemp() |
168 try: | 169 try: |
169 cmd = ['java', '-cp', options.emma_jar, | 170 cmd = ['java', '-cp', options.emma_jar, |
170 'emma', 'instr', | 171 'emma', 'instr', |
171 '-ip', options.input_path, | 172 '-ip', options.input_path, |
(...skipping 17 matching lines...) Expand all Loading... |
189 # input_path is a hardlink to output_path. http://crbug.com/571642 | 190 # input_path is a hardlink to output_path. http://crbug.com/571642 |
190 if os.path.exists(options.output_path): | 191 if os.path.exists(options.output_path): |
191 os.unlink(options.output_path) | 192 os.unlink(options.output_path) |
192 shutil.move(os.path.join(temp_jar_dir, jars[0]), options.output_path) | 193 shutil.move(os.path.join(temp_jar_dir, jars[0]), options.output_path) |
193 finally: | 194 finally: |
194 shutil.rmtree(temp_dir) | 195 shutil.rmtree(temp_dir) |
195 | 196 |
196 if options.source_dirs: | 197 if options.source_dirs: |
197 source_dirs = build_utils.ParseGypList(options.source_dirs) | 198 source_dirs = build_utils.ParseGypList(options.source_dirs) |
198 else: | 199 else: |
199 source_dirs = _GetSourceDirsFromSourceFiles(options.source_files) | 200 source_files = [] |
| 201 if options.source_files: |
| 202 source_files += build_utils.ParseGypList(options.source_files) |
| 203 if options.java_sources_file: |
| 204 with open(options.java_sources_file) as f: |
| 205 source_files.extend(l.strip() for l in f) |
| 206 source_dirs = _GetSourceDirsFromSourceFiles(source_files) |
| 207 |
| 208 # TODO(GYP): In GN, we are passed the list of sources, detecting source |
| 209 # directories, then walking them to re-establish the list of sources. |
| 210 # This can obviously be simplified! |
200 _CreateSourcesListFile(source_dirs, options.sources_list_file, | 211 _CreateSourcesListFile(source_dirs, options.sources_list_file, |
201 options.src_root) | 212 options.src_root) |
202 | 213 |
203 if options.stamp: | 214 if options.stamp: |
204 build_utils.Touch(options.stamp) | 215 build_utils.Touch(options.stamp) |
205 | 216 |
206 if options.depfile: | 217 if options.depfile: |
207 build_utils.WriteDepfile(options.depfile, | 218 build_utils.WriteDepfile(options.depfile, |
208 build_utils.GetPythonDependencies()) | 219 build_utils.GetPythonDependencies()) |
209 | 220 |
(...skipping 11 matching lines...) Expand all Loading... |
221 | 232 |
222 | 233 |
223 def main(): | 234 def main(): |
224 option_parser = command_option_parser.CommandOptionParser( | 235 option_parser = command_option_parser.CommandOptionParser( |
225 commands_dict=VALID_COMMANDS) | 236 commands_dict=VALID_COMMANDS) |
226 command_option_parser.ParseAndExecute(option_parser) | 237 command_option_parser.ParseAndExecute(option_parser) |
227 | 238 |
228 | 239 |
229 if __name__ == '__main__': | 240 if __name__ == '__main__': |
230 sys.exit(main()) | 241 sys.exit(main()) |
OLD | NEW |