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

Side by Side Diff: build/mac_toolchain.py

Issue 2540783003: Add iOS support to mac_toolchain download script. (Closed)
Patch Set: Created 4 years 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 Chromium Authors. All rights reserved. 2 # Copyright 2016 The Chromium 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 """ 6 """
7 If should_use_hermetic_xcode.py emits "1", and the current toolchain is out of 7 If should_use_hermetic_xcode.py emits "1", and the current toolchain is out of
8 date: 8 date:
9 * Downloads the hermetic mac toolchain 9 * Downloads the hermetic mac toolchain
10 * Requires gsutil to be configured. 10 * Requires gsutil to be configured.
11 * Accepts the license. 11 * Accepts the license.
12 * If xcode-select and xcodebuild are not passwordless in sudoers, requires 12 * If xcode-select and xcodebuild are not passwordless in sudoers, requires
13 user interaction. 13 user interaction.
14 """ 14 """
15 15
16 import os 16 import os
17 import plistlib 17 import plistlib
18 import shutil 18 import shutil
19 import subprocess 19 import subprocess
20 import sys 20 import sys
21 import tarfile 21 import tarfile
22 import time 22 import time
23 import tempfile 23 import tempfile
24 import urllib2 24 import urllib2
25 25
26 # This can be changed after running /build/package_mac_toolchain.py. 26 # This can be changed after running /build/package_mac_toolchain.py.
27 TOOLCHAIN_REVISION = '5B1008' 27 MAC_TOOLCHAIN_VERSION = '5B1008'
28 TOOLCHAIN_SUB_REVISION = 3 28 MAC_TOOLCHAIN_SUB_REVISION = 3
29 TOOLCHAIN_VERSION = '%s-%s' % (TOOLCHAIN_REVISION, TOOLCHAIN_SUB_REVISION) 29 MAC_TOOLCHAIN_VERSION = '%s-%s' % (MAC_TOOLCHAIN_VERSION,
30 MAC_TOOLCHAIN_SUB_REVISION)
31 IOS_TOOLCHAIN_VERSION = '8A218a'
32 IOS_TOOLCHAIN_SUB_REVISION = 1
33 IOS_TOOLCHAIN_VERSION = '%s-%s' % (IOS_TOOLCHAIN_VERSION,
34 IOS_TOOLCHAIN_SUB_REVISION)
35
36 # Absolute path to src/ directory.
37 REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
38
39 # Absolute path to a file with gclient solutions.
40 GCLIENT_CONFIG = os.path.join(os.path.dirname(REPO_ROOT), '.gclient')
30 41
31 BASE_DIR = os.path.abspath(os.path.dirname(__file__)) 42 BASE_DIR = os.path.abspath(os.path.dirname(__file__))
32 TOOLCHAIN_BUILD_DIR = os.path.join(BASE_DIR, 'mac_files', 'Xcode.app') 43 TOOLCHAIN_BUILD_DIR = os.path.join(BASE_DIR, 'mac_files', 'Xcode.app')
33 STAMP_FILE = os.path.join(BASE_DIR, 'mac_files', 'toolchain_build_revision') 44 STAMP_FILE = os.path.join(BASE_DIR, 'mac_files', 'toolchain_build_revision')
34 TOOLCHAIN_URL = 'gs://chrome-mac-sdk/' 45 TOOLCHAIN_URL = 'gs://chrome-mac-sdk/'
35 46
47 def IsIOSPlatform():
48 try:
49 env = {}
50 execfile(GCLIENT_CONFIG, env, env)
51 if 'ios' in env.get('target_os', []):
52 return True
53 except:
54 pass
55 return False
56
36 57
37 def ReadStampFile(): 58 def ReadStampFile():
38 """Return the contents of the stamp file, or '' if it doesn't exist.""" 59 """Return the contents of the stamp file, or '' if it doesn't exist."""
39 try: 60 try:
40 with open(STAMP_FILE, 'r') as f: 61 with open(STAMP_FILE, 'r') as f:
41 return f.read().rstrip() 62 return f.read().rstrip()
42 except IOError: 63 except IOError:
43 return '' 64 return ''
44 65
45 66
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 186
166 187
167 def main(): 188 def main():
168 if sys.platform != 'darwin': 189 if sys.platform != 'darwin':
169 return 0 190 return 0
170 191
171 if not _UseHermeticToolchain(): 192 if not _UseHermeticToolchain():
172 print 'Using local toolchain.' 193 print 'Using local toolchain.'
173 return 0 194 return 0
174 195
175 toolchain_revision = os.environ.get('MAC_TOOLCHAIN_REVISION', 196 if IsIOSPlatform():
176 TOOLCHAIN_VERSION) 197 default_version = IOS_TOOLCHAIN_VERSION
177 if ReadStampFile() == toolchain_revision: 198 toolchain_filename = 'ios-toolchain-%s.tgz'
178 print 'Toolchain (%s) is already up to date.' % toolchain_revision 199 else:
200 default_version = MAC_TOOLCHAIN_VERSION
201 toolchain_filename = 'toolchain-%s.tgz'
202
203 toolchain_version = os.environ.get('MAC_TOOLCHAIN_REVISION',
justincohen 2016/11/30 01:38:10 With GN do we need to get rid of this? I'm not su
204 default_version)
205
206 if ReadStampFile() == toolchain_version:
207 print 'Toolchain (%s) is already up to date.' % toolchain_version
179 AcceptLicense() 208 AcceptLicense()
180 return 0 209 return 0
181 210
182 if not CanAccessToolchainBucket(): 211 if not CanAccessToolchainBucket():
183 RequestGsAuthentication() 212 RequestGsAuthentication()
184 return 1 213 return 1
185 214
186 # Reset the stamp file in case the build is unsuccessful. 215 # Reset the stamp file in case the build is unsuccessful.
187 WriteStampFile('') 216 WriteStampFile('')
188 217
189 toolchain_file = '%s.tgz' % toolchain_revision 218 toolchain_file = '%s.tgz' % toolchain_version
190 toolchain_full_url = TOOLCHAIN_URL + toolchain_file 219 toolchain_full_url = TOOLCHAIN_URL + toolchain_file
191 220
192 print 'Updating toolchain to %s...' % toolchain_revision 221 print 'Updating toolchain to %s...' % toolchain_version
193 try: 222 try:
194 toolchain_file = 'toolchain-%s.tgz' % toolchain_revision 223 toolchain_file = toolchain_filename % toolchain_version
195 toolchain_full_url = TOOLCHAIN_URL + toolchain_file 224 toolchain_full_url = TOOLCHAIN_URL + toolchain_file
196 DownloadAndUnpack(toolchain_full_url, TOOLCHAIN_BUILD_DIR) 225 DownloadAndUnpack(toolchain_full_url, TOOLCHAIN_BUILD_DIR)
197 AcceptLicense() 226 AcceptLicense()
198 227
199 print 'Toolchain %s unpacked.' % toolchain_revision 228 print 'Toolchain %s unpacked.' % toolchain_version
200 WriteStampFile(toolchain_revision) 229 WriteStampFile(toolchain_version)
201 return 0 230 return 0
202 except Exception as e: 231 except Exception as e:
203 print 'Failed to download toolchain %s.' % toolchain_file 232 print 'Failed to download toolchain %s.' % toolchain_file
204 print 'Exception %s' % e 233 print 'Exception %s' % e
205 print 'Exiting.' 234 print 'Exiting.'
206 return 1 235 return 1
207 236
208 if __name__ == '__main__': 237 if __name__ == '__main__':
209 sys.exit(main()) 238 sys.exit(main())
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