aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Eric Fellheimer <felly@google.com>2016-05-27 16:12:31 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-05-30 09:19:15 +0000
commitf37daa0533da699cf60e0cd566b22292aa59f598 (patch)
tree4a63d3116a372e04bc53ee4d30724af89d858404 /src
parentc02ed17c095b99bef745707e5c8f523baa1805aa (diff)
Allow blacklisted package prefixes to be passed in lazily via a Supplier.
-- MOS_MIGRATED_REVID=123424674
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternValue.java22
2 files changed, 17 insertions, 7 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 9ab241f111..5e29a4e5b9 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
@@ -489,7 +489,7 @@ public class SkyQueryEnvironment extends AbstractBlazeQueryEnvironment<Target> {
provider, eventHandler, targetPatternKey.getPolicy(), threadPool);
TargetPattern parsedPattern = targetPatternKey.getParsedPattern();
ImmutableSet<PathFragment> subdirectoriesToExclude =
- targetPatternKey.getAllSubdirectoriesToExclude(blacklistPatternsSupplier.get());
+ targetPatternKey.getAllSubdirectoriesToExclude(blacklistPatternsSupplier);
FilteringBatchingUniquifyingCallback wrapper =
new FilteringBatchingUniquifyingCallback(callback);
parsedPattern.eval(resolver, subdirectoriesToExclude, wrapper, QueryException.class);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternValue.java
index c19a72b790..7641f6eec9 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternValue.java
@@ -13,6 +13,8 @@
// limitations under the License.
package com.google.devtools.build.lib.skyframe;
+import com.google.common.base.Supplier;
+import com.google.common.base.Suppliers;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
@@ -23,6 +25,7 @@ import com.google.devtools.build.lib.cmdline.ResolvedTargets;
import com.google.devtools.build.lib.cmdline.ResolvedTargets.Builder;
import com.google.devtools.build.lib.cmdline.TargetParsingException;
import com.google.devtools.build.lib.cmdline.TargetPattern;
+import com.google.devtools.build.lib.cmdline.TargetPattern.Type;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
import com.google.devtools.build.lib.pkgcache.FilteringPolicies;
@@ -208,14 +211,21 @@ public final class TargetPatternValue implements SkyValue {
public ImmutableSet<PathFragment> getAllSubdirectoriesToExclude(
Iterable<PathFragment> blacklistedPackagePrefixes) {
+ return getAllSubdirectoriesToExclude(Suppliers.ofInstance(blacklistedPackagePrefixes));
+ }
+
+ public ImmutableSet<PathFragment> getAllSubdirectoriesToExclude(
+ Supplier<? extends Iterable<PathFragment>> blacklistedPackagePrefixes) {
ImmutableSet.Builder<PathFragment> excludedPathsBuilder = ImmutableSet.builder();
excludedPathsBuilder.addAll(getExcludedSubdirectories());
- for (PathFragment blacklistedPackagePrefix : blacklistedPackagePrefixes) {
- PackageIdentifier pkgIdForBlacklistedDirectorPrefix = PackageIdentifier.create(
- parsedPattern.getDirectory().getRepository(),
- blacklistedPackagePrefix);
- if (parsedPattern.containsBelowDirectory(pkgIdForBlacklistedDirectorPrefix)) {
- excludedPathsBuilder.add(blacklistedPackagePrefix);
+ if (parsedPattern.getType() == Type.TARGETS_BELOW_DIRECTORY) {
+ for (PathFragment blacklistedPackagePrefix : blacklistedPackagePrefixes.get()) {
+ PackageIdentifier pkgIdForBlacklistedDirectorPrefix = PackageIdentifier.create(
+ parsedPattern.getDirectory().getRepository(),
+ blacklistedPackagePrefix);
+ if (parsedPattern.containsBelowDirectory(pkgIdForBlacklistedDirectorPrefix)) {
+ excludedPathsBuilder.add(blacklistedPackagePrefix);
+ }
}
}
return excludedPathsBuilder.build();