Rollback of https://github.com/bazelbuild/bazel/commit/732dc512801c32207c252a76ca8d9e5544560339.
RELNOTES: Allow @ in package names.
PiperOrigin-RevId: 203270369
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
index 8d7ad19..732e6a0 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
@@ -16,6 +16,7 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.ComparisonChain;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Interner;
import com.google.devtools.build.lib.concurrent.BlazeInterners;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
@@ -119,10 +120,17 @@
}
public static PackageIdentifier parse(String input) throws LabelSyntaxException {
- String repo;
+ return parse(input, /* repo= */ null, /* repositoryMapping= */ null);
+ }
+
+ public static PackageIdentifier parse(
+ String input, String repo, ImmutableMap<RepositoryName, RepositoryName> repositoryMapping)
+ throws LabelSyntaxException {
String packageName;
int packageStartPos = input.indexOf("//");
- if (input.startsWith("@") && packageStartPos > 0) {
+ if (repo != null) {
+ packageName = input;
+ } else if (input.startsWith("@") && packageStartPos > 0) {
repo = input.substring(0, packageStartPos);
packageName = input.substring(packageStartPos + 2);
} else if (input.startsWith("@")) {
@@ -145,7 +153,13 @@
throw new LabelSyntaxException(error);
}
- return create(repo, PathFragment.create(packageName));
+ if (repositoryMapping != null) {
+ RepositoryName repositoryName = RepositoryName.create(repo);
+ repositoryName = repositoryMapping.getOrDefault(repositoryName, repositoryName);
+ return create(repositoryName, PathFragment.create(packageName));
+ } else {
+ return create(repo, PathFragment.create(packageName));
+ }
}
public RepositoryName getRepository() {