don't export systemserverclasspath_fragment if contents are empty
If a systemserverclasspath_fragment only contains libraries that have a higher min_sdk_version than the target build release version, then we should not export the systemserverclasspath_fragment. Before this change, the fragment was exported with an empty `contents` property which caused errors after being dropped as a prebuilt. Bug: 289183551 Test: go test ./sdk Change-Id: Ifefc6880228e4dd37f5e42b2bda31a83df785375
This commit is contained in:
@@ -455,11 +455,14 @@ be unnecessary as every module in the sdk already has its own licenses property.
|
||||
|
||||
for _, module := range builder.prebuiltOrder {
|
||||
// Prune any empty property sets.
|
||||
module = module.transform(pruneEmptySetTransformer{})
|
||||
module = transformModule(module, pruneEmptySetTransformer{})
|
||||
|
||||
// Transform the module module to make it suitable for use in the snapshot.
|
||||
module.transform(snapshotTransformer)
|
||||
bpFile.AddModule(module)
|
||||
module = transformModule(module, snapshotTransformer)
|
||||
module = transformModule(module, emptyClasspathContentsTransformation{})
|
||||
if module != nil {
|
||||
bpFile.AddModule(module)
|
||||
}
|
||||
}
|
||||
|
||||
// generate Android.bp
|
||||
@@ -835,9 +838,11 @@ type snapshotTransformation struct {
|
||||
}
|
||||
|
||||
func (t snapshotTransformation) transformModule(module *bpModule) *bpModule {
|
||||
// If the module is an internal member then use a unique name for it.
|
||||
name := module.Name()
|
||||
module.setProperty("name", t.builder.snapshotSdkMemberName(name, true))
|
||||
if module != nil {
|
||||
// If the module is an internal member then use a unique name for it.
|
||||
name := module.Name()
|
||||
module.setProperty("name", t.builder.snapshotSdkMemberName(name, true))
|
||||
}
|
||||
return module
|
||||
}
|
||||
|
||||
@@ -850,6 +855,25 @@ func (t snapshotTransformation) transformProperty(_ string, value interface{}, t
|
||||
}
|
||||
}
|
||||
|
||||
type emptyClasspathContentsTransformation struct {
|
||||
identityTransformation
|
||||
}
|
||||
|
||||
func (t emptyClasspathContentsTransformation) transformModule(module *bpModule) *bpModule {
|
||||
classpathModuleTypes := []string{
|
||||
"prebuilt_bootclasspath_fragment",
|
||||
"prebuilt_systemserverclasspath_fragment",
|
||||
}
|
||||
if module != nil && android.InList(module.moduleType, classpathModuleTypes) {
|
||||
if contents, ok := module.bpPropertySet.properties["contents"].([]string); ok {
|
||||
if len(contents) == 0 {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return module
|
||||
}
|
||||
|
||||
type pruneEmptySetTransformer struct {
|
||||
identityTransformation
|
||||
}
|
||||
|
Reference in New Issue
Block a user