Introduce BazelStringOrLabelFromProp.
Soong supports string properties, but they are overloaded, and can mean one of three things: * path reference * module reference * string literal Bazel has different types: label and string attributes. Thus there needs to be a way to categorize them correctly in bp2build. This CL introduces a new function to be used on properties like apex_key.private_key / apex_key.public_key, as well as android_app.certificate / apex.certificate. It is important to disambiguate the prop betenn a string literal attribute or file/rule target label attribute, so this functions does just that. The new attributes are then further handled by their respective macros (apex_key, android_binary, apex). Bug: 253557437 Fixes: 253557437 Test: presubmits, new tests Change-Id: Id8111cdd60d3aabcae7d17fe9da84d0ee3966023
This commit is contained in:
18
apex/apex.go
18
apex/apex.go
@@ -2665,12 +2665,13 @@ func (o *OverrideApex) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
|
||||
|
||||
// Certificate
|
||||
if overridableProperties.Certificate == nil {
|
||||
// delegated to the rule attr default
|
||||
attrs.Certificate = nil
|
||||
// If overridableProperties.Certificate is nil, clear this out as
|
||||
// well with zeroed structs, so the override_apex does not use the
|
||||
// base apex's certificate.
|
||||
attrs.Certificate = bazel.LabelAttribute{}
|
||||
attrs.Certificate_name = bazel.StringAttribute{}
|
||||
} else {
|
||||
certificateName, certificate := java.ParseCertificateToAttribute(ctx, overridableProperties.Certificate)
|
||||
attrs.Certificate_name = certificateName
|
||||
attrs.Certificate = certificate
|
||||
attrs.Certificate, attrs.Certificate_name = android.BazelStringOrLabelFromProp(ctx, overridableProperties.Certificate)
|
||||
}
|
||||
|
||||
// Prebuilts
|
||||
@@ -3346,8 +3347,8 @@ type bazelApexBundleAttributes struct {
|
||||
Android_manifest bazel.LabelAttribute
|
||||
File_contexts bazel.LabelAttribute
|
||||
Key bazel.LabelAttribute
|
||||
Certificate *bazel.Label // used when the certificate prop is a module
|
||||
Certificate_name *string // used when the certificate prop is a string
|
||||
Certificate bazel.LabelAttribute // used when the certificate prop is a module
|
||||
Certificate_name bazel.StringAttribute // used when the certificate prop is a string
|
||||
Min_sdk_version *string
|
||||
Updatable bazel.BoolAttribute
|
||||
Installable bazel.BoolAttribute
|
||||
@@ -3409,7 +3410,8 @@ func convertWithBp2build(a *apexBundle, ctx android.TopDownMutatorContext) (baze
|
||||
keyLabelAttribute.SetValue(android.BazelLabelForModuleDepSingle(ctx, *a.overridableProperties.Key))
|
||||
}
|
||||
|
||||
certificateName, certificate := java.ParseCertificateToAttribute(ctx, a.overridableProperties.Certificate)
|
||||
// Certificate
|
||||
certificate, certificateName := android.BazelStringOrLabelFromProp(ctx, a.overridableProperties.Certificate)
|
||||
|
||||
nativeSharedLibs := &convertedNativeSharedLibs{
|
||||
Native_shared_libs_32: bazel.LabelListAttribute{},
|
||||
|
Reference in New Issue
Block a user