1// 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 42var 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 114// 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 installDir string 151 profileInstallPathInApex string 152 modules android.ConfiguredJarList 153 dexPaths []string 154 dexPathsDeps []string 155 zip string 156 variants []*expectedVariant 157 158 // Mutated fields 159 profileInstalls []normalizedInstall 160 profileLicenseMetadataFile string 161} 162 163// expectedVariant encapsulates the expected properties that will be set in a bootImageVariant 164// 165// Each field <x> in here is compared against the corresponding field <x> in bootImageVariant 166// except for archType which is compared against the target.Arch.ArchType field in bootImageVariant. 167type expectedVariant struct { 168 archType android.ArchType 169 dexLocations []string 170 dexLocationsDeps []string 171 imagePathOnHost string 172 imagePathOnDevice string 173 imagesDeps []string 174 baseImages []string 175 baseImagesDeps []string 176 177 // Mutated fields 178 installs []normalizedInstall 179 vdexInstalls []normalizedInstall 180 unstrippedInstalls []normalizedInstall 181 licenseMetadataFile string 182} 183 184// CheckArtBootImageConfig checks the status of the fields of the bootImageConfig and 185// bootImageVariant structures that are returned from artBootImageConfig. 186// 187// This is before any fields are mutated. 188func CheckArtBootImageConfig(t *testing.T, result *android.TestResult) { 189 checkArtBootImageConfig(t, result, false, "") 190} 191 192// getArtImageConfig gets the ART bootImageConfig that was created during the test. 193func getArtImageConfig(result *android.TestResult) *bootImageConfig { 194 pathCtx := &android.TestPathContext{TestResult: result} 195 imageConfig := artBootImageConfig(pathCtx) 196 return imageConfig 197} 198 199// checkArtBootImageConfig checks the ART boot image. 200// 201// mutated is true if this is called after fields in the image have been mutated by the ART 202// bootclasspath_fragment and false otherwise. 203func checkArtBootImageConfig(t *testing.T, result *android.TestResult, mutated bool, expectedLicenseMetadataFile string) { 204 imageConfig := getArtImageConfig(result) 205 206 expected := &expectedConfig{ 207 name: "art", 208 stem: "boot", 209 dir: "out/soong/dexpreopt_arm64/dex_artjars", 210 symbolsDir: "out/soong/dexpreopt_arm64/dex_artjars_unstripped", 211 installDir: "apex/art_boot_images/javalib", 212 profileInstallPathInApex: "etc/boot-image.prof", 213 modules: android.CreateTestConfiguredJarList([]string{"com.android.art:core1", "com.android.art:core2"}), 214 dexPaths: []string{"out/soong/dexpreopt_arm64/dex_artjars_input/core1.jar", "out/soong/dexpreopt_arm64/dex_artjars_input/core2.jar"}, 215 dexPathsDeps: []string{"out/soong/dexpreopt_arm64/dex_artjars_input/core1.jar", "out/soong/dexpreopt_arm64/dex_artjars_input/core2.jar"}, 216 zip: "out/soong/dexpreopt_arm64/dex_artjars/art.zip", 217 variants: []*expectedVariant{ 218 { 219 archType: android.Arm64, 220 dexLocations: []string{"/apex/com.android.art/javalib/core1.jar", "/apex/com.android.art/javalib/core2.jar"}, 221 dexLocationsDeps: []string{"/apex/com.android.art/javalib/core1.jar", "/apex/com.android.art/javalib/core2.jar"}, 222 imagePathOnHost: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art", 223 imagePathOnDevice: "/apex/art_boot_images/javalib/arm64/boot.art", 224 imagesDeps: []string{ 225 "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art", 226 "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat", 227 "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex", 228 "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art", 229 "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat", 230 "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex", 231 }, 232 installs: []normalizedInstall{ 233 { 234 from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art", 235 to: "/apex/art_boot_images/javalib/arm64/boot.art", 236 }, 237 { 238 from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat", 239 to: "/apex/art_boot_images/javalib/arm64/boot.oat", 240 }, 241 { 242 from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art", 243 to: "/apex/art_boot_images/javalib/arm64/boot-core2.art", 244 }, 245 { 246 from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat", 247 to: "/apex/art_boot_images/javalib/arm64/boot-core2.oat", 248 }, 249 }, 250 vdexInstalls: []normalizedInstall{ 251 { 252 from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex", 253 to: "/apex/art_boot_images/javalib/arm64/boot.vdex", 254 }, 255 { 256 from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex", 257 to: "/apex/art_boot_images/javalib/arm64/boot-core2.vdex", 258 }, 259 }, 260 unstrippedInstalls: []normalizedInstall{ 261 { 262 from: "out/soong/dexpreopt_arm64/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm64/boot.oat", 263 to: "/apex/art_boot_images/javalib/arm64/boot.oat", 264 }, 265 { 266 from: "out/soong/dexpreopt_arm64/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm64/boot-core2.oat", 267 to: "/apex/art_boot_images/javalib/arm64/boot-core2.oat", 268 }, 269 }, 270 licenseMetadataFile: expectedLicenseMetadataFile, 271 }, 272 { 273 archType: android.Arm, 274 dexLocations: []string{"/apex/com.android.art/javalib/core1.jar", "/apex/com.android.art/javalib/core2.jar"}, 275 dexLocationsDeps: []string{"/apex/com.android.art/javalib/core1.jar", "/apex/com.android.art/javalib/core2.jar"}, 276 imagePathOnHost: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art", 277 imagePathOnDevice: "/apex/art_boot_images/javalib/arm/boot.art", 278 imagesDeps: []string{ 279 "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art", 280 "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat", 281 "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex", 282 "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art", 283 "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat", 284 "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex", 285 }, 286 installs: []normalizedInstall{ 287 { 288 from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art", 289 to: "/apex/art_boot_images/javalib/arm/boot.art", 290 }, 291 { 292 from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat", 293 to: "/apex/art_boot_images/javalib/arm/boot.oat", 294 }, 295 { 296 from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art", 297 to: "/apex/art_boot_images/javalib/arm/boot-core2.art", 298 }, 299 { 300 from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat", 301 to: "/apex/art_boot_images/javalib/arm/boot-core2.oat", 302 }, 303 }, 304 vdexInstalls: []normalizedInstall{ 305 { 306 from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex", 307 to: "/apex/art_boot_images/javalib/arm/boot.vdex", 308 }, 309 { 310 from: "out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex", 311 to: "/apex/art_boot_images/javalib/arm/boot-core2.vdex", 312 }, 313 }, 314 unstrippedInstalls: []normalizedInstall{ 315 { 316 from: "out/soong/dexpreopt_arm64/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm/boot.oat", 317 to: "/apex/art_boot_images/javalib/arm/boot.oat", 318 }, 319 { 320 from: "out/soong/dexpreopt_arm64/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm/boot-core2.oat", 321 to: "/apex/art_boot_images/javalib/arm/boot-core2.oat", 322 }, 323 }, 324 licenseMetadataFile: expectedLicenseMetadataFile, 325 }, 326 { 327 archType: android.X86_64, 328 dexLocations: []string{"host/linux-x86/apex/com.android.art/javalib/core1.jar", "host/linux-x86/apex/com.android.art/javalib/core2.jar"}, 329 dexLocationsDeps: []string{"host/linux-x86/apex/com.android.art/javalib/core1.jar", "host/linux-x86/apex/com.android.art/javalib/core2.jar"}, 330 imagePathOnHost: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art", 331 imagePathOnDevice: "/apex/art_boot_images/javalib/x86_64/boot.art", 332 imagesDeps: []string{ 333 "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art", 334 "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat", 335 "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex", 336 "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art", 337 "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat", 338 "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex", 339 }, 340 installs: []normalizedInstall{ 341 { 342 from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art", 343 to: "/apex/art_boot_images/javalib/x86_64/boot.art", 344 }, { 345 from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat", 346 to: "/apex/art_boot_images/javalib/x86_64/boot.oat", 347 }, 348 { 349 from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art", 350 to: "/apex/art_boot_images/javalib/x86_64/boot-core2.art", 351 }, { 352 from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat", 353 to: "/apex/art_boot_images/javalib/x86_64/boot-core2.oat", 354 }, 355 }, 356 vdexInstalls: []normalizedInstall{ 357 { 358 from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex", 359 to: "/apex/art_boot_images/javalib/x86_64/boot.vdex", 360 }, 361 { 362 from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex", 363 to: "/apex/art_boot_images/javalib/x86_64/boot-core2.vdex", 364 }, 365 }, 366 unstrippedInstalls: []normalizedInstall{ 367 { 368 from: "out/soong/dexpreopt_arm64/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat", 369 to: "/apex/art_boot_images/javalib/x86_64/boot.oat", 370 }, 371 { 372 from: "out/soong/dexpreopt_arm64/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat", 373 to: "/apex/art_boot_images/javalib/x86_64/boot-core2.oat", 374 }, 375 }, 376 licenseMetadataFile: expectedLicenseMetadataFile, 377 }, 378 { 379 archType: android.X86, 380 dexLocations: []string{"host/linux-x86/apex/com.android.art/javalib/core1.jar", "host/linux-x86/apex/com.android.art/javalib/core2.jar"}, 381 dexLocationsDeps: []string{"host/linux-x86/apex/com.android.art/javalib/core1.jar", "host/linux-x86/apex/com.android.art/javalib/core2.jar"}, 382 imagePathOnHost: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art", 383 imagePathOnDevice: "/apex/art_boot_images/javalib/x86/boot.art", 384 imagesDeps: []string{ 385 "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art", 386 "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat", 387 "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex", 388 "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art", 389 "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat", 390 "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex", 391 }, 392 installs: []normalizedInstall{ 393 { 394 from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art", 395 to: "/apex/art_boot_images/javalib/x86/boot.art", 396 }, { 397 from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat", 398 to: "/apex/art_boot_images/javalib/x86/boot.oat", 399 }, 400 { 401 from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art", 402 to: "/apex/art_boot_images/javalib/x86/boot-core2.art", 403 }, { 404 from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat", 405 to: "/apex/art_boot_images/javalib/x86/boot-core2.oat", 406 }, 407 }, 408 vdexInstalls: []normalizedInstall{ 409 { 410 from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex", 411 to: "/apex/art_boot_images/javalib/x86/boot.vdex", 412 }, 413 { 414 from: "out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex", 415 to: "/apex/art_boot_images/javalib/x86/boot-core2.vdex", 416 }, 417 }, 418 unstrippedInstalls: []normalizedInstall{ 419 { 420 from: "out/soong/dexpreopt_arm64/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat", 421 to: "/apex/art_boot_images/javalib/x86/boot.oat", 422 }, 423 { 424 from: "out/soong/dexpreopt_arm64/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat", 425 to: "/apex/art_boot_images/javalib/x86/boot-core2.oat", 426 }, 427 }, 428 licenseMetadataFile: expectedLicenseMetadataFile, 429 }, 430 }, 431 } 432 433 checkBootImageConfig(t, imageConfig, mutated, expected) 434} 435 436// getFrameworkImageConfig gets the framework bootImageConfig that was created during the test. 437func getFrameworkImageConfig(result *android.TestResult) *bootImageConfig { 438 pathCtx := &android.TestPathContext{TestResult: result} 439 imageConfig := defaultBootImageConfig(pathCtx) 440 return imageConfig 441} 442 443// CheckFrameworkBootImageConfig checks the status of the fields of the bootImageConfig and 444// bootImageVariant structures that are returned from defaultBootImageConfig. 445// 446// This is before any fields are mutated. 447func CheckFrameworkBootImageConfig(t *testing.T, result *android.TestResult) { 448 checkFrameworkBootImageConfig(t, result, false, "") 449} 450 451// checkFrameworkBootImageConfig checks the framework boot image. 452// 453// mutated is true if this is called after fields in the image have been mutated by the 454// platform_bootclasspath and false otherwise. 455func checkFrameworkBootImageConfig(t *testing.T, result *android.TestResult, mutated bool, expectedLicenseMetadataFile string) { 456 imageConfig := getFrameworkImageConfig(result) 457 458 expected := &expectedConfig{ 459 name: "boot", 460 stem: "boot", 461 dir: "out/soong/dexpreopt_arm64/dex_bootjars", 462 symbolsDir: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped", 463 installDir: "system/framework", 464 profileInstallPathInApex: "", 465 modules: android.CreateTestConfiguredJarList([]string{ 466 "com.android.art:core1", 467 "com.android.art:core2", 468 "platform:framework", 469 }), 470 dexPaths: []string{ 471 "out/soong/dexpreopt_arm64/dex_bootjars_input/core1.jar", 472 "out/soong/dexpreopt_arm64/dex_bootjars_input/core2.jar", 473 "out/soong/dexpreopt_arm64/dex_bootjars_input/framework.jar", 474 }, 475 dexPathsDeps: []string{ 476 "out/soong/dexpreopt_arm64/dex_bootjars_input/core1.jar", 477 "out/soong/dexpreopt_arm64/dex_bootjars_input/core2.jar", 478 "out/soong/dexpreopt_arm64/dex_bootjars_input/framework.jar", 479 }, 480 zip: "out/soong/dexpreopt_arm64/dex_bootjars/boot.zip", 481 variants: []*expectedVariant{ 482 { 483 archType: android.Arm64, 484 dexLocations: []string{ 485 "/apex/com.android.art/javalib/core1.jar", 486 "/apex/com.android.art/javalib/core2.jar", 487 "/system/framework/framework.jar", 488 }, 489 dexLocationsDeps: []string{ 490 "/apex/com.android.art/javalib/core1.jar", 491 "/apex/com.android.art/javalib/core2.jar", 492 "/system/framework/framework.jar", 493 }, 494 imagePathOnHost: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.art", 495 imagePathOnDevice: "/system/framework/arm64/boot.art", 496 imagesDeps: []string{ 497 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.art", 498 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.oat", 499 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.vdex", 500 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.art", 501 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.oat", 502 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.vdex", 503 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.art", 504 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.oat", 505 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.vdex", 506 }, 507 installs: []normalizedInstall{ 508 { 509 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.art", 510 to: "/system/framework/arm64/boot.art", 511 }, 512 { 513 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.oat", 514 to: "/system/framework/arm64/boot.oat", 515 }, 516 { 517 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.art", 518 to: "/system/framework/arm64/boot-core2.art", 519 }, 520 { 521 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.oat", 522 to: "/system/framework/arm64/boot-core2.oat", 523 }, 524 { 525 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.art", 526 to: "/system/framework/arm64/boot-framework.art", 527 }, 528 { 529 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.oat", 530 to: "/system/framework/arm64/boot-framework.oat", 531 }, 532 }, 533 vdexInstalls: []normalizedInstall{ 534 { 535 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.vdex", 536 to: "/system/framework/arm64/boot.vdex", 537 }, 538 { 539 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.vdex", 540 to: "/system/framework/arm64/boot-core2.vdex", 541 }, 542 { 543 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.vdex", 544 to: "/system/framework/arm64/boot-framework.vdex", 545 }, 546 }, 547 unstrippedInstalls: []normalizedInstall{ 548 { 549 from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot.oat", 550 to: "/system/framework/arm64/boot.oat", 551 }, 552 { 553 from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot-core2.oat", 554 to: "/system/framework/arm64/boot-core2.oat", 555 }, 556 { 557 from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm64/boot-framework.oat", 558 to: "/system/framework/arm64/boot-framework.oat", 559 }, 560 }, 561 licenseMetadataFile: expectedLicenseMetadataFile, 562 }, 563 { 564 archType: android.Arm, 565 dexLocations: []string{ 566 "/apex/com.android.art/javalib/core1.jar", 567 "/apex/com.android.art/javalib/core2.jar", 568 "/system/framework/framework.jar", 569 }, 570 dexLocationsDeps: []string{ 571 "/apex/com.android.art/javalib/core1.jar", 572 "/apex/com.android.art/javalib/core2.jar", 573 "/system/framework/framework.jar", 574 }, 575 imagePathOnHost: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.art", 576 imagePathOnDevice: "/system/framework/arm/boot.art", 577 imagesDeps: []string{ 578 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.art", 579 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.oat", 580 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.vdex", 581 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.art", 582 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.oat", 583 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.vdex", 584 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.art", 585 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.oat", 586 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.vdex", 587 }, 588 installs: []normalizedInstall{ 589 { 590 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.art", 591 to: "/system/framework/arm/boot.art", 592 }, 593 { 594 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.oat", 595 to: "/system/framework/arm/boot.oat", 596 }, 597 { 598 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.art", 599 to: "/system/framework/arm/boot-core2.art", 600 }, 601 { 602 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.oat", 603 to: "/system/framework/arm/boot-core2.oat", 604 }, 605 { 606 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.art", 607 to: "/system/framework/arm/boot-framework.art", 608 }, 609 { 610 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.oat", 611 to: "/system/framework/arm/boot-framework.oat", 612 }, 613 }, 614 vdexInstalls: []normalizedInstall{ 615 { 616 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.vdex", 617 to: "/system/framework/arm/boot.vdex", 618 }, 619 { 620 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.vdex", 621 to: "/system/framework/arm/boot-core2.vdex", 622 }, 623 { 624 from: "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.vdex", 625 to: "/system/framework/arm/boot-framework.vdex", 626 }, 627 }, 628 unstrippedInstalls: []normalizedInstall{ 629 { 630 from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm/boot.oat", 631 to: "/system/framework/arm/boot.oat", 632 }, 633 { 634 from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm/boot-core2.oat", 635 to: "/system/framework/arm/boot-core2.oat", 636 }, 637 { 638 from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/android/system/framework/arm/boot-framework.oat", 639 to: "/system/framework/arm/boot-framework.oat", 640 }, 641 }, 642 licenseMetadataFile: expectedLicenseMetadataFile, 643 }, 644 { 645 archType: android.X86_64, 646 dexLocations: []string{ 647 "host/linux-x86/apex/com.android.art/javalib/core1.jar", 648 "host/linux-x86/apex/com.android.art/javalib/core2.jar", 649 "host/linux-x86/system/framework/framework.jar", 650 }, 651 dexLocationsDeps: []string{ 652 "host/linux-x86/apex/com.android.art/javalib/core1.jar", 653 "host/linux-x86/apex/com.android.art/javalib/core2.jar", 654 "host/linux-x86/system/framework/framework.jar", 655 }, 656 imagePathOnHost: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.art", 657 imagePathOnDevice: "/system/framework/x86_64/boot.art", 658 imagesDeps: []string{ 659 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.art", 660 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.oat", 661 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.vdex", 662 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.art", 663 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.oat", 664 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.vdex", 665 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art", 666 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat", 667 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex", 668 }, 669 installs: []normalizedInstall{ 670 { 671 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.art", 672 to: "/system/framework/x86_64/boot.art", 673 }, 674 { 675 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.oat", 676 to: "/system/framework/x86_64/boot.oat", 677 }, 678 { 679 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.art", 680 to: "/system/framework/x86_64/boot-core2.art", 681 }, 682 { 683 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.oat", 684 to: "/system/framework/x86_64/boot-core2.oat", 685 }, 686 { 687 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art", 688 to: "/system/framework/x86_64/boot-framework.art", 689 }, 690 { 691 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat", 692 to: "/system/framework/x86_64/boot-framework.oat", 693 }, 694 }, 695 vdexInstalls: []normalizedInstall{ 696 { 697 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.vdex", 698 to: "/system/framework/x86_64/boot.vdex", 699 }, 700 { 701 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.vdex", 702 to: "/system/framework/x86_64/boot-core2.vdex", 703 }, 704 { 705 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex", 706 to: "/system/framework/x86_64/boot-framework.vdex", 707 }, 708 }, 709 unstrippedInstalls: []normalizedInstall{ 710 { 711 from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86_64/boot.oat", 712 to: "/system/framework/x86_64/boot.oat", 713 }, 714 { 715 from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86_64/boot-core2.oat", 716 to: "/system/framework/x86_64/boot-core2.oat", 717 }, 718 { 719 from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86_64/boot-framework.oat", 720 to: "/system/framework/x86_64/boot-framework.oat", 721 }, 722 }, 723 licenseMetadataFile: expectedLicenseMetadataFile, 724 }, 725 { 726 archType: android.X86, 727 dexLocations: []string{ 728 "host/linux-x86/apex/com.android.art/javalib/core1.jar", 729 "host/linux-x86/apex/com.android.art/javalib/core2.jar", 730 "host/linux-x86/system/framework/framework.jar", 731 }, 732 dexLocationsDeps: []string{ 733 "host/linux-x86/apex/com.android.art/javalib/core1.jar", 734 "host/linux-x86/apex/com.android.art/javalib/core2.jar", 735 "host/linux-x86/system/framework/framework.jar", 736 }, 737 imagePathOnHost: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.art", 738 imagePathOnDevice: "/system/framework/x86/boot.art", 739 imagesDeps: []string{ 740 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.art", 741 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.oat", 742 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.vdex", 743 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.art", 744 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.oat", 745 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.vdex", 746 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art", 747 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat", 748 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex", 749 }, 750 installs: []normalizedInstall{ 751 { 752 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.art", 753 to: "/system/framework/x86/boot.art", 754 }, 755 { 756 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.oat", 757 to: "/system/framework/x86/boot.oat", 758 }, 759 { 760 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.art", 761 to: "/system/framework/x86/boot-core2.art", 762 }, 763 { 764 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.oat", 765 to: "/system/framework/x86/boot-core2.oat", 766 }, 767 { 768 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art", 769 to: "/system/framework/x86/boot-framework.art", 770 }, 771 { 772 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat", 773 to: "/system/framework/x86/boot-framework.oat", 774 }, 775 }, 776 vdexInstalls: []normalizedInstall{ 777 { 778 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.vdex", 779 to: "/system/framework/x86/boot.vdex", 780 }, 781 { 782 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.vdex", 783 to: "/system/framework/x86/boot-core2.vdex", 784 }, 785 { 786 from: "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex", 787 to: "/system/framework/x86/boot-framework.vdex", 788 }, 789 }, 790 unstrippedInstalls: []normalizedInstall{ 791 { 792 from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86/boot.oat", 793 to: "/system/framework/x86/boot.oat", 794 }, 795 { 796 from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86/boot-core2.oat", 797 to: "/system/framework/x86/boot-core2.oat", 798 }, 799 { 800 from: "out/soong/dexpreopt_arm64/dex_bootjars_unstripped/linux_glibc/system/framework/x86/boot-framework.oat", 801 to: "/system/framework/x86/boot-framework.oat", 802 }, 803 }, 804 licenseMetadataFile: expectedLicenseMetadataFile, 805 }, 806 }, 807 profileInstalls: []normalizedInstall{ 808 {from: "out/soong/dexpreopt_arm64/dex_bootjars/boot.bprof", to: "/system/etc/boot-image.bprof"}, 809 {from: "out/soong/dexpreopt_arm64/dex_bootjars/boot.prof", to: "/system/etc/boot-image.prof"}, 810 }, 811 profileLicenseMetadataFile: expectedLicenseMetadataFile, 812 } 813 814 checkBootImageConfig(t, imageConfig, mutated, expected) 815} 816 817// getMainlineImageConfig gets the framework bootImageConfig that was created during the test. 818func getMainlineImageConfig(result *android.TestResult) *bootImageConfig { 819 pathCtx := &android.TestPathContext{TestResult: result} 820 imageConfig := mainlineBootImageConfig(pathCtx) 821 return imageConfig 822} 823 824// CheckMainlineBootImageConfig checks the status of the fields of the bootImageConfig and 825// bootImageVariant structures that are returned from mainlineBootImageConfig. 826// 827// This is before any fields are mutated. 828func CheckMainlineBootImageConfig(t *testing.T, result *android.TestResult) { 829 expectedLicenseMetadataFile := "" 830 imageConfig := getMainlineImageConfig(result) 831 832 expected := &expectedConfig{ 833 name: "mainline", 834 stem: "boot", 835 dir: "out/soong/dexpreopt_arm64/dex_mainlinejars", 836 symbolsDir: "out/soong/dexpreopt_arm64/dex_mainlinejars_unstripped", 837 installDir: "system/framework", 838 profileInstallPathInApex: "", 839 modules: android.CreateTestConfiguredJarList([]string{ 840 "com.android.foo:framework-foo", 841 "com.android.bar:framework-bar", 842 }), 843 dexPaths: []string{ 844 "out/soong/dexpreopt_arm64/dex_mainlinejars_input/framework-foo.jar", 845 "out/soong/dexpreopt_arm64/dex_mainlinejars_input/framework-bar.jar", 846 }, 847 dexPathsDeps: []string{ 848 "out/soong/dexpreopt_arm64/dex_bootjars_input/core1.jar", 849 "out/soong/dexpreopt_arm64/dex_bootjars_input/core2.jar", 850 "out/soong/dexpreopt_arm64/dex_bootjars_input/framework.jar", 851 "out/soong/dexpreopt_arm64/dex_mainlinejars_input/framework-foo.jar", 852 "out/soong/dexpreopt_arm64/dex_mainlinejars_input/framework-bar.jar", 853 }, 854 zip: "out/soong/dexpreopt_arm64/dex_mainlinejars/mainline.zip", 855 variants: []*expectedVariant{ 856 { 857 archType: android.Arm64, 858 dexLocations: []string{ 859 "/apex/com.android.foo/javalib/framework-foo.jar", 860 "/apex/com.android.bar/javalib/framework-bar.jar", 861 }, 862 dexLocationsDeps: []string{ 863 "/apex/com.android.art/javalib/core1.jar", 864 "/apex/com.android.art/javalib/core2.jar", 865 "/system/framework/framework.jar", 866 "/apex/com.android.foo/javalib/framework-foo.jar", 867 "/apex/com.android.bar/javalib/framework-bar.jar", 868 }, 869 imagePathOnHost: "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art", 870 imagePathOnDevice: "/system/framework/arm64/boot-framework-foo.art", 871 imagesDeps: []string{ 872 "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art", 873 "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.oat", 874 "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.vdex", 875 }, 876 baseImages: []string{ 877 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.art", 878 }, 879 baseImagesDeps: []string{ 880 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.art", 881 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.oat", 882 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.vdex", 883 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.art", 884 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.oat", 885 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-core2.vdex", 886 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.art", 887 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.oat", 888 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot-framework.vdex", 889 }, 890 installs: []normalizedInstall{ 891 { 892 from: "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art", 893 to: "/system/framework/arm64/boot-framework-foo.art", 894 }, 895 { 896 from: "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.oat", 897 to: "/system/framework/arm64/boot-framework-foo.oat", 898 }, 899 }, 900 vdexInstalls: []normalizedInstall{ 901 { 902 from: "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.vdex", 903 to: "/system/framework/arm64/boot-framework-foo.vdex", 904 }, 905 }, 906 unstrippedInstalls: []normalizedInstall{ 907 { 908 from: "out/soong/dexpreopt_arm64/dex_mainlinejars_unstripped/android/system/framework/arm64/boot-framework-foo.oat", 909 to: "/system/framework/arm64/boot-framework-foo.oat", 910 }, 911 }, 912 licenseMetadataFile: expectedLicenseMetadataFile, 913 }, 914 { 915 archType: android.Arm, 916 dexLocations: []string{ 917 "/apex/com.android.foo/javalib/framework-foo.jar", 918 "/apex/com.android.bar/javalib/framework-bar.jar", 919 }, 920 dexLocationsDeps: []string{ 921 "/apex/com.android.art/javalib/core1.jar", 922 "/apex/com.android.art/javalib/core2.jar", 923 "/system/framework/framework.jar", 924 "/apex/com.android.foo/javalib/framework-foo.jar", 925 "/apex/com.android.bar/javalib/framework-bar.jar", 926 }, 927 imagePathOnHost: "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art", 928 imagePathOnDevice: "/system/framework/arm/boot-framework-foo.art", 929 imagesDeps: []string{ 930 "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art", 931 "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.oat", 932 "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.vdex", 933 }, 934 baseImages: []string{ 935 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.art", 936 }, 937 baseImagesDeps: []string{ 938 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.art", 939 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.oat", 940 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.vdex", 941 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.art", 942 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.oat", 943 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-core2.vdex", 944 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.art", 945 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.oat", 946 "out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot-framework.vdex", 947 }, 948 installs: []normalizedInstall{ 949 { 950 from: "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art", 951 to: "/system/framework/arm/boot-framework-foo.art", 952 }, 953 { 954 from: "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.oat", 955 to: "/system/framework/arm/boot-framework-foo.oat", 956 }, 957 }, 958 vdexInstalls: []normalizedInstall{ 959 { 960 from: "out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.vdex", 961 to: "/system/framework/arm/boot-framework-foo.vdex", 962 }, 963 }, 964 unstrippedInstalls: []normalizedInstall{ 965 { 966 from: "out/soong/dexpreopt_arm64/dex_mainlinejars_unstripped/android/system/framework/arm/boot-framework-foo.oat", 967 to: "/system/framework/arm/boot-framework-foo.oat", 968 }, 969 }, 970 licenseMetadataFile: expectedLicenseMetadataFile, 971 }, 972 { 973 archType: android.X86_64, 974 dexLocations: []string{ 975 "host/linux-x86/apex/com.android.foo/javalib/framework-foo.jar", 976 "host/linux-x86/apex/com.android.bar/javalib/framework-bar.jar", 977 }, 978 dexLocationsDeps: []string{ 979 "host/linux-x86/apex/com.android.art/javalib/core1.jar", 980 "host/linux-x86/apex/com.android.art/javalib/core2.jar", 981 "host/linux-x86/system/framework/framework.jar", 982 "host/linux-x86/apex/com.android.foo/javalib/framework-foo.jar", 983 "host/linux-x86/apex/com.android.bar/javalib/framework-bar.jar", 984 }, 985 imagePathOnHost: "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art", 986 imagePathOnDevice: "/system/framework/x86_64/boot-framework-foo.art", 987 imagesDeps: []string{ 988 "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art", 989 "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.oat", 990 "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex", 991 }, 992 baseImages: []string{ 993 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.art", 994 }, 995 baseImagesDeps: []string{ 996 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.art", 997 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.oat", 998 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.vdex", 999 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.art", 1000 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.oat", 1001 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-core2.vdex", 1002 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art", 1003 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat", 1004 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex", 1005 }, 1006 installs: []normalizedInstall{ 1007 { 1008 from: "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art", 1009 to: "/system/framework/x86_64/boot-framework-foo.art", 1010 }, 1011 { 1012 from: "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.oat", 1013 to: "/system/framework/x86_64/boot-framework-foo.oat", 1014 }, 1015 }, 1016 vdexInstalls: []normalizedInstall{ 1017 { 1018 from: "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex", 1019 to: "/system/framework/x86_64/boot-framework-foo.vdex", 1020 }, 1021 }, 1022 unstrippedInstalls: []normalizedInstall{ 1023 { 1024 from: "out/soong/dexpreopt_arm64/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86_64/boot-framework-foo.oat", 1025 to: "/system/framework/x86_64/boot-framework-foo.oat", 1026 }, 1027 }, 1028 licenseMetadataFile: expectedLicenseMetadataFile, 1029 }, 1030 { 1031 archType: android.X86, 1032 dexLocations: []string{ 1033 "host/linux-x86/apex/com.android.foo/javalib/framework-foo.jar", 1034 "host/linux-x86/apex/com.android.bar/javalib/framework-bar.jar", 1035 }, 1036 dexLocationsDeps: []string{ 1037 "host/linux-x86/apex/com.android.art/javalib/core1.jar", 1038 "host/linux-x86/apex/com.android.art/javalib/core2.jar", 1039 "host/linux-x86/system/framework/framework.jar", 1040 "host/linux-x86/apex/com.android.foo/javalib/framework-foo.jar", 1041 "host/linux-x86/apex/com.android.bar/javalib/framework-bar.jar", 1042 }, 1043 imagePathOnHost: "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art", 1044 imagePathOnDevice: "/system/framework/x86/boot-framework-foo.art", 1045 imagesDeps: []string{ 1046 "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art", 1047 "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.oat", 1048 "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.vdex", 1049 }, 1050 baseImages: []string{ 1051 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.art", 1052 }, 1053 baseImagesDeps: []string{ 1054 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.art", 1055 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.oat", 1056 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.vdex", 1057 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.art", 1058 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.oat", 1059 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-core2.vdex", 1060 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art", 1061 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat", 1062 "out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex", 1063 }, 1064 installs: []normalizedInstall{ 1065 { 1066 from: "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art", 1067 to: "/system/framework/x86/boot-framework-foo.art", 1068 }, 1069 { 1070 from: "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.oat", 1071 to: "/system/framework/x86/boot-framework-foo.oat", 1072 }, 1073 }, 1074 vdexInstalls: []normalizedInstall{ 1075 { 1076 from: "out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.vdex", 1077 to: "/system/framework/x86/boot-framework-foo.vdex", 1078 }, 1079 }, 1080 unstrippedInstalls: []normalizedInstall{ 1081 { 1082 from: "out/soong/dexpreopt_arm64/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86/boot-framework-foo.oat", 1083 to: "/system/framework/x86/boot-framework-foo.oat", 1084 }, 1085 }, 1086 licenseMetadataFile: expectedLicenseMetadataFile, 1087 }, 1088 }, 1089 profileInstalls: []normalizedInstall{}, 1090 profileLicenseMetadataFile: expectedLicenseMetadataFile, 1091 } 1092 1093 checkBootImageConfig(t, imageConfig, false, expected) 1094} 1095 1096// clearMutatedFields clears fields in the expectedConfig that correspond to fields in the 1097// bootImageConfig/bootImageVariant structs which are mutated outside the call to 1098// genBootImageConfigs. 1099// 1100// This allows the resulting expectedConfig struct to be compared against the values of those boot 1101// image structs immediately the call to genBootImageConfigs. If this is not called then the 1102// expectedConfig struct will expect the boot image structs to have been mutated by the ART 1103// bootclasspath_fragment and the platform_bootclasspath. 1104func clearMutatedFields(expected *expectedConfig) { 1105 expected.profileInstalls = nil 1106 expected.profileLicenseMetadataFile = "" 1107 for _, variant := range expected.variants { 1108 variant.installs = nil 1109 variant.vdexInstalls = nil 1110 variant.unstrippedInstalls = nil 1111 variant.licenseMetadataFile = "" 1112 } 1113} 1114 1115// checkBootImageConfig checks a boot image against the expected contents. 1116// 1117// If mutated is false then this will clear any mutated fields in the expected contents back to the 1118// zero value so that they will match the unmodified values in the boot image. 1119// 1120// It runs the checks in an image specific subtest of the current test. 1121func checkBootImageConfig(t *testing.T, imageConfig *bootImageConfig, mutated bool, expected *expectedConfig) { 1122 if !mutated { 1123 clearMutatedFields(expected) 1124 } 1125 1126 t.Run(imageConfig.name, func(t *testing.T) { 1127 nestedCheckBootImageConfig(t, imageConfig, expected) 1128 }) 1129} 1130 1131// nestedCheckBootImageConfig does the work of comparing the image against the expected values and 1132// is run in an image specific subtest. 1133func nestedCheckBootImageConfig(t *testing.T, imageConfig *bootImageConfig, expected *expectedConfig) { 1134 android.AssertStringEquals(t, "name", expected.name, imageConfig.name) 1135 android.AssertStringEquals(t, "stem", expected.stem, imageConfig.stem) 1136 android.AssertPathRelativeToTopEquals(t, "dir", expected.dir, imageConfig.dir) 1137 android.AssertPathRelativeToTopEquals(t, "symbolsDir", expected.symbolsDir, imageConfig.symbolsDir) 1138 android.AssertStringEquals(t, "installDir", expected.installDir, imageConfig.installDir) 1139 android.AssertStringEquals(t, "profileInstallPathInApex", expected.profileInstallPathInApex, imageConfig.profileInstallPathInApex) 1140 android.AssertDeepEquals(t, "modules", expected.modules, imageConfig.modules) 1141 android.AssertPathsRelativeToTopEquals(t, "dexPaths", expected.dexPaths, imageConfig.dexPaths.Paths()) 1142 android.AssertPathsRelativeToTopEquals(t, "dexPathsDeps", expected.dexPathsDeps, imageConfig.dexPathsDeps.Paths()) 1143 // dexPathsByModule is just a different representation of the other information in the config. 1144 android.AssertPathRelativeToTopEquals(t, "zip", expected.zip, imageConfig.zip) 1145 assertInstallsEqual(t, "profileInstalls", expected.profileInstalls, imageConfig.profileInstalls) 1146 android.AssertStringEquals(t, "profileLicenseMetadataFile", expected.profileLicenseMetadataFile, imageConfig.profileLicenseMetadataFile.RelativeToTop().String()) 1147 1148 android.AssertIntEquals(t, "variant count", 4, len(imageConfig.variants)) 1149 for i, variant := range imageConfig.variants { 1150 expectedVariant := expected.variants[i] 1151 t.Run(variant.target.Arch.ArchType.String(), func(t *testing.T) { 1152 android.AssertDeepEquals(t, "archType", expectedVariant.archType, variant.target.Arch.ArchType) 1153 android.AssertDeepEquals(t, "dexLocations", expectedVariant.dexLocations, variant.dexLocations) 1154 android.AssertDeepEquals(t, "dexLocationsDeps", expectedVariant.dexLocationsDeps, variant.dexLocationsDeps) 1155 android.AssertPathRelativeToTopEquals(t, "imagePathOnHost", expectedVariant.imagePathOnHost, variant.imagePathOnHost) 1156 android.AssertStringEquals(t, "imagePathOnDevice", expectedVariant.imagePathOnDevice, variant.imagePathOnDevice) 1157 android.AssertPathsRelativeToTopEquals(t, "imagesDeps", expectedVariant.imagesDeps, variant.imagesDeps.Paths()) 1158 android.AssertPathsRelativeToTopEquals(t, "baseImages", expectedVariant.baseImages, variant.baseImages.Paths()) 1159 android.AssertPathsRelativeToTopEquals(t, "baseImagesDeps", expectedVariant.baseImagesDeps, variant.baseImagesDeps) 1160 assertInstallsEqual(t, "installs", expectedVariant.installs, variant.installs) 1161 assertInstallsEqual(t, "vdexInstalls", expectedVariant.vdexInstalls, variant.vdexInstalls) 1162 assertInstallsEqual(t, "unstrippedInstalls", expectedVariant.unstrippedInstalls, variant.unstrippedInstalls) 1163 android.AssertStringEquals(t, "licenseMetadataFile", expectedVariant.licenseMetadataFile, variant.licenseMetadataFile.RelativeToTop().String()) 1164 }) 1165 } 1166} 1167 1168// CheckMutatedArtBootImageConfig checks the mutated fields in the bootImageConfig/Variant for ART. 1169func CheckMutatedArtBootImageConfig(t *testing.T, result *android.TestResult, expectedLicenseMetadataFile string) { 1170 checkArtBootImageConfig(t, result, true, expectedLicenseMetadataFile) 1171 1172 // Check the dexpreopt make vars. Do it in here as it depends on the expected license metadata 1173 // file at the moment and it 1174 checkDexpreoptMakeVars(t, result, expectedLicenseMetadataFile) 1175} 1176 1177// CheckMutatedFrameworkBootImageConfig checks the mutated fields in the bootImageConfig/Variant for framework. 1178func CheckMutatedFrameworkBootImageConfig(t *testing.T, result *android.TestResult, expectedLicenseMetadataFile string) { 1179 checkFrameworkBootImageConfig(t, result, true, expectedLicenseMetadataFile) 1180} 1181 1182// checkDexpreoptMakeVars checks the DEXPREOPT_ prefixed make vars produced by dexpreoptBootJars 1183// singleton. 1184func checkDexpreoptMakeVars(t *testing.T, result *android.TestResult, expectedLicenseMetadataFile string) { 1185 vars := result.MakeVarsForTesting(func(variable android.MakeVarVariable) bool { 1186 return strings.HasPrefix(variable.Name(), "DEXPREOPT_") 1187 }) 1188 1189 out := &strings.Builder{} 1190 for _, v := range vars { 1191 fmt.Fprintf(out, "%s=%s\n", v.Name(), android.StringRelativeToTop(result.Config, v.Value())) 1192 } 1193 format := ` 1194DEXPREOPT_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 1195DEXPREOPT_BOOTCLASSPATH_DEX_LOCATIONS=/apex/com.android.art/javalib/core1.jar /apex/com.android.art/javalib/core2.jar /system/framework/framework.jar 1196DEXPREOPT_BOOT_JARS_MODULES=com.android.art:core1:com.android.art:core2:platform:framework 1197DEXPREOPT_GEN=out/host/linux-x86/bin/dexpreopt_gen 1198DEXPREOPT_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 1199DEXPREOPT_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 1200DEXPREOPT_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 1201DEXPREOPT_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 1202DEXPREOPT_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 1203DEXPREOPT_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 1204DEXPREOPT_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 1205DEXPREOPT_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 1206DEXPREOPT_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 1207DEXPREOPT_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 1208DEXPREOPT_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 1209DEXPREOPT_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 1210DEXPREOPT_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 1211DEXPREOPT_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 1212DEXPREOPT_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 1213DEXPREOPT_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 1214DEXPREOPT_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 1215DEXPREOPT_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 1216DEXPREOPT_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 1217DEXPREOPT_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 1218DEXPREOPT_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 1219DEXPREOPT_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 1220DEXPREOPT_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 1221DEXPREOPT_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 1222DEXPREOPT_IMAGE_LICENSE_METADATA_art_arm=%[1]s 1223DEXPREOPT_IMAGE_LICENSE_METADATA_art_arm64=%[1]s 1224DEXPREOPT_IMAGE_LICENSE_METADATA_art_host_x86=%[1]s 1225DEXPREOPT_IMAGE_LICENSE_METADATA_art_host_x86_64=%[1]s 1226DEXPREOPT_IMAGE_LICENSE_METADATA_boot_arm=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic 1227DEXPREOPT_IMAGE_LICENSE_METADATA_boot_arm64=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic 1228DEXPREOPT_IMAGE_LICENSE_METADATA_boot_host_x86=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic 1229DEXPREOPT_IMAGE_LICENSE_METADATA_boot_host_x86_64=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic 1230DEXPREOPT_IMAGE_LICENSE_METADATA_mainline_arm=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic 1231DEXPREOPT_IMAGE_LICENSE_METADATA_mainline_arm64=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic 1232DEXPREOPT_IMAGE_LICENSE_METADATA_mainline_host_x86=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic 1233DEXPREOPT_IMAGE_LICENSE_METADATA_mainline_host_x86_64=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic 1234DEXPREOPT_IMAGE_LOCATIONS_ON_DEVICEart=/apex/art_boot_images/javalib/boot.art 1235DEXPREOPT_IMAGE_LOCATIONS_ON_DEVICEboot=/system/framework/boot.art 1236DEXPREOPT_IMAGE_LOCATIONS_ON_DEVICEmainline=/system/framework/boot.art:/system/framework/boot-framework-foo.art 1237DEXPREOPT_IMAGE_LOCATIONS_ON_HOSTart=out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/boot.art 1238DEXPREOPT_IMAGE_LOCATIONS_ON_HOSTboot=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/boot.art 1239DEXPREOPT_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 1240DEXPREOPT_IMAGE_NAMES=art boot mainline 1241DEXPREOPT_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 1242DEXPREOPT_IMAGE_PROFILE_LICENSE_METADATA=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic 1243DEXPREOPT_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 1244DEXPREOPT_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 1245DEXPREOPT_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 1246DEXPREOPT_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 1247DEXPREOPT_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 1248DEXPREOPT_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 1249DEXPREOPT_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 1250DEXPREOPT_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 1251DEXPREOPT_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 1252DEXPREOPT_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 1253DEXPREOPT_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 1254DEXPREOPT_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 1255DEXPREOPT_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 1256DEXPREOPT_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 1257DEXPREOPT_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 1258DEXPREOPT_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 1259DEXPREOPT_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 1260DEXPREOPT_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 1261DEXPREOPT_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 1262DEXPREOPT_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 1263DEXPREOPT_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 1264DEXPREOPT_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 1265DEXPREOPT_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 1266DEXPREOPT_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 1267DEXPREOPT_IMAGE_ZIP_art=out/soong/dexpreopt_arm64/dex_artjars/art.zip 1268DEXPREOPT_IMAGE_ZIP_boot=out/soong/dexpreopt_arm64/dex_bootjars/boot.zip 1269DEXPREOPT_IMAGE_ZIP_mainline=out/soong/dexpreopt_arm64/dex_mainlinejars/mainline.zip 1270DEXPREOPT_IMAGE_art_arm=out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art 1271DEXPREOPT_IMAGE_art_arm64=out/soong/dexpreopt_arm64/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art 1272DEXPREOPT_IMAGE_art_host_x86=out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art 1273DEXPREOPT_IMAGE_art_host_x86_64=out/soong/dexpreopt_arm64/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art 1274DEXPREOPT_IMAGE_boot_arm=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm/boot.art 1275DEXPREOPT_IMAGE_boot_arm64=out/soong/dexpreopt_arm64/dex_bootjars/android/system/framework/arm64/boot.art 1276DEXPREOPT_IMAGE_boot_host_x86=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86/boot.art 1277DEXPREOPT_IMAGE_boot_host_x86_64=out/soong/dexpreopt_arm64/dex_bootjars/linux_glibc/system/framework/x86_64/boot.art 1278DEXPREOPT_IMAGE_mainline_arm=out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art 1279DEXPREOPT_IMAGE_mainline_arm64=out/soong/dexpreopt_arm64/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art 1280DEXPREOPT_IMAGE_mainline_host_x86=out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art 1281DEXPREOPT_IMAGE_mainline_host_x86_64=out/soong/dexpreopt_arm64/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art 1282` 1283 expected := strings.TrimSpace(fmt.Sprintf(format, expectedLicenseMetadataFile)) 1284 actual := strings.TrimSpace(out.String()) 1285 android.AssertStringEquals(t, "vars", expected, actual) 1286} 1287