Remove exportable modules when generating snapshots targeting older platform
This change modifies the contents of the generated Android.bp files so that when generating a snapshot on a older platform, the "exportable" modules are removed from the bp files, as the "exportable" modules are first introduced in V and do not exist in older platforms. Bug: 345162614 Test: ABTD Change-Id: I2dba51b98deec7805bd796647a66981f237c55a9
This commit is contained in:
@@ -480,6 +480,12 @@ be unnecessary as every module in the sdk already has its own licenses property.
|
||||
// Transform the module module to make it suitable for use in the snapshot.
|
||||
module = transformModule(module, snapshotTransformer)
|
||||
module = transformModule(module, emptyClasspathContentsTransformation{})
|
||||
|
||||
targetApiLevel, err := android.ApiLevelFromUserWithConfig(ctx.Config(), s.targetBuildRelease(ctx).name)
|
||||
if err == nil && targetApiLevel.LessThan(android.ApiLevelVanillaIceCream) {
|
||||
module = transformModule(module, replaceExportablePropertiesTransformer{})
|
||||
}
|
||||
|
||||
if module != nil {
|
||||
bpFile.AddModule(module)
|
||||
}
|
||||
@@ -804,6 +810,50 @@ func (t pruneEmptySetTransformer) transformPropertySetAfterContents(_ string, pr
|
||||
}
|
||||
}
|
||||
|
||||
type replaceExportablePropertiesTransformer struct {
|
||||
identityTransformation
|
||||
}
|
||||
|
||||
var _ bpTransformer = (*replaceExportablePropertiesTransformer)(nil)
|
||||
|
||||
func handleExportableProperties[T any](value T) any {
|
||||
switch v := any(value).(type) {
|
||||
case string:
|
||||
return java.AllApiScopes.ConvertStubsLibraryExportableToEverything(v)
|
||||
case *bpPropertySet:
|
||||
v.properties = handleExportableProperties(v.properties).(map[string]interface{})
|
||||
return v
|
||||
case []string:
|
||||
result := make([]string, len(v))
|
||||
for i, elem := range v {
|
||||
result[i] = handleExportableProperties(elem).(string)
|
||||
}
|
||||
return result
|
||||
case []any:
|
||||
result := make([]any, len(v))
|
||||
for i, elem := range v {
|
||||
result[i] = handleExportableProperties(elem)
|
||||
}
|
||||
return result
|
||||
case map[string]any:
|
||||
result := make(map[string]any)
|
||||
for k, val := range v {
|
||||
result[k] = handleExportableProperties(val)
|
||||
}
|
||||
return result
|
||||
default:
|
||||
return value
|
||||
}
|
||||
}
|
||||
|
||||
func (t replaceExportablePropertiesTransformer) transformPropertySetAfterContents(name string, propertySet *bpPropertySet, tag android.BpPropertyTag) (*bpPropertySet, android.BpPropertyTag) {
|
||||
if name == "name" {
|
||||
return propertySet, tag
|
||||
}
|
||||
propertySet.properties = handleExportableProperties(propertySet.properties).(map[string]interface{})
|
||||
return propertySet, tag
|
||||
}
|
||||
|
||||
func generateBpContents(bpFile *bpFile) string {
|
||||
contents := &generatedContents{}
|
||||
contents.IndentedPrintf("// This is auto-generated. DO NOT EDIT.\n")
|
||||
|
Reference in New Issue
Block a user