#!/bin/bash # # Copyright © 2022-2024 Arm Ltd and Contributors. All rights reserved. # # SPDX-License-Identifier: MIT # CMD=$( basename "$0" ) # Revision or tag that Arm NN has been tested with: DEFAULT_TENSORFLOW_REVISION=v2.15.0 # tag v2.15.0 Usage() { echo "Gets the revision or tag of TensorFlow that this version of Arm NN has been" echo "tested with." echo echo "Usage: $CMD Gets the default TensorFlow revision/tag ($DEFAULT_TENSORFLOW_REVISION)" echo "Usage: $CMD -s " echo "Usage: $CMD -p (Print current default revision/tag)" exit 0 } PrintDefaultTensorFlowSha() { echo $DEFAULT_TENSORFLOW_REVISION exit 0; } function AssertZeroExitCode { EXITCODE=$? if [ $EXITCODE -ne 0 ]; then echo "$1" echo "+++ Command exited with code $EXITCODE. Please fix the above errors and re-run" exit 1 fi } # Revision or tag to check out TENSORFLOW_REVISION=$DEFAULT_TENSORFLOW_REVISION # process the options given while getopts "s:ph" opt; do case "$opt" in s) TENSORFLOW_REVISION="$OPTARG";; p) PrintDefaultTensorFlowSha;; h) Usage;; esac done shift $((OPTIND - 1)) # # This script is designed to be called from anywhere # so it will resolve where to checkout out TensorFlow # relative to its own location in armnn/scripts # SRC="${BASH_SOURCE[0]}" # resolve $SRC until it is no longer a symlink while [ -h "$SRC" ]; do DIR="$( cd -P "$( dirname "$SRC" )" >/dev/null && pwd )" SRC="$(readlink "$SRC")" # if $SRC was a relative symlink, we need to resolve it # relative to the path where the symlink file originally was [[ $SRC != /* ]] && SRC="$DIR/$SRC" done DIR="$( cd -P "$( dirname "$SRC" )" >/dev/null && pwd )" pushd "${DIR}" > /dev/null cd ../.. || exit # Clone TensorFlow if we don't already have a directory if [ ! -d tensorflow ]; then echo "Cloning TensorFlow" git clone https://github.com/tensorflow/tensorflow.git AssertZeroExitCode "Cloning TensorFlow failed" fi pushd tensorflow > /dev/null # Checkout the TensorFlow revision echo "Checking out ${TENSORFLOW_REVISION}" git fetch && git checkout "${TENSORFLOW_REVISION}" AssertZeroExitCode "Fetching and checking out ${TENSORFLOW_REVISION} failed" # If the target tensorflow revision includes a branch we also need to do a pull. # This generally occurs with a release branch. if [[ "${TENSORFLOW_REVISION}" == *"branches"* ]]; then git pull AssertZeroExitCode "TensorFlow reference includes a branch but git pull failed." fi popd > /dev/null # out of tensorflow popd > /dev/null # back to wherever we were when called # Make sure the SHA of the revision that was checked out is the last line # of output from the script... just in case we ever need it. echo "$TENSORFLOW_REVISION" exit 0