Merge "implement USE_BAZEL_VERSION for m"
This commit is contained in:
@@ -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 {
|
||||
|
@@ -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.
|
||||
|
@@ -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
|
||||
}
|
||||
|
@@ -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()
|
||||
}
|
||||
|
Reference in New Issue
Block a user