From 96a3f9df330eb600b647ba9898dfea9fe1a9da09 Mon Sep 17 00:00:00 2001 From: Patrice Arruda Date: Mon, 28 Sep 2020 21:52:15 +0000 Subject: [PATCH] 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 --- rbesetup.sh | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/rbesetup.sh b/rbesetup.sh index 724ad7dc5..0182bfd18 100644 --- a/rbesetup.sh +++ b/rbesetup.sh @@ -1,4 +1,31 @@ -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. @@ -28,7 +55,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 }