diff --git a/win_toolchain/get_toolchain_if_necessary.py b/win_toolchain/get_toolchain_if_necessary.py index 654d5659c..446a80163 100755 --- a/win_toolchain/get_toolchain_if_necessary.py +++ b/win_toolchain/get_toolchain_if_necessary.py @@ -114,6 +114,20 @@ def SaveTimestampsAndHash(root, sha1): json.dump(timestamps_data, f) +def HaveSrcInternalAccess(): + """Checks whether access to src-internal is available.""" + with open(os.devnull, 'w') as nul: + if subprocess.call( + ['svn', 'ls', + 'svn://svn.chromium.org/chrome-internal/trunk/src-internal/'], + shell=True, stdin=nul, stdout=nul, stderr=nul) == 0: + return True + return subprocess.call( + ['git', 'remote', 'show', + 'https://chrome-internal.googlesource.com/chrome/src-internal/'], + shell=True, stdin=nul, stdout=nul, stderr=nul) == 0 + + def main(): if not sys.platform.startswith(('cygwin', 'win32')): return 0 @@ -125,9 +139,6 @@ def main(): # Move to depot_tools\win_toolchain where we'll store our files, and where # the downloader script is. os.chdir(os.path.normpath(os.path.join(BASEDIR))) - # TODO(scottmg): http://crbug.com/323300 Attempt to locate a src-internal - # pull and use that as a signal to install Pro also. - should_get_pro = os.path.isfile(os.path.join(BASEDIR, '.vspro')) toolchain_dir = '.' target_dir = os.path.normpath(os.path.join(toolchain_dir, 'vs2013_files')) @@ -143,6 +154,8 @@ def main(): # based on timestamps to make that case fast. current_hash = CalculateHash(target_dir) if current_hash not in desired_hashes: + should_get_pro = (os.path.isfile(os.path.join(BASEDIR, '.vspro')) or + HaveSrcInternalAccess()) print('Windows toolchain out of date or doesn\'t exist, updating (%s)...' % ('Pro' if should_get_pro else 'Express')) # This stays resident and will make the rmdir below fail.