Remove old SdkMemberType API for creating snapshot modules

Migrates system modules and droid stubs over to use the new API for
creating the snapshot modules and removes the old API.

Test: m nothing
Change-Id: Ia825767f1f7ee77f68cfe00f53e09e6f6bfa027f
This commit is contained in:
Paul Duffin
2020-03-20 13:35:40 +00:00
parent a551a1c2f9
commit 495ffb9ff9
4 changed files with 54 additions and 62 deletions

View File

@@ -145,10 +145,6 @@ func (s *SdkBase) RequiredSdks() SdkRefs {
return s.properties.RequiredSdks return s.properties.RequiredSdks
} }
func (s *SdkBase) BuildSnapshot(sdkModuleContext ModuleContext, builder SnapshotBuilder) {
sdkModuleContext.ModuleErrorf("module type " + sdkModuleContext.OtherModuleType(s.module) + " cannot be used in an sdk")
}
// InitSdkAwareModule initializes the SdkBase struct. This must be called by all modules including // InitSdkAwareModule initializes the SdkBase struct. This must be called by all modules including
// SdkBase. // SdkBase.
func InitSdkAwareModule(m SdkAware) { func InitSdkAwareModule(m SdkAware) {
@@ -320,17 +316,6 @@ type SdkMemberType interface {
// the module is not allowed in whichever sdk property it was added. // the module is not allowed in whichever sdk property it was added.
IsInstance(module Module) bool IsInstance(module Module) bool
// Build the snapshot for the SDK member
//
// The ModuleContext provided is for the SDK module, so information for
// variants in the supplied member can be accessed using the Other... methods.
//
// The SdkMember is guaranteed to contain variants for which the
// IsInstance(Module) method returned true.
//
// deprecated Use AddPrebuiltModule() instead.
BuildSnapshot(sdkModuleContext ModuleContext, builder SnapshotBuilder, member SdkMember)
// Add a prebuilt module that the sdk will populate. // Add a prebuilt module that the sdk will populate.
// //
// Returning nil from this will cause the sdk module type to use the deprecated BuildSnapshot // Returning nil from this will cause the sdk module type to use the deprecated BuildSnapshot
@@ -382,19 +367,6 @@ func (b *SdkMemberTypeBase) HasTransitiveSdkMembers() bool {
return b.TransitiveSdkMembers return b.TransitiveSdkMembers
} }
func (b *SdkMemberTypeBase) BuildSnapshot(sdkModuleContext ModuleContext, builder SnapshotBuilder, member SdkMember) {
panic("override AddPrebuiltModule")
}
func (b *SdkMemberTypeBase) AddPrebuiltModule(ctx SdkMemberContext, member SdkMember) BpModule {
// Returning nil causes the legacy BuildSnapshot method to be used.
return nil
}
func (b *SdkMemberTypeBase) CreateVariantPropertiesStruct() SdkMemberProperties {
panic("override me")
}
// Encapsulates the information about registered SdkMemberTypes. // Encapsulates the information about registered SdkMemberTypes.
type SdkMemberTypesRegistry struct { type SdkMemberTypesRegistry struct {
// The list of types sorted by property name. // The list of types sorted by property name.

View File

@@ -2041,18 +2041,33 @@ func (mt *droidStubsSdkMemberType) IsInstance(module android.Module) bool {
return ok return ok
} }
func (mt *droidStubsSdkMemberType) BuildSnapshot(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) { func (mt *droidStubsSdkMemberType) AddPrebuiltModule(ctx android.SdkMemberContext, member android.SdkMember) android.BpModule {
variants := member.Variants() return ctx.SnapshotBuilder().AddPrebuiltModule(member, "prebuilt_stubs_sources")
if len(variants) != 1 { }
sdkModuleContext.ModuleErrorf("sdk contains %d variants of member %q but only one is allowed", len(variants), member.Name())
} func (mt *droidStubsSdkMemberType) CreateVariantPropertiesStruct() android.SdkMemberProperties {
variant := variants[0] return &droidStubsInfoProperties{}
d, _ := variant.(*Droidstubs) }
stubsSrcJar := d.stubsSrcJar
type droidStubsInfoProperties struct {
snapshotRelativeDir := filepath.Join("java", d.Name()+"_stubs_sources") android.SdkMemberPropertiesBase
builder.UnzipToSnapshot(stubsSrcJar, snapshotRelativeDir)
StubsSrcJar android.Path
pbm := builder.AddPrebuiltModule(member, "prebuilt_stubs_sources") }
pbm.AddProperty("srcs", []string{snapshotRelativeDir})
func (p *droidStubsInfoProperties) PopulateFromVariant(ctx android.SdkMemberContext, variant android.Module) {
droidstubs := variant.(*Droidstubs)
p.StubsSrcJar = droidstubs.stubsSrcJar
}
func (p *droidStubsInfoProperties) AddToPropertySet(ctx android.SdkMemberContext, propertySet android.BpPropertySet) {
if p.StubsSrcJar != nil {
builder := ctx.SnapshotBuilder()
snapshotRelativeDir := filepath.Join("java", ctx.Name()+"_stubs_sources")
builder.UnzipToSnapshot(p.StubsSrcJar, snapshotRelativeDir)
propertySet.AddProperty("srcs", []string{snapshotRelativeDir})
}
} }

View File

@@ -242,18 +242,28 @@ func (mt *systemModulesSdkMemberType) IsInstance(module android.Module) bool {
return false return false
} }
func (mt *systemModulesSdkMemberType) BuildSnapshot(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) { func (mt *systemModulesSdkMemberType) AddPrebuiltModule(ctx android.SdkMemberContext, member android.SdkMember) android.BpModule {
variants := member.Variants() return ctx.SnapshotBuilder().AddPrebuiltModule(member, "java_system_modules_import")
if len(variants) != 1 { }
sdkModuleContext.ModuleErrorf("sdk contains %d variants of member %q but only one is allowed", len(variants), member.Name())
for _, variant := range variants { type systemModulesInfoProperties struct {
sdkModuleContext.ModuleErrorf(" %q", variant) android.SdkMemberPropertiesBase
}
} Libs []string
variant := variants[0] }
systemModule := variant.(*SystemModules)
func (mt *systemModulesSdkMemberType) CreateVariantPropertiesStruct() android.SdkMemberProperties {
pbm := builder.AddPrebuiltModule(member, "java_system_modules_import") return &systemModulesInfoProperties{}
// Add the references to the libraries that form the system module. }
pbm.AddPropertyWithTag("libs", systemModule.properties.Libs, builder.SdkMemberReferencePropertyTag(true))
func (p *systemModulesInfoProperties) PopulateFromVariant(ctx android.SdkMemberContext, variant android.Module) {
systemModule := variant.(*SystemModules)
p.Libs = systemModule.properties.Libs
}
func (p *systemModulesInfoProperties) AddToPropertySet(ctx android.SdkMemberContext, propertySet android.BpPropertySet) {
if len(p.Libs) > 0 {
// Add the references to the libraries that form the system module.
propertySet.AddPropertyWithTag("libs", p.Libs, ctx.SnapshotBuilder().SdkMemberReferencePropertyTag(true))
}
} }

View File

@@ -258,12 +258,7 @@ func (s *sdk) buildSnapshot(ctx android.ModuleContext, sdkVariants []*sdk) andro
memberCtx := &memberContext{ctx, builder, memberType, member.name} memberCtx := &memberContext{ctx, builder, memberType, member.name}
prebuiltModule := memberType.AddPrebuiltModule(memberCtx, member) prebuiltModule := memberType.AddPrebuiltModule(memberCtx, member)
if prebuiltModule == nil { s.createMemberSnapshot(memberCtx, member, prebuiltModule)
// Fall back to legacy method of building a snapshot
memberType.BuildSnapshot(ctx, builder, member)
} else {
s.createMemberSnapshot(memberCtx, member, prebuiltModule)
}
} }
// Create a transformer that will transform an unversioned module into a versioned module. // Create a transformer that will transform an unversioned module into a versioned module.