diff --git a/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java b/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java index ab79b8dfdcf241..6ea34327d30cf5 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java +++ b/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java @@ -373,9 +373,13 @@ private String getProgressMessageChecked(@Nullable RepositoryMapping mainReposit private String replaceProgressMessagePlaceholders( String progressMessage, @Nullable RepositoryMapping mainRepositoryMapping) { if (progressMessage.contains("%{label}") && owner.getLabel() != null) { - progressMessage = - progressMessage.replace( - "%{label}", owner.getLabel().getDisplayForm(mainRepositoryMapping)); + String labelString; + if (mainRepositoryMapping != null) { + labelString = owner.getLabel().getDisplayForm(mainRepositoryMapping); + } else { + labelString = owner.getLabel().toString(); + } + progressMessage = progressMessage.replace("%{label}", labelString); } if (progressMessage.contains("%{output}") && getPrimaryOutput() != null) { progressMessage = diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/BazelModuleContext.java b/src/main/java/com/google/devtools/build/lib/cmdline/BazelModuleContext.java index d5671835122135..9bd7dd45b30ef7 100644 --- a/src/main/java/com/google/devtools/build/lib/cmdline/BazelModuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/cmdline/BazelModuleContext.java @@ -44,13 +44,6 @@ public abstract class BazelModuleContext { /** The repository mapping applicable to the repo where the .bzl file is located in. */ public abstract RepositoryMapping repoMapping(); - /** - * The repository mapping applicable to the main repository, possibly without WORKSPACE repos or - * null. This is purely meant to support {@link Label#getDisplayFormForStarlark(StarlarkThread)}. - */ - @Nullable - public abstract RepositoryMapping bestEffortMainRepoMapping(); - /** Returns the name of the module's .bzl file, as provided to the parser. */ public abstract String filename(); @@ -167,12 +160,11 @@ public static BazelModuleContext ofInnermostBzlOrFail(StarlarkThread thread, Str public static BazelModuleContext create( Label label, RepositoryMapping repoMapping, - @Nullable RepositoryMapping bestEffortMainRepoMapping, String filename, ImmutableList loads, byte[] bzlTransitiveDigest) { return new AutoValue_BazelModuleContext( - label, repoMapping, bestEffortMainRepoMapping, filename, loads, bzlTransitiveDigest); + label, repoMapping, filename, loads, bzlTransitiveDigest); } public final Label.PackageContext packageContext() { 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 d0de7a6897453f..a2421a278eeb04 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 @@ -437,28 +437,10 @@ public String getUnambiguousCanonicalForm() { * @param mainRepositoryMapping the {@link RepositoryMapping} of the main repository * @return analogous to {@link PackageIdentifier#getDisplayForm(RepositoryMapping)} */ - public String getDisplayForm(@Nullable RepositoryMapping mainRepositoryMapping) { + public String getDisplayForm(RepositoryMapping mainRepositoryMapping) { return packageIdentifier.getDisplayForm(mainRepositoryMapping) + ":" + name; } - @StarlarkMethod( - name = "to_display_form", - useStarlarkThread = true, - doc = - "Returns a string representation of this label that is optimized for human readability." - + " Use this to format a Label for use in BUILD files.

The exact form" - + " of the return value is explicitly unspecified and subject to change. The" - + " following properties are guaranteed for a Label l:

") - public String getDisplayFormForStarlark(StarlarkThread starlarkThread) throws EvalException { - checkRepoVisibilityForStarlark("to_display_form"); - return getDisplayForm( - BazelModuleContext.ofInnermostBzlOrThrow(starlarkThread).bestEffortMainRepoMapping()); - } - /** * Returns a shorthand label string that is suitable for display, i.e. in addition to simplifying * the repository part, labels of the form {@code [@repo]//foo/bar:bar} are simplified to the 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 79a1f8c46c047f..a848ba5b560a6e 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 @@ -22,7 +22,6 @@ import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; -import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; /** @@ -216,7 +215,7 @@ public String getUnambiguousCanonicalForm() { *
only with Bzlmod if the current package belongs to a repository that is not visible * from the main module */ - public String getDisplayForm(@Nullable RepositoryMapping mainRepositoryMapping) { + public String getDisplayForm(RepositoryMapping mainRepositoryMapping) { return repository.getDisplayForm(mainRepositoryMapping) + "//" + pkgName; } diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java b/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java index 984ba4ece2ac75..d0b064512dd98d 100644 --- a/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java +++ b/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java @@ -247,15 +247,13 @@ public String getCanonicalForm() { *
@protobuf *
if this repository is a WORKSPACE dependency and its name is "protobuf", * or if this repository is a Bzlmod dependency of the main module and its apparent name - * is "protobuf" (in both cases only if mainRepositoryMapping is not null) + * is "protobuf" *
@@protobuf~3.19.2 *
only with Bzlmod, if this a repository that is not visible from the main module */ - public String getDisplayForm(@Nullable RepositoryMapping mainRepositoryMapping) { + public String getDisplayForm(RepositoryMapping mainRepositoryMapping) { Preconditions.checkArgument( - mainRepositoryMapping == null - || mainRepositoryMapping.ownerRepo() == null - || mainRepositoryMapping.ownerRepo().isMain()); + mainRepositoryMapping.ownerRepo() == null || mainRepositoryMapping.ownerRepo().isMain()); if (!isVisible()) { return getNameWithAt(); } @@ -263,9 +261,6 @@ public String getDisplayForm(@Nullable RepositoryMapping mainRepositoryMapping) // Packages in the main repository can always use repo-relative form. return ""; } - if (mainRepositoryMapping == null) { - return getNameWithAt(); - } if (!mainRepositoryMapping.usesStrictDeps()) { // If the main repository mapping is not using strict visibility, then Bzlmod is certainly // disabled, which means that canonical and apparent names can be used interchangeably from diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java index aa87501f99b0d6..048d6c252f966a 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java @@ -68,7 +68,6 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; import javax.annotation.Nullable; @@ -766,11 +765,6 @@ private BzlLoadValue computeInternalWithCompiledBzl( if (repoMapping == null) { return null; } - Optional mainRepoMapping = - getMainRepositoryMapping(key, builtins.starlarkSemantics, env); - if (mainRepoMapping == null) { - return null; - } Label.RepoMappingRecorder repoMappingRecorder = new Label.RepoMappingRecorder(); ImmutableList> programLoads = getLoadsFromProgram(prog); ImmutableList