Fix bootclasspath_fragment build failure during from-text stub build
This change enables bootclasspath_fragment module to be correctly built during from-text stub build by android-non-updatable module to be interpreted as its java_api_library equivalent. Test: go test ./java Bug: 279460171 Change-Id: Ia6b60edcb60782977cc59855f1cf5d3a46e9f682
This commit is contained in:
parent
d0f9520414
commit
7e9e20e389
2 changed files with 37 additions and 1 deletions
|
@ -432,3 +432,39 @@ func TestBootclasspathFragment_Test(t *testing.T) {
|
|||
fragment = result.Module("a_test_fragment", "android_common").(*BootclasspathFragmentModule)
|
||||
android.AssertBoolEquals(t, "is a test fragment by type", true, fragment.isTestFragment())
|
||||
}
|
||||
|
||||
func TestBootclassFragment_LinkTextStub(t *testing.T) {
|
||||
result := android.GroupFixturePreparers(
|
||||
prepareForJavaTest,
|
||||
prepareForTestWithBootclasspathFragment,
|
||||
PrepareForTestWithJavaSdkLibraryFiles,
|
||||
FixtureWithLastReleaseApis("mysdklibrary"),
|
||||
android.FixtureModifyConfig(func(config android.Config) {
|
||||
config.SetBuildFromTextStub(true)
|
||||
}),
|
||||
).RunTestWithBp(t, `
|
||||
bootclasspath_fragment {
|
||||
name: "myfragment",
|
||||
contents: ["mysdklibrary"],
|
||||
hidden_api: {split_packages: ["*"]},
|
||||
additional_stubs: [
|
||||
"android-non-updatable",
|
||||
],
|
||||
}
|
||||
java_sdk_library {
|
||||
name: "mysdklibrary",
|
||||
srcs: ["a.java"],
|
||||
shared_library: false,
|
||||
public: {enabled: true},
|
||||
system: {enabled: true},
|
||||
}
|
||||
`)
|
||||
|
||||
fragment := result.ModuleForTests("myfragment", "android_common")
|
||||
ruleCommand := fragment.Rule("modularHiddenAPIStubFlagsFile").RuleParams.Command
|
||||
android.AssertStringDoesContain(t, "Command expected to contain library as dependency stub dex",
|
||||
ruleCommand, "--dependency-stub-dex=out/soong/.intermediates/default/java/android-non-updatable.stubs.module_lib.from-text/android_common/dex/android-non-updatable.stubs.module_lib.from-text.jar")
|
||||
android.AssertStringDoesNotContain(t,
|
||||
"Command not expected to contain multiple api_library as dependency stub dex", ruleCommand,
|
||||
"--dependency-stub-dex=out/soong/.intermediates/default/java/android-non-updatable.stubs.from-text/android_common/dex/android-non-updatable.stubs.from-text.jar")
|
||||
}
|
||||
|
|
|
@ -647,7 +647,7 @@ func (s StubDexJarsByModule) addStubDexJar(ctx android.ModuleContext, module and
|
|||
// public version is provided by the art.module.public.api module. In those cases it is necessary
|
||||
// to treat all those modules as they were the same name, otherwise it will result in multiple
|
||||
// definitions of a single class being passed to hidden API processing which will cause an error.
|
||||
if name == scope.nonUpdatablePrebuiltModule || name == scope.nonUpdatableSourceModule {
|
||||
if name == scope.nonUpdatablePrebuiltModule || name == android.JavaApiLibraryName(ctx.Config(), scope.nonUpdatableSourceModule) {
|
||||
// Treat all *android-non-updatable* modules as if they were part of an android-non-updatable
|
||||
// java_sdk_library.
|
||||
// TODO(b/192067200): Remove once android-non-updatable is a java_sdk_library or equivalent.
|
||||
|
|
Loading…
Reference in a new issue