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