Commit 40b53b74 authored by thakis@chromium.org's avatar thakis@chromium.org

make `python build/vs_toolchain.py update` work a bit better on non-windows

It still early-exits on non-Windows, so no visible change yet.

BUG=495204

Review URL: https://codereview.chromium.org/1181943003

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@295807 0039d316-1c4b-4281-b951-d872f2087c98
parent b4ec15f2
......@@ -128,7 +128,7 @@ def HaveSrcInternalAccess():
def LooksLikeGoogler():
"""Checks for a USERDOMAIN environment variable of 'GOOGLE', which
probably implies the current user is a Googler."""
return os.environ.get('USERDOMAIN').upper() == 'GOOGLE'
return os.environ.get('USERDOMAIN', '').upper() == 'GOOGLE'
def CanAccessToolchainBucket():
......@@ -190,6 +190,15 @@ def DownloadUsingGsutil(filename):
return temp_dir, target_path
def RmDir(path):
"""Deletes path and all the files it contains."""
if sys.platform != 'win32':
shutil.rmtree(path, ignore_errors=True)
else:
# shutil.rmtree() doesn't delete read-only files on Windows.
subprocess.check_call('rmdir /s/q "%s"' % path, shell=True)
def DoTreeMirror(target_dir, tree_sha1):
"""In order to save temporary space on bots that do not have enough space to
download ISOs, unpack them, and copy to the target location, the whole tree
......@@ -200,7 +209,7 @@ def DoTreeMirror(target_dir, tree_sha1):
with zipfile.ZipFile(local_zip, 'r', zipfile.ZIP_DEFLATED, True) as zf:
zf.extractall(target_dir)
if temp_dir:
subprocess.check_call('rmdir /s/q "%s"' % temp_dir, shell=True)
RmDir(temp_dir)
def main():
......@@ -222,6 +231,7 @@ def main():
cmd.extend(['--output-json', winpath(options.output_json)])
cmd.extend(args)
sys.exit(subprocess.call(cmd))
assert sys.platform != 'cygwin'
# We assume that the Pro hash is the first one.
desired_hashes = args
......@@ -263,12 +273,13 @@ def main():
print(' desired_hashes: %s' % ', '.join(desired_hashes))
sys.stdout.flush()
DelayBeforeRemoving(target_dir)
# This stays resident and will make the rmdir below fail.
with open(os.devnull, 'wb') as nul:
subprocess.call(['taskkill', '/f', '/im', 'mspdbsrv.exe'],
stdin=nul, stdout=nul, stderr=nul)
if sys.platform == 'win32':
# This stays resident and will make the rmdir below fail.
with open(os.devnull, 'wb') as nul:
subprocess.call(['taskkill', '/f', '/im', 'mspdbsrv.exe'],
stdin=nul, stdout=nul, stderr=nul)
if os.path.isdir(target_dir):
subprocess.check_call('rmdir /s/q "%s"' % target_dir, shell=True)
RmDir(target_dir)
DoTreeMirror(target_dir, desired_hashes[0])
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment