Add ModuleWithMinSdkVersionCheck type.
This is to help following refactor for individual modules to have their own version of checking where needed. For example, apk in apex may want to enforce it's own version of CheckMinSdkVersion. Bug: 205923322 Test: presubmit Change-Id: Ia2fad6c52af39e21f65385bcb283f1e3adab5548
This commit is contained in:
@@ -908,16 +908,17 @@ var minSdkVersionAllowlist = func(apiMap map[string]int) map[string]ApiLevel {
|
||||
//
|
||||
// Return true if the `to` module should be visited, false otherwise.
|
||||
type PayloadDepsCallback func(ctx ModuleContext, from blueprint.Module, to ApexModule, externalDep bool) bool
|
||||
type WalkPayloadDepsFunc func(ctx ModuleContext, do PayloadDepsCallback)
|
||||
|
||||
// UpdatableModule represents updatable APEX/APK
|
||||
type UpdatableModule interface {
|
||||
// ModuleWithMinSdkVersionCheck represents a module that implements min_sdk_version checks
|
||||
type ModuleWithMinSdkVersionCheck interface {
|
||||
Module
|
||||
WalkPayloadDeps(ctx ModuleContext, do PayloadDepsCallback)
|
||||
CheckMinSdkVersion(ctx ModuleContext)
|
||||
}
|
||||
|
||||
// CheckMinSdkVersion checks if every dependency of an updatable module sets min_sdk_version
|
||||
// accordingly
|
||||
func CheckMinSdkVersion(m UpdatableModule, ctx ModuleContext, minSdkVersion ApiLevel) {
|
||||
func CheckMinSdkVersion(ctx ModuleContext, minSdkVersion ApiLevel, walk WalkPayloadDepsFunc) {
|
||||
// do not enforce min_sdk_version for host
|
||||
if ctx.Host() {
|
||||
return
|
||||
@@ -933,7 +934,7 @@ func CheckMinSdkVersion(m UpdatableModule, ctx ModuleContext, minSdkVersion ApiL
|
||||
return
|
||||
}
|
||||
|
||||
m.WalkPayloadDeps(ctx, func(ctx ModuleContext, from blueprint.Module, to ApexModule, externalDep bool) bool {
|
||||
walk(ctx, func(ctx ModuleContext, from blueprint.Module, to ApexModule, externalDep bool) bool {
|
||||
if externalDep {
|
||||
// external deps are outside the payload boundary, which is "stable"
|
||||
// interface. We don't have to check min_sdk_version for external
|
||||
|
@@ -1681,7 +1681,7 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
// 1) do some validity checks such as apex_available, min_sdk_version, etc.
|
||||
a.checkApexAvailability(ctx)
|
||||
a.checkUpdatable(ctx)
|
||||
a.checkMinSdkVersion(ctx)
|
||||
a.CheckMinSdkVersion(ctx)
|
||||
a.checkStaticLinkingToStubLibraries(ctx)
|
||||
a.checkStaticExecutables(ctx)
|
||||
if len(a.properties.Tests) > 0 && !a.testApex {
|
||||
@@ -2314,13 +2314,13 @@ func overrideApexFactory() android.Module {
|
||||
|
||||
// Entures that min_sdk_version of the included modules are equal or less than the min_sdk_version
|
||||
// of this apexBundle.
|
||||
func (a *apexBundle) checkMinSdkVersion(ctx android.ModuleContext) {
|
||||
func (a *apexBundle) CheckMinSdkVersion(ctx android.ModuleContext) {
|
||||
if a.testApex || a.vndkApex {
|
||||
return
|
||||
}
|
||||
// apexBundle::minSdkVersion reports its own errors.
|
||||
minSdkVersion := a.minSdkVersion(ctx)
|
||||
android.CheckMinSdkVersion(a, ctx, minSdkVersion)
|
||||
android.CheckMinSdkVersion(ctx, minSdkVersion, a.WalkPayloadDeps)
|
||||
}
|
||||
|
||||
func (a *apexBundle) minSdkVersion(ctx android.BaseModuleContext) android.ApiLevel {
|
||||
|
@@ -291,7 +291,7 @@ func (a *AndroidApp) checkAppSdkVersions(ctx android.ModuleContext) {
|
||||
|
||||
if minSdkVersion, err := a.MinSdkVersion(ctx).EffectiveVersion(ctx); err == nil {
|
||||
a.checkJniLibsSdkVersion(ctx, minSdkVersion)
|
||||
android.CheckMinSdkVersion(a, ctx, minSdkVersion)
|
||||
android.CheckMinSdkVersion(ctx, minSdkVersion, a.WalkPayloadDeps)
|
||||
} else {
|
||||
ctx.PropertyErrorf("min_sdk_version", "%s", err.Error())
|
||||
}
|
||||
|
Reference in New Issue
Block a user