xref: /aosp_15_r20/external/pytorch/.ci/docker/build.sh (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1*da0073e9SAndroid Build Coastguard Worker#!/bin/bash
2*da0073e9SAndroid Build Coastguard Worker
3*da0073e9SAndroid Build Coastguard Workerset -ex
4*da0073e9SAndroid Build Coastguard Worker
5*da0073e9SAndroid Build Coastguard Workerimage="$1"
6*da0073e9SAndroid Build Coastguard Workershift
7*da0073e9SAndroid Build Coastguard Worker
8*da0073e9SAndroid Build Coastguard Workerif [ -z "${image}" ]; then
9*da0073e9SAndroid Build Coastguard Worker  echo "Usage: $0 IMAGE"
10*da0073e9SAndroid Build Coastguard Worker  exit 1
11*da0073e9SAndroid Build Coastguard Workerfi
12*da0073e9SAndroid Build Coastguard Worker
13*da0073e9SAndroid Build Coastguard Workerfunction extract_version_from_image_name() {
14*da0073e9SAndroid Build Coastguard Worker  eval export $2=$(echo "${image}" | perl -n -e"/$1(\d+(\.\d+)?(\.\d+)?)/ && print \$1")
15*da0073e9SAndroid Build Coastguard Worker  if [ "x${!2}" = x ]; then
16*da0073e9SAndroid Build Coastguard Worker    echo "variable '$2' not correctly parsed from image='$image'"
17*da0073e9SAndroid Build Coastguard Worker    exit 1
18*da0073e9SAndroid Build Coastguard Worker  fi
19*da0073e9SAndroid Build Coastguard Worker}
20*da0073e9SAndroid Build Coastguard Worker
21*da0073e9SAndroid Build Coastguard Workerfunction extract_all_from_image_name() {
22*da0073e9SAndroid Build Coastguard Worker  # parts $image into array, splitting on '-'
23*da0073e9SAndroid Build Coastguard Worker  keep_IFS="$IFS"
24*da0073e9SAndroid Build Coastguard Worker  IFS="-"
25*da0073e9SAndroid Build Coastguard Worker  declare -a parts=($image)
26*da0073e9SAndroid Build Coastguard Worker  IFS="$keep_IFS"
27*da0073e9SAndroid Build Coastguard Worker  unset keep_IFS
28*da0073e9SAndroid Build Coastguard Worker
29*da0073e9SAndroid Build Coastguard Worker  for part in "${parts[@]}"; do
30*da0073e9SAndroid Build Coastguard Worker    name=$(echo "${part}" | perl -n -e"/([a-zA-Z]+)\d+(\.\d+)?(\.\d+)?/ && print \$1")
31*da0073e9SAndroid Build Coastguard Worker    vername="${name^^}_VERSION"
32*da0073e9SAndroid Build Coastguard Worker    # "py" is the odd one out, needs this special case
33*da0073e9SAndroid Build Coastguard Worker    if [ "x${name}" = xpy ]; then
34*da0073e9SAndroid Build Coastguard Worker      vername=ANACONDA_PYTHON_VERSION
35*da0073e9SAndroid Build Coastguard Worker    fi
36*da0073e9SAndroid Build Coastguard Worker    # skip non-conforming fields such as "pytorch", "linux" or "bionic" without version string
37*da0073e9SAndroid Build Coastguard Worker    if [ -n "${name}" ]; then
38*da0073e9SAndroid Build Coastguard Worker      extract_version_from_image_name "${name}" "${vername}"
39*da0073e9SAndroid Build Coastguard Worker    fi
40*da0073e9SAndroid Build Coastguard Worker  done
41*da0073e9SAndroid Build Coastguard Worker}
42*da0073e9SAndroid Build Coastguard Worker
43*da0073e9SAndroid Build Coastguard Worker# Use the same pre-built XLA test image from PyTorch/XLA
44*da0073e9SAndroid Build Coastguard Workerif [[ "$image" == *xla* ]]; then
45*da0073e9SAndroid Build Coastguard Worker  echo "Using pre-built XLA test image..."
46*da0073e9SAndroid Build Coastguard Worker  exit 0
47*da0073e9SAndroid Build Coastguard Workerfi
48*da0073e9SAndroid Build Coastguard Worker
49*da0073e9SAndroid Build Coastguard Workerif [[ "$image" == *-focal* ]]; then
50*da0073e9SAndroid Build Coastguard Worker  UBUNTU_VERSION=20.04
51*da0073e9SAndroid Build Coastguard Workerelif [[ "$image" == *-jammy* ]]; then
52*da0073e9SAndroid Build Coastguard Worker  UBUNTU_VERSION=22.04
53*da0073e9SAndroid Build Coastguard Workerelif [[ "$image" == *ubuntu* ]]; then
54*da0073e9SAndroid Build Coastguard Worker  extract_version_from_image_name ubuntu UBUNTU_VERSION
55*da0073e9SAndroid Build Coastguard Workerelif [[ "$image" == *centos* ]]; then
56*da0073e9SAndroid Build Coastguard Worker  extract_version_from_image_name centos CENTOS_VERSION
57*da0073e9SAndroid Build Coastguard Workerfi
58*da0073e9SAndroid Build Coastguard Worker
59*da0073e9SAndroid Build Coastguard Workerif [ -n "${UBUNTU_VERSION}" ]; then
60*da0073e9SAndroid Build Coastguard Worker  OS="ubuntu"
61*da0073e9SAndroid Build Coastguard Workerelif [ -n "${CENTOS_VERSION}" ]; then
62*da0073e9SAndroid Build Coastguard Worker  OS="centos"
63*da0073e9SAndroid Build Coastguard Workerelse
64*da0073e9SAndroid Build Coastguard Worker  echo "Unable to derive operating system base..."
65*da0073e9SAndroid Build Coastguard Worker  exit 1
66*da0073e9SAndroid Build Coastguard Workerfi
67*da0073e9SAndroid Build Coastguard Worker
68*da0073e9SAndroid Build Coastguard WorkerDOCKERFILE="${OS}/Dockerfile"
69*da0073e9SAndroid Build Coastguard Worker# When using ubuntu - 22.04, start from Ubuntu docker image, instead of nvidia/cuda docker image.
70*da0073e9SAndroid Build Coastguard Workerif [[ "$image" == *cuda* && "$UBUNTU_VERSION" != "22.04" ]]; then
71*da0073e9SAndroid Build Coastguard Worker  DOCKERFILE="${OS}-cuda/Dockerfile"
72*da0073e9SAndroid Build Coastguard Workerelif [[ "$image" == *rocm* ]]; then
73*da0073e9SAndroid Build Coastguard Worker  DOCKERFILE="${OS}-rocm/Dockerfile"
74*da0073e9SAndroid Build Coastguard Workerelif [[ "$image" == *xpu* ]]; then
75*da0073e9SAndroid Build Coastguard Worker  DOCKERFILE="${OS}-xpu/Dockerfile"
76*da0073e9SAndroid Build Coastguard Workerelif [[ "$image" == *cuda*linter* ]]; then
77*da0073e9SAndroid Build Coastguard Worker  # Use a separate Dockerfile for linter to keep a small image size
78*da0073e9SAndroid Build Coastguard Worker  DOCKERFILE="linter-cuda/Dockerfile"
79*da0073e9SAndroid Build Coastguard Workerelif [[ "$image" == *linter* ]]; then
80*da0073e9SAndroid Build Coastguard Worker  # Use a separate Dockerfile for linter to keep a small image size
81*da0073e9SAndroid Build Coastguard Worker  DOCKERFILE="linter/Dockerfile"
82*da0073e9SAndroid Build Coastguard Workerfi
83*da0073e9SAndroid Build Coastguard Worker
84*da0073e9SAndroid Build Coastguard Worker# CMake 3.18 is needed to support CUDA17 language variant
85*da0073e9SAndroid Build Coastguard WorkerCMAKE_VERSION=3.18.5
86*da0073e9SAndroid Build Coastguard Worker
87*da0073e9SAndroid Build Coastguard Worker_UCX_COMMIT=7bb2722ff2187a0cad557ae4a6afa090569f83fb
88*da0073e9SAndroid Build Coastguard Worker_UCC_COMMIT=20eae37090a4ce1b32bcce6144ccad0b49943e0b
89*da0073e9SAndroid Build Coastguard Worker
90*da0073e9SAndroid Build Coastguard Worker# It's annoying to rename jobs every time you want to rewrite a
91*da0073e9SAndroid Build Coastguard Worker# configuration, so we hardcode everything here rather than do it
92*da0073e9SAndroid Build Coastguard Worker# from scratch
93*da0073e9SAndroid Build Coastguard Workercase "$image" in
94*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-cuda12.4-cudnn9-py3-gcc9)
95*da0073e9SAndroid Build Coastguard Worker    CUDA_VERSION=12.4.1
96*da0073e9SAndroid Build Coastguard Worker    CUDNN_VERSION=9
97*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.10
98*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=9
99*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
100*da0073e9SAndroid Build Coastguard Worker    DB=yes
101*da0073e9SAndroid Build Coastguard Worker    VISION=yes
102*da0073e9SAndroid Build Coastguard Worker    KATEX=yes
103*da0073e9SAndroid Build Coastguard Worker    UCX_COMMIT=${_UCX_COMMIT}
104*da0073e9SAndroid Build Coastguard Worker    UCC_COMMIT=${_UCC_COMMIT}
105*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
106*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
107*da0073e9SAndroid Build Coastguard Worker    ;;
108*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-cuda12.1-cudnn9-py3-gcc9)
109*da0073e9SAndroid Build Coastguard Worker    CUDA_VERSION=12.1.1
110*da0073e9SAndroid Build Coastguard Worker    CUDNN_VERSION=9
111*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.10
112*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=9
113*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
114*da0073e9SAndroid Build Coastguard Worker    DB=yes
115*da0073e9SAndroid Build Coastguard Worker    VISION=yes
116*da0073e9SAndroid Build Coastguard Worker    KATEX=yes
117*da0073e9SAndroid Build Coastguard Worker    UCX_COMMIT=${_UCX_COMMIT}
118*da0073e9SAndroid Build Coastguard Worker    UCC_COMMIT=${_UCC_COMMIT}
119*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
120*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
121*da0073e9SAndroid Build Coastguard Worker    ;;
122*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-cuda12.4-cudnn9-py3-gcc9-inductor-benchmarks)
123*da0073e9SAndroid Build Coastguard Worker    CUDA_VERSION=12.4.1
124*da0073e9SAndroid Build Coastguard Worker    CUDNN_VERSION=9
125*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.10
126*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=9
127*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
128*da0073e9SAndroid Build Coastguard Worker    DB=yes
129*da0073e9SAndroid Build Coastguard Worker    VISION=yes
130*da0073e9SAndroid Build Coastguard Worker    KATEX=yes
131*da0073e9SAndroid Build Coastguard Worker    UCX_COMMIT=${_UCX_COMMIT}
132*da0073e9SAndroid Build Coastguard Worker    UCC_COMMIT=${_UCC_COMMIT}
133*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
134*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
135*da0073e9SAndroid Build Coastguard Worker    INDUCTOR_BENCHMARKS=yes
136*da0073e9SAndroid Build Coastguard Worker    ;;
137*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-cuda12.1-cudnn9-py3-gcc9-inductor-benchmarks)
138*da0073e9SAndroid Build Coastguard Worker    CUDA_VERSION=12.1.1
139*da0073e9SAndroid Build Coastguard Worker    CUDNN_VERSION=9
140*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.10
141*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=9
142*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
143*da0073e9SAndroid Build Coastguard Worker    DB=yes
144*da0073e9SAndroid Build Coastguard Worker    VISION=yes
145*da0073e9SAndroid Build Coastguard Worker    KATEX=yes
146*da0073e9SAndroid Build Coastguard Worker    UCX_COMMIT=${_UCX_COMMIT}
147*da0073e9SAndroid Build Coastguard Worker    UCC_COMMIT=${_UCC_COMMIT}
148*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
149*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
150*da0073e9SAndroid Build Coastguard Worker    INDUCTOR_BENCHMARKS=yes
151*da0073e9SAndroid Build Coastguard Worker    ;;
152*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-cuda12.1-cudnn9-py3.12-gcc9-inductor-benchmarks)
153*da0073e9SAndroid Build Coastguard Worker    CUDA_VERSION=12.1.1
154*da0073e9SAndroid Build Coastguard Worker    CUDNN_VERSION=9
155*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.12
156*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=9
157*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
158*da0073e9SAndroid Build Coastguard Worker    DB=yes
159*da0073e9SAndroid Build Coastguard Worker    VISION=yes
160*da0073e9SAndroid Build Coastguard Worker    KATEX=yes
161*da0073e9SAndroid Build Coastguard Worker    UCX_COMMIT=${_UCX_COMMIT}
162*da0073e9SAndroid Build Coastguard Worker    UCC_COMMIT=${_UCC_COMMIT}
163*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
164*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
165*da0073e9SAndroid Build Coastguard Worker    INDUCTOR_BENCHMARKS=yes
166*da0073e9SAndroid Build Coastguard Worker    ;;
167*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-cuda12.4-cudnn9-py3.12-gcc9-inductor-benchmarks)
168*da0073e9SAndroid Build Coastguard Worker    CUDA_VERSION=12.4.1
169*da0073e9SAndroid Build Coastguard Worker    CUDNN_VERSION=9
170*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.12
171*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=9
172*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
173*da0073e9SAndroid Build Coastguard Worker    DB=yes
174*da0073e9SAndroid Build Coastguard Worker    VISION=yes
175*da0073e9SAndroid Build Coastguard Worker    KATEX=yes
176*da0073e9SAndroid Build Coastguard Worker    UCX_COMMIT=${_UCX_COMMIT}
177*da0073e9SAndroid Build Coastguard Worker    UCC_COMMIT=${_UCC_COMMIT}
178*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
179*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
180*da0073e9SAndroid Build Coastguard Worker    INDUCTOR_BENCHMARKS=yes
181*da0073e9SAndroid Build Coastguard Worker    ;;
182*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-cuda11.8-cudnn9-py3-gcc9)
183*da0073e9SAndroid Build Coastguard Worker    CUDA_VERSION=11.8.0
184*da0073e9SAndroid Build Coastguard Worker    CUDNN_VERSION=9
185*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.10
186*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=9
187*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
188*da0073e9SAndroid Build Coastguard Worker    DB=yes
189*da0073e9SAndroid Build Coastguard Worker    VISION=yes
190*da0073e9SAndroid Build Coastguard Worker    KATEX=yes
191*da0073e9SAndroid Build Coastguard Worker    UCX_COMMIT=${_UCX_COMMIT}
192*da0073e9SAndroid Build Coastguard Worker    UCC_COMMIT=${_UCC_COMMIT}
193*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
194*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
195*da0073e9SAndroid Build Coastguard Worker    ;;
196*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-cuda12.4-cudnn9-py3-gcc9)
197*da0073e9SAndroid Build Coastguard Worker    CUDA_VERSION=12.4.1
198*da0073e9SAndroid Build Coastguard Worker    CUDNN_VERSION=9
199*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.10
200*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=9
201*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
202*da0073e9SAndroid Build Coastguard Worker    DB=yes
203*da0073e9SAndroid Build Coastguard Worker    VISION=yes
204*da0073e9SAndroid Build Coastguard Worker    KATEX=yes
205*da0073e9SAndroid Build Coastguard Worker    UCX_COMMIT=${_UCX_COMMIT}
206*da0073e9SAndroid Build Coastguard Worker    UCC_COMMIT=${_UCC_COMMIT}
207*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
208*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
209*da0073e9SAndroid Build Coastguard Worker    ;;
210*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-cuda12.1-cudnn9-py3-gcc9)
211*da0073e9SAndroid Build Coastguard Worker    CUDA_VERSION=12.1.1
212*da0073e9SAndroid Build Coastguard Worker    CUDNN_VERSION=9
213*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.10
214*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=9
215*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
216*da0073e9SAndroid Build Coastguard Worker    DB=yes
217*da0073e9SAndroid Build Coastguard Worker    VISION=yes
218*da0073e9SAndroid Build Coastguard Worker    KATEX=yes
219*da0073e9SAndroid Build Coastguard Worker    UCX_COMMIT=${_UCX_COMMIT}
220*da0073e9SAndroid Build Coastguard Worker    UCC_COMMIT=${_UCC_COMMIT}
221*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
222*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
223*da0073e9SAndroid Build Coastguard Worker    ;;
224*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-cuda12.4-cudnn9-py3-gcc9)
225*da0073e9SAndroid Build Coastguard Worker    CUDA_VERSION=12.4.1
226*da0073e9SAndroid Build Coastguard Worker    CUDNN_VERSION=9
227*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.10
228*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=9
229*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
230*da0073e9SAndroid Build Coastguard Worker    DB=yes
231*da0073e9SAndroid Build Coastguard Worker    VISION=yes
232*da0073e9SAndroid Build Coastguard Worker    KATEX=yes
233*da0073e9SAndroid Build Coastguard Worker    UCX_COMMIT=${_UCX_COMMIT}
234*da0073e9SAndroid Build Coastguard Worker    UCC_COMMIT=${_UCC_COMMIT}
235*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
236*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
237*da0073e9SAndroid Build Coastguard Worker    ;;
238*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-py3-clang10-onnx)
239*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.9
240*da0073e9SAndroid Build Coastguard Worker    CLANG_VERSION=10
241*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
242*da0073e9SAndroid Build Coastguard Worker    DB=yes
243*da0073e9SAndroid Build Coastguard Worker    VISION=yes
244*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
245*da0073e9SAndroid Build Coastguard Worker    ONNX=yes
246*da0073e9SAndroid Build Coastguard Worker    ;;
247*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-py3-clang9-android-ndk-r21e)
248*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.9
249*da0073e9SAndroid Build Coastguard Worker    CLANG_VERSION=9
250*da0073e9SAndroid Build Coastguard Worker    LLVMDEV=yes
251*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
252*da0073e9SAndroid Build Coastguard Worker    ANDROID=yes
253*da0073e9SAndroid Build Coastguard Worker    ANDROID_NDK_VERSION=r21e
254*da0073e9SAndroid Build Coastguard Worker    GRADLE_VERSION=6.8.3
255*da0073e9SAndroid Build Coastguard Worker    NINJA_VERSION=1.9.0
256*da0073e9SAndroid Build Coastguard Worker    ;;
257*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-py3.9-clang10)
258*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.9
259*da0073e9SAndroid Build Coastguard Worker    CLANG_VERSION=10
260*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
261*da0073e9SAndroid Build Coastguard Worker    DB=yes
262*da0073e9SAndroid Build Coastguard Worker    VISION=yes
263*da0073e9SAndroid Build Coastguard Worker    VULKAN_SDK_VERSION=1.2.162.1
264*da0073e9SAndroid Build Coastguard Worker    SWIFTSHADER=yes
265*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
266*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
267*da0073e9SAndroid Build Coastguard Worker    ;;
268*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-py3.11-clang10)
269*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.11
270*da0073e9SAndroid Build Coastguard Worker    CLANG_VERSION=10
271*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
272*da0073e9SAndroid Build Coastguard Worker    DB=yes
273*da0073e9SAndroid Build Coastguard Worker    VISION=yes
274*da0073e9SAndroid Build Coastguard Worker    VULKAN_SDK_VERSION=1.2.162.1
275*da0073e9SAndroid Build Coastguard Worker    SWIFTSHADER=yes
276*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
277*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
278*da0073e9SAndroid Build Coastguard Worker    ;;
279*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-py3.9-gcc9)
280*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.9
281*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=9
282*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
283*da0073e9SAndroid Build Coastguard Worker    DB=yes
284*da0073e9SAndroid Build Coastguard Worker    VISION=yes
285*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
286*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
287*da0073e9SAndroid Build Coastguard Worker    ;;
288*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-rocm-n-1-py3)
289*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.10
290*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=9
291*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
292*da0073e9SAndroid Build Coastguard Worker    DB=yes
293*da0073e9SAndroid Build Coastguard Worker    VISION=yes
294*da0073e9SAndroid Build Coastguard Worker    ROCM_VERSION=6.1
295*da0073e9SAndroid Build Coastguard Worker    NINJA_VERSION=1.9.0
296*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
297*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
298*da0073e9SAndroid Build Coastguard Worker    ;;
299*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-rocm-n-py3)
300*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.10
301*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=9
302*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
303*da0073e9SAndroid Build Coastguard Worker    DB=yes
304*da0073e9SAndroid Build Coastguard Worker    VISION=yes
305*da0073e9SAndroid Build Coastguard Worker    ROCM_VERSION=6.2
306*da0073e9SAndroid Build Coastguard Worker    NINJA_VERSION=1.9.0
307*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
308*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
309*da0073e9SAndroid Build Coastguard Worker    ;;
310*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-jammy-xpu-2024.0-py3)
311*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.9
312*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=11
313*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
314*da0073e9SAndroid Build Coastguard Worker    DB=yes
315*da0073e9SAndroid Build Coastguard Worker    VISION=yes
316*da0073e9SAndroid Build Coastguard Worker    XPU_VERSION=0.5
317*da0073e9SAndroid Build Coastguard Worker    NINJA_VERSION=1.9.0
318*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
319*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
320*da0073e9SAndroid Build Coastguard Worker    ;;
321*da0073e9SAndroid Build Coastguard Worker    pytorch-linux-jammy-py3.9-gcc11-inductor-benchmarks)
322*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.9
323*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=11
324*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
325*da0073e9SAndroid Build Coastguard Worker    DB=yes
326*da0073e9SAndroid Build Coastguard Worker    VISION=yes
327*da0073e9SAndroid Build Coastguard Worker    KATEX=yes
328*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
329*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
330*da0073e9SAndroid Build Coastguard Worker    DOCS=yes
331*da0073e9SAndroid Build Coastguard Worker    INDUCTOR_BENCHMARKS=yes
332*da0073e9SAndroid Build Coastguard Worker    ;;
333*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-jammy-cuda11.8-cudnn9-py3.9-clang12)
334*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.9
335*da0073e9SAndroid Build Coastguard Worker    CUDA_VERSION=11.8
336*da0073e9SAndroid Build Coastguard Worker    CUDNN_VERSION=9
337*da0073e9SAndroid Build Coastguard Worker    CLANG_VERSION=12
338*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
339*da0073e9SAndroid Build Coastguard Worker    DB=yes
340*da0073e9SAndroid Build Coastguard Worker    VISION=yes
341*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
342*da0073e9SAndroid Build Coastguard Worker    ;;
343*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-jammy-py3-clang12-asan)
344*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.9
345*da0073e9SAndroid Build Coastguard Worker    CLANG_VERSION=12
346*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
347*da0073e9SAndroid Build Coastguard Worker    DB=yes
348*da0073e9SAndroid Build Coastguard Worker    VISION=yes
349*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
350*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
351*da0073e9SAndroid Build Coastguard Worker    ;;
352*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-jammy-py3-clang15-asan)
353*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.10
354*da0073e9SAndroid Build Coastguard Worker    CLANG_VERSION=15
355*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
356*da0073e9SAndroid Build Coastguard Worker    VISION=yes
357*da0073e9SAndroid Build Coastguard Worker    ;;
358*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-jammy-py3.9-gcc11)
359*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.9
360*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=11
361*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
362*da0073e9SAndroid Build Coastguard Worker    DB=yes
363*da0073e9SAndroid Build Coastguard Worker    VISION=yes
364*da0073e9SAndroid Build Coastguard Worker    KATEX=yes
365*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
366*da0073e9SAndroid Build Coastguard Worker    TRITON=yes
367*da0073e9SAndroid Build Coastguard Worker    DOCS=yes
368*da0073e9SAndroid Build Coastguard Worker    UNINSTALL_DILL=yes
369*da0073e9SAndroid Build Coastguard Worker    ;;
370*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-jammy-py3-clang12-executorch)
371*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.10
372*da0073e9SAndroid Build Coastguard Worker    CLANG_VERSION=12
373*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
374*da0073e9SAndroid Build Coastguard Worker    EXECUTORCH=yes
375*da0073e9SAndroid Build Coastguard Worker    ;;
376*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-jammy-py3.12-halide)
377*da0073e9SAndroid Build Coastguard Worker    CUDA_VERSION=12.4
378*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.12
379*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=11
380*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
381*da0073e9SAndroid Build Coastguard Worker    HALIDE=yes
382*da0073e9SAndroid Build Coastguard Worker    ;;
383*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-focal-linter)
384*da0073e9SAndroid Build Coastguard Worker    # TODO: Use 3.9 here because of this issue https://github.com/python/mypy/issues/13627.
385*da0073e9SAndroid Build Coastguard Worker    # We will need to update mypy version eventually, but that's for another day. The task
386*da0073e9SAndroid Build Coastguard Worker    # would be to upgrade mypy to 1.0.0 with Python 3.11
387*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.9
388*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
389*da0073e9SAndroid Build Coastguard Worker    ;;
390*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-jammy-cuda11.8-cudnn9-py3.9-linter)
391*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.9
392*da0073e9SAndroid Build Coastguard Worker    CUDA_VERSION=11.8
393*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
394*da0073e9SAndroid Build Coastguard Worker    ;;
395*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-jammy-aarch64-py3.10-gcc11)
396*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.10
397*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=11
398*da0073e9SAndroid Build Coastguard Worker    ACL=yes
399*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
400*da0073e9SAndroid Build Coastguard Worker    DB=yes
401*da0073e9SAndroid Build Coastguard Worker    VISION=yes
402*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
403*da0073e9SAndroid Build Coastguard Worker    # snadampal: skipping sccache due to the following issue
404*da0073e9SAndroid Build Coastguard Worker    # https://github.com/pytorch/pytorch/issues/121559
405*da0073e9SAndroid Build Coastguard Worker    SKIP_SCCACHE_INSTALL=yes
406*da0073e9SAndroid Build Coastguard Worker    # snadampal: skipping llvm src build install because the current version
407*da0073e9SAndroid Build Coastguard Worker    # from pytorch/llvm:9.0.1 is x86 specific
408*da0073e9SAndroid Build Coastguard Worker    SKIP_LLVM_SRC_BUILD_INSTALL=yes
409*da0073e9SAndroid Build Coastguard Worker    ;;
410*da0073e9SAndroid Build Coastguard Worker  pytorch-linux-jammy-aarch64-py3.10-gcc11-inductor-benchmarks)
411*da0073e9SAndroid Build Coastguard Worker    ANACONDA_PYTHON_VERSION=3.10
412*da0073e9SAndroid Build Coastguard Worker    GCC_VERSION=11
413*da0073e9SAndroid Build Coastguard Worker    ACL=yes
414*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
415*da0073e9SAndroid Build Coastguard Worker    DB=yes
416*da0073e9SAndroid Build Coastguard Worker    VISION=yes
417*da0073e9SAndroid Build Coastguard Worker    CONDA_CMAKE=yes
418*da0073e9SAndroid Build Coastguard Worker    # snadampal: skipping sccache due to the following issue
419*da0073e9SAndroid Build Coastguard Worker    # https://github.com/pytorch/pytorch/issues/121559
420*da0073e9SAndroid Build Coastguard Worker    SKIP_SCCACHE_INSTALL=yes
421*da0073e9SAndroid Build Coastguard Worker    # snadampal: skipping llvm src build install because the current version
422*da0073e9SAndroid Build Coastguard Worker    # from pytorch/llvm:9.0.1 is x86 specific
423*da0073e9SAndroid Build Coastguard Worker    SKIP_LLVM_SRC_BUILD_INSTALL=yes
424*da0073e9SAndroid Build Coastguard Worker    INDUCTOR_BENCHMARKS=yes
425*da0073e9SAndroid Build Coastguard Worker    ;;
426*da0073e9SAndroid Build Coastguard Worker  *)
427*da0073e9SAndroid Build Coastguard Worker    # Catch-all for builds that are not hardcoded.
428*da0073e9SAndroid Build Coastguard Worker    PROTOBUF=yes
429*da0073e9SAndroid Build Coastguard Worker    DB=yes
430*da0073e9SAndroid Build Coastguard Worker    VISION=yes
431*da0073e9SAndroid Build Coastguard Worker    echo "image '$image' did not match an existing build configuration"
432*da0073e9SAndroid Build Coastguard Worker    if [[ "$image" == *py* ]]; then
433*da0073e9SAndroid Build Coastguard Worker      extract_version_from_image_name py ANACONDA_PYTHON_VERSION
434*da0073e9SAndroid Build Coastguard Worker    fi
435*da0073e9SAndroid Build Coastguard Worker    if [[ "$image" == *cuda* ]]; then
436*da0073e9SAndroid Build Coastguard Worker      extract_version_from_image_name cuda CUDA_VERSION
437*da0073e9SAndroid Build Coastguard Worker      extract_version_from_image_name cudnn CUDNN_VERSION
438*da0073e9SAndroid Build Coastguard Worker    fi
439*da0073e9SAndroid Build Coastguard Worker    if [[ "$image" == *rocm* ]]; then
440*da0073e9SAndroid Build Coastguard Worker      extract_version_from_image_name rocm ROCM_VERSION
441*da0073e9SAndroid Build Coastguard Worker      NINJA_VERSION=1.9.0
442*da0073e9SAndroid Build Coastguard Worker      TRITON=yes
443*da0073e9SAndroid Build Coastguard Worker      # To ensure that any ROCm config will build using conda cmake
444*da0073e9SAndroid Build Coastguard Worker      # and thus have LAPACK/MKL enabled
445*da0073e9SAndroid Build Coastguard Worker      CONDA_CMAKE=yes
446*da0073e9SAndroid Build Coastguard Worker    fi
447*da0073e9SAndroid Build Coastguard Worker    if [[ "$image" == *centos7* ]]; then
448*da0073e9SAndroid Build Coastguard Worker      NINJA_VERSION=1.10.2
449*da0073e9SAndroid Build Coastguard Worker    fi
450*da0073e9SAndroid Build Coastguard Worker    if [[ "$image" == *gcc* ]]; then
451*da0073e9SAndroid Build Coastguard Worker      extract_version_from_image_name gcc GCC_VERSION
452*da0073e9SAndroid Build Coastguard Worker    fi
453*da0073e9SAndroid Build Coastguard Worker    if [[ "$image" == *clang* ]]; then
454*da0073e9SAndroid Build Coastguard Worker      extract_version_from_image_name clang CLANG_VERSION
455*da0073e9SAndroid Build Coastguard Worker    fi
456*da0073e9SAndroid Build Coastguard Worker    if [[ "$image" == *devtoolset* ]]; then
457*da0073e9SAndroid Build Coastguard Worker      extract_version_from_image_name devtoolset DEVTOOLSET_VERSION
458*da0073e9SAndroid Build Coastguard Worker    fi
459*da0073e9SAndroid Build Coastguard Worker    if [[ "$image" == *glibc* ]]; then
460*da0073e9SAndroid Build Coastguard Worker      extract_version_from_image_name glibc GLIBC_VERSION
461*da0073e9SAndroid Build Coastguard Worker    fi
462*da0073e9SAndroid Build Coastguard Worker    if [[ "$image" == *cmake* ]]; then
463*da0073e9SAndroid Build Coastguard Worker      extract_version_from_image_name cmake CMAKE_VERSION
464*da0073e9SAndroid Build Coastguard Worker    fi
465*da0073e9SAndroid Build Coastguard Worker  ;;
466*da0073e9SAndroid Build Coastguard Workeresac
467*da0073e9SAndroid Build Coastguard Worker
468*da0073e9SAndroid Build Coastguard Workertmp_tag=$(basename "$(mktemp -u)" | tr '[:upper:]' '[:lower:]')
469*da0073e9SAndroid Build Coastguard Worker
470*da0073e9SAndroid Build Coastguard Worker#when using cudnn version 8 install it separately from cuda
471*da0073e9SAndroid Build Coastguard Workerif [[ "$image" == *cuda*  && ${OS} == "ubuntu" ]]; then
472*da0073e9SAndroid Build Coastguard Worker  IMAGE_NAME="nvidia/cuda:${CUDA_VERSION}-cudnn${CUDNN_VERSION}-devel-ubuntu${UBUNTU_VERSION}"
473*da0073e9SAndroid Build Coastguard Worker  if [[ ${CUDNN_VERSION} == 9 ]]; then
474*da0073e9SAndroid Build Coastguard Worker    IMAGE_NAME="nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION}"
475*da0073e9SAndroid Build Coastguard Worker  fi
476*da0073e9SAndroid Build Coastguard Workerfi
477*da0073e9SAndroid Build Coastguard Worker
478*da0073e9SAndroid Build Coastguard Worker# Build image
479*da0073e9SAndroid Build Coastguard Workerdocker build \
480*da0073e9SAndroid Build Coastguard Worker       --no-cache \
481*da0073e9SAndroid Build Coastguard Worker       --progress=plain \
482*da0073e9SAndroid Build Coastguard Worker       --build-arg "BUILD_ENVIRONMENT=${image}" \
483*da0073e9SAndroid Build Coastguard Worker       --build-arg "PROTOBUF=${PROTOBUF:-}" \
484*da0073e9SAndroid Build Coastguard Worker       --build-arg "LLVMDEV=${LLVMDEV:-}" \
485*da0073e9SAndroid Build Coastguard Worker       --build-arg "DB=${DB:-}" \
486*da0073e9SAndroid Build Coastguard Worker       --build-arg "VISION=${VISION:-}" \
487*da0073e9SAndroid Build Coastguard Worker       --build-arg "UBUNTU_VERSION=${UBUNTU_VERSION}" \
488*da0073e9SAndroid Build Coastguard Worker       --build-arg "CENTOS_VERSION=${CENTOS_VERSION}" \
489*da0073e9SAndroid Build Coastguard Worker       --build-arg "DEVTOOLSET_VERSION=${DEVTOOLSET_VERSION}" \
490*da0073e9SAndroid Build Coastguard Worker       --build-arg "GLIBC_VERSION=${GLIBC_VERSION}" \
491*da0073e9SAndroid Build Coastguard Worker       --build-arg "CLANG_VERSION=${CLANG_VERSION}" \
492*da0073e9SAndroid Build Coastguard Worker       --build-arg "ANACONDA_PYTHON_VERSION=${ANACONDA_PYTHON_VERSION}" \
493*da0073e9SAndroid Build Coastguard Worker       --build-arg "GCC_VERSION=${GCC_VERSION}" \
494*da0073e9SAndroid Build Coastguard Worker       --build-arg "CUDA_VERSION=${CUDA_VERSION}" \
495*da0073e9SAndroid Build Coastguard Worker       --build-arg "CUDNN_VERSION=${CUDNN_VERSION}" \
496*da0073e9SAndroid Build Coastguard Worker       --build-arg "TENSORRT_VERSION=${TENSORRT_VERSION}" \
497*da0073e9SAndroid Build Coastguard Worker       --build-arg "ANDROID=${ANDROID}" \
498*da0073e9SAndroid Build Coastguard Worker       --build-arg "ANDROID_NDK=${ANDROID_NDK_VERSION}" \
499*da0073e9SAndroid Build Coastguard Worker       --build-arg "GRADLE_VERSION=${GRADLE_VERSION}" \
500*da0073e9SAndroid Build Coastguard Worker       --build-arg "VULKAN_SDK_VERSION=${VULKAN_SDK_VERSION}" \
501*da0073e9SAndroid Build Coastguard Worker       --build-arg "SWIFTSHADER=${SWIFTSHADER}" \
502*da0073e9SAndroid Build Coastguard Worker       --build-arg "CMAKE_VERSION=${CMAKE_VERSION:-}" \
503*da0073e9SAndroid Build Coastguard Worker       --build-arg "NINJA_VERSION=${NINJA_VERSION:-}" \
504*da0073e9SAndroid Build Coastguard Worker       --build-arg "KATEX=${KATEX:-}" \
505*da0073e9SAndroid Build Coastguard Worker       --build-arg "ROCM_VERSION=${ROCM_VERSION:-}" \
506*da0073e9SAndroid Build Coastguard Worker       --build-arg "PYTORCH_ROCM_ARCH=${PYTORCH_ROCM_ARCH:-gfx906;gfx90a}" \
507*da0073e9SAndroid Build Coastguard Worker       --build-arg "IMAGE_NAME=${IMAGE_NAME}" \
508*da0073e9SAndroid Build Coastguard Worker       --build-arg "UCX_COMMIT=${UCX_COMMIT}" \
509*da0073e9SAndroid Build Coastguard Worker       --build-arg "UCC_COMMIT=${UCC_COMMIT}" \
510*da0073e9SAndroid Build Coastguard Worker       --build-arg "CONDA_CMAKE=${CONDA_CMAKE}" \
511*da0073e9SAndroid Build Coastguard Worker       --build-arg "TRITON=${TRITON}" \
512*da0073e9SAndroid Build Coastguard Worker       --build-arg "ONNX=${ONNX}" \
513*da0073e9SAndroid Build Coastguard Worker       --build-arg "DOCS=${DOCS}" \
514*da0073e9SAndroid Build Coastguard Worker       --build-arg "INDUCTOR_BENCHMARKS=${INDUCTOR_BENCHMARKS}" \
515*da0073e9SAndroid Build Coastguard Worker       --build-arg "EXECUTORCH=${EXECUTORCH}" \
516*da0073e9SAndroid Build Coastguard Worker       --build-arg "HALIDE=${HALIDE}" \
517*da0073e9SAndroid Build Coastguard Worker       --build-arg "XPU_VERSION=${XPU_VERSION}" \
518*da0073e9SAndroid Build Coastguard Worker       --build-arg "ACL=${ACL:-}" \
519*da0073e9SAndroid Build Coastguard Worker       --build-arg "SKIP_SCCACHE_INSTALL=${SKIP_SCCACHE_INSTALL:-}" \
520*da0073e9SAndroid Build Coastguard Worker       --build-arg "SKIP_LLVM_SRC_BUILD_INSTALL=${SKIP_LLVM_SRC_BUILD_INSTALL:-}" \
521*da0073e9SAndroid Build Coastguard Worker       -f $(dirname ${DOCKERFILE})/Dockerfile \
522*da0073e9SAndroid Build Coastguard Worker       -t "$tmp_tag" \
523*da0073e9SAndroid Build Coastguard Worker       "$@" \
524*da0073e9SAndroid Build Coastguard Worker       .
525*da0073e9SAndroid Build Coastguard Worker
526*da0073e9SAndroid Build Coastguard Worker# NVIDIA dockers for RC releases use tag names like `11.0-cudnn9-devel-ubuntu18.04-rc`,
527*da0073e9SAndroid Build Coastguard Worker# for this case we will set UBUNTU_VERSION to `18.04-rc` so that the Dockerfile could
528*da0073e9SAndroid Build Coastguard Worker# find the correct image. As a result, here we have to replace the
529*da0073e9SAndroid Build Coastguard Worker#   "$UBUNTU_VERSION" == "18.04-rc"
530*da0073e9SAndroid Build Coastguard Worker# with
531*da0073e9SAndroid Build Coastguard Worker#   "$UBUNTU_VERSION" == "18.04"
532*da0073e9SAndroid Build Coastguard WorkerUBUNTU_VERSION=$(echo ${UBUNTU_VERSION} | sed 's/-rc$//')
533*da0073e9SAndroid Build Coastguard Worker
534*da0073e9SAndroid Build Coastguard Workerfunction drun() {
535*da0073e9SAndroid Build Coastguard Worker  docker run --rm "$tmp_tag" $*
536*da0073e9SAndroid Build Coastguard Worker}
537*da0073e9SAndroid Build Coastguard Worker
538*da0073e9SAndroid Build Coastguard Workerif [[ "$OS" == "ubuntu" ]]; then
539*da0073e9SAndroid Build Coastguard Worker
540*da0073e9SAndroid Build Coastguard Worker  if !(drun lsb_release -a 2>&1 | grep -qF Ubuntu); then
541*da0073e9SAndroid Build Coastguard Worker    echo "OS=ubuntu, but:"
542*da0073e9SAndroid Build Coastguard Worker    drun lsb_release -a
543*da0073e9SAndroid Build Coastguard Worker    exit 1
544*da0073e9SAndroid Build Coastguard Worker  fi
545*da0073e9SAndroid Build Coastguard Worker  if !(drun lsb_release -a 2>&1 | grep -qF "$UBUNTU_VERSION"); then
546*da0073e9SAndroid Build Coastguard Worker    echo "UBUNTU_VERSION=$UBUNTU_VERSION, but:"
547*da0073e9SAndroid Build Coastguard Worker    drun lsb_release -a
548*da0073e9SAndroid Build Coastguard Worker    exit 1
549*da0073e9SAndroid Build Coastguard Worker  fi
550*da0073e9SAndroid Build Coastguard Workerfi
551*da0073e9SAndroid Build Coastguard Worker
552*da0073e9SAndroid Build Coastguard Workerif [ -n "$ANACONDA_PYTHON_VERSION" ]; then
553*da0073e9SAndroid Build Coastguard Worker  if !(drun python --version 2>&1 | grep -qF "Python $ANACONDA_PYTHON_VERSION"); then
554*da0073e9SAndroid Build Coastguard Worker    echo "ANACONDA_PYTHON_VERSION=$ANACONDA_PYTHON_VERSION, but:"
555*da0073e9SAndroid Build Coastguard Worker    drun python --version
556*da0073e9SAndroid Build Coastguard Worker    exit 1
557*da0073e9SAndroid Build Coastguard Worker  fi
558*da0073e9SAndroid Build Coastguard Workerfi
559*da0073e9SAndroid Build Coastguard Worker
560*da0073e9SAndroid Build Coastguard Workerif [ -n "$GCC_VERSION" ]; then
561*da0073e9SAndroid Build Coastguard Worker  if !(drun gcc --version 2>&1 | grep -q " $GCC_VERSION\\W"); then
562*da0073e9SAndroid Build Coastguard Worker    echo "GCC_VERSION=$GCC_VERSION, but:"
563*da0073e9SAndroid Build Coastguard Worker    drun gcc --version
564*da0073e9SAndroid Build Coastguard Worker    exit 1
565*da0073e9SAndroid Build Coastguard Worker  fi
566*da0073e9SAndroid Build Coastguard Workerfi
567*da0073e9SAndroid Build Coastguard Worker
568*da0073e9SAndroid Build Coastguard Workerif [ -n "$CLANG_VERSION" ]; then
569*da0073e9SAndroid Build Coastguard Worker  if !(drun clang --version 2>&1 | grep -qF "clang version $CLANG_VERSION"); then
570*da0073e9SAndroid Build Coastguard Worker    echo "CLANG_VERSION=$CLANG_VERSION, but:"
571*da0073e9SAndroid Build Coastguard Worker    drun clang --version
572*da0073e9SAndroid Build Coastguard Worker    exit 1
573*da0073e9SAndroid Build Coastguard Worker  fi
574*da0073e9SAndroid Build Coastguard Workerfi
575*da0073e9SAndroid Build Coastguard Worker
576*da0073e9SAndroid Build Coastguard Workerif [ -n "$KATEX" ]; then
577*da0073e9SAndroid Build Coastguard Worker  if !(drun katex --version); then
578*da0073e9SAndroid Build Coastguard Worker    echo "KATEX=$KATEX, but:"
579*da0073e9SAndroid Build Coastguard Worker    drun katex --version
580*da0073e9SAndroid Build Coastguard Worker    exit 1
581*da0073e9SAndroid Build Coastguard Worker  fi
582*da0073e9SAndroid Build Coastguard Workerfi
583