Allow exporting bazel mixed build allowlists to simple text files
So that they the allowlists can be read from build_mainline_modules_bundles.sh.
Bug: 262302253
Test: m out/soong/bazel_prod_mixed_builds_enabled_list.txt out/soong/bazel_staging_mixed_builds_enabled_list.txt && cat out/soong/bazel_prod_mixed_builds_enabled_list.txt && echo && cat out/soong/bazel_staging_mixed_builds_enabled_list.txt
Change-Id: Id5f89ebb651a52dc5368681a20d6183703e05bd4
diff --git a/android/bazel_handler.go b/android/bazel_handler.go
index 0529f23..0b768a7 100644
--- a/android/bazel_handler.go
+++ b/android/bazel_handler.go
@@ -22,6 +22,7 @@
"path"
"path/filepath"
"runtime"
+ "sort"
"strings"
"sync"
@@ -374,7 +375,7 @@
return []bazel.AqueryDepset{}
}
-func NewBazelContext(c *config) (BazelContext, error) {
+func GetBazelEnabledAndDisabledModules(buildMode SoongBuildMode, forceEnabled map[string]struct{}) (map[string]bool, map[string]bool) {
disabledModules := map[string]bool{}
enabledModules := map[string]bool{}
addToStringSet := func(set map[string]bool, items []string) {
@@ -383,17 +384,17 @@
}
}
- switch c.BuildMode {
+ switch buildMode {
case BazelProdMode:
addToStringSet(enabledModules, allowlists.ProdMixedBuildsEnabledList)
- for enabledAdHocModule := range c.BazelModulesForceEnabledByFlag() {
+ for enabledAdHocModule := range forceEnabled {
enabledModules[enabledAdHocModule] = true
}
case BazelStagingMode:
// Staging mode includes all prod modules plus all staging modules.
addToStringSet(enabledModules, allowlists.ProdMixedBuildsEnabledList)
addToStringSet(enabledModules, allowlists.StagingMixedBuildsEnabledList)
- for enabledAdHocModule := range c.BazelModulesForceEnabledByFlag() {
+ for enabledAdHocModule := range forceEnabled {
enabledModules[enabledAdHocModule] = true
}
case BazelDevMode:
@@ -405,9 +406,30 @@
}
addToStringSet(disabledModules, allowlists.MixedBuildsDisabledList)
default:
+ panic("Expected BazelProdMode, BazelStagingMode, or BazelDevMode")
+ }
+ return enabledModules, disabledModules
+}
+
+func GetBazelEnabledModules(buildMode SoongBuildMode) []string {
+ enabledModules, disabledModules := GetBazelEnabledAndDisabledModules(buildMode, nil)
+ enabledList := make([]string, 0, len(enabledModules))
+ for module := range enabledModules {
+ if !disabledModules[module] {
+ enabledList = append(enabledList, module)
+ }
+ }
+ sort.Strings(enabledList)
+ return enabledList
+}
+
+func NewBazelContext(c *config) (BazelContext, error) {
+ if c.BuildMode != BazelProdMode && c.BuildMode != BazelStagingMode && c.BuildMode != BazelDevMode {
return noopBazelContext{}, nil
}
+ enabledModules, disabledModules := GetBazelEnabledAndDisabledModules(c.BuildMode, c.BazelModulesForceEnabledByFlag())
+
paths := bazelPaths{
soongOutDir: c.soongOutDir,
}