diff options
author | nharmata <nharmata@google.com> | 2017-07-25 17:39:09 +0200 |
---|---|---|
committer | Jakob Buchgraber <buchgr@google.com> | 2017-07-26 10:34:53 +0200 |
commit | de0c535f123acd5344723ca128ead5d4491aed9c (patch) | |
tree | 327e964f18d2c7b9eab765b94b2f30eafd1ab4c1 /src/main/java/com/google/devtools/build/lib/query2 | |
parent | e24c97e4fd999ebf566fe30f614c569856a999b2 (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.java | 38 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/query2/engine/SetExpression.java | 4 |
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; } |