summaryrefslogtreecommitdiff
path: root/sdk/update.go
diff options
context:
space:
mode:
author Jihoon Kang <jihoonkang@google.com> 2024-06-10 21:30:51 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2024-06-10 21:30:51 +0000
commit789a53f28c300860fa82b29deb38a8e4d475b51a (patch)
tree7e92975a250f2de01797c312ff6701c7b4e34679 /sdk/update.go
parent0498d4f4786c8bac93bed75865b37338266a455f (diff)
parent871393aa370a8988300ecd096fdee8e93195b502 (diff)
Merge "Remove exportable modules when generating snapshots targeting older platform" into main am: 0030148fcb am: 871393aa37
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3119791 Change-Id: I983606933284aa221a7d96e40a132d21a5eae26c Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'sdk/update.go')
-rw-r--r--sdk/update.go50
1 files changed, 50 insertions, 0 deletions
diff --git a/sdk/update.go b/sdk/update.go
index afecf9fe2..0a97fd9ee 100644
--- a/sdk/update.go
+++ b/sdk/update.go
@@ -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")