Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2014 The Chromium Authors. All rights reserved. | 2 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 # This a simple script to make building/testing Mojo components easier. | 6 # This a simple script to make building/testing Mojo components easier. |
| 7 | 7 |
| 8 import argparse | 8 import argparse |
| 9 from copy import deepcopy | 9 from copy import deepcopy |
| 10 import os | 10 import os |
| 11 import platform | 11 import platform |
| 12 import re | 12 import re |
| 13 import subprocess | 13 import subprocess |
| 14 import sys | 14 import sys |
| 15 | 15 |
| 16 from get_test_list import GetTestList | 16 from get_test_list import GetTestList |
| 17 from mopy.config import Config | 17 from mopy.config import Config |
| 18 from mopy.paths import Paths | 18 from mopy.paths import Paths |
| 19 | 19 |
| 20 | 20 |
| 21 def _args_to_config(args): | 21 def _args_to_config(args): |
| 22 # Default to host OS. | 22 # Default to host OS. |
| 23 target_os = None | 23 target_os = None |
| 24 if args.android: | 24 if args.android: |
| 25 target_os = Config.OS_ANDROID | 25 target_os = Config.OS_ANDROID |
| 26 elif args.chromeos: | 26 elif args.chromeos: |
| 27 target_os = Config.OS_CHROMEOS | 27 target_os = Config.OS_CHROMEOS |
| 28 | 28 |
| 29 if args.cpu_arch is None and args.android: | |
| 30 args.cpu_arch = 'arm' | |
| 31 target_arch = args.cpu_arch | |
| 32 | |
| 29 additional_args = {} | 33 additional_args = {} |
| 30 | 34 |
| 31 if 'clang' in args: | 35 if 'clang' in args: |
| 32 additional_args['is_clang'] = args.clang | 36 additional_args['is_clang'] = args.clang |
| 33 | 37 |
| 34 if 'asan' in args and args.asan: | 38 if 'asan' in args and args.asan: |
| 35 additional_args['sanitizer'] = Config.SANITIZER_ASAN | 39 additional_args['sanitizer'] = Config.SANITIZER_ASAN |
| 36 | 40 |
| 37 # Additional non-standard config entries: | 41 # Additional non-standard config entries: |
| 38 | 42 |
| 39 if 'goma' in args: | 43 if 'goma' in args: |
| 40 goma_dir = os.environ.get('GOMA_DIR') | 44 goma_dir = os.environ.get('GOMA_DIR') |
| 41 goma_home_dir = os.path.join(os.getenv('HOME', ''), 'goma') | 45 goma_home_dir = os.path.join(os.getenv('HOME', ''), 'goma') |
| 42 if args.goma and goma_dir: | 46 if args.goma and goma_dir: |
| 43 additional_args['use_goma'] = True | 47 additional_args['use_goma'] = True |
| 44 additional_args['goma_dir'] = goma_dir | 48 additional_args['goma_dir'] = goma_dir |
| 45 elif args.goma and os.path.exists(goma_home_dir): | 49 elif args.goma and os.path.exists(goma_home_dir): |
| 46 additional_args['use_goma'] = True | 50 additional_args['use_goma'] = True |
| 47 additional_args['goma_dir'] = goma_home_dir | 51 additional_args['goma_dir'] = goma_home_dir |
| 48 else: | 52 else: |
| 49 additional_args['use_goma'] = False | 53 additional_args['use_goma'] = False |
| 50 additional_args['goma_dir'] = None | 54 additional_args['goma_dir'] = None |
| 51 | 55 |
| 52 if 'with_dart' in args: | 56 if 'with_dart' in args: |
| 53 additional_args['with_dart'] = args.with_dart | 57 additional_args['with_dart'] = args.with_dart |
| 54 | 58 |
| 55 if 'nacl' in args: | 59 additional_args['use_nacl'] = args.nacl |
| 56 additional_args['use_nacl'] = args.nacl | |
| 57 | 60 |
| 58 if 'dry_run' in args: | 61 if 'dry_run' in args: |
| 59 additional_args['dry_run'] = args.dry_run | 62 additional_args['dry_run'] = args.dry_run |
| 60 | 63 |
| 61 if 'builder_name' in args: | 64 if 'builder_name' in args: |
| 62 additional_args['builder_name'] = args.builder_name | 65 additional_args['builder_name'] = args.builder_name |
| 63 if 'build_number' in args: | 66 if 'build_number' in args: |
| 64 additional_args['build_number'] = args.build_number | 67 additional_args['build_number'] = args.build_number |
| 65 if 'master_name' in args: | 68 if 'master_name' in args: |
| 66 additional_args['master_name'] = args.master_name | 69 additional_args['master_name'] = args.master_name |
| 67 if 'test_results_server' in args: | 70 if 'test_results_server' in args: |
| 68 additional_args['test_results_server'] = args.test_results_server | 71 additional_args['test_results_server'] = args.test_results_server |
| 69 | 72 |
| 70 return Config(target_os=target_os, is_debug=args.debug, **additional_args) | 73 return Config(target_os=target_os, target_arch=target_arch, |
| 74 is_debug=args.debug, **additional_args) | |
| 71 | 75 |
| 72 | 76 |
| 73 def _get_out_dir(config): | 77 def _get_out_dir(config): |
| 74 paths = Paths(config) | 78 paths = Paths(config) |
| 75 return paths.SrcRelPath(paths.build_dir) | 79 return paths.SrcRelPath(paths.build_dir) |
| 76 | 80 |
| 77 | 81 |
| 78 def sync(config): | 82 def sync(config): |
| 79 # pylint: disable=W0613 | 83 # pylint: disable=W0613 |
| 80 return subprocess.call(['gclient', 'sync']) | 84 return subprocess.call(['gclient', 'sync']) |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 100 else: | 104 else: |
| 101 gn_args.append('use_goma=false') | 105 gn_args.append('use_goma=false') |
| 102 | 106 |
| 103 if config.values['with_dart']: | 107 if config.values['with_dart']: |
| 104 gn_args.append('mojo_use_dart=true') | 108 gn_args.append('mojo_use_dart=true') |
| 105 | 109 |
| 106 if config.values['use_nacl']: | 110 if config.values['use_nacl']: |
| 107 gn_args.append('mojo_use_nacl=true') | 111 gn_args.append('mojo_use_nacl=true') |
| 108 | 112 |
| 109 if config.target_os == Config.OS_ANDROID: | 113 if config.target_os == Config.OS_ANDROID: |
| 110 gn_args.append(r'''os=\"android\" cpu_arch=\"arm\"''') | 114 gn_args.append(r'''os=\"android\"''') |
| 111 elif config.target_os == Config.OS_CHROMEOS: | 115 elif config.target_os == Config.OS_CHROMEOS: |
| 112 gn_args.append(r'''os=\"chromeos\" ui_base_build_ime=false | 116 gn_args.append(r'''os=\"chromeos\" ui_base_build_ime=false |
| 113 use_system_harfbuzz=false''') | 117 use_system_harfbuzz=false''') |
| 114 | 118 |
| 119 gn_args.append(r'''cpu_arch=\"%s\"''' % config.target_arch) | |
|
viettrungluu
2015/01/12 23:26:40
nit: add blank line below
Nick Bray (chromium)
2015/01/13 00:05:20
Done.
| |
| 115 out_dir = _get_out_dir(config) | 120 out_dir = _get_out_dir(config) |
| 116 command.append(out_dir) | 121 command.append(out_dir) |
| 117 command.append('--args="%s"' % ' '.join(gn_args)) | 122 command.append('--args="%s"' % ' '.join(gn_args)) |
| 118 | 123 |
| 119 print 'Running %s ...' % ' '.join(command) | 124 print 'Running %s ...' % ' '.join(command) |
| 120 return subprocess.call(' '.join(command), shell=True) | 125 return subprocess.call(' '.join(command), shell=True) |
| 121 | 126 |
| 122 | 127 |
| 123 def _get_gn_arg_value(out_dir, arg): | 128 def _get_gn_arg_value(out_dir, arg): |
| 124 args_file_path = os.path.join(out_dir, 'args.gn') | 129 args_file_path = os.path.join(out_dir, 'args.gn') |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 204 default=True, action='store_true') | 209 default=True, action='store_true') |
| 205 debug_group.add_argument('--release', help='Release build', default=False, | 210 debug_group.add_argument('--release', help='Release build', default=False, |
| 206 dest='debug', action='store_false') | 211 dest='debug', action='store_false') |
| 207 | 212 |
| 208 os_group = parent_parser.add_mutually_exclusive_group() | 213 os_group = parent_parser.add_mutually_exclusive_group() |
| 209 os_group.add_argument('--android', help='Build for Android', | 214 os_group.add_argument('--android', help='Build for Android', |
| 210 action='store_true') | 215 action='store_true') |
| 211 os_group.add_argument('--chromeos', help='Build for ChromeOS', | 216 os_group.add_argument('--chromeos', help='Build for ChromeOS', |
| 212 action='store_true') | 217 action='store_true') |
| 213 | 218 |
| 219 nacl_parser = parent_parser.add_argument_group() | |
| 220 nacl_parser.add_argument('--nacl', help='Add in NaCl', default=False, | |
|
viettrungluu
2015/01/12 23:26:40
These should just be added to parent_parser.
Nick Bray (chromium)
2015/01/13 00:05:20
Done.
| |
| 221 action='store_true') | |
| 222 nacl_parser.add_argument('--cpu-arch', help='CPU architecture to build for.', | |
| 223 choices=['x64', 'x86', 'arm']) | |
| 224 | |
| 214 subparsers = parser.add_subparsers() | 225 subparsers = parser.add_subparsers() |
| 215 | 226 |
| 216 sync_parser = subparsers.add_parser('sync', parents=[parent_parser], | 227 sync_parser = subparsers.add_parser('sync', parents=[parent_parser], |
| 217 help='Sync using gclient (does not run gn).') | 228 help='Sync using gclient (does not run gn).') |
| 218 sync_parser.set_defaults(func=sync) | 229 sync_parser.set_defaults(func=sync) |
| 219 | 230 |
| 220 gn_parser = subparsers.add_parser('gn', parents=[parent_parser], | 231 gn_parser = subparsers.add_parser('gn', parents=[parent_parser], |
| 221 help='Run gn for mojo (does not sync).') | 232 help='Run gn for mojo (does not sync).') |
| 222 gn_parser.set_defaults(func=gn) | 233 gn_parser.set_defaults(func=gn) |
| 223 gn_parser.add_argument('--with-dart', help='Configure the Dart bindings', | 234 gn_parser.add_argument('--with-dart', help='Configure the Dart bindings', |
| 224 action='store_true') | 235 action='store_true') |
| 225 gn_parser.add_argument('--nacl', help='Add in NaCl', action='store_true') | |
| 226 clang_group = gn_parser.add_mutually_exclusive_group() | 236 clang_group = gn_parser.add_mutually_exclusive_group() |
| 227 clang_group.add_argument('--clang', help='Use Clang (default)', default=None, | 237 clang_group.add_argument('--clang', help='Use Clang (default)', default=None, |
| 228 action='store_true') | 238 action='store_true') |
| 229 clang_group.add_argument('--gcc', help='Use GCC', | 239 clang_group.add_argument('--gcc', help='Use GCC', |
| 230 dest='clang', action='store_false') | 240 dest='clang', action='store_false') |
| 231 goma_group = gn_parser.add_mutually_exclusive_group() | 241 goma_group = gn_parser.add_mutually_exclusive_group() |
| 232 goma_group.add_argument('--goma', | 242 goma_group.add_argument('--goma', |
| 233 help='Use Goma (if $GOMA_DIR is set or $HOME/goma ' | 243 help='Use Goma (if $GOMA_DIR is set or $HOME/goma ' |
| 234 'exists; default)', | 244 'exists; default)', |
| 235 default=True, | 245 default=True, |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 271 help='Run Dart unit tests (does not build).') | 281 help='Run Dart unit tests (does not build).') |
| 272 darttest_parser.set_defaults(func=darttest) | 282 darttest_parser.set_defaults(func=darttest) |
| 273 | 283 |
| 274 args = parser.parse_args() | 284 args = parser.parse_args() |
| 275 config = _args_to_config(args) | 285 config = _args_to_config(args) |
| 276 return args.func(config) | 286 return args.func(config) |
| 277 | 287 |
| 278 | 288 |
| 279 if __name__ == '__main__': | 289 if __name__ == '__main__': |
| 280 sys.exit(main()) | 290 sys.exit(main()) |
| OLD | NEW |