Merge "Remove fallback code path for missing BCP fragments that is no longer necessary."
diff --git a/apex/platform_bootclasspath_test.go b/apex/platform_bootclasspath_test.go
index 513ddc0..d8a4a7a 100644
--- a/apex/platform_bootclasspath_test.go
+++ b/apex/platform_bootclasspath_test.go
@@ -21,6 +21,7 @@
"android/soong/android"
"android/soong/java"
+
"github.com/google/blueprint"
"github.com/google/blueprint/proptools"
)
@@ -325,31 +326,15 @@
}
// TestPlatformBootclasspath_AlwaysUsePrebuiltSdks verifies that the build does not fail when
-// AlwaysUsePrebuiltSdk() returns true. The structure of the modules in this test matches what
-// currently exists in some places in the Android build but it is not the intended structure. It is
-// in fact an invalid structure that should cause build failures. However, fixing that structure
-// will take too long so in the meantime this tests the workarounds to avoid build breakages.
-//
-// The main issues with this structure are:
-// 1. There is no prebuilt_bootclasspath_fragment referencing the "foo" java_sdk_library_import.
-// 2. There is no prebuilt_apex/apex_set which makes the dex implementation jar available to the
-// prebuilt_bootclasspath_fragment and the "foo" java_sdk_library_import.
-//
-// Together these cause the following symptoms:
-// 1. The "foo" java_sdk_library_import does not have a dex implementation jar.
-// 2. The "foo" java_sdk_library_import does not have a myapex variant.
-//
-// TODO(b/179354495): Fix the structure in this test once the main Android build has been fixed.
+// AlwaysUsePrebuiltSdk() returns true.
func TestPlatformBootclasspath_AlwaysUsePrebuiltSdks(t *testing.T) {
result := android.GroupFixturePreparers(
prepareForTestWithPlatformBootclasspath,
prepareForTestWithMyapex,
// Configure two libraries, the first is a java_sdk_library whose prebuilt will be used because
- // of AlwaysUsePrebuiltsSdk() but does not have an appropriate apex variant and does not provide
- // a boot dex jar. The second is a normal library that is unaffected. The order matters because
- // if the dependency on myapex:foo is filtered out because of either of those conditions then
- // the dependencies resolved by the platform_bootclasspath will not match the configured list
- // and so will fail the test.
+ // of AlwaysUsePrebuiltsSdk(). The second is a normal library that is unaffected. The order
+ // matters, so that the dependencies resolved by the platform_bootclasspath matches the
+ // configured list.
java.FixtureConfigureApexBootJars("myapex:foo", "myapex:bar"),
java.PrepareForTestWithJavaSdkLibraryFiles,
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
@@ -394,6 +379,12 @@
permitted_packages: ["foo"],
}
+ prebuilt_apex {
+ name: "myapex",
+ src: "myapex.apex",
+ exported_bootclasspath_fragments: ["mybootclasspath-fragment"],
+ }
+
// A prebuilt java_sdk_library_import that is not preferred by default but will be preferred
// because AlwaysUsePrebuiltSdks() is true.
java_sdk_library_import {
@@ -423,6 +414,23 @@
],
}
+ prebuilt_bootclasspath_fragment {
+ name: "mybootclasspath-fragment",
+ apex_available: [
+ "myapex",
+ ],
+ contents: [
+ "foo",
+ ],
+ hidden_api: {
+ stub_flags: "",
+ annotation_flags: "",
+ metadata: "",
+ index: "",
+ all_flags: "",
+ },
+ }
+
platform_bootclasspath {
name: "myplatform-bootclasspath",
fragments: [
@@ -437,7 +445,7 @@
java.CheckPlatformBootclasspathModules(t, result, "myplatform-bootclasspath", []string{
// The configured contents of BootJars.
- "platform:prebuilt_foo", // Note: This is the platform not myapex variant.
+ "myapex:prebuilt_foo",
"myapex:bar",
})
@@ -456,16 +464,15 @@
// The platform_bootclasspath intentionally adds dependencies on both source and prebuilt
// modules when available as it does not know which one will be preferred.
- //
- // The source module has an APEX variant but the prebuilt does not.
"myapex:foo",
- "platform:prebuilt_foo",
+ "myapex:prebuilt_foo",
// Only a source module exists.
"myapex:bar",
// The fragments.
"myapex:mybootclasspath-fragment",
+ "myapex:prebuilt_mybootclasspath-fragment",
})
}
diff --git a/java/bootclasspath.go b/java/bootclasspath.go
index 4108770..52ce77d 100644
--- a/java/bootclasspath.go
+++ b/java/bootclasspath.go
@@ -95,15 +95,6 @@
if ctx.OtherModuleDependencyVariantExists(variations, prebuiltName) {
ctx.AddVariationDependencies(variations, tag, prebuiltName)
addedDep = true
- } else if ctx.Config().AlwaysUsePrebuiltSdks() && len(variations) > 0 {
- // TODO(b/179354495): Remove this code path once the Android build has been fully migrated to
- // use bootclasspath_fragment properly.
- // Some prebuilt java_sdk_library modules do not yet have an APEX variations so try and add a
- // dependency on the non-APEX variant.
- if ctx.OtherModuleDependencyVariantExists(nil, prebuiltName) {
- ctx.AddVariationDependencies(nil, tag, prebuiltName)
- addedDep = true
- }
}
// If no appropriate variant existing for this, so no dependency could be added, then it is an