blob: 3b0e7cf7dc9a8c7c3f7faa70cdc31298b64ae437 [file] [log] [blame]
Patrice Arruda96a3f9d2020-09-28 21:52:15 +00001function _source_env_setup_script() {
2 local -r ENV_SETUP_SCRIPT="build/make/envsetup.sh"
3 local -r TOP_DIR=$(
4 while [[ ! -f "${ENV_SETUP_SCRIPT}" ]] && [[ "${PWD}" != "/" ]]; do
5 \cd ..
6 done
7 if [[ -f "${ENV_SETUP_SCRIPT}" ]]; then
8 echo "$(PWD= /bin/pwd -P)"
9 fi
10 )
11
12 local -r FULL_PATH_ENV_SETUP_SCRIPT="${TOP_DIR}/${ENV_SETUP_SCRIPT}"
13 if [[ ! -f "${FULL_PATH_ENV_SETUP_SCRIPT}" ]]; then
14 echo "ERROR: Unable to source ${ENV_SETUP_SCRIPT}"
15 return 1
16 fi
17
18 # Need to change directory to the repo root so vendor scripts can be sourced
19 # as well.
20 local -r CUR_DIR=$PWD
21 \cd "${TOP_DIR}"
22 source "${FULL_PATH_ENV_SETUP_SCRIPT}"
23 \cd "${CUR_DIR}"
24}
25
26# This function needs to run first as the remaining defining functions may be
Kousik Kumar9aa9e472021-07-12 13:55:13 -040027# using the envsetup.sh defined functions. Skip this part if this script is already
28# being invoked from envsetup.sh.
29if [[ "$1" != "--skip-envsetup" ]]; then
30 _source_env_setup_script || return
31fi
Kousik Kumar4faa2a52020-03-05 14:08:09 -080032
33# This function prefixes the given command with appropriate variables needed
34# for the build to be executed with RBE.
35function use_rbe() {
36 local RBE_LOG_DIR="/tmp"
Luca Stefanicf82af22020-06-13 22:38:56 +020037 local RBE_BINARIES_DIR="prebuilts/remoteexecution-client/latest"
Kousik Kumar4faa2a52020-03-05 14:08:09 -080038 local DOCKER_IMAGE="gcr.io/androidbuild-re-dockerimage/android-build-remoteexec-image@sha256:582efb38f0c229ea39952fff9e132ccbe183e14869b39888010dacf56b360d62"
39
40 # Do not set an invocation-ID and let reproxy auto-generate one.
41 USE_RBE="true" \
42 FLAG_server_address="unix:///tmp/reproxy_$RANDOM.sock" \
43 FLAG_exec_root="$(gettop)" \
44 FLAG_platform="container-image=docker://${DOCKER_IMAGE}" \
45 RBE_use_application_default_credentials="true" \
46 RBE_log_dir="${RBE_LOG_DIR}" \
47 RBE_reproxy_wait_seconds="20" \
48 RBE_output_dir="${RBE_LOG_DIR}" \
49 RBE_log_path="text://${RBE_LOG_DIR}/reproxy_log.txt" \
50 RBE_CXX_EXEC_STRATEGY="remote_local_fallback" \
51 RBE_cpp_dependency_scanner_plugin="${RBE_BINARIES_DIR}/dependency_scanner_go_plugin.so" \
52 RBE_DIR=${RBE_BINARIES_DIR} \
53 RBE_re_proxy="${RBE_BINARIES_DIR}/reproxy" \
54 $@
55}
Patrice Arrudad990f702020-07-10 23:22:49 +000056
57# This function detects if the uploader is available and sets the path of it to
58# ANDROID_ENABLE_METRICS_UPLOAD.
59function _export_metrics_uploader() {
60 local uploader_path="$(gettop)/vendor/google/misc/metrics_uploader_prebuilt/metrics_uploader.sh"
Patrice Arruda96a3f9d2020-09-28 21:52:15 +000061 if [[ -x "${uploader_path}" ]]; then
Patrice Arrudad990f702020-07-10 23:22:49 +000062 export ANDROID_ENABLE_METRICS_UPLOAD="${uploader_path}"
63 fi
64}
65
Ramy Medhat3491bbd2020-08-13 14:41:32 -040066# This function sets RBE specific environment variables needed for the build to
67# executed by RBE. This file should be sourced once per checkout of Android code.
68function _set_rbe_vars() {
Ramy Medhatfe66d392020-08-26 05:47:33 -040069 unset USE_GOMA
Ramy Medhat3491bbd2020-08-13 14:41:32 -040070 export USE_RBE="true"
Kousik Kumarf16d7982020-11-25 12:14:16 -050071 export RBE_CXX_EXEC_STRATEGY="racing"
72 export RBE_JAVAC_EXEC_STRATEGY="racing"
73 export RBE_R8_EXEC_STRATEGY="racing"
74 export RBE_D8_EXEC_STRATEGY="racing"
Kousik Kumaraa790072020-11-24 10:55:47 -050075 export RBE_use_unified_cas_ops="true"
Ramy Medhat3491bbd2020-08-13 14:41:32 -040076 export RBE_JAVAC=1
77 export RBE_R8=1
78 export RBE_D8=1
79}
80
Patrice Arrudad990f702020-07-10 23:22:49 +000081_export_metrics_uploader
Ramy Medhat3491bbd2020-08-13 14:41:32 -040082_set_rbe_vars