Merge changes from topic "boot-image-b280776428"
* changes: Dexpreopt ART jars and framework jars together. Unify installDirOnHost and installDirOnDevice. Remove the ability to install boot images by bootclasspath_fragments. Prepare tests for dexpreopt changes.
This commit is contained in:
@@ -38,6 +38,7 @@ bootstrap_go_package {
|
||||
"apex_test.go",
|
||||
"bootclasspath_fragment_test.go",
|
||||
"classpath_element_test.go",
|
||||
"dexpreopt_bootjars_test.go",
|
||||
"metadata_test.go",
|
||||
"platform_bootclasspath_test.go",
|
||||
"systemserver_classpath_fragment_test.go",
|
||||
|
18
apex/apex.go
18
apex/apex.go
@@ -2287,16 +2287,13 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext,
|
||||
ctx.PropertyErrorf("sh_binaries", "%q is not a sh_binary module", depName)
|
||||
}
|
||||
case bcpfTag:
|
||||
bcpfModule, ok := child.(*java.BootclasspathFragmentModule)
|
||||
_, ok := child.(*java.BootclasspathFragmentModule)
|
||||
if !ok {
|
||||
ctx.PropertyErrorf("bootclasspath_fragments", "%q is not a bootclasspath_fragment module", depName)
|
||||
return false
|
||||
}
|
||||
|
||||
vctx.filesInfo = append(vctx.filesInfo, apexBootclasspathFragmentFiles(ctx, child)...)
|
||||
for _, makeModuleName := range bcpfModule.BootImageDeviceInstallMakeModules() {
|
||||
a.makeModulesToInstall = append(a.makeModulesToInstall, makeModuleName)
|
||||
}
|
||||
return true
|
||||
case sscpfTag:
|
||||
if _, ok := child.(*java.SystemServerClasspathModule); !ok {
|
||||
@@ -2662,19 +2659,6 @@ func apexBootclasspathFragmentFiles(ctx android.ModuleContext, module blueprint.
|
||||
bootclasspathFragmentInfo := ctx.OtherModuleProvider(module, java.BootclasspathFragmentApexContentInfoProvider).(java.BootclasspathFragmentApexContentInfo)
|
||||
var filesToAdd []apexFile
|
||||
|
||||
// Add the boot image files, e.g. .art, .oat and .vdex files.
|
||||
if bootclasspathFragmentInfo.ShouldInstallBootImageInApex() {
|
||||
for arch, files := range bootclasspathFragmentInfo.AndroidBootImageFilesByArchType() {
|
||||
dirInApex := filepath.Join("javalib", arch.String())
|
||||
for _, f := range files {
|
||||
androidMkModuleName := "javalib_" + arch.String() + "_" + filepath.Base(f.String())
|
||||
// TODO(b/177892522) - consider passing in the bootclasspath fragment module here instead of nil
|
||||
af := newApexFile(ctx, f, androidMkModuleName, dirInApex, etc, nil)
|
||||
filesToAdd = append(filesToAdd, af)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add classpaths.proto config.
|
||||
if af := apexClasspathFragmentProtoFile(ctx, module); af != nil {
|
||||
filesToAdd = append(filesToAdd, *af)
|
||||
|
@@ -147,7 +147,7 @@ var prepareForApexTest = android.GroupFixturePreparers(
|
||||
android.PrepareForTestWithAndroidBuildComponents,
|
||||
bpf.PrepareForTestWithBpf,
|
||||
cc.PrepareForTestWithCcBuildComponents,
|
||||
java.PrepareForTestWithJavaDefaultModules,
|
||||
java.PrepareForTestWithDexpreopt,
|
||||
prebuilt_etc.PrepareForTestWithPrebuiltEtc,
|
||||
rust.PrepareForTestWithRustDefaultModules,
|
||||
sh.PrepareForTestWithShBuildComponents,
|
||||
@@ -8349,8 +8349,8 @@ func TestNoUpdatableJarsInBootImage(t *testing.T) {
|
||||
testNoUpdatableJarsInBootImage(t, "", preparer, fragments...)
|
||||
})
|
||||
|
||||
t.Run("updatable jar from ART apex in the framework boot image => error", func(t *testing.T) {
|
||||
err := `module "some-art-lib" from updatable apexes \["com.android.art.debug"\] is not allowed in the framework boot image`
|
||||
t.Run("updatable jar from ART apex in the platform bootclasspath => error", func(t *testing.T) {
|
||||
err := `module "some-art-lib" from updatable apexes \["com.android.art.debug"\] is not allowed in the platform bootclasspath`
|
||||
// Update the dexpreopt BootJars directly.
|
||||
preparer := android.GroupFixturePreparers(
|
||||
prepareSetBootJars("com.android.art.debug:some-art-lib"),
|
||||
@@ -8373,8 +8373,8 @@ func TestNoUpdatableJarsInBootImage(t *testing.T) {
|
||||
testNoUpdatableJarsInBootImage(t, err, preparer)
|
||||
})
|
||||
|
||||
t.Run("updatable jar from some other apex in the framework boot image => error", func(t *testing.T) {
|
||||
err := `module "some-updatable-apex-lib" from updatable apexes \["some-updatable-apex"\] is not allowed in the framework boot image`
|
||||
t.Run("updatable jar from some other apex in the platform bootclasspath => error", func(t *testing.T) {
|
||||
err := `module "some-updatable-apex-lib" from updatable apexes \["some-updatable-apex"\] is not allowed in the platform bootclasspath`
|
||||
preparer := android.GroupFixturePreparers(
|
||||
java.FixtureConfigureBootJars("some-updatable-apex:some-updatable-apex-lib"),
|
||||
java.FixtureConfigureApexBootJars("some-non-updatable-apex:some-non-updatable-apex-lib"),
|
||||
@@ -8382,7 +8382,7 @@ func TestNoUpdatableJarsInBootImage(t *testing.T) {
|
||||
testNoUpdatableJarsInBootImage(t, err, preparer)
|
||||
})
|
||||
|
||||
t.Run("non-updatable jar from some other apex in the framework boot image => ok", func(t *testing.T) {
|
||||
t.Run("non-updatable jar from some other apex in the platform bootclasspath => ok", func(t *testing.T) {
|
||||
preparer := java.FixtureConfigureApexBootJars("some-non-updatable-apex:some-non-updatable-apex-lib")
|
||||
fragment := java.ApexVariantReference{
|
||||
Apex: proptools.StringPtr("some-non-updatable-apex"),
|
||||
@@ -8397,7 +8397,7 @@ func TestNoUpdatableJarsInBootImage(t *testing.T) {
|
||||
testNoUpdatableJarsInBootImage(t, err, preparer)
|
||||
})
|
||||
|
||||
t.Run("nonexistent jar in the framework boot image => error", func(t *testing.T) {
|
||||
t.Run("nonexistent jar in the platform bootclasspath => error", func(t *testing.T) {
|
||||
err := `"platform-bootclasspath" depends on undefined module "nonexistent"`
|
||||
preparer := java.FixtureConfigureBootJars("platform:nonexistent")
|
||||
testNoUpdatableJarsInBootImage(t, err, preparer)
|
||||
@@ -8410,7 +8410,7 @@ func TestNoUpdatableJarsInBootImage(t *testing.T) {
|
||||
testNoUpdatableJarsInBootImage(t, err, preparer)
|
||||
})
|
||||
|
||||
t.Run("platform jar in the framework boot image => ok", func(t *testing.T) {
|
||||
t.Run("platform jar in the platform bootclasspath => ok", func(t *testing.T) {
|
||||
preparer := android.GroupFixturePreparers(
|
||||
java.FixtureConfigureBootJars("platform:some-platform-lib"),
|
||||
java.FixtureConfigureApexBootJars("some-non-updatable-apex:some-non-updatable-apex-lib"),
|
||||
|
@@ -115,20 +115,7 @@ func TestBootclasspathFragments(t *testing.T) {
|
||||
|
||||
// Make sure that the art-bootclasspath-fragment is using the correct configuration.
|
||||
checkBootclasspathFragment(t, result, "art-bootclasspath-fragment", "android_common_apex10000",
|
||||
"com.android.art:baz,com.android.art:quuz", `
|
||||
dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art
|
||||
dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat
|
||||
dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex
|
||||
dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-quuz.art
|
||||
dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-quuz.oat
|
||||
dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-quuz.vdex
|
||||
dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art
|
||||
dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat
|
||||
dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex
|
||||
dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-quuz.art
|
||||
dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-quuz.oat
|
||||
dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-quuz.vdex
|
||||
`)
|
||||
"com.android.art:baz,com.android.art:quuz")
|
||||
}
|
||||
|
||||
func TestBootclasspathFragments_FragmentDependency(t *testing.T) {
|
||||
@@ -261,7 +248,7 @@ func TestBootclasspathFragments_FragmentDependency(t *testing.T) {
|
||||
checkAPIScopeStubs("other", otherInfo, java.CorePlatformHiddenAPIScope)
|
||||
}
|
||||
|
||||
func checkBootclasspathFragment(t *testing.T, result *android.TestResult, moduleName, variantName string, expectedConfiguredModules string, expectedBootclasspathFragmentFiles string) {
|
||||
func checkBootclasspathFragment(t *testing.T, result *android.TestResult, moduleName, variantName string, expectedConfiguredModules string) {
|
||||
t.Helper()
|
||||
|
||||
bootclasspathFragment := result.ModuleForTests(moduleName, variantName).Module().(*java.BootclasspathFragmentModule)
|
||||
@@ -269,19 +256,6 @@ func checkBootclasspathFragment(t *testing.T, result *android.TestResult, module
|
||||
bootclasspathFragmentInfo := result.ModuleProvider(bootclasspathFragment, java.BootclasspathFragmentApexContentInfoProvider).(java.BootclasspathFragmentApexContentInfo)
|
||||
modules := bootclasspathFragmentInfo.Modules()
|
||||
android.AssertStringEquals(t, "invalid modules for "+moduleName, expectedConfiguredModules, modules.String())
|
||||
|
||||
// Get a list of all the paths in the boot image sorted by arch type.
|
||||
allPaths := []string{}
|
||||
bootImageFilesByArchType := bootclasspathFragmentInfo.AndroidBootImageFilesByArchType()
|
||||
for _, archType := range android.ArchTypeList() {
|
||||
if paths, ok := bootImageFilesByArchType[archType]; ok {
|
||||
for _, path := range paths {
|
||||
allPaths = append(allPaths, android.NormalizePathForTesting(path))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
android.AssertTrimmedStringEquals(t, "invalid paths for "+moduleName, expectedBootclasspathFragmentFiles, strings.Join(allPaths, "\n"))
|
||||
}
|
||||
|
||||
func TestBootclasspathFragmentInArtApex(t *testing.T) {
|
||||
@@ -420,18 +394,6 @@ func TestBootclasspathFragmentInArtApex(t *testing.T) {
|
||||
ensureExactContents(t, result.TestContext, "com.android.art", "android_common_com.android.art_image", []string{
|
||||
"etc/boot-image.prof",
|
||||
"etc/classpaths/bootclasspath.pb",
|
||||
"javalib/arm/boot.art",
|
||||
"javalib/arm/boot.oat",
|
||||
"javalib/arm/boot.vdex",
|
||||
"javalib/arm/boot-bar.art",
|
||||
"javalib/arm/boot-bar.oat",
|
||||
"javalib/arm/boot-bar.vdex",
|
||||
"javalib/arm64/boot.art",
|
||||
"javalib/arm64/boot.oat",
|
||||
"javalib/arm64/boot.vdex",
|
||||
"javalib/arm64/boot-bar.art",
|
||||
"javalib/arm64/boot-bar.oat",
|
||||
"javalib/arm64/boot-bar.vdex",
|
||||
"javalib/bar.jar",
|
||||
"javalib/foo.jar",
|
||||
})
|
||||
@@ -441,62 +403,12 @@ func TestBootclasspathFragmentInArtApex(t *testing.T) {
|
||||
`mybootclasspathfragment`,
|
||||
})
|
||||
|
||||
// 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 source bootclasspath_fragment copies its dex files to the predefined
|
||||
// locations for the art image.
|
||||
module := result.ModuleForTests("mybootclasspathfragment", "android_common_apex10000")
|
||||
checkCopiesToPredefinedLocationForArt(t, result.Config, module, "bar", "foo")
|
||||
})
|
||||
|
||||
t.Run("boot image files from source 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"),
|
||||
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("generate boot image profile even if dexpreopt is disabled", func(t *testing.T) {
|
||||
result := android.GroupFixturePreparers(
|
||||
commonPreparer,
|
||||
@@ -552,18 +464,6 @@ func TestBootclasspathFragmentInArtApex(t *testing.T) {
|
||||
|
||||
ensureExactDeapexedContents(t, result.TestContext, "com.android.art", "android_common", []string{
|
||||
"etc/boot-image.prof",
|
||||
"javalib/arm/boot.art",
|
||||
"javalib/arm/boot.oat",
|
||||
"javalib/arm/boot.vdex",
|
||||
"javalib/arm/boot-bar.art",
|
||||
"javalib/arm/boot-bar.oat",
|
||||
"javalib/arm/boot-bar.vdex",
|
||||
"javalib/arm64/boot.art",
|
||||
"javalib/arm64/boot.oat",
|
||||
"javalib/arm64/boot.vdex",
|
||||
"javalib/arm64/boot-bar.art",
|
||||
"javalib/arm64/boot-bar.oat",
|
||||
"javalib/arm64/boot-bar.vdex",
|
||||
"javalib/bar.jar",
|
||||
"javalib/foo.jar",
|
||||
})
|
||||
@@ -574,65 +474,12 @@ 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)
|
||||
|
||||
ensureExactDeapexedContents(t, result.TestContext, "com.android.art", "android_common", []string{
|
||||
"etc/boot-image.prof",
|
||||
"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,
|
||||
@@ -782,10 +629,6 @@ func TestBootclasspathFragmentInPrebuiltArtApex(t *testing.T) {
|
||||
|
||||
module := result.ModuleForTests("mybootclasspathfragment", "android_common_com.android.art")
|
||||
checkCopiesToPredefinedLocationForArt(t, result.Config, module, "bar", "foo")
|
||||
|
||||
// Check that the right deapexer module was chosen for a boot image.
|
||||
param := module.Output("out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art")
|
||||
android.AssertStringDoesContain(t, "didn't find the expected deapexer in the input path", param.Input.String(), "/com.android.art.deapexer")
|
||||
})
|
||||
|
||||
t.Run("enabled alternative APEX", func(t *testing.T) {
|
||||
@@ -1250,7 +1093,7 @@ func TestBootclasspathFragment_AndroidNonUpdatable(t *testing.T) {
|
||||
func TestBootclasspathFragment_AndroidNonUpdatable_AlwaysUsePrebuiltSdks(t *testing.T) {
|
||||
result := android.GroupFixturePreparers(
|
||||
prepareForTestWithBootclasspathFragment,
|
||||
java.PrepareForTestWithJavaDefaultModules,
|
||||
java.PrepareForTestWithDexpreopt,
|
||||
prepareForTestWithArtApex,
|
||||
prepareForTestWithMyapex,
|
||||
// Configure bootclasspath jars to ensure that hidden API encoding is performed on them.
|
||||
|
254
apex/dexpreopt_bootjars_test.go
Normal file
254
apex/dexpreopt_bootjars_test.go
Normal file
@@ -0,0 +1,254 @@
|
||||
// Copyright 2019 Google Inc. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package apex
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
"testing"
|
||||
|
||||
"android/soong/android"
|
||||
"android/soong/java"
|
||||
)
|
||||
|
||||
func testDexpreoptBoot(t *testing.T, ruleFile string, expectedInputs, expectedOutputs []string, preferPrebuilt bool) {
|
||||
bp := `
|
||||
// Platform.
|
||||
|
||||
java_sdk_library {
|
||||
name: "foo",
|
||||
srcs: ["a.java"],
|
||||
api_packages: ["foo"],
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "bar",
|
||||
srcs: ["b.java"],
|
||||
installable: true,
|
||||
system_ext_specific: true,
|
||||
}
|
||||
|
||||
dex_import {
|
||||
name: "baz",
|
||||
jars: ["a.jar"],
|
||||
}
|
||||
|
||||
platform_bootclasspath {
|
||||
name: "platform-bootclasspath",
|
||||
fragments: [
|
||||
{
|
||||
apex: "com.android.art",
|
||||
module: "art-bootclasspath-fragment",
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
// Source ART APEX.
|
||||
|
||||
java_library {
|
||||
name: "core-oj",
|
||||
srcs: ["core-oj.java"],
|
||||
installable: true,
|
||||
apex_available: [
|
||||
"com.android.art",
|
||||
],
|
||||
}
|
||||
|
||||
bootclasspath_fragment {
|
||||
name: "art-bootclasspath-fragment",
|
||||
image_name: "art",
|
||||
contents: ["core-oj"],
|
||||
apex_available: [
|
||||
"com.android.art",
|
||||
],
|
||||
hidden_api: {
|
||||
split_packages: ["*"],
|
||||
},
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "com.android.art.key",
|
||||
public_key: "com.android.art.avbpubkey",
|
||||
private_key: "com.android.art.pem",
|
||||
}
|
||||
|
||||
apex {
|
||||
name: "com.android.art",
|
||||
key: "com.android.art.key",
|
||||
bootclasspath_fragments: ["art-bootclasspath-fragment"],
|
||||
updatable: false,
|
||||
}
|
||||
|
||||
// Prebuilt ART APEX.
|
||||
|
||||
java_import {
|
||||
name: "core-oj",
|
||||
prefer: %[1]t,
|
||||
jars: ["core-oj.jar"],
|
||||
apex_available: [
|
||||
"com.android.art",
|
||||
],
|
||||
}
|
||||
|
||||
prebuilt_bootclasspath_fragment {
|
||||
name: "art-bootclasspath-fragment",
|
||||
prefer: %[1]t,
|
||||
image_name: "art",
|
||||
contents: ["core-oj"],
|
||||
hidden_api: {
|
||||
annotation_flags: "my-bootclasspath-fragment/annotation-flags.csv",
|
||||
metadata: "my-bootclasspath-fragment/metadata.csv",
|
||||
index: "my-bootclasspath-fragment/index.csv",
|
||||
stub_flags: "my-bootclasspath-fragment/stub-flags.csv",
|
||||
all_flags: "my-bootclasspath-fragment/all-flags.csv",
|
||||
},
|
||||
apex_available: [
|
||||
"com.android.art",
|
||||
],
|
||||
}
|
||||
|
||||
prebuilt_apex {
|
||||
name: "com.android.art",
|
||||
prefer: %[1]t,
|
||||
apex_name: "com.android.art",
|
||||
src: "com.android.art-arm.apex",
|
||||
exported_bootclasspath_fragments: ["art-bootclasspath-fragment"],
|
||||
}
|
||||
`
|
||||
|
||||
result := android.GroupFixturePreparers(
|
||||
java.PrepareForTestWithDexpreopt,
|
||||
java.PrepareForTestWithJavaSdkLibraryFiles,
|
||||
java.FixtureWithLastReleaseApis("foo"),
|
||||
java.FixtureConfigureBootJars("com.android.art:core-oj", "platform:foo", "system_ext:bar", "platform:baz"),
|
||||
PrepareForTestWithApexBuildComponents,
|
||||
prepareForTestWithArtApex,
|
||||
).RunTestWithBp(t, fmt.Sprintf(bp, preferPrebuilt))
|
||||
|
||||
platformBootclasspath := result.ModuleForTests("platform-bootclasspath", "android_common")
|
||||
rule := platformBootclasspath.Output(ruleFile)
|
||||
|
||||
inputs := rule.Implicits.Strings()
|
||||
sort.Strings(inputs)
|
||||
sort.Strings(expectedInputs)
|
||||
|
||||
outputs := append(android.WritablePaths{rule.Output}, rule.ImplicitOutputs...).Strings()
|
||||
sort.Strings(outputs)
|
||||
sort.Strings(expectedOutputs)
|
||||
|
||||
android.AssertStringPathsRelativeToTopEquals(t, "inputs", result.Config, expectedInputs, inputs)
|
||||
|
||||
android.AssertStringPathsRelativeToTopEquals(t, "outputs", result.Config, expectedOutputs, outputs)
|
||||
}
|
||||
|
||||
func TestDexpreoptBootJarsWithSourceArtApex(t *testing.T) {
|
||||
ruleFile := "boot.art"
|
||||
|
||||
expectedInputs := []string{
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/core-oj.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/foo.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/bar.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/baz.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/boot.prof",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/boot.prof",
|
||||
}
|
||||
|
||||
expectedOutputs := []string{
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.invocation",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-foo.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-bar.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-baz.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-foo.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-bar.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-baz.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-foo.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-bar.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-baz.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot-foo.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot-bar.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot-baz.oat",
|
||||
}
|
||||
|
||||
testDexpreoptBoot(t, ruleFile, expectedInputs, expectedOutputs, false)
|
||||
}
|
||||
|
||||
// The only difference is that the ART profile should be deapexed from the prebuilt APEX. Other
|
||||
// inputs and outputs should be the same as above.
|
||||
func TestDexpreoptBootJarsWithPrebuiltArtApex(t *testing.T) {
|
||||
ruleFile := "boot.art"
|
||||
|
||||
expectedInputs := []string{
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/core-oj.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/foo.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/bar.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/baz.jar",
|
||||
"out/soong/.intermediates/com.android.art.deapexer/android_common/deapexer/etc/boot-image.prof",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/boot.prof",
|
||||
}
|
||||
|
||||
expectedOutputs := []string{
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.invocation",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-foo.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-bar.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-baz.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-foo.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-bar.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-baz.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-foo.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-bar.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-baz.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot-foo.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot-bar.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot-baz.oat",
|
||||
}
|
||||
|
||||
testDexpreoptBoot(t, ruleFile, expectedInputs, expectedOutputs, true)
|
||||
}
|
||||
|
||||
// Changes to the boot.zip structure may break the ART APK scanner.
|
||||
func TestDexpreoptBootZip(t *testing.T) {
|
||||
ruleFile := "boot.zip"
|
||||
|
||||
ctx := android.PathContextForTesting(android.TestArchConfig("", nil, "", nil))
|
||||
expectedInputs := []string{}
|
||||
for _, target := range ctx.Config().Targets[android.Android] {
|
||||
for _, ext := range []string{".art", ".oat", ".vdex"} {
|
||||
for _, suffix := range []string{"", "-foo", "-bar", "-baz"} {
|
||||
expectedInputs = append(expectedInputs,
|
||||
filepath.Join(
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars",
|
||||
target.Os.String(),
|
||||
"system/framework",
|
||||
target.Arch.ArchType.String(),
|
||||
"boot"+suffix+ext))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
expectedOutputs := []string{
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/boot.zip",
|
||||
}
|
||||
|
||||
testDexpreoptBoot(t, ruleFile, expectedInputs, expectedOutputs, false)
|
||||
}
|
@@ -27,7 +27,7 @@ import (
|
||||
func TestModulesSingleton(t *testing.T) {
|
||||
result := android.GroupFixturePreparers(
|
||||
PrepareForTestWithApexMultitreeSingleton,
|
||||
java.PrepareForTestWithDexpreopt,
|
||||
java.PrepareForTestWithJavaDefaultModules,
|
||||
PrepareForTestWithApexBuildComponents,
|
||||
java.FixtureConfigureApexBootJars("myapex:foo"),
|
||||
java.PrepareForTestWithJavaSdkLibraryFiles,
|
||||
|
@@ -20,6 +20,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"android/soong/android"
|
||||
"android/soong/dexpreopt"
|
||||
"android/soong/java"
|
||||
|
||||
"github.com/google/blueprint"
|
||||
@@ -30,7 +31,7 @@ import (
|
||||
// apexes.
|
||||
|
||||
var prepareForTestWithPlatformBootclasspath = android.GroupFixturePreparers(
|
||||
java.PrepareForTestWithDexpreopt,
|
||||
java.PrepareForTestWithJavaDefaultModules,
|
||||
PrepareForTestWithApexBuildComponents,
|
||||
)
|
||||
|
||||
@@ -249,6 +250,8 @@ func TestPlatformBootclasspathDependencies(t *testing.T) {
|
||||
java.FixtureConfigureApexBootJars("myapex:bar"),
|
||||
java.PrepareForTestWithJavaSdkLibraryFiles,
|
||||
java.FixtureWithLastReleaseApis("foo"),
|
||||
java.PrepareForTestWithDexpreopt,
|
||||
dexpreopt.FixtureDisableDexpreoptBootImages(false),
|
||||
).RunTestWithBp(t, `
|
||||
apex {
|
||||
name: "com.android.art",
|
||||
@@ -539,9 +542,6 @@ func TestPlatformBootclasspath_AlwaysUsePrebuiltSdks(t *testing.T) {
|
||||
// Not a prebuilt as no prebuilt existed when it was added.
|
||||
"platform:legacy.core.platform.api.stubs",
|
||||
|
||||
// Needed for generating the boot image.
|
||||
"platform:dex2oatd",
|
||||
|
||||
// The platform_bootclasspath intentionally adds dependencies on both source and prebuilt
|
||||
// modules when available as it does not know which one will be preferred.
|
||||
"myapex:foo",
|
||||
|
@@ -199,14 +199,11 @@ func (p *prebuiltCommon) initApexFilesForAndroidMk(ctx android.ModuleContext) {
|
||||
p.apexFilesForAndroidMk = append(p.apexFilesForAndroidMk, af)
|
||||
}
|
||||
} else if tag == exportedBootclasspathFragmentTag {
|
||||
bcpfModule, ok := child.(*java.PrebuiltBootclasspathFragmentModule)
|
||||
_, ok := child.(*java.PrebuiltBootclasspathFragmentModule)
|
||||
if !ok {
|
||||
ctx.PropertyErrorf("exported_bootclasspath_fragments", "%q is not a prebuilt_bootclasspath_fragment module", name)
|
||||
return false
|
||||
}
|
||||
for _, makeModuleName := range bcpfModule.BootImageDeviceInstallMakeModules() {
|
||||
p.requiredModuleNames = append(p.requiredModuleNames, makeModuleName)
|
||||
}
|
||||
// Visit the children of the bootclasspath_fragment.
|
||||
return true
|
||||
} else if tag == exportedSystemserverclasspathFragmentTag {
|
||||
|
@@ -87,7 +87,6 @@ bootstrap_go_package {
|
||||
"device_host_converter_test.go",
|
||||
"dex_test.go",
|
||||
"dexpreopt_test.go",
|
||||
"dexpreopt_bootjars_test.go",
|
||||
"dexpreopt_config_test.go",
|
||||
"droiddoc_test.go",
|
||||
"droidstubs_test.go",
|
||||
|
@@ -241,10 +241,8 @@ type BootclasspathFragmentModule struct {
|
||||
// Collect the module directory for IDE info in java/jdeps.go.
|
||||
modulePaths []string
|
||||
|
||||
// Installs for on-device boot image files. This list has entries only if the installs should be
|
||||
// handled by Make (e.g., the boot image should be installed on the system partition, rather than
|
||||
// in the APEX).
|
||||
bootImageDeviceInstalls []dexpreopterInstall
|
||||
// Path to the boot image profile.
|
||||
profilePath android.Path
|
||||
}
|
||||
|
||||
// commonBootclasspathFragment defines the methods that are implemented by both source and prebuilt
|
||||
@@ -264,16 +262,16 @@ type commonBootclasspathFragment interface {
|
||||
// If it could not create the files then it will return nil. Otherwise, it will return a map from
|
||||
// android.ArchType to the predefined paths of the boot image files.
|
||||
produceBootImageFiles(ctx android.ModuleContext, imageConfig *bootImageConfig) bootImageOutputs
|
||||
|
||||
// getImageName returns the `image_name` property of this fragment.
|
||||
getImageName() *string
|
||||
|
||||
// getProfilePath returns the path to the boot image profile.
|
||||
getProfilePath() android.Path
|
||||
}
|
||||
|
||||
var _ commonBootclasspathFragment = (*BootclasspathFragmentModule)(nil)
|
||||
|
||||
// bootImageFilesByArch is a map from android.ArchType to the paths to the boot image files.
|
||||
//
|
||||
// The paths include the .art, .oat and .vdex files, one for each of the modules from which the boot
|
||||
// image is created.
|
||||
type bootImageFilesByArch map[android.ArchType]android.Paths
|
||||
|
||||
func bootclasspathFragmentFactory() android.Module {
|
||||
m := &BootclasspathFragmentModule{}
|
||||
m.AddProperties(&m.properties, &m.sourceOnlyProperties)
|
||||
@@ -395,12 +393,6 @@ type BootclasspathFragmentApexContentInfo struct {
|
||||
// set image_name: "art".
|
||||
modules android.ConfiguredJarList
|
||||
|
||||
// Map from arch type to the boot image files.
|
||||
bootImageFilesByArch bootImageFilesByArch
|
||||
|
||||
// True if the boot image should be installed in the APEX.
|
||||
shouldInstallBootImageInApex bool
|
||||
|
||||
// Map from the base module name (without prebuilt_ prefix) of a fragment's contents module to the
|
||||
// hidden API encoded dex jar path.
|
||||
contentModuleDexJarPaths bootDexJarByModule
|
||||
@@ -417,18 +409,6 @@ func (i BootclasspathFragmentApexContentInfo) Modules() android.ConfiguredJarLis
|
||||
return i.modules
|
||||
}
|
||||
|
||||
// Get a map from ArchType to the associated boot image's contents for Android.
|
||||
//
|
||||
// Extension boot images only return their own files, not the files of the boot images they extend.
|
||||
func (i BootclasspathFragmentApexContentInfo) AndroidBootImageFilesByArchType() bootImageFilesByArch {
|
||||
return i.bootImageFilesByArch
|
||||
}
|
||||
|
||||
// Return true if the boot image should be installed in the APEX.
|
||||
func (i *BootclasspathFragmentApexContentInfo) ShouldInstallBootImageInApex() bool {
|
||||
return i.shouldInstallBootImageInApex
|
||||
}
|
||||
|
||||
// DexBootJarPathForContentModule returns the path to the dex boot jar for specified module.
|
||||
//
|
||||
// The dex boot jar is one which has had hidden API encoding performed on it.
|
||||
@@ -557,6 +537,7 @@ func (b *BootclasspathFragmentModule) GenerateAndroidBuildActions(ctx android.Mo
|
||||
// Delegate the production of the boot image files to a module type specific method.
|
||||
common := ctx.Module().(commonBootclasspathFragment)
|
||||
bootImageFiles = common.produceBootImageFiles(ctx, imageConfig)
|
||||
b.profilePath = bootImageFiles.profile
|
||||
|
||||
if shouldCopyBootFilesToPredefinedLocations(ctx, imageConfig) {
|
||||
// Zip the boot image files up, if available. This will generate the zip file in a
|
||||
@@ -566,25 +547,6 @@ func (b *BootclasspathFragmentModule) GenerateAndroidBuildActions(ctx android.Mo
|
||||
// Copy the dex jars of this fragment's content modules to their predefined locations.
|
||||
copyBootJarsToPredefinedLocations(ctx, hiddenAPIOutput.EncodedBootDexFilesByModule, imageConfig.dexPathsByModule)
|
||||
}
|
||||
|
||||
for _, variant := range bootImageFiles.variants {
|
||||
archType := variant.config.target.Arch.ArchType
|
||||
arch := archType.String()
|
||||
for _, install := range variant.deviceInstalls {
|
||||
// Remove the "/" prefix because the path should be relative to $ANDROID_PRODUCT_OUT.
|
||||
installDir := strings.TrimPrefix(filepath.Dir(install.To), "/")
|
||||
installBase := filepath.Base(install.To)
|
||||
installPath := android.PathForModuleInPartitionInstall(ctx, "", installDir)
|
||||
|
||||
b.bootImageDeviceInstalls = append(b.bootImageDeviceInstalls, dexpreopterInstall{
|
||||
name: arch + "-" + installBase,
|
||||
moduleName: b.Name(),
|
||||
outputPathOnHost: install.From,
|
||||
installDirOnDevice: installPath,
|
||||
installFileOnDevice: installBase,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// A prebuilt fragment cannot contribute to an apex.
|
||||
@@ -643,12 +605,8 @@ func (b *BootclasspathFragmentModule) provideApexContentInfo(ctx android.ModuleC
|
||||
info.profilePathOnHost = bootImageFiles.profile
|
||||
info.profileInstallPathInApex = imageConfig.profileInstallPathInApex
|
||||
}
|
||||
|
||||
info.shouldInstallBootImageInApex = imageConfig.shouldInstallInApex()
|
||||
}
|
||||
|
||||
info.bootImageFilesByArch = bootImageFiles.byArch
|
||||
|
||||
// Make the apex content info available for other modules.
|
||||
ctx.SetProvider(BootclasspathFragmentApexContentInfoProvider, info)
|
||||
}
|
||||
@@ -960,19 +918,15 @@ func (b *BootclasspathFragmentModule) AndroidMkEntries() []android.AndroidMkEntr
|
||||
},
|
||||
},
|
||||
}}
|
||||
for _, install := range b.bootImageDeviceInstalls {
|
||||
entriesList = append(entriesList, install.ToMakeEntries())
|
||||
}
|
||||
return entriesList
|
||||
}
|
||||
|
||||
// Returns the names of all Make modules that handle the installation of the boot image.
|
||||
func (b *BootclasspathFragmentModule) BootImageDeviceInstallMakeModules() []string {
|
||||
var makeModules []string
|
||||
for _, install := range b.bootImageDeviceInstalls {
|
||||
makeModules = append(makeModules, install.FullModuleName())
|
||||
}
|
||||
return makeModules
|
||||
func (b *BootclasspathFragmentModule) getImageName() *string {
|
||||
return b.properties.Image_name
|
||||
}
|
||||
|
||||
func (b *BootclasspathFragmentModule) getProfilePath() android.Path {
|
||||
return b.profilePath
|
||||
}
|
||||
|
||||
// Collect information for opening IDE project files in java/jdeps.go.
|
||||
@@ -1262,59 +1216,25 @@ func (module *PrebuiltBootclasspathFragmentModule) produceBootImageFiles(ctx and
|
||||
// built without a profile as the prebuilt modules do not provide a profile.
|
||||
buildBootImageVariantsForBuildOs(ctx, imageConfig, profile)
|
||||
|
||||
if imageConfig.shouldInstallInApex() {
|
||||
// If the boot image files for the android variants are in the prebuilt apex, we must use those
|
||||
// rather than building new ones because those boot image files are going to be used on device.
|
||||
files := bootImageFilesByArch{}
|
||||
bootImageFiles := bootImageOutputs{
|
||||
byArch: files,
|
||||
profile: profile,
|
||||
}
|
||||
for _, variant := range imageConfig.apexVariants() {
|
||||
arch := variant.target.Arch.ArchType
|
||||
bootImageFiles.variants = append(bootImageFiles.variants, bootImageVariantOutputs{
|
||||
variant,
|
||||
// No device installs needed when installed in APEX.
|
||||
nil,
|
||||
})
|
||||
for _, toPath := range variant.imagesDeps {
|
||||
apexRelativePath := apexRootRelativePathToBootImageFile(arch, toPath.Base())
|
||||
// Get the path to the file that the deapexer extracted from the prebuilt apex file.
|
||||
fromPath := di.PrebuiltExportPath(apexRelativePath)
|
||||
|
||||
// Return the toPath as the calling code expects the paths in the returned map to be the
|
||||
// paths predefined in the bootImageConfig.
|
||||
files[arch] = append(files[arch], toPath)
|
||||
|
||||
// Copy the file to the predefined location.
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: android.Cp,
|
||||
Input: fromPath,
|
||||
Output: toPath,
|
||||
})
|
||||
}
|
||||
}
|
||||
return bootImageFiles
|
||||
} else {
|
||||
if profile == nil && imageConfig.isProfileGuided() {
|
||||
ctx.ModuleErrorf("Unable to produce boot image files: neither boot image files nor profiles exists in the prebuilt apex")
|
||||
return bootImageOutputs{}
|
||||
}
|
||||
// Build boot image files for the android variants from the dex files provided by the contents
|
||||
// of this module.
|
||||
return buildBootImageVariantsForAndroidOs(ctx, imageConfig, profile)
|
||||
if profile == nil && imageConfig.isProfileGuided() {
|
||||
ctx.ModuleErrorf("Unable to produce boot image files: profiles not found in the prebuilt apex")
|
||||
return bootImageOutputs{}
|
||||
}
|
||||
// Build boot image files for the android variants from the dex files provided by the contents
|
||||
// of this module.
|
||||
return buildBootImageVariantsForAndroidOs(ctx, imageConfig, profile)
|
||||
}
|
||||
|
||||
func (b *PrebuiltBootclasspathFragmentModule) getImageName() *string {
|
||||
return b.properties.Image_name
|
||||
}
|
||||
|
||||
func (b *PrebuiltBootclasspathFragmentModule) getProfilePath() android.Path {
|
||||
return b.profilePath
|
||||
}
|
||||
|
||||
var _ commonBootclasspathFragment = (*PrebuiltBootclasspathFragmentModule)(nil)
|
||||
|
||||
// createBootImageTag creates the tag to uniquely identify the boot image file among all of the
|
||||
// files that a module requires from the prebuilt .apex file.
|
||||
func createBootImageTag(arch android.ArchType, baseName string) string {
|
||||
tag := fmt.Sprintf(".bootimage-%s-%s", arch, baseName)
|
||||
return tag
|
||||
}
|
||||
|
||||
// RequiredFilesFromPrebuiltApex returns the list of all files the prebuilt_bootclasspath_fragment
|
||||
// requires from a prebuilt .apex file.
|
||||
//
|
||||
@@ -1328,25 +1248,11 @@ func (module *PrebuiltBootclasspathFragmentModule) RequiredFilesFromPrebuiltApex
|
||||
// Add the boot image profile.
|
||||
files = append(files, imageConfig.profileInstallPathInApex)
|
||||
}
|
||||
if imageConfig.shouldInstallInApex() {
|
||||
// Add the boot image files, e.g. .art, .oat and .vdex files.
|
||||
for _, variant := range imageConfig.apexVariants() {
|
||||
arch := variant.target.Arch.ArchType
|
||||
for _, path := range variant.imagesDeps.Paths() {
|
||||
base := path.Base()
|
||||
files = append(files, apexRootRelativePathToBootImageFile(arch, base))
|
||||
}
|
||||
}
|
||||
}
|
||||
return files
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func apexRootRelativePathToBootImageFile(arch android.ArchType, base string) string {
|
||||
return filepath.Join("javalib", arch.String(), base)
|
||||
}
|
||||
|
||||
var _ android.RequiredFilesFromPrebuiltApex = (*PrebuiltBootclasspathFragmentModule)(nil)
|
||||
|
||||
func prebuiltBootclasspathFragmentFactory() android.Module {
|
||||
|
@@ -250,11 +250,12 @@ type bootImageConfig struct {
|
||||
// Output directory for the image files with debug symbols.
|
||||
symbolsDir android.OutputPath
|
||||
|
||||
// Subdirectory where the image files are installed.
|
||||
installDirOnHost string
|
||||
|
||||
// Subdirectory where the image files on device are installed.
|
||||
installDirOnDevice string
|
||||
// The relative location where the image files are installed. On host, the location is relative to
|
||||
// $ANDROID_PRODUCT_OUT.
|
||||
//
|
||||
// Only the configs that are built by platform_bootclasspath are installable on device. On device,
|
||||
// the location is relative to "/".
|
||||
installDir string
|
||||
|
||||
// Install path of the boot image profile if it needs to be installed in the APEX, or empty if not
|
||||
// needed.
|
||||
@@ -294,6 +295,11 @@ type bootImageConfig struct {
|
||||
|
||||
// The "--single-image" argument.
|
||||
singleImage bool
|
||||
|
||||
// Profiles imported from other boot image configs. Each element must represent a
|
||||
// `bootclasspath_fragment` of an APEX (i.e., the `name` field of each element must refer to the
|
||||
// `image_name` property of a `bootclasspath_fragment`).
|
||||
profileImports []*bootImageConfig
|
||||
}
|
||||
|
||||
// Target-dependent description of a boot image.
|
||||
@@ -421,11 +427,6 @@ func (image *bootImageConfig) apexVariants() []*bootImageVariant {
|
||||
return variants
|
||||
}
|
||||
|
||||
// Returns true if the boot image should be installed in the APEX.
|
||||
func (image *bootImageConfig) shouldInstallInApex() bool {
|
||||
return strings.HasPrefix(image.installDirOnDevice, "apex/")
|
||||
}
|
||||
|
||||
// Return boot image locations (as a list of symbolic paths).
|
||||
//
|
||||
// The image "location" is a symbolic path that, with multiarchitecture support, doesn't really
|
||||
@@ -596,6 +597,12 @@ func buildBootImageVariantsForBuildOs(ctx android.ModuleContext, image *bootImag
|
||||
buildBootImageForOsType(ctx, image, profile, ctx.Config().BuildOS)
|
||||
}
|
||||
|
||||
// bootImageFilesByArch is a map from android.ArchType to the paths to the boot image files.
|
||||
//
|
||||
// The paths include the .art, .oat and .vdex files, one for each of the modules from which the boot
|
||||
// image is created.
|
||||
type bootImageFilesByArch map[android.ArchType]android.Paths
|
||||
|
||||
// bootImageOutputs encapsulates information about boot images that were created/obtained by
|
||||
// commonBootclasspathFragment.produceBootImageFiles.
|
||||
type bootImageOutputs struct {
|
||||
@@ -656,8 +663,7 @@ func buildBootImageZipInPredefinedLocation(ctx android.ModuleContext, image *boo
|
||||
}
|
||||
|
||||
type bootImageVariantOutputs struct {
|
||||
config *bootImageVariant
|
||||
deviceInstalls android.RuleBuilderInstalls
|
||||
config *bootImageVariant
|
||||
}
|
||||
|
||||
// Generate boot image build rules for a specific target.
|
||||
@@ -668,9 +674,9 @@ func buildBootImageVariant(ctx android.ModuleContext, image *bootImageVariant, p
|
||||
|
||||
arch := image.target.Arch.ArchType
|
||||
os := image.target.Os.String() // We need to distinguish host-x86 and device-x86.
|
||||
symbolsDir := image.symbolsDir.Join(ctx, os, image.installDirOnHost, arch.String())
|
||||
symbolsDir := image.symbolsDir.Join(ctx, os, image.installDir, arch.String())
|
||||
symbolsFile := symbolsDir.Join(ctx, image.stem+".oat")
|
||||
outputDir := image.dir.Join(ctx, os, image.installDirOnHost, arch.String())
|
||||
outputDir := image.dir.Join(ctx, os, image.installDir, arch.String())
|
||||
outputPath := outputDir.Join(ctx, image.stem+".oat")
|
||||
oatLocation := dexpreopt.PathToLocation(outputPath, arch)
|
||||
imagePath := outputPath.ReplaceExtension(ctx, "art")
|
||||
@@ -710,6 +716,34 @@ func buildBootImageVariant(ctx android.ModuleContext, image *bootImageVariant, p
|
||||
cmd.FlagWithInput("--profile-file=", profile)
|
||||
}
|
||||
|
||||
fragments := make(map[string]commonBootclasspathFragment)
|
||||
ctx.VisitDirectDepsWithTag(bootclasspathFragmentDepTag, func(child android.Module) {
|
||||
fragment := child.(commonBootclasspathFragment)
|
||||
if fragment.getImageName() != nil && android.IsModulePreferred(child) {
|
||||
fragments[*fragment.getImageName()] = fragment
|
||||
}
|
||||
})
|
||||
|
||||
for _, profileImport := range image.profileImports {
|
||||
fragment := fragments[profileImport.name]
|
||||
if fragment == nil {
|
||||
ctx.ModuleErrorf("Boot image config '%[1]s' imports profile from '%[2]s', but a "+
|
||||
"bootclasspath_fragment with image name '%[2]s' doesn't exist or is not added as a "+
|
||||
"dependency of '%[1]s'",
|
||||
image.name,
|
||||
profileImport.name)
|
||||
return bootImageVariantOutputs{}
|
||||
}
|
||||
if fragment.getProfilePath() == nil {
|
||||
ctx.ModuleErrorf("Boot image config '%[1]s' imports profile from '%[2]s', but '%[2]s' "+
|
||||
"doesn't provide a profile",
|
||||
image.name,
|
||||
profileImport.name)
|
||||
return bootImageVariantOutputs{}
|
||||
}
|
||||
cmd.FlagWithInput("--profile-file=", fragment.getProfilePath())
|
||||
}
|
||||
|
||||
dirtyImageFile := "frameworks/base/config/dirty-image-objects"
|
||||
dirtyImagePath := android.ExistentPathForSource(ctx, dirtyImageFile)
|
||||
if dirtyImagePath.Valid() {
|
||||
@@ -796,11 +830,10 @@ func buildBootImageVariant(ctx android.ModuleContext, image *bootImageVariant, p
|
||||
|
||||
cmd.Textf(`|| ( echo %s ; false )`, proptools.ShellEscape(failureMessage))
|
||||
|
||||
installDir := filepath.Join("/", image.installDirOnHost, arch.String())
|
||||
installDir := filepath.Dir(image.imagePathOnDevice)
|
||||
|
||||
var vdexInstalls android.RuleBuilderInstalls
|
||||
var unstrippedInstalls android.RuleBuilderInstalls
|
||||
var deviceInstalls android.RuleBuilderInstalls
|
||||
|
||||
for _, artOrOat := range image.moduleFiles(ctx, outputDir, ".art", ".oat") {
|
||||
cmd.ImplicitOutput(artOrOat)
|
||||
@@ -826,14 +859,6 @@ func buildBootImageVariant(ctx android.ModuleContext, image *bootImageVariant, p
|
||||
android.RuleBuilderInstall{unstrippedOat, filepath.Join(installDir, unstrippedOat.Base())})
|
||||
}
|
||||
|
||||
if image.installDirOnHost != image.installDirOnDevice && !image.shouldInstallInApex() && !ctx.Config().UnbundledBuild() {
|
||||
installDirOnDevice := filepath.Join("/", image.installDirOnDevice, arch.String())
|
||||
for _, file := range image.moduleFiles(ctx, outputDir, ".art", ".oat", ".vdex") {
|
||||
deviceInstalls = append(deviceInstalls,
|
||||
android.RuleBuilderInstall{file, filepath.Join(installDirOnDevice, file.Base())})
|
||||
}
|
||||
}
|
||||
|
||||
rule.Build(image.name+"JarsDexpreopt_"+image.target.String(), "dexpreopt "+image.name+" jars "+arch.String())
|
||||
|
||||
// save output and installed files for makevars
|
||||
@@ -849,7 +874,6 @@ func buildBootImageVariant(ctx android.ModuleContext, image *bootImageVariant, p
|
||||
|
||||
return bootImageVariantOutputs{
|
||||
image,
|
||||
deviceInstalls,
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,130 +0,0 @@
|
||||
// Copyright 2019 Google Inc. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package java
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"sort"
|
||||
"testing"
|
||||
|
||||
"android/soong/android"
|
||||
)
|
||||
|
||||
func testDexpreoptBoot(t *testing.T, ruleFile string, expectedInputs, expectedOutputs []string) {
|
||||
bp := `
|
||||
java_sdk_library {
|
||||
name: "foo",
|
||||
srcs: ["a.java"],
|
||||
api_packages: ["foo"],
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "bar",
|
||||
srcs: ["b.java"],
|
||||
installable: true,
|
||||
system_ext_specific: true,
|
||||
}
|
||||
|
||||
dex_import {
|
||||
name: "baz",
|
||||
jars: ["a.jar"],
|
||||
}
|
||||
|
||||
platform_bootclasspath {
|
||||
name: "platform-bootclasspath",
|
||||
}
|
||||
`
|
||||
|
||||
result := android.GroupFixturePreparers(
|
||||
prepareForJavaTest,
|
||||
PrepareForTestWithJavaSdkLibraryFiles,
|
||||
FixtureWithLastReleaseApis("foo"),
|
||||
FixtureConfigureBootJars("platform:foo", "system_ext:bar", "platform:baz"),
|
||||
).RunTestWithBp(t, bp)
|
||||
|
||||
platformBootclasspath := result.ModuleForTests("platform-bootclasspath", "android_common")
|
||||
rule := platformBootclasspath.Output(ruleFile)
|
||||
|
||||
for i := range expectedInputs {
|
||||
expectedInputs[i] = filepath.Join("out/soong/dexpreopt_arm64", expectedInputs[i])
|
||||
}
|
||||
|
||||
for i := range expectedOutputs {
|
||||
expectedOutputs[i] = filepath.Join("out/soong/dexpreopt_arm64", expectedOutputs[i])
|
||||
}
|
||||
|
||||
inputs := rule.Implicits.Strings()
|
||||
sort.Strings(inputs)
|
||||
sort.Strings(expectedInputs)
|
||||
|
||||
outputs := append(android.WritablePaths{rule.Output}, rule.ImplicitOutputs...).Strings()
|
||||
sort.Strings(outputs)
|
||||
sort.Strings(expectedOutputs)
|
||||
|
||||
android.AssertStringPathsRelativeToTopEquals(t, "inputs", result.Config, expectedInputs, inputs)
|
||||
|
||||
android.AssertStringPathsRelativeToTopEquals(t, "outputs", result.Config, expectedOutputs, outputs)
|
||||
}
|
||||
|
||||
func TestDexpreoptBootJars(t *testing.T) {
|
||||
ruleFile := "boot-foo.art"
|
||||
|
||||
expectedInputs := []string{
|
||||
"dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
|
||||
"dex_bootjars_input/foo.jar",
|
||||
"dex_bootjars_input/bar.jar",
|
||||
"dex_bootjars_input/baz.jar",
|
||||
}
|
||||
|
||||
expectedOutputs := []string{
|
||||
"dex_bootjars/android/system/framework/arm64/boot.invocation",
|
||||
"dex_bootjars/android/system/framework/arm64/boot-foo.art",
|
||||
"dex_bootjars/android/system/framework/arm64/boot-bar.art",
|
||||
"dex_bootjars/android/system/framework/arm64/boot-baz.art",
|
||||
"dex_bootjars/android/system/framework/arm64/boot-foo.oat",
|
||||
"dex_bootjars/android/system/framework/arm64/boot-bar.oat",
|
||||
"dex_bootjars/android/system/framework/arm64/boot-baz.oat",
|
||||
"dex_bootjars/android/system/framework/arm64/boot-foo.vdex",
|
||||
"dex_bootjars/android/system/framework/arm64/boot-bar.vdex",
|
||||
"dex_bootjars/android/system/framework/arm64/boot-baz.vdex",
|
||||
"dex_bootjars_unstripped/android/system/framework/arm64/boot-foo.oat",
|
||||
"dex_bootjars_unstripped/android/system/framework/arm64/boot-bar.oat",
|
||||
"dex_bootjars_unstripped/android/system/framework/arm64/boot-baz.oat",
|
||||
}
|
||||
|
||||
testDexpreoptBoot(t, ruleFile, expectedInputs, expectedOutputs)
|
||||
}
|
||||
|
||||
// Changes to the boot.zip structure may break the ART APK scanner.
|
||||
func TestDexpreoptBootZip(t *testing.T) {
|
||||
ruleFile := "boot.zip"
|
||||
|
||||
ctx := android.PathContextForTesting(android.TestArchConfig("", nil, "", nil))
|
||||
expectedInputs := []string{}
|
||||
for _, target := range ctx.Config().Targets[android.Android] {
|
||||
for _, ext := range []string{".art", ".oat", ".vdex"} {
|
||||
for _, jar := range []string{"foo", "bar", "baz"} {
|
||||
expectedInputs = append(expectedInputs,
|
||||
filepath.Join("dex_bootjars", target.Os.String(), "system/framework", target.Arch.ArchType.String(), "boot-"+jar+ext))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
expectedOutputs := []string{
|
||||
"dex_bootjars/boot.zip",
|
||||
}
|
||||
|
||||
testDexpreoptBoot(t, ruleFile, expectedInputs, expectedOutputs)
|
||||
}
|
@@ -53,7 +53,7 @@ func genBootImageConfigRaw(ctx android.PathContext) map[string]*bootImageConfig
|
||||
global := dexpreopt.GetGlobalConfig(ctx)
|
||||
|
||||
artModules := global.ArtApexJars
|
||||
frameworkModules := global.BootJars.RemoveList(artModules)
|
||||
frameworkModules := global.BootJars // This includes `artModules`.
|
||||
mainlineBcpModules := global.ApexBootJars
|
||||
frameworkSubdir := "system/framework"
|
||||
|
||||
@@ -62,8 +62,7 @@ func genBootImageConfigRaw(ctx android.PathContext) map[string]*bootImageConfig
|
||||
artCfg := bootImageConfig{
|
||||
name: artBootImageName,
|
||||
stem: bootImageStem,
|
||||
installDirOnHost: "apex/art_boot_images/javalib",
|
||||
installDirOnDevice: frameworkSubdir,
|
||||
installDir: "apex/art_boot_images/javalib",
|
||||
profileInstallPathInApex: "etc/boot-image.prof",
|
||||
modules: artModules,
|
||||
preloadedClassesFile: "art/build/boot/preloaded-classes",
|
||||
@@ -74,26 +73,24 @@ func genBootImageConfigRaw(ctx android.PathContext) map[string]*bootImageConfig
|
||||
// Framework config for the boot image extension.
|
||||
// It includes framework libraries and depends on the ART config.
|
||||
frameworkCfg := bootImageConfig{
|
||||
extends: &artCfg,
|
||||
name: frameworkBootImageName,
|
||||
stem: bootImageStem,
|
||||
installDirOnHost: frameworkSubdir,
|
||||
installDirOnDevice: frameworkSubdir,
|
||||
installDir: frameworkSubdir,
|
||||
modules: frameworkModules,
|
||||
preloadedClassesFile: "frameworks/base/config/preloaded-classes",
|
||||
compilerFilter: "speed-profile",
|
||||
singleImage: false,
|
||||
profileImports: []*bootImageConfig{&artCfg},
|
||||
}
|
||||
|
||||
mainlineCfg := bootImageConfig{
|
||||
extends: &frameworkCfg,
|
||||
name: mainlineBootImageName,
|
||||
stem: bootImageStem,
|
||||
installDirOnHost: frameworkSubdir,
|
||||
installDirOnDevice: frameworkSubdir,
|
||||
modules: mainlineBcpModules,
|
||||
compilerFilter: "verify",
|
||||
singleImage: true,
|
||||
extends: &frameworkCfg,
|
||||
name: mainlineBootImageName,
|
||||
stem: bootImageStem,
|
||||
installDir: frameworkSubdir,
|
||||
modules: mainlineBcpModules,
|
||||
compilerFilter: "verify",
|
||||
singleImage: true,
|
||||
}
|
||||
|
||||
return map[string]*bootImageConfig{
|
||||
@@ -132,12 +129,12 @@ func genBootImageConfigs(ctx android.PathContext) map[string]*bootImageConfig {
|
||||
// Create target-specific variants.
|
||||
for _, target := range targets {
|
||||
arch := target.Arch.ArchType
|
||||
imageDir := c.dir.Join(ctx, target.Os.String(), c.installDirOnHost, arch.String())
|
||||
imageDir := c.dir.Join(ctx, target.Os.String(), c.installDir, arch.String())
|
||||
variant := &bootImageVariant{
|
||||
bootImageConfig: c,
|
||||
target: target,
|
||||
imagePathOnHost: imageDir.Join(ctx, imageName),
|
||||
imagePathOnDevice: filepath.Join("/", c.installDirOnDevice, arch.String(), imageName),
|
||||
imagePathOnDevice: filepath.Join("/", c.installDir, arch.String(), imageName),
|
||||
imagesDeps: c.moduleFiles(ctx, imageDir, ".art", ".oat", ".vdex"),
|
||||
dexLocations: c.modules.DevicePaths(ctx.Config(), target.Os),
|
||||
}
|
||||
|
@@ -147,8 +147,7 @@ type expectedConfig struct {
|
||||
stem string
|
||||
dir string
|
||||
symbolsDir string
|
||||
installDirOnDevice string
|
||||
installDirOnHost string
|
||||
installDir string
|
||||
profileInstallPathInApex string
|
||||
modules android.ConfiguredJarList
|
||||
dexPaths []string
|
||||
@@ -209,8 +208,7 @@ func checkArtBootImageConfig(t *testing.T, result *android.TestResult, mutated b
|
||||
stem: "boot",
|
||||
dir: "out/soong/dexpreopt_arm64/dex_artjars",
|
||||
symbolsDir: "out/soong/dexpreopt_arm64/dex_artjars_unstripped",
|
||||
installDirOnDevice: "system/framework",
|
||||
installDirOnHost: "apex/art_boot_images/javalib",
|
||||
installDir: "apex/art_boot_images/javalib",
|
||||
profileInstallPathInApex: "etc/boot-image.prof",
|
||||
modules: android.CreateTestConfiguredJarList([]string{"com.android.art:core1", "com.android.art:core2"}),
|
||||
dexPaths: []string{"out/soong/dexpreopt_arm64/dex_artjars_input/core1.jar", "out/soong/dexpreopt_arm64/dex_artjars_input/core2.jar"},
|
||||
@@ -222,7 +220,7 @@ func checkArtBootImageConfig(t *testing.T, result *android.TestResult, mutated b
|
||||
dexLocations: []string{"/apex/com.android.art/javalib/core1.jar", "/apex/com.android.art/javalib/core2.jar"},
|
||||
dexLocationsDeps: []string{"/apex/com.android.art/javalib/core1.jar", "/apex/com.android.art/javalib/core2.jar"},
|
||||
imagePathOnHost: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
|
||||
imagePathOnDevice: "/system/framework/arm64/boot.art",
|
||||
imagePathOnDevice: "/apex/art_boot_images/javalib/arm64/boot.art",
|
||||
imagesDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat",
|
||||
@@ -276,7 +274,7 @@ func checkArtBootImageConfig(t *testing.T, result *android.TestResult, mutated b
|
||||
dexLocations: []string{"/apex/com.android.art/javalib/core1.jar", "/apex/com.android.art/javalib/core2.jar"},
|
||||
dexLocationsDeps: []string{"/apex/com.android.art/javalib/core1.jar", "/apex/com.android.art/javalib/core2.jar"},
|
||||
imagePathOnHost: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
|
||||
imagePathOnDevice: "/system/framework/arm/boot.art",
|
||||
imagePathOnDevice: "/apex/art_boot_images/javalib/arm/boot.art",
|
||||
imagesDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat",
|
||||
@@ -330,7 +328,7 @@ func checkArtBootImageConfig(t *testing.T, result *android.TestResult, mutated b
|
||||
dexLocations: []string{"host/linux-x86/apex/com.android.art/javalib/core1.jar", "host/linux-x86/apex/com.android.art/javalib/core2.jar"},
|
||||
dexLocationsDeps: []string{"host/linux-x86/apex/com.android.art/javalib/core1.jar", "host/linux-x86/apex/com.android.art/javalib/core2.jar"},
|
||||
imagePathOnHost: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
|
||||
imagePathOnDevice: "/system/framework/x86_64/boot.art",
|
||||
imagePathOnDevice: "/apex/art_boot_images/javalib/x86_64/boot.art",
|
||||
imagesDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat",
|
||||
@@ -382,7 +380,7 @@ func checkArtBootImageConfig(t *testing.T, result *android.TestResult, mutated b
|
||||
dexLocations: []string{"host/linux-x86/apex/com.android.art/javalib/core1.jar", "host/linux-x86/apex/com.android.art/javalib/core2.jar"},
|
||||
dexLocationsDeps: []string{"host/linux-x86/apex/com.android.art/javalib/core1.jar", "host/linux-x86/apex/com.android.art/javalib/core2.jar"},
|
||||
imagePathOnHost: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
|
||||
imagePathOnDevice: "/system/framework/x86/boot.art",
|
||||
imagePathOnDevice: "/apex/art_boot_images/javalib/x86/boot.art",
|
||||
imagesDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat",
|
||||
@@ -462,39 +460,67 @@ func checkFrameworkBootImageConfig(t *testing.T, result *android.TestResult, mut
|
||||
stem: "boot",
|
||||
dir: "out/soong/dexpreopt_arm64/dex_bootjars",
|
||||
symbolsDir: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped",
|
||||
installDirOnDevice: "system/framework",
|
||||
installDirOnHost: "system/framework",
|
||||
installDir: "system/framework",
|
||||
profileInstallPathInApex: "",
|
||||
modules: android.CreateTestConfiguredJarList([]string{"platform:framework"}),
|
||||
dexPaths: []string{"out/soong/dexpreopt_arm64/dex_bootjars_input/framework.jar"},
|
||||
dexPathsDeps: []string{"out/soong/dexpreopt_arm64/dex_artjars_input/core1.jar", "out/soong/dexpreopt_arm64/dex_artjars_input/core2.jar", "out/soong/dexpreopt_arm64/dex_bootjars_input/framework.jar"},
|
||||
zip: "out/soong/dexpreopt_arm64/dex_bootjars/boot.zip",
|
||||
modules: android.CreateTestConfiguredJarList([]string{
|
||||
"com.android.art:core1",
|
||||
"com.android.art:core2",
|
||||
"platform:framework",
|
||||
}),
|
||||
dexPaths: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/core1.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/core2.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/framework.jar",
|
||||
},
|
||||
dexPathsDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/core1.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/core2.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/framework.jar",
|
||||
},
|
||||
zip: "out/soong/dexpreopt_arm64/dex_bootjars/boot.zip",
|
||||
variants: []*expectedVariant{
|
||||
{
|
||||
archType: android.Arm64,
|
||||
dexLocations: []string{"/system/framework/framework.jar"},
|
||||
archType: android.Arm64,
|
||||
dexLocations: []string{
|
||||
"/apex/com.android.art/javalib/core1.jar",
|
||||
"/apex/com.android.art/javalib/core2.jar",
|
||||
"/system/framework/framework.jar",
|
||||
},
|
||||
dexLocationsDeps: []string{
|
||||
"/apex/com.android.art/javalib/core1.jar",
|
||||
"/apex/com.android.art/javalib/core2.jar",
|
||||
"/system/framework/framework.jar",
|
||||
},
|
||||
imagePathOnHost: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.art",
|
||||
imagePathOnDevice: "/system/framework/arm64/boot-framework.art",
|
||||
imagePathOnHost: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.art",
|
||||
imagePathOnDevice: "/system/framework/arm64/boot.art",
|
||||
imagesDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.vdex",
|
||||
},
|
||||
baseImages: []string{"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art"},
|
||||
baseImagesDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex",
|
||||
},
|
||||
installs: []normalizedInstall{
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.art",
|
||||
to: "/system/framework/arm64/boot.art",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.oat",
|
||||
to: "/system/framework/arm64/boot.oat",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.art",
|
||||
to: "/system/framework/arm64/boot-core2.art",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.oat",
|
||||
to: "/system/framework/arm64/boot-core2.oat",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.art",
|
||||
to: "/system/framework/arm64/boot-framework.art",
|
||||
@@ -505,12 +531,28 @@ func checkFrameworkBootImageConfig(t *testing.T, result *android.TestResult, mut
|
||||
},
|
||||
},
|
||||
vdexInstalls: []normalizedInstall{
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.vdex",
|
||||
to: "/system/framework/arm64/boot.vdex",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.vdex",
|
||||
to: "/system/framework/arm64/boot-core2.vdex",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.vdex",
|
||||
to: "/system/framework/arm64/boot-framework.vdex",
|
||||
},
|
||||
},
|
||||
unstrippedInstalls: []normalizedInstall{
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot.oat",
|
||||
to: "/system/framework/arm64/boot.oat",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot-core2.oat",
|
||||
to: "/system/framework/arm64/boot-core2.oat",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot-framework.oat",
|
||||
to: "/system/framework/arm64/boot-framework.oat",
|
||||
@@ -519,30 +561,47 @@ func checkFrameworkBootImageConfig(t *testing.T, result *android.TestResult, mut
|
||||
licenseMetadataFile: expectedLicenseMetadataFile,
|
||||
},
|
||||
{
|
||||
archType: android.Arm,
|
||||
dexLocations: []string{"/system/framework/framework.jar"},
|
||||
archType: android.Arm,
|
||||
dexLocations: []string{
|
||||
"/apex/com.android.art/javalib/core1.jar",
|
||||
"/apex/com.android.art/javalib/core2.jar",
|
||||
"/system/framework/framework.jar",
|
||||
},
|
||||
dexLocationsDeps: []string{
|
||||
"/apex/com.android.art/javalib/core1.jar",
|
||||
"/apex/com.android.art/javalib/core2.jar",
|
||||
"/system/framework/framework.jar",
|
||||
},
|
||||
imagePathOnHost: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.art",
|
||||
imagePathOnDevice: "/system/framework/arm/boot-framework.art",
|
||||
imagePathOnHost: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.art",
|
||||
imagePathOnDevice: "/system/framework/arm/boot.art",
|
||||
imagesDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.vdex",
|
||||
},
|
||||
baseImages: []string{"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art"},
|
||||
baseImagesDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex",
|
||||
},
|
||||
installs: []normalizedInstall{
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.art",
|
||||
to: "/system/framework/arm/boot.art",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.oat",
|
||||
to: "/system/framework/arm/boot.oat",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.art",
|
||||
to: "/system/framework/arm/boot-core2.art",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.oat",
|
||||
to: "/system/framework/arm/boot-core2.oat",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.art",
|
||||
to: "/system/framework/arm/boot-framework.art",
|
||||
@@ -553,12 +612,28 @@ func checkFrameworkBootImageConfig(t *testing.T, result *android.TestResult, mut
|
||||
},
|
||||
},
|
||||
vdexInstalls: []normalizedInstall{
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.vdex",
|
||||
to: "/system/framework/arm/boot.vdex",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.vdex",
|
||||
to: "/system/framework/arm/boot-core2.vdex",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.vdex",
|
||||
to: "/system/framework/arm/boot-framework.vdex",
|
||||
},
|
||||
},
|
||||
unstrippedInstalls: []normalizedInstall{
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm/boot.oat",
|
||||
to: "/system/framework/arm/boot.oat",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm/boot-core2.oat",
|
||||
to: "/system/framework/arm/boot-core2.oat",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm/boot-framework.oat",
|
||||
to: "/system/framework/arm/boot-framework.oat",
|
||||
@@ -567,30 +642,47 @@ func checkFrameworkBootImageConfig(t *testing.T, result *android.TestResult, mut
|
||||
licenseMetadataFile: expectedLicenseMetadataFile,
|
||||
},
|
||||
{
|
||||
archType: android.X86_64,
|
||||
dexLocations: []string{"host/linux-x86/system/framework/framework.jar"},
|
||||
archType: android.X86_64,
|
||||
dexLocations: []string{
|
||||
"host/linux-x86/apex/com.android.art/javalib/core1.jar",
|
||||
"host/linux-x86/apex/com.android.art/javalib/core2.jar",
|
||||
"host/linux-x86/system/framework/framework.jar",
|
||||
},
|
||||
dexLocationsDeps: []string{
|
||||
"host/linux-x86/apex/com.android.art/javalib/core1.jar",
|
||||
"host/linux-x86/apex/com.android.art/javalib/core2.jar",
|
||||
"host/linux-x86/system/framework/framework.jar",
|
||||
},
|
||||
imagePathOnHost: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art",
|
||||
imagePathOnDevice: "/system/framework/x86_64/boot-framework.art",
|
||||
imagePathOnHost: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.art",
|
||||
imagePathOnDevice: "/system/framework/x86_64/boot.art",
|
||||
imagesDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex",
|
||||
},
|
||||
baseImages: []string{"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art"},
|
||||
baseImagesDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex",
|
||||
},
|
||||
installs: []normalizedInstall{
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.art",
|
||||
to: "/system/framework/x86_64/boot.art",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.oat",
|
||||
to: "/system/framework/x86_64/boot.oat",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.art",
|
||||
to: "/system/framework/x86_64/boot-core2.art",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.oat",
|
||||
to: "/system/framework/x86_64/boot-core2.oat",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art",
|
||||
to: "/system/framework/x86_64/boot-framework.art",
|
||||
@@ -601,12 +693,28 @@ func checkFrameworkBootImageConfig(t *testing.T, result *android.TestResult, mut
|
||||
},
|
||||
},
|
||||
vdexInstalls: []normalizedInstall{
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.vdex",
|
||||
to: "/system/framework/x86_64/boot.vdex",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.vdex",
|
||||
to: "/system/framework/x86_64/boot-core2.vdex",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex",
|
||||
to: "/system/framework/x86_64/boot-framework.vdex",
|
||||
},
|
||||
},
|
||||
unstrippedInstalls: []normalizedInstall{
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86_64/boot.oat",
|
||||
to: "/system/framework/x86_64/boot.oat",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86_64/boot-core2.oat",
|
||||
to: "/system/framework/x86_64/boot-core2.oat",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86_64/boot-framework.oat",
|
||||
to: "/system/framework/x86_64/boot-framework.oat",
|
||||
@@ -615,30 +723,47 @@ func checkFrameworkBootImageConfig(t *testing.T, result *android.TestResult, mut
|
||||
licenseMetadataFile: expectedLicenseMetadataFile,
|
||||
},
|
||||
{
|
||||
archType: android.X86,
|
||||
dexLocations: []string{"host/linux-x86/system/framework/framework.jar"},
|
||||
archType: android.X86,
|
||||
dexLocations: []string{
|
||||
"host/linux-x86/apex/com.android.art/javalib/core1.jar",
|
||||
"host/linux-x86/apex/com.android.art/javalib/core2.jar",
|
||||
"host/linux-x86/system/framework/framework.jar",
|
||||
},
|
||||
dexLocationsDeps: []string{
|
||||
"host/linux-x86/apex/com.android.art/javalib/core1.jar",
|
||||
"host/linux-x86/apex/com.android.art/javalib/core2.jar",
|
||||
"host/linux-x86/system/framework/framework.jar",
|
||||
},
|
||||
imagePathOnHost: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art",
|
||||
imagePathOnDevice: "/system/framework/x86/boot-framework.art",
|
||||
imagePathOnHost: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.art",
|
||||
imagePathOnDevice: "/system/framework/x86/boot.art",
|
||||
imagesDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex",
|
||||
},
|
||||
baseImages: []string{"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art"},
|
||||
baseImagesDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex",
|
||||
},
|
||||
installs: []normalizedInstall{
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.art",
|
||||
to: "/system/framework/x86/boot.art",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.oat",
|
||||
to: "/system/framework/x86/boot.oat",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.art",
|
||||
to: "/system/framework/x86/boot-core2.art",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.oat",
|
||||
to: "/system/framework/x86/boot-core2.oat",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art",
|
||||
to: "/system/framework/x86/boot-framework.art",
|
||||
@@ -649,12 +774,28 @@ func checkFrameworkBootImageConfig(t *testing.T, result *android.TestResult, mut
|
||||
},
|
||||
},
|
||||
vdexInstalls: []normalizedInstall{
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.vdex",
|
||||
to: "/system/framework/x86/boot.vdex",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.vdex",
|
||||
to: "/system/framework/x86/boot-core2.vdex",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex",
|
||||
to: "/system/framework/x86/boot-framework.vdex",
|
||||
},
|
||||
},
|
||||
unstrippedInstalls: []normalizedInstall{
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86/boot.oat",
|
||||
to: "/system/framework/x86/boot.oat",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86/boot-core2.oat",
|
||||
to: "/system/framework/x86/boot-core2.oat",
|
||||
},
|
||||
{
|
||||
from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86/boot-framework.oat",
|
||||
to: "/system/framework/x86/boot-framework.oat",
|
||||
@@ -693,8 +834,7 @@ func CheckMainlineBootImageConfig(t *testing.T, result *android.TestResult) {
|
||||
stem: "boot",
|
||||
dir: "out/soong/dexpreopt_arm64/dex_mainlinejars",
|
||||
symbolsDir: "out/soong/dexpreopt_arm64/dex_mainlinejars_unstripped",
|
||||
installDirOnDevice: "system/framework",
|
||||
installDirOnHost: "system/framework",
|
||||
installDir: "system/framework",
|
||||
profileInstallPathInApex: "",
|
||||
modules: android.CreateTestConfiguredJarList([]string{
|
||||
"com.android.foo:framework-foo",
|
||||
@@ -705,8 +845,8 @@ func CheckMainlineBootImageConfig(t *testing.T, result *android.TestResult) {
|
||||
"out/soong/dexpreopt_arm64/dex_mainlinejars_input/framework-bar.jar",
|
||||
},
|
||||
dexPathsDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars_input/core1.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars_input/core2.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/core1.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/core2.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars_input/framework.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_mainlinejars_input/framework-foo.jar",
|
||||
"out/soong/dexpreopt_arm64/dex_mainlinejars_input/framework-bar.jar",
|
||||
@@ -734,16 +874,15 @@ func CheckMainlineBootImageConfig(t *testing.T, result *android.TestResult) {
|
||||
"out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.vdex",
|
||||
},
|
||||
baseImages: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.art",
|
||||
},
|
||||
baseImagesDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.vdex",
|
||||
@@ -793,16 +932,15 @@ func CheckMainlineBootImageConfig(t *testing.T, result *android.TestResult) {
|
||||
"out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.vdex",
|
||||
},
|
||||
baseImages: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.art",
|
||||
},
|
||||
baseImagesDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.vdex",
|
||||
@@ -852,16 +990,15 @@ func CheckMainlineBootImageConfig(t *testing.T, result *android.TestResult) {
|
||||
"out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex",
|
||||
},
|
||||
baseImages: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.art",
|
||||
},
|
||||
baseImagesDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex",
|
||||
@@ -911,16 +1048,15 @@ func CheckMainlineBootImageConfig(t *testing.T, result *android.TestResult) {
|
||||
"out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.vdex",
|
||||
},
|
||||
baseImages: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.art",
|
||||
},
|
||||
baseImagesDeps: []string{
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.vdex",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat",
|
||||
"out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex",
|
||||
@@ -999,8 +1135,7 @@ func nestedCheckBootImageConfig(t *testing.T, imageConfig *bootImageConfig, expe
|
||||
android.AssertStringEquals(t, "stem", expected.stem, imageConfig.stem)
|
||||
android.AssertPathRelativeToTopEquals(t, "dir", expected.dir, imageConfig.dir)
|
||||
android.AssertPathRelativeToTopEquals(t, "symbolsDir", expected.symbolsDir, imageConfig.symbolsDir)
|
||||
android.AssertStringEquals(t, "installDirOnDevice", expected.installDirOnDevice, imageConfig.installDirOnDevice)
|
||||
android.AssertStringEquals(t, "installDirOnHost", expected.installDirOnHost, imageConfig.installDirOnHost)
|
||||
android.AssertStringEquals(t, "installDir", expected.installDir, imageConfig.installDir)
|
||||
android.AssertStringEquals(t, "profileInstallPathInApex", expected.profileInstallPathInApex, imageConfig.profileInstallPathInApex)
|
||||
android.AssertDeepEquals(t, "modules", expected.modules, imageConfig.modules)
|
||||
android.AssertPathsRelativeToTopEquals(t, "dexPaths", expected.dexPaths, imageConfig.dexPaths.Paths())
|
||||
@@ -1056,18 +1191,18 @@ func checkDexpreoptMakeVars(t *testing.T, result *android.TestResult, expectedLi
|
||||
fmt.Fprintf(out, "%s=%s\n", v.Name(), android.StringRelativeToTop(result.Config, v.Value()))
|
||||
}
|
||||
format := `
|
||||
DEXPREOPT_BOOTCLASSPATH_DEX_FILES=out/soong/dexpreopt_arm64/dex_artjars_input/core1.jar out/soong/dexpreopt_arm64/dex_artjars_input/core2.jar out/soong/dexpreopt_arm64/dex_bootjars_input/framework.jar
|
||||
DEXPREOPT_BOOTCLASSPATH_DEX_FILES=out/soong/dexpreopt_arm64/dex_bootjars_input/core1.jar out/soong/dexpreopt_arm64/dex_bootjars_input/core2.jar out/soong/dexpreopt_arm64/dex_bootjars_input/framework.jar
|
||||
DEXPREOPT_BOOTCLASSPATH_DEX_LOCATIONS=/apex/com.android.art/javalib/core1.jar /apex/com.android.art/javalib/core2.jar /system/framework/framework.jar
|
||||
DEXPREOPT_BOOT_JARS_MODULES=platform:framework
|
||||
DEXPREOPT_BOOT_JARS_MODULES=com.android.art:core1:com.android.art:core2:platform:framework
|
||||
DEXPREOPT_GEN=out/host/linux-x86/bin/dexpreopt_gen
|
||||
DEXPREOPT_IMAGE_BUILT_INSTALLED_art_arm=out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art:/apex/art_boot_images/javalib/arm/boot.art out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat:/apex/art_boot_images/javalib/arm/boot.oat out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art:/apex/art_boot_images/javalib/arm/boot-core2.art out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat:/apex/art_boot_images/javalib/arm/boot-core2.oat
|
||||
DEXPREOPT_IMAGE_BUILT_INSTALLED_art_arm64=out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art:/apex/art_boot_images/javalib/arm64/boot.art out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat:/apex/art_boot_images/javalib/arm64/boot.oat out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art:/apex/art_boot_images/javalib/arm64/boot-core2.art out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat:/apex/art_boot_images/javalib/arm64/boot-core2.oat
|
||||
DEXPREOPT_IMAGE_BUILT_INSTALLED_art_host_x86=out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art:/apex/art_boot_images/javalib/x86/boot.art out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat:/apex/art_boot_images/javalib/x86/boot.oat out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art:/apex/art_boot_images/javalib/x86/boot-core2.art out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat:/apex/art_boot_images/javalib/x86/boot-core2.oat
|
||||
DEXPREOPT_IMAGE_BUILT_INSTALLED_art_host_x86_64=out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art:/apex/art_boot_images/javalib/x86_64/boot.art out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat:/apex/art_boot_images/javalib/x86_64/boot.oat out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art:/apex/art_boot_images/javalib/x86_64/boot-core2.art out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat:/apex/art_boot_images/javalib/x86_64/boot-core2.oat
|
||||
DEXPREOPT_IMAGE_BUILT_INSTALLED_boot_arm=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.art:/system/framework/arm/boot-framework.art out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.oat:/system/framework/arm/boot-framework.oat
|
||||
DEXPREOPT_IMAGE_BUILT_INSTALLED_boot_arm64=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.art:/system/framework/arm64/boot-framework.art out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.oat:/system/framework/arm64/boot-framework.oat
|
||||
DEXPREOPT_IMAGE_BUILT_INSTALLED_boot_host_x86=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art:/system/framework/x86/boot-framework.art out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat:/system/framework/x86/boot-framework.oat
|
||||
DEXPREOPT_IMAGE_BUILT_INSTALLED_boot_host_x86_64=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art:/system/framework/x86_64/boot-framework.art out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat:/system/framework/x86_64/boot-framework.oat
|
||||
DEXPREOPT_IMAGE_BUILT_INSTALLED_boot_arm=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.art:/system/framework/arm/boot.art out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.oat:/system/framework/arm/boot.oat out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.art:/system/framework/arm/boot-core2.art out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.oat:/system/framework/arm/boot-core2.oat out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.art:/system/framework/arm/boot-framework.art out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.oat:/system/framework/arm/boot-framework.oat
|
||||
DEXPREOPT_IMAGE_BUILT_INSTALLED_boot_arm64=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.art:/system/framework/arm64/boot.art out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.oat:/system/framework/arm64/boot.oat out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.art:/system/framework/arm64/boot-core2.art out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.oat:/system/framework/arm64/boot-core2.oat out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.art:/system/framework/arm64/boot-framework.art out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.oat:/system/framework/arm64/boot-framework.oat
|
||||
DEXPREOPT_IMAGE_BUILT_INSTALLED_boot_host_x86=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.art:/system/framework/x86/boot.art out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.oat:/system/framework/x86/boot.oat out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.art:/system/framework/x86/boot-core2.art out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.oat:/system/framework/x86/boot-core2.oat out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art:/system/framework/x86/boot-framework.art out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat:/system/framework/x86/boot-framework.oat
|
||||
DEXPREOPT_IMAGE_BUILT_INSTALLED_boot_host_x86_64=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.art:/system/framework/x86_64/boot.art out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.oat:/system/framework/x86_64/boot.oat out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.art:/system/framework/x86_64/boot-core2.art out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.oat:/system/framework/x86_64/boot-core2.oat out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art:/system/framework/x86_64/boot-framework.art out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat:/system/framework/x86_64/boot-framework.oat
|
||||
DEXPREOPT_IMAGE_BUILT_INSTALLED_mainline_arm=out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art:/system/framework/arm/boot-framework-foo.art out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.oat:/system/framework/arm/boot-framework-foo.oat
|
||||
DEXPREOPT_IMAGE_BUILT_INSTALLED_mainline_arm64=out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art:/system/framework/arm64/boot-framework-foo.art out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.oat:/system/framework/arm64/boot-framework-foo.oat
|
||||
DEXPREOPT_IMAGE_BUILT_INSTALLED_mainline_host_x86=out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art:/system/framework/x86/boot-framework-foo.art out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.oat:/system/framework/x86/boot-framework-foo.oat
|
||||
@@ -1076,10 +1211,10 @@ DEXPREOPT_IMAGE_DEPS_art_arm=out/soong/dexpreopt_arm64/dex_artjars/android/apex/
|
||||
DEXPREOPT_IMAGE_DEPS_art_arm64=out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex
|
||||
DEXPREOPT_IMAGE_DEPS_art_host_x86=out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex
|
||||
DEXPREOPT_IMAGE_DEPS_art_host_x86_64=out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex
|
||||
DEXPREOPT_IMAGE_DEPS_boot_arm=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.art out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.oat out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.vdex
|
||||
DEXPREOPT_IMAGE_DEPS_boot_arm64=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.art out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.oat out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.vdex
|
||||
DEXPREOPT_IMAGE_DEPS_boot_host_x86=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex
|
||||
DEXPREOPT_IMAGE_DEPS_boot_host_x86_64=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex
|
||||
DEXPREOPT_IMAGE_DEPS_boot_arm=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.art out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.oat out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.vdex out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.art out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.oat out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.vdex out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.art out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.oat out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.vdex
|
||||
DEXPREOPT_IMAGE_DEPS_boot_arm64=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.art out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.oat out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.vdex out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.art out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.oat out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.vdex out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.art out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.oat out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.vdex
|
||||
DEXPREOPT_IMAGE_DEPS_boot_host_x86=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.art out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.oat out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.vdex out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.art out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.oat out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.vdex out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex
|
||||
DEXPREOPT_IMAGE_DEPS_boot_host_x86_64=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.art out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.oat out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.vdex out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.art out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.oat out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.vdex out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex
|
||||
DEXPREOPT_IMAGE_DEPS_mainline_arm=out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.oat out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.vdex
|
||||
DEXPREOPT_IMAGE_DEPS_mainline_arm64=out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.oat out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.vdex
|
||||
DEXPREOPT_IMAGE_DEPS_mainline_host_x86=out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.oat out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.vdex
|
||||
@@ -1096,12 +1231,12 @@ DEXPREOPT_IMAGE_LICENSE_METADATA_mainline_arm=out/soong/.intermediates/framework
|
||||
DEXPREOPT_IMAGE_LICENSE_METADATA_mainline_arm64=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
|
||||
DEXPREOPT_IMAGE_LICENSE_METADATA_mainline_host_x86=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
|
||||
DEXPREOPT_IMAGE_LICENSE_METADATA_mainline_host_x86_64=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
|
||||
DEXPREOPT_IMAGE_LOCATIONS_ON_DEVICEart=/system/framework/boot.art
|
||||
DEXPREOPT_IMAGE_LOCATIONS_ON_DEVICEboot=/system/framework/boot.art:/system/framework/boot-framework.art
|
||||
DEXPREOPT_IMAGE_LOCATIONS_ON_DEVICEmainline=/system/framework/boot.art:/system/framework/boot-framework.art:/system/framework/boot-framework-foo.art
|
||||
DEXPREOPT_IMAGE_LOCATIONS_ON_DEVICEart=/apex/art_boot_images/javalib/boot.art
|
||||
DEXPREOPT_IMAGE_LOCATIONS_ON_DEVICEboot=/system/framework/boot.art
|
||||
DEXPREOPT_IMAGE_LOCATIONS_ON_DEVICEmainline=/system/framework/boot.art:/system/framework/boot-framework-foo.art
|
||||
DEXPREOPT_IMAGE_LOCATIONS_ON_HOSTart=out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/boot.art
|
||||
DEXPREOPT_IMAGE_LOCATIONS_ON_HOSTboot=out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/boot.art:out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/boot-framework.art
|
||||
DEXPREOPT_IMAGE_LOCATIONS_ON_HOSTmainline=out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/boot.art:out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/boot-framework.art:out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/boot-framework-foo.art
|
||||
DEXPREOPT_IMAGE_LOCATIONS_ON_HOSTboot=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/boot.art
|
||||
DEXPREOPT_IMAGE_LOCATIONS_ON_HOSTmainline=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/boot.art:out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/boot-framework-foo.art
|
||||
DEXPREOPT_IMAGE_NAMES=art boot mainline
|
||||
DEXPREOPT_IMAGE_PROFILE_BUILT_INSTALLED=out/soong/dexpreopt_arm64/dex_bootjars/boot.bprof:/system/etc/boot-image.bprof out/soong/dexpreopt_arm64/dex_bootjars/boot.prof:/system/etc/boot-image.prof
|
||||
DEXPREOPT_IMAGE_PROFILE_LICENSE_METADATA=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
|
||||
@@ -1109,10 +1244,10 @@ DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_art_arm=out/soong/dexpreopt_arm64/dex
|
||||
DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_art_arm64=out/soong/dexpreopt_arm64/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm64/boot.oat:/apex/art_boot_images/javalib/arm64/boot.oat out/soong/dexpreopt_arm64/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm64/boot-core2.oat:/apex/art_boot_images/javalib/arm64/boot-core2.oat
|
||||
DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_art_host_x86=out/soong/dexpreopt_arm64/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat:/apex/art_boot_images/javalib/x86/boot.oat out/soong/dexpreopt_arm64/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat:/apex/art_boot_images/javalib/x86/boot-core2.oat
|
||||
DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_art_host_x86_64=out/soong/dexpreopt_arm64/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat:/apex/art_boot_images/javalib/x86_64/boot.oat out/soong/dexpreopt_arm64/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat:/apex/art_boot_images/javalib/x86_64/boot-core2.oat
|
||||
DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_boot_arm=out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm/boot-framework.oat:/system/framework/arm/boot-framework.oat
|
||||
DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_boot_arm64=out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot-framework.oat:/system/framework/arm64/boot-framework.oat
|
||||
DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_boot_host_x86=out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86/boot-framework.oat:/system/framework/x86/boot-framework.oat
|
||||
DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_boot_host_x86_64=out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86_64/boot-framework.oat:/system/framework/x86_64/boot-framework.oat
|
||||
DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_boot_arm=out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm/boot.oat:/system/framework/arm/boot.oat out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm/boot-core2.oat:/system/framework/arm/boot-core2.oat out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm/boot-framework.oat:/system/framework/arm/boot-framework.oat
|
||||
DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_boot_arm64=out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot.oat:/system/framework/arm64/boot.oat out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot-core2.oat:/system/framework/arm64/boot-core2.oat out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot-framework.oat:/system/framework/arm64/boot-framework.oat
|
||||
DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_boot_host_x86=out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86/boot.oat:/system/framework/x86/boot.oat out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86/boot-core2.oat:/system/framework/x86/boot-core2.oat out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86/boot-framework.oat:/system/framework/x86/boot-framework.oat
|
||||
DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_boot_host_x86_64=out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86_64/boot.oat:/system/framework/x86_64/boot.oat out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86_64/boot-core2.oat:/system/framework/x86_64/boot-core2.oat out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86_64/boot-framework.oat:/system/framework/x86_64/boot-framework.oat
|
||||
DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_mainline_arm=out/soong/dexpreopt_arm64/dex_mainlinejars_unstripped/android/system/framework/arm/boot-framework-foo.oat:/system/framework/arm/boot-framework-foo.oat
|
||||
DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_mainline_arm64=out/soong/dexpreopt_arm64/dex_mainlinejars_unstripped/android/system/framework/arm64/boot-framework-foo.oat:/system/framework/arm64/boot-framework-foo.oat
|
||||
DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_mainline_host_x86=out/soong/dexpreopt_arm64/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86/boot-framework-foo.oat:/system/framework/x86/boot-framework-foo.oat
|
||||
@@ -1121,10 +1256,10 @@ DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_art_arm=out/soong/dexpreopt_arm64/dex_artja
|
||||
DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_art_arm64=out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex:/apex/art_boot_images/javalib/arm64/boot.vdex out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex:/apex/art_boot_images/javalib/arm64/boot-core2.vdex
|
||||
DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_art_host_x86=out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex:/apex/art_boot_images/javalib/x86/boot.vdex out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex:/apex/art_boot_images/javalib/x86/boot-core2.vdex
|
||||
DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_art_host_x86_64=out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex:/apex/art_boot_images/javalib/x86_64/boot.vdex out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex:/apex/art_boot_images/javalib/x86_64/boot-core2.vdex
|
||||
DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_boot_arm=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.vdex:/system/framework/arm/boot-framework.vdex
|
||||
DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_boot_arm64=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.vdex:/system/framework/arm64/boot-framework.vdex
|
||||
DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_boot_host_x86=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex:/system/framework/x86/boot-framework.vdex
|
||||
DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_boot_host_x86_64=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex:/system/framework/x86_64/boot-framework.vdex
|
||||
DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_boot_arm=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.vdex:/system/framework/arm/boot.vdex out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.vdex:/system/framework/arm/boot-core2.vdex out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.vdex:/system/framework/arm/boot-framework.vdex
|
||||
DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_boot_arm64=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.vdex:/system/framework/arm64/boot.vdex out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.vdex:/system/framework/arm64/boot-core2.vdex out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.vdex:/system/framework/arm64/boot-framework.vdex
|
||||
DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_boot_host_x86=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.vdex:/system/framework/x86/boot.vdex out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.vdex:/system/framework/x86/boot-core2.vdex out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex:/system/framework/x86/boot-framework.vdex
|
||||
DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_boot_host_x86_64=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.vdex:/system/framework/x86_64/boot.vdex out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.vdex:/system/framework/x86_64/boot-core2.vdex out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex:/system/framework/x86_64/boot-framework.vdex
|
||||
DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_mainline_arm=out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.vdex:/system/framework/arm/boot-framework-foo.vdex
|
||||
DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_mainline_arm64=out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.vdex:/system/framework/arm64/boot-framework-foo.vdex
|
||||
DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_mainline_host_x86=out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.vdex:/system/framework/x86/boot-framework-foo.vdex
|
||||
@@ -1136,10 +1271,10 @@ DEXPREOPT_IMAGE_art_arm=out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_b
|
||||
DEXPREOPT_IMAGE_art_arm64=out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art
|
||||
DEXPREOPT_IMAGE_art_host_x86=out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art
|
||||
DEXPREOPT_IMAGE_art_host_x86_64=out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art
|
||||
DEXPREOPT_IMAGE_boot_arm=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.art
|
||||
DEXPREOPT_IMAGE_boot_arm64=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.art
|
||||
DEXPREOPT_IMAGE_boot_host_x86=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art
|
||||
DEXPREOPT_IMAGE_boot_host_x86_64=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art
|
||||
DEXPREOPT_IMAGE_boot_arm=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.art
|
||||
DEXPREOPT_IMAGE_boot_arm64=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.art
|
||||
DEXPREOPT_IMAGE_boot_host_x86=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.art
|
||||
DEXPREOPT_IMAGE_boot_host_x86_64=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.art
|
||||
DEXPREOPT_IMAGE_mainline_arm=out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art
|
||||
DEXPREOPT_IMAGE_mainline_arm64=out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art
|
||||
DEXPREOPT_IMAGE_mainline_host_x86=out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art
|
||||
|
@@ -212,7 +212,7 @@ func TestDexpreoptEnabled(t *testing.T) {
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
preparers := android.GroupFixturePreparers(
|
||||
PrepareForTestWithJavaDefaultModules,
|
||||
PrepareForTestWithDexpreopt,
|
||||
PrepareForTestWithFakeApexMutator,
|
||||
dexpreopt.FixtureSetApexSystemServerJars("com.android.apex1:service-foo"),
|
||||
)
|
||||
@@ -257,7 +257,7 @@ func TestDex2oatToolDeps(t *testing.T) {
|
||||
|
||||
preparers := android.GroupFixturePreparers(
|
||||
cc.PrepareForTestWithCcDefaultModules,
|
||||
PrepareForTestWithJavaDefaultModulesWithoutFakeDex2oatd,
|
||||
PrepareForTestWithDexpreoptWithoutFakeDex2oatd,
|
||||
dexpreopt.PrepareForTestByEnablingDexpreopt)
|
||||
|
||||
testDex2oatToolDep := func(sourceEnabled, prebuiltEnabled, prebuiltPreferred bool,
|
||||
@@ -299,7 +299,7 @@ func TestDex2oatToolDeps(t *testing.T) {
|
||||
|
||||
func TestDexpreoptBuiltInstalledForApex(t *testing.T) {
|
||||
preparers := android.GroupFixturePreparers(
|
||||
PrepareForTestWithJavaDefaultModules,
|
||||
PrepareForTestWithDexpreopt,
|
||||
PrepareForTestWithFakeApexMutator,
|
||||
dexpreopt.FixtureSetApexSystemServerJars("com.android.apex1:service-foo"),
|
||||
)
|
||||
@@ -386,7 +386,7 @@ func verifyEntries(t *testing.T, message string, expectedModule string,
|
||||
|
||||
func TestAndroidMkEntriesForApex(t *testing.T) {
|
||||
preparers := android.GroupFixturePreparers(
|
||||
PrepareForTestWithJavaDefaultModules,
|
||||
PrepareForTestWithDexpreopt,
|
||||
PrepareForTestWithFakeApexMutator,
|
||||
dexpreopt.FixtureSetApexSystemServerJars("com.android.apex1:service-foo"),
|
||||
)
|
||||
|
@@ -39,7 +39,9 @@ var prepareForTestWithDefaultPlatformBootclasspath = android.FixtureAddTextFile(
|
||||
`)
|
||||
|
||||
var hiddenApiFixtureFactory = android.GroupFixturePreparers(
|
||||
prepareForJavaTest, PrepareForTestWithHiddenApiBuildComponents)
|
||||
PrepareForTestWithJavaDefaultModules,
|
||||
PrepareForTestWithHiddenApiBuildComponents,
|
||||
)
|
||||
|
||||
func TestHiddenAPISingleton(t *testing.T) {
|
||||
result := android.GroupFixturePreparers(
|
||||
|
@@ -46,12 +46,11 @@ var prepareForJavaTest = android.GroupFixturePreparers(
|
||||
// Get the CC build components but not default modules.
|
||||
cc.PrepareForTestWithCcBuildComponents,
|
||||
// Include all the default java modules.
|
||||
PrepareForTestWithJavaDefaultModules,
|
||||
PrepareForTestWithDexpreopt,
|
||||
PrepareForTestWithOverlayBuildComponents,
|
||||
android.FixtureRegisterWithContext(func(ctx android.RegistrationContext) {
|
||||
ctx.RegisterPreSingletonType("sdk_versions", sdkPreSingletonFactory)
|
||||
}),
|
||||
PrepareForTestWithDexpreopt,
|
||||
)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
|
@@ -129,8 +129,7 @@ func (b *platformBootclasspathModule) BootclasspathDepsMutator(ctx android.Botto
|
||||
|
||||
// Add dependencies on all the non-updatable module configured in the "boot" boot image. That does
|
||||
// not include modules configured in the "art" boot image.
|
||||
bootImageConfig := defaultBootImageConfig(ctx)
|
||||
addDependenciesOntoBootImageModules(ctx, bootImageConfig.modules, platformBootclasspathBootJarDepTag)
|
||||
addDependenciesOntoBootImageModules(ctx, b.platformJars(ctx), platformBootclasspathBootJarDepTag)
|
||||
|
||||
// Add dependencies on all the apex jars.
|
||||
apexJars := dexpreopt.GetGlobalConfig(ctx).ApexBootJars
|
||||
@@ -187,7 +186,8 @@ func (b *platformBootclasspathModule) GenerateAndroidBuildActions(ctx android.Mo
|
||||
bootDexJarByModule := b.generateHiddenAPIBuildActions(ctx, b.configuredModules, b.fragments)
|
||||
buildRuleForBootJarsPackageCheck(ctx, bootDexJarByModule)
|
||||
|
||||
b.generateBootImageBuildActions(ctx, platformModules, apexModules)
|
||||
b.generateBootImageBuildActions(ctx)
|
||||
b.copyApexBootJarsForAppsDexpreopt(ctx, apexModules)
|
||||
}
|
||||
|
||||
// Generate classpaths.proto config
|
||||
@@ -200,7 +200,7 @@ func (b *platformBootclasspathModule) generateClasspathProtoBuildActions(ctx and
|
||||
|
||||
func (b *platformBootclasspathModule) configuredJars(ctx android.ModuleContext) android.ConfiguredJarList {
|
||||
// Include all non APEX jars
|
||||
jars := defaultBootImageConfig(ctx).modules
|
||||
jars := b.platformJars(ctx)
|
||||
|
||||
// Include jars from APEXes that don't populate their classpath proto config.
|
||||
remainingJars := dexpreopt.GetGlobalConfig(ctx).ApexBootJars
|
||||
@@ -217,6 +217,10 @@ func (b *platformBootclasspathModule) configuredJars(ctx android.ModuleContext)
|
||||
return jars
|
||||
}
|
||||
|
||||
func (b *platformBootclasspathModule) platformJars(ctx android.PathContext) android.ConfiguredJarList {
|
||||
return defaultBootImageConfig(ctx).modules.RemoveList(artBootImageConfig(ctx).modules)
|
||||
}
|
||||
|
||||
// checkPlatformModules ensures that the non-updatable modules supplied are not part of an
|
||||
// apex module.
|
||||
func (b *platformBootclasspathModule) checkPlatformModules(ctx android.ModuleContext, modules []android.Module) {
|
||||
@@ -226,7 +230,7 @@ func (b *platformBootclasspathModule) checkPlatformModules(ctx android.ModuleCon
|
||||
fromUpdatableApex := apexInfo.Updatable
|
||||
if fromUpdatableApex {
|
||||
// error: this jar is part of an updatable apex
|
||||
ctx.ModuleErrorf("module %q from updatable apexes %q is not allowed in the framework boot image", ctx.OtherModuleName(m), apexInfo.InApexVariants)
|
||||
ctx.ModuleErrorf("module %q from updatable apexes %q is not allowed in the platform bootclasspath", ctx.OtherModuleName(m), apexInfo.InApexVariants)
|
||||
} else {
|
||||
// ok: this jar is part of the platform or a non-updatable apex
|
||||
}
|
||||
@@ -396,7 +400,7 @@ func (b *platformBootclasspathModule) generateHiddenApiMakeVars(ctx android.Make
|
||||
}
|
||||
|
||||
// generateBootImageBuildActions generates ninja rules related to the boot image creation.
|
||||
func (b *platformBootclasspathModule) generateBootImageBuildActions(ctx android.ModuleContext, platformModules, apexModules []android.Module) {
|
||||
func (b *platformBootclasspathModule) generateBootImageBuildActions(ctx android.ModuleContext) {
|
||||
// Force the GlobalSoongConfig to be created and cached for use by the dex_bootjars
|
||||
// GenerateSingletonBuildActions method as it cannot create it for itself.
|
||||
dexpreopt.GetGlobalSoongConfig(ctx)
|
||||
@@ -408,15 +412,16 @@ func (b *platformBootclasspathModule) generateBootImageBuildActions(ctx android.
|
||||
|
||||
frameworkBootImageConfig := defaultBootImageConfig(ctx)
|
||||
bootFrameworkProfileRule(ctx, frameworkBootImageConfig)
|
||||
b.generateBootImage(ctx, frameworkBootImageName, platformModules)
|
||||
b.generateBootImage(ctx, mainlineBootImageName, apexModules)
|
||||
b.copyApexBootJarsForAppsDexpreopt(ctx, apexModules)
|
||||
b.generateBootImage(ctx, frameworkBootImageName)
|
||||
b.generateBootImage(ctx, mainlineBootImageName)
|
||||
dumpOatRules(ctx, frameworkBootImageConfig)
|
||||
}
|
||||
|
||||
func (b *platformBootclasspathModule) generateBootImage(ctx android.ModuleContext, imageName string, modules []android.Module) {
|
||||
func (b *platformBootclasspathModule) generateBootImage(ctx android.ModuleContext, imageName string) {
|
||||
imageConfig := genBootImageConfigs(ctx)[imageName]
|
||||
|
||||
modules := b.getModulesForImage(ctx, imageConfig)
|
||||
|
||||
// Copy module dex jars to their predefined locations.
|
||||
bootDexJarsByModule := extractEncodedDexJarsFromModules(ctx, modules)
|
||||
copyBootJarsToPredefinedLocations(ctx, bootDexJarsByModule, imageConfig.dexPathsByModule)
|
||||
@@ -446,3 +451,26 @@ func (b *platformBootclasspathModule) copyApexBootJarsForAppsDexpreopt(ctx andro
|
||||
apexBootDexJarsByModule := extractEncodedDexJarsFromModules(ctx, apexModules)
|
||||
copyBootJarsToPredefinedLocations(ctx, apexBootDexJarsByModule, config.dexPathsByModule)
|
||||
}
|
||||
|
||||
func (b *platformBootclasspathModule) getModulesForImage(ctx android.ModuleContext, imageConfig *bootImageConfig) []android.Module {
|
||||
modules := make([]android.Module, 0, imageConfig.modules.Len())
|
||||
for i := 0; i < imageConfig.modules.Len(); i++ {
|
||||
found := false
|
||||
for _, module := range b.configuredModules {
|
||||
name := android.RemoveOptionalPrebuiltPrefix(module.Name())
|
||||
if name == imageConfig.modules.Jar(i) {
|
||||
modules = append(modules, module)
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found && !ctx.Config().AllowMissingDependencies() {
|
||||
ctx.ModuleErrorf(
|
||||
"Boot image '%s' module '%s' not added as a dependency of platform_bootclasspath",
|
||||
imageConfig.name,
|
||||
imageConfig.modules.Jar(i))
|
||||
return []android.Module{}
|
||||
}
|
||||
}
|
||||
return modules
|
||||
}
|
||||
|
@@ -18,14 +18,12 @@ import (
|
||||
"testing"
|
||||
|
||||
"android/soong/android"
|
||||
"android/soong/dexpreopt"
|
||||
)
|
||||
|
||||
// Contains some simple tests for platform_bootclasspath.
|
||||
|
||||
var prepareForTestWithPlatformBootclasspath = android.GroupFixturePreparers(
|
||||
PrepareForTestWithJavaDefaultModules,
|
||||
dexpreopt.PrepareForTestByEnablingDexpreopt,
|
||||
)
|
||||
|
||||
func TestPlatformBootclasspath(t *testing.T) {
|
||||
|
@@ -80,9 +80,7 @@ var prepareForTestWithFrameworkDeps = android.GroupFixturePreparers(
|
||||
}.AddToFixture(),
|
||||
)
|
||||
|
||||
// Test fixture preparer that will define all default java modules except the
|
||||
// fake_tool_binary for dex2oatd.
|
||||
var PrepareForTestWithJavaDefaultModulesWithoutFakeDex2oatd = android.GroupFixturePreparers(
|
||||
var prepareForTestWithJavaDefaultModulesBase = android.GroupFixturePreparers(
|
||||
// Make sure that all the module types used in the defaults are registered.
|
||||
PrepareForTestWithJavaBuildComponents,
|
||||
prepareForTestWithFrameworkDeps,
|
||||
@@ -92,13 +90,21 @@ var PrepareForTestWithJavaDefaultModulesWithoutFakeDex2oatd = android.GroupFixtu
|
||||
|
||||
// Test fixture preparer that will define default java modules, e.g. standard prebuilt modules.
|
||||
var PrepareForTestWithJavaDefaultModules = android.GroupFixturePreparers(
|
||||
PrepareForTestWithJavaDefaultModulesWithoutFakeDex2oatd,
|
||||
dexpreopt.PrepareForTestWithFakeDex2oatd,
|
||||
prepareForTestWithJavaDefaultModulesBase,
|
||||
dexpreopt.FixtureDisableDexpreoptBootImages(true),
|
||||
dexpreopt.FixtureDisableDexpreopt(true),
|
||||
)
|
||||
|
||||
// Provides everything needed by dexpreopt.
|
||||
var PrepareForTestWithDexpreopt = android.GroupFixturePreparers(
|
||||
PrepareForTestWithJavaDefaultModules,
|
||||
prepareForTestWithJavaDefaultModulesBase,
|
||||
dexpreopt.PrepareForTestWithFakeDex2oatd,
|
||||
dexpreopt.PrepareForTestByEnablingDexpreopt,
|
||||
)
|
||||
|
||||
// Provides everything needed by dexpreopt except the fake_tool_binary for dex2oatd.
|
||||
var PrepareForTestWithDexpreoptWithoutFakeDex2oatd = android.GroupFixturePreparers(
|
||||
prepareForTestWithJavaDefaultModulesBase,
|
||||
dexpreopt.PrepareForTestByEnablingDexpreopt,
|
||||
)
|
||||
|
||||
@@ -604,9 +610,9 @@ func FixtureModifyBootImageConfig(name string, configModifier func(*bootImageCon
|
||||
})
|
||||
}
|
||||
|
||||
// Sets the value of `installDirOnDevice` of the boot image config with the given name.
|
||||
// Sets the value of `installDir` of the boot image config with the given name.
|
||||
func FixtureSetBootImageInstallDirOnDevice(name string, installDir string) android.FixturePreparer {
|
||||
return FixtureModifyBootImageConfig(name, func(config *bootImageConfig) {
|
||||
config.installDirOnDevice = installDir
|
||||
config.installDir = installDir
|
||||
})
|
||||
}
|
||||
|
@@ -74,7 +74,7 @@ func fixtureAddPrebuiltApexForBootclasspathFragment(apex, fragment string) andro
|
||||
func TestSnapshotWithBootclasspathFragment_ImageName(t *testing.T) {
|
||||
result := android.GroupFixturePreparers(
|
||||
prepareForSdkTestWithJava,
|
||||
java.PrepareForTestWithJavaDefaultModules,
|
||||
java.PrepareForTestWithDexpreopt,
|
||||
prepareForSdkTestWithApex,
|
||||
|
||||
// Some additional files needed for the art apex.
|
||||
|
Reference in New Issue
Block a user