OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # | 2 # |
3 # Copyright (c) 2015 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2015 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 """Adds the code parts to a resource APK.""" | 7 """Adds the code parts to a resource APK.""" |
8 | 8 |
9 import argparse | 9 import argparse |
10 import itertools | 10 import itertools |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 src_path=path, | 182 src_path=path, |
183 compress=compress) | 183 compress=compress) |
184 | 184 |
185 | 185 |
186 def main(args): | 186 def main(args): |
187 args = build_utils.ExpandFileArgs(args) | 187 args = build_utils.ExpandFileArgs(args) |
188 options = _ParseArgs(args) | 188 options = _ParseArgs(args) |
189 | 189 |
190 native_libs = sorted(options.native_libs) | 190 native_libs = sorted(options.native_libs) |
191 | 191 |
192 input_paths = [options.resource_apk, __file__] + native_libs | 192 input_paths = [options.resource_apk, __file__] |
193 # Include native libs in the depfile_deps since GN doesn't know about the | 193 # Include native libs in the depfile_deps since GN doesn't know about the |
194 # dependencies when is_component_build=true. | 194 # dependencies when is_component_build=true. |
195 depfile_deps = list(native_libs) | 195 depfile_deps = list(native_libs) |
196 | 196 |
197 secondary_native_libs = [] | 197 secondary_native_libs = [] |
198 if options.secondary_native_libs: | 198 if options.secondary_native_libs: |
199 secondary_native_libs = sorted(options.secondary_native_libs) | 199 secondary_native_libs = sorted(options.secondary_native_libs) |
200 input_paths += secondary_native_libs | |
201 depfile_deps += secondary_native_libs | 200 depfile_deps += secondary_native_libs |
202 | 201 |
203 if options.dex_file: | 202 if options.dex_file: |
204 input_paths.append(options.dex_file) | 203 input_paths.append(options.dex_file) |
205 | 204 |
206 input_strings = [options.android_abi, | 205 input_strings = [options.android_abi, |
207 options.native_lib_placeholders, | 206 options.native_lib_placeholders, |
208 options.uncompress_shared_libraries] | 207 options.uncompress_shared_libraries] |
209 | 208 |
210 if options.secondary_android_abi: | 209 if options.secondary_android_abi: |
211 input_strings.append(options.secondary_android_abi) | 210 input_strings.append(options.secondary_android_abi) |
212 | 211 |
213 if options.java_resources: | 212 if options.java_resources: |
214 input_paths.extend(options.java_resources) | 213 # Included via .build_config, so need to write it to depfile. |
| 214 depfile_deps.extend(options.java_resources) |
215 | 215 |
216 _assets = _ExpandPaths(options.assets) | 216 _assets = _ExpandPaths(options.assets) |
217 _uncompressed_assets = _ExpandPaths(options.uncompressed_assets) | 217 _uncompressed_assets = _ExpandPaths(options.uncompressed_assets) |
218 | 218 |
219 for src_path, dest_path in itertools.chain(_assets, _uncompressed_assets): | 219 for src_path, dest_path in itertools.chain(_assets, _uncompressed_assets): |
220 input_paths.append(src_path) | 220 # Included via .build_config, so need to write it to depfile. |
| 221 depfile_deps.append(src_path) |
221 input_strings.append(dest_path) | 222 input_strings.append(dest_path) |
222 | 223 |
223 def on_stale_md5(): | 224 def on_stale_md5(): |
224 tmp_apk = options.output_apk + '.tmp' | 225 tmp_apk = options.output_apk + '.tmp' |
225 try: | 226 try: |
226 # TODO(agrieve): It would be more efficient to combine this step | 227 # TODO(agrieve): It would be more efficient to combine this step |
227 # with finalize_apk(), which sometimes aligns and uncompresses the | 228 # with finalize_apk(), which sometimes aligns and uncompresses the |
228 # native libraries. | 229 # native libraries. |
229 with zipfile.ZipFile(options.resource_apk) as resource_apk, \ | 230 with zipfile.ZipFile(options.resource_apk) as resource_apk, \ |
230 zipfile.ZipFile(tmp_apk, 'w', zipfile.ZIP_DEFLATED) as out_apk: | 231 zipfile.ZipFile(tmp_apk, 'w', zipfile.ZIP_DEFLATED) as out_apk: |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 out_apk, apk_path, data=java_resource_jar.read(apk_path)) | 303 out_apk, apk_path, data=java_resource_jar.read(apk_path)) |
303 | 304 |
304 shutil.move(tmp_apk, options.output_apk) | 305 shutil.move(tmp_apk, options.output_apk) |
305 finally: | 306 finally: |
306 if os.path.exists(tmp_apk): | 307 if os.path.exists(tmp_apk): |
307 os.unlink(tmp_apk) | 308 os.unlink(tmp_apk) |
308 | 309 |
309 build_utils.CallAndWriteDepfileIfStale( | 310 build_utils.CallAndWriteDepfileIfStale( |
310 on_stale_md5, | 311 on_stale_md5, |
311 options, | 312 options, |
312 input_paths=input_paths, | 313 input_paths=input_paths + depfile_deps, |
313 input_strings=input_strings, | 314 input_strings=input_strings, |
314 output_paths=[options.output_apk], | 315 output_paths=[options.output_apk], |
315 depfile_deps=depfile_deps) | 316 depfile_deps=depfile_deps) |
316 | 317 |
317 | 318 |
318 if __name__ == '__main__': | 319 if __name__ == '__main__': |
319 main(sys.argv[1:]) | 320 main(sys.argv[1:]) |
OLD | NEW |