From ea91a175fad57539260b7127024476487998102f Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Tue, 5 Nov 2024 16:14:05 -0800 Subject: Don't magically use implementations for modules in the same apex To reduce the complexity of the apex logic, remove the apex top down mutator, and make the build system more understandable, remove the logic that automatically uses implementations of modules that have stubs but are in the same apex. Modules in an apex that want to depend on the implementations of another module should depend on it using #impl. Misuse of the #impl syntax to depend on a module that is not in the same will be detected and reported as an error by the apex when it sees a transitive dependency linked against an implementation library that is not in the apex. Bug: 372543712 Test: all apex tests pass Test: builds Change-Id: I28a1bb0ca71d5cfeaae145e951c436315aadf5ca --- apex/apex_test.go | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'apex/apex_test.go') diff --git a/apex/apex_test.go b/apex/apex_test.go index 8c17afe9f..6110bac73 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -929,7 +929,7 @@ func TestApexWithStubs(t *testing.T) { cc_library { name: "mylib", srcs: ["mylib.cpp"], - shared_libs: ["mylib2", "mylib3", "my_prebuilt_platform_lib", "my_prebuilt_platform_stub_only_lib"], + shared_libs: ["mylib2", "mylib3#impl", "my_prebuilt_platform_lib", "my_prebuilt_platform_stub_only_lib"], system_shared_libs: [], stl: "none", apex_available: [ "myapex" ], @@ -1025,7 +1025,7 @@ func TestApexWithStubs(t *testing.T) { // ... and not linking to the non-stub (impl) variant of mylib2 ensureNotContains(t, mylibLdFlags, "mylib2/android_arm64_armv8-a_shared/mylib2.so") - // Ensure that mylib is linking with the non-stub (impl) of mylib3 (because mylib3 is in the same apex) + // Ensure that mylib is linking with the non-stub (impl) of mylib3 (because the dependency is added with mylib3#impl) ensureContains(t, mylibLdFlags, "mylib3/android_arm64_armv8-a_shared_apex10000/mylib3.so") // .. and not linking to the stubs variant of mylib3 ensureNotContains(t, mylibLdFlags, "mylib3/android_arm64_armv8-a_shared_12/mylib3.so") @@ -1201,7 +1201,7 @@ func TestApexWithStubsWithMinSdkVersion(t *testing.T) { cc_library { name: "mylib", srcs: ["mylib.cpp"], - shared_libs: ["mylib2", "mylib3"], + shared_libs: ["mylib2", "mylib3#impl"], system_shared_libs: [], stl: "none", apex_available: [ "myapex" ], @@ -1264,7 +1264,7 @@ func TestApexWithStubsWithMinSdkVersion(t *testing.T) { // ... and not linking to the non-stub (impl) variant of mylib2 ensureNotContains(t, mylibLdFlags, "mylib2/android_arm64_armv8-a_shared/mylib2.so") - // Ensure that mylib is linking with the non-stub (impl) of mylib3 (because mylib3 is in the same apex) + // Ensure that mylib is linking with the non-stub (impl) of mylib3 (because the dependency is added with mylib3#impl) ensureContains(t, mylibLdFlags, "mylib3/android_arm64_armv8-a_shared_apex29/mylib3.so") // .. and not linking to the stubs variant of mylib3 ensureNotContains(t, mylibLdFlags, "mylib3/android_arm64_armv8-a_shared_29/mylib3.so") @@ -1797,8 +1797,8 @@ func TestApexWithSystemLibsStubs(t *testing.T) { cc_library { name: "mylib", srcs: ["mylib.cpp"], - system_shared_libs: ["libc", "libm"], - shared_libs: ["libdl#27"], + system_shared_libs: ["libc"], + shared_libs: ["libdl#27", "libm#impl"], stl: "none", apex_available: [ "myapex" ], } @@ -2962,8 +2962,7 @@ func TestApexMinSdkVersion_OkayEvenWhenDepIsNewer_IfItSatisfiesApexMinSdkVersion private_key: "testkey.pem", } - // mylib in myapex will link to mylib2#current - // mylib in otherapex will link to mylib2(non-stub) in otherapex as well + // mylib will link to mylib2#current cc_library { name: "mylib", srcs: ["mylib.cpp"], @@ -2997,7 +2996,7 @@ func TestApexMinSdkVersion_OkayEvenWhenDepIsNewer_IfItSatisfiesApexMinSdkVersion ensureContains(t, libFlags, "android_arm64_armv8-a_"+to_variant+"/"+to+".so") } expectLink("mylib", "shared_apex29", "mylib2", "shared_current") - expectLink("mylib", "shared_apex30", "mylib2", "shared_apex30") + expectLink("mylib", "shared_apex30", "mylib2", "shared_current") } func TestApexMinSdkVersion_WorksWithSdkCodename(t *testing.T) { -- cgit v1.2.3-59-g8ed1b