Add logtags support to filesystem module
If build_logtags is set to true, etc/event-log-tags will be built by collecting all logtags files from all dependencies. Note that this is different from Makefile's current behavior that collects all logtags files, including ones from uninstalled modules. But the behavior is probably unintended, and ideally each partition image should have its own logtags, rather than putting all tags to /system. Bug: 336189540 Test: m aosp_cf_system_x86_64 Change-Id: I72b384cbb65e812af909eacd18799bd86f1dab13
This commit is contained in:
parent
17ce834beb
commit
b7b8457a60
1 changed files with 37 additions and 0 deletions
|
@ -127,6 +127,10 @@ type filesystemProperties struct {
|
|||
// the make version.
|
||||
Include_make_built_files string
|
||||
|
||||
// When set, builds etc/event-log-tags file by merging logtags from all dependencies.
|
||||
// Default is false
|
||||
Build_logtags *bool
|
||||
|
||||
Fsverity fsverityProperties
|
||||
}
|
||||
|
||||
|
@ -288,6 +292,7 @@ func (f *filesystem) buildImageUsingBuildImage(ctx android.ModuleContext) androi
|
|||
f.buildNonDepsFiles(ctx, builder, rootDir)
|
||||
f.addMakeBuiltFiles(ctx, builder, rootDir)
|
||||
f.buildFsverityMetadataFiles(ctx, builder, specs, rootDir, rebasedDir)
|
||||
f.buildEventLogtagsFile(ctx, builder, rebasedDir)
|
||||
|
||||
// run host_init_verifier
|
||||
// Ideally we should have a concept of pluggable linters that verify the generated image.
|
||||
|
@ -428,6 +433,7 @@ func (f *filesystem) buildCpioImage(ctx android.ModuleContext, compressed bool)
|
|||
|
||||
f.buildNonDepsFiles(ctx, builder, rootDir)
|
||||
f.buildFsverityMetadataFiles(ctx, builder, specs, rootDir, rebasedDir)
|
||||
f.buildEventLogtagsFile(ctx, builder, rebasedDir)
|
||||
|
||||
output := android.PathForModuleOut(ctx, f.installFileName()).OutputPath
|
||||
cmd := builder.Command().
|
||||
|
@ -485,6 +491,37 @@ func (f *filesystem) addMakeBuiltFiles(ctx android.ModuleContext, builder *andro
|
|||
Text(android.PathForArbitraryOutput(ctx, stagingDir).String())
|
||||
}
|
||||
|
||||
func (f *filesystem) buildEventLogtagsFile(ctx android.ModuleContext, builder *android.RuleBuilder, rebasedDir android.OutputPath) {
|
||||
if !proptools.Bool(f.properties.Build_logtags) {
|
||||
return
|
||||
}
|
||||
|
||||
logtagsFilePaths := make(map[string]bool)
|
||||
ctx.WalkDeps(func(child, parent android.Module) bool {
|
||||
if logtagsInfo, ok := android.OtherModuleProvider(ctx, child, android.LogtagsProviderKey); ok {
|
||||
for _, path := range logtagsInfo.Logtags {
|
||||
logtagsFilePaths[path.String()] = true
|
||||
}
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
||||
if len(logtagsFilePaths) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
etcPath := rebasedDir.Join(ctx, "etc")
|
||||
eventLogtagsPath := etcPath.Join(ctx, "event-log-tags")
|
||||
builder.Command().Text("mkdir").Flag("-p").Text(etcPath.String())
|
||||
cmd := builder.Command().BuiltTool("merge-event-log-tags").
|
||||
FlagWithArg("-o ", eventLogtagsPath.String()).
|
||||
FlagWithInput("-m ", android.MergedLogtagsPath(ctx))
|
||||
|
||||
for _, path := range android.SortedKeys(logtagsFilePaths) {
|
||||
cmd.Text(path)
|
||||
}
|
||||
}
|
||||
|
||||
type partition interface {
|
||||
PartitionType() string
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue