Merge "Make all SdkMemberTypes support transitive member deps" am: dbb490359a am: e1fab6a30b

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1699188

Change-Id: Ia82883e6085db6f19ed5c5307b78e72959cd4da2
This commit is contained in:
Paul Duffin 2021-05-07 12:44:10 +00:00 committed by Automerger Merge Worker
commit 8d108bac17
4 changed files with 11 additions and 27 deletions

View File

@ -302,9 +302,7 @@ type SdkMember interface {
}
// SdkMemberTypeDependencyTag is the interface that a tag must implement in order to allow the
// dependent module to be automatically added to the sdk. In order for this to work the
// SdkMemberType of the depending module must return true from
// SdkMemberType.HasTransitiveSdkMembers.
// dependent module to be automatically added to the sdk.
type SdkMemberTypeDependencyTag interface {
blueprint.DependencyTag
@ -385,13 +383,6 @@ type SdkMemberType interface {
// True if the member type supports the sdk/sdk_snapshot, false otherwise.
UsableWithSdkAndSdkSnapshot() bool
// Return true if modules of this type can have dependencies which should be
// treated as if they are sdk members.
//
// Any dependency that is to be treated as a member of the sdk needs to implement
// SdkAware and be added with an SdkMemberTypeDependencyTag tag.
HasTransitiveSdkMembers() bool
// Return true if prebuilt host artifacts may be specific to the host OS. Only
// applicable to modules where HostSupported() is true. If this is true,
// snapshots will list each host OS variant explicitly and disable all other
@ -457,10 +448,9 @@ type SdkMemberType interface {
// Base type for SdkMemberType implementations.
type SdkMemberTypeBase struct {
PropertyName string
SupportsSdk bool
TransitiveSdkMembers bool
HostOsDependent bool
PropertyName string
SupportsSdk bool
HostOsDependent bool
}
func (b *SdkMemberTypeBase) SdkPropertyName() string {
@ -471,10 +461,6 @@ func (b *SdkMemberTypeBase) UsableWithSdkAndSdkSnapshot() bool {
return b.SupportsSdk
}
func (b *SdkMemberTypeBase) HasTransitiveSdkMembers() bool {
return b.TransitiveSdkMembers
}
func (b *SdkMemberTypeBase) IsHostOsDependent() bool {
return b.HostOsDependent
}

View File

@ -32,9 +32,8 @@ func init() {
android.RegisterSdkMemberType(&bootclasspathFragmentMemberType{
SdkMemberTypeBase: android.SdkMemberTypeBase{
PropertyName: "bootclasspath_fragments",
SupportsSdk: true,
TransitiveSdkMembers: true,
PropertyName: "bootclasspath_fragments",
SupportsSdk: true,
},
})
}

View File

@ -35,9 +35,8 @@ func init() {
// Register sdk member types.
android.RegisterSdkMemberType(&systemModulesSdkMemberType{
android.SdkMemberTypeBase{
PropertyName: "java_system_modules",
SupportsSdk: true,
TransitiveSdkMembers: true,
PropertyName: "java_system_modules",
SupportsSdk: true,
},
})
}

View File

@ -133,9 +133,9 @@ func (s *sdk) collectMembers(ctx android.ModuleContext) {
export := memberTag.ExportMember()
s.memberVariantDeps = append(s.memberVariantDeps, sdkMemberVariantDep{s, memberType, child.(android.SdkAware), export})
// If the member type supports transitive sdk members then recurse down into
// its dependencies, otherwise exit traversal.
return memberType.HasTransitiveSdkMembers()
// Recurse down into the member's dependencies as it may have dependencies that need to be
// automatically added to the sdk.
return true
}
return false