Merge "Don't panic for unhandled product vars" into main
This commit is contained in:
@@ -1458,7 +1458,10 @@ func addCompatibilityConstraintForCompileMultilib(ctx *topDownMutatorContext, en
|
||||
// Returns a list of the constraint_value targets who enable this override.
|
||||
func productVariableConfigEnableAttribute(ctx *topDownMutatorContext) bazel.LabelListAttribute {
|
||||
result := bazel.LabelListAttribute{}
|
||||
productVariableProps := ProductVariableProperties(ctx, ctx.Module())
|
||||
productVariableProps, errs := ProductVariableProperties(ctx, ctx.Module())
|
||||
for _, err := range errs {
|
||||
ctx.ModuleErrorf("ProductVariableProperties error: %s", err)
|
||||
}
|
||||
if productConfigProps, exists := productVariableProps["Enabled"]; exists {
|
||||
for productConfigProp, prop := range productConfigProps {
|
||||
flag, ok := prop.(*bool)
|
||||
|
@@ -675,7 +675,8 @@ type ProductConfigProperties map[string]map[ProductConfigOrSoongConfigProperty]i
|
||||
|
||||
// ProductVariableProperties returns a ProductConfigProperties containing only the properties which
|
||||
// have been set for the given module.
|
||||
func ProductVariableProperties(ctx ArchVariantContext, module Module) ProductConfigProperties {
|
||||
func ProductVariableProperties(ctx ArchVariantContext, module Module) (ProductConfigProperties, []error) {
|
||||
var errs []error
|
||||
moduleBase := module.base()
|
||||
|
||||
productConfigProperties := ProductConfigProperties{}
|
||||
@@ -699,12 +700,15 @@ func ProductVariableProperties(ctx ArchVariantContext, module Module) ProductCon
|
||||
for namespace, namespacedVariableProps := range m.namespacedVariableProps() {
|
||||
for _, namespacedVariableProp := range namespacedVariableProps {
|
||||
variableValues := reflect.ValueOf(namespacedVariableProp).Elem().FieldByName(soongconfig.SoongConfigProperty)
|
||||
productConfigProperties.AddSoongConfigProperties(namespace, variableValues)
|
||||
err := productConfigProperties.AddSoongConfigProperties(namespace, variableValues)
|
||||
if err != nil {
|
||||
errs = append(errs, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return productConfigProperties
|
||||
return productConfigProperties, errs
|
||||
}
|
||||
|
||||
func (p *ProductConfigProperties) AddProductConfigProperty(
|
||||
@@ -826,7 +830,7 @@ func (productConfigProperties *ProductConfigProperties) AddProductConfigProperti
|
||||
|
||||
}
|
||||
|
||||
func (productConfigProperties *ProductConfigProperties) AddSoongConfigProperties(namespace string, soongConfigVariablesStruct reflect.Value) {
|
||||
func (productConfigProperties *ProductConfigProperties) AddSoongConfigProperties(namespace string, soongConfigVariablesStruct reflect.Value) error {
|
||||
//
|
||||
// Example of soong_config_variables:
|
||||
//
|
||||
@@ -923,7 +927,7 @@ func (productConfigProperties *ProductConfigProperties) AddSoongConfigProperties
|
||||
if propertyName == "Target" {
|
||||
productConfigProperties.AddSoongConfigPropertiesFromTargetStruct(namespace, variableName, proptools.PropertyNameForField(propertyOrValueName), field.Field(k))
|
||||
} else if propertyName == "Arch" || propertyName == "Multilib" {
|
||||
panic("Arch/Multilib are not currently supported in soong config variable structs")
|
||||
return fmt.Errorf("Arch/Multilib are not currently supported in soong config variable structs")
|
||||
} else {
|
||||
productConfigProperties.AddSoongConfigProperty(propertyName, namespace, variableName, proptools.PropertyNameForField(propertyOrValueName), "", field.Field(k).Interface())
|
||||
}
|
||||
@@ -934,13 +938,14 @@ func (productConfigProperties *ProductConfigProperties) AddSoongConfigProperties
|
||||
if propertyOrValueName == "Target" {
|
||||
productConfigProperties.AddSoongConfigPropertiesFromTargetStruct(namespace, variableName, "", propertyOrStruct)
|
||||
} else if propertyOrValueName == "Arch" || propertyOrValueName == "Multilib" {
|
||||
panic("Arch/Multilib are not currently supported in soong config variable structs")
|
||||
return fmt.Errorf("Arch/Multilib are not currently supported in soong config variable structs")
|
||||
} else {
|
||||
productConfigProperties.AddSoongConfigProperty(propertyOrValueName, namespace, variableName, "", "", propertyOrStruct.Interface())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (productConfigProperties *ProductConfigProperties) AddSoongConfigPropertiesFromTargetStruct(namespace, soongConfigVariableName string, soongConfigVariableValue string, targetStruct reflect.Value) {
|
||||
|
Reference in New Issue
Block a user