Add bazel staging mode to soong build.
This is to use bazel to build targets that are being prepared for an
incipient release to the prod mode allowlist.
Bug: 254265047
Test: m nothing
Test: m nothing --bazel-mode-dev
Test: m nothing --bazel-mode-staging
Change-Id: Ic78a59cf51dba83ef1ac26483586560ea9b24aaf
diff --git a/ui/build/build.go b/ui/build/build.go
index 2022e50..b9bd898 100644
--- a/ui/build/build.go
+++ b/ui/build/build.go
@@ -112,9 +112,19 @@
// checkBazelMode fails the build if there are conflicting arguments for which bazel
// build mode to use.
func checkBazelMode(ctx Context, config Config) {
- if config.bazelProdMode && config.bazelDevMode {
+ count := 0
+ if config.bazelProdMode {
+ count++
+ }
+ if config.bazelDevMode {
+ count++
+ }
+ if config.bazelStagingMode {
+ count++
+ }
+ if count > 1 {
ctx.Fatalln("Conflicting bazel mode.\n" +
- "Do not specify both --bazel-mode and --bazel-mode-dev")
+ "Do not specify more than one of --bazel-mode and --bazel-mode-dev and --bazel-mode-staging ")
}
}
diff --git a/ui/build/config.go b/ui/build/config.go
index f6f5b46..cde8d5d 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -100,8 +100,9 @@
pathReplaced bool
- bazelProdMode bool
- bazelDevMode bool
+ bazelProdMode bool
+ bazelDevMode bool
+ bazelStagingMode bool
// Set by multiproduct_kati
emptyNinjaFile bool
@@ -721,6 +722,8 @@
c.bazelProdMode = true
} else if arg == "--bazel-mode-dev" {
c.bazelDevMode = true
+ } else if arg == "--bazel-mode-staging" {
+ c.bazelStagingMode = true
} else if len(arg) > 0 && arg[0] == '-' {
parseArgNum := func(def int) int {
if len(arg) > 2 {
@@ -1115,7 +1118,7 @@
}
func (c *configImpl) BazelBuildEnabled() bool {
- return c.bazelProdMode || c.bazelDevMode
+ return c.bazelProdMode || c.bazelDevMode || c.bazelStagingMode
}
func (c *configImpl) StartRBE() bool {
diff --git a/ui/build/config_test.go b/ui/build/config_test.go
index 150ec35..9ea5110 100644
--- a/ui/build/config_test.go
+++ b/ui/build/config_test.go
@@ -1008,6 +1008,7 @@
useBazel bool
bazelDevMode bool
bazelProdMode bool
+ bazelStagingMode bool
expectedBuildConfig *smpb.BuildConfig
}{
{
@@ -1084,6 +1085,17 @@
},
},
{
+ name: "bazel mixed build from staging mode",
+ environ: Environment{},
+ bazelStagingMode: true,
+ expectedBuildConfig: &smpb.BuildConfig{
+ ForceUseGoma: proto.Bool(false),
+ UseGoma: proto.Bool(false),
+ UseRbe: proto.Bool(false),
+ BazelMixedBuild: proto.Bool(true),
+ },
+ },
+ {
name: "specified targets",
environ: Environment{},
useBazel: true,
@@ -1118,10 +1130,11 @@
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
c := &configImpl{
- environ: &tc.environ,
- bazelDevMode: tc.bazelDevMode,
- bazelProdMode: tc.bazelProdMode,
- arguments: tc.arguments,
+ environ: &tc.environ,
+ bazelDevMode: tc.bazelDevMode,
+ bazelProdMode: tc.bazelProdMode,
+ bazelStagingMode: tc.bazelStagingMode,
+ arguments: tc.arguments,
}
config := Config{c}
checkBazelMode(ctx, config)
diff --git a/ui/build/soong.go b/ui/build/soong.go
index 28c6ec9..c87f993 100644
--- a/ui/build/soong.go
+++ b/ui/build/soong.go
@@ -260,6 +260,9 @@
if config.bazelDevMode {
mainSoongBuildExtraArgs = append(mainSoongBuildExtraArgs, "--bazel-mode-dev")
}
+ if config.bazelStagingMode {
+ mainSoongBuildExtraArgs = append(mainSoongBuildExtraArgs, "--bazel-mode-staging")
+ }
mainSoongBuildInvocation := primaryBuilderInvocation(
config,