aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrice Arruda <patricearruda@google.com>2020-09-28 21:52:15 +0000
committerKousik Kumar <kousikk@google.com>2021-01-06 09:58:02 -0500
commitba9a28bee20206be1a679c3d049883ff1ff16741 (patch)
tree79d2bff0a04dddb09cc2025b39c86759449b094d
parente1b0fa94d3bbbb0b4e384ba384856239dab91cd7 (diff)
downloadbuild-ba9a28bee20206be1a679c3d049883ff1ff16741.tar.gz
Source rbesetup.sh from any location inside of a repo directory.
The current rbesetup.sh has to be source from the root directory of the checked out repo since it has a relative path to the sourced build/envsetup.sh script. A function was written in rbesetup.sh script to source the rbesetup.sh script anywhere inside of a checked out repo. Added additional error checking to validate the envsetup.sh is available and not to continue sourcing the script if envsetup.sh script is not found. Fixes: b/169438960 Test: Sourced the rbesetup script from * external directory * inside of a symlink * outside of repo (sourcing fails which is correct) * root repo Change-Id: I2db66a444074adca4d4ab87b8786e9044a3646f8 Merged-In: I2db66a444074adca4d4ab87b8786e9044a3646f8
-rw-r--r--rbesetup.sh32
1 files changed, 30 insertions, 2 deletions
diff --git a/rbesetup.sh b/rbesetup.sh
index 5781f05e4c..a8cb8ed35c 100644
--- a/rbesetup.sh
+++ b/rbesetup.sh
@@ -1,4 +1,32 @@
-source build/envsetup.sh
+function _source_env_setup_script() {
+ local -r ENV_SETUP_SCRIPT="build/make/envsetup.sh"
+ local -r TOP_DIR=$(
+ while [[ ! -f "${ENV_SETUP_SCRIPT}" ]] && [[ "${PWD}" != "/" ]]; do
+ \cd ..
+ done
+ if [[ -f "${ENV_SETUP_SCRIPT}" ]]; then
+ echo "$(PWD= /bin/pwd -P)"
+ fi
+ )
+
+ local -r FULL_PATH_ENV_SETUP_SCRIPT="${TOP_DIR}/${ENV_SETUP_SCRIPT}"
+ if [[ ! -f "${FULL_PATH_ENV_SETUP_SCRIPT}" ]]; then
+ echo "ERROR: Unable to source ${ENV_SETUP_SCRIPT}"
+ return 1
+ fi
+
+ # Need to change directory to the repo root so vendor scripts can be sourced
+ # as well.
+ local -r CUR_DIR=$PWD
+ \cd "${TOP_DIR}"
+ source "${FULL_PATH_ENV_SETUP_SCRIPT}"
+ \cd "${CUR_DIR}"
+}
+
+# This function needs to run first as the remaining defining functions may be
+# using the envsetup.sh defined functions.
+_source_env_setup_script || return
+
# This function prefixes the given command with appropriate variables needed
# for the build to be executed with RBE.
function use_rbe() {
@@ -25,7 +53,7 @@ function use_rbe() {
# ANDROID_ENABLE_METRICS_UPLOAD.
function _export_metrics_uploader() {
local uploader_path="$(gettop)/vendor/google/misc/metrics_uploader_prebuilt/metrics_uploader.sh"
- if [ -x "${uploader_path}" ]; then
+ if [[ -x "${uploader_path}" ]]; then
export ANDROID_ENABLE_METRICS_UPLOAD="${uploader_path}"
fi
}