Various cleanup in soong_ui to aid new feature
- Rename the "BuildX" variables to "RunX"
- Remove redundant comments
- Inline all the "what to do" based on config in build.go
- Inline some constants only used in one place
Bug: 189187214
Test: m nothing
Test: build/soong/build_test.bash
Change-Id: I111a69e642212d7938d4971283545e0d9acbb01a
Merged-In: I111a69e642212d7938d4971283545e0d9acbb01a
(cherry picked from commit d274ea91968b95ef7a2edd2d604afbc237e84ff9)
diff --git a/cmd/multiproduct_kati/main.go b/cmd/multiproduct_kati/main.go
index 20f146a..55a5470 100644
--- a/cmd/multiproduct_kati/main.go
+++ b/cmd/multiproduct_kati/main.go
@@ -460,19 +460,21 @@
}
}()
- buildWhat := build.BuildProductConfig
+ config.SetSkipNinja(true)
+
+ buildWhat := build.RunProductConfig
if !*onlyConfig {
- buildWhat |= build.BuildSoong
+ buildWhat |= build.RunSoong
if !*onlySoong {
- buildWhat |= build.BuildKati
+ buildWhat |= build.RunKati
}
}
before := time.Now()
- build.Build(ctx, config, buildWhat)
+ build.Build(ctx, config)
// Save std_full.log if Kati re-read the makefiles
- if buildWhat&build.BuildKati != 0 {
+ if buildWhat&build.RunKati != 0 {
if after, err := os.Stat(config.KatiBuildNinjaFile()); err == nil && after.ModTime().After(before) {
err := copyFile(stdLog, filepath.Join(filepath.Dir(stdLog), "std_full.log"))
if err != nil {
diff --git a/cmd/soong_ui/main.go b/cmd/soong_ui/main.go
index 390a9ec..22922c0 100644
--- a/cmd/soong_ui/main.go
+++ b/cmd/soong_ui/main.go
@@ -59,12 +59,10 @@
run func(ctx build.Context, config build.Config, args []string, logsDir string)
}
-const makeModeFlagName = "--make-mode"
-
// list of supported commands (flags) supported by soong ui
var commands []command = []command{
{
- flag: makeModeFlagName,
+ flag: "--make-mode",
description: "build the modules by the target name (i.e. soong_docs)",
config: func(ctx build.Context, args ...string) build.Config {
return build.NewConfig(ctx, args...)
@@ -506,15 +504,7 @@
ctx.Fatal("done")
}
- toBuild := build.BuildAll
- if config.UseBazel() {
- toBuild = build.BuildAllWithBazel
- }
-
- if config.Checkbuild() {
- toBuild |= build.RunBuildTests
- }
- build.Build(ctx, config, toBuild)
+ build.Build(ctx, config)
}
// getCommand finds the appropriate command based on args[1] flag. args[0]
diff --git a/cuj/cuj.go b/cuj/cuj.go
index 3333012..b4ae9a2 100644
--- a/cuj/cuj.go
+++ b/cuj/cuj.go
@@ -115,7 +115,7 @@
defer f.Shutdown()
build.FindSources(buildCtx, config, f)
- build.Build(buildCtx, config, build.BuildAll)
+ build.Build(buildCtx, config)
t.results.metrics = met
}
diff --git a/ui/build/build.go b/ui/build/build.go
index c2ad057..da44b65 100644
--- a/ui/build/build.go
+++ b/ui/build/build.go
@@ -87,15 +87,20 @@
// These are bitmasks which can be used to check whether various flags are set e.g. whether to use Bazel.
const (
- BuildNone = iota
- BuildProductConfig = 1 << iota
- BuildSoong = 1 << iota
- BuildKati = 1 << iota
- BuildNinja = 1 << iota
- BuildBazel = 1 << iota
- RunBuildTests = 1 << iota
- BuildAll = BuildProductConfig | BuildSoong | BuildKati | BuildNinja
- BuildAllWithBazel = BuildProductConfig | BuildSoong | BuildKati | BuildBazel
+ _ = iota
+ // Whether to run the kati config step.
+ RunProductConfig = 1 << iota
+ // Whether to run soong to generate a ninja file.
+ RunSoong = 1 << iota
+ // Whether to run kati to generate a ninja file.
+ RunKati = 1 << iota
+ // Whether to run ninja on the combined ninja.
+ RunNinja = 1 << iota
+ // Whether to run bazel on the combined ninja.
+ RunBazel = 1 << iota
+ RunBuildTests = 1 << iota
+ RunAll = RunProductConfig | RunSoong | RunKati | RunNinja
+ RunAllWithBazel = RunProductConfig | RunSoong | RunKati | RunBazel
)
// checkProblematicFiles fails the build if existing Android.mk or CleanSpec.mk files are found at the root of the tree.
@@ -173,7 +178,7 @@
// Build the tree. The 'what' argument can be used to chose which components of
// the build to run, via checking various bitmasks.
-func Build(ctx Context, config Config, what int) {
+func Build(ctx Context, config Config) {
ctx.Verboseln("Starting build with args:", config.Arguments())
ctx.Verboseln("Environment:", config.Environment().Environ())
@@ -208,33 +213,35 @@
SetupPath(ctx, config)
+ what := RunAll
+ if config.UseBazel() {
+ what = RunAllWithBazel
+ }
+ if config.Checkbuild() {
+ what |= RunBuildTests
+ }
if config.SkipConfig() {
ctx.Verboseln("Skipping Config as requested")
- what = what &^ BuildProductConfig
+ what = what &^ RunProductConfig
}
-
if config.SkipKati() {
ctx.Verboseln("Skipping Kati as requested")
- what = what &^ BuildKati
+ what = what &^ RunKati
}
-
if config.SkipNinja() {
ctx.Verboseln("Skipping Ninja as requested")
- what = what &^ BuildNinja
+ what = what &^ RunNinja
}
if config.StartGoma() {
- // Ensure start Goma compiler_proxy
startGoma(ctx, config)
}
if config.StartRBE() {
- // Ensure RBE proxy is started
startRBE(ctx, config)
}
- if what&BuildProductConfig != 0 {
- // Run make for product config
+ if what&RunProductConfig != 0 {
runMakeProductConfig(ctx, config)
}
@@ -254,8 +261,7 @@
return
}
- if what&BuildSoong != 0 {
- // Run Soong
+ if what&RunSoong != 0 {
runSoong(ctx, config)
if config.bazelBuildMode() == generateBuildFiles {
@@ -264,8 +270,7 @@
}
}
- if what&BuildKati != 0 {
- // Run ckati
+ if what&RunKati != 0 {
genKatiSuffix(ctx, config)
runKatiCleanSpec(ctx, config)
runKatiBuild(ctx, config)
@@ -289,17 +294,16 @@
testForDanglingRules(ctx, config)
}
- if what&BuildNinja != 0 {
- if what&BuildKati != 0 {
+ if what&RunNinja != 0 {
+ if what&RunKati != 0 {
installCleanIfNecessary(ctx, config)
}
- // Run ninja
runNinjaForBuild(ctx, config)
}
// Currently, using Bazel requires Kati and Soong to run first, so check whether to run Bazel last.
- if what&BuildBazel != 0 {
+ if what&RunBazel != 0 {
runBazel(ctx, config)
}
}
diff --git a/ui/build/config.go b/ui/build/config.go
index f1f5989..3a445a3 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -567,8 +567,7 @@
func (c *configImpl) parseArgs(ctx Context, args []string) {
for i := 0; i < len(args); i++ {
arg := strings.TrimSpace(args[i])
- if arg == "--make-mode" {
- } else if arg == "showcommands" {
+ if arg == "showcommands" {
c.verbose = true
} else if arg == "--skip-ninja" {
c.skipNinja = true
@@ -796,6 +795,10 @@
return c.skipNinja
}
+func (c *configImpl) SetSkipNinja(v bool) {
+ c.skipNinja = v
+}
+
func (c *configImpl) SkipConfig() bool {
return c.skipConfig
}