aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java
index 09fd17d974..3ffcc33b82 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java
@@ -231,8 +231,14 @@ public class PackageLookupFunction implements SkyFunction {
// There is a repository mismatch, this is an error.
// The correct package path is the one originally given, minus the part that is the local
// repository.
- PathFragment packagePathUnderExecRoot = packageIdentifier.getPathUnderExecRoot();
- PathFragment remainingPath = packagePathUnderExecRoot.relativeTo(localRepository.getPath());
+ PathFragment pathToRequestedPackage = packageIdentifier.getPathUnderExecRoot();
+ PathFragment localRepositoryPath = localRepository.getPath();
+ if (localRepositoryPath.isAbsolute()) {
+ // We need the package path to also be absolute.
+ pathToRequestedPackage =
+ packagePathEntry.asFragment().getRelative(pathToRequestedPackage);
+ }
+ PathFragment remainingPath = pathToRequestedPackage.relativeTo(localRepositoryPath);
PackageIdentifier correctPackage =
PackageIdentifier.create(localRepository.getRepository(), remainingPath);
return PackageLookupValue.incorrectRepositoryReference(packageIdentifier, correctPackage);