Teach claude to understand --debug in gn, build & test steps
Debug builds are useful for building and debugging. This doesn't support
uploading debug binaries because we do not (yet) having a naming scheme
for debug builds.
patch from issue 1154763005 at patchset 1 (http://crrev.com/1154763005#ps1)
(original patch by jamesr, updated/fixed by me)
TBR=jamesr@chromium.org
Review URL: https://codereview.chromium.org/1187323002.
diff --git a/claude.py b/claude.py
index 66c3ed5..967baa6 100755
--- a/claude.py
+++ b/claude.py
@@ -11,8 +11,17 @@
_logger = logging.getLogger()
_root_path = os.path.realpath(os.path.dirname(__file__))
-_linux_out_dir = os.path.join(_root_path, 'out/Release')
-_android_out_dir = os.path.join(_root_path, 'out/android_Release')
+
+def _linux_out_dir(args):
+ if args.debug:
+ return os.path.join(_root_path, 'out/Debug')
+ return os.path.join(_root_path, 'out/Release')
+
+def _android_out_dir(args):
+ if args.debug:
+ return os.path.join(_root_path, 'out/android_Debug')
+ return os.path.join(_root_path, 'out/android_Release')
+
def _init_logging(verbose_count):
if verbose_count == 0:
@@ -41,7 +50,8 @@
def _gn(args):
_logger.debug('_gn()')
- gn_args = ['is_debug = false']
+ gn_args = ['is_debug = ' + ('true' if args.debug else 'false')]
+
if 'goma' in args:
goma_dir = os.environ.get('GOMA_DIR')
goma_home_dir = os.path.join(os.getenv('HOME', ''), 'goma')
@@ -52,12 +62,12 @@
gn_args.append(_goma_dir_str + '"' + goma_home_dir + '"')
gn_args.append(_use_goma_str + 'true')
- retcode = _run_gn(gn_args, _linux_out_dir)
+ retcode = _run_gn(gn_args, _linux_out_dir(args))
if retcode != 0:
return retcode
gn_args.append('target_os="android"')
gn_args.append('target_cpu="arm"')
- return _run_gn(gn_args, _android_out_dir)
+ return _run_gn(gn_args, _android_out_dir(args))
def _run_build(out_dir):
gn_file = os.path.join(out_dir, 'args.gn')
@@ -86,10 +96,10 @@
# Unused argument - pylint: disable=W0613
def _build(args):
_logger.debug('_build()')
- retcode = _run_build(_linux_out_dir)
+ retcode = _run_build(_linux_out_dir(args))
if retcode != 0:
return retcode
- return _run_build(_android_out_dir)
+ return _run_build(_android_out_dir(args))
# Unused argument - pylint: disable=W0613
def _test(args):
@@ -100,9 +110,12 @@
'mojo:network_service_apptests'])
def _upload(args):
+ if args.debug:
+ print "Only upload release binaries (for now)"
+ return 1
base_command = ['tools/upload_service.py',
- '--linux-x64-binary-dir', _linux_out_dir,
- '--android-arm-binary-dir', _android_out_dir]
+ '--linux-x64-binary-dir', _linux_out_dir(args),
+ '--android-arm-binary-dir', _android_out_dir(args)]
if args.dry_run:
base_command.append('--dry-run')
_logger.info('Uploading network service binary')
@@ -122,6 +135,12 @@
help='Be verbose (multiple times for more)',
default=0, dest='verbose_count', action='count')
+ debug_group = parent_parser.add_mutually_exclusive_group()
+ debug_group.add_argument('--debug', help='Debug build (default)',
+ default=True, action='store_true')
+ debug_group.add_argument('--release', help='Release build', default=False,
+ dest='debug', action='store_false')
+
subparsers = parser.add_subparsers()
gn_parser = subparsers.add_parser('gn', parents=[parent_parser],