Introduce flat deps info list.
Compared to full list, flat list drops dependency edges and simply lists all transitive dependencies for a top-level apex bundle. Bug: 149622332 Test: m, manually build flatlist Change-Id: Ibd521c96b7aeab90b95965c1b524e0a0152aaf5a
This commit is contained in:
@@ -419,28 +419,41 @@ type ApexModuleDepInfo struct {
|
||||
type DepNameToDepInfoMap map[string]ApexModuleDepInfo
|
||||
|
||||
type ApexBundleDepsInfo struct {
|
||||
flatListPath OutputPath
|
||||
fullListPath OutputPath
|
||||
}
|
||||
|
||||
type ApexDepsInfoIntf interface {
|
||||
FlatListPath() Path
|
||||
FullListPath() Path
|
||||
}
|
||||
|
||||
func (d *ApexBundleDepsInfo) FlatListPath() Path {
|
||||
return d.flatListPath
|
||||
}
|
||||
|
||||
func (d *ApexBundleDepsInfo) FullListPath() Path {
|
||||
return d.fullListPath
|
||||
}
|
||||
|
||||
var _ ApexDepsInfoIntf = (*ApexBundleDepsInfo)(nil)
|
||||
|
||||
// Generate two module out files:
|
||||
// 1. FullList with transitive deps and their parents in the dep graph
|
||||
// 2. FlatList with a flat list of transitive deps
|
||||
func (d *ApexBundleDepsInfo) BuildDepsInfoLists(ctx ModuleContext, depInfos DepNameToDepInfoMap) {
|
||||
var content strings.Builder
|
||||
var fullContent strings.Builder
|
||||
var flatContent strings.Builder
|
||||
|
||||
fmt.Fprintf(&flatContent, "%s:\\n", ctx.ModuleName())
|
||||
for _, key := range FirstUniqueStrings(SortedStringKeys(depInfos)) {
|
||||
info := depInfos[key]
|
||||
toName := info.To
|
||||
if info.IsExternal {
|
||||
toName = toName + " (external)"
|
||||
}
|
||||
fmt.Fprintf(&content, "%s <- %s\\n", toName, strings.Join(SortedUniqueStrings(info.From), ", "))
|
||||
fmt.Fprintf(&fullContent, "%s <- %s\\n", toName, strings.Join(SortedUniqueStrings(info.From), ", "))
|
||||
fmt.Fprintf(&flatContent, " %s\\n", toName)
|
||||
}
|
||||
|
||||
d.fullListPath = PathForModuleOut(ctx, "depsinfo", "fulllist.txt").OutputPath
|
||||
@@ -449,7 +462,17 @@ func (d *ApexBundleDepsInfo) BuildDepsInfoLists(ctx ModuleContext, depInfos DepN
|
||||
Description: "Full Dependency Info",
|
||||
Output: d.fullListPath,
|
||||
Args: map[string]string{
|
||||
"content": content.String(),
|
||||
"content": fullContent.String(),
|
||||
},
|
||||
})
|
||||
|
||||
d.flatListPath = PathForModuleOut(ctx, "depsinfo", "flatlist.txt").OutputPath
|
||||
ctx.Build(pctx, BuildParams{
|
||||
Rule: WriteFile,
|
||||
Description: "Flat Dependency Info",
|
||||
Output: d.flatListPath,
|
||||
Args: map[string]string{
|
||||
"content": flatContent.String(),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user