From c576383336ad18aef520881ce8bd53e8ca36451f Mon Sep 17 00:00:00 2001 From: Spandan Das Date: Tue, 8 Nov 2022 18:42:16 +0000 Subject: [PATCH] Create a new product variable to gate blueprint files Users can use this feature by 1. Setting PRODUCT_INCLUDE_TAGS += in their product mk files 2. Set ``` blueprint_packge_includes { match_al: [""], } other_module_type {name: foo} other_module_type {name: bar} ``` bar and foo will be included if and only if is set Test: Unit tests in blueprint Test: TH Change-Id: I32eed4e3b5ac47fb565c62d13d8881fa984c86f4 --- android/config.go | 4 ++++ android/register.go | 1 + android/variable.go | 2 ++ cmd/soong_build/main.go | 1 + ui/build/config.go | 10 ++++++++++ ui/build/dumpvars.go | 2 ++ ui/build/soong.go | 1 + 7 files changed, 21 insertions(+) diff --git a/android/config.go b/android/config.go index 4a64b5bee..9d9ab30a5 100644 --- a/android/config.go +++ b/android/config.go @@ -1111,6 +1111,10 @@ func (c *config) ExportedNamespaces() []string { return append([]string(nil), c.productVariables.NamespacesToExport...) } +func (c *config) IncludeTags() []string { + return c.productVariables.IncludeTags +} + func (c *config) HostStaticBinaries() bool { return Bool(c.productVariables.HostStaticBinaries) } diff --git a/android/register.go b/android/register.go index 6c69cc5fd..6cfc205c3 100644 --- a/android/register.go +++ b/android/register.go @@ -161,6 +161,7 @@ type Context struct { func NewContext(config Config) *Context { ctx := &Context{blueprint.NewContext(), config} ctx.SetSrcDir(absSrcDir) + ctx.AddIncludeTags(config.IncludeTags()...) return ctx } diff --git a/android/variable.go b/android/variable.go index 28f22c9b3..97258955a 100644 --- a/android/variable.go +++ b/android/variable.go @@ -452,6 +452,8 @@ type productVariables struct { GenerateAidlNdkPlatformBackend bool `json:",omitempty"` IgnorePrefer32OnDevice bool `json:",omitempty"` + + IncludeTags []string `json:",omitempty"` } func boolPtr(v bool) *bool { diff --git a/cmd/soong_build/main.go b/cmd/soong_build/main.go index e7323dd35..f4a63a4a5 100644 --- a/cmd/soong_build/main.go +++ b/cmd/soong_build/main.go @@ -114,6 +114,7 @@ func newContext(configuration android.Config) *android.Context { ctx := android.NewContext(configuration) ctx.SetNameInterface(newNameResolver(configuration)) ctx.SetAllowMissingDependencies(configuration.AllowMissingDependencies()) + ctx.AddIncludeTags(configuration.IncludeTags()...) return ctx } diff --git a/ui/build/config.go b/ui/build/config.go index 7651a0fdf..ef2e87e0d 100644 --- a/ui/build/config.go +++ b/ui/build/config.go @@ -111,6 +111,8 @@ type configImpl struct { metricsUploader string bazelForceEnabledModules string + + includeTags []string } const srcDirFileCheck = "build/soong/root.bp" @@ -1079,6 +1081,14 @@ func (c *configImpl) Parallel() int { return c.parallel } +func (c *configImpl) GetIncludeTags() []string { + return c.includeTags +} + +func (c *configImpl) SetIncludeTags(i []string) { + c.includeTags = i +} + func (c *configImpl) HighmemParallel() int { if i, ok := c.environ.GetInt("NINJA_HIGHMEM_NUM_JOBS"); ok { return i diff --git a/ui/build/dumpvars.go b/ui/build/dumpvars.go index b3b386608..1e3e54764 100644 --- a/ui/build/dumpvars.go +++ b/ui/build/dumpvars.go @@ -139,6 +139,7 @@ func dumpMakeVars(ctx Context, config Config, goals, vars []string, write_soong_ var BannerVars = []string{ "PLATFORM_VERSION_CODENAME", "PLATFORM_VERSION", + "PRODUCT_INCLUDE_TAGS", "TARGET_PRODUCT", "TARGET_BUILD_VARIANT", "TARGET_BUILD_APPS", @@ -289,4 +290,5 @@ func runMakeProductConfig(ctx Context, config Config) { config.SetBuildBrokenDupRules(makeVars["BUILD_BROKEN_DUP_RULES"] == "true") config.SetBuildBrokenUsesNetwork(makeVars["BUILD_BROKEN_USES_NETWORK"] == "true") config.SetBuildBrokenNinjaUsesEnvVars(strings.Fields(makeVars["BUILD_BROKEN_NINJA_USES_ENV_VARS"])) + config.SetIncludeTags(strings.Fields(makeVars["PRODUCT_INCLUDE_TAGS"])) } diff --git a/ui/build/soong.go b/ui/build/soong.go index de3179a3d..b89ca20f0 100644 --- a/ui/build/soong.go +++ b/ui/build/soong.go @@ -403,6 +403,7 @@ func bootstrapBlueprint(ctx Context, config Config) { } blueprintCtx := blueprint.NewContext() + blueprintCtx.AddIncludeTags(config.GetIncludeTags()...) blueprintCtx.SetIgnoreUnknownModuleTypes(true) blueprintConfig := BlueprintConfig{ soongOutDir: config.SoongOutDir(),