blob: c27f4c6da1fb031bb0846a22433281cb789a46d6 [file] [log] [blame]
Paul Duffin8eb45732022-10-04 19:03:31 +01001// Copyright 2022 Google Inc. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// Testing support for dexpreopt config.
16//
17// The bootImageConfig/bootImageVariant structs returned by genBootImageConfigs are used in many
18// places in the build and are currently mutated in a number of those locations. This provides
19// comprehensive tests of the fields in those structs to ensure that they have been initialized
20// correctly and where relevant, mutated correctly.
21//
22// This is used in TestBootImageConfig to verify that the
23
24package java
25
26import (
27 "fmt"
28 "strings"
29 "testing"
30
31 "android/soong/android"
32)
33
34// PrepareForBootImageConfigTest is the minimal set of preparers that are needed to be able to use
35// the Check*BootImageConfig methods define here.
36var PrepareForBootImageConfigTest = android.GroupFixturePreparers(
37 android.PrepareForTestWithArchMutator,
38 android.PrepareForTestAccessingMakeVars,
39 FixtureConfigureBootJars("com.android.art:core1", "com.android.art:core2", "platform:framework"),
40)
41
Jiakai Zhang38303082023-02-20 16:30:01 +000042var PrepareApexBootJarConfigs = FixtureConfigureApexBootJars(
43 "com.android.foo:framework-foo", "com.android.bar:framework-bar")
44
45var PrepareApexBootJarConfigsAndModules = android.GroupFixturePreparers(
46 PrepareApexBootJarConfigs,
47 prepareApexBootJarModule("com.android.foo", "framework-foo"),
48 prepareApexBootJarModule("com.android.bar", "framework-bar"),
49)
50
51var ApexBootJarFragmentsForPlatformBootclasspath = fmt.Sprintf(`
52 {
53 apex: "%[1]s",
54 module: "%[1]s-bootclasspathfragment",
55 },
56 {
57 apex: "%[2]s",
58 module: "%[2]s-bootclasspathfragment",
59 },
60`, "com.android.foo", "com.android.bar")
61
62var ApexBootJarDexJarPaths = []string{
63 "out/soong/.intermediates/packages/modules/com.android.bar/framework-bar/android_common_apex10000/aligned/framework-bar.jar",
64 "out/soong/.intermediates/packages/modules/com.android.foo/framework-foo/android_common_apex10000/aligned/framework-foo.jar",
65}
66
67func prepareApexBootJarModule(apexName string, moduleName string) android.FixturePreparer {
68 moduleSourceDir := fmt.Sprintf("packages/modules/%s", apexName)
69 return android.GroupFixturePreparers(
70 android.FixtureAddTextFile(moduleSourceDir+"/Android.bp", fmt.Sprintf(`
71 apex {
72 name: "%[1]s",
73 key: "%[1]s.key",
74 bootclasspath_fragments: [
75 "%[1]s-bootclasspathfragment",
76 ],
77 updatable: false,
78 }
79
80 apex_key {
81 name: "%[1]s.key",
82 public_key: "%[1]s.avbpubkey",
83 private_key: "%[1]s.pem",
84 }
85
86 bootclasspath_fragment {
87 name: "%[1]s-bootclasspathfragment",
88 contents: ["%[2]s"],
89 apex_available: ["%[1]s"],
90 hidden_api: {
91 split_packages: ["*"],
92 },
93 }
94
95 java_library {
96 name: "%[2]s",
97 srcs: ["%[2]s.java"],
98 system_modules: "none",
99 sdk_version: "none",
100 compile_dex: true,
101 apex_available: ["%[1]s"],
102 }
103 `, apexName, moduleName)),
104 android.FixtureMergeMockFs(android.MockFS{
105 fmt.Sprintf("%s/apex_manifest.json", moduleSourceDir): nil,
106 fmt.Sprintf("%s/%s.avbpubkey", moduleSourceDir, apexName): nil,
107 fmt.Sprintf("%s/%s.pem", moduleSourceDir, apexName): nil,
108 fmt.Sprintf("system/sepolicy/apex/%s-file_contexts", apexName): nil,
109 fmt.Sprintf("%s/%s.java", moduleSourceDir, moduleName): nil,
110 }),
111 )
112}
113
Paul Duffin8eb45732022-10-04 19:03:31 +0100114// normalizedInstall represents a android.RuleBuilderInstall that has been normalized to remove
115// test specific parts of the From path.
116type normalizedInstall struct {
117 from string
118 to string
119}
120
121// normalizeInstalls converts a slice of android.RuleBuilderInstall into a slice of
122// normalizedInstall to allow them to be compared using android.AssertDeepEquals.
123func normalizeInstalls(installs android.RuleBuilderInstalls) []normalizedInstall {
124 var normalized []normalizedInstall
125 for _, install := range installs {
126 normalized = append(normalized, normalizedInstall{
127 from: install.From.RelativeToTop().String(),
128 to: install.To,
129 })
130 }
131 return normalized
132}
133
134// assertInstallsEqual normalized the android.RuleBuilderInstalls and compares against the expected
135// normalizedInstalls.
136func assertInstallsEqual(t *testing.T, message string, expected []normalizedInstall, actual android.RuleBuilderInstalls) {
137 t.Helper()
138 normalizedActual := normalizeInstalls(actual)
139 android.AssertDeepEquals(t, message, expected, normalizedActual)
140}
141
142// expectedConfig encapsulates the expected properties that will be set in a bootImageConfig
143//
144// Each field <x> in here is compared against the corresponding field <x> in bootImageConfig.
145type expectedConfig struct {
146 name string
147 stem string
148 dir string
149 symbolsDir string
150 installDirOnDevice string
151 installDirOnHost string
152 profileInstallPathInApex string
153 modules android.ConfiguredJarList
154 dexPaths []string
155 dexPathsDeps []string
156 zip string
157 variants []*expectedVariant
158
159 // Mutated fields
160 profileInstalls []normalizedInstall
161 profileLicenseMetadataFile string
162}
163
164// expectedVariant encapsulates the expected properties that will be set in a bootImageVariant
165//
166// Each field <x> in here is compared against the corresponding field <x> in bootImageVariant
167// except for archType which is compared against the target.Arch.ArchType field in bootImageVariant.
168type expectedVariant struct {
169 archType android.ArchType
170 dexLocations []string
171 dexLocationsDeps []string
172 imagePathOnHost string
173 imagePathOnDevice string
174 imagesDeps []string
Jiakai Zhang8fe3a412023-02-23 17:37:16 +0000175 baseImages []string
176 baseImagesDeps []string
Paul Duffin8eb45732022-10-04 19:03:31 +0100177
178 // Mutated fields
179 installs []normalizedInstall
180 vdexInstalls []normalizedInstall
181 unstrippedInstalls []normalizedInstall
182 licenseMetadataFile string
183}
184
185// CheckArtBootImageConfig checks the status of the fields of the bootImageConfig and
186// bootImageVariant structures that are returned from artBootImageConfig.
187//
188// This is before any fields are mutated.
189func CheckArtBootImageConfig(t *testing.T, result *android.TestResult) {
190 checkArtBootImageConfig(t, result, false, "")
191}
192
193// getArtImageConfig gets the ART bootImageConfig that was created during the test.
194func getArtImageConfig(result *android.TestResult) *bootImageConfig {
195 pathCtx := &android.TestPathContext{TestResult: result}
196 imageConfig := artBootImageConfig(pathCtx)
197 return imageConfig
198}
199
200// checkArtBootImageConfig checks the ART boot image.
201//
202// mutated is true if this is called after fields in the image have been mutated by the ART
203// bootclasspath_fragment and false otherwise.
204func checkArtBootImageConfig(t *testing.T, result *android.TestResult, mutated bool, expectedLicenseMetadataFile string) {
205 imageConfig := getArtImageConfig(result)
206
207 expected := &expectedConfig{
208 name: "art",
209 stem: "boot",
210 dir: "out/soong/test_device/dex_artjars",
211 symbolsDir: "out/soong/test_device/dex_artjars_unstripped",
212 installDirOnDevice: "system/framework",
213 installDirOnHost: "apex/art_boot_images/javalib",
214 profileInstallPathInApex: "etc/boot-image.prof",
215 modules: android.CreateTestConfiguredJarList([]string{"com.android.art:core1", "com.android.art:core2"}),
216 dexPaths: []string{"out/soong/test_device/dex_artjars_input/core1.jar", "out/soong/test_device/dex_artjars_input/core2.jar"},
217 dexPathsDeps: []string{"out/soong/test_device/dex_artjars_input/core1.jar", "out/soong/test_device/dex_artjars_input/core2.jar"},
218 zip: "out/soong/test_device/dex_artjars/art.zip",
219 variants: []*expectedVariant{
220 {
221 archType: android.Arm64,
222 dexLocations: []string{"/apex/com.android.art/javalib/core1.jar", "/apex/com.android.art/javalib/core2.jar"},
223 dexLocationsDeps: []string{"/apex/com.android.art/javalib/core1.jar", "/apex/com.android.art/javalib/core2.jar"},
224 imagePathOnHost: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
225 imagePathOnDevice: "/system/framework/arm64/boot.art",
226 imagesDeps: []string{
227 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
228 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat",
229 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex",
230 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art",
231 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat",
232 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex",
233 },
234 installs: []normalizedInstall{
235 {
236 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
237 to: "/apex/art_boot_images/javalib/arm64/boot.art",
238 },
239 {
240 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat",
241 to: "/apex/art_boot_images/javalib/arm64/boot.oat",
242 },
243 {
244 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art",
245 to: "/apex/art_boot_images/javalib/arm64/boot-core2.art",
246 },
247 {
248 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat",
249 to: "/apex/art_boot_images/javalib/arm64/boot-core2.oat",
250 },
251 },
252 vdexInstalls: []normalizedInstall{
253 {
254 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex",
255 to: "/apex/art_boot_images/javalib/arm64/boot.vdex",
256 },
257 {
258 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex",
259 to: "/apex/art_boot_images/javalib/arm64/boot-core2.vdex",
260 },
261 },
262 unstrippedInstalls: []normalizedInstall{
263 {
264 from: "out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm64/boot.oat",
265 to: "/apex/art_boot_images/javalib/arm64/boot.oat",
266 },
267 {
268 from: "out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm64/boot-core2.oat",
269 to: "/apex/art_boot_images/javalib/arm64/boot-core2.oat",
270 },
271 },
272 licenseMetadataFile: expectedLicenseMetadataFile,
273 },
274 {
275 archType: android.Arm,
276 dexLocations: []string{"/apex/com.android.art/javalib/core1.jar", "/apex/com.android.art/javalib/core2.jar"},
277 dexLocationsDeps: []string{"/apex/com.android.art/javalib/core1.jar", "/apex/com.android.art/javalib/core2.jar"},
278 imagePathOnHost: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
279 imagePathOnDevice: "/system/framework/arm/boot.art",
280 imagesDeps: []string{
281 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
282 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat",
283 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex",
284 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art",
285 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat",
286 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex",
287 },
288 installs: []normalizedInstall{
289 {
290 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
291 to: "/apex/art_boot_images/javalib/arm/boot.art",
292 },
293 {
294 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat",
295 to: "/apex/art_boot_images/javalib/arm/boot.oat",
296 },
297 {
298 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art",
299 to: "/apex/art_boot_images/javalib/arm/boot-core2.art",
300 },
301 {
302 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat",
303 to: "/apex/art_boot_images/javalib/arm/boot-core2.oat",
304 },
305 },
306 vdexInstalls: []normalizedInstall{
307 {
308 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex",
309 to: "/apex/art_boot_images/javalib/arm/boot.vdex",
310 },
311 {
312 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex",
313 to: "/apex/art_boot_images/javalib/arm/boot-core2.vdex",
314 },
315 },
316 unstrippedInstalls: []normalizedInstall{
317 {
318 from: "out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm/boot.oat",
319 to: "/apex/art_boot_images/javalib/arm/boot.oat",
320 },
321 {
322 from: "out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm/boot-core2.oat",
323 to: "/apex/art_boot_images/javalib/arm/boot-core2.oat",
324 },
325 },
326 licenseMetadataFile: expectedLicenseMetadataFile,
327 },
328 {
329 archType: android.X86_64,
330 dexLocations: []string{"host/linux-x86/apex/com.android.art/javalib/core1.jar", "host/linux-x86/apex/com.android.art/javalib/core2.jar"},
331 dexLocationsDeps: []string{"host/linux-x86/apex/com.android.art/javalib/core1.jar", "host/linux-x86/apex/com.android.art/javalib/core2.jar"},
332 imagePathOnHost: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
333 imagePathOnDevice: "/system/framework/x86_64/boot.art",
334 imagesDeps: []string{
335 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
336 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat",
337 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex",
338 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art",
339 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat",
340 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex",
341 },
342 installs: []normalizedInstall{
343 {
344 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
345 to: "/apex/art_boot_images/javalib/x86_64/boot.art",
346 }, {
347 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat",
348 to: "/apex/art_boot_images/javalib/x86_64/boot.oat",
349 },
350 {
351 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art",
352 to: "/apex/art_boot_images/javalib/x86_64/boot-core2.art",
353 }, {
354 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat",
355 to: "/apex/art_boot_images/javalib/x86_64/boot-core2.oat",
356 },
357 },
358 vdexInstalls: []normalizedInstall{
359 {
360 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex",
361 to: "/apex/art_boot_images/javalib/x86_64/boot.vdex",
362 },
363 {
364 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex",
365 to: "/apex/art_boot_images/javalib/x86_64/boot-core2.vdex",
366 },
367 },
368 unstrippedInstalls: []normalizedInstall{
369 {
370 from: "out/soong/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat",
371 to: "/apex/art_boot_images/javalib/x86_64/boot.oat",
372 },
373 {
374 from: "out/soong/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat",
375 to: "/apex/art_boot_images/javalib/x86_64/boot-core2.oat",
376 },
377 },
378 licenseMetadataFile: expectedLicenseMetadataFile,
379 },
380 {
381 archType: android.X86,
382 dexLocations: []string{"host/linux-x86/apex/com.android.art/javalib/core1.jar", "host/linux-x86/apex/com.android.art/javalib/core2.jar"},
383 dexLocationsDeps: []string{"host/linux-x86/apex/com.android.art/javalib/core1.jar", "host/linux-x86/apex/com.android.art/javalib/core2.jar"},
384 imagePathOnHost: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
385 imagePathOnDevice: "/system/framework/x86/boot.art",
386 imagesDeps: []string{
387 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
388 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat",
389 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex",
390 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art",
391 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat",
392 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex",
393 },
394 installs: []normalizedInstall{
395 {
396 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
397 to: "/apex/art_boot_images/javalib/x86/boot.art",
398 }, {
399 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat",
400 to: "/apex/art_boot_images/javalib/x86/boot.oat",
401 },
402 {
403 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art",
404 to: "/apex/art_boot_images/javalib/x86/boot-core2.art",
405 }, {
406 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat",
407 to: "/apex/art_boot_images/javalib/x86/boot-core2.oat",
408 },
409 },
410 vdexInstalls: []normalizedInstall{
411 {
412 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex",
413 to: "/apex/art_boot_images/javalib/x86/boot.vdex",
414 },
415 {
416 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex",
417 to: "/apex/art_boot_images/javalib/x86/boot-core2.vdex",
418 },
419 },
420 unstrippedInstalls: []normalizedInstall{
421 {
422 from: "out/soong/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat",
423 to: "/apex/art_boot_images/javalib/x86/boot.oat",
424 },
425 {
426 from: "out/soong/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat",
427 to: "/apex/art_boot_images/javalib/x86/boot-core2.oat",
428 },
429 },
430 licenseMetadataFile: expectedLicenseMetadataFile,
431 },
432 },
433 }
434
435 checkBootImageConfig(t, imageConfig, mutated, expected)
436}
437
438// getFrameworkImageConfig gets the framework bootImageConfig that was created during the test.
439func getFrameworkImageConfig(result *android.TestResult) *bootImageConfig {
440 pathCtx := &android.TestPathContext{TestResult: result}
441 imageConfig := defaultBootImageConfig(pathCtx)
442 return imageConfig
443}
444
445// CheckFrameworkBootImageConfig checks the status of the fields of the bootImageConfig and
446// bootImageVariant structures that are returned from defaultBootImageConfig.
447//
448// This is before any fields are mutated.
449func CheckFrameworkBootImageConfig(t *testing.T, result *android.TestResult) {
450 checkFrameworkBootImageConfig(t, result, false, "")
451}
452
453// checkFrameworkBootImageConfig checks the framework boot image.
454//
455// mutated is true if this is called after fields in the image have been mutated by the
456// platform_bootclasspath and false otherwise.
457func checkFrameworkBootImageConfig(t *testing.T, result *android.TestResult, mutated bool, expectedLicenseMetadataFile string) {
458 imageConfig := getFrameworkImageConfig(result)
459
460 expected := &expectedConfig{
461 name: "boot",
462 stem: "boot",
463 dir: "out/soong/test_device/dex_bootjars",
464 symbolsDir: "out/soong/test_device/dex_bootjars_unstripped",
465 installDirOnDevice: "system/framework",
466 installDirOnHost: "system/framework",
467 profileInstallPathInApex: "",
468 modules: android.CreateTestConfiguredJarList([]string{"platform:framework"}),
469 dexPaths: []string{"out/soong/test_device/dex_bootjars_input/framework.jar"},
470 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"},
471 zip: "out/soong/test_device/dex_bootjars/boot.zip",
472 variants: []*expectedVariant{
473 {
474 archType: android.Arm64,
475 dexLocations: []string{"/system/framework/framework.jar"},
476 dexLocationsDeps: []string{
477 "/apex/com.android.art/javalib/core1.jar",
478 "/apex/com.android.art/javalib/core2.jar",
479 "/system/framework/framework.jar",
480 },
481 imagePathOnHost: "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art",
482 imagePathOnDevice: "/system/framework/arm64/boot-framework.art",
483 imagesDeps: []string{
484 "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art",
485 "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.oat",
486 "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.vdex",
487 },
Jiakai Zhang8fe3a412023-02-23 17:37:16 +0000488 baseImages: []string{"out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art"},
489 baseImagesDeps: []string{
Paul Duffin8eb45732022-10-04 19:03:31 +0100490 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
491 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat",
492 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex",
493 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art",
494 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat",
495 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex",
496 },
497 installs: []normalizedInstall{
498 {
499 from: "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art",
500 to: "/system/framework/arm64/boot-framework.art",
501 },
502 {
503 from: "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.oat",
504 to: "/system/framework/arm64/boot-framework.oat",
505 },
506 },
507 vdexInstalls: []normalizedInstall{
508 {
509 from: "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.vdex",
510 to: "/system/framework/arm64/boot-framework.vdex",
511 },
512 },
513 unstrippedInstalls: []normalizedInstall{
514 {
515 from: "out/soong/test_device/dex_bootjars_unstripped/android/system/framework/arm64/boot-framework.oat",
516 to: "/system/framework/arm64/boot-framework.oat",
517 },
518 },
519 licenseMetadataFile: expectedLicenseMetadataFile,
520 },
521 {
522 archType: android.Arm,
523 dexLocations: []string{"/system/framework/framework.jar"},
524 dexLocationsDeps: []string{
525 "/apex/com.android.art/javalib/core1.jar",
526 "/apex/com.android.art/javalib/core2.jar",
527 "/system/framework/framework.jar",
528 },
529 imagePathOnHost: "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art",
530 imagePathOnDevice: "/system/framework/arm/boot-framework.art",
531 imagesDeps: []string{
532 "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art",
533 "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.oat",
534 "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.vdex",
535 },
Jiakai Zhang8fe3a412023-02-23 17:37:16 +0000536 baseImages: []string{"out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art"},
537 baseImagesDeps: []string{
Paul Duffin8eb45732022-10-04 19:03:31 +0100538 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
539 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat",
540 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex",
541 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art",
542 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat",
543 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex",
544 },
545 installs: []normalizedInstall{
546 {
547 from: "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art",
548 to: "/system/framework/arm/boot-framework.art",
549 },
550 {
551 from: "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.oat",
552 to: "/system/framework/arm/boot-framework.oat",
553 },
554 },
555 vdexInstalls: []normalizedInstall{
556 {
557 from: "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.vdex",
558 to: "/system/framework/arm/boot-framework.vdex",
559 },
560 },
561 unstrippedInstalls: []normalizedInstall{
562 {
563 from: "out/soong/test_device/dex_bootjars_unstripped/android/system/framework/arm/boot-framework.oat",
564 to: "/system/framework/arm/boot-framework.oat",
565 },
566 },
567 licenseMetadataFile: expectedLicenseMetadataFile,
568 },
569 {
570 archType: android.X86_64,
571 dexLocations: []string{"host/linux-x86/system/framework/framework.jar"},
572 dexLocationsDeps: []string{
573 "host/linux-x86/apex/com.android.art/javalib/core1.jar",
574 "host/linux-x86/apex/com.android.art/javalib/core2.jar",
575 "host/linux-x86/system/framework/framework.jar",
576 },
577 imagePathOnHost: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art",
578 imagePathOnDevice: "/system/framework/x86_64/boot-framework.art",
579 imagesDeps: []string{
580 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art",
581 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat",
582 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex",
583 },
Jiakai Zhang8fe3a412023-02-23 17:37:16 +0000584 baseImages: []string{"out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art"},
585 baseImagesDeps: []string{
Paul Duffin8eb45732022-10-04 19:03:31 +0100586 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
587 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat",
588 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex",
589 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art",
590 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat",
591 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex",
592 },
593 installs: []normalizedInstall{
594 {
595 from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art",
596 to: "/system/framework/x86_64/boot-framework.art",
597 },
598 {
599 from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat",
600 to: "/system/framework/x86_64/boot-framework.oat",
601 },
602 },
603 vdexInstalls: []normalizedInstall{
604 {
605 from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex",
606 to: "/system/framework/x86_64/boot-framework.vdex",
607 },
608 },
609 unstrippedInstalls: []normalizedInstall{
610 {
611 from: "out/soong/test_device/dex_bootjars_unstripped/linux_glibc/system/framework/x86_64/boot-framework.oat",
612 to: "/system/framework/x86_64/boot-framework.oat",
613 },
614 },
615 licenseMetadataFile: expectedLicenseMetadataFile,
616 },
617 {
618 archType: android.X86,
619 dexLocations: []string{"host/linux-x86/system/framework/framework.jar"},
620 dexLocationsDeps: []string{
621 "host/linux-x86/apex/com.android.art/javalib/core1.jar",
622 "host/linux-x86/apex/com.android.art/javalib/core2.jar",
623 "host/linux-x86/system/framework/framework.jar",
624 },
625 imagePathOnHost: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art",
626 imagePathOnDevice: "/system/framework/x86/boot-framework.art",
627 imagesDeps: []string{
628 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art",
629 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat",
630 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex",
631 },
Jiakai Zhang8fe3a412023-02-23 17:37:16 +0000632 baseImages: []string{"out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art"},
633 baseImagesDeps: []string{
Paul Duffin8eb45732022-10-04 19:03:31 +0100634 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
635 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat",
636 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex",
637 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art",
638 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat",
639 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex",
640 },
641 installs: []normalizedInstall{
642 {
643 from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art",
644 to: "/system/framework/x86/boot-framework.art",
645 },
646 {
647 from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat",
648 to: "/system/framework/x86/boot-framework.oat",
649 },
650 },
651 vdexInstalls: []normalizedInstall{
652 {
653 from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex",
654 to: "/system/framework/x86/boot-framework.vdex",
655 },
656 },
657 unstrippedInstalls: []normalizedInstall{
658 {
659 from: "out/soong/test_device/dex_bootjars_unstripped/linux_glibc/system/framework/x86/boot-framework.oat",
660 to: "/system/framework/x86/boot-framework.oat",
661 },
662 },
663 licenseMetadataFile: expectedLicenseMetadataFile,
664 },
665 },
666 profileInstalls: []normalizedInstall{
667 {from: "out/soong/test_device/dex_bootjars/boot.bprof", to: "/system/etc/boot-image.bprof"},
668 {from: "out/soong/test_device/dex_bootjars/boot.prof", to: "/system/etc/boot-image.prof"},
669 },
670 profileLicenseMetadataFile: expectedLicenseMetadataFile,
671 }
672
673 checkBootImageConfig(t, imageConfig, mutated, expected)
674}
675
Jiakai Zhang38303082023-02-20 16:30:01 +0000676// getMainlineImageConfig gets the framework bootImageConfig that was created during the test.
677func getMainlineImageConfig(result *android.TestResult) *bootImageConfig {
678 pathCtx := &android.TestPathContext{TestResult: result}
679 imageConfig := mainlineBootImageConfig(pathCtx)
680 return imageConfig
681}
682
683// CheckMainlineBootImageConfig checks the status of the fields of the bootImageConfig and
684// bootImageVariant structures that are returned from mainlineBootImageConfig.
685//
686// This is before any fields are mutated.
687func CheckMainlineBootImageConfig(t *testing.T, result *android.TestResult) {
688 expectedLicenseMetadataFile := ""
689 imageConfig := getMainlineImageConfig(result)
690
691 expected := &expectedConfig{
692 name: "mainline",
693 stem: "boot",
694 dir: "out/soong/test_device/dex_mainlinejars",
695 symbolsDir: "out/soong/test_device/dex_mainlinejars_unstripped",
696 installDirOnDevice: "system/framework",
697 installDirOnHost: "system/framework",
698 profileInstallPathInApex: "",
699 modules: android.CreateTestConfiguredJarList([]string{
700 "com.android.foo:framework-foo",
701 "com.android.bar:framework-bar",
702 }),
703 dexPaths: []string{
704 "out/soong/test_device/dex_mainlinejars_input/framework-foo.jar",
705 "out/soong/test_device/dex_mainlinejars_input/framework-bar.jar",
706 },
707 dexPathsDeps: []string{
708 "out/soong/test_device/dex_artjars_input/core1.jar",
709 "out/soong/test_device/dex_artjars_input/core2.jar",
710 "out/soong/test_device/dex_bootjars_input/framework.jar",
711 "out/soong/test_device/dex_mainlinejars_input/framework-foo.jar",
712 "out/soong/test_device/dex_mainlinejars_input/framework-bar.jar",
713 },
714 zip: "out/soong/test_device/dex_mainlinejars/mainline.zip",
715 variants: []*expectedVariant{
716 {
717 archType: android.Arm64,
718 dexLocations: []string{
719 "/apex/com.android.foo/javalib/framework-foo.jar",
720 "/apex/com.android.bar/javalib/framework-bar.jar",
721 },
722 dexLocationsDeps: []string{
723 "/apex/com.android.art/javalib/core1.jar",
724 "/apex/com.android.art/javalib/core2.jar",
725 "/system/framework/framework.jar",
726 "/apex/com.android.foo/javalib/framework-foo.jar",
727 "/apex/com.android.bar/javalib/framework-bar.jar",
728 },
729 imagePathOnHost: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art",
730 imagePathOnDevice: "/system/framework/arm64/boot-framework-foo.art",
731 imagesDeps: []string{
732 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art",
733 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.oat",
734 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.vdex",
735 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-bar.art",
736 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-bar.oat",
737 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-bar.vdex",
738 },
739 baseImages: []string{
740 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
741 "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art",
742 },
743 baseImagesDeps: []string{
744 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
745 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat",
746 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex",
747 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art",
748 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat",
749 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex",
750 "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art",
751 "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.oat",
752 "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.vdex",
753 },
754 installs: []normalizedInstall{
755 {
756 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art",
757 to: "/system/framework/arm64/boot-framework-foo.art",
758 },
759 {
760 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.oat",
761 to: "/system/framework/arm64/boot-framework-foo.oat",
762 },
763 {
764 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-bar.art",
765 to: "/system/framework/arm64/boot-framework-bar.art",
766 },
767 {
768 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-bar.oat",
769 to: "/system/framework/arm64/boot-framework-bar.oat",
770 },
771 },
772 vdexInstalls: []normalizedInstall{
773 {
774 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.vdex",
775 to: "/system/framework/arm64/boot-framework-foo.vdex",
776 },
777 {
778 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-bar.vdex",
779 to: "/system/framework/arm64/boot-framework-bar.vdex",
780 },
781 },
782 unstrippedInstalls: []normalizedInstall{
783 {
784 from: "out/soong/test_device/dex_mainlinejars_unstripped/android/system/framework/arm64/boot-framework-foo.oat",
785 to: "/system/framework/arm64/boot-framework-foo.oat",
786 },
787 {
788 from: "out/soong/test_device/dex_mainlinejars_unstripped/android/system/framework/arm64/boot-framework-bar.oat",
789 to: "/system/framework/arm64/boot-framework-bar.oat",
790 },
791 },
792 licenseMetadataFile: expectedLicenseMetadataFile,
793 },
794 {
795 archType: android.Arm,
796 dexLocations: []string{
797 "/apex/com.android.foo/javalib/framework-foo.jar",
798 "/apex/com.android.bar/javalib/framework-bar.jar",
799 },
800 dexLocationsDeps: []string{
801 "/apex/com.android.art/javalib/core1.jar",
802 "/apex/com.android.art/javalib/core2.jar",
803 "/system/framework/framework.jar",
804 "/apex/com.android.foo/javalib/framework-foo.jar",
805 "/apex/com.android.bar/javalib/framework-bar.jar",
806 },
807 imagePathOnHost: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art",
808 imagePathOnDevice: "/system/framework/arm/boot-framework-foo.art",
809 imagesDeps: []string{
810 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art",
811 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.oat",
812 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.vdex",
813 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-bar.art",
814 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-bar.oat",
815 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-bar.vdex",
816 },
817 baseImages: []string{
818 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
819 "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art",
820 },
821 baseImagesDeps: []string{
822 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
823 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat",
824 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex",
825 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art",
826 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat",
827 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex",
828 "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art",
829 "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.oat",
830 "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.vdex",
831 },
832 installs: []normalizedInstall{
833 {
834 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art",
835 to: "/system/framework/arm/boot-framework-foo.art",
836 },
837 {
838 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.oat",
839 to: "/system/framework/arm/boot-framework-foo.oat",
840 },
841 {
842 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-bar.art",
843 to: "/system/framework/arm/boot-framework-bar.art",
844 },
845 {
846 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-bar.oat",
847 to: "/system/framework/arm/boot-framework-bar.oat",
848 },
849 },
850 vdexInstalls: []normalizedInstall{
851 {
852 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.vdex",
853 to: "/system/framework/arm/boot-framework-foo.vdex",
854 },
855 {
856 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-bar.vdex",
857 to: "/system/framework/arm/boot-framework-bar.vdex",
858 },
859 },
860 unstrippedInstalls: []normalizedInstall{
861 {
862 from: "out/soong/test_device/dex_mainlinejars_unstripped/android/system/framework/arm/boot-framework-foo.oat",
863 to: "/system/framework/arm/boot-framework-foo.oat",
864 },
865 {
866 from: "out/soong/test_device/dex_mainlinejars_unstripped/android/system/framework/arm/boot-framework-bar.oat",
867 to: "/system/framework/arm/boot-framework-bar.oat",
868 },
869 },
870 licenseMetadataFile: expectedLicenseMetadataFile,
871 },
872 {
873 archType: android.X86_64,
874 dexLocations: []string{
875 "host/linux-x86/apex/com.android.foo/javalib/framework-foo.jar",
876 "host/linux-x86/apex/com.android.bar/javalib/framework-bar.jar",
877 },
878 dexLocationsDeps: []string{
879 "host/linux-x86/apex/com.android.art/javalib/core1.jar",
880 "host/linux-x86/apex/com.android.art/javalib/core2.jar",
881 "host/linux-x86/system/framework/framework.jar",
882 "host/linux-x86/apex/com.android.foo/javalib/framework-foo.jar",
883 "host/linux-x86/apex/com.android.bar/javalib/framework-bar.jar",
884 },
885 imagePathOnHost: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art",
886 imagePathOnDevice: "/system/framework/x86_64/boot-framework-foo.art",
887 imagesDeps: []string{
888 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art",
889 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.oat",
890 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex",
891 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-bar.art",
892 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-bar.oat",
893 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-bar.vdex",
894 },
895 baseImages: []string{
896 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
897 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art",
898 },
899 baseImagesDeps: []string{
900 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
901 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat",
902 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex",
903 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art",
904 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat",
905 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex",
906 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art",
907 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat",
908 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex",
909 },
910 installs: []normalizedInstall{
911 {
912 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art",
913 to: "/system/framework/x86_64/boot-framework-foo.art",
914 },
915 {
916 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.oat",
917 to: "/system/framework/x86_64/boot-framework-foo.oat",
918 },
919 {
920 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-bar.art",
921 to: "/system/framework/x86_64/boot-framework-bar.art",
922 },
923 {
924 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-bar.oat",
925 to: "/system/framework/x86_64/boot-framework-bar.oat",
926 },
927 },
928 vdexInstalls: []normalizedInstall{
929 {
930 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex",
931 to: "/system/framework/x86_64/boot-framework-foo.vdex",
932 },
933 {
934 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-bar.vdex",
935 to: "/system/framework/x86_64/boot-framework-bar.vdex",
936 },
937 },
938 unstrippedInstalls: []normalizedInstall{
939 {
940 from: "out/soong/test_device/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86_64/boot-framework-foo.oat",
941 to: "/system/framework/x86_64/boot-framework-foo.oat",
942 },
943 {
944 from: "out/soong/test_device/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86_64/boot-framework-bar.oat",
945 to: "/system/framework/x86_64/boot-framework-bar.oat",
946 },
947 },
948 licenseMetadataFile: expectedLicenseMetadataFile,
949 },
950 {
951 archType: android.X86,
952 dexLocations: []string{
953 "host/linux-x86/apex/com.android.foo/javalib/framework-foo.jar",
954 "host/linux-x86/apex/com.android.bar/javalib/framework-bar.jar",
955 },
956 dexLocationsDeps: []string{
957 "host/linux-x86/apex/com.android.art/javalib/core1.jar",
958 "host/linux-x86/apex/com.android.art/javalib/core2.jar",
959 "host/linux-x86/system/framework/framework.jar",
960 "host/linux-x86/apex/com.android.foo/javalib/framework-foo.jar",
961 "host/linux-x86/apex/com.android.bar/javalib/framework-bar.jar",
962 },
963 imagePathOnHost: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art",
964 imagePathOnDevice: "/system/framework/x86/boot-framework-foo.art",
965 imagesDeps: []string{
966 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art",
967 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.oat",
968 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.vdex",
969 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-bar.art",
970 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-bar.oat",
971 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-bar.vdex",
972 },
973 baseImages: []string{
974 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
975 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art",
976 },
977 baseImagesDeps: []string{
978 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
979 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat",
980 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex",
981 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art",
982 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat",
983 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex",
984 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art",
985 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat",
986 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex",
987 },
988 installs: []normalizedInstall{
989 {
990 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art",
991 to: "/system/framework/x86/boot-framework-foo.art",
992 },
993 {
994 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.oat",
995 to: "/system/framework/x86/boot-framework-foo.oat",
996 },
997 {
998 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-bar.art",
999 to: "/system/framework/x86/boot-framework-bar.art",
1000 },
1001 {
1002 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-bar.oat",
1003 to: "/system/framework/x86/boot-framework-bar.oat",
1004 },
1005 },
1006 vdexInstalls: []normalizedInstall{
1007 {
1008 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.vdex",
1009 to: "/system/framework/x86/boot-framework-foo.vdex",
1010 },
1011 {
1012 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-bar.vdex",
1013 to: "/system/framework/x86/boot-framework-bar.vdex",
1014 },
1015 },
1016 unstrippedInstalls: []normalizedInstall{
1017 {
1018 from: "out/soong/test_device/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86/boot-framework-foo.oat",
1019 to: "/system/framework/x86/boot-framework-foo.oat",
1020 },
1021 {
1022 from: "out/soong/test_device/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86/boot-framework-bar.oat",
1023 to: "/system/framework/x86/boot-framework-bar.oat",
1024 },
1025 },
1026 licenseMetadataFile: expectedLicenseMetadataFile,
1027 },
1028 },
1029 profileInstalls: []normalizedInstall{},
1030 profileLicenseMetadataFile: expectedLicenseMetadataFile,
1031 }
1032
1033 checkBootImageConfig(t, imageConfig, false, expected)
1034}
1035
Paul Duffin8eb45732022-10-04 19:03:31 +01001036// clearMutatedFields clears fields in the expectedConfig that correspond to fields in the
1037// bootImageConfig/bootImageVariant structs which are mutated outside the call to
1038// genBootImageConfigs.
1039//
1040// This allows the resulting expectedConfig struct to be compared against the values of those boot
1041// image structs immediately the call to genBootImageConfigs. If this is not called then the
1042// expectedConfig struct will expect the boot image structs to have been mutated by the ART
1043// bootclasspath_fragment and the platform_bootclasspath.
1044func clearMutatedFields(expected *expectedConfig) {
1045 expected.profileInstalls = nil
1046 expected.profileLicenseMetadataFile = ""
1047 for _, variant := range expected.variants {
1048 variant.installs = nil
1049 variant.vdexInstalls = nil
1050 variant.unstrippedInstalls = nil
1051 variant.licenseMetadataFile = ""
1052 }
1053}
1054
1055// checkBootImageConfig checks a boot image against the expected contents.
1056//
1057// If mutated is false then this will clear any mutated fields in the expected contents back to the
1058// zero value so that they will match the unmodified values in the boot image.
1059//
1060// It runs the checks in an image specific subtest of the current test.
1061func checkBootImageConfig(t *testing.T, imageConfig *bootImageConfig, mutated bool, expected *expectedConfig) {
1062 if !mutated {
1063 clearMutatedFields(expected)
1064 }
1065
1066 t.Run(imageConfig.name, func(t *testing.T) {
1067 nestedCheckBootImageConfig(t, imageConfig, expected)
1068 })
1069}
1070
1071// nestedCheckBootImageConfig does the work of comparing the image against the expected values and
1072// is run in an image specific subtest.
1073func nestedCheckBootImageConfig(t *testing.T, imageConfig *bootImageConfig, expected *expectedConfig) {
1074 android.AssertStringEquals(t, "name", expected.name, imageConfig.name)
1075 android.AssertStringEquals(t, "stem", expected.stem, imageConfig.stem)
1076 android.AssertPathRelativeToTopEquals(t, "dir", expected.dir, imageConfig.dir)
1077 android.AssertPathRelativeToTopEquals(t, "symbolsDir", expected.symbolsDir, imageConfig.symbolsDir)
1078 android.AssertStringEquals(t, "installDirOnDevice", expected.installDirOnDevice, imageConfig.installDirOnDevice)
1079 android.AssertStringEquals(t, "installDirOnHost", expected.installDirOnHost, imageConfig.installDirOnHost)
1080 android.AssertStringEquals(t, "profileInstallPathInApex", expected.profileInstallPathInApex, imageConfig.profileInstallPathInApex)
1081 android.AssertDeepEquals(t, "modules", expected.modules, imageConfig.modules)
1082 android.AssertPathsRelativeToTopEquals(t, "dexPaths", expected.dexPaths, imageConfig.dexPaths.Paths())
1083 android.AssertPathsRelativeToTopEquals(t, "dexPathsDeps", expected.dexPathsDeps, imageConfig.dexPathsDeps.Paths())
1084 // dexPathsByModule is just a different representation of the other information in the config.
1085 android.AssertPathRelativeToTopEquals(t, "zip", expected.zip, imageConfig.zip)
1086 assertInstallsEqual(t, "profileInstalls", expected.profileInstalls, imageConfig.profileInstalls)
1087 android.AssertStringEquals(t, "profileLicenseMetadataFile", expected.profileLicenseMetadataFile, imageConfig.profileLicenseMetadataFile.RelativeToTop().String())
1088
1089 android.AssertIntEquals(t, "variant count", 4, len(imageConfig.variants))
1090 for i, variant := range imageConfig.variants {
1091 expectedVariant := expected.variants[i]
1092 t.Run(variant.target.Arch.ArchType.String(), func(t *testing.T) {
1093 android.AssertDeepEquals(t, "archType", expectedVariant.archType, variant.target.Arch.ArchType)
1094 android.AssertDeepEquals(t, "dexLocations", expectedVariant.dexLocations, variant.dexLocations)
1095 android.AssertDeepEquals(t, "dexLocationsDeps", expectedVariant.dexLocationsDeps, variant.dexLocationsDeps)
1096 android.AssertPathRelativeToTopEquals(t, "imagePathOnHost", expectedVariant.imagePathOnHost, variant.imagePathOnHost)
1097 android.AssertStringEquals(t, "imagePathOnDevice", expectedVariant.imagePathOnDevice, variant.imagePathOnDevice)
1098 android.AssertPathsRelativeToTopEquals(t, "imagesDeps", expectedVariant.imagesDeps, variant.imagesDeps.Paths())
Jiakai Zhang8fe3a412023-02-23 17:37:16 +00001099 android.AssertPathsRelativeToTopEquals(t, "baseImages", expectedVariant.baseImages, variant.baseImages.Paths())
1100 android.AssertPathsRelativeToTopEquals(t, "baseImagesDeps", expectedVariant.baseImagesDeps, variant.baseImagesDeps)
Paul Duffin8eb45732022-10-04 19:03:31 +01001101 assertInstallsEqual(t, "installs", expectedVariant.installs, variant.installs)
1102 assertInstallsEqual(t, "vdexInstalls", expectedVariant.vdexInstalls, variant.vdexInstalls)
1103 assertInstallsEqual(t, "unstrippedInstalls", expectedVariant.unstrippedInstalls, variant.unstrippedInstalls)
1104 android.AssertStringEquals(t, "licenseMetadataFile", expectedVariant.licenseMetadataFile, variant.licenseMetadataFile.RelativeToTop().String())
1105 })
1106 }
1107}
1108
1109// CheckMutatedArtBootImageConfig checks the mutated fields in the bootImageConfig/Variant for ART.
1110func CheckMutatedArtBootImageConfig(t *testing.T, result *android.TestResult, expectedLicenseMetadataFile string) {
1111 checkArtBootImageConfig(t, result, true, expectedLicenseMetadataFile)
1112
1113 // Check the dexpreopt make vars. Do it in here as it depends on the expected license metadata
1114 // file at the moment and it
1115 checkDexpreoptMakeVars(t, result, expectedLicenseMetadataFile)
1116}
1117
1118// CheckMutatedFrameworkBootImageConfig checks the mutated fields in the bootImageConfig/Variant for framework.
1119func CheckMutatedFrameworkBootImageConfig(t *testing.T, result *android.TestResult, expectedLicenseMetadataFile string) {
1120 checkFrameworkBootImageConfig(t, result, true, expectedLicenseMetadataFile)
1121}
1122
1123// checkDexpreoptMakeVars checks the DEXPREOPT_ prefixed make vars produced by dexpreoptBootJars
1124// singleton.
1125func checkDexpreoptMakeVars(t *testing.T, result *android.TestResult, expectedLicenseMetadataFile string) {
1126 vars := result.MakeVarsForTesting(func(variable android.MakeVarVariable) bool {
1127 return strings.HasPrefix(variable.Name(), "DEXPREOPT_")
1128 })
1129
1130 out := &strings.Builder{}
1131 for _, v := range vars {
1132 fmt.Fprintf(out, "%s=%s\n", v.Name(), android.StringRelativeToTop(result.Config, v.Value()))
1133 }
1134 format := `
1135DEXPREOPT_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
1136DEXPREOPT_BOOTCLASSPATH_DEX_LOCATIONS=/apex/com.android.art/javalib/core1.jar /apex/com.android.art/javalib/core2.jar /system/framework/framework.jar
1137DEXPREOPT_BOOT_JARS_MODULES=platform:framework
1138DEXPREOPT_GEN=out/host/linux-x86/bin/dexpreopt_gen
1139DEXPREOPT_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
1140DEXPREOPT_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
1141DEXPREOPT_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
1142DEXPREOPT_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
1143DEXPREOPT_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
1144DEXPREOPT_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
1145DEXPREOPT_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
1146DEXPREOPT_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
Jiakai Zhang38303082023-02-20 16:30:01 +00001147DEXPREOPT_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 out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-bar.art:/system/framework/arm/boot-framework-bar.art out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-bar.oat:/system/framework/arm/boot-framework-bar.oat
1148DEXPREOPT_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 out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-bar.art:/system/framework/arm64/boot-framework-bar.art out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-bar.oat:/system/framework/arm64/boot-framework-bar.oat
1149DEXPREOPT_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 out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-bar.art:/system/framework/x86/boot-framework-bar.art out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-bar.oat:/system/framework/x86/boot-framework-bar.oat
1150DEXPREOPT_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 out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-bar.art:/system/framework/x86_64/boot-framework-bar.art out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-bar.oat:/system/framework/x86_64/boot-framework-bar.oat
Paul Duffin8eb45732022-10-04 19:03:31 +01001151DEXPREOPT_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
1152DEXPREOPT_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
1153DEXPREOPT_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
1154DEXPREOPT_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
1155DEXPREOPT_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
1156DEXPREOPT_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
1157DEXPREOPT_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
1158DEXPREOPT_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
Jiakai Zhang38303082023-02-20 16:30:01 +00001159DEXPREOPT_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 out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-bar.art out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-bar.oat out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-bar.vdex
1160DEXPREOPT_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 out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-bar.art out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-bar.oat out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-bar.vdex
1161DEXPREOPT_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 out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-bar.art out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-bar.oat out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-bar.vdex
1162DEXPREOPT_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 out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-bar.art out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-bar.oat out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-bar.vdex
Paul Duffin8eb45732022-10-04 19:03:31 +01001163DEXPREOPT_IMAGE_LICENSE_METADATA_art_arm=%[1]s
1164DEXPREOPT_IMAGE_LICENSE_METADATA_art_arm64=%[1]s
1165DEXPREOPT_IMAGE_LICENSE_METADATA_art_host_x86=%[1]s
1166DEXPREOPT_IMAGE_LICENSE_METADATA_art_host_x86_64=%[1]s
1167DEXPREOPT_IMAGE_LICENSE_METADATA_boot_arm=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
1168DEXPREOPT_IMAGE_LICENSE_METADATA_boot_arm64=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
1169DEXPREOPT_IMAGE_LICENSE_METADATA_boot_host_x86=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
1170DEXPREOPT_IMAGE_LICENSE_METADATA_boot_host_x86_64=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
Jiakai Zhang38303082023-02-20 16:30:01 +00001171DEXPREOPT_IMAGE_LICENSE_METADATA_mainline_arm=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
1172DEXPREOPT_IMAGE_LICENSE_METADATA_mainline_arm64=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
1173DEXPREOPT_IMAGE_LICENSE_METADATA_mainline_host_x86=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
1174DEXPREOPT_IMAGE_LICENSE_METADATA_mainline_host_x86_64=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
Paul Duffin8eb45732022-10-04 19:03:31 +01001175DEXPREOPT_IMAGE_LOCATIONS_ON_DEVICEart=/system/framework/boot.art
1176DEXPREOPT_IMAGE_LOCATIONS_ON_DEVICEboot=/system/framework/boot.art:/system/framework/boot-framework.art
Jiakai Zhang38303082023-02-20 16:30:01 +00001177DEXPREOPT_IMAGE_LOCATIONS_ON_DEVICEmainline=/system/framework/boot.art:/system/framework/boot-framework.art:/system/framework/boot-framework-foo.art
Paul Duffin8eb45732022-10-04 19:03:31 +01001178DEXPREOPT_IMAGE_LOCATIONS_ON_HOSTart=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/boot.art
1179DEXPREOPT_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
Jiakai Zhang38303082023-02-20 16:30:01 +00001180DEXPREOPT_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
1181DEXPREOPT_IMAGE_NAMES=art boot mainline
Paul Duffin8eb45732022-10-04 19:03:31 +01001182DEXPREOPT_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
1183DEXPREOPT_IMAGE_PROFILE_LICENSE_METADATA=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
1184DEXPREOPT_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
1185DEXPREOPT_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
1186DEXPREOPT_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
1187DEXPREOPT_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
1188DEXPREOPT_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
1189DEXPREOPT_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
1190DEXPREOPT_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
1191DEXPREOPT_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
Jiakai Zhang38303082023-02-20 16:30:01 +00001192DEXPREOPT_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 out/soong/test_device/dex_mainlinejars_unstripped/android/system/framework/arm/boot-framework-bar.oat:/system/framework/arm/boot-framework-bar.oat
1193DEXPREOPT_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 out/soong/test_device/dex_mainlinejars_unstripped/android/system/framework/arm64/boot-framework-bar.oat:/system/framework/arm64/boot-framework-bar.oat
1194DEXPREOPT_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 out/soong/test_device/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86/boot-framework-bar.oat:/system/framework/x86/boot-framework-bar.oat
1195DEXPREOPT_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 out/soong/test_device/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86_64/boot-framework-bar.oat:/system/framework/x86_64/boot-framework-bar.oat
Paul Duffin8eb45732022-10-04 19:03:31 +01001196DEXPREOPT_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
1197DEXPREOPT_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
1198DEXPREOPT_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
1199DEXPREOPT_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
1200DEXPREOPT_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
1201DEXPREOPT_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
1202DEXPREOPT_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
1203DEXPREOPT_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
Jiakai Zhang38303082023-02-20 16:30:01 +00001204DEXPREOPT_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 out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-bar.vdex:/system/framework/arm/boot-framework-bar.vdex
1205DEXPREOPT_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 out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-bar.vdex:/system/framework/arm64/boot-framework-bar.vdex
1206DEXPREOPT_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 out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-bar.vdex:/system/framework/x86/boot-framework-bar.vdex
1207DEXPREOPT_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 out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-bar.vdex:/system/framework/x86_64/boot-framework-bar.vdex
Paul Duffin8eb45732022-10-04 19:03:31 +01001208DEXPREOPT_IMAGE_ZIP_art=out/soong/test_device/dex_artjars/art.zip
1209DEXPREOPT_IMAGE_ZIP_boot=out/soong/test_device/dex_bootjars/boot.zip
Jiakai Zhang38303082023-02-20 16:30:01 +00001210DEXPREOPT_IMAGE_ZIP_mainline=out/soong/test_device/dex_mainlinejars/mainline.zip
Paul Duffin8eb45732022-10-04 19:03:31 +01001211DEXPREOPT_IMAGE_art_arm=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art
1212DEXPREOPT_IMAGE_art_arm64=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art
1213DEXPREOPT_IMAGE_art_host_x86=out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art
1214DEXPREOPT_IMAGE_art_host_x86_64=out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art
1215DEXPREOPT_IMAGE_boot_arm=out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art
1216DEXPREOPT_IMAGE_boot_arm64=out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art
1217DEXPREOPT_IMAGE_boot_host_x86=out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art
1218DEXPREOPT_IMAGE_boot_host_x86_64=out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art
Jiakai Zhang38303082023-02-20 16:30:01 +00001219DEXPREOPT_IMAGE_mainline_arm=out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art
1220DEXPREOPT_IMAGE_mainline_arm64=out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art
1221DEXPREOPT_IMAGE_mainline_host_x86=out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art
1222DEXPREOPT_IMAGE_mainline_host_x86_64=out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art
Paul Duffin8eb45732022-10-04 19:03:31 +01001223`
1224 expected := strings.TrimSpace(fmt.Sprintf(format, expectedLicenseMetadataFile))
1225 actual := strings.TrimSpace(out.String())
1226 android.AssertStringEquals(t, "vars", expected, actual)
1227}