summaryrefslogtreecommitdiff
path: root/java/bootclasspath.go
diff options
context:
space:
mode:
author Paul Duffin <paulduffin@google.com> 2021-04-28 21:16:02 +0100
committer Paul Duffin <paulduffin@google.com> 2021-04-29 11:34:59 +0100
commit9bacf56564d6d5bf50d6320a25a9ecb373ba2ef4 (patch)
tree20c7e1e2c1f52171a5e323cd071e9d62539d825f /java/bootclasspath.go
parent110b0add9e9ec1ad87751c11975900af065ed5e8 (diff)
Extract logic to gather deps added for <apex>:<module> 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
Diffstat (limited to 'java/bootclasspath.go')
-rw-r--r--java/bootclasspath.go15
1 files changed, 15 insertions, 0 deletions
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.