Fix dangling rules on aosp_cf_x86_phone

aosp_cf_x86_phone uses SecondArchIsTranslated, which was leaving
a dangling rule from the oatdump rules to
out/soong/vsoc_x86/dex_bootjars/system/framework/arm/boot.art.
Consolidate the code to select targets for dexpreopting and use it
in more places to prevent references to boot images that were not
generated.

Test: m checkbuild
Change-Id: Ia4945a99ff5e575e759299106559c85f38489acc
This commit is contained in:
Colin Cross
2019-05-08 15:18:22 -07:00
parent 082640d6ee
commit c11e0c5a39
2 changed files with 29 additions and 12 deletions

View File

@@ -56,6 +56,7 @@ type bootImageConfig struct {
dexPaths android.WritablePaths dexPaths android.WritablePaths
dir android.OutputPath dir android.OutputPath
symbolsDir android.OutputPath symbolsDir android.OutputPath
targets []android.Target
images map[android.ArchType]android.OutputPath images map[android.ArchType]android.OutputPath
zip android.WritablePath zip android.WritablePath
} }
@@ -191,16 +192,9 @@ func buildBootImage(ctx android.SingletonContext, config bootImageConfig) *bootI
var allFiles android.Paths var allFiles android.Paths
if !global.DisablePreopt { if !global.DisablePreopt {
targets := ctx.Config().Targets[android.Android] for _, target := range image.targets {
if ctx.Config().SecondArchIsTranslated() { files := buildBootImageRuleForArch(ctx, image, target.Arch.ArchType, profile, missingDeps)
targets = targets[:1] allFiles = append(allFiles, files.Paths()...)
}
for _, target := range targets {
if target.NativeBridge == android.NativeBridgeDisabled {
files := buildBootImageRuleForArch(ctx, image, target.Arch.ArchType, profile, missingDeps)
allFiles = append(allFiles, files.Paths()...)
}
} }
} }

View File

@@ -72,6 +72,23 @@ func systemServerClasspath(ctx android.PathContext) []string {
var systemServerClasspathKey = android.NewOnceKey("systemServerClasspath") var systemServerClasspathKey = android.NewOnceKey("systemServerClasspath")
// dexpreoptTargets returns the list of targets that are relevant to dexpreopting, which excludes architectures
// supported through native bridge.
func dexpreoptTargets(ctx android.PathContext) []android.Target {
var targets []android.Target
for i, target := range ctx.Config().Targets[android.Android] {
if ctx.Config().SecondArchIsTranslated() && i > 0 {
break
}
if target.NativeBridge == android.NativeBridgeDisabled {
targets = append(targets, target)
}
}
return targets
}
// defaultBootImageConfig returns the bootImageConfig that will be used to dexpreopt modules. It is computed once the // defaultBootImageConfig returns the bootImageConfig that will be used to dexpreopt modules. It is computed once the
// first time it is called for any ctx.Config(), and returns the same slice for all future calls with the same // first time it is called for any ctx.Config(), and returns the same slice for all future calls with the same
// ctx.Config(). // ctx.Config().
@@ -113,7 +130,9 @@ func defaultBootImageConfig(ctx android.PathContext) bootImageConfig {
images := make(map[android.ArchType]android.OutputPath) images := make(map[android.ArchType]android.OutputPath)
zip := dir.Join(ctx, "boot.zip") zip := dir.Join(ctx, "boot.zip")
for _, target := range ctx.Config().Targets[android.Android] { targets := dexpreoptTargets(ctx)
for _, target := range targets {
images[target.Arch.ArchType] = dir.Join(ctx, images[target.Arch.ArchType] = dir.Join(ctx,
"system/framework", target.Arch.ArchType.String()).Join(ctx, "boot.art") "system/framework", target.Arch.ArchType.String()).Join(ctx, "boot.art")
} }
@@ -126,6 +145,7 @@ func defaultBootImageConfig(ctx android.PathContext) bootImageConfig {
dir: dir, dir: dir,
symbolsDir: symbolsDir, symbolsDir: symbolsDir,
images: images, images: images,
targets: targets,
zip: zip, zip: zip,
} }
}).(bootImageConfig) }).(bootImageConfig)
@@ -168,7 +188,9 @@ func apexBootImageConfig(ctx android.PathContext) bootImageConfig {
symbolsDir := android.PathForOutput(ctx, ctx.Config().DeviceName(), "dex_apexjars_unstripped") symbolsDir := android.PathForOutput(ctx, ctx.Config().DeviceName(), "dex_apexjars_unstripped")
images := make(map[android.ArchType]android.OutputPath) images := make(map[android.ArchType]android.OutputPath)
for _, target := range ctx.Config().Targets[android.Android] { targets := dexpreoptTargets(ctx)
for _, target := range targets {
images[target.Arch.ArchType] = dir.Join(ctx, images[target.Arch.ArchType] = dir.Join(ctx,
"system/framework", target.Arch.ArchType.String(), "apex.art") "system/framework", target.Arch.ArchType.String(), "apex.art")
} }
@@ -180,6 +202,7 @@ func apexBootImageConfig(ctx android.PathContext) bootImageConfig {
dexPaths: bootDexPaths, dexPaths: bootDexPaths,
dir: dir, dir: dir,
symbolsDir: symbolsDir, symbolsDir: symbolsDir,
targets: targets,
images: images, images: images,
} }
}).(bootImageConfig) }).(bootImageConfig)