diff options
author | 2017-07-25 17:39:09 +0200 | |
---|---|---|
committer | 2017-07-26 10:34:53 +0200 | |
commit | de0c535f123acd5344723ca128ead5d4491aed9c (patch) | |
tree | 327e964f18d2c7b9eab765b94b2f30eafd1ab4c1 /src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java | |
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/skyframe/EnvironmentBackedRecursivePackageProvider.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java b/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java index 4baa59dbeb..e070b659b4 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java @@ -19,7 +19,6 @@ import com.google.common.collect.Iterables; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.cmdline.RepositoryName; -import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.ExtendedEventHandler; import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException; @@ -37,6 +36,7 @@ import com.google.devtools.build.lib.vfs.RootedPath; import com.google.devtools.build.skyframe.SkyFunction.Environment; import com.google.devtools.build.skyframe.SkyKey; import java.util.ArrayList; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; @@ -115,6 +115,7 @@ public final class EnvironmentBackedRecursivePackageProvider implements Recursiv ExtendedEventHandler eventHandler, RepositoryName repository, PathFragment directory, + ImmutableSet<PathFragment> blacklistedSubdirectories, ImmutableSet<PathFragment> excludedSubdirectories) throws MissingDepException, InterruptedException { PathPackageLocator packageLocator = PrecomputedValue.PATH_PACKAGE_LOCATOR.get(env); @@ -140,11 +141,11 @@ public final class EnvironmentBackedRecursivePackageProvider implements Recursiv roots.add(repositoryValue.getPath()); } - NestedSetBuilder<String> packageNames = NestedSetBuilder.stableOrder(); + LinkedHashSet<PathFragment> packageNames = new LinkedHashSet<>(); for (Path root : roots) { - PathFragment.checkAllPathsAreUnder(excludedSubdirectories, directory); + PathFragment.checkAllPathsAreUnder(blacklistedSubdirectories, directory); RecursivePkgValue lookup = (RecursivePkgValue) env.getValue(RecursivePkgValue.key( - repository, RootedPath.toRootedPath(root, directory), excludedSubdirectories)); + repository, RootedPath.toRootedPath(root, directory), blacklistedSubdirectories)); if (lookup == null) { // Typically a null value from Environment.getValue(k) means that either the key k is // missing a dependency or an exception was thrown during evaluation of k. Here, if this @@ -156,11 +157,19 @@ public final class EnvironmentBackedRecursivePackageProvider implements Recursiv throw new MissingDepException(); } - packageNames.addTransitive(lookup.getPackages()); + for (String packageName : lookup.getPackages()) { + // TODO(bazel-team): Make RecursivePkgValue return NestedSet<PathFragment> so this transform + // is unnecessary. + PathFragment packageNamePathFragment = PathFragment.create(packageName); + if (!Iterables.any( + excludedSubdirectories, + excludedSubdirectory -> packageNamePathFragment.startsWith(excludedSubdirectory))) { + packageNames.add(packageNamePathFragment); + } + } } - // TODO(bazel-team): Make RecursivePkgValue return NestedSet<PathFragment> so this transform is - // unnecessary. - return Iterables.transform(packageNames.build(), PathFragment::create); + + return packageNames; } @Override |