From 49742554118c574e8a3ea16c1d038fcf8a2bfc84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Mon, 15 Aug 2016 22:38:50 -0700 Subject: [PATCH] stylo: Allow passing --debug and --debugger flags to the python script. --- ports/geckolib/binding_tools/regen.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/ports/geckolib/binding_tools/regen.py b/ports/geckolib/binding_tools/regen.py index 49b2557b91b..88c423931d8 100755 --- a/ports/geckolib/binding_tools/regen.py +++ b/ports/geckolib/binding_tools/regen.py @@ -210,7 +210,7 @@ def extend_object(obj, other): obj[key] = copy.deepcopy(other[key]) -def build(objdir, target_name, kind_name=None, +def build(objdir, target_name, debug, debugger, kind_name=None, output_filename=None, bindgen=None, skip_test=False, verbose=False): assert target_name in COMPILATION_TARGETS @@ -344,10 +344,15 @@ def build(objdir, target_name, kind_name=None, flags.append(current_target["files"][0].format(objdir)) flags = bindgen + flags - output = None + + output = "" try: - output = subprocess.check_output(flags, stderr=subprocess.STDOUT) - output = output.decode('utf8') + if debug: + flags = [debugger, "--args"] + flags + subprocess.check_call(flags) + else: + output = subprocess.check_output(flags, stderr=subprocess.STDOUT) + output = output.decode('utf8') except subprocess.CalledProcessError as e: print("FAIL\n", e.output.decode('utf8')) return 1 @@ -426,7 +431,7 @@ def builds_for(target_name, kind): def main(): parser = argparse.ArgumentParser(description=DESCRIPTION) - parser.add_argument('--target', default="all", + parser.add_argument('--target', default='all', help='The target to build, either "structs" or "bindings"') parser.add_argument('--kind', help='Kind of build') @@ -440,6 +445,11 @@ def main(): parser.add_argument('--verbose', '-v', action='store_true', help='Be... verbose') + parser.add_argument('--debug', + action='store_true', + help='Try to use a debugger to debug bindgen commands (default: gdb)') + parser.add_argument('--debugger', default='gdb', + help='Debugger to use. Only used if --debug is passed.') parser.add_argument('objdir') args = parser.parse_args() @@ -465,7 +475,8 @@ def main(): return 1 for target, kind in builds_for(args.target, args.kind): - ret = build(args.objdir, target, kind, + ret = build(args.objdir, target, kind_name=kind, + debug=args.debug, debugger=args.debugger, bindgen=args.bindgen, skip_test=args.skip_test, output_filename=args.output, verbose=args.verbose)