diff options
author | nharmata <nharmata@google.com> | 2017-10-30 14:40:40 -0400 |
---|---|---|
committer | John Cater <jcater@google.com> | 2017-10-31 10:37:24 -0400 |
commit | 8d874b0f8fd8b562945e94a4099cf31687afd9f0 (patch) | |
tree | 23276d1dc0f90bfc9b9ebc1f542b5dfe0bd9e226 /src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java | |
parent | 1fef5277c8c47dd976e7028890246df612216456 (diff) |
Fix bug where all three implementations of RecursivePackageProvider#getPackagesUnderDirectory assumed that the given directory needed to be strictly underneath all directories in the given blacklistedSubdirectories set, yet the callsites were calling this method such that the given directory was not-necessarily-strictly underneath the blacklistedSubdirectories.
N.B. There is no end-to-end bug in EnvironmentBackedRecursivePackageProvider because TargetPatternFunction's usage of TargetPattern#eval is always with blacklistedSubdirectories=ImmutableSet.of(). Also note that the existing fast-path in GraphBackedRecursivePackageProvider is dead code because the Preconditions check would fail first :(
RELNOTES: None
PiperOrigin-RevId: 173924216
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java b/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java index 0dd1b4d301..5cc487fe62 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java @@ -169,13 +169,14 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka ImmutableSet<PathFragment> blacklistedSubdirectories, ImmutableSet<PathFragment> excludedSubdirectories) throws InterruptedException { - PathFragment.checkAllPathsAreUnder(blacklistedSubdirectories, directory); - PathFragment.checkAllPathsAreUnder(excludedSubdirectories, directory); - - if (excludedSubdirectories.contains(directory)) { + if (blacklistedSubdirectories.contains(directory) + || excludedSubdirectories.contains(directory)) { return ImmutableList.of(); } + PathFragment.checkAllPathsAreUnder(blacklistedSubdirectories, directory); + PathFragment.checkAllPathsAreUnder(excludedSubdirectories, directory); + // Check that this package is covered by at least one of our universe patterns. boolean inUniverse = false; for (TargetPatternKey patternKey : universeTargetPatternKeys) { |