From 2d3da31d41544212fb0dbf1343bc50b83f51f15f Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Thu, 6 May 2021 12:02:27 +0100 Subject: [PATCH] Make all SdkMemberTypes support transitive member deps Previously, only those SdkMemberTypes which had specific need to automatically add some of their dependencies as sdk members would cause the sdk to visit their transitive dependencies. However, as any module can have dependencies on license modules and license modules need to be included in the sdk then it needs to visit transitive dependencies of all members. So, this change removes the support for allowing an SdkMemberType to control whether its transitive dependencies are visited and just visits them all. This does not have any effect on sdk snapshots as in order for a dependency to be added to an sdk it needs to be added with a tag that implements SdkMemberTypeDependencyTag and the only tags that implement this are used by SdkMemberTypes that had enabled transitive members. Bug: 181569894 Test: m art-module-sdk art-module-host-exports art-module-test-exports - verify that this change has no effect on the generated snapshots Change-Id: If0293af0237aa7e39335e5b8383a41c023ff5853 --- android/sdk.go | 22 ++++------------------ java/bootclasspath_fragment.go | 5 ++--- java/system_modules.go | 5 ++--- sdk/update.go | 6 +++--- 4 files changed, 11 insertions(+), 27 deletions(-) diff --git a/android/sdk.go b/android/sdk.go index 95924561a..0adfd89c3 100644 --- a/android/sdk.go +++ b/android/sdk.go @@ -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 } diff --git a/java/bootclasspath_fragment.go b/java/bootclasspath_fragment.go index 8fe362a56..6270b5b35 100644 --- a/java/bootclasspath_fragment.go +++ b/java/bootclasspath_fragment.go @@ -32,9 +32,8 @@ func init() { android.RegisterSdkMemberType(&bootclasspathFragmentMemberType{ SdkMemberTypeBase: android.SdkMemberTypeBase{ - PropertyName: "bootclasspath_fragments", - SupportsSdk: true, - TransitiveSdkMembers: true, + PropertyName: "bootclasspath_fragments", + SupportsSdk: true, }, }) } diff --git a/java/system_modules.go b/java/system_modules.go index 473838541..d0dc74adc 100644 --- a/java/system_modules.go +++ b/java/system_modules.go @@ -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, }, }) } diff --git a/sdk/update.go b/sdk/update.go index 72b02e831..457cbd905 100644 --- a/sdk/update.go +++ b/sdk/update.go @@ -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