Merge "Enable reclient cache directory."
diff --git a/ui/build/build.go b/ui/build/build.go
index edc595d..6874ef7 100644
--- a/ui/build/build.go
+++ b/ui/build/build.go
@@ -259,10 +259,16 @@
startGoma(ctx, config)
}
+ rbeCh := make(chan bool)
if config.StartRBE() {
cleanupRBELogsDir(ctx, config)
- startRBE(ctx, config)
+ go func() {
+ startRBE(ctx, config)
+ close(rbeCh)
+ }()
defer DumpRBEMetrics(ctx, config, filepath.Join(config.LogsDir(), "rbe_metrics.pb"))
+ } else {
+ close(rbeCh)
}
if what&RunProductConfig != 0 {
@@ -315,11 +321,11 @@
testForDanglingRules(ctx, config)
}
+ <-rbeCh
if what&RunNinja != 0 {
if what&RunKati != 0 {
installCleanIfNecessary(ctx, config)
}
-
runNinjaForBuild(ctx, config)
}
diff --git a/ui/build/config.go b/ui/build/config.go
index a755d14..bf4aec9 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -1374,6 +1374,15 @@
return filepath.Join(buildTmpDir, "rbe")
}
+func (c *configImpl) rbeCacheDir() string {
+ for _, f := range []string{"RBE_cache_dir", "FLAG_cache_dir"} {
+ if v, ok := c.environ.Get(f); ok {
+ return v
+ }
+ }
+ return shared.JoinPath(c.SoongOutDir(), "rbe")
+}
+
func (c *configImpl) shouldCleanupRBELogsDir() bool {
// Perform a log directory cleanup only when the log directory
// is auto created by the build rather than user-specified.
diff --git a/ui/build/rbe.go b/ui/build/rbe.go
index 1d17216..6479925 100644
--- a/ui/build/rbe.go
+++ b/ui/build/rbe.go
@@ -60,6 +60,7 @@
"RBE_exec_root": config.rbeExecRoot(),
"RBE_output_dir": config.rbeProxyLogsDir(),
"RBE_proxy_log_dir": config.rbeProxyLogsDir(),
+ "RBE_cache_dir": config.rbeCacheDir(),
"RBE_platform": "container-image=" + remoteexec.DefaultImage,
}
if config.StartRBE() {