| Index: lib/cros_build_lib.py
|
| diff --git a/lib/cros_build_lib.py b/lib/cros_build_lib.py
|
| index 6f331a0b3b933e478a53c5e3c2d59be4ff34773e..804e915aa62c7cfe058f12c532ee4a928cd77ec7 100644
|
| --- a/lib/cros_build_lib.py
|
| +++ b/lib/cros_build_lib.py
|
| @@ -28,7 +28,7 @@ def GetCallerName():
|
| def RunCommand(cmd, print_cmd=True, error_ok=False, error_message=None,
|
| exit_code=False, redirect_stdout=False, redirect_stderr=False,
|
| cwd=None, input=None, enter_chroot=False, num_retries=0,
|
| - log_to_file=None):
|
| + log_to_file=None, combine_stdout_stderr=False):
|
| """Runs a shell command.
|
|
|
| Arguments:
|
| @@ -46,6 +46,8 @@ def RunCommand(cmd, print_cmd=True, error_ok=False, error_message=None,
|
| cwd must point to the scripts directory.
|
| num_retries: the number of retries to perform before dying
|
| log_to_file: Redirects all stderr and stdout to file specified by this path.
|
| + combine_stdout_stderr: Combines stdout and stdin streams into stdout. Auto
|
| + set to true if log_to_file specifies a file.
|
|
|
| Returns:
|
| If exit_code is True, returns the return code of the shell command.
|
| @@ -71,6 +73,7 @@ def RunCommand(cmd, print_cmd=True, error_ok=False, error_message=None,
|
| else:
|
| if redirect_stdout: stdout = subprocess.PIPE
|
| if redirect_stderr: stderr = subprocess.PIPE
|
| + if combine_stdout_stderr: stderr = subprocess.STDOUT
|
|
|
| if input: stdin = subprocess.PIPE
|
| if enter_chroot: cmd = ['./enter_chroot.sh', '--'] + cmd
|
| @@ -106,13 +109,11 @@ def RunCommand(cmd, print_cmd=True, error_ok=False, error_message=None,
|
| return proc.returncode
|
|
|
| # If the command (and all retries) failed, handle error result
|
| - if proc.returncode != 0:
|
| - if error_ok:
|
| - Warning('Command "%r" failed.\n' % (cmd) +
|
| - (error_message or error or output or ''))
|
| - else:
|
| - raise RunCommandException('Command "%r" failed.\n' % (cmd) +
|
| - (error_message or error or output or ''))
|
| + if proc.returncode != 0 and not error_ok:
|
| + error_info = ('Command "%r" failed.\n' % (cmd) +
|
| + (error_message or error or output or ''))
|
| + if log_to_file: error_info += '\nOutput logged to %s' % log_to_file
|
| + raise RunCommandException(error_info)
|
|
|
| # return final result
|
| return output
|
|
|