Merge "Add GatherPackagingSpecsWithFilter" into main
This commit is contained in:
@@ -85,6 +85,7 @@ type PackageModule interface {
|
||||
|
||||
// GatherPackagingSpecs gathers PackagingSpecs of transitive dependencies.
|
||||
GatherPackagingSpecs(ctx ModuleContext) map[string]PackagingSpec
|
||||
GatherPackagingSpecsWithFilter(ctx ModuleContext, filter func(PackagingSpec) bool) map[string]PackagingSpec
|
||||
|
||||
// CopyDepsToZip zips the built artifacts of the dependencies into the given zip file and
|
||||
// returns zip entries in it. This is expected to be called in GenerateAndroidBuildActions,
|
||||
@@ -221,14 +222,18 @@ func (p *PackagingBase) AddDeps(ctx BottomUpMutatorContext, depTag blueprint.Dep
|
||||
}
|
||||
}
|
||||
|
||||
// See PackageModule.GatherPackagingSpecs
|
||||
func (p *PackagingBase) GatherPackagingSpecs(ctx ModuleContext) map[string]PackagingSpec {
|
||||
func (p *PackagingBase) GatherPackagingSpecsWithFilter(ctx ModuleContext, filter func(PackagingSpec) bool) map[string]PackagingSpec {
|
||||
m := make(map[string]PackagingSpec)
|
||||
ctx.VisitDirectDeps(func(child Module) {
|
||||
if pi, ok := ctx.OtherModuleDependencyTag(child).(PackagingItem); !ok || !pi.IsPackagingItem() {
|
||||
return
|
||||
}
|
||||
for _, ps := range child.TransitivePackagingSpecs() {
|
||||
if filter != nil {
|
||||
if !filter(ps) {
|
||||
continue
|
||||
}
|
||||
}
|
||||
if _, ok := m[ps.relPathInPackage]; !ok {
|
||||
m[ps.relPathInPackage] = ps
|
||||
}
|
||||
@@ -237,6 +242,11 @@ func (p *PackagingBase) GatherPackagingSpecs(ctx ModuleContext) map[string]Packa
|
||||
return m
|
||||
}
|
||||
|
||||
// See PackageModule.GatherPackagingSpecs
|
||||
func (p *PackagingBase) GatherPackagingSpecs(ctx ModuleContext) map[string]PackagingSpec {
|
||||
return p.GatherPackagingSpecsWithFilter(ctx, nil)
|
||||
}
|
||||
|
||||
// CopySpecsToDir is a helper that will add commands to the rule builder to copy the PackagingSpec
|
||||
// entries into the specified directory.
|
||||
func (p *PackagingBase) CopySpecsToDir(ctx ModuleContext, builder *RuleBuilder, specs map[string]PackagingSpec, dir WritablePath) (entries []string) {
|
||||
|
@@ -50,8 +50,8 @@ type filesystem struct {
|
||||
// Function that builds extra files under the root directory and returns the files
|
||||
buildExtraFiles func(ctx android.ModuleContext, root android.OutputPath) android.OutputPaths
|
||||
|
||||
// Function that filters PackagingSpecs returned by PackagingBase.GatherPackagingSpecs()
|
||||
filterPackagingSpecs func(specs map[string]android.PackagingSpec)
|
||||
// Function that filters PackagingSpec in PackagingBase.GatherPackagingSpecs()
|
||||
filterPackagingSpec func(spec android.PackagingSpec) bool
|
||||
|
||||
output android.OutputPath
|
||||
installDir android.InstallPath
|
||||
@@ -493,10 +493,7 @@ func (f *filesystem) SignedOutputPath() android.Path {
|
||||
// Note that "apex" module installs its contents to "apex"(fake partition) as well
|
||||
// for symbol lookup by imitating "activated" paths.
|
||||
func (f *filesystem) gatherFilteredPackagingSpecs(ctx android.ModuleContext) map[string]android.PackagingSpec {
|
||||
specs := f.PackagingBase.GatherPackagingSpecs(ctx)
|
||||
if f.filterPackagingSpecs != nil {
|
||||
f.filterPackagingSpecs(specs)
|
||||
}
|
||||
specs := f.PackagingBase.GatherPackagingSpecsWithFilter(ctx, f.filterPackagingSpec)
|
||||
return specs
|
||||
}
|
||||
|
||||
|
@@ -37,7 +37,7 @@ func systemImageFactory() android.Module {
|
||||
module := &systemImage{}
|
||||
module.AddProperties(&module.properties)
|
||||
module.filesystem.buildExtraFiles = module.buildExtraFiles
|
||||
module.filesystem.filterPackagingSpecs = module.filterPackagingSpecs
|
||||
module.filesystem.filterPackagingSpec = module.filterPackagingSpec
|
||||
initFilesystemModule(&module.filesystem)
|
||||
return module
|
||||
}
|
||||
@@ -73,10 +73,6 @@ func (s *systemImage) buildLinkerConfigFile(ctx android.ModuleContext, root andr
|
||||
// Filter the result of GatherPackagingSpecs to discard items targeting outside "system" partition.
|
||||
// Note that "apex" module installs its contents to "apex"(fake partition) as well
|
||||
// for symbol lookup by imitating "activated" paths.
|
||||
func (s *systemImage) filterPackagingSpecs(specs map[string]android.PackagingSpec) {
|
||||
for k, ps := range specs {
|
||||
if ps.Partition() != "system" {
|
||||
delete(specs, k)
|
||||
}
|
||||
}
|
||||
func (s *systemImage) filterPackagingSpec(ps android.PackagingSpec) bool {
|
||||
return ps.Partition() == "system"
|
||||
}
|
||||
|
Reference in New Issue
Block a user