From 9f7c8985cc04a2f1e5417df9debe2ca54e986fcd Mon Sep 17 00:00:00 2001 From: dbabkin Date: Wed, 21 Mar 2018 05:50:11 -0700 Subject: Split PackageProvider to TargetProvider and CachingPackageLocator No need to pass instance of PackageProvider there as two more general interfaces required separately. RELNOTES:none PiperOrigin-RevId: 189895042 --- .../build/lib/query2/BlazeQueryEnvironment.java | 18 ++++++---- .../build/lib/query2/QueryEnvironmentFactory.java | 41 +++++++++++++++++++++- 2 files changed, 51 insertions(+), 8 deletions(-) (limited to 'src/main/java/com') diff --git a/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java index 421c5b57eb..b7c0a1d915 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java @@ -28,14 +28,15 @@ import com.google.devtools.build.lib.events.ExtendedEventHandler; import com.google.devtools.build.lib.graph.Digraph; import com.google.devtools.build.lib.graph.Node; import com.google.devtools.build.lib.packages.Attribute; +import com.google.devtools.build.lib.packages.CachingPackageLocator; import com.google.devtools.build.lib.packages.NoSuchThingException; import com.google.devtools.build.lib.packages.OutputFile; import com.google.devtools.build.lib.packages.Package; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.Target; -import com.google.devtools.build.lib.pkgcache.PackageProvider; import com.google.devtools.build.lib.pkgcache.TargetEdgeObserver; import com.google.devtools.build.lib.pkgcache.TargetPatternEvaluator; +import com.google.devtools.build.lib.pkgcache.TargetProvider; import com.google.devtools.build.lib.pkgcache.TransitivePackageLoader; import com.google.devtools.build.lib.query2.engine.Callback; import com.google.devtools.build.lib.query2.engine.DigraphQueryEvalResult; @@ -72,7 +73,8 @@ public class BlazeQueryEnvironment extends AbstractBlazeQueryEnvironment private final Map> resolvedTargetPatterns = new HashMap<>(); private final TargetPatternEvaluator targetPatternEvaluator; private final TransitivePackageLoader transitivePackageLoader; - private final PackageProvider packageProvider; + private final TargetProvider targetProvider; + private final CachingPackageLocator cachingPackageLocator; private final Digraph graph = new Digraph<>(); private final ErrorPrintingTargetEdgeErrorObserver errorObserver; private final LabelVisitor labelVisitor; @@ -94,7 +96,8 @@ public class BlazeQueryEnvironment extends AbstractBlazeQueryEnvironment */ BlazeQueryEnvironment( TransitivePackageLoader transitivePackageLoader, - PackageProvider packageProvider, + TargetProvider targetProvider, + CachingPackageLocator cachingPackageLocator, TargetPatternEvaluator targetPatternEvaluator, boolean keepGoing, boolean strictScope, @@ -106,10 +109,11 @@ public class BlazeQueryEnvironment extends AbstractBlazeQueryEnvironment super(keepGoing, strictScope, labelFilter, eventHandler, settings, extraFunctions); this.targetPatternEvaluator = targetPatternEvaluator; this.transitivePackageLoader = transitivePackageLoader; - this.packageProvider = packageProvider; + this.targetProvider = targetProvider; + this.cachingPackageLocator = cachingPackageLocator; this.errorObserver = new ErrorPrintingTargetEdgeErrorObserver(this.eventHandler); this.loadingPhaseThreads = loadingPhaseThreads; - this.labelVisitor = new LabelVisitor(packageProvider, dependencyFilter); + this.labelVisitor = new LabelVisitor(targetProvider, dependencyFilter); } @Override @@ -368,7 +372,7 @@ public class BlazeQueryEnvironment extends AbstractBlazeQueryEnvironment private Target getTargetOrThrow(Label label) throws NoSuchThingException, SkyframeRestartQueryException, InterruptedException { - Target target = packageProvider.getTarget(eventHandler, label); + Target target = targetProvider.getTarget(eventHandler, label); if (target == null) { throw new SkyframeRestartQueryException(); } @@ -416,7 +420,7 @@ public class BlazeQueryEnvironment extends AbstractBlazeQueryEnvironment // Also add the BUILD file of the subinclude. if (buildFiles) { Path buildFileForSubinclude = - packageProvider.getBuildFileForPackage( + cachingPackageLocator.getBuildFileForPackage( subincludeTarget.getLabel().getLabel().getPackageIdentifier()); if (buildFileForSubinclude != null) { Label buildFileLabel = diff --git a/src/main/java/com/google/devtools/build/lib/query2/QueryEnvironmentFactory.java b/src/main/java/com/google/devtools/build/lib/query2/QueryEnvironmentFactory.java index da08aa2798..1790528b38 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/QueryEnvironmentFactory.java +++ b/src/main/java/com/google/devtools/build/lib/query2/QueryEnvironmentFactory.java @@ -17,11 +17,13 @@ import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.events.ExtendedEventHandler; +import com.google.devtools.build.lib.packages.CachingPackageLocator; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.pkgcache.PackageProvider; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; import com.google.devtools.build.lib.pkgcache.TargetPatternEvaluator; +import com.google.devtools.build.lib.pkgcache.TargetProvider; import com.google.devtools.build.lib.pkgcache.TransitivePackageLoader; import com.google.devtools.build.lib.query2.engine.QueryEnvironment.QueryFunction; import com.google.devtools.build.lib.query2.engine.QueryEnvironment.Setting; @@ -49,6 +51,42 @@ public class QueryEnvironmentFactory { Iterable functions, @Nullable PathPackageLocator packagePath, boolean blockUniverseEvaluationErrors) { + return create( + transitivePackageLoader, + graphFactory, + packageProvider, + packageProvider, + targetPatternEvaluator, + keepGoing, + strictScope, + orderedResults, + universeScope, + loadingPhaseThreads, + labelFilter, + eventHandler, + settings, + functions, + packagePath, + blockUniverseEvaluationErrors); + } + + public AbstractBlazeQueryEnvironment create( + TransitivePackageLoader transitivePackageLoader, + WalkableGraphFactory graphFactory, + TargetProvider targetProvider, + CachingPackageLocator cachingPackageLocator, + TargetPatternEvaluator targetPatternEvaluator, + boolean keepGoing, + boolean strictScope, + boolean orderedResults, + List universeScope, + int loadingPhaseThreads, + Predicate