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

This commit is contained in:
Spandan Das 2024-05-29 16:25:45 +00:00 committed by Gerrit Code Review
commit 2f9af23734
2 changed files with 44 additions and 0 deletions

View file

@ -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) {

View file

@ -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")
}