From a25430428131777621c0d92e7dd448bf66ae2b77 Mon Sep 17 00:00:00 2001 From: Henrik Kjellander Date: Sun, 15 Oct 2017 19:51:55 +0200 Subject: [PATCH] Use subprocess2 and DEPS-pinned depot_tools for download_tools.py As https://webrtc.googlesource.com/src/+/915187b1afe8f708b06e24b77f372dcd34fe75f3 has the proper fixed rolled in, https://webrtc-review.googlesource.com/c/src/+/8820 can be relanded to benefit from using DEPS-pinned third_party/depot_tools instead of the auto-updated one. TBR=mbonadei@webrtc.org Bug: chromium:773671, webrtc:8393 Change-Id: Id47671956d014ce24e5b60ce3aae5423930db1aa No-try: True Reviewed-on: https://webrtc-review.googlesource.com/10800 Commit-Queue: Henrik Kjellander Reviewed-by: Henrik Kjellander Cr-Commit-Position: refs/heads/master@{#20301} --- tools_webrtc/download_tools.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/tools_webrtc/download_tools.py b/tools_webrtc/download_tools.py index 123fd3a4a5..5cc8de25b3 100755 --- a/tools_webrtc/download_tools.py +++ b/tools_webrtc/download_tools.py @@ -15,13 +15,17 @@ so please download and compile these tools manually if this script fails. """ import os -import subprocess import sys SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) -# Needed to properly resolve PATH and executable extensions on Windows. -USE_SHELL = sys.platform == 'win32' +SRC_DIR = os.path.abspath(os.path.join(SCRIPT_DIR, os.pardir)) +DEPOT_TOOLS_DIR = os.path.join(SRC_DIR, 'third_party', 'depot_tools') +sys.path.insert(0, DEPOT_TOOLS_DIR) + + +import gclient_utils +import subprocess2 def main(directories): @@ -30,7 +34,8 @@ def main(directories): for path in directories: cmd = [ - 'download_from_google_storage', + sys.executable, + os.path.join(DEPOT_TOOLS_DIR, 'download_from_google_storage.py'), '--directory', '--num_threads=10', '--bucket', 'chrome-webrtc-resources', @@ -39,7 +44,14 @@ def main(directories): path, ] print 'Downloading precompiled tools...' - subprocess.check_call(cmd, shell=USE_SHELL) + + # Perform download similar to how gclient hooks execute. + try: + gclient_utils.CheckCallAndFilterAndHeader(cmd, cwd=SRC_DIR, always=True) + except (gclient_utils.Error, subprocess2.CalledProcessError) as e: + print 'Error: %s' % str(e) + return 2 + return 0 if __name__ == '__main__':