aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
index 6da94fd90b..6114f1d933 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
@@ -814,7 +814,13 @@ public class PackageFunction implements SkyFunction {
Set<SkyKey> containingPkgLookupKeys = Sets.newHashSet();
Map<Target, SkyKey> targetToKey = new HashMap<>();
for (Target target : pkgBuilder.getTargets()) {
- PathFragment dir = target.getLabel().toPathFragment().getParentDirectory();
+ PathFragment dir = getContainingDirectory(target.getLabel());
+ if (dir == null) {
+ throw new IllegalStateException(
+ String.format(
+ "Null pkg for label %s as path fragment %s in pkg %s",
+ target.getLabel(), target.getLabel().getPackageFragment(), pkgId));
+ }
PackageIdentifier dirId = PackageIdentifier.create(pkgId.getRepository(), dir);
if (dir.equals(pkgId.getPackageFragment())) {
continue;
@@ -825,7 +831,7 @@ public class PackageFunction implements SkyFunction {
}
Map<Label, SkyKey> subincludeToKey = new HashMap<>();
for (Label subincludeLabel : pkgBuilder.getSubincludeLabels()) {
- PathFragment dir = subincludeLabel.toPathFragment().getParentDirectory();
+ PathFragment dir = getContainingDirectory(subincludeLabel);
PackageIdentifier dirId = PackageIdentifier.create(pkgId.getRepository(), dir);
if (dir.equals(pkgId.getPackageFragment())) {
continue;
@@ -870,6 +876,12 @@ public class PackageFunction implements SkyFunction {
}
}
+ private static PathFragment getContainingDirectory(Label label) {
+ PathFragment pkg = label.getPackageFragment();
+ String name = label.getName();
+ return name.equals(".") ? pkg : pkg.getRelative(name).getParentDirectory();
+ }
+
@Nullable
private static ContainingPackageLookupValue
getContainingPkgLookupValueAndPropagateInconsistentFilesystemExceptions(