Use subprocess2 for downloading tools.

Change to use exactly the same approach as when gclient hooks
are executing [1]. It should be safe since it's using the DEPS-pinned
depot_tools in third_party. Hopefully this solves the race condition
problems we've been seeing in crbug.com/773671

[1]: https://cs.chromium.org/chromium/tools/depot_tools/gclient.py?rcl=b3ce73d028b1d44137d533220fd41be31bc31801&l=214

Bug: chromium:773671
Change-Id: Ia003dbca394e42556afa1a416fcb4844b960ad6c
No-try: True
Reviewed-on: https://webrtc-review.googlesource.com/8820
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Henrik Kjellander <kjellander@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20256}
This commit is contained in:
Henrik Kjellander 2017-10-12 09:56:09 +02:00 committed by Commit Bot
parent 4de044f872
commit 4d39dc3922

View File

@ -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__':