mixed builds: Make apex's GetBazelLabel return the label of the override_apex, if applicable.
And add test1_com.android.tzdata to prod allowlist.
Fixes: 261054570
Bug: 261054570
Test: mkcompare
Change-Id: I314a4e44ade958ba9a91f71430d76175d734579e
diff --git a/android/allowlists/allowlists.go b/android/allowlists/allowlists.go
index 5218a58..63fe462 100644
--- a/android/allowlists/allowlists.go
+++ b/android/allowlists/allowlists.go
@@ -1364,7 +1364,10 @@
// Bazel prod-mode allowlist. Modules in this list are built by Bazel
// in either prod mode or staging mode.
- ProdMixedBuildsEnabledList = []string{"com.android.tzdata"}
+ ProdMixedBuildsEnabledList = []string{
+ "com.android.tzdata",
+ "test1_com.android.tzdata",
+ }
// Staging-mode allowlist. Modules in this list are only built
// by Bazel with --bazel-mode-staging. This list should contain modules
diff --git a/android/bazel_paths.go b/android/bazel_paths.go
index 3b159d3..1ecb0af 100644
--- a/android/bazel_paths.go
+++ b/android/bazel_paths.go
@@ -455,6 +455,9 @@
func bp2buildModuleLabel(ctx BazelConversionContext, module blueprint.Module) string {
moduleName := ctx.OtherModuleName(module)
moduleDir := ctx.OtherModuleDir(module)
+ if moduleDir == Bp2BuildTopLevel {
+ moduleDir = ""
+ }
return fmt.Sprintf("//%s:%s", moduleDir, moduleName)
}
diff --git a/android/override_module.go b/android/override_module.go
index 51e74d4..2d30a85 100644
--- a/android/override_module.go
+++ b/android/override_module.go
@@ -28,6 +28,7 @@
// module based on it.
import (
+ "fmt"
"sort"
"sync"
@@ -48,6 +49,10 @@
// i.e. cases where an overriding module, too, is overridden by a prebuilt module.
setOverriddenByPrebuilt(overridden bool)
getOverriddenByPrebuilt() bool
+
+ // Directory containing the Blueprint definition of the overriding module
+ setModuleDir(string)
+ ModuleDir() string
}
// Base module struct for override module types
@@ -57,6 +62,8 @@
overridingProperties []interface{}
overriddenByPrebuilt bool
+
+ moduleDir string
}
type OverrideModuleProperties struct {
@@ -66,6 +73,14 @@
// TODO(jungjw): Add an optional override_name bool flag.
}
+func (o *OverrideModuleBase) setModuleDir(d string) {
+ o.moduleDir = d
+}
+
+func (o *OverrideModuleBase) ModuleDir() string {
+ return o.moduleDir
+}
+
func (o *OverrideModuleBase) getOverridingProperties() []interface{} {
return o.overridingProperties
}
@@ -108,6 +123,7 @@
override(ctx BaseModuleContext, o OverrideModule)
GetOverriddenBy() string
+ GetOverriddenByModuleDir() string
setOverridesProperty(overridesProperties *[]string)
@@ -117,7 +133,8 @@
}
type overridableModuleProperties struct {
- OverriddenBy string `blueprint:"mutated"`
+ OverriddenBy string `blueprint:"mutated"`
+ OverriddenByModuleDir string `blueprint:"mutated"`
}
// Base module struct for overridable module types
@@ -196,6 +213,7 @@
*b.overridesProperty = append(*b.overridesProperty, ctx.ModuleName())
}
b.overridableModuleProperties.OverriddenBy = o.Name()
+ b.overridableModuleProperties.OverriddenByModuleDir = o.ModuleDir()
}
// GetOverriddenBy returns the name of the override module that has overridden this module.
@@ -206,6 +224,10 @@
return b.overridableModuleProperties.OverriddenBy
}
+func (b *OverridableModuleBase) GetOverriddenByModuleDir() string {
+ return b.overridableModuleProperties.OverriddenByModuleDir
+}
+
func (b *OverridableModuleBase) OverridablePropertiesDepsMutator(ctx BottomUpMutatorContext) {
}
@@ -254,7 +276,9 @@
})
baseModule := ctx.AddDependency(ctx.Module(), overrideBaseDepTag, *module.getOverrideModuleProperties().Base)[0]
if o, ok := baseModule.(OverridableModule); ok {
- o.addOverride(ctx.Module().(OverrideModule))
+ overrideModule := ctx.Module().(OverrideModule)
+ overrideModule.setModuleDir(ctx.ModuleDir())
+ o.addOverride(overrideModule)
}
}
}
@@ -314,11 +338,35 @@
// ModuleNameWithPossibleOverride returns the name of the OverrideModule that overrides the current
// variant of this OverridableModule, or ctx.ModuleName() if this module is not an OverridableModule
// or if this variant is not overridden.
-func ModuleNameWithPossibleOverride(ctx ModuleContext) string {
+func ModuleNameWithPossibleOverride(ctx BazelConversionContext) string {
if overridable, ok := ctx.Module().(OverridableModule); ok {
if o := overridable.GetOverriddenBy(); o != "" {
return o
}
}
- return ctx.ModuleName()
+ return ctx.OtherModuleName(ctx.Module())
+}
+
+// ModuleDirWithPossibleOverride returns the dir of the OverrideModule that overrides the current
+// variant of this OverridableModule, or ctx.ModuleName() if this module is not an OverridableModule
+// or if this variant is not overridden.
+func moduleDirWithPossibleOverride(ctx BazelConversionContext) string {
+ if overridable, ok := ctx.Module().(OverridableModule); ok {
+ if o := overridable.GetOverriddenByModuleDir(); o != "" {
+ return o
+ }
+ }
+ return ctx.OtherModuleDir(ctx.Module())
+}
+
+// MaybeBp2buildLabelOfOverridingModule returns the bazel label of the
+// overriding module of an OverridableModule (e.g. override_apex label of a base
+// apex), or the module's label itself if not overridden.
+func MaybeBp2buildLabelOfOverridingModule(ctx BazelConversionContext) string {
+ moduleName := ModuleNameWithPossibleOverride(ctx)
+ moduleDir := moduleDirWithPossibleOverride(ctx)
+ if moduleDir == Bp2BuildTopLevel {
+ moduleDir = ""
+ }
+ return fmt.Sprintf("//%s:%s", moduleDir, moduleName)
}