Merge "Override modules should always override source modules" into main am: 2f9af23734

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3106441

Change-Id: Ib33a4421e62c94bb426d1ef46c2e5f9312b78a88
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Spandan Das
2024-05-29 16:45:57 +00:00
committed by Automerger Merge Worker
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

@@ -11679,3 +11679,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")
}