Loading cmd/soong_ui/main.go +22 −5 Original line number Diff line number Diff line Loading @@ -59,6 +59,9 @@ type command struct { // run the command run func(ctx build.Context, config build.Config, args []string) // whether to do common setup before calling run. doSetup bool } // list of supported commands (flags) supported by soong ui Loading @@ -69,6 +72,7 @@ var commands = []command{ config: build.NewConfig, stdio: stdio, run: runMake, doSetup: true, }, { flag: "--dumpvar-mode", description: "print the value of the legacy make variable VAR to stdout", Loading @@ -77,6 +81,7 @@ var commands = []command{ config: dumpVarConfig, stdio: customStdio, run: dumpVar, doSetup: true, }, { flag: "--dumpvars-mode", description: "dump the values of one or more legacy make variables, in shell syntax", Loading @@ -85,6 +90,7 @@ var commands = []command{ config: dumpVarConfig, stdio: customStdio, run: dumpVars, doSetup: true, }, { flag: "--build-mode", description: "build modules based on the specified build action", Loading Loading @@ -182,8 +188,12 @@ func main() { CriticalPath: criticalPath, }} freshConfig := func() build.Config { config := c.config(buildCtx, args...) config.SetLogsPrefix(c.logsPrefix) return config } config := freshConfig() logsDir := config.LogsDir() buildStarted = config.BuildStartedTimeOrDefault(buildStarted) Loading Loading @@ -213,6 +223,16 @@ func main() { log.Verbosef(" [%d] %s", i, arg) } if c.doSetup { // We need to call logAndSymlinkSetup before we can do product // config, which is how we get PRODUCT_CONFIG_RELEASE_MAPS set // for the final product config for the build. logAndSymlinkSetup(buildCtx, config) if build.SetProductReleaseConfigMaps(buildCtx, config) { config = freshConfig() } } defer func() { stat.Finish() criticalPath.WriteToMetrics(met) Loading Loading @@ -311,7 +331,6 @@ func removeBadTargetRename(ctx build.Context, config build.Config) { } func dumpVar(ctx build.Context, config build.Config, args []string) { logAndSymlinkSetup(ctx, config) flags := flag.NewFlagSet("dumpvar", flag.ExitOnError) flags.SetOutput(ctx.Writer) Loading Loading @@ -364,7 +383,6 @@ func dumpVar(ctx build.Context, config build.Config, args []string) { } func dumpVars(ctx build.Context, config build.Config, args []string) { logAndSymlinkSetup(ctx, config) flags := flag.NewFlagSet("dumpvars", flag.ExitOnError) flags.SetOutput(ctx.Writer) Loading Loading @@ -544,7 +562,6 @@ func buildActionConfig(ctx build.Context, args ...string) build.Config { } func runMake(ctx build.Context, config build.Config, _ []string) { logAndSymlinkSetup(ctx, config) logsDir := config.LogsDir() if config.IsVerbose() { writer := ctx.Writer Loading ui/build/config.go +37 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import ( "time" "android/soong/shared" "android/soong/ui/metrics" "google.golang.org/protobuf/proto" Loading Loading @@ -461,6 +462,42 @@ func NewBuildActionConfig(action BuildAction, dir string, ctx Context, args ...s return NewConfig(ctx, getConfigArgs(action, dir, ctx, args)...) } // Prepare for getting make variables. For them to be accurate, we need to have // obtained PRODUCT_RELEASE_CONFIG_MAPS. // // Returns: // // Whether config should be called again. // // TODO: when converting product config to a declarative language, make sure // that PRODUCT_RELEASE_CONFIG_MAPS is properly handled as a separate step in // that process. func SetProductReleaseConfigMaps(ctx Context, config Config) bool { ctx.BeginTrace(metrics.RunKati, "SetProductReleaseConfigMaps") defer ctx.EndTrace() if config.SkipConfig() { // This duplicates the logic from Build to skip product config // if the user has explicitly said to. return false } releaseConfigVars := []string{ "PRODUCT_RELEASE_CONFIG_MAPS", } origValue, _ := config.environ.Get("PRODUCT_RELEASE_CONFIG_MAPS") // Get the PRODUCT_RELEASE_CONFIG_MAPS for this product, to avoid polluting the environment // when we run product config to get the rest of the make vars. releaseMapVars, err := dumpMakeVars(ctx, config, nil, releaseConfigVars, false, "") if err != nil { ctx.Fatalln("Error getting PRODUCT_RELEASE_CONFIG_MAPS:", err) } productReleaseConfigMaps := releaseMapVars["PRODUCT_RELEASE_CONFIG_MAPS"] os.Setenv("PRODUCT_RELEASE_CONFIG_MAPS", productReleaseConfigMaps) return origValue != productReleaseConfigMaps } // storeConfigMetrics selects a set of configuration information and store in // the metrics system for further analysis. func storeConfigMetrics(ctx Context, config Config) { Loading ui/build/dumpvars.go +3 −0 Original line number Diff line number Diff line Loading @@ -191,6 +191,9 @@ func runMakeProductConfig(ctx Context, config Config) { "TARGET_BUILD_APPS", "TARGET_BUILD_UNBUNDLED", // Additional release config maps "PRODUCT_RELEASE_CONFIG_MAPS", // compiler wrappers set up by make "CC_WRAPPER", "CXX_WRAPPER", Loading Loading
cmd/soong_ui/main.go +22 −5 Original line number Diff line number Diff line Loading @@ -59,6 +59,9 @@ type command struct { // run the command run func(ctx build.Context, config build.Config, args []string) // whether to do common setup before calling run. doSetup bool } // list of supported commands (flags) supported by soong ui Loading @@ -69,6 +72,7 @@ var commands = []command{ config: build.NewConfig, stdio: stdio, run: runMake, doSetup: true, }, { flag: "--dumpvar-mode", description: "print the value of the legacy make variable VAR to stdout", Loading @@ -77,6 +81,7 @@ var commands = []command{ config: dumpVarConfig, stdio: customStdio, run: dumpVar, doSetup: true, }, { flag: "--dumpvars-mode", description: "dump the values of one or more legacy make variables, in shell syntax", Loading @@ -85,6 +90,7 @@ var commands = []command{ config: dumpVarConfig, stdio: customStdio, run: dumpVars, doSetup: true, }, { flag: "--build-mode", description: "build modules based on the specified build action", Loading Loading @@ -182,8 +188,12 @@ func main() { CriticalPath: criticalPath, }} freshConfig := func() build.Config { config := c.config(buildCtx, args...) config.SetLogsPrefix(c.logsPrefix) return config } config := freshConfig() logsDir := config.LogsDir() buildStarted = config.BuildStartedTimeOrDefault(buildStarted) Loading Loading @@ -213,6 +223,16 @@ func main() { log.Verbosef(" [%d] %s", i, arg) } if c.doSetup { // We need to call logAndSymlinkSetup before we can do product // config, which is how we get PRODUCT_CONFIG_RELEASE_MAPS set // for the final product config for the build. logAndSymlinkSetup(buildCtx, config) if build.SetProductReleaseConfigMaps(buildCtx, config) { config = freshConfig() } } defer func() { stat.Finish() criticalPath.WriteToMetrics(met) Loading Loading @@ -311,7 +331,6 @@ func removeBadTargetRename(ctx build.Context, config build.Config) { } func dumpVar(ctx build.Context, config build.Config, args []string) { logAndSymlinkSetup(ctx, config) flags := flag.NewFlagSet("dumpvar", flag.ExitOnError) flags.SetOutput(ctx.Writer) Loading Loading @@ -364,7 +383,6 @@ func dumpVar(ctx build.Context, config build.Config, args []string) { } func dumpVars(ctx build.Context, config build.Config, args []string) { logAndSymlinkSetup(ctx, config) flags := flag.NewFlagSet("dumpvars", flag.ExitOnError) flags.SetOutput(ctx.Writer) Loading Loading @@ -544,7 +562,6 @@ func buildActionConfig(ctx build.Context, args ...string) build.Config { } func runMake(ctx build.Context, config build.Config, _ []string) { logAndSymlinkSetup(ctx, config) logsDir := config.LogsDir() if config.IsVerbose() { writer := ctx.Writer Loading
ui/build/config.go +37 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import ( "time" "android/soong/shared" "android/soong/ui/metrics" "google.golang.org/protobuf/proto" Loading Loading @@ -461,6 +462,42 @@ func NewBuildActionConfig(action BuildAction, dir string, ctx Context, args ...s return NewConfig(ctx, getConfigArgs(action, dir, ctx, args)...) } // Prepare for getting make variables. For them to be accurate, we need to have // obtained PRODUCT_RELEASE_CONFIG_MAPS. // // Returns: // // Whether config should be called again. // // TODO: when converting product config to a declarative language, make sure // that PRODUCT_RELEASE_CONFIG_MAPS is properly handled as a separate step in // that process. func SetProductReleaseConfigMaps(ctx Context, config Config) bool { ctx.BeginTrace(metrics.RunKati, "SetProductReleaseConfigMaps") defer ctx.EndTrace() if config.SkipConfig() { // This duplicates the logic from Build to skip product config // if the user has explicitly said to. return false } releaseConfigVars := []string{ "PRODUCT_RELEASE_CONFIG_MAPS", } origValue, _ := config.environ.Get("PRODUCT_RELEASE_CONFIG_MAPS") // Get the PRODUCT_RELEASE_CONFIG_MAPS for this product, to avoid polluting the environment // when we run product config to get the rest of the make vars. releaseMapVars, err := dumpMakeVars(ctx, config, nil, releaseConfigVars, false, "") if err != nil { ctx.Fatalln("Error getting PRODUCT_RELEASE_CONFIG_MAPS:", err) } productReleaseConfigMaps := releaseMapVars["PRODUCT_RELEASE_CONFIG_MAPS"] os.Setenv("PRODUCT_RELEASE_CONFIG_MAPS", productReleaseConfigMaps) return origValue != productReleaseConfigMaps } // storeConfigMetrics selects a set of configuration information and store in // the metrics system for further analysis. func storeConfigMetrics(ctx Context, config Config) { Loading
ui/build/dumpvars.go +3 −0 Original line number Diff line number Diff line Loading @@ -191,6 +191,9 @@ func runMakeProductConfig(ctx Context, config Config) { "TARGET_BUILD_APPS", "TARGET_BUILD_UNBUNDLED", // Additional release config maps "PRODUCT_RELEASE_CONFIG_MAPS", // compiler wrappers set up by make "CC_WRAPPER", "CXX_WRAPPER", Loading