aboutsummaryrefslogtreecommitdiff
path: root/bazel
diff options
context:
space:
mode:
authorChris Parsons <cparsons@google.com>2023-05-31 18:41:41 +0000
committerChris Parsons <cparsons@google.com>2023-06-01 17:42:18 +0000
commitc83398ffb410ff9539a279f9231bc1bccd086dab (patch)
tree4afcf1ece62974f7c920a306e99c97cdc03c2460 /bazel
parente5641c51b91105be85f9a97ea2a55bba6f84bc0a (diff)
implement USE_BAZEL_VERSION for m
This allows USE_BAZEL_VERSION to be set for m builds, which will use Bazelisk for any Bazel invocations during those builds. This should be used only for manual debugging, typically to either test new Bazel features, verify Bazel compatibility with Android, or culprit find new Bazel breakages. Test: Manually run builds with USE_BAZEL_VERSION, toggled off and on to ensure the build was rerun. Tested with a broken commit, a working commit, and 'last_green' special term Change-Id: I8b475dca5c8d4bd849ee3724a8c3aca9b631bcb8
Diffstat (limited to 'bazel')
-rw-r--r--bazel/bazel_proxy.go28
1 files changed, 19 insertions, 9 deletions
diff --git a/bazel/bazel_proxy.go b/bazel/bazel_proxy.go
index 2940b9995..229818da0 100644
--- a/bazel/bazel_proxy.go
+++ b/bazel/bazel_proxy.go
@@ -26,10 +26,11 @@ import (
"time"
)
-// Logs fatal events of ProxyServer.
+// Logs events of ProxyServer.
type ServerLogger interface {
Fatal(v ...interface{})
Fatalf(format string, v ...interface{})
+ Println(v ...interface{})
}
// CmdRequest is a request to the Bazel Proxy server.
@@ -71,9 +72,10 @@ type ProxyClient struct {
// The ProxyServer will only live as long as soong_ui does; the
// underlying Bazel server will live past the duration of the build.
type ProxyServer struct {
- logger ServerLogger
- outDir string
- workspaceDir string
+ logger ServerLogger
+ outDir string
+ workspaceDir string
+ bazeliskVersion string
// The server goroutine will listen on this channel and stop handling requests
// once it is written to.
done chan struct{}
@@ -119,12 +121,17 @@ func (b *ProxyClient) IssueCommand(req CmdRequest) (CmdResponse, error) {
}
// NewProxyServer is a constructor for a ProxyServer.
-func NewProxyServer(logger ServerLogger, outDir string, workspaceDir string) *ProxyServer {
+func NewProxyServer(logger ServerLogger, outDir string, workspaceDir string, bazeliskVersion string) *ProxyServer {
+ if len(bazeliskVersion) > 0 {
+ logger.Println("** Using Bazelisk for this build, due to env var USE_BAZEL_VERSION=" + bazeliskVersion + " **")
+ }
+
return &ProxyServer{
- logger: logger,
- outDir: outDir,
- workspaceDir: workspaceDir,
- done: make(chan struct{}),
+ logger: logger,
+ outDir: outDir,
+ workspaceDir: workspaceDir,
+ done: make(chan struct{}),
+ bazeliskVersion: bazeliskVersion,
}
}
@@ -155,6 +162,9 @@ func (b *ProxyServer) handleRequest(conn net.Conn) error {
return fmt.Errorf("Error decoding request: %s", err)
}
+ if len(b.bazeliskVersion) > 0 {
+ req.Env = append(req.Env, "USE_BAZEL_VERSION="+b.bazeliskVersion)
+ }
stdout, stderr, cmdErr := ExecBazel("./build/bazel/bin/bazel", b.workspaceDir, req)
errorString := ""
if cmdErr != nil {