Transform Blaze query to be able to work in streamed mode.
--
MOS_MIGRATED_REVID=107249788
diff --git a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
index 8c409fd..54219cc 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
@@ -47,9 +47,13 @@
import com.google.devtools.build.lib.pkgcache.TargetPatternEvaluator;
import com.google.devtools.build.lib.profiler.Profiler;
import com.google.devtools.build.lib.query2.engine.AllRdepsFunction;
+import com.google.devtools.build.lib.query2.engine.Callback;
import com.google.devtools.build.lib.query2.engine.QueryEvalResult;
import com.google.devtools.build.lib.query2.engine.QueryException;
import com.google.devtools.build.lib.query2.engine.QueryExpression;
+import com.google.devtools.build.lib.query2.engine.QueryUtil.AbstractUniquifier;
+import com.google.devtools.build.lib.query2.engine.QueryUtil.AggregateAllCallback;
+import com.google.devtools.build.lib.query2.engine.Uniquifier;
import com.google.devtools.build.lib.skyframe.FileValue;
import com.google.devtools.build.lib.skyframe.GraphBackedRecursivePackageProvider;
import com.google.devtools.build.lib.skyframe.PackageLookupValue;
@@ -299,6 +303,24 @@
}
@Override
+ public void eval(QueryExpression expr, Callback<Target> callback)
+ throws QueryException, InterruptedException {
+ AggregateAllCallback<Target> aggregator = new AggregateAllCallback<>();
+ expr.eval(this, aggregator);
+ callback.process(aggregator.getResult());
+ }
+
+ @Override
+ public Uniquifier<Target> createUniquifier() {
+ return new AbstractUniquifier<Target, Label>() {
+ @Override
+ protected Label extractKey(Target target) {
+ return target.getLabel();
+ }
+ };
+ }
+
+ @Override
public Set<Target> getTargetsMatchingPattern(QueryExpression owner, String pattern)
throws QueryException {
Set<Target> targets = new LinkedHashSet<>(resolvedTargetPatterns.get(pattern));