aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/query2
diff options
context:
space:
mode:
authorGravatar nharmata <nharmata@google.com>2017-07-25 17:39:09 +0200
committerGravatar Jakob Buchgraber <buchgr@google.com>2017-07-26 10:34:53 +0200
commitde0c535f123acd5344723ca128ead5d4491aed9c (patch)
tree327e964f18d2c7b9eab765b94b2f30eafd1ab4c1 /src/main/java/com/google/devtools/build/lib/query2
parente24c97e4fd999ebf566fe30f614c569856a999b2 (diff)
Generalize some of methods in TargetPattern, PrepareDepsOfPatternValue, and RecursivePackageProvider dealing with the concept of "excluded directories".
RELNOTES: None PiperOrigin-RevId: 163074794
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/query2')
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java38
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/engine/SetExpression.java4
2 files changed, 24 insertions, 18 deletions
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 6cc8fd1585..80551587c3 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
@@ -685,24 +685,19 @@ public class SkyQueryEnvironment extends AbstractBlazeQueryEnvironment<Target>
return new UniquifierImpl<>(ReverseDepSkyKeyKeyExtractor.INSTANCE, DEFAULT_THREAD_COUNT);
}
- private Pair<TargetPattern, ImmutableSet<PathFragment>> getPatternAndExcludes(String pattern)
- throws TargetParsingException, InterruptedException {
- TargetPatternKey targetPatternKey =
- TargetPatternValue.key(
- pattern, TargetPatternEvaluator.DEFAULT_FILTERING_POLICY, parserPrefix);
- ImmutableSet<PathFragment> subdirectoriesToExclude =
- targetPatternKey.getAllSubdirectoriesToExclude(blacklistPatternsSupplier);
- return Pair.of(targetPatternKey.getParsedPattern(), subdirectoriesToExclude);
+ private ImmutableSet<PathFragment> getBlacklistedExcludes(TargetPatternKey targetPatternKey)
+ throws InterruptedException {
+ return targetPatternKey.getAllBlacklistedSubdirectoriesToExclude(blacklistPatternsSupplier);
}
@ThreadSafe
@Override
public QueryTaskFuture<Void> getTargetsMatchingPattern(
- final QueryExpression owner, String pattern, Callback<Target> callback) {
- // Directly evaluate the target pattern, making use of packages in the graph.
- Pair<TargetPattern, ImmutableSet<PathFragment>> patternToEvalAndSubdirectoriesToExclude;
+ QueryExpression owner, String pattern, Callback<Target> callback) {
+ TargetPatternKey targetPatternKey;
try {
- patternToEvalAndSubdirectoriesToExclude = getPatternAndExcludes(pattern);
+ targetPatternKey = TargetPatternValue.key(
+ pattern, TargetPatternEvaluator.DEFAULT_FILTERING_POLICY, parserPrefix);
} catch (TargetParsingException tpe) {
try {
reportBuildFileError(owner, tpe.getMessage());
@@ -710,12 +705,22 @@ public class SkyQueryEnvironment extends AbstractBlazeQueryEnvironment<Target>
return immediateFailedFuture(qe);
}
return immediateSuccessfulFuture(null);
+ }
+ return evalTargetPatternKey(owner, targetPatternKey, callback);
+ }
+
+ @ThreadSafe
+ public QueryTaskFuture<Void> evalTargetPatternKey(
+ QueryExpression owner, TargetPatternKey targetPatternKey, Callback<Target> callback) {
+ ImmutableSet<PathFragment> blacklistedSubdirectoriesToExclude;
+ try {
+ blacklistedSubdirectoriesToExclude = getBlacklistedExcludes(targetPatternKey);
} catch (InterruptedException ie) {
return immediateCancelledFuture();
}
- TargetPattern patternToEval = patternToEvalAndSubdirectoriesToExclude.getFirst();
- ImmutableSet<PathFragment> subdirectoriesToExclude =
- patternToEvalAndSubdirectoriesToExclude.getSecond();
+ TargetPattern patternToEval = targetPatternKey.getParsedPattern();
+ ImmutableSet<PathFragment> additionalSubdirectoriesToExclude =
+ targetPatternKey.getExcludedSubdirectories();
AsyncFunction<TargetParsingException, Void> reportBuildFileErrorAsyncFunction =
exn -> {
reportBuildFileError(owner, exn.getMessage());
@@ -723,7 +728,8 @@ public class SkyQueryEnvironment extends AbstractBlazeQueryEnvironment<Target>
};
ListenableFuture<Void> evalFuture = patternToEval.evalAsync(
resolver,
- subdirectoriesToExclude,
+ blacklistedSubdirectoriesToExclude,
+ additionalSubdirectoriesToExclude,
callback,
QueryException.class,
executor);
diff --git a/src/main/java/com/google/devtools/build/lib/query2/engine/SetExpression.java b/src/main/java/com/google/devtools/build/lib/query2/engine/SetExpression.java
index e1eadf3aa5..57db015f9e 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/engine/SetExpression.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/engine/SetExpression.java
@@ -38,11 +38,11 @@ import java.util.List;
*
* <pre>expr ::= SET '(' WORD * ')'</pre>
*/
-class SetExpression extends QueryExpression {
+public class SetExpression extends QueryExpression {
private final List<TargetLiteral> words;
- SetExpression(List<TargetLiteral> words) {
+ public SetExpression(List<TargetLiteral> words) {
this.words = words;
}