aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/TargetPatternResolver.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/pkgcache/RecursivePackageProvider.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/RecursiveDirectoryTraversalFunction.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java16
12 files changed, 71 insertions, 36 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java b/src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java
index 54fd93254a..b127009d91 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java
@@ -423,7 +423,8 @@ public abstract class TargetPattern implements Serializable {
public <T> ResolvedTargets<T> eval(TargetPatternResolver<T> resolver,
ImmutableSet<String> excludedSubdirectories)
throws TargetParsingException, InterruptedException {
- return resolver.findTargetsBeneathDirectory(getOriginalPattern(), directory, rulesOnly,
+ return resolver.findTargetsBeneathDirectory(
+ PackageIdentifier.DEFAULT_REPOSITORY_NAME, getOriginalPattern(), directory, rulesOnly,
excludedSubdirectories);
}
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/TargetPatternResolver.java b/src/main/java/com/google/devtools/build/lib/cmdline/TargetPatternResolver.java
index 3566b2393b..4234ad5e10 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/TargetPatternResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/TargetPatternResolver.java
@@ -15,6 +15,7 @@
package com.google.devtools.build.lib.cmdline;
import com.google.common.collect.ImmutableSet;
+import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName;
/**
* A callback interface that is used during the process of converting target patterns (such as
@@ -76,8 +77,8 @@ public interface TargetPatternResolver<T> {
* to ignore
* @throws TargetParsingException under implementation-specific failure conditions
*/
- ResolvedTargets<T> findTargetsBeneathDirectory(String originalPattern, String directory,
- boolean rulesOnly, ImmutableSet<String> excludedSubdirectories)
+ ResolvedTargets<T> findTargetsBeneathDirectory(RepositoryName repository, String originalPattern,
+ String directory, boolean rulesOnly, ImmutableSet<String> excludedSubdirectories)
throws TargetParsingException, InterruptedException;
/**
diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/RecursivePackageProvider.java b/src/main/java/com/google/devtools/build/lib/pkgcache/RecursivePackageProvider.java
index e5608a6747..de79d9db23 100644
--- a/src/main/java/com/google/devtools/build/lib/pkgcache/RecursivePackageProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/pkgcache/RecursivePackageProvider.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.pkgcache;
import com.google.common.collect.ImmutableSet;
+import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.lib.vfs.RootedPath;
@@ -28,6 +29,6 @@ public interface RecursivePackageProvider extends PackageProvider {
* @param excludedSubdirectories a set of {@link PathFragment}s, all of which are beneath
* {@code directory}, specifying transitive subdirectories to exclude
*/
- Iterable<PathFragment> getPackagesUnderDirectory(RootedPath directory,
+ Iterable<PathFragment> getPackagesUnderDirectory(RepositoryName repository, RootedPath directory,
ImmutableSet<PathFragment> excludedSubdirectories);
}
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 de739ac7e3..7ea637df2d 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
@@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableSet;
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.PackageIdentifier.RepositoryName;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException;
@@ -89,13 +90,14 @@ public final class EnvironmentBackedRecursivePackageProvider implements Recursiv
}
@Override
- public Iterable<PathFragment> getPackagesUnderDirectory(RootedPath directory,
+ public Iterable<PathFragment> getPackagesUnderDirectory(
+ RepositoryName repository, RootedPath directory,
ImmutableSet<PathFragment> excludedSubdirectories)
throws MissingDepException {
PathFragment rootedPathFragment = directory.getRelativePath();
PathFragment.checkAllPathsAreUnder(excludedSubdirectories, rootedPathFragment);
RecursivePkgValue lookup = (RecursivePkgValue) env.getValue(
- RecursivePkgValue.key(directory, excludedSubdirectories));
+ RecursivePkgValue.key(repository, directory, excludedSubdirectories));
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 getValue
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 5c1cc7d9dd..2d1b1de6c0 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
@@ -19,6 +19,7 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
+import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName;
import com.google.devtools.build.lib.cmdline.TargetPattern;
import com.google.devtools.build.lib.cmdline.TargetPattern.Type;
import com.google.devtools.build.lib.events.Event;
@@ -98,7 +99,8 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka
}
@Override
- public Iterable<PathFragment> getPackagesUnderDirectory(RootedPath directory,
+ public Iterable<PathFragment> getPackagesUnderDirectory(
+ RepositoryName repository, RootedPath directory,
ImmutableSet<PathFragment> excludedSubdirectories) {
PathFragment.checkAllPathsAreUnder(excludedSubdirectories, directory.getRelativePath());
@@ -120,16 +122,17 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka
// directory wasn't in the universe, so return an empty list.
ImmutableList.Builder<PathFragment> builder = ImmutableList.builder();
if (filteringPolicy != null) {
- collectPackagesUnder(directory, excludedSubdirectories, builder, filteringPolicy);
+ collectPackagesUnder(repository, directory, excludedSubdirectories, builder, filteringPolicy);
}
return builder.build();
}
- private void collectPackagesUnder(RootedPath directory,
+ private void collectPackagesUnder(RepositoryName repository, RootedPath directory,
ImmutableSet<PathFragment> excludedSubdirectories,
ImmutableList.Builder<PathFragment> builder, FilteringPolicy policy) {
SkyKey key =
- PrepareDepsOfTargetsUnderDirectoryValue.key(directory, excludedSubdirectories, policy);
+ PrepareDepsOfTargetsUnderDirectoryValue.key(
+ repository, directory, excludedSubdirectories, policy);
// If the key does not exist in the graph, because the SkyQuery environment has
// already loaded the universe, and we found a TargetsBelowDirectory pattern in the universe
// that contained it, then we know the directory does not exist in the universe.
@@ -151,8 +154,8 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka
PathFragment subdirectoryRelativePath = subdirectory.getRelativePath();
ImmutableSet<PathFragment> excludedSubdirectoriesBeneathThisSubdirectory =
PathFragment.filterPathsStartingWith(excludedSubdirectories, subdirectoryRelativePath);
- collectPackagesUnder(subdirectory, excludedSubdirectoriesBeneathThisSubdirectory, builder,
- policy);
+ collectPackagesUnder(repository, subdirectory,
+ excludedSubdirectoriesBeneathThisSubdirectory, builder, policy);
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java
index c76973805f..b116595dae 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java
@@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
+import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName;
import com.google.devtools.build.lib.cmdline.ResolvedTargets;
import com.google.devtools.build.lib.cmdline.TargetParsingException;
import com.google.devtools.build.lib.cmdline.TargetPattern;
@@ -210,18 +211,21 @@ public class PrepareDepsOfPatternFunction implements SkyFunction {
}
@Override
- public ResolvedTargets<Void> findTargetsBeneathDirectory(String originalPattern,
- String directory, boolean rulesOnly, ImmutableSet<String> excludedSubdirectories)
+ public ResolvedTargets<Void> findTargetsBeneathDirectory(RepositoryName repository,
+ String originalPattern, String directory, boolean rulesOnly,
+ ImmutableSet<String> excludedSubdirectories)
throws TargetParsingException, InterruptedException {
FilteringPolicy policy =
rulesOnly ? FilteringPolicies.RULES_ONLY : FilteringPolicies.NO_FILTER;
ImmutableSet<PathFragment> excludedPathFragments =
TargetPatternResolverUtil.getPathFragments(excludedSubdirectories);
PathFragment pathFragment = TargetPatternResolverUtil.getPathFragment(directory);
+ // TODO(bazel-team): This is where we need to depend on the RepositoryValue of a remote
+ // repository in order figure out its root and thus support recursive package search in them.
for (Path root : pkgPath.getPathEntries()) {
RootedPath rootedPath = RootedPath.toRootedPath(root, pathFragment);
- SkyValue token = env.getValue(PrepareDepsOfTargetsUnderDirectoryValue.key(rootedPath,
- excludedPathFragments, policy));
+ SkyValue token = env.getValue(PrepareDepsOfTargetsUnderDirectoryValue.key(
+ repository, rootedPath, excludedPathFragments, policy));
if (token == null) {
// A null token value means there is a missing dependency, because RecursivePkgFunction
// never throws.
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java
index 97d5ab0405..42af44c3a8 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java
@@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableCollection;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName;
import com.google.devtools.build.lib.cmdline.ResolvedTargets;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
import com.google.devtools.build.lib.packages.NoSuchTargetException;
@@ -78,9 +79,9 @@ public class PrepareDepsOfTargetsUnderDirectoryFunction implements SkyFunction {
}
@Override
- protected SkyKey getSkyKeyForSubdirectory(RootedPath subdirectory,
+ protected SkyKey getSkyKeyForSubdirectory(RepositoryName repository, RootedPath subdirectory,
ImmutableSet<PathFragment> excludedSubdirectoriesBeneathSubdirectory) {
- return PrepareDepsOfTargetsUnderDirectoryValue.key(subdirectory,
+ return PrepareDepsOfTargetsUnderDirectoryValue.key(repository, subdirectory,
excludedSubdirectoriesBeneathSubdirectory, filteringPolicy);
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java
index 7416fb73cd..11291a56b8 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java
@@ -17,6 +17,7 @@ import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
import com.google.devtools.build.lib.pkgcache.FilteringPolicies;
import com.google.devtools.build.lib.pkgcache.FilteringPolicy;
@@ -96,8 +97,9 @@ public final class PrepareDepsOfTargetsUnderDirectoryValue implements SkyValue {
/** Create a prepare deps of targets under directory request. */
@ThreadSafe
- public static SkyKey key(RootedPath rootedPath, ImmutableSet<PathFragment> excludedPaths) {
- return key(rootedPath, excludedPaths, FilteringPolicies.NO_FILTER);
+ public static SkyKey key(RepositoryName repository, RootedPath rootedPath,
+ ImmutableSet<PathFragment> excludedPaths) {
+ return key(repository, rootedPath, excludedPaths, FilteringPolicies.NO_FILTER);
}
/**
@@ -105,10 +107,11 @@ public final class PrepareDepsOfTargetsUnderDirectoryValue implements SkyValue {
* targets.
*/
@ThreadSafe
- public static SkyKey key(RootedPath rootedPath, ImmutableSet<PathFragment> excludedPaths,
- FilteringPolicy filteringPolicy) {
+ public static SkyKey key(RepositoryName repository, RootedPath rootedPath,
+ ImmutableSet<PathFragment> excludedPaths, FilteringPolicy filteringPolicy) {
return new SkyKey(SkyFunctions.PREPARE_DEPS_OF_TARGETS_UNDER_DIRECTORY,
- new PrepareDepsOfTargetsUnderDirectoryKey(new RecursivePkgKey(rootedPath, excludedPaths),
+ new PrepareDepsOfTargetsUnderDirectoryKey(
+ new RecursivePkgKey(repository, rootedPath, excludedPaths),
filteringPolicy));
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveDirectoryTraversalFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveDirectoryTraversalFunction.java
index d0c76333f2..f376a86830 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveDirectoryTraversalFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveDirectoryTraversalFunction.java
@@ -16,6 +16,7 @@ package com.google.devtools.build.lib.skyframe;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
+import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
@@ -64,7 +65,8 @@ abstract class RecursiveDirectoryTraversalFunction
* {@code excludedSubdirectoriesBeneathSubdirectory}, all of which must be proper subdirectories
* of {@code subdirectory}.
*/
- protected abstract SkyKey getSkyKeyForSubdirectory(RootedPath subdirectory,
+ protected abstract SkyKey getSkyKeyForSubdirectory(
+ RepositoryName repository, RootedPath subdirectory,
ImmutableSet<PathFragment> excludedSubdirectoriesBeneathSubdirectory);
/**
@@ -134,8 +136,8 @@ abstract class RecursiveDirectoryTraversalFunction
return getEmptyReturn();
}
- PackageIdentifier packageId =
- PackageIdentifier.createInDefaultRepo(rootRelativePath.getPathString());
+ PackageIdentifier packageId = new PackageIdentifier(
+ recursivePkgKey.getRepository(), rootRelativePath);
PackageLookupValue pkgLookupValue;
try {
pkgLookupValue = (PackageLookupValue) env.getValueOrThrow(PackageLookupValue.key(packageId),
@@ -248,8 +250,8 @@ abstract class RecursiveDirectoryTraversalFunction
ImmutableSet<PathFragment> excludedSubdirectoriesBeneathThisSubdirectory =
PathFragment.filterPathsStartingWith(excludedPaths, subdirectory);
RootedPath subdirectoryRootedPath = RootedPath.toRootedPath(root, subdirectory);
- childDeps.add(getSkyKeyForSubdirectory(subdirectoryRootedPath,
- excludedSubdirectoriesBeneathThisSubdirectory));
+ childDeps.add(getSkyKeyForSubdirectory(recursivePkgKey.getRepository(),
+ subdirectoryRootedPath, excludedSubdirectoriesBeneathThisSubdirectory));
if (env.valuesMissing()) {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java
index 5fe2fae11c..69cf3baf70 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java
@@ -17,6 +17,7 @@ import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
+import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName;
import com.google.devtools.build.lib.cmdline.ResolvedTargets;
import com.google.devtools.build.lib.cmdline.TargetParsingException;
import com.google.devtools.build.lib.cmdline.TargetPatternResolver;
@@ -136,8 +137,9 @@ public class RecursivePackageProviderBackedTargetPatternResolver
}
@Override
- public ResolvedTargets<Target> findTargetsBeneathDirectory(String originalPattern,
- String directory, boolean rulesOnly, ImmutableSet<String> excludedSubdirectories)
+ public ResolvedTargets<Target> findTargetsBeneathDirectory(RepositoryName repository,
+ String originalPattern, String directory, boolean rulesOnly,
+ ImmutableSet<String> excludedSubdirectories)
throws TargetParsingException, InterruptedException {
FilteringPolicy actualPolicy = rulesOnly
? FilteringPolicies.and(FilteringPolicies.RULES_ONLY, policy)
@@ -146,10 +148,13 @@ public class RecursivePackageProviderBackedTargetPatternResolver
TargetPatternResolverUtil.getPathFragments(excludedSubdirectories);
PathFragment pathFragment = TargetPatternResolverUtil.getPathFragment(directory);
ResolvedTargets.Builder<Target> targetBuilder = ResolvedTargets.builder();
+ // TODO(bazel-team): This is where we need to depend on the RepositoryValue of a remote
+ // repository in order figure out its root and thus support recursive package search in them.
for (Path root : pkgPath.getPathEntries()) {
RootedPath rootedPath = RootedPath.toRootedPath(root, pathFragment);
Iterable<PathFragment> packagesUnderDirectory =
- recursivePackageProvider.getPackagesUnderDirectory(rootedPath, excludedPathFragments);
+ recursivePackageProvider.getPackagesUnderDirectory(
+ repository, rootedPath, excludedPathFragments);
for (PathFragment pkg : packagesUnderDirectory) {
targetBuilder.merge(getTargetsInPackage(originalPattern, pkg, FilteringPolicies.NO_FILTER));
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java
index 0ca49fb58e..fc563dc4bd 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.skyframe;
import com.google.common.collect.ImmutableSet;
+import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
@@ -57,9 +58,10 @@ public class RecursivePkgFunction implements SkyFunction {
}
@Override
- protected SkyKey getSkyKeyForSubdirectory(RootedPath subdirectory,
+ protected SkyKey getSkyKeyForSubdirectory(RepositoryName repository, RootedPath subdirectory,
ImmutableSet<PathFragment> excludedSubdirectoriesBeneathSubdirectory) {
- return RecursivePkgValue.key(subdirectory, excludedSubdirectoriesBeneathSubdirectory);
+ return RecursivePkgValue.key(
+ repository, subdirectory, excludedSubdirectoriesBeneathSubdirectory);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java
index 04a53677c1..45df2626fa 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java
@@ -15,6 +15,7 @@ package com.google.devtools.build.lib.skyframe;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
+import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
@@ -55,8 +56,10 @@ public class RecursivePkgValue implements SkyValue {
* Create a transitive package lookup request.
*/
@ThreadSafe
- public static SkyKey key(RootedPath rootedPath, ImmutableSet<PathFragment> excludedPaths) {
- return new SkyKey(SkyFunctions.RECURSIVE_PKG, new RecursivePkgKey(rootedPath, excludedPaths));
+ public static SkyKey key(RepositoryName repositoryName, RootedPath rootedPath,
+ ImmutableSet<PathFragment> excludedPaths) {
+ return new SkyKey(SkyFunctions.RECURSIVE_PKG,
+ new RecursivePkgKey(repositoryName, rootedPath, excludedPaths));
}
public NestedSet<String> getPackages() {
@@ -74,16 +77,23 @@ public class RecursivePkgValue implements SkyValue {
*/
@ThreadSafe
public static final class RecursivePkgKey implements Serializable {
+ private final RepositoryName repositoryName;
private final RootedPath rootedPath;
private final ImmutableSet<PathFragment> excludedPaths;
- public RecursivePkgKey(RootedPath rootedPath, ImmutableSet<PathFragment> excludedPaths) {
+ public RecursivePkgKey(RepositoryName repositoryName, RootedPath rootedPath,
+ ImmutableSet<PathFragment> excludedPaths) {
PathFragment.checkAllPathsAreUnder(excludedPaths,
rootedPath.getRelativePath());
+ this.repositoryName = repositoryName;
this.rootedPath = Preconditions.checkNotNull(rootedPath);
this.excludedPaths = Preconditions.checkNotNull(excludedPaths);
}
+ public RepositoryName getRepository() {
+ return repositoryName;
+ }
+
public RootedPath getRootedPath() {
return rootedPath;
}