xref: /aosp_15_r20/build/make/rbesetup.sh (revision 9e94795a3d4ef5c1d47486f9a02bb378756cea8a)
1*9e94795aSAndroid Build Coastguard Workerfunction _source_env_setup_script() {
2*9e94795aSAndroid Build Coastguard Worker  local -r ENV_SETUP_SCRIPT="build/make/envsetup.sh"
3*9e94795aSAndroid Build Coastguard Worker  local -r TOP_DIR=$(
4*9e94795aSAndroid Build Coastguard Worker    while [[ ! -f "${ENV_SETUP_SCRIPT}" ]] && [[ "${PWD}" != "/" ]]; do
5*9e94795aSAndroid Build Coastguard Worker      \cd ..
6*9e94795aSAndroid Build Coastguard Worker    done
7*9e94795aSAndroid Build Coastguard Worker    if [[ -f "${ENV_SETUP_SCRIPT}" ]]; then
8*9e94795aSAndroid Build Coastguard Worker      echo "$(PWD= /bin/pwd -P)"
9*9e94795aSAndroid Build Coastguard Worker    fi
10*9e94795aSAndroid Build Coastguard Worker  )
11*9e94795aSAndroid Build Coastguard Worker
12*9e94795aSAndroid Build Coastguard Worker  local -r FULL_PATH_ENV_SETUP_SCRIPT="${TOP_DIR}/${ENV_SETUP_SCRIPT}"
13*9e94795aSAndroid Build Coastguard Worker  if [[ ! -f "${FULL_PATH_ENV_SETUP_SCRIPT}" ]]; then
14*9e94795aSAndroid Build Coastguard Worker    echo "ERROR: Unable to source ${ENV_SETUP_SCRIPT}"
15*9e94795aSAndroid Build Coastguard Worker    return 1
16*9e94795aSAndroid Build Coastguard Worker  fi
17*9e94795aSAndroid Build Coastguard Worker
18*9e94795aSAndroid Build Coastguard Worker  # Need to change directory to the repo root so vendor scripts can be sourced
19*9e94795aSAndroid Build Coastguard Worker  # as well.
20*9e94795aSAndroid Build Coastguard Worker  local -r CUR_DIR=$PWD
21*9e94795aSAndroid Build Coastguard Worker  \cd "${TOP_DIR}"
22*9e94795aSAndroid Build Coastguard Worker  source "${FULL_PATH_ENV_SETUP_SCRIPT}"
23*9e94795aSAndroid Build Coastguard Worker  \cd "${CUR_DIR}"
24*9e94795aSAndroid Build Coastguard Worker}
25*9e94795aSAndroid Build Coastguard Worker
26*9e94795aSAndroid Build Coastguard Worker# This function needs to run first as the remaining defining functions may be
27*9e94795aSAndroid Build Coastguard Worker# using the envsetup.sh defined functions. Skip this part if this script is already
28*9e94795aSAndroid Build Coastguard Worker# being invoked from envsetup.sh.
29*9e94795aSAndroid Build Coastguard Workerif [[ "$1" != "--skip-envsetup" ]]; then
30*9e94795aSAndroid Build Coastguard Worker  _source_env_setup_script || return
31*9e94795aSAndroid Build Coastguard Workerfi
32*9e94795aSAndroid Build Coastguard Worker
33*9e94795aSAndroid Build Coastguard Worker# This function prefixes the given command with appropriate variables needed
34*9e94795aSAndroid Build Coastguard Worker# for the build to be executed with RBE.
35*9e94795aSAndroid Build Coastguard Workerfunction use_rbe() {
36*9e94795aSAndroid Build Coastguard Worker  local RBE_BINARIES_DIR="prebuilts/remoteexecution-client/latest"
37*9e94795aSAndroid Build Coastguard Worker  local DOCKER_IMAGE="gcr.io/androidbuild-re-dockerimage/android-build-remoteexec-image@sha256:1eb7f64b9e17102b970bd7a1af7daaebdb01c3fb777715899ef462d6c6d01a45"
38*9e94795aSAndroid Build Coastguard Worker
39*9e94795aSAndroid Build Coastguard Worker  # Do not set an invocation-ID and let reproxy auto-generate one.
40*9e94795aSAndroid Build Coastguard Worker  USE_RBE="true" \
41*9e94795aSAndroid Build Coastguard Worker  FLAG_exec_root="$(gettop)" \
42*9e94795aSAndroid Build Coastguard Worker  FLAG_platform="container-image=docker://${DOCKER_IMAGE}" \
43*9e94795aSAndroid Build Coastguard Worker  RBE_use_application_default_credentials="true" \
44*9e94795aSAndroid Build Coastguard Worker  RBE_reproxy_wait_seconds="20" \
45*9e94795aSAndroid Build Coastguard Worker  RBE_CXX_EXEC_STRATEGY="remote_local_fallback" \
46*9e94795aSAndroid Build Coastguard Worker  RBE_cpp_dependency_scanner_plugin="${RBE_BINARIES_DIR}/dependency_scanner_go_plugin.so" \
47*9e94795aSAndroid Build Coastguard Worker  RBE_DIR=${RBE_BINARIES_DIR} \
48*9e94795aSAndroid Build Coastguard Worker  RBE_re_proxy="${RBE_BINARIES_DIR}/reproxy" \
49*9e94795aSAndroid Build Coastguard Worker  $@
50*9e94795aSAndroid Build Coastguard Worker}
51*9e94795aSAndroid Build Coastguard Worker
52*9e94795aSAndroid Build Coastguard Worker# This function detects if the uploader is available and sets the path of it to
53*9e94795aSAndroid Build Coastguard Worker# ANDROID_ENABLE_METRICS_UPLOAD.
54*9e94795aSAndroid Build Coastguard Workerfunction _export_metrics_uploader() {
55*9e94795aSAndroid Build Coastguard Worker  local uploader_path="$(gettop)/vendor/google/misc/metrics_uploader_prebuilt/metrics_uploader.sh"
56*9e94795aSAndroid Build Coastguard Worker  if [[ -x "${uploader_path}" ]]; then
57*9e94795aSAndroid Build Coastguard Worker    export ANDROID_ENABLE_METRICS_UPLOAD="${uploader_path}"
58*9e94795aSAndroid Build Coastguard Worker  fi
59*9e94795aSAndroid Build Coastguard Worker}
60*9e94795aSAndroid Build Coastguard Worker
61*9e94795aSAndroid Build Coastguard Worker# This function sets RBE specific environment variables needed for the build to
62*9e94795aSAndroid Build Coastguard Worker# executed by RBE. This file should be sourced once per checkout of Android code.
63*9e94795aSAndroid Build Coastguard Workerfunction _set_rbe_vars() {
64*9e94795aSAndroid Build Coastguard Worker  unset USE_GOMA
65*9e94795aSAndroid Build Coastguard Worker  export USE_RBE="true"
66*9e94795aSAndroid Build Coastguard Worker  export RBE_CXX_EXEC_STRATEGY="racing"
67*9e94795aSAndroid Build Coastguard Worker  export RBE_JAVAC_EXEC_STRATEGY="racing"
68*9e94795aSAndroid Build Coastguard Worker  export RBE_R8_EXEC_STRATEGY="racing"
69*9e94795aSAndroid Build Coastguard Worker  export RBE_D8_EXEC_STRATEGY="racing"
70*9e94795aSAndroid Build Coastguard Worker  export RBE_use_unified_cas_ops="true"
71*9e94795aSAndroid Build Coastguard Worker  export RBE_JAVAC=1
72*9e94795aSAndroid Build Coastguard Worker  export RBE_R8=1
73*9e94795aSAndroid Build Coastguard Worker  export RBE_D8=1
74*9e94795aSAndroid Build Coastguard Worker}
75*9e94795aSAndroid Build Coastguard Worker
76*9e94795aSAndroid Build Coastguard Worker_export_metrics_uploader
77*9e94795aSAndroid Build Coastguard Worker_set_rbe_vars
78