Make the defaults property non-configurable
In order to support changing the global configuration per-module, we can't make decisions on configuration until the configuration is decided. The defaults mutator is one of the earliest mutators, and it would be helpful to run it before deciding the configuration. Bug: 361816274 Test: Presubmits Change-Id: Iee9c603d7e2601919d636345dfdedae47448db38
This commit is contained in:
@@ -28,7 +28,7 @@ type defaultsDependencyTag struct {
|
||||
var DefaultsDepTag defaultsDependencyTag
|
||||
|
||||
type defaultsProperties struct {
|
||||
Defaults proptools.Configurable[[]string]
|
||||
Defaults []string
|
||||
}
|
||||
|
||||
type DefaultableModuleBase struct {
|
||||
@@ -278,13 +278,13 @@ func RegisterDefaultsPreArchMutators(ctx RegisterMutatorsContext) {
|
||||
|
||||
func defaultsDepsMutator(ctx BottomUpMutatorContext) {
|
||||
if defaultable, ok := ctx.Module().(Defaultable); ok {
|
||||
ctx.AddDependency(ctx.Module(), DefaultsDepTag, defaultable.defaults().Defaults.GetOrDefault(ctx, nil)...)
|
||||
ctx.AddDependency(ctx.Module(), DefaultsDepTag, defaultable.defaults().Defaults...)
|
||||
}
|
||||
}
|
||||
|
||||
func defaultsMutator(ctx TopDownMutatorContext) {
|
||||
if defaultable, ok := ctx.Module().(Defaultable); ok {
|
||||
defaults := defaultable.defaults().Defaults.GetOrDefault(ctx, nil)
|
||||
defaults := defaultable.defaults().Defaults
|
||||
if len(defaults) > 0 {
|
||||
var defaultsList []Defaults
|
||||
seen := make(map[Defaults]bool)
|
||||
@@ -295,7 +295,7 @@ func defaultsMutator(ctx TopDownMutatorContext) {
|
||||
if !seen[defaults] {
|
||||
seen[defaults] = true
|
||||
defaultsList = append(defaultsList, defaults)
|
||||
return len(defaults.defaults().Defaults.GetOrDefault(ctx, nil)) > 0
|
||||
return len(defaults.defaults().Defaults) > 0
|
||||
}
|
||||
} else {
|
||||
ctx.PropertyErrorf("defaults", "module %s is not an defaults module",
|
||||
|
@@ -722,6 +722,7 @@ test {
|
||||
propInfo{Name: "Arch.X86_64.A", Type: "string", Value: "x86_64 a"},
|
||||
propInfo{Name: "B", Type: "bool", Value: "true"},
|
||||
propInfo{Name: "C", Type: "string slice", Values: []string{"default_c", "c"}},
|
||||
propInfo{Name: "Defaults", Type: "string slice", Values: []string{"foo_defaults"}},
|
||||
propInfo{Name: "Embedded_prop", Type: "string", Value: "a"},
|
||||
propInfo{Name: "Name", Type: "string", Value: "foo"},
|
||||
propInfo{Name: "Nested.E", Type: "string", Value: "nested e"},
|
||||
|
Reference in New Issue
Block a user