Merge "Make licenseModule SdkAware"

This commit is contained in:
Paul Duffin 2021-05-07 12:31:03 +00:00 committed by Gerrit Code Review
commit e746f30a0b
3 changed files with 15 additions and 3 deletions

View file

@ -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)

View file

@ -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
// <name>@<version>
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 {

View file

@ -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 <sdkmember> with <sdkmember@required-version>
// 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)
}
}()