Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 11e1ae02 authored by Ulyana Trafimovich's avatar Ulyana Trafimovich Committed by Gerrit Code Review
Browse files

Merge "Include jacoco in the ART boot image if EMMA_INSTRUMENT_FRAMEWORK=true."

parents 46f60291 44561889
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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
+3 −11
Original line number Diff line number Diff line
@@ -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)))
	}
	if global.GenerateApexImage {
		// Create boot images for the JIT-zygote experiment.
		d.otherImages = append(d.otherImages, buildBootImage(ctx, apexBootImageConfig(ctx)))
+4 −0
Original line number Diff line number Diff line
@@ -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)))