diff options
author | Eric Fellheimer <felly@google.com> | 2016-05-27 16:12:31 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-05-30 09:19:15 +0000 |
commit | f37daa0533da699cf60e0cd566b22292aa59f598 (patch) | |
tree | 4a63d3116a372e04bc53ee4d30724af89d858404 /src | |
parent | c02ed17c095b99bef745707e5c8f523baa1805aa (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.java | 2 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternValue.java | 22 |
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(); |