Index: build/gn_run_binary.py |
diff --git a/build/gn_run_binary.py b/build/gn_run_binary.py |
index 5d3ba453558c3d858f9b4a271f6616133ff09188..76d19923dea8f59d4e3241722fc865b786a4ac4e 100755 |
--- a/build/gn_run_binary.py |
+++ b/build/gn_run_binary.py |
@@ -6,7 +6,12 @@ |
"""Helper script for GN to run an arbitrary binary. See compiled_action.gni. |
Run with: |
- python gn_run_binary.py <binary_name> [args ...] |
+ python gn_run_binary.py <invoker> <binary_name> [args ...] |
+ |
+Where <invoker> is either "compiled_action" or "exec_script". If it is |
+"compiled_action" the script has a non-zero exit code on a failure. If it is |
+"exec_script" the script has no output on success and produces output otherwise, |
+but always has an exit code of 0. |
""" |
import os |
@@ -23,24 +28,33 @@ def run_command(command): |
"output: " + e.output) |
def main(argv): |
+ error_exit = 0 |
+ if argv[1] == "compiled_action": |
+ error_exit = 1 |
+ elif argv[1] != "exec_script": |
+ print ("The first argument should be either " |
+ "'compiled_action' or 'exec_script") |
+ return 1 |
+ |
# Unless the path is absolute, this script is designed to run binaries |
# produced by the current build. We always prefix it with "./" to avoid |
# picking up system versions that might also be on the path. |
- if os.path.isabs(argv[1]): |
- path = argv[1] |
+ if os.path.isabs(argv[2]): |
+ path = argv[2] |
else: |
- path = './' + argv[1] |
+ path = './' + argv[2] |
if not os.path.isfile(path): |
print "Binary not found: " + path |
- return 0 |
+ return error_exit |
# The rest of the arguements are passed directly to the executable. |
- args = [path] + argv[2:] |
+ args = [path] + argv[3:] |
result = run_command(args) |
if result != 0: |
print result |
+ return error_exit |
return 0 |
if __name__ == '__main__': |