aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java
diff options
context:
space:
mode:
authorGravatar John Cater <jcater@google.com>2017-09-06 17:51:18 +0200
committerGravatar Yun Peng <pcloudy@google.com>2017-09-07 09:57:12 +0200
commit4a12e66757a5d12080744c7289342db1a0f67df7 (patch)
tree3f5dfa0b66a3004c2d22ab2a9983b998b718be0d /src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java
parent313a0e04eb7c173359b1e18a6cbe5dd5915bb0a8 (diff)
Update PackageLookupFunction to report the corrected label when a
package crosses into a local repository. Part of #3553. Change-Id: Ib21de0a1843e72055c53ef34922d69290aee72ed PiperOrigin-RevId: 167726591
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, 7 insertions, 3 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 c0a115ad6c..09fd17d974 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
@@ -229,9 +229,13 @@ public class PackageLookupFunction implements SkyFunction {
if (localRepository.exists()
&& !localRepository.getRepository().equals(packageIdentifier.getRepository())) {
// There is a repository mismatch, this is an error.
- // TODO(jcater): Work out the correct package name for this error message.
- return PackageLookupValue.invalidPackageName(
- "Package crosses into repository " + localRepository.getRepository().getName());
+ // 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());
+ PackageIdentifier correctPackage =
+ PackageIdentifier.create(localRepository.getRepository(), remainingPath);
+ return PackageLookupValue.incorrectRepositoryReference(packageIdentifier, correctPackage);
}
// There's no local repository, keep going.