1
- #! /usr/ bin/env bash
1
+ #! /bin/bash
2
2
3
3
# Exit script if you try to use an uninitialized variable.
4
4
set -o nounset
@@ -10,23 +10,42 @@ set -o errexit
10
10
set -o pipefail
11
11
12
12
sudoIfAvailable () {
13
- if [[ -x $( command -v sudo) ]] ; then
13
+ if command -v sudo > /dev/null 2>&1 ; then
14
14
sudo -E bash " $@ "
15
15
else
16
16
bash " $@ "
17
17
fi
18
18
}
19
19
20
- downloadAndRun () {
21
- url=$1
22
- shift
23
- curl -sfL $url | sudoIfAvailable -s -- " $@ "
20
+ stream () {
21
+ local url=" $1 "
22
+ if command -v wget > /dev/null 2>&1 ; then
23
+ wget --retry-connrefused --waitretry=5 -qO- " $url "
24
+ elif command -v curl > /dev/null 2>&1 ; then
25
+ curl --retry 5 --retry-connrefused --retry-delay 5 -sSL " $url "
26
+ else
27
+ echo " Could not find wget or curl command" >&2
28
+ return 1
29
+ fi
30
+ }
31
+
32
+ download () {
33
+ local url=" $1 "
34
+ local filename=" $2 "
35
+ if command -v wget > /dev/null 2>&1 ; then
36
+ wget --retry-connrefused --waitretry=5 -qO " $filename " " $url " 2>&1
37
+ elif command -v curl > /dev/null 2>&1 ; then
38
+ curl --retry 5 --retry-connrefused --retry-delay 5 -sSLo " $filename " " $url "
39
+ else
40
+ echo " Could not find wget or curl command" >&2
41
+ return 1
42
+ fi
24
43
}
25
44
26
45
os=$( uname)
27
46
arch=$( uname -m)
28
47
binext=" "
29
- tmpdir=$( dirname " $( mktemp -u ) " )
48
+ tmpdir=$( mktemp -d 2> /dev/null || mktemp -d -t ' install ' )
30
49
rootdir=" $tmpdir /matlab_root"
31
50
batchdir=" $tmpdir /matlab-batch"
32
51
mpmdir=" $tmpdir /mpm"
@@ -35,49 +54,49 @@ mpmbaseurl="https://www.mathworks.com/mpm"
35
54
36
55
# resolve release
37
56
parsedrelease=$( echo " $PARAM_RELEASE " | tr ' [:upper:]' ' [:lower:]' )
38
- if [[ $parsedrelease = " latest" ]]; then
39
- mpmrelease=$( curl https://ssd.mathworks.com/supportfiles/ci/matlab-release/v0/latest)
57
+ if [[ " $parsedrelease " = " latest" ]]; then
58
+ mpmrelease=$( stream https://ssd.mathworks.com/supportfiles/ci/matlab-release/v0/latest)
40
59
else
41
- mpmrelease=" ${ parsedrelease} "
60
+ mpmrelease=" $parsedrelease "
42
61
fi
43
62
44
63
# validate release is supported
45
- if [[ $mpmrelease < " r2020b" ]]; then
64
+ if [[ " $mpmrelease " < " r2020b" ]]; then
46
65
echo " Release '${mpmrelease} ' is not supported. Use 'R2020b' or a later release." >&2
47
66
exit 1
48
67
fi
49
68
50
69
# install system dependencies
51
- if [[ $os = Linux ]]; then
70
+ if [[ " $os " = " Linux" ]]; then
52
71
# install MATLAB dependencies
53
72
release=$( echo " ${mpmrelease} " | grep -ioE " (r[0-9]{4}[a-b])" )
54
- downloadAndRun https://ssd.mathworks.com/supportfiles/ci/matlab-deps/v0/install.sh " $release "
73
+ stream https://ssd.mathworks.com/supportfiles/ci/matlab-deps/v0/install.sh | sudoIfAvailable -s -- " $release "
55
74
# install mpm depencencies
56
75
sudoIfAvailable -c " apt-get install --no-install-recommends --no-upgrade --yes \
57
76
wget \
58
77
unzip \
59
78
ca-certificates"
60
- elif [[ $os = Darwin && $arch = arm64 ]]; then
61
- if [[ $mpmrelease < " r2023b" ]]; then
79
+ elif [[ " $os " = " Darwin" && " $arch " = " arm64" ]]; then
80
+ if [[ " $mpmrelease " < " r2023b" ]]; then
62
81
# install Rosetta 2
63
82
sudoIfAvailable -c " softwareupdate --install-rosetta --agree-to-license"
64
83
else
65
84
# install Java runtime
66
85
jdkpkg=" $tmpdir /jdk.pkg"
67
- curl -sfL https://corretto.aws/downloads/latest/amazon-corretto-8-aarch64-macos-jdk.pkg -o $jdkpkg
68
- sudoIfAvailable -c " installer -pkg $jdkpkg -target /"
86
+ download https://corretto.aws/downloads/latest/amazon-corretto-8-aarch64-macos-jdk.pkg " $jdkpkg "
87
+ sudoIfAvailable -c " installer -pkg ' $jdkpkg ' -target /"
69
88
fi
70
89
fi
71
90
72
91
# set os specific options
73
- if [[ $os = CYGWIN* || $os = MINGW* || $os = MSYS* ]]; then
92
+ if [[ " $os " = CYGWIN* || " $os " = MINGW* || " $os " = MSYS* ]]; then
74
93
mwarch=" win64"
75
94
binext=" .exe"
76
95
rootdir=$( cygpath " $rootdir " )
77
96
mpmdir=$( cygpath " $mpmdir " )
78
97
batchdir=$( cygpath " $batchdir " )
79
- elif [[ $os = Darwin ]]; then
80
- if [[ $arch = arm64 && ! $mpmrelease < " r2023b" ]]; then
98
+ elif [[ " $os " = " Darwin" ]]; then
99
+ if [[ " $arch " = " arm64" && ! " $mpmrelease " < " r2023b" ]]; then
81
100
mwarch=" maca64"
82
101
else
83
102
mwarch=" maci64"
@@ -93,18 +112,18 @@ mkdir -p "$batchdir"
93
112
mkdir -p " $mpmdir "
94
113
95
114
# install mpm
96
- curl -o " $mpmdir /mpm $binext " -sfL " $mpmbaseurl / $mwarch / mpm"
115
+ download " $mpmbaseurl / $mwarch /mpm " " $mpmdir / mpm$binext "
97
116
chmod +x " $mpmdir /mpm$binext "
98
117
99
118
# install matlab-batch
100
- curl -o " $batchdir / matlab-batch$binext " -sfL " $batchbaseurl / $mwarch /matlab-batch$binext "
119
+ download " $batchbaseurl / $mwarch / matlab-batch$binext " " $batchdir /matlab-batch$binext "
101
120
chmod +x " $batchdir /matlab-batch$binext "
102
121
103
122
# install matlab
104
123
" $mpmdir /mpm$binext " install \
105
- --release=$mpmrelease \
124
+ --release=" $mpmrelease " \
106
125
--destination=" $rootdir " \
107
126
--products ${PARAM_PRODUCTS} MATLAB
108
127
109
128
# add MATLAB and matlab-batch to path
110
- echo ' export PATH="' $rootdir ' /bin:' $batchdir ' :$PATH"' >> $BASH_ENV
129
+ echo ' export PATH="' $rootdir ' /bin:' $batchdir ' :$PATH"' >> $BASH_ENV
0 commit comments