|  | # Downloads dill files from CIPD for each supported ABI version. | 
|  |  | 
|  | import os | 
|  | import subprocess | 
|  | import sys | 
|  | import utils | 
|  |  | 
|  |  | 
|  | def procWait(p): | 
|  | while p.returncode is None: | 
|  | p.communicate() | 
|  | p.poll() | 
|  | return p.returncode | 
|  |  | 
|  |  | 
|  | def findAbiVersion(version): | 
|  | cmd = ['cipd', 'instances', 'dart/abiversions/%d' % version] | 
|  | p = subprocess.Popen( | 
|  | cmd, | 
|  | stdout=subprocess.PIPE, | 
|  | stderr=subprocess.PIPE, | 
|  | shell=utils.IsWindows(), | 
|  | cwd=utils.DART_DIR) | 
|  | return procWait(p) == 0 | 
|  |  | 
|  |  | 
|  | def main(): | 
|  | abi_version = int(utils.GetAbiVersion()) | 
|  | oldest_abi_version = int(utils.GetOldestSupportedAbiVersion()) | 
|  | cmd = ['cipd', 'ensure', '-root', 'tools/abiversions', '-ensure-file', '-'] | 
|  | ensure_file = '' | 
|  | for i in range(oldest_abi_version, abi_version + 1): | 
|  | if findAbiVersion(i): | 
|  | ensure_file += '@Subdir %d\ndart/abiversions/%d latest\n\n' % (i, i) | 
|  | if not ensure_file: | 
|  | return 0 | 
|  | p = subprocess.Popen( | 
|  | cmd, | 
|  | stdin=subprocess.PIPE, | 
|  | stdout=subprocess.PIPE, | 
|  | stderr=subprocess.PIPE, | 
|  | shell=utils.IsWindows(), | 
|  | cwd=utils.DART_DIR) | 
|  | p.communicate(ensure_file) | 
|  | p.stdin.close() | 
|  | return procWait(p) | 
|  |  | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | sys.exit(main()) |