From d732da72512c4d09e5a217e85d783e01ac5e7fe4 Mon Sep 17 00:00:00 2001 From: Nikita Ioffe Date: Mon, 21 Nov 2022 12:38:25 +0000 Subject: Propagate stub_only_libs to the invocation generating stub sources In some cases the java_sdk_library needs to compile against hidden platform APIs, in order to do so it needs to add impl_only_libs dependency on the framework library, and set the sdk_version property to the "core_*" one (e.g. core_platform). However, if this java_sdk_library depends on the Android SDK in it's stable API surface, then the setup above will break the stubs srcs generation, as it uses the sdk_version of the java_sdk_library (e.g. core_platform), which doesn't have symbols from the Android SDK. This chage solves the problem by propagating the stub_only_libs to the invocation that generates the stub sources. It allows the java_sdk_libraries to add a stub_only_libs dependency on the android_module_lib_stubs_current stubs library to fix their stubs build. For more context see another change in this topic: https://android-review.git.corp.google.com/c/platform/packages/modules/Virtualization/+/2310569 Bug: 243512044 Test: builds Test: m nothing Change-Id: Id745cfb2789901672561050c1c3f8bb163922379 --- java/sdk_library_test.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'java/sdk_library_test.go') diff --git a/java/sdk_library_test.go b/java/sdk_library_test.go index 096bca8a1..210bfc3a3 100644 --- a/java/sdk_library_test.go +++ b/java/sdk_library_test.go @@ -1385,3 +1385,29 @@ func TestSdkLibrary_CheckMinSdkVersion(t *testing.T) { } `) } + +func TestJavaSdkLibrary_StubOnlyLibs_PassedToDroidstubs(t *testing.T) { + result := android.GroupFixturePreparers( + prepareForJavaTest, + PrepareForTestWithJavaSdkLibraryFiles, + FixtureWithLastReleaseApis("foo"), + ).RunTestWithBp(t, ` + java_sdk_library { + name: "foo", + srcs: ["a.java"], + public: { + enabled: true, + }, + stub_only_libs: ["bar-lib"], + } + + java_library { + name: "bar-lib", + srcs: ["b.java"], + } + `) + + // The foo.stubs.source should depend on bar-lib + fooStubsSources := result.ModuleForTests("foo.stubs.source", "android_common").Module().(*Droidstubs) + android.AssertStringListContains(t, "foo stubs should depend on bar-lib", fooStubsSources.Javadoc.properties.Libs, "bar-lib") +} -- cgit v1.2.3-59-g8ed1b