summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ulyana Trafimovich <skvadrik@google.com> 2020-01-08 10:58:24 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2020-01-08 10:58:24 +0000
commit11e1ae025f45e47d53f52a839ed659bc8f877fb8 (patch)
tree3b522f0744bab56fd1ae86d4171057b70484727e
parent46f60291f34c69bd941c13d793bd59369ef7f292 (diff)
parent4456188939ebadae8e38cc15c8f99bbbf1c989f8 (diff)
Merge "Include jacoco in the ART boot image if EMMA_INSTRUMENT_FRAMEWORK=true."
-rw-r--r--apex/apex.go6
-rw-r--r--java/dexpreopt_bootjars.go14
-rw-r--r--java/dexpreopt_config.go4
3 files changed, 13 insertions, 11 deletions
diff --git a/apex/apex.go b/apex/apex.go
index 9867a7a81..eb9614284 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -699,6 +699,12 @@ func (a *apexBundle) DepsMutator(ctx android.BottomUpMutatorContext) {
ctx.AddFarVariationDependencies(ctx.Config().AndroidCommonTarget.Variations(),
javaLibTag, a.properties.Java_libs...)
+ // With EMMA_INSTRUMENT_FRAMEWORK=true the ART boot image includes jacoco library.
+ if a.artApex && ctx.Config().IsEnvTrue("EMMA_INSTRUMENT_FRAMEWORK") {
+ ctx.AddFarVariationDependencies(ctx.Config().AndroidCommonTarget.Variations(),
+ javaLibTag, "jacocoagent")
+ }
+
if String(a.properties.Key) == "" {
ctx.ModuleErrorf("key is missing")
return
diff --git a/java/dexpreopt_bootjars.go b/java/dexpreopt_bootjars.go
index 11aa27112..fe5bed501 100644
--- a/java/dexpreopt_bootjars.go
+++ b/java/dexpreopt_bootjars.go
@@ -178,12 +178,6 @@ func skipDexpreoptBootJars(ctx android.PathContext) bool {
return false
}
-func skipDexpreoptArtBootJars(ctx android.BuilderContext) bool {
- // with EMMA_INSTRUMENT_FRAMEWORK=true ART boot class path libraries have dependencies on framework,
- // therefore dexpreopt ART libraries cannot be dexpreopted in isolation => no ART boot image
- return ctx.Config().IsEnvTrue("EMMA_INSTRUMENT_FRAMEWORK")
-}
-
type dexpreoptBootJars struct {
defaultBootImage *bootImage
otherImages []*bootImage
@@ -193,7 +187,7 @@ type dexpreoptBootJars struct {
// Accessor function for the apex package. Returns nil if dexpreopt is disabled.
func DexpreoptedArtApexJars(ctx android.BuilderContext) map[android.ArchType]android.OutputPaths {
- if skipDexpreoptBootJars(ctx) || skipDexpreoptArtBootJars(ctx) {
+ if skipDexpreoptBootJars(ctx) {
return nil
}
return artBootImageConfig(ctx).imagesDeps
@@ -222,10 +216,8 @@ func (d *dexpreoptBootJars) GenerateBuildActions(ctx android.SingletonContext) {
// Always create the default boot image first, to get a unique profile rule for all images.
d.defaultBootImage = buildBootImage(ctx, defaultBootImageConfig(ctx))
- if !skipDexpreoptArtBootJars(ctx) {
- // Create boot image for the ART apex (build artifacts are accessed via the global boot image config).
- d.otherImages = append(d.otherImages, buildBootImage(ctx, artBootImageConfig(ctx)))
- }
+ // Create boot image for the ART apex (build artifacts are accessed via the global boot image config).
+ d.otherImages = append(d.otherImages, buildBootImage(ctx, artBootImageConfig(ctx)))
if global.GenerateApexImage {
// Create boot images for the JIT-zygote experiment.
d.otherImages = append(d.otherImages, buildBootImage(ctx, apexBootImageConfig(ctx)))
diff --git a/java/dexpreopt_config.go b/java/dexpreopt_config.go
index b3af911fb..35748b8d1 100644
--- a/java/dexpreopt_config.go
+++ b/java/dexpreopt_config.go
@@ -136,6 +136,10 @@ func genBootImageConfigs(ctx android.PathContext) map[string]*bootImageConfig {
deviceDir := android.PathForOutput(ctx, ctx.Config().DeviceName())
artModules := global.ArtApexJars
+ // With EMMA_INSTRUMENT_FRAMEWORK=true the Core libraries depend on jacoco.
+ if ctx.Config().IsEnvTrue("EMMA_INSTRUMENT_FRAMEWORK") {
+ artModules = append(artModules, "jacocoagent")
+ }
frameworkModules := android.RemoveListFromList(global.BootJars,
concat(artModules, getJarsFromApexJarPairs(global.UpdatableBootJars)))