diff --git a/android/sdk.go b/android/sdk.go index 7f292b4e6..66094cda0 100644 --- a/android/sdk.go +++ b/android/sdk.go @@ -145,10 +145,6 @@ func (s *SdkBase) RequiredSdks() SdkRefs { 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 // SdkBase. func InitSdkAwareModule(m SdkAware) { @@ -320,17 +316,6 @@ type SdkMemberType interface { // the module is not allowed in whichever sdk property it was added. 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. // // 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 } -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. type SdkMemberTypesRegistry struct { // The list of types sorted by property name. diff --git a/java/droiddoc.go b/java/droiddoc.go index 1ac7444a5..b0efaa5bd 100644 --- a/java/droiddoc.go +++ b/java/droiddoc.go @@ -2041,18 +2041,33 @@ func (mt *droidStubsSdkMemberType) IsInstance(module android.Module) bool { return ok } -func (mt *droidStubsSdkMemberType) BuildSnapshot(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) { - variants := member.Variants() - if len(variants) != 1 { - sdkModuleContext.ModuleErrorf("sdk contains %d variants of member %q but only one is allowed", len(variants), member.Name()) - } - variant := variants[0] - d, _ := variant.(*Droidstubs) - stubsSrcJar := d.stubsSrcJar - - snapshotRelativeDir := filepath.Join("java", d.Name()+"_stubs_sources") - builder.UnzipToSnapshot(stubsSrcJar, snapshotRelativeDir) - - pbm := builder.AddPrebuiltModule(member, "prebuilt_stubs_sources") - pbm.AddProperty("srcs", []string{snapshotRelativeDir}) +func (mt *droidStubsSdkMemberType) AddPrebuiltModule(ctx android.SdkMemberContext, member android.SdkMember) android.BpModule { + return ctx.SnapshotBuilder().AddPrebuiltModule(member, "prebuilt_stubs_sources") +} + +func (mt *droidStubsSdkMemberType) CreateVariantPropertiesStruct() android.SdkMemberProperties { + return &droidStubsInfoProperties{} +} + +type droidStubsInfoProperties struct { + android.SdkMemberPropertiesBase + + StubsSrcJar android.Path +} + +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}) + } } diff --git a/java/system_modules.go b/java/system_modules.go index 40031cb05..7394fd547 100644 --- a/java/system_modules.go +++ b/java/system_modules.go @@ -242,18 +242,28 @@ func (mt *systemModulesSdkMemberType) IsInstance(module android.Module) bool { return false } -func (mt *systemModulesSdkMemberType) BuildSnapshot(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) { - variants := member.Variants() - 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 { - sdkModuleContext.ModuleErrorf(" %q", variant) - } - } - variant := variants[0] - systemModule := variant.(*SystemModules) - - pbm := builder.AddPrebuiltModule(member, "java_system_modules_import") - // Add the references to the libraries that form the system module. - pbm.AddPropertyWithTag("libs", systemModule.properties.Libs, builder.SdkMemberReferencePropertyTag(true)) +func (mt *systemModulesSdkMemberType) AddPrebuiltModule(ctx android.SdkMemberContext, member android.SdkMember) android.BpModule { + return ctx.SnapshotBuilder().AddPrebuiltModule(member, "java_system_modules_import") +} + +type systemModulesInfoProperties struct { + android.SdkMemberPropertiesBase + + Libs []string +} + +func (mt *systemModulesSdkMemberType) CreateVariantPropertiesStruct() android.SdkMemberProperties { + return &systemModulesInfoProperties{} +} + +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)) + } } diff --git a/sdk/update.go b/sdk/update.go index 3ff0c1d1c..fef430d47 100644 --- a/sdk/update.go +++ b/sdk/update.go @@ -258,12 +258,7 @@ func (s *sdk) buildSnapshot(ctx android.ModuleContext, sdkVariants []*sdk) andro memberCtx := &memberContext{ctx, builder, memberType, member.name} prebuiltModule := memberType.AddPrebuiltModule(memberCtx, member) - if prebuiltModule == nil { - // Fall back to legacy method of building a snapshot - memberType.BuildSnapshot(ctx, builder, member) - } else { - s.createMemberSnapshot(memberCtx, member, prebuiltModule) - } + s.createMemberSnapshot(memberCtx, member, prebuiltModule) } // Create a transformer that will transform an unversioned module into a versioned module.