From 9bacf56564d6d5bf50d6320a25a9ecb373ba2ef4 Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Wed, 28 Apr 2021 21:16:02 +0100 Subject: Extract logic to gather deps added for : pairs Trades having to traverse a module's direct dependencies multiple times for reusable code. While at the minute the amount of duplicated code is small (checking a tag and appending to a list) follow up changes will modify the gatherApexModulePairDepsWithTag module to improve error reporting greatly increasing the benefit of deduping. The cost of traversing a module's direct dependencies is very small as there will be only a very few dependencies. Bug: 177892522 Test: m nothing Change-Id: I16389102abd8038e1bfa52b63f4153bdf92ff553 --- java/bootclasspath.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'java/bootclasspath.go') diff --git a/java/bootclasspath.go b/java/bootclasspath.go index f1a0bb55c..02833ab66 100644 --- a/java/bootclasspath.go +++ b/java/bootclasspath.go @@ -73,6 +73,8 @@ func addDependencyOntoApexVariants(ctx android.BottomUpMutatorContext, propertyN // module. This adds dependencies onto the prebuilt and source modules with the specified name, // depending on which ones are available. Visiting must use isActiveModule to select the preferred // module when both source and prebuilt modules are available. +// +// Use gatherApexModulePairDepsWithTag to retrieve the dependencies. func addDependencyOntoApexModulePair(ctx android.BottomUpMutatorContext, apex string, name string, tag blueprint.DependencyTag) { var variations []blueprint.Variation if apex != "platform" && apex != "system_ext" { @@ -118,6 +120,19 @@ func reportMissingVariationDependency(ctx android.BottomUpMutatorContext, variat ctx.AddFarVariationDependencies(variations, nil, name) } +// gatherApexModulePairDepsWithTag returns the list of dependencies with the supplied tag that was +// added by addDependencyOntoApexModulePair. +func gatherApexModulePairDepsWithTag(ctx android.BaseModuleContext, tag blueprint.DependencyTag) []android.Module { + var modules []android.Module + ctx.VisitDirectDepsIf(isActiveModule, func(module android.Module) { + t := ctx.OtherModuleDependencyTag(module) + if t == tag { + modules = append(modules, module) + } + }) + return modules +} + // ApexVariantReference specifies a particular apex variant of a module. type ApexVariantReference struct { // The name of the module apex variant, i.e. the apex containing the module variant. -- cgit v1.2.3-59-g8ed1b