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_values.go",
|
||||
"aconfig_value_set.go",
|
||||
"all_aconfig_declarations.go",
|
||||
"init.go",
|
||||
"java_aconfig_library.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,
|
||||
})
|
||||
|
||||
// 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() {
|
||||
|
@ -67,4 +76,5 @@ func registerBuildComponents(ctx android.RegistrationContext) {
|
|||
ctx.RegisterModuleType("aconfig_values", ValuesFactory)
|
||||
ctx.RegisterModuleType("aconfig_value_set", ValueSetFactory)
|
||||
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
|
||||
}
|
||||
|
||||
// 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
|
||||
// returns them joined together with " " as separator.
|
||||
func JoinWithPrefix(strs []string, prefix string) string {
|
||||
|
|
Loading…
Reference in a new issue