Split Common folder based on operating system families
[mirror/qt/qt5.git] / coin / provisioning / common / macos / install_xcode.sh
1 #!/bin/bash
2
3 #############################################################################
4 ##
5 ## Copyright (C) 2017 The Qt Company Ltd.
6 ## Contact: http://www.qt.io/licensing/
7 ##
8 ## This file is part of the provisioning scripts of the Qt Toolkit.
9 ##
10 ## $QT_BEGIN_LICENSE:LGPL21$
11 ## Commercial License Usage
12 ## Licensees holding valid commercial Qt licenses may use this file in
13 ## accordance with the commercial license agreement provided with the
14 ## Software or, alternatively, in accordance with the terms contained in
15 ## a written agreement between you and The Qt Company. For licensing terms
16 ## and conditions see http://www.qt.io/terms-conditions. For further
17 ## information use the contact form at http://www.qt.io/contact-us.
18 ##
19 ## GNU Lesser General Public License Usage
20 ## Alternatively, this file may be used under the terms of the GNU Lesser
21 ## General Public License version 2.1 or version 3 as published by the Free
22 ## Software Foundation and appearing in the file LICENSE.LGPLv21 and
23 ## LICENSE.LGPLv3 included in the packaging of this file. Please review the
24 ## following information to ensure the GNU Lesser General Public License
25 ## requirements will be met: https://www.gnu.org/licenses/lgpl.html and
26 ## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
27 ##
28 ## As a special exception, The Qt Company gives you certain additional
29 ## rights. These rights are described in The Qt Company LGPL Exception
30 ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
31 ##
32 ## $QT_END_LICENSE$
33 ##
34 #############################################################################
35
36 # This script installs Xcode
37 # Prerequisites: Have Xcode prefetched to local cache as xz compressed.
38 # This can be achieved by fetching Xcode_8.xip from Apple Store.
39 # Uncompress it with 'xar -xf Xcode_8.xip'
40 # Then get https://gist.githubusercontent.com/pudquick/ff412bcb29c9c1fa4b8d/raw/24b25538ea8df8d0634a2a6189aa581ccc6a5b4b/parse_pbzx2.py
41 # with which you can run 'python parse_pbzx2.py Content'.
42 # This will give you a file called "Content.part00.cpio.xz" that
43 # can be renamed to Xcode_8.xz for this script.
44
45
46
47 # shellcheck source=../unix/try_catch.sh
48 source "${BASH_SOURCE%/*}/../unix/try_catch.sh"
49
50 function InstallXCode()
51 {
52     ExceptionCPIO=103
53     ExceptionAcceptLicense=105
54     ExceptionDeveloperMode=113
55
56     sourceFile=$1
57     version=$2
58
59     try
60     (
61         echo "Uncompressing and installing '$sourceFile'"
62         xzcat < "$sourceFile" | (cd /Applications/ && sudo cpio -dmi) || throw $ExceptionCPIO
63
64         echo "Accept license"
65         sudo xcodebuild -license accept || throw $ExceptionAcceptLicense
66
67         echo "Enabling developer mode, so that using lldb does not require interactive password entry"
68         sudo /usr/sbin/DevToolsSecurity -enable || throw $ExceptionDeveloperMode
69
70         echo "Xcode = $version" >> ~/versions.txt
71     )
72     catch || {
73         case $ex_code in
74             $ExceptionCPIO)
75                 echo "Failed to unarchive .cpio."
76                 exit 1;
77             ;;
78             $ExceptionDeveloperMode)
79                 echo "Failed to enable developer mode."
80                 exit 1;
81             ;;
82             $ExceptionAcceptLicense)
83                 echo "Failed to accept license."
84                 exit 1;
85             ;;
86
87         esac
88     }
89
90 }
91