xref: /aosp_15_r20/external/executorch/.ci/docker/build.sh (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1*523fa7a6SAndroid Build Coastguard Worker#!/bin/bash
2*523fa7a6SAndroid Build Coastguard Worker# Copyright (c) Meta Platforms, Inc. and affiliates.
3*523fa7a6SAndroid Build Coastguard Worker# All rights reserved.
4*523fa7a6SAndroid Build Coastguard Worker#
5*523fa7a6SAndroid Build Coastguard Worker# This source code is licensed under the BSD-style license found in the
6*523fa7a6SAndroid Build Coastguard Worker# LICENSE file in the root directory of this source tree.
7*523fa7a6SAndroid Build Coastguard Worker
8*523fa7a6SAndroid Build Coastguard Workerset -exu
9*523fa7a6SAndroid Build Coastguard Worker
10*523fa7a6SAndroid Build Coastguard WorkerIMAGE_NAME="$1"
11*523fa7a6SAndroid Build Coastguard Workershift
12*523fa7a6SAndroid Build Coastguard Worker
13*523fa7a6SAndroid Build Coastguard Workerecho "Building ${IMAGE_NAME} Docker image"
14*523fa7a6SAndroid Build Coastguard Worker
15*523fa7a6SAndroid Build Coastguard WorkerOS=ubuntu
16*523fa7a6SAndroid Build Coastguard WorkerOS_VERSION=22.04
17*523fa7a6SAndroid Build Coastguard WorkerCLANG_VERSION=""
18*523fa7a6SAndroid Build Coastguard WorkerGCC_VERSION=""
19*523fa7a6SAndroid Build Coastguard WorkerPYTHON_VERSION=3.10
20*523fa7a6SAndroid Build Coastguard WorkerMINICONDA_VERSION=23.10.0-1
21*523fa7a6SAndroid Build Coastguard WorkerBUCK2_VERSION=$(cat ci_commit_pins/buck2.txt)
22*523fa7a6SAndroid Build Coastguard Worker
23*523fa7a6SAndroid Build Coastguard Workercase "${IMAGE_NAME}" in
24*523fa7a6SAndroid Build Coastguard Worker  executorch-ubuntu-22.04-gcc9)
25*523fa7a6SAndroid Build Coastguard Worker    LINTRUNNER=""
26*523fa7a6SAndroid Build Coastguard Worker    GCC_VERSION=9
27*523fa7a6SAndroid Build Coastguard Worker    ;;
28*523fa7a6SAndroid Build Coastguard Worker  executorch-ubuntu-22.04-clang12)
29*523fa7a6SAndroid Build Coastguard Worker    LINTRUNNER=""
30*523fa7a6SAndroid Build Coastguard Worker    CLANG_VERSION=12
31*523fa7a6SAndroid Build Coastguard Worker    ;;
32*523fa7a6SAndroid Build Coastguard Worker  executorch-ubuntu-22.04-linter)
33*523fa7a6SAndroid Build Coastguard Worker    LINTRUNNER=yes
34*523fa7a6SAndroid Build Coastguard Worker    CLANG_VERSION=12
35*523fa7a6SAndroid Build Coastguard Worker    ;;
36*523fa7a6SAndroid Build Coastguard Worker  executorch-ubuntu-22.04-arm-sdk)
37*523fa7a6SAndroid Build Coastguard Worker    ARM_SDK=yes
38*523fa7a6SAndroid Build Coastguard Worker    CLANG_VERSION=12
39*523fa7a6SAndroid Build Coastguard Worker    ;;
40*523fa7a6SAndroid Build Coastguard Worker  executorch-ubuntu-22.04-qnn-sdk)
41*523fa7a6SAndroid Build Coastguard Worker    QNN_SDK=yes
42*523fa7a6SAndroid Build Coastguard Worker    CLANG_VERSION=12
43*523fa7a6SAndroid Build Coastguard Worker    ;;
44*523fa7a6SAndroid Build Coastguard Worker  executorch-ubuntu-22.04-clang12-android)
45*523fa7a6SAndroid Build Coastguard Worker    LINTRUNNER=""
46*523fa7a6SAndroid Build Coastguard Worker    CLANG_VERSION=12
47*523fa7a6SAndroid Build Coastguard Worker    # From https://developer.android.com/ndk/downloads
48*523fa7a6SAndroid Build Coastguard Worker    ANDROID_NDK_VERSION=r27b
49*523fa7a6SAndroid Build Coastguard Worker    ;;
50*523fa7a6SAndroid Build Coastguard Worker  *)
51*523fa7a6SAndroid Build Coastguard Worker    echo "Invalid image name ${IMAGE_NAME}"
52*523fa7a6SAndroid Build Coastguard Worker    exit 1
53*523fa7a6SAndroid Build Coastguard Workeresac
54*523fa7a6SAndroid Build Coastguard Worker
55*523fa7a6SAndroid Build Coastguard WorkerTORCH_VERSION=$(cat ci_commit_pins/pytorch.txt)
56*523fa7a6SAndroid Build Coastguard WorkerBUILD_DOCS=1
57*523fa7a6SAndroid Build Coastguard Worker
58*523fa7a6SAndroid Build Coastguard Worker# Copy requirements-lintrunner.txt from root to here
59*523fa7a6SAndroid Build Coastguard Workercp ../../requirements-lintrunner.txt ./
60*523fa7a6SAndroid Build Coastguard Worker
61*523fa7a6SAndroid Build Coastguard Worker# Copy arm setup script from root to here
62*523fa7a6SAndroid Build Coastguard Worker# TODO(huydhn): Figure out a way to rebuild the Docker image automatically
63*523fa7a6SAndroid Build Coastguard Worker# with a new image hash when the content here is updated
64*523fa7a6SAndroid Build Coastguard Workercp -r ../../examples/arm/ ./arm
65*523fa7a6SAndroid Build Coastguard Worker
66*523fa7a6SAndroid Build Coastguard Workerdocker build \
67*523fa7a6SAndroid Build Coastguard Worker  --no-cache \
68*523fa7a6SAndroid Build Coastguard Worker  --progress=plain \
69*523fa7a6SAndroid Build Coastguard Worker  --build-arg "OS_VERSION=${OS_VERSION}" \
70*523fa7a6SAndroid Build Coastguard Worker  --build-arg "CLANG_VERSION=${CLANG_VERSION}" \
71*523fa7a6SAndroid Build Coastguard Worker  --build-arg "GCC_VERSION=${GCC_VERSION}" \
72*523fa7a6SAndroid Build Coastguard Worker  --build-arg "PYTHON_VERSION=${PYTHON_VERSION}" \
73*523fa7a6SAndroid Build Coastguard Worker  --build-arg "MINICONDA_VERSION=${MINICONDA_VERSION}" \
74*523fa7a6SAndroid Build Coastguard Worker  --build-arg "TORCH_VERSION=${TORCH_VERSION}" \
75*523fa7a6SAndroid Build Coastguard Worker  --build-arg "BUCK2_VERSION=${BUCK2_VERSION}" \
76*523fa7a6SAndroid Build Coastguard Worker  --build-arg "LINTRUNNER=${LINTRUNNER:-}" \
77*523fa7a6SAndroid Build Coastguard Worker  --build-arg "BUILD_DOCS=${BUILD_DOCS}" \
78*523fa7a6SAndroid Build Coastguard Worker  --build-arg "ARM_SDK=${ARM_SDK:-}" \
79*523fa7a6SAndroid Build Coastguard Worker  --build-arg "QNN_SDK=${QNN_SDK:-}" \
80*523fa7a6SAndroid Build Coastguard Worker  --build-arg "ANDROID_NDK_VERSION=${ANDROID_NDK_VERSION:-}" \
81*523fa7a6SAndroid Build Coastguard Worker  -f "${OS}"/Dockerfile \
82*523fa7a6SAndroid Build Coastguard Worker  "$@" \
83*523fa7a6SAndroid Build Coastguard Worker  .
84