From 03efb7690d2759c9ac64989ebd9af373862b832d Mon Sep 17 00:00:00 2001 From: Fabian Meumertzheim Date: Fri, 26 Apr 2024 15:43:58 +0200 Subject: [PATCH] Do not check for yanked versions in error mode --- .../bzlmod/BazelModuleResolutionFunction.java | 46 ++++++++++--------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionFunction.java index bf836ebd14e1f3..c32265c5d6cb77 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionFunction.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionFunction.java @@ -17,6 +17,7 @@ import static com.google.common.collect.ImmutableMap.toImmutableMap; import static com.google.common.collect.ImmutableSet.toImmutableSet; +import static com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileFunction.LOCKFILE_MODE; import static com.google.devtools.build.lib.bazel.bzlmod.YankedVersionsUtil.BZLMOD_ALLOWED_YANKED_VERSIONS_ENV; import com.google.common.base.Joiner; @@ -30,6 +31,7 @@ import com.google.devtools.build.lib.bazel.BazelVersion; import com.google.devtools.build.lib.bazel.bzlmod.InterimModule.DepSpec; import com.google.devtools.build.lib.bazel.bzlmod.ModuleFileValue.RootModuleFileValue; +import com.google.devtools.build.lib.bazel.repository.RepositoryOptions; import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.BazelCompatibilityMode; import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.CheckDirectDepsMode; import com.google.devtools.build.lib.bazel.repository.downloader.Checksum; @@ -185,24 +187,6 @@ private static Selection.Result discoverAndSelect( } ImmutableMap resolvedDepGraph = selectionResult.getResolvedDepGraph(); - var yankedVersionsKeys = - resolvedDepGraph.values().stream() - .filter(m -> m.getRegistry() != null) - .map(m -> YankedVersionsValue.Key.create(m.getName(), m.getRegistry().getUrl())) - .collect(toImmutableSet()); - SkyframeLookupResult yankedVersionsResult = env.getValuesAndExceptions(yankedVersionsKeys); - if (env.valuesMissing()) { - return null; - } - var yankedVersionValues = - yankedVersionsKeys.stream() - .collect( - toImmutableMap( - key -> key, key -> (YankedVersionsValue) yankedVersionsResult.get(key))); - if (yankedVersionValues.values().stream().anyMatch(Objects::isNull)) { - return null; - } - try (SilentCloseable c = Profiler.instance().profile(ProfilerTask.BZLMOD, "verify root module direct deps")) { verifyRootModuleDirectDepsAreAccurate( @@ -220,9 +204,29 @@ private static Selection.Result discoverAndSelect( env.getListener()); } - try (SilentCloseable c = - Profiler.instance().profile(ProfilerTask.BZLMOD, "check no yanked versions")) { - checkNoYankedVersions(resolvedDepGraph, yankedVersionValues, allowedYankedVersions); + if (LOCKFILE_MODE.get(env) != RepositoryOptions.LockfileMode.ERROR) { + var yankedVersionsKeys = + resolvedDepGraph.values().stream() + .filter(m -> m.getRegistry() != null) + .map(m -> YankedVersionsValue.Key.create(m.getName(), m.getRegistry().getUrl())) + .collect(toImmutableSet()); + SkyframeLookupResult yankedVersionsResult = env.getValuesAndExceptions(yankedVersionsKeys); + if (env.valuesMissing()) { + return null; + } + var yankedVersionValues = + yankedVersionsKeys.stream() + .collect( + toImmutableMap( + key -> key, key -> (YankedVersionsValue) yankedVersionsResult.get(key))); + if (yankedVersionValues.values().stream().anyMatch(Objects::isNull)) { + return null; + } + + try (SilentCloseable c = + Profiler.instance().profile(ProfilerTask.BZLMOD, "check no yanked versions")) { + checkNoYankedVersions(resolvedDepGraph, yankedVersionValues, allowedYankedVersions); + } } return selectionResult;