diff options
author | 2021-08-20 15:39:12 +0100 | |
---|---|---|
committer | 2021-08-20 15:54:42 +0100 | |
commit | 0b1c70efbcbb0c8408f44964923f5b156d025936 (patch) | |
tree | 572e3e7218e154ca5a0cde5f25598541f171d59c /java/java.go | |
parent | 99d5a0f5c9f2ba5386134b44d44be03ccaf94b35 (diff) |
Don't add `uses_libs`/`optional_uses_libs` to the manifest_fixer.
These properties specify libraries that cannot be implicitly inferred by
Soong. If these properties are added to Android.bp, this can only be for
the reason that there is a <uses-library> tag in the manifest which is
unknown to the build system. Adding them to the manifest_fixer doesn't
make sense: if they are not in the manifest, they should be removed from
Android.bp as well.
Bug: 132357300
Test: $ lunch aosp_cf_x86_64_phone-userdebug && m && launch_cvd
$ adb wait-for-device && adb root && adb logcat \
| grep -E 'ClassLoaderContext [a-z ]+ mismatch'
# empty grep output, no errors
Change-Id: Ic6eb5268a954ef3be7f06a181ec72af99000c547
Diffstat (limited to 'java/java.go')
-rw-r--r-- | java/java.go | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/java/java.go b/java/java.go index b46324f9f..4c2ca9ba2 100644 --- a/java/java.go +++ b/java/java.go @@ -248,15 +248,24 @@ type installDependencyTag struct { type usesLibraryDependencyTag struct { dependencyTag - sdkVersion int // SDK version in which the library appared as a standalone library. - optional bool // If the dependency is optional or required. + + // SDK version in which the library appared as a standalone library. + sdkVersion int + + // If the dependency is optional or required. + optional bool + + // Whether this is an implicit dependency inferred by Soong, or an explicit one added via + // `uses_libs`/`optional_uses_libs` properties. + implicit bool } -func makeUsesLibraryDependencyTag(sdkVersion int, optional bool) usesLibraryDependencyTag { +func makeUsesLibraryDependencyTag(sdkVersion int, optional bool, implicit bool) usesLibraryDependencyTag { return usesLibraryDependencyTag{ dependencyTag: dependencyTag{name: fmt.Sprintf("uses-library-%d", sdkVersion)}, sdkVersion: sdkVersion, optional: optional, + implicit: implicit, } } @@ -285,11 +294,6 @@ var ( syspropPublicStubDepTag = dependencyTag{name: "sysprop public stub"} jniInstallTag = installDependencyTag{name: "jni install"} binaryInstallTag = installDependencyTag{name: "binary install"} - usesLibReqTag = makeUsesLibraryDependencyTag(dexpreopt.AnySdkVersion, false) - usesLibOptTag = makeUsesLibraryDependencyTag(dexpreopt.AnySdkVersion, true) - usesLibCompat28OptTag = makeUsesLibraryDependencyTag(28, true) - usesLibCompat29ReqTag = makeUsesLibraryDependencyTag(29, false) - usesLibCompat30OptTag = makeUsesLibraryDependencyTag(30, true) ) func IsLibDepTag(depTag blueprint.DependencyTag) bool { @@ -1813,8 +1817,10 @@ func addCLCFromDep(ctx android.ModuleContext, depModule android.Module, depTag := ctx.OtherModuleDependencyTag(depModule) if depTag == libTag { // Ok, propagate <uses-library> through non-static library dependencies. - } else if tag, ok := depTag.(usesLibraryDependencyTag); ok && tag.sdkVersion == dexpreopt.AnySdkVersion { - // Ok, propagate <uses-library> through non-compatibility <uses-library> dependencies. + } else if tag, ok := depTag.(usesLibraryDependencyTag); ok && + tag.sdkVersion == dexpreopt.AnySdkVersion && tag.implicit { + // Ok, propagate <uses-library> through non-compatibility implicit <uses-library> + // dependencies. } else if depTag == staticLibTag { // Propagate <uses-library> through static library dependencies, unless it is a component // library (such as stubs). Component libraries have a dependency on their SDK library, @@ -1832,7 +1838,7 @@ func addCLCFromDep(ctx android.ModuleContext, depModule android.Module, // <uses_library> and should not be added to CLC, but the transitive <uses-library> dependencies // from its CLC should be added to the current CLC. if sdkLib != nil { - clcMap.AddContext(ctx, dexpreopt.AnySdkVersion, *sdkLib, false, + clcMap.AddContext(ctx, dexpreopt.AnySdkVersion, *sdkLib, false, true, dep.DexJarBuildPath(), dep.DexJarInstallPath(), dep.ClassLoaderContexts()) } else { clcMap.AddContextMap(dep.ClassLoaderContexts(), depName) |