Convert ndkSingleton, apexDepsInfoSingleton, allTeamsSingleton,
apexPrebuiltInfo to use ModuleProxy.
Bug: 377723687
Test: Unit tests and compare the ninja and mk files generated.
Change-Id: I77b05e8b54843bfa8b91376a6796c2b5c69be3c1
diff --git a/android/all_teams.go b/android/all_teams.go
index 3b20107..8b55ade 100644
--- a/android/all_teams.go
+++ b/android/all_teams.go
@@ -78,19 +78,19 @@
t.teams = make(map[string]teamProperties)
t.teams_for_mods = make(map[string]moduleTeamAndTestInfo)
- ctx.VisitAllModules(func(module Module) {
+ ctx.VisitAllModuleProxies(func(module ModuleProxy) {
bpFile := ctx.BlueprintFile(module)
// Package Modules and Team Modules are stored in a map so we can look them up by name for
// modules without a team.
- if pack, ok := module.(*packageModule); ok {
+ if pack, ok := OtherModuleProvider(ctx, module, PackageInfoProvider); ok {
// Packages don't have names, use the blueprint file as the key. we can't get qualifiedModuleId in t context.
pkgKey := bpFile
- t.packages[pkgKey] = pack.properties
+ t.packages[pkgKey] = pack.Properties
return
}
- if team, ok := module.(*teamModule); ok {
- t.teams[team.Name()] = team.properties
+ if team, ok := OtherModuleProvider(ctx, module, TeamInfoProvider); ok {
+ t.teams[module.Name()] = team.Properties
return
}
@@ -116,7 +116,7 @@
testOnly: testModInfo.TestOnly,
topLevelTestTarget: testModInfo.TopLevelTarget,
kind: ctx.ModuleType(module),
- teamName: module.base().Team(),
+ teamName: OtherModuleProviderOrDefault(ctx, module, CommonModuleInfoKey).Team,
}
t.teams_for_mods[module.Name()] = entry
diff --git a/android/apex.go b/android/apex.go
index 91fa2c7..4e92f44 100644
--- a/android/apex.go
+++ b/android/apex.go
@@ -646,6 +646,13 @@
FullListPath() Path
}
+type ApexBundleDepsData struct {
+ Updatable bool
+ FlatListPath Path
+}
+
+var ApexBundleDepsDataProvider = blueprint.NewProvider[ApexBundleDepsData]()
+
func (d *ApexBundleDepsInfo) FlatListPath() Path {
return d.flatListPath
}
diff --git a/android/module.go b/android/module.go
index 984f037..d196481 100644
--- a/android/module.go
+++ b/android/module.go
@@ -1940,6 +1940,7 @@
VintfFragmentModuleNames []string
Dists []Dist
ExportedToMake bool
+ Team string
}
type ApiLevelOrPlatform struct {
@@ -2300,6 +2301,7 @@
VintfFragmentModuleNames: m.module.VintfFragmentModuleNames(ctx),
Dists: m.Dists(),
ExportedToMake: m.ExportedToMake(),
+ Team: m.Team(),
}
if mm, ok := m.module.(interface {
MinSdkVersion(ctx EarlyModuleContext) ApiLevel
diff --git a/android/package.go b/android/package.go
index 385326e..42f17b1 100644
--- a/android/package.go
+++ b/android/package.go
@@ -38,6 +38,12 @@
Default_team *string `android:"path"`
}
+type PackageInfo struct {
+ Properties packageProperties
+}
+
+var PackageInfoProvider = blueprint.NewProvider[PackageInfo]()
+
type packageModule struct {
ModuleBase
@@ -60,6 +66,10 @@
Enabled: true,
PrimaryLicensesProperty: p.primaryLicensesProperty,
})
+
+ ctx.SetProvider(PackageInfoProvider, PackageInfo{
+ Properties: p.properties,
+ })
}
func (p *packageModule) qualifiedModuleId(ctx BaseModuleContext) qualifiedModuleName {
diff --git a/android/singleton.go b/android/singleton.go
index a03ea74..96b1022 100644
--- a/android/singleton.go
+++ b/android/singleton.go
@@ -290,6 +290,10 @@
return s.SingletonContext.ModuleType(getWrappedModule(module))
}
+func (s *singletonContextAdaptor) BlueprintFile(module blueprint.Module) string {
+ return s.SingletonContext.BlueprintFile(getWrappedModule(module))
+}
+
func (s *singletonContextAdaptor) VisitAllModulesBlueprint(visit func(blueprint.Module)) {
s.SingletonContext.VisitAllModules(visit)
}
diff --git a/android/team.go b/android/team.go
index c273dc6..ad37f28 100644
--- a/android/team.go
+++ b/android/team.go
@@ -32,6 +32,12 @@
Trendy_team_id *string `json:"trendy_team_id"`
}
+type TeamInfo struct {
+ Properties teamProperties
+}
+
+var TeamInfoProvider = blueprint.NewProvider[TeamInfo]()
+
type teamModule struct {
ModuleBase
DefaultableModuleBase
@@ -48,7 +54,11 @@
// Real work is done for the module that depends on us.
// If needed, the team can serialize the config to json/proto file as well.
-func (t *teamModule) GenerateAndroidBuildActions(ctx ModuleContext) {}
+func (t *teamModule) GenerateAndroidBuildActions(ctx ModuleContext) {
+ SetProvider(ctx, TeamInfoProvider, TeamInfo{
+ Properties: t.properties,
+ })
+}
func (t *teamModule) TrendyTeamId(ctx ModuleContext) string {
return *t.properties.Trendy_team_id