diff options
-rw-r--r-- | android/aconfig_providers.go | 2 | ||||
-rw-r--r-- | android/base_module_context.go | 90 | ||||
-rw-r--r-- | android/container.go | 2 | ||||
-rw-r--r-- | android/license_metadata.go | 6 | ||||
-rw-r--r-- | android/module.go | 6 | ||||
-rw-r--r-- | android/paths.go | 4 | ||||
-rw-r--r-- | apex/apex.go | 10 | ||||
-rw-r--r-- | genrule/genrule.go | 12 | ||||
-rw-r--r-- | java/base.go | 2 |
9 files changed, 42 insertions, 92 deletions
diff --git a/android/aconfig_providers.go b/android/aconfig_providers.go index d2a9622e3..b902f8be5 100644 --- a/android/aconfig_providers.go +++ b/android/aconfig_providers.go @@ -107,7 +107,7 @@ func aconfigUpdateAndroidBuildActions(ctx ModuleContext) { mergedAconfigFiles := make(map[string]Paths) mergedModeInfos := make(map[string]ModeInfo) - ctx.VisitDirectDepsIgnoreBlueprint(func(module Module) { + ctx.VisitDirectDeps(func(module Module) { if aconfig_dep, ok := OtherModuleProvider(ctx, module, CodegenInfoProvider); ok && len(aconfig_dep.ModeInfos) > 0 { maps.Copy(mergedModeInfos, aconfig_dep.ModeInfos) } diff --git a/android/base_module_context.go b/android/base_module_context.go index bb8137720..e895d76f6 100644 --- a/android/base_module_context.go +++ b/android/base_module_context.go @@ -113,31 +113,22 @@ type BaseModuleContext interface { // the first DependencyTag. GetDirectDep(name string) (blueprint.Module, blueprint.DependencyTag) - // VisitDirectDepsBlueprint calls visit for each direct dependency. If there are multiple - // direct dependencies on the same module visit will be called multiple times on that module - // and OtherModuleDependencyTag will return a different tag for each. - // - // The Module passed to the visit function should not be retained outside of the visit - // function, it may be invalidated by future mutators. - VisitDirectDepsBlueprint(visit func(blueprint.Module)) - - // VisitDirectDepsIgnoreBlueprint calls visit for each direct dependency. If there are multiple + // VisitDirectDeps calls visit for each direct dependency. If there are multiple // direct dependencies on the same module visit will be called multiple times on that module - // and OtherModuleDependencyTag will return a different tag for each. It silently ignores any - // dependencies that are not an android.Module. + // and OtherModuleDependencyTag will return a different tag for each. It raises an error if any of the + // dependencies are disabled. // // The Module passed to the visit function should not be retained outside of the visit // function, it may be invalidated by future mutators. - VisitDirectDepsIgnoreBlueprint(visit func(Module)) + VisitDirectDeps(visit func(Module)) // VisitDirectDeps calls visit for each direct dependency. If there are multiple // direct dependencies on the same module visit will be called multiple times on that module - // and OtherModuleDependencyTag will return a different tag for each. It raises an error if any of the - // dependencies are not an android.Module. + // and OtherModuleDependencyTag will return a different tag for each. // // The Module passed to the visit function should not be retained outside of the visit // function, it may be invalidated by future mutators. - VisitDirectDeps(visit func(Module)) + VisitDirectDepsAllowDisabled(visit func(Module)) VisitDirectDepsWithTag(tag blueprint.DependencyTag, visit func(Module)) @@ -164,17 +155,6 @@ type BaseModuleContext interface { // invalidated by future mutators. WalkDeps(visit func(child, parent Module) bool) - // WalkDepsBlueprint calls visit for each transitive dependency, traversing the dependency - // tree in top down order. visit may be called multiple times for the same (child, parent) - // pair if there are multiple direct dependencies between the child and parent with different - // tags. OtherModuleDependencyTag will return the tag for the currently visited - // (child, parent) pair. If visit returns false WalkDeps will not continue recursing down - // to child. - // - // The Modules passed to the visit function should not be retained outside of the visit function, they may be - // invalidated by future mutators. - WalkDepsBlueprint(visit func(blueprint.Module, blueprint.Module) bool) - // GetWalkPath is supposed to be called in visit function passed in WalkDeps() // and returns a top-down dependency path from a start module to current child module. GetWalkPath() []Module @@ -319,7 +299,7 @@ func (t AlwaysAllowDisabledModuleDependencyTag) AllowDisabledModuleDependency(Mo return true } -func (b *baseModuleContext) validateAndroidModule(module blueprint.Module, tag blueprint.DependencyTag, strict bool, ignoreBlueprint bool) Module { +func (b *baseModuleContext) validateAndroidModule(module blueprint.Module, tag blueprint.DependencyTag, strict bool) Module { aModule, _ := module.(Module) if !strict { @@ -327,10 +307,7 @@ func (b *baseModuleContext) validateAndroidModule(module blueprint.Module, tag b } if aModule == nil { - if !ignoreBlueprint { - b.ModuleErrorf("module %q (%#v) not an android module", b.OtherModuleName(module), tag) - } - return nil + panic(fmt.Errorf("module %q (%#v) not an android module", b.OtherModuleName(module), tag)) } if !aModule.Enabled(b) { @@ -353,15 +330,8 @@ type dep struct { func (b *baseModuleContext) getDirectDepsInternal(name string, tag blueprint.DependencyTag) []dep { var deps []dep - b.VisitDirectDepsBlueprint(func(module blueprint.Module) { - if aModule, _ := module.(Module); aModule != nil { - if aModule.base().BaseModuleName() == name { - returnedTag := b.bp.OtherModuleDependencyTag(aModule) - if tag == nil || returnedTag == tag { - deps = append(deps, dep{aModule, returnedTag}) - } - } - } else if b.bp.OtherModuleName(module) == name { + b.VisitDirectDeps(func(module Module) { + if module.base().BaseModuleName() == name { returnedTag := b.bp.OtherModuleDependencyTag(module) if tag == nil || returnedTag == tag { deps = append(deps, dep{module, returnedTag}) @@ -404,11 +374,9 @@ func (b *baseModuleContext) getDirectDepFirstTag(name string) (blueprint.Module, func (b *baseModuleContext) GetDirectDepsWithTag(tag blueprint.DependencyTag) []Module { var deps []Module - b.VisitDirectDepsBlueprint(func(module blueprint.Module) { - if aModule, _ := module.(Module); aModule != nil { - if b.bp.OtherModuleDependencyTag(aModule) == tag { - deps = append(deps, aModule) - } + b.VisitDirectDeps(func(module Module) { + if b.bp.OtherModuleDependencyTag(module) == tag { + deps = append(deps, module) } }) return deps @@ -421,30 +389,24 @@ func (b *baseModuleContext) GetDirectDep(name string) (blueprint.Module, bluepri return b.getDirectDepFirstTag(name) } -func (b *baseModuleContext) VisitDirectDepsBlueprint(visit func(blueprint.Module)) { - b.bp.VisitDirectDeps(visit) -} - func (b *baseModuleContext) VisitDirectDeps(visit func(Module)) { - b.visitDirectDeps(visit, false) -} - -func (b *baseModuleContext) VisitDirectDepsIgnoreBlueprint(visit func(Module)) { - b.visitDirectDeps(visit, true) -} - -func (b *baseModuleContext) visitDirectDeps(visit func(Module), ignoreBlueprint bool) { b.bp.VisitDirectDeps(func(module blueprint.Module) { - if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps, ignoreBlueprint); aModule != nil { + if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps); aModule != nil { visit(aModule) } }) } +func (b *baseModuleContext) VisitDirectDepsAllowDisabled(visit func(Module)) { + b.bp.VisitDirectDeps(func(module blueprint.Module) { + visit(module.(Module)) + }) +} + func (b *baseModuleContext) VisitDirectDepsWithTag(tag blueprint.DependencyTag, visit func(Module)) { b.bp.VisitDirectDeps(func(module blueprint.Module) { if b.bp.OtherModuleDependencyTag(module) == tag { - if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps, false); aModule != nil { + if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps); aModule != nil { visit(aModule) } } @@ -455,7 +417,7 @@ func (b *baseModuleContext) VisitDirectDepsIf(pred func(Module) bool, visit func b.bp.VisitDirectDepsIf( // pred func(module blueprint.Module) bool { - if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps, false); aModule != nil { + if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps); aModule != nil { return pred(aModule) } else { return false @@ -469,7 +431,7 @@ func (b *baseModuleContext) VisitDirectDepsIf(pred func(Module) bool, visit func func (b *baseModuleContext) VisitDepsDepthFirst(visit func(Module)) { b.bp.VisitDepsDepthFirst(func(module blueprint.Module) { - if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps, false); aModule != nil { + if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps); aModule != nil { visit(aModule) } }) @@ -479,7 +441,7 @@ func (b *baseModuleContext) VisitDepsDepthFirstIf(pred func(Module) bool, visit b.bp.VisitDepsDepthFirstIf( // pred func(module blueprint.Module) bool { - if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps, false); aModule != nil { + if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps); aModule != nil { return pred(aModule) } else { return false @@ -491,10 +453,6 @@ func (b *baseModuleContext) VisitDepsDepthFirstIf(pred func(Module) bool, visit }) } -func (b *baseModuleContext) WalkDepsBlueprint(visit func(blueprint.Module, blueprint.Module) bool) { - b.bp.WalkDeps(visit) -} - func (b *baseModuleContext) WalkDeps(visit func(Module, Module) bool) { b.walkPath = []Module{b.Module()} b.tagPath = []blueprint.DependencyTag{} diff --git a/android/container.go b/android/container.go index c048d6c73..2a3777b30 100644 --- a/android/container.go +++ b/android/container.go @@ -479,7 +479,7 @@ func setContainerInfo(ctx ModuleContext) { func checkContainerViolations(ctx ModuleContext) { if _, ok := ctx.Module().(InstallableModule); ok { containersInfo, _ := getContainerModuleInfo(ctx, ctx.Module()) - ctx.VisitDirectDepsIgnoreBlueprint(func(dep Module) { + ctx.VisitDirectDeps(func(dep Module) { if !dep.Enabled(ctx) { return } diff --git a/android/license_metadata.go b/android/license_metadata.go index 0ac975fa2..f92563862 100644 --- a/android/license_metadata.go +++ b/android/license_metadata.go @@ -63,11 +63,7 @@ func buildLicenseMetadata(ctx *moduleContext, licenseMetadataFile WritablePath) var allDepOutputFiles Paths var allDepMetadataDepSets []*DepSet[Path] - ctx.VisitDirectDepsBlueprint(func(bpdep blueprint.Module) { - dep, _ := bpdep.(Module) - if dep == nil { - return - } + ctx.VisitDirectDeps(func(dep Module) { if !dep.Enabled(ctx) { return } diff --git a/android/module.go b/android/module.go index d6c129ac8..1866d7a9d 100644 --- a/android/module.go +++ b/android/module.go @@ -1861,10 +1861,8 @@ func (m *ModuleBase) GenerateBuildActions(blueprintCtx blueprint.ModuleContext) if m.Enabled(ctx) { // ensure all direct android.Module deps are enabled - ctx.VisitDirectDepsBlueprint(func(bm blueprint.Module) { - if m, ok := bm.(Module); ok { - ctx.validateAndroidModule(bm, ctx.OtherModuleDependencyTag(m), ctx.baseModuleContext.strictVisitDeps, false) - } + ctx.VisitDirectDeps(func(m Module) { + ctx.validateAndroidModule(m, ctx.OtherModuleDependencyTag(m), ctx.baseModuleContext.strictVisitDeps) }) if m.Device() { diff --git a/android/paths.go b/android/paths.go index 0d94f03e6..1c8258ede 100644 --- a/android/paths.go +++ b/android/paths.go @@ -92,7 +92,7 @@ func GlobFiles(ctx EarlyModulePathContext, globPattern string, excludes []string type ModuleWithDepsPathContext interface { EarlyModulePathContext OtherModuleProviderContext - VisitDirectDepsBlueprint(visit func(blueprint.Module)) + VisitDirectDeps(visit func(Module)) OtherModuleDependencyTag(m blueprint.Module) blueprint.DependencyTag HasMutatorFinished(mutatorName string) bool } @@ -598,7 +598,7 @@ func GetModuleFromPathDep(ctx ModuleWithDepsPathContext, moduleName, tag string) // create the tag here as was supplied to create the tag when the dependency was added so that // this finds the matching dependency module. expectedTag := sourceOrOutputDepTag(moduleName, tag) - ctx.VisitDirectDepsBlueprint(func(module blueprint.Module) { + ctx.VisitDirectDeps(func(module Module) { depTag := ctx.OtherModuleDependencyTag(module) if depTag == expectedTag { found = module diff --git a/apex/apex.go b/apex/apex.go index 79f1ad610..5f4d823ff 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -1935,12 +1935,12 @@ func (vctx *visitorContext) normalizeFileInfo(mctx android.ModuleContext) { }) } -func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, child, parent blueprint.Module) bool { +func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, child, parent android.Module) bool { depTag := ctx.OtherModuleDependencyTag(child) if _, ok := depTag.(android.ExcludeFromApexContentsTag); ok { return false } - if mod, ok := child.(android.Module); ok && !mod.Enabled(ctx) { + if !child.Enabled(ctx) { return false } depName := ctx.OtherModuleName(child) @@ -2284,7 +2284,7 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) { checkDuplicate: a.shouldCheckDuplicate(ctx), unwantedTransitiveDeps: a.properties.Unwanted_transitive_deps, } - ctx.WalkDepsBlueprint(func(child, parent blueprint.Module) bool { return a.depVisitor(&vctx, ctx, child, parent) }) + ctx.WalkDeps(func(child, parent android.Module) bool { return a.depVisitor(&vctx, ctx, child, parent) }) vctx.normalizeFileInfo(ctx) if a.privateKeyFile == nil { if ctx.Config().AllowMissingDependencies() { @@ -2685,7 +2685,7 @@ func (a *apexBundle) checkClasspathFragments(ctx android.ModuleContext) { func (a *apexBundle) checkJavaStableSdkVersion(ctx android.ModuleContext) { // Visit direct deps only. As long as we guarantee top-level deps are using stable SDKs, // java's checkLinkType guarantees correct usage for transitive deps - ctx.VisitDirectDepsBlueprint(func(module blueprint.Module) { + ctx.VisitDirectDeps(func(module android.Module) { tag := ctx.OtherModuleDependencyTag(module) switch tag { case javaLibTag, androidAppTag: @@ -2778,7 +2778,7 @@ func (a *apexBundle) checkApexAvailability(ctx android.ModuleContext) { // checkStaticExecutable ensures that executables in an APEX are not static. func (a *apexBundle) checkStaticExecutables(ctx android.ModuleContext) { - ctx.VisitDirectDepsBlueprint(func(module blueprint.Module) { + ctx.VisitDirectDeps(func(module android.Module) { if ctx.OtherModuleDependencyTag(module) != executableTag { return } diff --git a/genrule/genrule.go b/genrule/genrule.go index a48038bac..878f6da50 100644 --- a/genrule/genrule.go +++ b/genrule/genrule.go @@ -313,16 +313,14 @@ func (g *Module) generateCommonBuildActions(ctx android.ModuleContext) { if len(g.properties.Tools) > 0 { seenTools := make(map[string]bool) - ctx.VisitDirectDepsBlueprint(func(module blueprint.Module) { + ctx.VisitDirectDepsAllowDisabled(func(module android.Module) { switch tag := ctx.OtherModuleDependencyTag(module).(type) { case hostToolDependencyTag: tool := ctx.OtherModuleName(module) - if m, ok := module.(android.Module); ok { - // Necessary to retrieve any prebuilt replacement for the tool, since - // toolDepsMutator runs too late for the prebuilt mutators to have - // replaced the dependency. - module = android.PrebuiltGetPreferred(ctx, m) - } + // Necessary to retrieve any prebuilt replacement for the tool, since + // toolDepsMutator runs too late for the prebuilt mutators to have + // replaced the dependency. + module = android.PrebuiltGetPreferred(ctx, module) switch t := module.(type) { case android.HostToolProvider: diff --git a/java/base.go b/java/base.go index 129d7220f..0d0550561 100644 --- a/java/base.go +++ b/java/base.go @@ -2700,7 +2700,7 @@ func collectDirectDepsProviders(ctx android.ModuleContext) (result *JarJarProvid module := ctx.Module() moduleName := module.Name() - ctx.VisitDirectDepsIgnoreBlueprint(func(m android.Module) { + ctx.VisitDirectDeps(func(m android.Module) { tag := ctx.OtherModuleDependencyTag(m) // This logic mirrors that in (*Module).collectDeps above. There are several places // where we explicitly return RenameUseExclude, even though it is the default, to |