Allow installing boot images outside of APEX for prebuilt.
This change is similar to aosp/1947127, but for prebuilts. After this change, if `bootImageConfig.installDirOnDevice` is set to a path outside of the APEX, the build system will build a boot image from the dex files and the profile extracted from the prebuilt APEX. Otherwise, it keeps the current behavior: extracting the boot image from the prebuilt APEX. This is a no-op change. Current behavior is not affected. Bug: 211973309 Test: m nothing Test: - On internal master: 1. Patch aosp/1947128. 2. Patch ag/16743847 and ag/16746804. 3. m SOONG_CONFIG_art_module_source_build=false com.google.android.art 4. See the boot image being installed in `/system/framework/<arch>`. Change-Id: I24ca525309fecaf3ab7a67960fbf118cd00ecd1d
This commit is contained in:
@@ -553,12 +553,66 @@ func TestBootclasspathFragmentInArtApex(t *testing.T) {
|
||||
`prebuilt_com.android.art`,
|
||||
})
|
||||
|
||||
// The boot images are installed in the APEX by Soong, so there shouldn't be any dexpreopt-related Make modules.
|
||||
ensureDoesNotContainRequiredDeps(t, result.TestContext, "com.android.art", "android_common_com.android.art_image", []string{
|
||||
"mybootclasspathfragment-dexpreopt-arm64-boot.art",
|
||||
"mybootclasspathfragment-dexpreopt-arm64-boot.oat",
|
||||
"mybootclasspathfragment-dexpreopt-arm64-boot.vdex",
|
||||
"mybootclasspathfragment-dexpreopt-arm64-boot-bar.art",
|
||||
"mybootclasspathfragment-dexpreopt-arm64-boot-bar.oat",
|
||||
"mybootclasspathfragment-dexpreopt-arm64-boot-bar.vdex",
|
||||
"mybootclasspathfragment-dexpreopt-arm-boot.art",
|
||||
"mybootclasspathfragment-dexpreopt-arm-boot.oat",
|
||||
"mybootclasspathfragment-dexpreopt-arm-boot.vdex",
|
||||
"mybootclasspathfragment-dexpreopt-arm-boot-bar.art",
|
||||
"mybootclasspathfragment-dexpreopt-arm-boot-bar.oat",
|
||||
"mybootclasspathfragment-dexpreopt-arm-boot-bar.vdex",
|
||||
})
|
||||
|
||||
// Make sure that the prebuilt bootclasspath_fragment copies its dex files to the predefined
|
||||
// locations for the art image.
|
||||
module := result.ModuleForTests("prebuilt_mybootclasspathfragment", "android_common_com.android.art")
|
||||
checkCopiesToPredefinedLocationForArt(t, result.Config, module, "bar", "foo")
|
||||
})
|
||||
|
||||
t.Run("boot image files from preferred prebuilt no boot image in apex", func(t *testing.T) {
|
||||
result := android.GroupFixturePreparers(
|
||||
commonPreparer,
|
||||
|
||||
// Configure some libraries in the art bootclasspath_fragment that match the source
|
||||
// bootclasspath_fragment's contents property.
|
||||
java.FixtureConfigureBootJars("com.android.art:foo", "com.android.art:bar"),
|
||||
addSource("foo", "bar"),
|
||||
|
||||
// Make sure that a preferred prebuilt with consistent contents doesn't affect the apex.
|
||||
addPrebuilt(true, "foo", "bar"),
|
||||
|
||||
java.FixtureSetBootImageInstallDirOnDevice("art", "system/framework"),
|
||||
).RunTest(t)
|
||||
|
||||
ensureExactContents(t, result.TestContext, "com.android.art", "android_common_com.android.art_image", []string{
|
||||
"etc/boot-image.prof",
|
||||
"etc/classpaths/bootclasspath.pb",
|
||||
"javalib/bar.jar",
|
||||
"javalib/foo.jar",
|
||||
})
|
||||
|
||||
ensureContainsRequiredDeps(t, result.TestContext, "com.android.art", "android_common_com.android.art_image", []string{
|
||||
"mybootclasspathfragment-dexpreopt-arm64-boot.art",
|
||||
"mybootclasspathfragment-dexpreopt-arm64-boot.oat",
|
||||
"mybootclasspathfragment-dexpreopt-arm64-boot.vdex",
|
||||
"mybootclasspathfragment-dexpreopt-arm64-boot-bar.art",
|
||||
"mybootclasspathfragment-dexpreopt-arm64-boot-bar.oat",
|
||||
"mybootclasspathfragment-dexpreopt-arm64-boot-bar.vdex",
|
||||
"mybootclasspathfragment-dexpreopt-arm-boot.art",
|
||||
"mybootclasspathfragment-dexpreopt-arm-boot.oat",
|
||||
"mybootclasspathfragment-dexpreopt-arm-boot.vdex",
|
||||
"mybootclasspathfragment-dexpreopt-arm-boot-bar.art",
|
||||
"mybootclasspathfragment-dexpreopt-arm-boot-bar.oat",
|
||||
"mybootclasspathfragment-dexpreopt-arm-boot-bar.vdex",
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("source with inconsistency between config and contents", func(t *testing.T) {
|
||||
android.GroupFixturePreparers(
|
||||
commonPreparer,
|
||||
@@ -631,6 +685,7 @@ func TestBootclasspathFragmentInPrebuiltArtApex(t *testing.T) {
|
||||
|
||||
// Configure some libraries in the art bootclasspath_fragment.
|
||||
java.FixtureConfigureBootJars("com.android.art:foo", "com.android.art:bar"),
|
||||
java.FixtureSetBootImageInstallDirOnDevice("art", "apex/com.android.art/javalib"),
|
||||
)
|
||||
|
||||
bp := `
|
||||
|
Reference in New Issue
Block a user