Temporarily remove iOS due to code signing issues
[mirror/qt/qt5.git] / coin / provisioning / common / unix / DownloadURL.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 test suite 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 # A helper script used for downloading a file from a URL or an alternative
37 # URL. Also the SHA1 is checked for the file. Target filename should also
38 # be given.
39 #
40 # If called directly from another script, it will exit the parent script
41 # as well, if not called in its own subshell with parentheses.
42
43 # shellcheck source=try_catch.sh
44 source "${BASH_SOURCE%/*}/try_catch.sh"
45
46 ExceptionDownloadPrimaryUrl=100
47 ExceptionDownloadAltUrl=101
48 ExceptionSHA1=102
49
50 function DownloadURL {
51     url=$1
52     url_alt=$2
53     expectedSha1=$3
54     targetFile=$4
55
56     try
57     (
58         try
59         (
60             echo "Downloading from primary URL '$url'"
61             curl --fail -L --retry 5 --retry-delay 5 -o "$targetFile" "$url" || throw $ExceptionDownloadPrimaryUrl
62         )
63         catch || {
64             case $ex_code in
65                 $ExceptionDownloadPrimaryUrl)
66                     echo "Failed to download '$url' multiple times"
67                     echo "Downloading tar.gz from alternative URL '$url_alt'"
68                     curl --fail -L --retry 5 --retry-delay 5 -o "$targetFile" "$url_alt" || throw $ExceptionDownloadAltUrl
69                 ;;
70             esac
71         }
72         echo "Checking SHA1 on PKG '$targetFile'"
73         echo "$expectedSha1 *$targetFile" > $targetFile.sha1
74         shasum --check $targetFile.sha1 || throw $ExceptionSHA1
75     )
76
77     catch || {
78         case $ex_code in
79             $ExceptionDownloadAltUrl)
80                 echo "Failed downloading PKG from primary and alternative URLs"
81                 exit 1;
82             ;;
83             $ExceptionSHA1)
84                 echo "Failed checksum on $targetFile."
85                 exit 1;
86             ;;
87         esac
88     }
89 }
90