| OLD | NEW |
| 1 #!/usr/bin/env python |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 2 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 # 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 |
| 3 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 4 | 5 |
| 5 """Helper script for GN to run an arbitrary binary. See compiled_action.gni. | 6 """Helper script for GN to run an arbitrary binary. See compiled_action.gni. |
| 6 | 7 |
| 7 Run with: | 8 Run with: |
| 8 python gn_run_binary.py <binary_name> [args ...] | 9 python gn_run_binary.py <binary_name> [args ...] |
| 9 """ | 10 """ |
| 10 | 11 |
| 11 import os | 12 import os |
| 12 import sys | 13 import sys |
| 13 import subprocess | 14 import subprocess |
| 14 | 15 |
| 15 # Run a command, swallowing the output unless there is an error. | 16 # Run a command, swallowing the output unless there is an error. |
| 16 def run_command(command): | 17 def run_command(command): |
| 17 try: | 18 try: |
| 18 subprocess.check_output(command, stderr=subprocess.STDOUT) | 19 subprocess.check_output(command, stderr=subprocess.STDOUT) |
| 19 return 0 | 20 return 0 |
| 20 except subprocess.CalledProcessError as e: | 21 except subprocess.CalledProcessError as e: |
| 21 return ("Command failed: " + ' '.join(command) + "\n" + | 22 return ("Command failed: " + ' '.join(command) + "\n" + |
| 22 "output: " + e.output) | 23 "output: " + e.output) |
| 23 | 24 |
| 24 # Unless the path is absolute, this script is designed to run binaries produced | 25 def main(argv): |
| 25 # by the current build. We always prefix it with "./" to avoid picking up system | 26 # Unless the path is absolute, this script is designed to run binaries |
| 26 # versions that might also be on the path. | 27 # produced by the current build. We always prefix it with "./" to avoid |
| 27 if os.path.isabs(sys.argv[1]): | 28 # picking up system versions that might also be on the path. |
| 28 path = sys.argv[1] | 29 if os.path.isabs(argv[1]): |
| 29 else: | 30 path = argv[1] |
| 30 path = './' + sys.argv[1] | 31 else: |
| 32 path = './' + argv[1] |
| 31 | 33 |
| 32 # The rest of the arguements are passed directly to the executable. | 34 if not os.path.isfile(path): |
| 33 args = [path] + sys.argv[2:] | 35 print "Binary not found: " + path |
| 36 return 0 |
| 34 | 37 |
| 35 sys.exit(run_command(args)) | 38 # The rest of the arguements are passed directly to the executable. |
| 39 args = [path] + argv[2:] |
| 40 |
| 41 result = run_command(args) |
| 42 if result != 0: |
| 43 print result |
| 44 return 0 |
| 45 |
| 46 if __name__ == '__main__': |
| 47 sys.exit(main(sys.argv)) |
| OLD | NEW |