diff options
author | 2015-10-22 20:33:44 +0000 | |
---|---|---|
committer | 2015-10-23 14:55:27 +0000 | |
commit | f2512bbae579886a6fe2673e1e225820725104bb (patch) | |
tree | 2fa5db8649887561f92b19201df75112d6ba4564 /src/main/java/com/google/devtools/build/lib/actions | |
parent | d6722d63bb0ac8769f7fed4868620cf9a74c8005 (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.java | 16 |
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)) { |