Readd support for PRODUCT_RELEASE_CONFIG_MAPS
This allows product config to determine what build flags are present in
a product's build, as well as their value.
As product config moves to a declarative specification, this can be
handled with less unnecessary work.
Bug: b/302593603, b/308849337, b/309477343
Test: manual
Change-Id: Ic0551990864bba6d03b6bf49fcfd4ae2523d9c6d
diff --git a/cmd/soong_ui/main.go b/cmd/soong_ui/main.go
index 18cba77..34b1589 100644
--- a/cmd/soong_ui/main.go
+++ b/cmd/soong_ui/main.go
@@ -182,8 +182,12 @@
CriticalPath: criticalPath,
}}
- config := c.config(buildCtx, args...)
- config.SetLogsPrefix(c.logsPrefix)
+ freshConfig := func() build.Config {
+ config := c.config(buildCtx, args...)
+ config.SetLogsPrefix(c.logsPrefix)
+ return config
+ }
+ config := freshConfig()
logsDir := config.LogsDir()
buildStarted = config.BuildStartedTimeOrDefault(buildStarted)
@@ -213,6 +217,15 @@
log.Verbosef(" [%d] %s", i, arg)
}
+ // We need to call preProductConfigSetup before we can do product config, which is how we get
+ // PRODUCT_CONFIG_RELEASE_MAPS set for the final product config for the build.
+ // When product config uses a declarative language, we won't need to rerun product config.
+ preProductConfigSetup(buildCtx, config)
+ if build.SetProductReleaseConfigMaps(buildCtx, config) {
+ log.Verbose("Product release config maps found\n")
+ config = freshConfig()
+ }
+
defer func() {
stat.Finish()
criticalPath.WriteToMetrics(met)
@@ -225,7 +238,9 @@
}
-func logAndSymlinkSetup(buildCtx build.Context, config build.Config) {
+// This function must not modify config, since product config may cause us to recreate the config,
+// and we won't call this function a second time.
+func preProductConfigSetup(buildCtx build.Context, config build.Config) {
log := buildCtx.ContextImpl.Logger
logsPrefix := config.GetLogsPrefix()
build.SetupOutDir(buildCtx, config)
@@ -311,7 +326,6 @@
}
func dumpVar(ctx build.Context, config build.Config, args []string) {
- logAndSymlinkSetup(ctx, config)
flags := flag.NewFlagSet("dumpvar", flag.ExitOnError)
flags.SetOutput(ctx.Writer)
@@ -364,7 +378,6 @@
}
func dumpVars(ctx build.Context, config build.Config, args []string) {
- logAndSymlinkSetup(ctx, config)
flags := flag.NewFlagSet("dumpvars", flag.ExitOnError)
flags.SetOutput(ctx.Writer)
@@ -544,7 +557,6 @@
}
func runMake(ctx build.Context, config build.Config, _ []string) {
- logAndSymlinkSetup(ctx, config)
logsDir := config.LogsDir()
if config.IsVerbose() {
writer := ctx.Writer