Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 96a3f9df authored by Patrice Arruda's avatar Patrice Arruda
Browse files

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
parent 0de50208
Loading
Loading
Loading
Loading
+29 −2
Original line number Diff line number Diff line
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
}