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
This commit is contained in:
@@ -1648,6 +1648,7 @@ func (module *SdkLibrary) createStubsSourcesAndApi(mctx android.DefaultableHookC
|
||||
// shared libs and static libs. So we need to add both of these libs to Libs property.
|
||||
props.Libs = module.properties.Libs
|
||||
props.Libs = append(props.Libs, module.properties.Static_libs...)
|
||||
props.Libs = append(props.Libs, module.sdkLibraryProperties.Stub_only_libs...)
|
||||
props.Aidl.Include_dirs = module.deviceProperties.Aidl.Include_dirs
|
||||
props.Aidl.Local_include_dirs = module.deviceProperties.Aidl.Local_include_dirs
|
||||
props.Java_version = module.properties.Java_version
|
||||
|
@@ -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")
|
||||
}
|
||||
|
Reference in New Issue
Block a user