blob: 6eaa9e699e8a3b66856ae2ba1632aeb7fe93dc21 [file] [log] [blame]
# 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 downloadAbiDills(oldest_abi_version, abi_version):
cmd = ['cipd', 'ensure', '-root', 'tools/abiversions', '-ensure-file', '-']
ensure_file = ''
for i in xrange(oldest_abi_version, abi_version + 1):
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)
def main():
abi_version = int(utils.GetAbiVersion())
oldest_abi_version = int(utils.GetOldestSupportedAbiVersion())
# The latest abi version may not have an entry in CIPD yet, so check first.
if not findAbiVersion(abi_version):
abi_version -= 1
return downloadAbiDills(oldest_abi_version, abi_version)
if __name__ == '__main__':
sys.exit(main())