Add phonies as provider instead of updaing a global map.

Bug: 358425833
Test: Manually compare the generated mk and ninja files.
Change-Id: Ie74b620fc680ca2fc0d7836e88361ab3bdb87c49
This commit is contained in:
Yu Liu
2024-08-19 20:00:32 +00:00
parent 67478b347e
commit 54513622f7
4 changed files with 26 additions and 6 deletions

View File

@@ -1797,6 +1797,7 @@ func (m *ModuleBase) GenerateBuildActions(blueprintCtx blueprint.ModuleContext)
bp: blueprintCtx, bp: blueprintCtx,
baseModuleContext: m.baseModuleContextFactory(blueprintCtx), baseModuleContext: m.baseModuleContextFactory(blueprintCtx),
variables: make(map[string]string), variables: make(map[string]string),
phonies: make(map[string]Paths),
} }
setContainerInfo(ctx) setContainerInfo(ctx)
@@ -2052,6 +2053,11 @@ func (m *ModuleBase) GenerateBuildActions(blueprintCtx blueprint.ModuleContext)
SetProvider(ctx, OutputFilesProvider, m.outputFiles) SetProvider(ctx, OutputFilesProvider, m.outputFiles)
} }
if len(ctx.phonies) > 0 {
SetProvider(ctx, ModulePhonyProvider, ModulePhonyInfo{
Phonies: ctx.phonies,
})
}
buildComplianceMetadataProvider(ctx, m) buildComplianceMetadataProvider(ctx, m)
} }

View File

@@ -361,7 +361,7 @@ func (m *moduleContext) Build(pctx PackageContext, params BuildParams) {
} }
func (m *moduleContext) Phony(name string, deps ...Path) { func (m *moduleContext) Phony(name string, deps ...Path) {
addPhony(m.config, name, deps...) m.phonies[name] = append(m.phonies[name], deps...)
} }
func (m *moduleContext) GetMissingDependencies() []string { func (m *moduleContext) GetMissingDependencies() []string {

View File

@@ -26,14 +26,20 @@ type phonyMap map[string]Paths
var phonyMapLock sync.Mutex var phonyMapLock sync.Mutex
func getPhonyMap(config Config) phonyMap { type ModulePhonyInfo struct {
Phonies map[string]Paths
}
var ModulePhonyProvider = blueprint.NewProvider[ModulePhonyInfo]()
func getSingletonPhonyMap(config Config) phonyMap {
return config.Once(phonyMapOnceKey, func() interface{} { return config.Once(phonyMapOnceKey, func() interface{} {
return make(phonyMap) return make(phonyMap)
}).(phonyMap) }).(phonyMap)
} }
func addPhony(config Config, name string, deps ...Path) { func addSingletonPhony(config Config, name string, deps ...Path) {
phonyMap := getPhonyMap(config) phonyMap := getSingletonPhonyMap(config)
phonyMapLock.Lock() phonyMapLock.Lock()
defer phonyMapLock.Unlock() defer phonyMapLock.Unlock()
phonyMap[name] = append(phonyMap[name], deps...) phonyMap[name] = append(phonyMap[name], deps...)
@@ -47,7 +53,15 @@ type phonySingleton struct {
var _ SingletonMakeVarsProvider = (*phonySingleton)(nil) var _ SingletonMakeVarsProvider = (*phonySingleton)(nil)
func (p *phonySingleton) GenerateBuildActions(ctx SingletonContext) { func (p *phonySingleton) GenerateBuildActions(ctx SingletonContext) {
p.phonyMap = getPhonyMap(ctx.Config()) p.phonyMap = getSingletonPhonyMap(ctx.Config())
ctx.VisitAllModules(func(m Module) {
if info, ok := OtherModuleProvider(ctx, m, ModulePhonyProvider); ok {
for k, v := range info.Phonies {
p.phonyMap[k] = append(p.phonyMap[k], v...)
}
}
})
p.phonyList = SortedKeys(p.phonyMap) p.phonyList = SortedKeys(p.phonyMap)
for _, phony := range p.phonyList { for _, phony := range p.phonyList {
p.phonyMap[phony] = SortedUniquePaths(p.phonyMap[phony]) p.phonyMap[phony] = SortedUniquePaths(p.phonyMap[phony])

View File

@@ -177,7 +177,7 @@ func (s *singletonContextAdaptor) Build(pctx PackageContext, params BuildParams)
} }
func (s *singletonContextAdaptor) Phony(name string, deps ...Path) { func (s *singletonContextAdaptor) Phony(name string, deps ...Path) {
addPhony(s.Config(), name, deps...) addSingletonPhony(s.Config(), name, deps...)
} }
func (s *singletonContextAdaptor) SetOutDir(pctx PackageContext, value string) { func (s *singletonContextAdaptor) SetOutDir(pctx PackageContext, value string) {