diff options
Diffstat (limited to 'deps/v8/build/swarming_xcode_install.py')
-rwxr-xr-x | deps/v8/build/swarming_xcode_install.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/deps/v8/build/swarming_xcode_install.py b/deps/v8/build/swarming_xcode_install.py new file mode 100755 index 0000000000..7764aa55c7 --- /dev/null +++ b/deps/v8/build/swarming_xcode_install.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python +# Copyright 2017 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +""" +Script used to install Xcode on the swarming bots. +""" + +import os +import shutil +import subprocess +import sys +import tarfile +import tempfile + +import mac_toolchain + +VERSION = '9A235' +URL = 'gs://chrome-mac-sdk/ios-toolchain-9A235-1.tgz' +REMOVE_DIR = '/Applications/Xcode9.0-Beta4.app/' +OUTPUT_DIR = '/Applications/Xcode9.0.app/' + +def main(): + # Check if it's already installed. + if os.path.exists(OUTPUT_DIR): + env = os.environ.copy() + env['DEVELOPER_DIR'] = OUTPUT_DIR + cmd = ['xcodebuild', '-version'] + found_version = \ + subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE).communicate()[0] + if VERSION in found_version: + print "Xcode %s already installed" % VERSION + sys.exit(0) + + # Confirm old dir is there first. + if not os.path.exists(REMOVE_DIR): + print "Failing early since %s isn't there." % REMOVE_DIR + sys.exit(1) + + # Download Xcode. + with tempfile.NamedTemporaryFile() as temp: + env = os.environ.copy() + env['PATH'] += ":/b/depot_tools" + subprocess.check_call(['gsutil.py', 'cp', URL, temp.name], env=env) + if os.path.exists(OUTPUT_DIR): + shutil.rmtree(OUTPUT_DIR) + if not os.path.exists(OUTPUT_DIR): + os.makedirs(OUTPUT_DIR) + tarfile.open(mode='r:gz', name=temp.name).extractall(path=OUTPUT_DIR) + + # Accept license, call runFirstLaunch. + mac_toolchain.FinalizeUnpack(OUTPUT_DIR, 'ios') + + # Set new Xcode as default. + subprocess.check_call(['sudo', '/usr/bin/xcode-select', '-s', OUTPUT_DIR]) + + if os.path.exists(REMOVE_DIR): + shutil.rmtree(REMOVE_DIR) + + +if __name__ == '__main__': + sys.exit(main()) + |