From de0c535f123acd5344723ca128ead5d4491aed9c Mon Sep 17 00:00:00 2001 From: nharmata Date: Tue, 25 Jul 2017 17:39:09 +0200 Subject: Generalize some of methods in TargetPattern, PrepareDepsOfPatternValue, and RecursivePackageProvider dealing with the concept of "excluded directories". RELNOTES: None PiperOrigin-RevId: 163074794 --- .../build/lib/query2/SkyQueryEnvironment.java | 38 +++++++++++++--------- .../build/lib/query2/engine/SetExpression.java | 4 +-- 2 files changed, 24 insertions(+), 18 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/query2') 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 return new UniquifierImpl<>(ReverseDepSkyKeyKeyExtractor.INSTANCE, DEFAULT_THREAD_COUNT); } - private Pair> getPatternAndExcludes(String pattern) - throws TargetParsingException, InterruptedException { - TargetPatternKey targetPatternKey = - TargetPatternValue.key( - pattern, TargetPatternEvaluator.DEFAULT_FILTERING_POLICY, parserPrefix); - ImmutableSet subdirectoriesToExclude = - targetPatternKey.getAllSubdirectoriesToExclude(blacklistPatternsSupplier); - return Pair.of(targetPatternKey.getParsedPattern(), subdirectoriesToExclude); + private ImmutableSet getBlacklistedExcludes(TargetPatternKey targetPatternKey) + throws InterruptedException { + return targetPatternKey.getAllBlacklistedSubdirectoriesToExclude(blacklistPatternsSupplier); } @ThreadSafe @Override public QueryTaskFuture getTargetsMatchingPattern( - final QueryExpression owner, String pattern, Callback callback) { - // Directly evaluate the target pattern, making use of packages in the graph. - Pair> patternToEvalAndSubdirectoriesToExclude; + QueryExpression owner, String pattern, Callback 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 return immediateFailedFuture(qe); } return immediateSuccessfulFuture(null); + } + return evalTargetPatternKey(owner, targetPatternKey, callback); + } + + @ThreadSafe + public QueryTaskFuture evalTargetPatternKey( + QueryExpression owner, TargetPatternKey targetPatternKey, Callback callback) { + ImmutableSet blacklistedSubdirectoriesToExclude; + try { + blacklistedSubdirectoriesToExclude = getBlacklistedExcludes(targetPatternKey); } catch (InterruptedException ie) { return immediateCancelledFuture(); } - TargetPattern patternToEval = patternToEvalAndSubdirectoriesToExclude.getFirst(); - ImmutableSet subdirectoriesToExclude = - patternToEvalAndSubdirectoriesToExclude.getSecond(); + TargetPattern patternToEval = targetPatternKey.getParsedPattern(); + ImmutableSet additionalSubdirectoriesToExclude = + targetPatternKey.getExcludedSubdirectories(); AsyncFunction reportBuildFileErrorAsyncFunction = exn -> { reportBuildFileError(owner, exn.getMessage()); @@ -723,7 +728,8 @@ public class SkyQueryEnvironment extends AbstractBlazeQueryEnvironment }; ListenableFuture 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; * *
expr ::= SET '(' WORD * ')'
*/ -class SetExpression extends QueryExpression { +public class SetExpression extends QueryExpression { private final List words; - SetExpression(List words) { + public SetExpression(List words) { this.words = words; } -- cgit v1.2.3