summaryrefslogtreecommitdiff
path: root/android/override_module.go
diff options
context:
space:
mode:
author Jooyung Han <jooyung@google.com> 2023-05-02 11:43:14 +0900
committer Jooyung Han <jooyung@google.com> 2023-05-04 10:36:27 +0900
commitebaa5733173f687ed14c0b7aedfa72bcc990138d (patch)
treedb0897a7975a9a2c8e98d03eff1591f993257eb4 /android/override_module.go
parentacb7f7a7ce75c9b9ee82f715468f7ad90cdba23c (diff)
Prebuilt replacing source should not change partition
This reveals unintended mistake (setting a wrong target partition) at build-time instead of runtime, which is much harder to debug. Bug: 280368661 Test: m nothing (soong test) Change-Id: Ic5e5e97ba918e24f7a59aceb405c2b105e28cccc
Diffstat (limited to 'android/override_module.go')
-rw-r--r--android/override_module.go18
1 files changed, 10 insertions, 8 deletions
diff --git a/android/override_module.go b/android/override_module.go
index 9e95c0f10..a4b7431f6 100644
--- a/android/override_module.go
+++ b/android/override_module.go
@@ -46,8 +46,8 @@ type OverrideModule interface {
// Internal funcs to handle interoperability between override modules and prebuilts.
// i.e. cases where an overriding module, too, is overridden by a prebuilt module.
- setOverriddenByPrebuilt(overridden bool)
- getOverriddenByPrebuilt() bool
+ setOverriddenByPrebuilt(prebuilt Module)
+ getOverriddenByPrebuilt() Module
// Directory containing the Blueprint definition of the overriding module
setModuleDir(string)
@@ -60,7 +60,7 @@ type OverrideModuleBase struct {
overridingProperties []interface{}
- overriddenByPrebuilt bool
+ overriddenByPrebuilt Module
moduleDir string
}
@@ -96,11 +96,11 @@ func (o *OverrideModuleBase) GetOverriddenModuleName() string {
return proptools.String(o.moduleProperties.Base)
}
-func (o *OverrideModuleBase) setOverriddenByPrebuilt(overridden bool) {
- o.overriddenByPrebuilt = overridden
+func (o *OverrideModuleBase) setOverriddenByPrebuilt(prebuilt Module) {
+ o.overriddenByPrebuilt = prebuilt
}
-func (o *OverrideModuleBase) getOverriddenByPrebuilt() bool {
+func (o *OverrideModuleBase) getOverriddenByPrebuilt() Module {
return o.overriddenByPrebuilt
}
@@ -281,7 +281,7 @@ func overrideModuleDepsMutator(ctx BottomUpMutatorContext) {
panic("PrebuiltDepTag leads to a non-prebuilt module " + dep.Name())
}
if prebuilt.UsePrebuilt() {
- module.setOverriddenByPrebuilt(true)
+ module.setOverriddenByPrebuilt(dep)
return
}
})
@@ -314,8 +314,10 @@ func performOverrideMutator(ctx BottomUpMutatorContext) {
ctx.AliasVariation(variants[0])
for i, o := range overrides {
mods[i+1].(OverridableModule).override(ctx, mods[i+1], o)
- if o.getOverriddenByPrebuilt() {
+ if prebuilt := o.getOverriddenByPrebuilt(); prebuilt != nil {
// The overriding module itself, too, is overridden by a prebuilt.
+ // Perform the same check for replacement
+ checkInvariantsForSourceAndPrebuilt(ctx, mods[i+1], prebuilt)
// Copy the flag and hide it in make
mods[i+1].ReplacedByPrebuilt()
}