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

Commit 36c329ce authored by Spandan Das's avatar Spandan Das
Browse files

Move coverage builds prebuilt special case to make

Having this in make has the following advantages
- allows this to be used in other places in make that are sensitive to
  prebuilt selection, e.g. apex boot jars that are present in source but
  not in prebuilt apexes
- collocates the various prebuilt special edge cases

Test: presubmits
Test: in internal, lunch cf_x86_64_phone-next-userdebug
Test: EMMA_INSTRUMENT_FRAMEWORK=true get_build_var PRODUCT_BUILD_IGNORE_APEX_CONTRIBUTION_CONTENTS
true

Bug: 308188056
Change-Id: Iea92311759f3bfe0ece7cb45fdb239c8a4db1dde
Merged-In: Iea92311759f3bfe0ece7cb45fdb239c8a4db1dde
parent 6f581637
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -15,8 +15,6 @@
package android

import (
	"strings"

	"github.com/google/blueprint"
	"github.com/google/blueprint/proptools"
)
@@ -115,15 +113,6 @@ func (a *allApexContributions) DepsMutator(ctx BottomUpMutatorContext) {
func (a *allApexContributions) SetPrebuiltSelectionInfoProvider(ctx BaseModuleContext) {
	addContentsToProvider := func(p *PrebuiltSelectionInfoMap, m *apexContributions) {
		for _, content := range m.Contents() {
			// Coverage builds for TARGET_RELEASE=foo should always build from source,
			// even if TARGET_RELEASE=foo uses prebuilt mainline modules.
			// This is necessary because the checked-in prebuilts were generated with
			// instrumentation turned off.
			//
			// Skip any prebuilt contents in coverage builds
			if strings.HasPrefix(content, "prebuilt_") && (ctx.Config().JavaCoverageEnabled() || ctx.DeviceConfig().NativeCoverageEnabled()) {
				continue
			}
			if !ctx.OtherModuleExists(content) && !ctx.Config().AllowMissingDependencies() {
				ctx.ModuleErrorf("%s listed in apex_contributions %s does not exist\n", content, m.Name())
			}
+0 −42
Original line number Diff line number Diff line
@@ -610,45 +610,3 @@ func TestPrebuiltErrorCannotListBothSourceAndPrebuiltInContributions(t *testing.
		}
		`, selectMainlineModuleContritbutions)
}

// Test that apex_contributions of prebuilt modules are ignored in coverage builds
func TestSourceIsSelectedInCoverageBuilds(t *testing.T) {
	prebuiltMainlineContributions := GroupFixturePreparers(
		FixtureModifyProductVariables(func(variables FixtureProductVariables) {
			variables.BuildFlags = map[string]string{
				"RELEASE_APEX_CONTRIBUTIONS_ADSERVICES": "my_prebuilt_apex_contributions",
			}
		}),
		FixtureMergeEnv(map[string]string{
			"EMMA_INSTRUMENT_FRAMEWORK": "true",
		}),
	)
	bp := `
		source {
			name: "foo",
		}
		prebuilt {
			name: "foo",
			srcs: ["prebuilt_file"],
		}
		apex_contributions {
			name: "my_prebuilt_apex_contributions",
			api_domain: "my_mainline_module",
			contents: [
			  "prebuilt_foo",
			],
		}
		all_apex_contributions {
			name: "all_apex_contributions",
		}
		`
	ctx := GroupFixturePreparers(
		PrepareForTestWithArchMutator,
		PrepareForTestWithPrebuilts,
		FixtureRegisterWithContext(registerTestPrebuiltModules),
		prebuiltMainlineContributions).RunTestWithBp(t, bp)
	source := ctx.ModuleForTests("foo", "android_common").Module()
	AssertBoolEquals(t, "Source should be preferred in coverage builds", true, !source.IsHideFromMake())
	prebuilt := ctx.ModuleForTests("prebuilt_foo", "android_common").Module()
	AssertBoolEquals(t, "Prebuilt should not be preferred in coverage builds", false, !prebuilt.IsHideFromMake())
}