@@ -17,26 +17,6 @@ sudoIfAvailable() {
1717 fi
1818}
1919
20- stream () {
21- local url=" $1 "
22- local status=0
23-
24- if command -v wget > /dev/null 2>&1 ; then
25- wget --retry-connrefused --waitretry=5 -qO- " $url " || status=$?
26- elif command -v curl > /dev/null 2>&1 ; then
27- curl --retry 5 --retry-connrefused --retry-delay 5 -sSL " $url " || status=$?
28- else
29- echo " Could not find wget or curl command" >&2
30- return 1
31- fi
32-
33- if [ $status -ne 0 ]; then
34- echo " Error streaming file from $url " >&2
35- fi
36-
37- return $status
38- }
39-
4020download () {
4121 local url=" $1 "
4222 local filename=" $2 "
@@ -61,39 +41,26 @@ download() {
6141os=$( uname)
6242arch=$( uname -m)
6343binext=" "
44+ rootdir=" $HOME /MATLAB/$PARAM_RELEASE "
6445tmpdir=$( mktemp -d 2> /dev/null || mktemp -d -t ' install' )
65- rootdir=" $tmpdir /matlab_root"
6646batchdir=" $tmpdir /matlab-batch"
6747mpmdir=" $tmpdir /mpm"
6848batchbaseurl=" https://ssd.mathworks.com/supportfiles/ci/matlab-batch/v1"
6949mpmbaseurl=" https://www.mathworks.com/mpm"
70- releasestatus=" "
71-
72- # resolve release
73- parsedrelease=$( echo " $PARAM_RELEASE " | tr ' [:upper:]' ' [:lower:]' )
74- if [[ " $parsedrelease " = " latest" ]]; then
75- mpmrelease=$( stream https://ssd.mathworks.com/supportfiles/ci/matlab-release/v0/latest)
76- elif [[ " $parsedrelease " = " latest-including-prerelease" ]]; then
77- fetched=$( stream https://ssd.mathworks.com/supportfiles/ci/matlab-release/v0/latest-including-prerelease)
78- if [[ " $fetched " == * prerelease ]]; then
79- mpmrelease=" ${fetched% prerelease} "
80- releasestatus=" --release-status=Prerelease"
81- else
82- mpmrelease=" $fetched "
83- fi
84- else
85- mpmrelease=" $parsedrelease "
86- fi
8750
88- # validate release is supported
89- if [[ " $mpmrelease " < " r2020b" ]]; then
90- echo " Release '${mpmrelease} ' is not supported. Use 'R2020b' or a later release." >&2
91- exit 1
92- fi
51+ eval " $UTILS "
52+ # shellcheck disable=SC1090
53+ source ~ /.matlab-circleci-orb/install-metadata.sh
54+ # RELEASE and RELEASE_STATUS are defined in install-metadata.sh
55+ # shellcheck disable=SC2153
56+ mpmrelease=$RELEASE
57+ # shellcheck disable=SC2153
58+ releasestatus=$RELEASE_STATUS
9359
9460# install system dependencies
9561if [[ " $os " = " Linux" ]]; then
9662 # install MATLAB dependencies
63+ # shellcheck disable=SC2154
9764 release=$( echo " ${mpmrelease} " | grep -ioE " (r[0-9]{4}[a-b])" )
9865 stream https://ssd.mathworks.com/supportfiles/ci/matlab-deps/v0/install.sh | sudoIfAvailable -s -- " $release "
9966 # install mpm depencencies
@@ -136,20 +103,25 @@ mkdir -p "$rootdir"
136103mkdir -p " $batchdir "
137104mkdir -p " $mpmdir "
138105
139- # install mpm
140- download " $mpmbaseurl /$mwarch /mpm" " $mpmdir /mpm$binext "
141- chmod +x " $mpmdir /mpm$binext "
142-
143106# install matlab-batch
144107download " $batchbaseurl /$mwarch /matlab-batch$binext " " $batchdir /matlab-batch$binext "
145108chmod +x " $batchdir /matlab-batch$binext "
146109
147- # install matlab
148- " $mpmdir /mpm$binext " install \
149- --release=" $mpmrelease " \
150- --destination=" $rootdir " \
151- ${releasestatus} \
152- --products ${PARAM_PRODUCTS} MATLAB
110+ # Short-circuit if MATLAB already exists and PARAM_CACHE is true
111+ if [[ " $PARAM_CACHE " == " 1" && -x " $rootdir /bin/matlab" ]]; then
112+ echo " Skipping installation because MATLAB already exists at $rootdir ."
113+ else
114+ # install mpm
115+ download " $mpmbaseurl /$mwarch /mpm" " $mpmdir /mpm$binext "
116+ chmod +x " $mpmdir /mpm$binext "
117+
118+ # install matlab
119+ " $mpmdir /mpm$binext " install \
120+ --release=" $mpmrelease " \
121+ --destination=" $rootdir " \
122+ ${releasestatus} \
123+ --products ${PARAM_PRODUCTS} MATLAB
124+ fi
153125
154126# add MATLAB and matlab-batch to path
155127echo ' export PATH="' $rootdir ' /bin:' $batchdir ' :$PATH"' >> $BASH_ENV
0 commit comments