diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-05-13 01:06:10 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-05-13 01:06:10 +0000 |
commit | 54e79e5dc75b9595120ad040bf921f408cc9ca38 (patch) | |
tree | acff01cb4973d47899685e18ff955982b56e5b76 | |
parent | 2a2da661e5574a91856410252305af8979ab2a27 (diff) | |
parent | 5f5a17fd6b7ea404d9df2f31f2d074586b086326 (diff) | |
download | soong-54e79e5dc75b9595120ad040bf921f408cc9ca38.tar.gz |
Snap for 10127524 from 5f5a17fd6b7ea404d9df2f31f2d074586b086326 to udc-release
Change-Id: Ie1a6a1aac7d5765c5d07d64db7387d21f0249a5e
-rw-r--r-- | apex/Android.bp | 1 | ||||
-rw-r--r-- | apex/apex.go | 18 | ||||
-rw-r--r-- | apex/apex_test.go | 16 | ||||
-rw-r--r-- | apex/bootclasspath_fragment_test.go | 167 | ||||
-rw-r--r-- | apex/dexpreopt_bootjars_test.go | 254 | ||||
-rw-r--r-- | apex/metadata_test.go | 2 | ||||
-rw-r--r-- | apex/platform_bootclasspath_test.go | 8 | ||||
-rw-r--r-- | apex/prebuilt.go | 5 | ||||
-rw-r--r-- | java/Android.bp | 1 | ||||
-rw-r--r-- | java/bootclasspath_fragment.go | 150 | ||||
-rw-r--r-- | java/dexpreopt_bootjars.go | 78 | ||||
-rw-r--r-- | java/dexpreopt_bootjars_test.go | 130 | ||||
-rw-r--r-- | java/dexpreopt_config.go | 40 | ||||
-rw-r--r-- | java/dexpreopt_config_testing.go | 785 | ||||
-rw-r--r-- | java/dexpreopt_test.go | 8 | ||||
-rw-r--r-- | java/hiddenapi_singleton_test.go | 4 | ||||
-rw-r--r-- | java/java_test.go | 3 | ||||
-rw-r--r-- | java/platform_bootclasspath.go | 48 | ||||
-rw-r--r-- | java/platform_bootclasspath_test.go | 2 | ||||
-rw-r--r-- | java/testing.go | 22 | ||||
-rw-r--r-- | sdk/bootclasspath_fragment_sdk_test.go | 2 |
21 files changed, 896 insertions, 848 deletions
diff --git a/apex/Android.bp b/apex/Android.bp index 7ffca0ea5..61d7fb2e2 100644 --- a/apex/Android.bp +++ b/apex/Android.bp @@ -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", diff --git a/apex/apex.go b/apex/apex.go index d2c535c5e..7fb6f504e 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -2276,16 +2276,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 { @@ -2651,19 +2648,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) diff --git a/apex/apex_test.go b/apex/apex_test.go index 5a96b8e7b..139b77ef6 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -146,7 +146,7 @@ var prepareForApexTest = android.GroupFixturePreparers( android.PrepareForTestWithAndroidBuildComponents, bpf.PrepareForTestWithBpf, cc.PrepareForTestWithCcBuildComponents, - java.PrepareForTestWithJavaDefaultModules, + java.PrepareForTestWithDexpreopt, prebuilt_etc.PrepareForTestWithPrebuiltEtc, rust.PrepareForTestWithRustDefaultModules, sh.PrepareForTestWithShBuildComponents, @@ -8289,8 +8289,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"), @@ -8313,8 +8313,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"), @@ -8322,7 +8322,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"), @@ -8337,7 +8337,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) @@ -8350,7 +8350,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"), diff --git a/apex/bootclasspath_fragment_test.go b/apex/bootclasspath_fragment_test.go index 4a661d4ea..1b5288696 100644 --- a/apex/bootclasspath_fragment_test.go +++ b/apex/bootclasspath_fragment_test.go @@ -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", ` -test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art -test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat -test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex -test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-quuz.art -test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-quuz.oat -test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-quuz.vdex -test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art -test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat -test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex -test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-quuz.art -test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-quuz.oat -test_device/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/test_device/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) { @@ -802,7 +645,7 @@ func checkCopiesToPredefinedLocationForArt(t *testing.T, config android.Config, bootJarLocations := []string{} for _, output := range module.AllOutputs() { output = android.StringRelativeToTop(config, output) - if strings.HasPrefix(output, "out/soong/test_device/dex_artjars_input/") { + if strings.HasPrefix(output, "out/soong/dexpreopt_arm64/dex_artjars_input/") { bootJarLocations = append(bootJarLocations, output) } } @@ -810,7 +653,7 @@ func checkCopiesToPredefinedLocationForArt(t *testing.T, config android.Config, sort.Strings(bootJarLocations) expected := []string{} for _, m := range modules { - expected = append(expected, fmt.Sprintf("out/soong/test_device/dex_artjars_input/%s.jar", m)) + expected = append(expected, fmt.Sprintf("out/soong/dexpreopt_arm64/dex_artjars_input/%s.jar", m)) } sort.Strings(expected) @@ -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. diff --git a/apex/dexpreopt_bootjars_test.go b/apex/dexpreopt_bootjars_test.go new file mode 100644 index 000000000..bba8bb6cb --- /dev/null +++ b/apex/dexpreopt_bootjars_test.go @@ -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) +} diff --git a/apex/metadata_test.go b/apex/metadata_test.go index f6ead424e..fed5beae7 100644 --- a/apex/metadata_test.go +++ b/apex/metadata_test.go @@ -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, diff --git a/apex/platform_bootclasspath_test.go b/apex/platform_bootclasspath_test.go index 4b48da8e2..05bb13689 100644 --- a/apex/platform_bootclasspath_test.go +++ b/apex/platform_bootclasspath_test.go @@ -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", diff --git a/apex/prebuilt.go b/apex/prebuilt.go index 31cecf111..0d83830f1 100644 --- a/apex/prebuilt.go +++ b/apex/prebuilt.go @@ -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 { diff --git a/java/Android.bp b/java/Android.bp index 27a0a3853..4af2a14eb 100644 --- a/java/Android.bp +++ b/java/Android.bp @@ -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", diff --git a/java/bootclasspath_fragment.go b/java/bootclasspath_fragment.go index 6ccf5a331..108fdd483 100644 --- a/java/bootclasspath_fragment.go +++ b/java/bootclasspath_fragment.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) } -var _ commonBootclasspathFragment = (*PrebuiltBootclasspathFragmentModule)(nil) +func (b *PrebuiltBootclasspathFragmentModule) getImageName() *string { + return b.properties.Image_name +} -// 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 +func (b *PrebuiltBootclasspathFragmentModule) getProfilePath() android.Path { + return b.profilePath } +var _ commonBootclasspathFragment = (*PrebuiltBootclasspathFragmentModule)(nil) + // 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 { diff --git a/java/dexpreopt_bootjars.go b/java/dexpreopt_bootjars.go index a0364d28b..f477f404e 100644 --- a/java/dexpreopt_bootjars.go +++ b/java/dexpreopt_bootjars.go @@ -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 @@ -504,8 +505,8 @@ func (d *dexpreoptBootJars) GenerateSingletonBuildActions(ctx android.SingletonC // No module has enabled dexpreopting, so we assume there will be no boot image to make. return } - - d.dexpreoptConfigForMake = android.PathForOutput(ctx, ctx.Config().DeviceName(), "dexpreopt.config") + archType := ctx.Config().Targets[android.Android][0].Arch.ArchType + d.dexpreoptConfigForMake = android.PathForOutput(ctx, toDexpreoptDirName(archType), "dexpreopt.config") writeGlobalConfigForMake(ctx, d.dexpreoptConfigForMake) global := dexpreopt.GetGlobalConfig(ctx) @@ -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, } } diff --git a/java/dexpreopt_bootjars_test.go b/java/dexpreopt_bootjars_test.go deleted file mode 100644 index bc7a55eb9..000000000 --- a/java/dexpreopt_bootjars_test.go +++ /dev/null @@ -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/test_device", expectedInputs[i]) - } - - for i := range expectedOutputs { - expectedOutputs[i] = filepath.Join("out/soong/test_device", 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) -} diff --git a/java/dexpreopt_config.go b/java/dexpreopt_config.go index 8c62c332a..9100e87c6 100644 --- a/java/dexpreopt_config.go +++ b/java/dexpreopt_config.go @@ -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{ @@ -108,7 +105,8 @@ func genBootImageConfigRaw(ctx android.PathContext) map[string]*bootImageConfig func genBootImageConfigs(ctx android.PathContext) map[string]*bootImageConfig { return ctx.Config().Once(bootImageConfigKey, func() interface{} { targets := dexpreoptTargets(ctx) - deviceDir := android.PathForOutput(ctx, ctx.Config().DeviceName()) + archType := ctx.Config().Targets[android.Android][0].Arch.ArchType + deviceDir := android.PathForOutput(ctx, toDexpreoptDirName(archType)) configs := genBootImageConfigRaw(ctx) @@ -131,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), } @@ -220,8 +218,8 @@ var updatableBootConfigKey = android.NewOnceKey("apexBootConfig") func GetApexBootConfig(ctx android.PathContext) apexBootConfig { return ctx.Config().Once(updatableBootConfigKey, func() interface{} { apexBootJars := dexpreopt.GetGlobalConfig(ctx).ApexBootJars - - dir := android.PathForOutput(ctx, ctx.Config().DeviceName(), "apex_bootjars") + archType := ctx.Config().Targets[android.Android][0].Arch.ArchType + dir := android.PathForOutput(ctx, toDexpreoptDirName(archType), "apex_bootjars") dexPaths := apexBootJars.BuildPaths(ctx, dir) dexPathsByModuleName := apexBootJars.BuildPathsByModule(ctx, dir) @@ -261,3 +259,7 @@ func init() { func dexpreoptConfigMakevars(ctx android.MakeVarsContext) { ctx.Strict("DEXPREOPT_BOOT_JARS_MODULES", strings.Join(defaultBootImageConfig(ctx).modules.CopyOfApexJarPairs(), ":")) } + +func toDexpreoptDirName(arch android.ArchType) string { + return "dexpreopt_" + arch.String() +} diff --git a/java/dexpreopt_config_testing.go b/java/dexpreopt_config_testing.go index 86dd32988..6f3aa2be8 100644 --- a/java/dexpreopt_config_testing.go +++ b/java/dexpreopt_config_testing.go @@ -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 @@ -207,65 +206,64 @@ func checkArtBootImageConfig(t *testing.T, result *android.TestResult, mutated b expected := &expectedConfig{ name: "art", stem: "boot", - dir: "out/soong/test_device/dex_artjars", - symbolsDir: "out/soong/test_device/dex_artjars_unstripped", - installDirOnDevice: "system/framework", - installDirOnHost: "apex/art_boot_images/javalib", + dir: "out/soong/dexpreopt_arm64/dex_artjars", + symbolsDir: "out/soong/dexpreopt_arm64/dex_artjars_unstripped", + 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/test_device/dex_artjars_input/core1.jar", "out/soong/test_device/dex_artjars_input/core2.jar"}, - dexPathsDeps: []string{"out/soong/test_device/dex_artjars_input/core1.jar", "out/soong/test_device/dex_artjars_input/core2.jar"}, - zip: "out/soong/test_device/dex_artjars/art.zip", + dexPaths: []string{"out/soong/dexpreopt_arm64/dex_artjars_input/core1.jar", "out/soong/dexpreopt_arm64/dex_artjars_input/core2.jar"}, + dexPathsDeps: []string{"out/soong/dexpreopt_arm64/dex_artjars_input/core1.jar", "out/soong/dexpreopt_arm64/dex_artjars_input/core2.jar"}, + zip: "out/soong/dexpreopt_arm64/dex_artjars/art.zip", variants: []*expectedVariant{ { archType: android.Arm64, 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/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art", - imagePathOnDevice: "/system/framework/arm64/boot.art", + imagePathOnHost: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art", + imagePathOnDevice: "/apex/art_boot_images/javalib/arm64/boot.art", imagesDeps: []string{ - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex", + "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/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art", + from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art", to: "/apex/art_boot_images/javalib/arm64/boot.art", }, { - from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat", + from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat", to: "/apex/art_boot_images/javalib/arm64/boot.oat", }, { - from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art", + from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art", to: "/apex/art_boot_images/javalib/arm64/boot-core2.art", }, { - from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat", + from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat", to: "/apex/art_boot_images/javalib/arm64/boot-core2.oat", }, }, vdexInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex", + from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex", to: "/apex/art_boot_images/javalib/arm64/boot.vdex", }, { - from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex", + from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex", to: "/apex/art_boot_images/javalib/arm64/boot-core2.vdex", }, }, unstrippedInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm64/boot.oat", + from: "out/soong/dexpreopt_arm64/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm64/boot.oat", to: "/apex/art_boot_images/javalib/arm64/boot.oat", }, { - from: "out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm64/boot-core2.oat", + from: "out/soong/dexpreopt_arm64/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm64/boot-core2.oat", to: "/apex/art_boot_images/javalib/arm64/boot-core2.oat", }, }, @@ -275,51 +273,51 @@ func checkArtBootImageConfig(t *testing.T, result *android.TestResult, mutated b archType: android.Arm, 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/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art", - imagePathOnDevice: "/system/framework/arm/boot.art", + imagePathOnHost: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art", + imagePathOnDevice: "/apex/art_boot_images/javalib/arm/boot.art", imagesDeps: []string{ - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex", + "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/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art", + from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art", to: "/apex/art_boot_images/javalib/arm/boot.art", }, { - from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat", + from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat", to: "/apex/art_boot_images/javalib/arm/boot.oat", }, { - from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art", + from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art", to: "/apex/art_boot_images/javalib/arm/boot-core2.art", }, { - from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat", + from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat", to: "/apex/art_boot_images/javalib/arm/boot-core2.oat", }, }, vdexInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex", + from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex", to: "/apex/art_boot_images/javalib/arm/boot.vdex", }, { - from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex", + from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex", to: "/apex/art_boot_images/javalib/arm/boot-core2.vdex", }, }, unstrippedInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm/boot.oat", + from: "out/soong/dexpreopt_arm64/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm/boot.oat", to: "/apex/art_boot_images/javalib/arm/boot.oat", }, { - from: "out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm/boot-core2.oat", + from: "out/soong/dexpreopt_arm64/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm/boot-core2.oat", to: "/apex/art_boot_images/javalib/arm/boot-core2.oat", }, }, @@ -329,49 +327,49 @@ func checkArtBootImageConfig(t *testing.T, result *android.TestResult, mutated b 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"}, 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/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art", - imagePathOnDevice: "/system/framework/x86_64/boot.art", + imagePathOnHost: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art", + imagePathOnDevice: "/apex/art_boot_images/javalib/x86_64/boot.art", imagesDeps: []string{ - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex", + "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/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art", + from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art", to: "/apex/art_boot_images/javalib/x86_64/boot.art", }, { - from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat", + from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat", to: "/apex/art_boot_images/javalib/x86_64/boot.oat", }, { - from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art", + from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art", to: "/apex/art_boot_images/javalib/x86_64/boot-core2.art", }, { - from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat", + from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat", to: "/apex/art_boot_images/javalib/x86_64/boot-core2.oat", }, }, vdexInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex", + from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex", to: "/apex/art_boot_images/javalib/x86_64/boot.vdex", }, { - from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex", + from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex", to: "/apex/art_boot_images/javalib/x86_64/boot-core2.vdex", }, }, unstrippedInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat", + from: "out/soong/dexpreopt_arm64/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat", to: "/apex/art_boot_images/javalib/x86_64/boot.oat", }, { - from: "out/soong/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat", + from: "out/soong/dexpreopt_arm64/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat", to: "/apex/art_boot_images/javalib/x86_64/boot-core2.oat", }, }, @@ -381,49 +379,49 @@ func checkArtBootImageConfig(t *testing.T, result *android.TestResult, mutated b 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"}, 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/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art", - imagePathOnDevice: "/system/framework/x86/boot.art", + imagePathOnHost: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art", + imagePathOnDevice: "/apex/art_boot_images/javalib/x86/boot.art", imagesDeps: []string{ - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex", + "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/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art", + from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art", to: "/apex/art_boot_images/javalib/x86/boot.art", }, { - from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat", + from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat", to: "/apex/art_boot_images/javalib/x86/boot.oat", }, { - from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art", + from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art", to: "/apex/art_boot_images/javalib/x86/boot-core2.art", }, { - from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat", + from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat", to: "/apex/art_boot_images/javalib/x86/boot-core2.oat", }, }, vdexInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex", + from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex", to: "/apex/art_boot_images/javalib/x86/boot.vdex", }, { - from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex", + from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex", to: "/apex/art_boot_images/javalib/x86/boot-core2.vdex", }, }, unstrippedInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat", + from: "out/soong/dexpreopt_arm64/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat", to: "/apex/art_boot_images/javalib/x86/boot.oat", }, { - from: "out/soong/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat", + from: "out/soong/dexpreopt_arm64/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat", to: "/apex/art_boot_images/javalib/x86/boot-core2.oat", }, }, @@ -460,203 +458,346 @@ func checkFrameworkBootImageConfig(t *testing.T, result *android.TestResult, mut expected := &expectedConfig{ name: "boot", stem: "boot", - dir: "out/soong/test_device/dex_bootjars", - symbolsDir: "out/soong/test_device/dex_bootjars_unstripped", - installDirOnDevice: "system/framework", - installDirOnHost: "system/framework", + dir: "out/soong/dexpreopt_arm64/dex_bootjars", + symbolsDir: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped", + installDir: "system/framework", profileInstallPathInApex: "", - modules: android.CreateTestConfiguredJarList([]string{"platform:framework"}), - dexPaths: []string{"out/soong/test_device/dex_bootjars_input/framework.jar"}, - dexPathsDeps: []string{"out/soong/test_device/dex_artjars_input/core1.jar", "out/soong/test_device/dex_artjars_input/core2.jar", "out/soong/test_device/dex_bootjars_input/framework.jar"}, - zip: "out/soong/test_device/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/test_device/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/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art", - "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.oat", - "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.vdex", - }, - baseImages: []string{"out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art"}, - baseImagesDeps: []string{ - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat", - "out/soong/test_device/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", }, installs: []normalizedInstall{ { - from: "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art", + 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", }, { - from: "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.oat", + from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.oat", to: "/system/framework/arm64/boot-framework.oat", }, }, vdexInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.vdex", + 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/test_device/dex_bootjars_unstripped/android/system/framework/arm64/boot-framework.oat", + 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", }, }, 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/test_device/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/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art", - "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.oat", - "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.vdex", - }, - baseImages: []string{"out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art"}, - baseImagesDeps: []string{ - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat", - "out/soong/test_device/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", }, installs: []normalizedInstall{ { - from: "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art", + 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", }, { - from: "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.oat", + from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.oat", to: "/system/framework/arm/boot-framework.oat", }, }, vdexInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.vdex", + 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/test_device/dex_bootjars_unstripped/android/system/framework/arm/boot-framework.oat", + 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", }, }, 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/test_device/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/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art", - "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat", - "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex", - }, - baseImages: []string{"out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art"}, - baseImagesDeps: []string{ - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat", - "out/soong/test_device/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", }, installs: []normalizedInstall{ { - from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art", + 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", }, { - from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat", + from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat", to: "/system/framework/x86_64/boot-framework.oat", }, }, vdexInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex", + 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/test_device/dex_bootjars_unstripped/linux_glibc/system/framework/x86_64/boot-framework.oat", + 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", }, }, 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/test_device/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/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art", - "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat", - "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex", - }, - baseImages: []string{"out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art"}, - baseImagesDeps: []string{ - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat", - "out/soong/test_device/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", }, installs: []normalizedInstall{ { - from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art", + 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", }, { - from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat", + from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat", to: "/system/framework/x86/boot-framework.oat", }, }, vdexInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex", + 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/test_device/dex_bootjars_unstripped/linux_glibc/system/framework/x86/boot-framework.oat", + 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", }, }, @@ -664,8 +805,8 @@ func checkFrameworkBootImageConfig(t *testing.T, result *android.TestResult, mut }, }, profileInstalls: []normalizedInstall{ - {from: "out/soong/test_device/dex_bootjars/boot.bprof", to: "/system/etc/boot-image.bprof"}, - {from: "out/soong/test_device/dex_bootjars/boot.prof", to: "/system/etc/boot-image.prof"}, + {from: "out/soong/dexpreopt_arm64/dex_bootjars/boot.bprof", to: "/system/etc/boot-image.bprof"}, + {from: "out/soong/dexpreopt_arm64/dex_bootjars/boot.prof", to: "/system/etc/boot-image.prof"}, }, profileLicenseMetadataFile: expectedLicenseMetadataFile, } @@ -691,27 +832,26 @@ func CheckMainlineBootImageConfig(t *testing.T, result *android.TestResult) { expected := &expectedConfig{ name: "mainline", stem: "boot", - dir: "out/soong/test_device/dex_mainlinejars", - symbolsDir: "out/soong/test_device/dex_mainlinejars_unstripped", - installDirOnDevice: "system/framework", - installDirOnHost: "system/framework", + dir: "out/soong/dexpreopt_arm64/dex_mainlinejars", + symbolsDir: "out/soong/dexpreopt_arm64/dex_mainlinejars_unstripped", + installDir: "system/framework", profileInstallPathInApex: "", modules: android.CreateTestConfiguredJarList([]string{ "com.android.foo:framework-foo", "com.android.bar:framework-bar", }), dexPaths: []string{ - "out/soong/test_device/dex_mainlinejars_input/framework-foo.jar", - "out/soong/test_device/dex_mainlinejars_input/framework-bar.jar", + "out/soong/dexpreopt_arm64/dex_mainlinejars_input/framework-foo.jar", + "out/soong/dexpreopt_arm64/dex_mainlinejars_input/framework-bar.jar", }, dexPathsDeps: []string{ - "out/soong/test_device/dex_artjars_input/core1.jar", - "out/soong/test_device/dex_artjars_input/core2.jar", - "out/soong/test_device/dex_bootjars_input/framework.jar", - "out/soong/test_device/dex_mainlinejars_input/framework-foo.jar", - "out/soong/test_device/dex_mainlinejars_input/framework-bar.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", }, - zip: "out/soong/test_device/dex_mainlinejars/mainline.zip", + zip: "out/soong/dexpreopt_arm64/dex_mainlinejars/mainline.zip", variants: []*expectedVariant{ { archType: android.Arm64, @@ -726,47 +866,46 @@ func CheckMainlineBootImageConfig(t *testing.T, result *android.TestResult) { "/apex/com.android.foo/javalib/framework-foo.jar", "/apex/com.android.bar/javalib/framework-bar.jar", }, - imagePathOnHost: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art", + imagePathOnHost: "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art", imagePathOnDevice: "/system/framework/arm64/boot-framework-foo.art", imagesDeps: []string{ - "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art", - "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.oat", - "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.vdex", + "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", }, baseImages: []string{ - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art", - "out/soong/test_device/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/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex", - "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art", - "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.oat", - "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.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", }, installs: []normalizedInstall{ { - from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art", + from: "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art", to: "/system/framework/arm64/boot-framework-foo.art", }, { - from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.oat", + from: "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.oat", to: "/system/framework/arm64/boot-framework-foo.oat", }, }, vdexInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.vdex", + from: "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.vdex", to: "/system/framework/arm64/boot-framework-foo.vdex", }, }, unstrippedInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_mainlinejars_unstripped/android/system/framework/arm64/boot-framework-foo.oat", + from: "out/soong/dexpreopt_arm64/dex_mainlinejars_unstripped/android/system/framework/arm64/boot-framework-foo.oat", to: "/system/framework/arm64/boot-framework-foo.oat", }, }, @@ -785,47 +924,46 @@ func CheckMainlineBootImageConfig(t *testing.T, result *android.TestResult) { "/apex/com.android.foo/javalib/framework-foo.jar", "/apex/com.android.bar/javalib/framework-bar.jar", }, - imagePathOnHost: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art", + imagePathOnHost: "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art", imagePathOnDevice: "/system/framework/arm/boot-framework-foo.art", imagesDeps: []string{ - "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art", - "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.oat", - "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.vdex", + "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", }, baseImages: []string{ - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art", - "out/soong/test_device/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/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat", - "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex", - "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art", - "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.oat", - "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.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", }, installs: []normalizedInstall{ { - from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art", + from: "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art", to: "/system/framework/arm/boot-framework-foo.art", }, { - from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.oat", + from: "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.oat", to: "/system/framework/arm/boot-framework-foo.oat", }, }, vdexInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.vdex", + from: "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.vdex", to: "/system/framework/arm/boot-framework-foo.vdex", }, }, unstrippedInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_mainlinejars_unstripped/android/system/framework/arm/boot-framework-foo.oat", + from: "out/soong/dexpreopt_arm64/dex_mainlinejars_unstripped/android/system/framework/arm/boot-framework-foo.oat", to: "/system/framework/arm/boot-framework-foo.oat", }, }, @@ -844,47 +982,46 @@ func CheckMainlineBootImageConfig(t *testing.T, result *android.TestResult) { "host/linux-x86/apex/com.android.foo/javalib/framework-foo.jar", "host/linux-x86/apex/com.android.bar/javalib/framework-bar.jar", }, - imagePathOnHost: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art", + imagePathOnHost: "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art", imagePathOnDevice: "/system/framework/x86_64/boot-framework-foo.art", imagesDeps: []string{ - "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art", - "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.oat", - "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex", + "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art", + "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.oat", + "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex", }, baseImages: []string{ - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art", - "out/soong/test_device/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/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex", - "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art", - "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat", - "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.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", }, installs: []normalizedInstall{ { - from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art", + from: "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art", to: "/system/framework/x86_64/boot-framework-foo.art", }, { - from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.oat", + from: "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.oat", to: "/system/framework/x86_64/boot-framework-foo.oat", }, }, vdexInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex", + from: "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex", to: "/system/framework/x86_64/boot-framework-foo.vdex", }, }, unstrippedInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86_64/boot-framework-foo.oat", + from: "out/soong/dexpreopt_arm64/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86_64/boot-framework-foo.oat", to: "/system/framework/x86_64/boot-framework-foo.oat", }, }, @@ -903,47 +1040,46 @@ func CheckMainlineBootImageConfig(t *testing.T, result *android.TestResult) { "host/linux-x86/apex/com.android.foo/javalib/framework-foo.jar", "host/linux-x86/apex/com.android.bar/javalib/framework-bar.jar", }, - imagePathOnHost: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art", + imagePathOnHost: "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art", imagePathOnDevice: "/system/framework/x86/boot-framework-foo.art", imagesDeps: []string{ - "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art", - "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.oat", - "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.vdex", + "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", }, baseImages: []string{ - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art", - "out/soong/test_device/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/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat", - "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex", - "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art", - "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat", - "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.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", }, installs: []normalizedInstall{ { - from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art", + from: "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art", to: "/system/framework/x86/boot-framework-foo.art", }, { - from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.oat", + from: "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.oat", to: "/system/framework/x86/boot-framework-foo.oat", }, }, vdexInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.vdex", + from: "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.vdex", to: "/system/framework/x86/boot-framework-foo.vdex", }, }, unstrippedInstalls: []normalizedInstall{ { - from: "out/soong/test_device/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86/boot-framework-foo.oat", + from: "out/soong/dexpreopt_arm64/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86/boot-framework-foo.oat", to: "/system/framework/x86/boot-framework-foo.oat", }, }, @@ -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,34 +1191,34 @@ 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/test_device/dex_artjars_input/core1.jar out/soong/test_device/dex_artjars_input/core2.jar out/soong/test_device/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/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art:/apex/art_boot_images/javalib/arm/boot.art out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat:/apex/art_boot_images/javalib/arm/boot.oat out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art:/apex/art_boot_images/javalib/arm/boot-core2.art out/soong/test_device/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/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art:/apex/art_boot_images/javalib/arm64/boot.art out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat:/apex/art_boot_images/javalib/arm64/boot.oat out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art:/apex/art_boot_images/javalib/arm64/boot-core2.art out/soong/test_device/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/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art:/apex/art_boot_images/javalib/x86/boot.art out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat:/apex/art_boot_images/javalib/x86/boot.oat out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art:/apex/art_boot_images/javalib/x86/boot-core2.art out/soong/test_device/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/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art:/apex/art_boot_images/javalib/x86_64/boot.art out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat:/apex/art_boot_images/javalib/x86_64/boot.oat out/soong/test_device/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/test_device/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/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art:/system/framework/arm/boot-framework.art out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.oat:/system/framework/arm/boot-framework.oat -DEXPREOPT_IMAGE_BUILT_INSTALLED_boot_arm64=out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art:/system/framework/arm64/boot-framework.art out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.oat:/system/framework/arm64/boot-framework.oat -DEXPREOPT_IMAGE_BUILT_INSTALLED_boot_host_x86=out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art:/system/framework/x86/boot-framework.art out/soong/test_device/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/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art:/system/framework/x86_64/boot-framework.art out/soong/test_device/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/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art:/system/framework/arm/boot-framework-foo.art out/soong/test_device/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/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art:/system/framework/arm64/boot-framework-foo.art out/soong/test_device/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/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art:/system/framework/x86/boot-framework-foo.art out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.oat:/system/framework/x86/boot-framework-foo.oat -DEXPREOPT_IMAGE_BUILT_INSTALLED_mainline_host_x86_64=out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art:/system/framework/x86_64/boot-framework-foo.art out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.oat:/system/framework/x86_64/boot-framework-foo.oat -DEXPREOPT_IMAGE_DEPS_art_arm=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex -DEXPREOPT_IMAGE_DEPS_art_arm64=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex -DEXPREOPT_IMAGE_DEPS_art_host_x86=out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex -DEXPREOPT_IMAGE_DEPS_art_host_x86_64=out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex -DEXPREOPT_IMAGE_DEPS_boot_arm=out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.oat out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.vdex -DEXPREOPT_IMAGE_DEPS_boot_arm64=out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.oat out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.vdex -DEXPREOPT_IMAGE_DEPS_boot_host_x86=out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex -DEXPREOPT_IMAGE_DEPS_boot_host_x86_64=out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex -DEXPREOPT_IMAGE_DEPS_mainline_arm=out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.oat out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.vdex -DEXPREOPT_IMAGE_DEPS_mainline_arm64=out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.oat out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.vdex -DEXPREOPT_IMAGE_DEPS_mainline_host_x86=out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.oat out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.vdex -DEXPREOPT_IMAGE_DEPS_mainline_host_x86_64=out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.oat out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex +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.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 +DEXPREOPT_IMAGE_BUILT_INSTALLED_mainline_host_x86_64=out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art:/system/framework/x86_64/boot-framework-foo.art out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.oat:/system/framework/x86_64/boot-framework-foo.oat +DEXPREOPT_IMAGE_DEPS_art_arm=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 +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.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 +DEXPREOPT_IMAGE_DEPS_mainline_host_x86_64=out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.oat out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex DEXPREOPT_IMAGE_LICENSE_METADATA_art_arm=%[1]s DEXPREOPT_IMAGE_LICENSE_METADATA_art_arm64=%[1]s DEXPREOPT_IMAGE_LICENSE_METADATA_art_host_x86=%[1]s @@ -1096,54 +1231,54 @@ 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_HOSTart=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/boot.art -DEXPREOPT_IMAGE_LOCATIONS_ON_HOSTboot=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/boot.art:out/soong/test_device/dex_bootjars/android/system/framework/boot-framework.art -DEXPREOPT_IMAGE_LOCATIONS_ON_HOSTmainline=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/boot.art:out/soong/test_device/dex_bootjars/android/system/framework/boot-framework.art:out/soong/test_device/dex_mainlinejars/android/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_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/test_device/dex_bootjars/boot.bprof:/system/etc/boot-image.bprof out/soong/test_device/dex_bootjars/boot.prof:/system/etc/boot-image.prof +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 -DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_art_arm=out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm/boot.oat:/apex/art_boot_images/javalib/arm/boot.oat out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm/boot-core2.oat:/apex/art_boot_images/javalib/arm/boot-core2.oat -DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_art_arm64=out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm64/boot.oat:/apex/art_boot_images/javalib/arm64/boot.oat out/soong/test_device/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/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat:/apex/art_boot_images/javalib/x86/boot.oat out/soong/test_device/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/test_device/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/test_device/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/test_device/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/test_device/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/test_device/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/test_device/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/test_device/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/test_device/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/test_device/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86/boot-framework-foo.oat:/system/framework/x86/boot-framework-foo.oat -DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_mainline_host_x86_64=out/soong/test_device/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86_64/boot-framework-foo.oat:/system/framework/x86_64/boot-framework-foo.oat -DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_art_arm=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex:/apex/art_boot_images/javalib/arm/boot.vdex out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex:/apex/art_boot_images/javalib/arm/boot-core2.vdex -DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_art_arm64=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex:/apex/art_boot_images/javalib/arm64/boot.vdex out/soong/test_device/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/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex:/apex/art_boot_images/javalib/x86/boot.vdex out/soong/test_device/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/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex:/apex/art_boot_images/javalib/x86_64/boot.vdex out/soong/test_device/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/test_device/dex_bootjars/android/system/framework/arm/boot-framework.vdex:/system/framework/arm/boot-framework.vdex -DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_boot_arm64=out/soong/test_device/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/test_device/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/test_device/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/test_device/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/test_device/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/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.vdex:/system/framework/x86/boot-framework-foo.vdex -DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_mainline_host_x86_64=out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex:/system/framework/x86_64/boot-framework-foo.vdex -DEXPREOPT_IMAGE_ZIP_art=out/soong/test_device/dex_artjars/art.zip -DEXPREOPT_IMAGE_ZIP_boot=out/soong/test_device/dex_bootjars/boot.zip -DEXPREOPT_IMAGE_ZIP_mainline=out/soong/test_device/dex_mainlinejars/mainline.zip -DEXPREOPT_IMAGE_art_arm=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art -DEXPREOPT_IMAGE_art_arm64=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art -DEXPREOPT_IMAGE_art_host_x86=out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art -DEXPREOPT_IMAGE_art_host_x86_64=out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art -DEXPREOPT_IMAGE_boot_arm=out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art -DEXPREOPT_IMAGE_boot_arm64=out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art -DEXPREOPT_IMAGE_boot_host_x86=out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art -DEXPREOPT_IMAGE_boot_host_x86_64=out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art -DEXPREOPT_IMAGE_mainline_arm=out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art -DEXPREOPT_IMAGE_mainline_arm64=out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art -DEXPREOPT_IMAGE_mainline_host_x86=out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art -DEXPREOPT_IMAGE_mainline_host_x86_64=out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art +DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_art_arm=out/soong/dexpreopt_arm64/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm/boot.oat:/apex/art_boot_images/javalib/arm/boot.oat out/soong/dexpreopt_arm64/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm/boot-core2.oat:/apex/art_boot_images/javalib/arm/boot-core2.oat +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.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 +DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_mainline_host_x86_64=out/soong/dexpreopt_arm64/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86_64/boot-framework-foo.oat:/system/framework/x86_64/boot-framework-foo.oat +DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_art_arm=out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex:/apex/art_boot_images/javalib/arm/boot.vdex out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex:/apex/art_boot_images/javalib/arm/boot-core2.vdex +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.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 +DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_mainline_host_x86_64=out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex:/system/framework/x86_64/boot-framework-foo.vdex +DEXPREOPT_IMAGE_ZIP_art=out/soong/dexpreopt_arm64/dex_artjars/art.zip +DEXPREOPT_IMAGE_ZIP_boot=out/soong/dexpreopt_arm64/dex_bootjars/boot.zip +DEXPREOPT_IMAGE_ZIP_mainline=out/soong/dexpreopt_arm64/dex_mainlinejars/mainline.zip +DEXPREOPT_IMAGE_art_arm=out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art +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.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 +DEXPREOPT_IMAGE_mainline_host_x86_64=out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art ` expected := strings.TrimSpace(fmt.Sprintf(format, expectedLicenseMetadataFile)) actual := strings.TrimSpace(out.String()) diff --git a/java/dexpreopt_test.go b/java/dexpreopt_test.go index f91ac5cc3..fedd5640e 100644 --- a/java/dexpreopt_test.go +++ b/java/dexpreopt_test.go @@ -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"), ) diff --git a/java/hiddenapi_singleton_test.go b/java/hiddenapi_singleton_test.go index 75b7bb7c8..ef792f970 100644 --- a/java/hiddenapi_singleton_test.go +++ b/java/hiddenapi_singleton_test.go @@ -39,7 +39,9 @@ var prepareForTestWithDefaultPlatformBootclasspath = android.FixtureAddTextFile( `) var hiddenApiFixtureFactory = android.GroupFixturePreparers( - prepareForJavaTest, PrepareForTestWithHiddenApiBuildComponents) + PrepareForTestWithJavaDefaultModules, + PrepareForTestWithHiddenApiBuildComponents, +) func TestHiddenAPISingleton(t *testing.T) { result := android.GroupFixturePreparers( diff --git a/java/java_test.go b/java/java_test.go index 553b762ee..2a4913ecd 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -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) { diff --git a/java/platform_bootclasspath.go b/java/platform_bootclasspath.go index d5779f75b..07fb92cfe 100644 --- a/java/platform_bootclasspath.go +++ b/java/platform_bootclasspath.go @@ -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 +} diff --git a/java/platform_bootclasspath_test.go b/java/platform_bootclasspath_test.go index 10c918715..ff2da4bb2 100644 --- a/java/platform_bootclasspath_test.go +++ b/java/platform_bootclasspath_test.go @@ -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) { diff --git a/java/testing.go b/java/testing.go index f68e12ff4..6671bf0c7 100644 --- a/java/testing.go +++ b/java/testing.go @@ -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 }) } diff --git a/sdk/bootclasspath_fragment_sdk_test.go b/sdk/bootclasspath_fragment_sdk_test.go index 0d6496dd3..bef82d601 100644 --- a/sdk/bootclasspath_fragment_sdk_test.go +++ b/sdk/bootclasspath_fragment_sdk_test.go @@ -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. |