| OLD | NEW | 
|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python | 
| 2 # | 2 # | 
| 3 # Copyright 2014 The Chromium Authors. All rights reserved. | 3 # Copyright 2014 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 """Writes a build_config file. | 7 """Writes a build_config file. | 
| 8 | 8 | 
| 9 The build_config file for a target is a json file containing information about | 9 The build_config file for a target is a json file containing information about | 
| 10 how to build that target based on the target's dependencies. This includes | 10 how to build that target based on the target's dependencies. This includes | 
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 202   for path in runtime_deps_files: | 202   for path in runtime_deps_files: | 
| 203     with open(path) as f: | 203     with open(path) as f: | 
| 204       for line in f: | 204       for line in f: | 
| 205         line = line.rstrip() | 205         line = line.rstrip() | 
| 206         if not line.endswith('.so'): | 206         if not line.endswith('.so'): | 
| 207           continue | 207           continue | 
| 208         ret.append(os.path.normpath(line)) | 208         ret.append(os.path.normpath(line)) | 
| 209   ret.reverse() | 209   ret.reverse() | 
| 210   return ret | 210   return ret | 
| 211 | 211 | 
| 212 |  | 
| 213 def _CreateJavaLibrariesList(library_paths): | 212 def _CreateJavaLibrariesList(library_paths): | 
| 214   """Returns a java literal array with the "base" library names: | 213   """ Create a java literal array with the "base" library names: | 
| 215   e.g. libfoo.so -> foo | 214   e.g. libfoo.so -> foo | 
| 216   """ | 215   """ | 
| 217   return ('{%s}' % ','.join(['"%s"' % s[3:-3] for s in library_paths])) | 216   return ('{%s}' % ','.join(['"%s"' % s[3:-3] for s in library_paths])) | 
| 218 | 217 | 
| 219 |  | 
| 220 def _CreateJavaAssetList(assets): |  | 
| 221   """Returns a java literal array from a list of assets in the form src:dst.""" |  | 
| 222   return '{%s}' % ','.join(sorted(['"%s"' % a.split(':')[1] for a in assets])) |  | 
| 223 |  | 
| 224 |  | 
| 225 def main(argv): | 218 def main(argv): | 
| 226   parser = optparse.OptionParser() | 219   parser = optparse.OptionParser() | 
| 227   build_utils.AddDepfileOption(parser) | 220   build_utils.AddDepfileOption(parser) | 
| 228   parser.add_option('--build-config', help='Path to build_config output.') | 221   parser.add_option('--build-config', help='Path to build_config output.') | 
| 229   parser.add_option( | 222   parser.add_option( | 
| 230       '--type', | 223       '--type', | 
| 231       help='Type of this target (e.g. android_library).') | 224       help='Type of this target (e.g. android_library).') | 
| 232   parser.add_option( | 225   parser.add_option( | 
| 233       '--deps-configs', | 226       '--deps-configs', | 
| 234       help='List of paths for dependency\'s build_config files. ') | 227       help='List of paths for dependency\'s build_config files. ') | 
| 235 | 228 | 
| 236   # android_resources options | 229   # android_resources options | 
| 237   parser.add_option('--srcjar', help='Path to target\'s resources srcjar.') | 230   parser.add_option('--srcjar', help='Path to target\'s resources srcjar.') | 
| 238   parser.add_option('--resources-zip', help='Path to target\'s resources zip.') | 231   parser.add_option('--resources-zip', help='Path to target\'s resources zip.') | 
| 239   parser.add_option('--r-text', help='Path to target\'s R.txt file.') | 232   parser.add_option('--r-text', help='Path to target\'s R.txt file.') | 
| 240   parser.add_option('--package-name', | 233   parser.add_option('--package-name', | 
| 241       help='Java package name for these resources.') | 234       help='Java package name for these resources.') | 
| 242   parser.add_option('--android-manifest', help='Path to android manifest.') | 235   parser.add_option('--android-manifest', help='Path to android manifest.') | 
|  | 236   parser.add_option('--is-locale-resource', action='store_true', | 
|  | 237                     help='Whether it is locale resource.') | 
| 243   parser.add_option('--resource-dirs', action='append', default=[], | 238   parser.add_option('--resource-dirs', action='append', default=[], | 
| 244                     help='GYP-list of resource dirs') | 239                     help='GYP-list of resource dirs') | 
| 245 | 240 | 
| 246   # android_assets options | 241   # android_assets options | 
| 247   parser.add_option('--asset-sources', help='List of asset sources.') | 242   parser.add_option('--asset-sources', help='List of asset sources.') | 
| 248   parser.add_option('--asset-renaming-sources', | 243   parser.add_option('--asset-renaming-sources', | 
| 249                     help='List of asset sources with custom destinations.') | 244                     help='List of asset sources with custom destinations.') | 
| 250   parser.add_option('--asset-renaming-destinations', | 245   parser.add_option('--asset-renaming-destinations', | 
| 251                     help='List of asset custom destinations.') | 246                     help='List of asset custom destinations.') | 
| 252   parser.add_option('--disable-asset-compression', action='store_true', | 247   parser.add_option('--disable-asset-compression', action='store_true', | 
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 288 | 283 | 
| 289   parser.add_option('--tested-apk-config', | 284   parser.add_option('--tested-apk-config', | 
| 290       help='Path to the build config of the tested apk (for an instrumentation ' | 285       help='Path to the build config of the tested apk (for an instrumentation ' | 
| 291       'test apk).') | 286       'test apk).') | 
| 292   parser.add_option('--proguard-enabled', action='store_true', | 287   parser.add_option('--proguard-enabled', action='store_true', | 
| 293       help='Whether proguard is enabled for this apk.') | 288       help='Whether proguard is enabled for this apk.') | 
| 294   parser.add_option('--proguard-configs', | 289   parser.add_option('--proguard-configs', | 
| 295       help='GYP-list of proguard flag files to use in final apk.') | 290       help='GYP-list of proguard flag files to use in final apk.') | 
| 296   parser.add_option('--proguard-info', | 291   parser.add_option('--proguard-info', | 
| 297       help='Path to the proguard .info output for this apk.') | 292       help='Path to the proguard .info output for this apk.') | 
|  | 293   parser.add_option('--has-alternative-locale-resource', action='store_true', | 
|  | 294       help='Whether there is alternative-locale-resource in direct deps') | 
| 298   parser.add_option('--fail', | 295   parser.add_option('--fail', | 
| 299       help='GYP-list of error message lines to fail with.') | 296       help='GYP-list of error message lines to fail with.') | 
| 300 | 297 | 
| 301   options, args = parser.parse_args(argv) | 298   options, args = parser.parse_args(argv) | 
| 302 | 299 | 
| 303   if args: | 300   if args: | 
| 304     parser.error('No positional arguments should be given.') | 301     parser.error('No positional arguments should be given.') | 
| 305   if options.fail: | 302   if options.fail: | 
| 306     parser.error('\n'.join(build_utils.ParseGnList(options.fail))) | 303     parser.error('\n'.join(build_utils.ParseGnList(options.fail))) | 
| 307 | 304 | 
| (...skipping 27 matching lines...) Expand all  Loading... | 
| 335       raise Exception( | 332       raise Exception( | 
| 336           '--supports-android is required when using --requires-android') | 333           '--supports-android is required when using --requires-android') | 
| 337 | 334 | 
| 338   direct_deps_config_paths = build_utils.ParseGnList(options.deps_configs) | 335   direct_deps_config_paths = build_utils.ParseGnList(options.deps_configs) | 
| 339   direct_deps_config_paths = _FilterDepsPaths(direct_deps_config_paths, | 336   direct_deps_config_paths = _FilterDepsPaths(direct_deps_config_paths, | 
| 340                                               options.type) | 337                                               options.type) | 
| 341 | 338 | 
| 342   deps = Deps(direct_deps_config_paths) | 339   deps = Deps(direct_deps_config_paths) | 
| 343   all_inputs = deps.AllConfigPaths() | 340   all_inputs = deps.AllConfigPaths() | 
| 344 | 341 | 
|  | 342   # Remove other locale resources if there is alternative_locale_resource in | 
|  | 343   # direct deps. | 
|  | 344   if options.has_alternative_locale_resource: | 
|  | 345     alternative = [r['path'] for r in deps.Direct('android_resources') | 
|  | 346                    if r.get('is_locale_resource')] | 
|  | 347     # We can only have one locale resources in direct deps. | 
|  | 348     if len(alternative) != 1: | 
|  | 349       raise Exception('The number of locale resource in direct deps is wrong %d' | 
|  | 350                        % len(alternative)) | 
|  | 351     unwanted = [r['path'] for r in deps.All('android_resources') | 
|  | 352                 if r.get('is_locale_resource') and r['path'] not in alternative] | 
|  | 353     for p in unwanted: | 
|  | 354       deps.RemoveNonDirectDep(p) | 
|  | 355 | 
|  | 356 | 
| 345   direct_library_deps = deps.Direct('java_library') | 357   direct_library_deps = deps.Direct('java_library') | 
| 346   all_library_deps = deps.All('java_library') | 358   all_library_deps = deps.All('java_library') | 
| 347 | 359 | 
| 348   all_resources_deps = deps.All('android_resources') | 360   all_resources_deps = deps.All('android_resources') | 
| 349   # Resources should be ordered with the highest-level dependency first so that | 361   # Resources should be ordered with the highest-level dependency first so that | 
| 350   # overrides are done correctly. | 362   # overrides are done correctly. | 
| 351   all_resources_deps.reverse() | 363   all_resources_deps.reverse() | 
| 352 | 364 | 
| 353   if options.type == 'android_apk' and options.tested_apk_config: | 365   if options.type == 'android_apk' and options.tested_apk_config: | 
| 354     tested_apk_deps = Deps([options.tested_apk_config]) | 366     tested_apk_deps = Deps([options.tested_apk_config]) | 
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 466     deps_info['resources_zip'] = options.resources_zip | 478     deps_info['resources_zip'] = options.resources_zip | 
| 467     if options.srcjar: | 479     if options.srcjar: | 
| 468       deps_info['srcjar'] = options.srcjar | 480       deps_info['srcjar'] = options.srcjar | 
| 469     if options.android_manifest: | 481     if options.android_manifest: | 
| 470       manifest = AndroidManifest(options.android_manifest) | 482       manifest = AndroidManifest(options.android_manifest) | 
| 471       deps_info['package_name'] = manifest.GetPackageName() | 483       deps_info['package_name'] = manifest.GetPackageName() | 
| 472     if options.package_name: | 484     if options.package_name: | 
| 473       deps_info['package_name'] = options.package_name | 485       deps_info['package_name'] = options.package_name | 
| 474     if options.r_text: | 486     if options.r_text: | 
| 475       deps_info['r_text'] = options.r_text | 487       deps_info['r_text'] = options.r_text | 
|  | 488     if options.is_locale_resource: | 
|  | 489       deps_info['is_locale_resource'] = True | 
| 476 | 490 | 
| 477     deps_info['resources_dirs'] = [] | 491     deps_info['resources_dirs'] = [] | 
| 478     if options.resource_dirs: | 492     if options.resource_dirs: | 
| 479       for gyp_list in options.resource_dirs: | 493       for gyp_list in options.resource_dirs: | 
| 480         deps_info['resources_dirs'].extend(build_utils.ParseGnList(gyp_list)) | 494         deps_info['resources_dirs'].extend(build_utils.ParseGnList(gyp_list)) | 
| 481 | 495 | 
| 482   if options.supports_android and options.type in ('android_apk', | 496   if options.supports_android and options.type in ('android_apk', | 
| 483                                                    'java_library'): | 497                                                    'java_library'): | 
| 484     # Lint all resources that are not already linted by a dependent library. | 498     # Lint all resources that are not already linted by a dependent library. | 
| 485     owned_resource_dirs = set() | 499     owned_resource_dirs = set() | 
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 637 | 651 | 
| 638     all_inputs.extend(runtime_deps_files) | 652     all_inputs.extend(runtime_deps_files) | 
| 639     config['native'] = { | 653     config['native'] = { | 
| 640       'libraries': library_paths, | 654       'libraries': library_paths, | 
| 641       'secondary_abi_libraries': secondary_abi_library_paths, | 655       'secondary_abi_libraries': secondary_abi_library_paths, | 
| 642       'java_libraries_list': java_libraries_list, | 656       'java_libraries_list': java_libraries_list, | 
| 643       'secondary_abi_java_libraries_list': secondary_abi_java_libraries_list, | 657       'secondary_abi_java_libraries_list': secondary_abi_java_libraries_list, | 
| 644     } | 658     } | 
| 645     config['assets'], config['uncompressed_assets'] = ( | 659     config['assets'], config['uncompressed_assets'] = ( | 
| 646         _MergeAssets(deps.All('android_assets'))) | 660         _MergeAssets(deps.All('android_assets'))) | 
| 647     config['compressed_assets_java_list'] = ( |  | 
| 648         _CreateJavaAssetList(config['assets'])) |  | 
| 649     config['uncompressed_assets_java_list'] = ( |  | 
| 650         _CreateJavaAssetList(config['uncompressed_assets'])) |  | 
| 651 | 661 | 
| 652   build_utils.WriteJson(config, options.build_config, only_if_changed=True) | 662   build_utils.WriteJson(config, options.build_config, only_if_changed=True) | 
| 653 | 663 | 
| 654   if options.depfile: | 664   if options.depfile: | 
| 655     build_utils.WriteDepfile(options.depfile, options.build_config, all_inputs) | 665     build_utils.WriteDepfile(options.depfile, options.build_config, all_inputs) | 
| 656 | 666 | 
| 657 | 667 | 
| 658 if __name__ == '__main__': | 668 if __name__ == '__main__': | 
| 659   sys.exit(main(sys.argv[1:])) | 669   sys.exit(main(sys.argv[1:])) | 
| OLD | NEW | 
|---|