Chromium Code Reviews| Index: win_toolchain/get_toolchain_if_necessary.py |
| diff --git a/win_toolchain/get_toolchain_if_necessary.py b/win_toolchain/get_toolchain_if_necessary.py |
| index b06daf6c53f516647bb23e3b593e040165530236..9f434cc7468e47a2d59239e4471d4e42cdae8ce7 100755 |
| --- a/win_toolchain/get_toolchain_if_necessary.py |
| +++ b/win_toolchain/get_toolchain_if_necessary.py |
| @@ -48,7 +48,7 @@ except ImportError: |
| # on bare VM that doesn't have a full depot_tools. |
| pass |
| -if sys.platform != 'cygwin': |
| +if sys.platform == 'win32': |
| import ctypes.wintypes |
| GetFileAttributes = ctypes.windll.kernel32.GetFileAttributesW |
| GetFileAttributes.argtypes = (ctypes.wintypes.LPWSTR,) |
| @@ -56,10 +56,11 @@ if sys.platform != 'cygwin': |
| FILE_ATTRIBUTE_HIDDEN = 0x2 |
| FILE_ATTRIBUTE_SYSTEM = 0x4 |
| - |
| def IsHidden(file_path): |
| """Returns whether the given |file_path| has the 'system' or 'hidden' |
| attribute set.""" |
| + if sys.platform != 'win32': |
| + return False |
|
Nico
2015/06/12 05:29:05
…so I have to do this, which means the hashes will
scottmg
2015/06/12 16:59:12
I had forgotten why. The long ago rationale was he
Nico
2015/06/12 17:04:29
No, I just saw that the hash didn't match and figu
|
| p = GetFileAttributes(file_path) |
| assert p != 0xffffffff |
| return bool(p & (FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM)) |
| @@ -144,7 +145,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(): |
| @@ -216,12 +217,12 @@ 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) |
| + shutil.rmtree(temp_dir, ignore_errors=True) |
|
scottmg
2015/06/12 16:59:12
This function is terrible, and fails for files mar
Nico
2015/06/12 17:04:29
TIL! Could the onerror handler in the first reply
scottmg
2015/06/12 17:13:56
Looks like it, but it seems longer than an if win:
|
| def main(): |
| - if not sys.platform.startswith(('cygwin', 'win32')): |
| - return 0 |
| + #if not sys.platform.startswith(('cygwin', 'win32')): |
| + #return 0 |
| parser = optparse.OptionParser(description=sys.modules[__name__].__doc__) |
| parser.add_option('--output-json', metavar='FILE', |
| @@ -280,11 +281,12 @@ def main(): |
| 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 in ('win32', 'cygwin'): |
| + 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) |
| + shutil.rmtree(target_dir, ignore_errors=True); |
| DoTreeMirror(target_dir, desired_hashes[0]) |