aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/actions
diff options
context:
space:
mode:
authorGravatar Philipp Wollermann <philwo@google.com>2015-10-22 20:33:44 +0000
committerGravatar John Field <jfield@google.com>2015-10-23 14:55:27 +0000
commitf2512bbae579886a6fe2673e1e225820725104bb (patch)
tree2fa5db8649887561f92b19201df75112d6ba4564 /src/main/java/com/google/devtools/build/lib/actions
parentd6722d63bb0ac8769f7fed4868620cf9a74c8005 (diff)
Move the check whether a repository name contains a slash to PackageIdentifier, where it actually belongs.
-- MOS_MIGRATED_REVID=106086272
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/actions')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java b/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java
index 67b210e8ca..f1f8f6efe5 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java
@@ -21,10 +21,10 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSortedSet;
import com.google.common.collect.Lists;
import com.google.devtools.build.lib.actions.Artifact.SpecialArtifactType;
-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.concurrent.ThreadSafety.ThreadSafe;
+import com.google.devtools.build.lib.util.Pair;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -332,16 +332,12 @@ public class ArtifactFactory implements ArtifactResolver, ArtifactSerializer, Ar
return null;
}
- // This obviously only works when a repository name does not contain a slash. However, this is
- // fine, because LocalRepositoryFunction checks that the name doesn't contain one.
RepositoryName repoName = PackageIdentifier.DEFAULT_REPOSITORY_NAME;
- if (dir.segmentCount() >= 2 && dir.getSegment(0).equals("external")) {
- try {
- repoName = RepositoryName.create("@" + dir.getSegment(1));
- } catch (LabelSyntaxException e) {
- return null;
- }
- dir = dir.subFragment(2, dir.segmentCount());
+
+ Pair<RepositoryName, PathFragment> repo = RepositoryName.fromPathFragment(dir);
+ if (repo != null) {
+ repoName = repo.getFirst();
+ dir = repo.getSecond();
}
while (dir != null && !dir.equals(baseExecPath)) {