aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2015-09-22 07:40:24 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2015-09-22 17:07:18 +0000
commitd72db8db34ea76a7939138d02c258035699b1f1c (patch)
treeeecae3f2ab5bc5ec73024b68d85c315cd6a1fbc9 /src
parentdfd3497c572f8710ad228ac35fda9f8053f004b4 (diff)
Thread the repository name all the way from TargetPatternResolver to RecursivePkgFunction.
This introduces some redundancy with RootedPath, but only in the case of remote repositories. There doesn't seem to be a good way of removing this redundancy. -- MOS_MIGRATED_REVID=103621610
Diffstat (limited to 'src')
-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;
}