Chromium Code Reviews| Index: build/android/pylib/build_utils.py |
| diff --git a/build/android/pylib/build_utils.py b/build/android/pylib/build_utils.py |
| index 8849a77df69b7ea79876bfbbf308f390cc2f3a25..9a56a3315c54f5a87bac1926a4979017d88031b1 100644 |
| --- a/build/android/pylib/build_utils.py |
| +++ b/build/android/pylib/build_utils.py |
| @@ -4,8 +4,12 @@ |
| import fnmatch |
| import os |
| +import pipes |
| import shlex |
| import shutil |
| +import subprocess |
| +import sys |
| +import traceback |
| def MakeDirectory(dir_path): |
| @@ -51,3 +55,36 @@ def ParseGypList(gyp_string): |
| return shlex.split(gyp_string) |
| +# This can be used in most cases like subprocess.check_call. The output, |
| +# particularly when the command fails, better highlights the command's failure. |
| +# This call will directly exit on a failure in the subprocess so that no python |
| +# stacktrace is printed after the output of the failed command. |
| +def CheckCallDie(args, cwd=None): |
| + if not cwd: |
| + cwd = os.getcwd() |
| + |
| + child = subprocess.Popen(args, |
| + stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=cwd) |
| + |
| + (stdout, _) = child.communicate() |
|
Yaron
2013/03/28 23:53:10
no parens needed
cjhopman
2013/03/29 00:39:50
Done.
|
| + |
| + if child.returncode: |
| + stacktrace = traceback.extract_stack() |
| + print >> sys.stderr, ''.join(traceback.format_list(stacktrace)) |
| + # A user should be able to simply copy and paste the command that failed |
| + # into their shell. |
| + copyable_command = ' '.join(map(pipes.quote, args)) |
| + copyable_command = ('( cd ' + os.path.abspath(cwd) + '; ' |
| + + copyable_command + ' )') |
| + print >> sys.stderr, 'Command failed: ', copyable_command, '\n' |
|
newt (away)
2013/03/29 00:20:07
print adds a space between each argument, so you c
cjhopman
2013/03/29 00:39:50
Done.
|
| + |
| + if stdout: |
| + print stdout, |
| + |
| + # Directly exit to avoid printing stacktrace. |
| + sys.exit(child.returncode) |
| + |
| + else: |
| + if stdout: |
| + print stdout, |
| + |