diff --git a/android/license.go b/android/license.go index 3bc6199b2..cb375a2e5 100644 --- a/android/license.go +++ b/android/license.go @@ -51,6 +51,7 @@ type licenseProperties struct { type licenseModule struct { ModuleBase DefaultableModuleBase + SdkBase properties licenseProperties } @@ -75,6 +76,7 @@ func LicenseFactory() Module { // The visibility property needs to be checked and parsed by the visibility module. setPrimaryVisibilityProperty(module, "visibility", &module.properties.Visibility) + InitSdkAwareModule(module) initAndroidModuleBase(module) InitDefaultableModule(module) diff --git a/android/sdk.go b/android/sdk.go index 8992bab35..95924561a 100644 --- a/android/sdk.go +++ b/android/sdk.go @@ -41,6 +41,11 @@ type sdkAwareWithoutModule interface { sdkBase() *SdkBase MakeMemberOf(sdk SdkRef) IsInAnySdk() bool + + // IsVersioned determines whether the module is versioned, i.e. has a name of the form + // @ + IsVersioned() bool + ContainingSdk() SdkRef MemberName() string BuildWithSdks(sdks SdkRefs) @@ -140,6 +145,11 @@ func (s *SdkBase) IsInAnySdk() bool { return s.properties.ContainingSdk != nil } +// IsVersioned returns true if this module is versioned. +func (s *SdkBase) IsVersioned() bool { + return strings.Contains(s.module.Name(), "@") +} + // ContainingSdk returns the SDK that this module is a member of func (s *SdkBase) ContainingSdk() SdkRef { if s.properties.ContainingSdk != nil { diff --git a/sdk/sdk.go b/sdk/sdk.go index 2f56de69d..624c0fa9b 100644 --- a/sdk/sdk.go +++ b/sdk/sdk.go @@ -444,7 +444,7 @@ func memberDepsMutator(mctx android.TopDownMutatorContext) { // built with libfoo.mysdk.11 and libfoo.mysdk.12, respectively depending on which sdk they are // using. func memberInterVersionMutator(mctx android.BottomUpMutatorContext) { - if m, ok := mctx.Module().(android.SdkAware); ok && m.IsInAnySdk() { + if m, ok := mctx.Module().(android.SdkAware); ok && m.IsInAnySdk() && m.IsVersioned() { if !m.ContainingSdk().Unversioned() { memberName := m.MemberName() tag := sdkMemberVersionedDepTag{member: memberName, version: m.ContainingSdk().Version} @@ -483,7 +483,7 @@ func sdkDepsMutator(mctx android.TopDownMutatorContext) { // Step 5: if libfoo.mysdk.11 is in the context where version 11 of mysdk is requested, the // versioned module is used instead of the un-versioned (in-development) module libfoo func sdkDepsReplaceMutator(mctx android.BottomUpMutatorContext) { - if versionedSdkMember, ok := mctx.Module().(android.SdkAware); ok && versionedSdkMember.IsInAnySdk() { + if versionedSdkMember, ok := mctx.Module().(android.SdkAware); ok && versionedSdkMember.IsInAnySdk() && versionedSdkMember.IsVersioned() { if sdk := versionedSdkMember.ContainingSdk(); !sdk.Unversioned() { // Only replace dependencies to with // if the depending module requires it. e.g. @@ -499,7 +499,7 @@ func sdkDepsReplaceMutator(mctx android.BottomUpMutatorContext) { // TODO(b/183204176): Remove this after fixing. defer func() { if r := recover(); r != nil { - mctx.ModuleErrorf("%s", r) + mctx.ModuleErrorf("sdkDepsReplaceMutator %s", r) } }()