Add GatherPackagingSpecsWithFilter
android_system_image used GatherPackagingSpecs and then filter only system modules. But some modules were omitted in this logic because there are modules which has the same relative path, so the later one is ignored even though its partition info is what we're looking for. So add filter logic in GatherPackagingSpecs to avoid this problem Bug: 323793487 Test: build android_system_image, and then check if it contains every module we want Change-Id: Iec8ae920736d3d1920eecad71ba0f8f2fe848e6c
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) {
|
||||
|
Reference in New Issue
Block a user