diff options
author | Patrice Arruda <patricearruda@google.com> | 2020-09-28 21:52:15 +0000 |
---|---|---|
committer | Kousik Kumar <kousikk@google.com> | 2021-01-06 09:58:02 -0500 |
commit | ba9a28bee20206be1a679c3d049883ff1ff16741 (patch) | |
tree | 79d2bff0a04dddb09cc2025b39c86759449b094d | |
parent | e1b0fa94d3bbbb0b4e384ba384856239dab91cd7 (diff) | |
download | build-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.sh | 32 |
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 } |