STT-tensorflow/tensorflow/lite/tools/build_aar_with_docker.sh
Thai Nguyen 3f8baa47b1 Update correct bazel version in build_aar_with_docker.sh
PiperOrigin-RevId: 352709339
Change-Id: I746a7ae6fc2e94f711050edeea6f0055fdddc5f4
2021-01-19 20:20:41 -08:00

138 lines
3.9 KiB
Bash
Executable File

#!/bin/bash
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
function print_usage {
echo "Usage:"
echo " $(basename ${BASH_SOURCE}) \\"
echo " --input_models=model1.tflite,model2.tflite \\"
echo " --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a \\"
echo " --checkpoint=master \\"
echo " [--cache_dir=<path to cache directory>]"
echo ""
echo "Where: "
echo " --input_models: Supported TFLite models. "
echo " --target_archs: Supported arches included in the aar file."
echo " --checkpoint: Checkpoint of the github repo, could be a branch, a "
echo " commit or a tag. Default: lastest release branch."
echo " --cache_dir: Path to the directory to store bazel cache. If not "
echo " provided, a directory name bazel-build-cache will be created."
echo ""
exit 1
}
# Check command line flags.
ARGUMENTS=$@
BUILD_FLAGS=""
TARGET_ARCHS=x86,x86_64,arm64-v8a,armeabi-v7a
FLAG_CHECKPOINT="r2.4" # TODO(b/163918542) Set default to lastest release.
if [ "$#" -gt 4 ]; then
echo "ERROR: Too many arguments."
print_usage
fi
for i in "$@"
do
case $i in
--input_models=*)
FLAG_MODELS="${i#*=}"
BUILD_FLAGS="${BUILD_FLAGS} ${i}"
shift;;
--target_archs=*)
TARGET_ARCHS="${i#*=}"
BUILD_FLAGS="${BUILD_FLAGS} ${i}"
shift;;
--checkpoint=*)
FLAG_CHECKPOINT="${i#*=}"
shift;;
--cache_dir=*)
BAZEL_CACHE_DIR="${i#*=}"
shift;;
*)
echo "ERROR: Unrecognized argument: ${i}"
print_usage;;
esac
done
if [ ! -d /tensorflow_src ]; then
# Running on host.
for model in $(echo ${FLAG_MODELS} | sed "s/,/ /g")
do
FLAG_DIR="${FLAG_DIR} -v ${model}:${model}"
done
if [ -z ${BAZEL_CACHE_DIR} ]; then
mkdir -p "bazel-build-cache"
BAZEL_CACHE_DIR="$PWD/bazel-build-cache"
ARGUMENTS="${ARGUMENTS} --cache_dir=${BAZEL_CACHE_DIR}"
fi
FLAG_DIR="${FLAG_DIR} -v ${BAZEL_CACHE_DIR}:${BAZEL_CACHE_DIR}"
docker run --rm -it -v $PWD:/host_dir -v ${SCRIPT_DIR}:/script_dir ${FLAG_DIR} \
--entrypoint /script_dir/build_aar_with_docker.sh tflite-builder \
${ARGUMENTS}
exit 0
else
# Running inside docker container, download the SDK first.
android update sdk --no-ui -a \
--filter tools,platform-tools,android-${ANDROID_API_LEVEL},build-tools-${ANDROID_BUILD_TOOLS_VERSION}
cd /tensorflow_src
# Run configure.
configs=(
'/usr/bin/python3'
'/usr/lib/python3/dist-packages'
'N'
'N'
'N'
'N'
'-march=native -Wno-sign-compare'
'y'
'/android/sdk'
)
printf '%s\n' "${configs[@]}" | ./configure
# Pull the latest code from tensorflow.
git pull -a
git checkout ${FLAG_CHECKPOINT}
# Configure Bazel.
source tensorflow/tools/ci_build/release/common.sh
install_bazelisk
# Building with bazel.
export BAZEL_CACHE_DIR=${BAZEL_CACHE_DIR}
export OMIT_PRINTING_OUTPUT_PATHS=YES
bash /tensorflow_src/tensorflow/lite/tools/build_aar.sh ${BUILD_FLAGS}
# Copy the output files from docker container.
OUT_FILES="/tensorflow_src/bazel-bin/tmp/tensorflow-lite.aar"
OUT_FILES="${OUT_FILES} /tensorflow_src/bazel-bin/tmp/tensorflow-lite-select-tf-ops.aar"
echo "Output can be found here:"
for i in ${OUT_FILES}
do
if [ -f $i ]; then
cp $i /host_dir
basename $i
fi
done
fi