Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(152)

Side by Side Diff: build/android/gyp/write_build_config.py

Issue 1647353002: Use gn_helpers to [se]serialize GN lists. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@python_impl
Patch Set: more Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « build/android/gyp/util/build_utils.py ('k') | build/android/gyp/write_ordered_libraries.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 parser.add_option('--has-alternative-locale-resource', action='store_true', 283 parser.add_option('--has-alternative-locale-resource', action='store_true',
284 help='Whether there is alternative-locale-resource in direct deps') 284 help='Whether there is alternative-locale-resource in direct deps')
285 parser.add_option('--fail', 285 parser.add_option('--fail',
286 help='GYP-list of error message lines to fail with.') 286 help='GYP-list of error message lines to fail with.')
287 287
288 options, args = parser.parse_args(argv) 288 options, args = parser.parse_args(argv)
289 289
290 if args: 290 if args:
291 parser.error('No positional arguments should be given.') 291 parser.error('No positional arguments should be given.')
292 if options.fail: 292 if options.fail:
293 parser.error('\n'.join(build_utils.ParseGypList(options.fail))) 293 parser.error('\n'.join(build_utils.ParseGnList(options.fail)))
294 294
295 required_options_map = { 295 required_options_map = {
296 'java_binary': ['build_config', 'jar_path'], 296 'java_binary': ['build_config', 'jar_path'],
297 'java_library': ['build_config', 'jar_path'], 297 'java_library': ['build_config', 'jar_path'],
298 'java_prebuilt': ['build_config', 'jar_path'], 298 'java_prebuilt': ['build_config', 'jar_path'],
299 'android_assets': ['build_config'], 299 'android_assets': ['build_config'],
300 'android_resources': ['build_config', 'resources_zip'], 300 'android_resources': ['build_config', 'resources_zip'],
301 'android_apk': ['build_config', 'jar_path', 'dex_path', 'resources_zip'], 301 'android_apk': ['build_config', 'jar_path', 'dex_path', 'resources_zip'],
302 'deps_dex': ['build_config', 'dex_path'], 302 'deps_dex': ['build_config', 'dex_path'],
303 'resource_rewriter': ['build_config'], 303 'resource_rewriter': ['build_config'],
(...skipping 11 matching lines...) Expand all
315 options.type = 'java_library' 315 options.type = 'java_library'
316 316
317 if options.type == 'java_library': 317 if options.type == 'java_library':
318 if options.supports_android and not options.dex_path: 318 if options.supports_android and not options.dex_path:
319 raise Exception('java_library that supports Android requires a dex path.') 319 raise Exception('java_library that supports Android requires a dex path.')
320 320
321 if options.requires_android and not options.supports_android: 321 if options.requires_android and not options.supports_android:
322 raise Exception( 322 raise Exception(
323 '--supports-android is required when using --requires-android') 323 '--supports-android is required when using --requires-android')
324 324
325 direct_deps_config_paths = build_utils.ParseGypList(options.deps_configs) 325 direct_deps_config_paths = build_utils.ParseGnList(options.deps_configs)
326 direct_deps_config_paths = _FilterDepsPaths(direct_deps_config_paths, 326 direct_deps_config_paths = _FilterDepsPaths(direct_deps_config_paths,
327 options.type) 327 options.type)
328 328
329 deps = Deps(direct_deps_config_paths) 329 deps = Deps(direct_deps_config_paths)
330 all_inputs = deps.AllConfigPaths() + build_utils.GetPythonDependencies() 330 all_inputs = deps.AllConfigPaths() + build_utils.GetPythonDependencies()
331 331
332 # Remove other locale resources if there is alternative_locale_resource in 332 # Remove other locale resources if there is alternative_locale_resource in
333 # direct deps. 333 # direct deps.
334 if options.has_alternative_locale_resource: 334 if options.has_alternative_locale_resource:
335 alternative = [r['path'] for r in deps.Direct('android_resources') 335 alternative = [r['path'] for r in deps.Direct('android_resources')
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 if options.type == 'java_library': 377 if options.type == 'java_library':
378 deps_info['is_prebuilt'] = is_java_prebuilt 378 deps_info['is_prebuilt'] = is_java_prebuilt
379 379
380 if options.android_manifest: 380 if options.android_manifest:
381 gradle['android_manifest'] = options.android_manifest 381 gradle['android_manifest'] = options.android_manifest
382 if options.type in ('java_binary', 'java_library', 'android_apk'): 382 if options.type in ('java_binary', 'java_library', 'android_apk'):
383 if options.java_sources_file: 383 if options.java_sources_file:
384 gradle['java_sources_file'] = options.java_sources_file 384 gradle['java_sources_file'] = options.java_sources_file
385 if options.bundled_srcjars: 385 if options.bundled_srcjars:
386 gradle['bundled_srcjars'] = ( 386 gradle['bundled_srcjars'] = (
387 build_utils.ParseGypList(options.bundled_srcjars)) 387 build_utils.ParseGnList(options.bundled_srcjars))
388 388
389 gradle['dependent_prebuilt_jars'] = deps.PrebuiltJarPaths() 389 gradle['dependent_prebuilt_jars'] = deps.PrebuiltJarPaths()
390 390
391 gradle['dependent_android_projects'] = [] 391 gradle['dependent_android_projects'] = []
392 gradle['dependent_java_projects'] = [] 392 gradle['dependent_java_projects'] = []
393 for c in direct_library_deps: 393 for c in direct_library_deps:
394 if not c['is_prebuilt']: 394 if not c['is_prebuilt']:
395 if c['requires_android']: 395 if c['requires_android']:
396 gradle['dependent_android_projects'].append(c['path']) 396 gradle['dependent_android_projects'].append(c['path'])
397 else: 397 else:
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 c['package_name'] for c in all_resources_deps if 'package_name' in c] 444 c['package_name'] for c in all_resources_deps if 'package_name' in c]
445 445
446 if options.type == 'android_apk': 446 if options.type == 'android_apk':
447 # Apks will get their resources srcjar explicitly passed to the java step. 447 # Apks will get their resources srcjar explicitly passed to the java step.
448 config['javac']['srcjars'] = [] 448 config['javac']['srcjars'] = []
449 449
450 if options.type == 'android_assets': 450 if options.type == 'android_assets':
451 all_asset_sources = [] 451 all_asset_sources = []
452 if options.asset_renaming_sources: 452 if options.asset_renaming_sources:
453 all_asset_sources.extend( 453 all_asset_sources.extend(
454 build_utils.ParseGypList(options.asset_renaming_sources)) 454 build_utils.ParseGnList(options.asset_renaming_sources))
455 if options.asset_sources: 455 if options.asset_sources:
456 all_asset_sources.extend(build_utils.ParseGypList(options.asset_sources)) 456 all_asset_sources.extend(build_utils.ParseGnList(options.asset_sources))
457 457
458 deps_info['assets'] = { 458 deps_info['assets'] = {
459 'sources': all_asset_sources 459 'sources': all_asset_sources
460 } 460 }
461 if options.asset_renaming_destinations: 461 if options.asset_renaming_destinations:
462 deps_info['assets']['outputs'] = ( 462 deps_info['assets']['outputs'] = (
463 build_utils.ParseGypList(options.asset_renaming_destinations)) 463 build_utils.ParseGnList(options.asset_renaming_destinations))
464 if options.disable_asset_compression: 464 if options.disable_asset_compression:
465 deps_info['assets']['disable_compression'] = True 465 deps_info['assets']['disable_compression'] = True
466 466
467 if options.type == 'android_resources': 467 if options.type == 'android_resources':
468 deps_info['resources_zip'] = options.resources_zip 468 deps_info['resources_zip'] = options.resources_zip
469 if options.srcjar: 469 if options.srcjar:
470 deps_info['srcjar'] = options.srcjar 470 deps_info['srcjar'] = options.srcjar
471 if options.android_manifest: 471 if options.android_manifest:
472 manifest = AndroidManifest(options.android_manifest) 472 manifest = AndroidManifest(options.android_manifest)
473 deps_info['package_name'] = manifest.GetPackageName() 473 deps_info['package_name'] = manifest.GetPackageName()
474 if options.package_name: 474 if options.package_name:
475 deps_info['package_name'] = options.package_name 475 deps_info['package_name'] = options.package_name
476 if options.r_text: 476 if options.r_text:
477 deps_info['r_text'] = options.r_text 477 deps_info['r_text'] = options.r_text
478 if options.is_locale_resource: 478 if options.is_locale_resource:
479 deps_info['is_locale_resource'] = True 479 deps_info['is_locale_resource'] = True
480 480
481 deps_info['resources_dirs'] = [] 481 deps_info['resources_dirs'] = []
482 if options.resource_dirs: 482 if options.resource_dirs:
483 for gyp_list in options.resource_dirs: 483 for gyp_list in options.resource_dirs:
484 deps_info['resources_dirs'].extend(build_utils.ParseGypList(gyp_list)) 484 deps_info['resources_dirs'].extend(build_utils.ParseGnList(gyp_list))
485 485
486 if options.supports_android and options.type in ('android_apk', 486 if options.supports_android and options.type in ('android_apk',
487 'java_library'): 487 'java_library'):
488 # Lint all resources that are not already linted by a dependent library. 488 # Lint all resources that are not already linted by a dependent library.
489 owned_resource_dirs = set() 489 owned_resource_dirs = set()
490 owned_resource_zips = set() 490 owned_resource_zips = set()
491 for c in all_resources_deps: 491 for c in all_resources_deps:
492 # Always use resources_dirs in favour of resources_zips so that lint error 492 # Always use resources_dirs in favour of resources_zips so that lint error
493 # messages have paths that are closer to reality (and to avoid needing to 493 # messages have paths that are closer to reality (and to avoid needing to
494 # extract during lint). 494 # extract during lint).
(...skipping 23 matching lines...) Expand all
518 c['r_text'] for c in all_resources_deps if 'r_text' in c] 518 c['r_text'] for c in all_resources_deps if 'r_text' in c]
519 519
520 if options.type in ['android_apk', 'deps_dex']: 520 if options.type in ['android_apk', 'deps_dex']:
521 deps_dex_files = [c['dex_path'] for c in all_library_deps] 521 deps_dex_files = [c['dex_path'] for c in all_library_deps]
522 522
523 if options.type in ('java_binary', 'java_library', 'android_apk'): 523 if options.type in ('java_binary', 'java_library', 'android_apk'):
524 javac_classpath = [c['jar_path'] for c in direct_library_deps] 524 javac_classpath = [c['jar_path'] for c in direct_library_deps]
525 java_full_classpath = [c['jar_path'] for c in all_library_deps] 525 java_full_classpath = [c['jar_path'] for c in all_library_deps]
526 526
527 if options.extra_classpath_jars: 527 if options.extra_classpath_jars:
528 extra_jars = build_utils.ParseGypList(options.extra_classpath_jars) 528 extra_jars = build_utils.ParseGnList(options.extra_classpath_jars)
529 deps_info['extra_classpath_jars'] = extra_jars 529 deps_info['extra_classpath_jars'] = extra_jars
530 javac_classpath += extra_jars 530 javac_classpath += extra_jars
531 531
532 # The java code for an instrumentation test apk is assembled differently for 532 # The java code for an instrumentation test apk is assembled differently for
533 # ProGuard vs. non-ProGuard. 533 # ProGuard vs. non-ProGuard.
534 # 534 #
535 # Without ProGuard: Each library's jar is dexed separately and then combined 535 # Without ProGuard: Each library's jar is dexed separately and then combined
536 # into a single classes.dex. A test apk will include all dex files not already 536 # into a single classes.dex. A test apk will include all dex files not already
537 # present in the apk-under-test. At runtime all test code lives in the test 537 # present in the apk-under-test. At runtime all test code lives in the test
538 # apk, and the program code lives in the apk-under-test. 538 # apk, and the program code lives in the apk-under-test.
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 'all_interface_jars': all_interface_jars, 608 'all_interface_jars': all_interface_jars,
609 } 609 }
610 manifest = AndroidManifest(options.android_manifest) 610 manifest = AndroidManifest(options.android_manifest)
611 deps_info['package_name'] = manifest.GetPackageName() 611 deps_info['package_name'] = manifest.GetPackageName()
612 if not options.tested_apk_config and manifest.GetInstrumentation(): 612 if not options.tested_apk_config and manifest.GetInstrumentation():
613 # This must then have instrumentation only for itself. 613 # This must then have instrumentation only for itself.
614 manifest.CheckInstrumentation(manifest.GetPackageName()) 614 manifest.CheckInstrumentation(manifest.GetPackageName())
615 615
616 library_paths = [] 616 library_paths = []
617 java_libraries_list = None 617 java_libraries_list = None
618 runtime_deps_files = build_utils.ParseGypList( 618 runtime_deps_files = build_utils.ParseGnList(
619 options.shared_libraries_runtime_deps or '[]') 619 options.shared_libraries_runtime_deps or '[]')
620 if runtime_deps_files: 620 if runtime_deps_files:
621 library_paths = _ExtractSharedLibsFromRuntimeDeps(runtime_deps_files) 621 library_paths = _ExtractSharedLibsFromRuntimeDeps(runtime_deps_files)
622 # Create a java literal array with the "base" library names: 622 # Create a java literal array with the "base" library names:
623 # e.g. libfoo.so -> foo 623 # e.g. libfoo.so -> foo
624 java_libraries_list = ('{%s}' % ','.join( 624 java_libraries_list = ('{%s}' % ','.join(
625 ['"%s"' % s[3:-3] for s in library_paths])) 625 ['"%s"' % s[3:-3] for s in library_paths]))
626 626
627 all_inputs.extend(runtime_deps_files) 627 all_inputs.extend(runtime_deps_files)
628 config['native'] = { 628 config['native'] = {
629 'libraries': library_paths, 629 'libraries': library_paths,
630 'java_libraries_list': java_libraries_list, 630 'java_libraries_list': java_libraries_list,
631 } 631 }
632 config['assets'], config['uncompressed_assets'] = ( 632 config['assets'], config['uncompressed_assets'] = (
633 _MergeAssets(deps.All('android_assets'))) 633 _MergeAssets(deps.All('android_assets')))
634 634
635 build_utils.WriteJson(config, options.build_config, only_if_changed=True) 635 build_utils.WriteJson(config, options.build_config, only_if_changed=True)
636 636
637 if options.depfile: 637 if options.depfile:
638 build_utils.WriteDepfile(options.depfile, all_inputs) 638 build_utils.WriteDepfile(options.depfile, all_inputs)
639 639
640 640
641 if __name__ == '__main__': 641 if __name__ == '__main__':
642 sys.exit(main(sys.argv[1:])) 642 sys.exit(main(sys.argv[1:]))
OLDNEW
« no previous file with comments | « build/android/gyp/util/build_utils.py ('k') | build/android/gyp/write_ordered_libraries.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698