Chromium Code Reviews| Index: lib/cros_build_lib.py |
| diff --git a/lib/cros_build_lib.py b/lib/cros_build_lib.py |
| index d7da384e09b48f605246b027fa6eaa4767dbdbd0..ae4344b3a03994d95b470cb2a051731da4e22a32 100644 |
| --- a/lib/cros_build_lib.py |
| +++ b/lib/cros_build_lib.py |
| @@ -70,28 +70,35 @@ def RunCommand(cmd, print_cmd=True, error_ok=False, error_message=None, |
| (GetCallerName(), cmd, cwd)) |
| for retry_count in range(num_retries + 1): |
| - try: |
| - proc = subprocess.Popen(cmd, cwd=cwd, stdin=stdin, |
| - stdout=stdout, stderr=stderr) |
| - (output, error) = proc.communicate(input) |
| - if exit_code and retry_count == num_retries: |
| - return proc.returncode |
| - |
| - if proc.returncode == 0: |
| - break |
| + # If it's not the first attempt, it's a retry |
| + if retry_count > 0 and print_cmd: |
| + Info('PROGRAM(%s) -> RunCommand: retrying %r in dir %s' % |
|
sosa
2011/02/24 00:23:36
Too much indention
|
| + (GetCallerName(), cmd, cwd)) |
| + |
| + proc = subprocess.Popen(cmd, cwd=cwd, stdin=stdin, |
| + stdout=stdout, stderr=stderr) |
| + (output, error) = proc.communicate(input) |
| + |
| + # if the command worked, don't retry any more. |
| + if proc.returncode == 0: |
| + break |
| + |
| + # If the command (and all retries) failed, handle error result |
| + if proc.returncode != 0: |
| + if error_ok: |
| + if print_cmd: |
| + 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 '')) |
| - except RunCommandException as e: |
| - if not error_ok and retry_count == num_retries: |
| - raise e |
| - else: |
| - Warning(str(e)) |
| - if print_cmd: |
| - Info('PROGRAM(%s) -> RunCommand: retrying %r in dir %s' % |
| - (GetCallerName(), cmd, cwd)) |
| - |
| - return output |
| + |
| + # return final result |
| + if exit_code: |
| + return proc.returncode |
| + else: |
| + return output |
| def RunCommandCaptureOutput(cmd, print_cmd=True, cwd=None, input=None, |