summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <treehugger-gerrit@google.com> 2022-12-07 19:11:49 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2022-12-07 19:11:49 +0000
commit41ec4e65483e082fa20d4a3a7c1a68033fbd019a (patch)
treec25956f3bff253206eaf6b283b44595f895da53b
parenta0206f3d29109c769a24b9f94c6f29f0491d86a8 (diff)
parentdc87f2db0e71f623dcf79c48cb9f15705d100c33 (diff)
Merge "Streamline NewBazeContext code"
-rw-r--r--android/bazel_handler.go104
1 files changed, 35 insertions, 69 deletions
diff --git a/android/bazel_handler.go b/android/bazel_handler.go
index 122495f78..908b2d69d 100644
--- a/android/bazel_handler.go
+++ b/android/bazel_handler.go
@@ -16,7 +16,6 @@ package android
import (
"bytes"
- "errors"
"fmt"
"os"
"os/exec"
@@ -376,107 +375,74 @@ func (m noopBazelContext) AqueryDepsets() []bazel.AqueryDepset {
}
func NewBazelContext(c *config) (BazelContext, error) {
- var modulesDefaultToBazel bool
disabledModules := map[string]bool{}
enabledModules := map[string]bool{}
+ addToStringSet := func(set map[string]bool, items []string) {
+ for _, item := range items {
+ set[item] = true
+ }
+ }
switch c.BuildMode {
case BazelProdMode:
- modulesDefaultToBazel = false
-
- for _, enabledProdModule := range allowlists.ProdMixedBuildsEnabledList {
- enabledModules[enabledProdModule] = true
- }
-
+ addToStringSet(enabledModules, allowlists.ProdMixedBuildsEnabledList)
for enabledAdHocModule := range c.BazelModulesForceEnabledByFlag() {
enabledModules[enabledAdHocModule] = true
}
case BazelStagingMode:
- modulesDefaultToBazel = false
// Staging mode includes all prod modules plus all staging modules.
- for _, enabledProdModule := range allowlists.ProdMixedBuildsEnabledList {
- enabledModules[enabledProdModule] = true
- }
- for _, enabledStagingMode := range allowlists.StagingMixedBuildsEnabledList {
- enabledModules[enabledStagingMode] = true
- }
-
+ addToStringSet(enabledModules, allowlists.ProdMixedBuildsEnabledList)
+ addToStringSet(enabledModules, allowlists.StagingMixedBuildsEnabledList)
for enabledAdHocModule := range c.BazelModulesForceEnabledByFlag() {
enabledModules[enabledAdHocModule] = true
}
case BazelDevMode:
- modulesDefaultToBazel = true
-
// Don't use partially-converted cc_library targets in mixed builds,
// since mixed builds would generally rely on both static and shared
// variants of a cc_library.
for staticOnlyModule := range GetBp2BuildAllowList().ccLibraryStaticOnly {
disabledModules[staticOnlyModule] = true
}
- for _, disabledDevModule := range allowlists.MixedBuildsDisabledList {
- disabledModules[disabledDevModule] = true
- }
+ addToStringSet(disabledModules, allowlists.MixedBuildsDisabledList)
default:
return noopBazelContext{}, nil
}
- p, err := bazelPathsFromConfig(c)
- if err != nil {
- return nil, err
+ paths := bazelPaths{
+ soongOutDir: c.soongOutDir,
+ }
+ var missing []string
+ vars := []struct {
+ name string
+ ptr *string
+ }{
+ {"BAZEL_HOME", &paths.homeDir},
+ {"BAZEL_PATH", &paths.bazelPath},
+ {"BAZEL_OUTPUT_BASE", &paths.outputBase},
+ {"BAZEL_WORKSPACE", &paths.workspaceDir},
+ {"BAZEL_METRICS_DIR", &paths.metricsDir},
+ {"BAZEL_DEPS_FILE", &paths.bazelDepsFile},
+ }
+ for _, v := range vars {
+ if s := c.Getenv(v.name); len(s) > 1 {
+ *v.ptr = s
+ } else {
+ missing = append(missing, v.name)
+ }
+ }
+ if len(missing) > 0 {
+ return nil, fmt.Errorf("missing required env vars to use bazel: %s", missing)
}
-
return &bazelContext{
bazelRunner: &builtinBazelRunner{},
- paths: p,
+ paths: &paths,
requests: make(map[cqueryKey]bool),
- modulesDefaultToBazel: modulesDefaultToBazel,
+ modulesDefaultToBazel: c.BuildMode == BazelDevMode,
bazelEnabledModules: enabledModules,
bazelDisabledModules: disabledModules,
}, nil
}
-func bazelPathsFromConfig(c *config) (*bazelPaths, error) {
- p := bazelPaths{
- soongOutDir: c.soongOutDir,
- }
- var missingEnvVars []string
- if len(c.Getenv("BAZEL_HOME")) > 1 {
- p.homeDir = c.Getenv("BAZEL_HOME")
- } else {
- missingEnvVars = append(missingEnvVars, "BAZEL_HOME")
- }
- if len(c.Getenv("BAZEL_PATH")) > 1 {
- p.bazelPath = c.Getenv("BAZEL_PATH")
- } else {
- missingEnvVars = append(missingEnvVars, "BAZEL_PATH")
- }
- if len(c.Getenv("BAZEL_OUTPUT_BASE")) > 1 {
- p.outputBase = c.Getenv("BAZEL_OUTPUT_BASE")
- } else {
- missingEnvVars = append(missingEnvVars, "BAZEL_OUTPUT_BASE")
- }
- if len(c.Getenv("BAZEL_WORKSPACE")) > 1 {
- p.workspaceDir = c.Getenv("BAZEL_WORKSPACE")
- } else {
- missingEnvVars = append(missingEnvVars, "BAZEL_WORKSPACE")
- }
- if len(c.Getenv("BAZEL_METRICS_DIR")) > 1 {
- p.metricsDir = c.Getenv("BAZEL_METRICS_DIR")
- } else {
- missingEnvVars = append(missingEnvVars, "BAZEL_METRICS_DIR")
- }
- if len(c.Getenv("BAZEL_DEPS_FILE")) > 1 {
- p.bazelDepsFile = c.Getenv("BAZEL_DEPS_FILE")
- } else {
- missingEnvVars = append(missingEnvVars, "BAZEL_DEPS_FILE")
- }
- if len(missingEnvVars) > 0 {
- return nil, errors.New(fmt.Sprintf("missing required env vars to use bazel: %s", missingEnvVars))
- } else {
- return &p, nil
- }
-}
-
func (p *bazelPaths) BazelMetricsDir() string {
return p.metricsDir
}