diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java index ec29773f021083..74c11be759af58 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java @@ -679,10 +679,8 @@ private void resolveAttribute( return; } - Label ruleLabel = rule.getLabel(); type.visitLabels( - (depLabel, ctx) -> - outgoingLabels.put(dependencyKind, ruleLabel.resolveRepositoryRelative(depLabel)), + (depLabel, ctx) -> outgoingLabels.put(dependencyKind, depLabel), attributeValue, /*context=*/ null); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/OutputDirectories.java b/src/main/java/com/google/devtools/build/lib/analysis/config/OutputDirectories.java index 58dd68d9221048..a245cb361c1e88 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/OutputDirectories.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/OutputDirectories.java @@ -256,7 +256,7 @@ private ArtifactRoot buildDerivedRoot( // instead. However, it requires individually symlinking the top-level elements of external // repositories, which is blocked by a Windows symlink issue #8704. RootType rootType; - if (repository.isMain() || repository.isDefault()) { + if (repository.isMain()) { rootType = isMiddleman ? RootType.SiblingMainMiddleman : RootType.SiblingMainOutput; } else { rootType = isMiddleman ? RootType.SiblingExternalMiddleman : RootType.SiblingExternalOutput; diff --git a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java index b98c164704e9da..14ce51ea507038 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java @@ -130,7 +130,6 @@ public Label load(String from) throws Exception { try { return Label.parseAbsolute( from, - /* defaultToMain=*/ false, /* repositoryMapping= */ ImmutableMap.of()); } catch (LabelSyntaxException e) { throw new Exception(from); diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/SymlinkForest.java b/src/main/java/com/google/devtools/build/lib/buildtool/SymlinkForest.java index f8ece0f13526de..9a70756ce107d2 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/SymlinkForest.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/SymlinkForest.java @@ -364,7 +364,7 @@ public ImmutableList plantSymlinkForest() throws IOException, AbruptExitEx continue; } RepositoryName repository = pkgId.getRepository(); - if (repository.isMain() || repository.isDefault()) { + if (repository.isMain()) { // Record main repo packages. packageRootsForMainRepo.put(entry.getKey(), entry.getValue()); diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/BUILD b/src/main/java/com/google/devtools/build/lib/cmdline/BUILD index 21a2e040ddebf0..1acdae6fbc5ad3 100644 --- a/src/main/java/com/google/devtools/build/lib/cmdline/BUILD +++ b/src/main/java/com/google/devtools/build/lib/cmdline/BUILD @@ -55,6 +55,7 @@ java_library( name = "cmdline-primitives", srcs = [ "LabelConstants.java", + "LabelParser.java", "LabelSyntaxException.java", "PackageIdentifier.java", "RepositoryMapping.java", diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java index d5295952c6bada..d592862f65e937 100644 --- a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java +++ b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java @@ -13,20 +13,20 @@ // limitations under the License. package com.google.devtools.build.lib.cmdline; +import static com.google.devtools.build.lib.cmdline.LabelParser.validateAndProcessTargetName; + import com.google.common.base.Preconditions; import com.google.common.collect.ComparisonChain; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import com.google.common.collect.Interner; import com.google.devtools.build.docgen.annot.DocCategory; import com.google.devtools.build.lib.actions.CommandLineItem; -import com.google.devtools.build.lib.cmdline.LabelValidator.BadLabelException; +import com.google.devtools.build.lib.cmdline.LabelParser.Parts; import com.google.devtools.build.lib.concurrent.BlazeInterners; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; -import com.google.devtools.build.lib.util.StringUtilities; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; @@ -61,58 +61,74 @@ public final class Label implements Comparable