Add aconfig dump of all aconfig_declarations modules.
Bug: 283910439 Test: m dist ; m all_aconfig_declarations ; gqui from all_aconfig_declarations.pb proto /source/aosp-master-with-phones/build/make/tools/aconfig/protos/aconfig.proto:android.aconfig.parsed_flags Change-Id: Ia89c7f9c53fa1600fa2f9c8ea01319e949e09f58
This commit is contained in:
parent
a41c679fe1
commit
2f99c47a87
4 changed files with 84 additions and 0 deletions
|
@ -19,6 +19,7 @@ bootstrap_go_package {
|
||||||
"aconfig_declarations.go",
|
"aconfig_declarations.go",
|
||||||
"aconfig_values.go",
|
"aconfig_values.go",
|
||||||
"aconfig_value_set.go",
|
"aconfig_value_set.go",
|
||||||
|
"all_aconfig_declarations.go",
|
||||||
"init.go",
|
"init.go",
|
||||||
"java_aconfig_library.go",
|
"java_aconfig_library.go",
|
||||||
"testing.go",
|
"testing.go",
|
||||||
|
|
63
aconfig/all_aconfig_declarations.go
Normal file
63
aconfig/all_aconfig_declarations.go
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
// Copyright 2023 Google Inc. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package aconfig
|
||||||
|
|
||||||
|
import (
|
||||||
|
"android/soong/android"
|
||||||
|
)
|
||||||
|
|
||||||
|
// A singleton module that collects all of the aconfig flags declared in the
|
||||||
|
// tree into a single combined file for export to the external flag setting
|
||||||
|
// server (inside Google it's Gantry).
|
||||||
|
//
|
||||||
|
// Note that this is ALL aconfig_declarations modules present in the tree, not just
|
||||||
|
// ones that are relevant to the product currently being built, so that that infra
|
||||||
|
// doesn't need to pull from multiple builds and merge them.
|
||||||
|
func AllAconfigDeclarationsFactory() android.Singleton {
|
||||||
|
return &allAconfigDeclarationsSingleton{}
|
||||||
|
}
|
||||||
|
|
||||||
|
type allAconfigDeclarationsSingleton struct {
|
||||||
|
intermediatePath android.OutputPath
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *allAconfigDeclarationsSingleton) GenerateBuildActions(ctx android.SingletonContext) {
|
||||||
|
// Find all of the aconfig_declarations modules
|
||||||
|
var cacheFiles android.Paths
|
||||||
|
ctx.VisitAllModules(func(module android.Module) {
|
||||||
|
if !ctx.ModuleHasProvider(module, declarationsProviderKey) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
decl := ctx.ModuleProvider(module, declarationsProviderKey).(declarationsProviderData)
|
||||||
|
cacheFiles = append(cacheFiles, decl.IntermediatePath)
|
||||||
|
})
|
||||||
|
|
||||||
|
// Generate build action for aconfig
|
||||||
|
this.intermediatePath = android.PathForIntermediates(ctx, "all_aconfig_declarations.pb")
|
||||||
|
ctx.Build(pctx, android.BuildParams{
|
||||||
|
Rule: allDeclarationsRule,
|
||||||
|
Inputs: cacheFiles,
|
||||||
|
Output: this.intermediatePath,
|
||||||
|
Description: "all_aconfig_declarations",
|
||||||
|
Args: map[string]string{
|
||||||
|
"cache_files": android.JoinPathsWithPrefix(cacheFiles, "--cache "),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
ctx.Phony("all_aconfig_declarations", this.intermediatePath)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *allAconfigDeclarationsSingleton) MakeVars(ctx android.MakeVarsContext) {
|
||||||
|
ctx.DistForGoal("droid", this.intermediatePath)
|
||||||
|
}
|
|
@ -54,6 +54,15 @@ var (
|
||||||
},
|
},
|
||||||
Restat: true,
|
Restat: true,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// For all_aconfig_declarations
|
||||||
|
allDeclarationsRule = pctx.AndroidStaticRule("all_aconfig_declarations_dump",
|
||||||
|
blueprint.RuleParams{
|
||||||
|
Command: `${aconfig} dump --format protobuf --out ${out} ${cache_files}`,
|
||||||
|
CommandDeps: []string{
|
||||||
|
"${aconfig}",
|
||||||
|
},
|
||||||
|
}, "cache_files")
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -67,4 +76,5 @@ func registerBuildComponents(ctx android.RegistrationContext) {
|
||||||
ctx.RegisterModuleType("aconfig_values", ValuesFactory)
|
ctx.RegisterModuleType("aconfig_values", ValuesFactory)
|
||||||
ctx.RegisterModuleType("aconfig_value_set", ValueSetFactory)
|
ctx.RegisterModuleType("aconfig_value_set", ValueSetFactory)
|
||||||
ctx.RegisterModuleType("java_aconfig_library", JavaDeclarationsLibraryFactory)
|
ctx.RegisterModuleType("java_aconfig_library", JavaDeclarationsLibraryFactory)
|
||||||
|
ctx.RegisterParallelSingletonType("all_aconfig_declarations", AllAconfigDeclarationsFactory)
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,16 @@ func Concat[T any](s1, s2 []T) []T {
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// JoinPathsWithPrefix converts the paths to strings, prefixes them
|
||||||
|
// with prefix and then joins them separated by " ".
|
||||||
|
func JoinPathsWithPrefix(paths []Path, prefix string) string {
|
||||||
|
strs := make([]string, len(paths))
|
||||||
|
for i := range paths {
|
||||||
|
strs[i] = paths[i].String()
|
||||||
|
}
|
||||||
|
return JoinWithPrefixAndSeparator(strs, prefix, " ")
|
||||||
|
}
|
||||||
|
|
||||||
// JoinWithPrefix prepends the prefix to each string in the list and
|
// JoinWithPrefix prepends the prefix to each string in the list and
|
||||||
// returns them joined together with " " as separator.
|
// returns them joined together with " " as separator.
|
||||||
func JoinWithPrefix(strs []string, prefix string) string {
|
func JoinWithPrefix(strs []string, prefix string) string {
|
||||||
|
|
Loading…
Reference in a new issue