aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/FakeSubincludeTarget.java21
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/engine/BuildFilesFunction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/engine/LoadFilesFunction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java5
4 files changed, 29 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/query2/FakeSubincludeTarget.java b/src/main/java/com/google/devtools/build/lib/query2/FakeSubincludeTarget.java
index 308603bf90..224ada6c01 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/FakeSubincludeTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/FakeSubincludeTarget.java
@@ -23,7 +23,7 @@ import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.RuleVisibility;
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.util.Preconditions;
-
+import java.util.Objects;
import java.util.Set;
/**
@@ -88,4 +88,23 @@ public class FakeSubincludeTarget implements Target {
public boolean isConfigurable() {
return true;
}
+
+ @Override
+ public String toString() {
+ return label.toString();
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(label, pkg);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof FakeSubincludeTarget)) {
+ return false;
+ }
+ FakeSubincludeTarget other = (FakeSubincludeTarget) obj;
+ return label.equals(other.label) && pkg.equals(other.pkg);
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/query2/engine/BuildFilesFunction.java b/src/main/java/com/google/devtools/build/lib/query2/engine/BuildFilesFunction.java
index 0e65cbdf05..d2a2eb0fa8 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/engine/BuildFilesFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/engine/BuildFilesFunction.java
@@ -49,6 +49,7 @@ class BuildFilesFunction implements QueryFunction {
List<Argument> args,
final Callback<T> callback)
throws QueryException, InterruptedException {
+ final Uniquifier<T> uniquifier = env.createUniquifier();
env.eval(
args.get(0).getExpression(),
context,
@@ -58,9 +59,9 @@ class BuildFilesFunction implements QueryFunction {
throws QueryException, InterruptedException {
Set<T> result = CompactHashSet.create();
Iterables.addAll(result, partialResult);
- callback.process(
+ callback.process(uniquifier.unique(
env.getBuildFiles(
- expression, result, /* BUILD */ true, /* subinclude */ true, /* load */ true));
+ expression, result, /* BUILD */ true, /* subinclude */ true, /* load */ true)));
}
});
}
diff --git a/src/main/java/com/google/devtools/build/lib/query2/engine/LoadFilesFunction.java b/src/main/java/com/google/devtools/build/lib/query2/engine/LoadFilesFunction.java
index 6b42ba4f37..311a6afff5 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/engine/LoadFilesFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/engine/LoadFilesFunction.java
@@ -45,6 +45,7 @@ class LoadFilesFunction implements QueryEnvironment.QueryFunction {
List<QueryEnvironment.Argument> args,
final Callback<T> callback)
throws QueryException, InterruptedException {
+ final Uniquifier<T> uniquifier = env.createUniquifier();
env.eval(
args.get(0).getExpression(),
context,
@@ -54,13 +55,13 @@ class LoadFilesFunction implements QueryEnvironment.QueryFunction {
throws QueryException, InterruptedException {
Set<T> result = CompactHashSet.create();
Iterables.addAll(result, partialResult);
- callback.process(
+ callback.process(uniquifier.unique(
env.getBuildFiles(
expression,
result,
/* BUILD */ false,
/* subinclude */ false,
- /* load */ true));
+ /* load */ true)));
}
});
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
index fbcc10f0c8..34cde7627a 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
@@ -216,7 +216,8 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor {
ImmutableList<BuildInfoFactory> buildInfoFactories,
Iterable<? extends DiffAwareness.Factory> diffAwarenessFactories,
PathFragment blacklistedPackagePrefixesFile,
- String productName) {
+ String productName,
+ Preprocessor.Factory.Supplier preprocessorFactorySupplier) {
return create(
pkgFactory,
directories,
@@ -225,7 +226,7 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor {
buildInfoFactories,
diffAwarenessFactories,
Predicates.<PathFragment>alwaysFalse(),
- Preprocessor.Factory.Supplier.NullSupplier.INSTANCE,
+ preprocessorFactorySupplier,
ImmutableMap.<SkyFunctionName, SkyFunction>of(),
ImmutableList.<PrecomputedValue.Injected>of(),
ImmutableList.<SkyValueDirtinessChecker>of(),