diff options
| -rw-r--r-- | core/rbe.mk | 30 | ||||
| -rw-r--r-- | rbesetup.sh | 43 |
2 files changed, 61 insertions, 12 deletions
diff --git a/core/rbe.mk b/core/rbe.mk index 619a7913a7..e90500cbc1 100644 --- a/core/rbe.mk +++ b/core/rbe.mk @@ -19,39 +19,45 @@ ifneq ($(filter-out false,$(USE_RBE)),) ifdef RBE_DIR rbe_dir := $(RBE_DIR) else - rbe_dir := $(HOME)/rbe + rbe_dir := prebuilts/remoteexecution-client/live/ endif ifdef RBE_CXX_EXEC_STRATEGY cxx_rbe_exec_strategy := $(RBE_CXX_EXEC_STRATEGY) else - cxx_rbe_exec_strategy := "local" + cxx_rbe_exec_strategy := local + endif + + ifdef RBE_CXX_COMPARE + cxx_compare := $(RBE_CXX_COMPARE) + else + cxx_compare := false endif ifdef RBE_JAVAC_EXEC_STRATEGY javac_exec_strategy := $(RBE_JAVAC_EXEC_STRATEGY) else - javac_exec_strategy := "local" + javac_exec_strategy := remote_local_fallback endif ifdef RBE_R8_EXEC_STRATEGY r8_exec_strategy := $(RBE_R8_EXEC_STRATEGY) else - r8_exec_strategy := "local" + r8_exec_strategy := remote_local_fallback endif ifdef RBE_D8_EXEC_STRATEGY d8_exec_strategy := $(RBE_D8_EXEC_STRATEGY) else - d8_exec_strategy := "local" + d8_exec_strategy := remote_local_fallback endif - platform := "container-image=docker://gcr.io/androidbuild-re-dockerimage/android-build-remoteexec-image@sha256:582efb38f0c229ea39952fff9e132ccbe183e14869b39888010dacf56b360d62" - cxx_platform := $(platform)",Pool=default" - java_r8_d8_platform := $(platform)",Pool=java16" + platform := container-image=docker://gcr.io/androidbuild-re-dockerimage/android-build-remoteexec-image@sha256:582efb38f0c229ea39952fff9e132ccbe183e14869b39888010dacf56b360d62 + cxx_platform := $(platform),Pool=default + java_r8_d8_platform := $(platform),Pool=java16 RBE_WRAPPER := $(rbe_dir)/rewrapper - RBE_CXX := --labels=type=compile,lang=cpp,compiler=clang --env_var_whitelist=PWD --exec_strategy=$(cxx_rbe_exec_strategy) --platform="$(cxx_platform)" + RBE_CXX := --labels=type=compile,lang=cpp,compiler=clang --env_var_allowlist=PWD --exec_strategy=$(cxx_rbe_exec_strategy) --platform=$(cxx_platform) --compare=$(cxx_compare) # Append rewrapper to existing *_WRAPPER variables so it's possible to # use both ccache and rewrapper. @@ -59,15 +65,15 @@ ifneq ($(filter-out false,$(USE_RBE)),) CXX_WRAPPER := $(strip $(CXX_WRAPPER) $(RBE_WRAPPER) $(RBE_CXX)) ifdef RBE_JAVAC - JAVAC_WRAPPER := $(strip $(JAVAC_WRAPPER) $(RBE_WRAPPER) --labels=type=compile,lang=java,compiler=javac --exec_strategy=$(javac_exec_strategy) --platform="$(java_r8_d8_platform)") + JAVAC_WRAPPER := $(strip $(JAVAC_WRAPPER) $(RBE_WRAPPER) --labels=type=compile,lang=java,compiler=javac --exec_strategy=$(javac_exec_strategy) --platform=$(java_r8_d8_platform)) endif ifdef RBE_R8 - R8_WRAPPER := $(strip $(RBE_WRAPPER) --labels=type=compile,compiler=r8 --exec_strategy=$(r8_exec_strategy) --platform="$(java_r8_d8_platform)" --inputs=out/soong/host/linux-x86/framework/r8-compat-proguard.jar,build/make/core/proguard_basic_keeps.flags --toolchain_inputs=prebuilts/jdk/jdk9/linux-x86/bin/java) + R8_WRAPPER := $(strip $(RBE_WRAPPER) --labels=type=compile,compiler=r8 --exec_strategy=$(r8_exec_strategy) --platform=$(java_r8_d8_platform) --inputs=out/soong/host/linux-x86/framework/r8-compat-proguard.jar,build/make/core/proguard_basic_keeps.flags --toolchain_inputs=prebuilts/jdk/jdk9/linux-x86/bin/java) endif ifdef RBE_D8 - D8_WRAPPER := $(strip $(RBE_WRAPPER) --labels=type=compile,compiler=d8 --exec_strategy=$(d8_exec_strategy) --platform="$(java_r8_d8_platform)" --inputs=out/soong/host/linux-x86/framework/d8.jar --toolchain_inputs=prebuilts/jdk/jdk9/linux-x86/bin/java) + D8_WRAPPER := $(strip $(RBE_WRAPPER) --labels=type=compile,compiler=d8 --exec_strategy=$(d8_exec_strategy) --platform=$(java_r8_d8_platform) --inputs=out/soong/host/linux-x86/framework/d8.jar --toolchain_inputs=prebuilts/jdk/jdk9/linux-x86/bin/java) endif rbe_dir := diff --git a/rbesetup.sh b/rbesetup.sh new file mode 100644 index 0000000000..5781f05e4c --- /dev/null +++ b/rbesetup.sh @@ -0,0 +1,43 @@ +source build/envsetup.sh +# This function prefixes the given command with appropriate variables needed +# for the build to be executed with RBE. +function use_rbe() { + local RBE_LOG_DIR="/tmp" + local RBE_BINARIES_DIR="prebuilts/remoteexecution-client/latest" + local DOCKER_IMAGE="gcr.io/androidbuild-re-dockerimage/android-build-remoteexec-image@sha256:582efb38f0c229ea39952fff9e132ccbe183e14869b39888010dacf56b360d62" + # Do not set an invocation-ID and let reproxy auto-generate one. + USE_RBE="true" \ + FLAG_server_address="unix:///tmp/reproxy_$RANDOM.sock" \ + FLAG_exec_root="$(gettop)" \ + FLAG_platform="container-image=docker://${DOCKER_IMAGE}" \ + RBE_use_application_default_credentials="true" \ + RBE_log_dir="${RBE_LOG_DIR}" \ + RBE_reproxy_wait_seconds="20" \ + RBE_output_dir="${RBE_LOG_DIR}" \ + RBE_log_path="text://${RBE_LOG_DIR}/reproxy_log.txt" \ + RBE_CXX_EXEC_STRATEGY="remote_local_fallback" \ + RBE_cpp_dependency_scanner_plugin="${RBE_BINARIES_DIR}/dependency_scanner_go_plugin.so" \ + RBE_DIR=${RBE_BINARIES_DIR} \ + RBE_re_proxy="${RBE_BINARIES_DIR}/reproxy" \ + $@ +} +# This function detects if the uploader is available and sets the path of it to +# 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 + export ANDROID_ENABLE_METRICS_UPLOAD="${uploader_path}" + fi +} +# This function sets RBE specific environment variables needed for the build to +# executed by RBE. This file should be sourced once per checkout of Android code. +function _set_rbe_vars() { + unset USE_GOMA + export USE_RBE="true" + export RBE_CXX_EXEC_STRATEGY="remote_local_fallback" + export RBE_JAVAC=1 + export RBE_R8=1 + export RBE_D8=1 +} +_export_metrics_uploader +_set_rbe_vars |