Merge "implement USE_BAZEL_VERSION for m"

This commit is contained in:
Treehugger Robot
2023-06-01 22:06:17 +00:00
committed by Gerrit Code Review
4 changed files with 36 additions and 10 deletions

View File

@@ -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.
@@ -74,6 +75,7 @@ type ProxyServer struct {
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{}),
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 {

View File

@@ -552,6 +552,12 @@ func main() {
}
writeMetrics(configuration, ctx.EventHandler, metricsDir)
}
// Register this environment variablesas being an implicit dependencies of
// soong_build. Changes to this environment variable will result in
// retriggering soong_build.
configuration.Getenv("USE_BAZEL_VERSION")
writeUsedEnvironmentFile(configuration)
// Touch the output file so that it's the newest file created by soong_build.

View File

@@ -1642,6 +1642,16 @@ func (c *configImpl) IsPersistentBazelEnabled() bool {
return c.Environment().IsEnvTrue("USE_PERSISTENT_BAZEL")
}
// GetBazeliskBazelVersion returns the Bazel version to use for this build,
// or the empty string if the current canonical prod Bazel should be used.
// This environment variable should only be set to debug the build system.
// The Bazel version, if set, will be passed to Bazelisk, and Bazelisk will
// handle downloading and invoking the correct Bazel binary.
func (c *configImpl) GetBazeliskBazelVersion() string {
value, _ := c.Environment().Get("USE_BAZEL_VERSION")
return value
}
func (c *configImpl) BazelModulesForceEnabledByFlag() string {
return c.bazelForceEnabledModules
}

View File

@@ -533,7 +533,7 @@ func runSoong(ctx Context, config Config) {
defer ctx.EndTrace()
if config.IsPersistentBazelEnabled() {
bazelProxy := bazel.NewProxyServer(ctx.Logger, config.OutDir(), filepath.Join(config.SoongOutDir(), "workspace"))
bazelProxy := bazel.NewProxyServer(ctx.Logger, config.OutDir(), filepath.Join(config.SoongOutDir(), "workspace"), config.GetBazeliskBazelVersion())
bazelProxy.Start()
defer bazelProxy.Close()
}