| Index: tools/download_latest_dev_sdk.py
|
| diff --git a/tools/download_latest_dev_sdk.py b/tools/download_latest_dev_sdk.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..3c212566ec2d32ee0b74e7af7b88723690b272a7
|
| --- /dev/null
|
| +++ b/tools/download_latest_dev_sdk.py
|
| @@ -0,0 +1,71 @@
|
| +#!/usr/bin/env python
|
| +# Copyright 2016 The Dart project authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +# This script downloads the latest dev SDK from
|
| +# http://gsdview.appspot.com/dart-archive/channels/dev/raw/latest/sdk/
|
| +# into tools/sdks/$HOST_OS/. It is intended to be invoked from Jiri hooks in
|
| +# a Fuchsia checkout.
|
| +
|
| +import os
|
| +import sys
|
| +import zipfile
|
| +import urllib
|
| +import utils
|
| +
|
| +HOST_OS = utils.GuessOS()
|
| +HOST_ARCH = utils.GuessArchitecture()
|
| +SCRIPT_DIR = os.path.dirname(sys.argv[0])
|
| +DART_ROOT = os.path.realpath(os.path.join(SCRIPT_DIR, '..'))
|
| +
|
| +BASE_URL = 'http://gsdview.appspot.com/dart-archive/channels/dev/raw/latest/sdk'
|
| +
|
| +def host_os_for_sdk(host_os):
|
| + if host_os.startswith('macos'):
|
| + return 'mac'
|
| + if host_os.startswith('win'):
|
| + return 'windows'
|
| + return host_os
|
| +
|
| +# Python's zipfile doesn't preserve file permissions during extraction, so we
|
| +# have to do it manually.
|
| +def extract_file(zf, info, extract_dir):
|
| + zf.extract( info.filename, path=extract_dir )
|
| + out_path = os.path.join(extract_dir, info.filename)
|
| + perm = info.external_attr >> 16L
|
| + os.chmod(out_path, perm)
|
| +
|
| +def main(argv):
|
| + host_os = host_os_for_sdk(HOST_OS)
|
| + zip_file = ('dartsdk-%s-x64-release.zip' % HOST_OS)
|
| + sha_file = zip_file + '.sha256sum'
|
| + sdk_path = os.path.join(DART_ROOT, 'tools', 'sdks', host_os)
|
| + local_sha_path = os.path.join(sdk_path, sha_file)
|
| + remote_sha_path = os.path.join(sdk_path, sha_file + '.remote')
|
| + zip_path = os.path.join(sdk_path, zip_file)
|
| + sha_url = BASE_URL + '/' + sha_file
|
| + zip_url = BASE_URL + '/' + zip_file
|
| +
|
| + local_sha = ''
|
| + if os.path.isfile(local_sha_path):
|
| + with open(local_sha_path, 'r') as fp:
|
| + local_sha = fp.read()
|
| +
|
| + remote_sha = ''
|
| + urllib.urlretrieve(sha_url, remote_sha_path)
|
| + with open(remote_sha_path, 'r') as fp:
|
| + remote_sha = fp.read()
|
| + os.remove(remote_sha_path)
|
| +
|
| + if local_sha == '' or local_sha != remote_sha:
|
| + with open(local_sha_path, 'w') as fp:
|
| + fp.write(remote_sha)
|
| + print 'Downloading prebuilt Dart SDK from: ' + zip_url
|
| + urllib.urlretrieve(zip_url, zip_path)
|
| + with zipfile.ZipFile(zip_path, 'r') as zf:
|
| + for info in zf.infolist():
|
| + extract_file(zf, info, sdk_path)
|
| +
|
| +if __name__ == '__main__':
|
| + sys.exit(main(sys.argv))
|
|
|