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

Commit 2f9af237 authored by Spandan Das's avatar Spandan Das Committed by Gerrit Code Review
Browse files

Merge "Override modules should always override source modules" into main

parents a03e16f1 0b28fa0b
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -253,6 +253,15 @@ type overrideBaseDependencyTag struct {

var overrideBaseDepTag overrideBaseDependencyTag

// Override module should always override the source module.
// Overrides are implemented as a variant of the overridden module, and the build actions are created in the
// module context of the overridden module.
// If we replace override module with the prebuilt of the overridden module, `GenerateAndroidBuildActions` for
// the override module will have a very different meaning.
func (tag overrideBaseDependencyTag) ReplaceSourceWithPrebuilt() bool {
	return false
}

// Adds dependency on the base module to the overriding module so that they can be visited in the
// next phase.
func overrideModuleDepsMutator(ctx BottomUpMutatorContext) {
+35 −0
Original line number Diff line number Diff line
@@ -11671,3 +11671,38 @@ func TestApexMinSdkVersionOverride(t *testing.T) {
	checkMinSdkVersion(t, overridingModuleDifferentMinSdkVersion, "31")
	checkHasDep(t, ctx, overridingModuleDifferentMinSdkVersion.Module(), javalibApex31Variant.Module())
}

func TestOverrideApexWithPrebuiltApexPreferred(t *testing.T) {
	context := android.GroupFixturePreparers(
		android.PrepareForIntegrationTestWithAndroid,
		PrepareForTestWithApexBuildComponents,
		android.FixtureMergeMockFs(android.MockFS{
			"system/sepolicy/apex/foo-file_contexts": nil,
		}),
	)
	res := context.RunTestWithBp(t, `
		apex {
			name: "foo",
			key: "myapex.key",
			apex_available_name: "com.android.foo",
			variant_version: "0",
			updatable: false,
		}
		apex_key {
			name: "myapex.key",
			public_key: "testkey.avbpubkey",
			private_key: "testkey.pem",
		}
		prebuilt_apex {
			name: "foo",
			src: "foo.apex",
			prefer: true,
		}
		override_apex {
			name: "myoverrideapex",
			base: "foo",
		}
	`)

	java.CheckModuleHasDependency(t, res.TestContext, "myoverrideapex", "android_common_myoverrideapex_myoverrideapex", "foo")
}