From 18cb570c4c7676fc47fca26bc1e4c494da29c8bf Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Wed, 25 Sep 2024 16:43:32 -0700 Subject: Only propgate strict updatability linting to modules that are in the apex apex_strict_updatability_lint was propagating strict updatability linting much further than necessary by following all transitive dependencies, not just static dependencies of modules that are in the apex. This caused unnecessary lint checks, requiring the libcore exception in b/208656169 and the allowlist in b/215736885. Use apex.WalkPayloadDeps instead, which tracks whether the dependency is inside the same apex or not, and stop propagating the flag when a module outside the apex is reached. Bug: 208656169 Bug: 215736885 Test: m lint-check Flag: EXEMPT refactor Change-Id: I8d801ff1414e0bdb5997d29ab453488d3ab76d64 --- apex/apex.go | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) (limited to 'apex/apex.go') diff --git a/apex/apex.go b/apex/apex.go index ff39597ea..786f732e3 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -1127,19 +1127,11 @@ func apexStrictUpdatibilityLintMutator(mctx android.TopDownMutatorContext) { return } if apex, ok := mctx.Module().(*apexBundle); ok && apex.checkStrictUpdatabilityLinting(mctx) { - mctx.WalkDeps(func(child, parent android.Module) bool { - // b/208656169 Do not propagate strict updatability linting to libcore/ - // These libs are available on the classpath during compilation - // These libs are transitive deps of the sdk. See java/sdk.go:decodeSdkDep - // Only skip libraries defined in libcore root, not subdirectories - if mctx.OtherModuleDir(child) == "libcore" { - // Do not traverse transitive deps of libcore/ libs + apex.WalkPayloadDeps(mctx, func(mctx android.BaseModuleContext, from blueprint.Module, to android.ApexModule, externalDep bool) bool { + if externalDep { return false } - if android.InList(child.Name(), skipLintJavalibAllowlist) { - return false - } - if lintable, ok := child.(java.LintDepSetsIntf); ok { + if lintable, ok := to.(java.LintDepSetsIntf); ok { lintable.SetStrictUpdatabilityLinting(true) } // visit transitive deps @@ -1208,17 +1200,6 @@ var ( "test_jitzygote_com.android.art", // go/keep-sorted end } - - // TODO: b/215736885 Remove this list - skipLintJavalibAllowlist = []string{ - "conscrypt.module.platform.api.stubs", - "conscrypt.module.public.api.stubs", - "conscrypt.module.public.api.stubs.system", - "conscrypt.module.public.api.stubs.module_lib", - "framework-media.stubs", - "framework-media.stubs.system", - "framework-media.stubs.module_lib", - } ) func (a *apexBundle) checkStrictUpdatabilityLinting(mctx android.TopDownMutatorContext) bool { -- cgit v1.2.3-59-g8ed1b