Stop requiring apex_available on java_library members of sdks
Previously, adding java_library to an sdk required that the names of any APEXes that transitively compiled against it were added to its apex_available property. This change removes that requirement. Also corrects the dependency path in the TestApexAvailable_IndirectDep error which previously passed through "shared from static" static dependency tags even though those are explicitly NOT followed when checking apex_available settings. Bug: 152878661 Test: m droid Change-Id: I995ed38956c1bc210b09494812de012fed9f9232
This commit is contained in:
16
sdk/sdk.go
16
sdk/sdk.go
@@ -312,7 +312,7 @@ func RegisterPreDepsMutators(ctx android.RegisterMutatorsContext) {
|
||||
ctx.BottomUp("SdkMemberInterVersion", memberInterVersionMutator).Parallel()
|
||||
}
|
||||
|
||||
// RegisterPostDepshMutators registers post-deps mutators to support modules implementing SdkAware
|
||||
// RegisterPostDepsMutators registers post-deps mutators to support modules implementing SdkAware
|
||||
// interface and the sdk module type. This function has been made public to be called by tests
|
||||
// outside of the sdk package
|
||||
func RegisterPostDepsMutators(ctx android.RegisterMutatorsContext) {
|
||||
@@ -431,7 +431,7 @@ func sdkDepsReplaceMutator(mctx android.BottomUpMutatorContext) {
|
||||
}
|
||||
}
|
||||
|
||||
// Step 6: ensure that the dependencies from outside of the APEX are all from the required SDKs
|
||||
// Step 6: ensure that the dependencies outside of the APEX are all from the required SDKs
|
||||
func sdkRequirementsMutator(mctx android.TopDownMutatorContext) {
|
||||
if m, ok := mctx.Module().(interface {
|
||||
android.DepIsInSameApex
|
||||
@@ -442,12 +442,20 @@ func sdkRequirementsMutator(mctx android.TopDownMutatorContext) {
|
||||
return
|
||||
}
|
||||
mctx.VisitDirectDeps(func(dep android.Module) {
|
||||
if mctx.OtherModuleDependencyTag(dep) == android.DefaultsDepTag {
|
||||
tag := mctx.OtherModuleDependencyTag(dep)
|
||||
if tag == android.DefaultsDepTag {
|
||||
// dependency to defaults is always okay
|
||||
return
|
||||
}
|
||||
|
||||
// If the dep is from outside of the APEX, but is not in any of the
|
||||
// Ignore the dependency from the unversioned member to any versioned members as an
|
||||
// apex that depends on the unversioned member will not also be depending on a versioned
|
||||
// member.
|
||||
if _, ok := tag.(sdkMemberVersionedDepTag); ok {
|
||||
return
|
||||
}
|
||||
|
||||
// If the dep is outside of the APEX, but is not in any of the
|
||||
// required SDKs, we know that the dep is a violation.
|
||||
if sa, ok := dep.(android.SdkAware); ok {
|
||||
if !m.DepIsInSameApex(mctx, dep) && !requiredSdks.Contains(sa.ContainingSdk()) {
|
||||
|
Reference in New Issue
Block a user