Merge "Support soong config value variables on Configurable properties" into main am: c15b0234e9
am: 341d2f51ba
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3097980 Change-Id: Ibdf179121877bafd0862194d5d66e55fb2977c43 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -729,6 +729,38 @@ func TestSelects(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "Soong config value variable on configurable property",
|
||||||
|
bp: `
|
||||||
|
soong_config_module_type {
|
||||||
|
name: "soong_config_my_module_type",
|
||||||
|
module_type: "my_module_type",
|
||||||
|
config_namespace: "my_namespace",
|
||||||
|
value_variables: ["my_variable"],
|
||||||
|
properties: ["my_string", "my_string_list"],
|
||||||
|
}
|
||||||
|
|
||||||
|
soong_config_my_module_type {
|
||||||
|
name: "foo",
|
||||||
|
my_string_list: ["before.cpp"],
|
||||||
|
soong_config_variables: {
|
||||||
|
my_variable: {
|
||||||
|
my_string_list: ["after_%s.cpp"],
|
||||||
|
my_string: "%s.cpp",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
provider: selectsTestProvider{
|
||||||
|
my_string: proptools.StringPtr("foo.cpp"),
|
||||||
|
my_string_list: &[]string{"before.cpp", "after_foo.cpp"},
|
||||||
|
},
|
||||||
|
vendorVars: map[string]map[string]string{
|
||||||
|
"my_namespace": {
|
||||||
|
"my_variable": "foo",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
@@ -736,6 +768,7 @@ func TestSelects(t *testing.T) {
|
|||||||
fixtures := GroupFixturePreparers(
|
fixtures := GroupFixturePreparers(
|
||||||
PrepareForTestWithDefaults,
|
PrepareForTestWithDefaults,
|
||||||
PrepareForTestWithArchMutator,
|
PrepareForTestWithArchMutator,
|
||||||
|
PrepareForTestWithSoongConfigModuleBuildComponents,
|
||||||
FixtureRegisterWithContext(func(ctx RegistrationContext) {
|
FixtureRegisterWithContext(func(ctx RegistrationContext) {
|
||||||
ctx.RegisterModuleType("my_module_type", newSelectsMockModule)
|
ctx.RegisterModuleType("my_module_type", newSelectsMockModule)
|
||||||
ctx.RegisterModuleType("my_defaults", newSelectsMockModuleDefaults)
|
ctx.RegisterModuleType("my_defaults", newSelectsMockModuleDefaults)
|
||||||
@@ -790,7 +823,7 @@ func (p *selectsTestProvider) String() string {
|
|||||||
myStringStr = *p.my_string
|
myStringStr = *p.my_string
|
||||||
}
|
}
|
||||||
myNonconfigurableStringStr := "nil"
|
myNonconfigurableStringStr := "nil"
|
||||||
if p.my_string != nil {
|
if p.my_nonconfigurable_string != nil {
|
||||||
myNonconfigurableStringStr = *p.my_nonconfigurable_string
|
myNonconfigurableStringStr = *p.my_nonconfigurable_string
|
||||||
}
|
}
|
||||||
return fmt.Sprintf(`selectsTestProvider {
|
return fmt.Sprintf(`selectsTestProvider {
|
||||||
|
@@ -733,11 +733,18 @@ func (s *valueVariable) printfIntoPropertyRecursive(fieldName []string, propStru
|
|||||||
case reflect.Bool:
|
case reflect.Bool:
|
||||||
// Nothing to do
|
// Nothing to do
|
||||||
case reflect.Struct:
|
case reflect.Struct:
|
||||||
|
if proptools.IsConfigurable(field.Type()) {
|
||||||
|
if err := proptools.PrintfIntoConfigurable(field.Interface(), configValue); err != nil {
|
||||||
|
fieldName = append(fieldName, propStruct.Type().Field(i).Name)
|
||||||
|
return fmt.Errorf("soong_config_variables.%s.%s: %s", s.variable, strings.Join(fieldName, "."), err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
fieldName = append(fieldName, propStruct.Type().Field(i).Name)
|
fieldName = append(fieldName, propStruct.Type().Field(i).Name)
|
||||||
if err := s.printfIntoPropertyRecursive(fieldName, field, configValue); err != nil {
|
if err := s.printfIntoPropertyRecursive(fieldName, field, configValue); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
fieldName = fieldName[:len(fieldName)-1]
|
fieldName = fieldName[:len(fieldName)-1]
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
fieldName = append(fieldName, propStruct.Type().Field(i).Name)
|
fieldName = append(fieldName, propStruct.Type().Field(i).Name)
|
||||||
return fmt.Errorf("soong_config_variables.%s.%s: unsupported property type %q", s.variable, strings.Join(fieldName, "."), kind)
|
return fmt.Errorf("soong_config_variables.%s.%s: unsupported property type %q", s.variable, strings.Join(fieldName, "."), kind)
|
||||||
|
Reference in New Issue
Block a user