Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Side by Side Diff: tools/download_latest_dev_sdk.py

Issue 2992453002: Fixes dev SDK download script to sniff for the version Flutter wants (Closed)
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2016 The Dart project authors. All rights reserved. 2 # Copyright 2016 The Dart project authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 # This script downloads the latest dev SDK from 6 # This script downloads the latest dev SDK from
7 # http://gsdview.appspot.com/dart-archive/channels/dev/raw/latest/sdk/ 7 # http://gsdview.appspot.com/dart-archive/channels/dev/raw/latest/sdk/
8 # into tools/sdks/$HOST_OS/. It is intended to be invoked from Jiri hooks in 8 # into tools/sdks/$HOST_OS/. It is intended to be invoked from Jiri hooks in
9 # a Fuchsia checkout. 9 # a Fuchsia checkout.
10 10
11 import os 11 import os
12 import sys 12 import sys
13 import zipfile 13 import zipfile
14 import urllib 14 import urllib
15 import utils 15 import utils
16 16
17 HOST_OS = utils.GuessOS() 17 HOST_OS = utils.GuessOS()
18 HOST_ARCH = utils.GuessArchitecture() 18 HOST_ARCH = utils.GuessArchitecture()
19 SCRIPT_DIR = os.path.dirname(sys.argv[0]) 19 SCRIPT_DIR = os.path.dirname(sys.argv[0])
20 DART_ROOT = os.path.realpath(os.path.join(SCRIPT_DIR, '..')) 20 DART_ROOT = os.path.realpath(os.path.join(SCRIPT_DIR, '..'))
21 FUCHSIA_ROOT = os.path.realpath(os.path.join(DART_ROOT, '..'))
22 FLUTTER_ROOT = os.path.join(FUCHSIA_ROOT, 'lib', 'flutter')
21 23
22 DART_VERSION = '1.25.0-dev.7.0' 24 DEFAULT_DART_VERSION = 'latest'
23 BASE_URL = 'http://gsdview.appspot.com/dart-archive/channels/dev/raw/' + DART_VE RSION +'/sdk' 25 BASE_URL = 'http://gsdview.appspot.com/dart-archive/channels/dev/raw/%s/sdk/%s'
24 26
25 def host_os_for_sdk(host_os): 27 def host_os_for_sdk(host_os):
26 if host_os.startswith('macos'): 28 if host_os.startswith('macos'):
27 return 'mac' 29 return 'mac'
28 if host_os.startswith('win'): 30 if host_os.startswith('win'):
29 return 'windows' 31 return 'windows'
30 return host_os 32 return host_os
31 33
32 # Python's zipfile doesn't preserve file permissions during extraction, so we 34 # Python's zipfile doesn't preserve file permissions during extraction, so we
33 # have to do it manually. 35 # have to do it manually.
34 def extract_file(zf, info, extract_dir): 36 def extract_file(zf, info, extract_dir):
35 zf.extract( info.filename, path=extract_dir ) 37 zf.extract( info.filename, path=extract_dir )
36 out_path = os.path.join(extract_dir, info.filename) 38 out_path = os.path.join(extract_dir, info.filename)
37 perm = info.external_attr >> 16L 39 perm = info.external_attr >> 16L
38 os.chmod(out_path, perm) 40 os.chmod(out_path, perm)
39 41
40 def main(argv): 42 def main(argv):
41 host_os = host_os_for_sdk(HOST_OS) 43 host_os = host_os_for_sdk(HOST_OS)
42 zip_file = ('dartsdk-%s-x64-release.zip' % HOST_OS) 44 zip_file = ('dartsdk-%s-x64-release.zip' % HOST_OS)
43 sha_file = zip_file + '.sha256sum' 45 sha_file = zip_file + '.sha256sum'
44 sdk_path = os.path.join(DART_ROOT, 'tools', 'sdks', host_os) 46 sdk_path = os.path.join(DART_ROOT, 'tools', 'sdks', host_os)
45 local_sha_path = os.path.join(sdk_path, sha_file) 47 local_sha_path = os.path.join(sdk_path, sha_file)
46 remote_sha_path = os.path.join(sdk_path, sha_file + '.remote') 48 remote_sha_path = os.path.join(sdk_path, sha_file + '.remote')
47 zip_path = os.path.join(sdk_path, zip_file) 49 zip_path = os.path.join(sdk_path, zip_file)
48 sha_url = BASE_URL + '/' + sha_file 50
49 zip_url = BASE_URL + '/' + zip_file 51 # If we're in a Fuchsia checkout with Flutter nearby, pull the same dev SDK
52 # version that Flutter says it wants. Otherwise, pull the latest dev SDK.
53 sdk_version_path = os.path.join(
54 FLUTTER_ROOT, 'bin', 'internal', 'dart-sdk.version')
55 sdk_version = DEFAULT_DART_VERSION
56 if os.path.isfile(sdk_version_path):
57 with open(sdk_version_path, 'r') as fp:
58 sdk_version = fp.read().strip()
59
60 sha_url = (BASE_URL % (sdk_version, sha_file))
61 zip_url = (BASE_URL % (sdk_version, zip_file))
50 62
51 local_sha = '' 63 local_sha = ''
52 if os.path.isfile(local_sha_path): 64 if os.path.isfile(local_sha_path):
53 with open(local_sha_path, 'r') as fp: 65 with open(local_sha_path, 'r') as fp:
54 local_sha = fp.read() 66 local_sha = fp.read()
55 67
56 remote_sha = '' 68 remote_sha = ''
57 urllib.urlretrieve(sha_url, remote_sha_path) 69 urllib.urlretrieve(sha_url, remote_sha_path)
58 with open(remote_sha_path, 'r') as fp: 70 with open(remote_sha_path, 'r') as fp:
59 remote_sha = fp.read() 71 remote_sha = fp.read()
60 os.remove(remote_sha_path) 72 os.remove(remote_sha_path)
61 73
62 if local_sha == '' or local_sha != remote_sha: 74 if local_sha == '' or local_sha != remote_sha:
63 with open(local_sha_path, 'w') as fp: 75 with open(local_sha_path, 'w') as fp:
64 fp.write(remote_sha) 76 fp.write(remote_sha)
65 print 'Downloading prebuilt Dart SDK from: ' + zip_url 77 print 'Downloading prebuilt Dart SDK from: ' + zip_url
66 urllib.urlretrieve(zip_url, zip_path) 78 urllib.urlretrieve(zip_url, zip_path)
67 with zipfile.ZipFile(zip_path, 'r') as zf: 79 with zipfile.ZipFile(zip_path, 'r') as zf:
68 for info in zf.infolist(): 80 for info in zf.infolist():
69 extract_file(zf, info, sdk_path) 81 extract_file(zf, info, sdk_path)
70 82
71 if __name__ == '__main__': 83 if __name__ == '__main__':
72 sys.exit(main(sys.argv)) 84 sys.exit(main(sys.argv))
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698