From 6a2291ab0606bb5b2664fac51cbe66e1256a07d2 Mon Sep 17 00:00:00 2001 From: salma-samy Date: Wed, 2 Aug 2023 01:32:19 -0700 Subject: [PATCH] Do not fail on new fields added to lockfile data Fixes https://github.com/bazelbuild/bazel/issues/19105 PiperOrigin-RevId: 553068023 Change-Id: I877bc8ece0641c01119a9295e09175a2d0a3a0c1 --- .../bazel/bzlmod/LockFileModuleExtension.java | 29 ++++++++++++++----- .../bzlmod/SingleExtensionEvalFunction.java | 11 +++---- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/LockFileModuleExtension.java b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/LockFileModuleExtension.java index 36cad282465055..1b5eb71d60c35b 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/LockFileModuleExtension.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/LockFileModuleExtension.java @@ -29,6 +29,13 @@ @GenerateTypeAdapter public abstract class LockFileModuleExtension implements Postable { + public static Builder builder() { + return new AutoValue_LockFileModuleExtension.Builder() + // TODO(salmasamy) can be removed when updating lockfile version + .setEnvVariables(ImmutableMap.of()) + .setAccumulatedFileDigests(ImmutableMap.of()); + } + @SuppressWarnings("mutable") public abstract byte[] getBzlTransitiveDigest(); @@ -38,12 +45,20 @@ public abstract class LockFileModuleExtension implements Postable { public abstract ImmutableMap getGeneratedRepoSpecs(); - public static LockFileModuleExtension create( - byte[] transitiveDigest, - ImmutableMap accumulatedFileDigests, - ImmutableMap envVariables, - ImmutableMap generatedRepoSpecs) { - return new AutoValue_LockFileModuleExtension( - transitiveDigest, accumulatedFileDigests, envVariables, generatedRepoSpecs); + public abstract Builder toBuilder(); + + /** Builder type for {@link LockFileModuleExtension}. */ + @AutoValue.Builder + public abstract static class Builder { + + public abstract Builder setBzlTransitiveDigest(byte[] digest); + + public abstract Builder setAccumulatedFileDigests(ImmutableMap value); + + public abstract Builder setEnvVariables(ImmutableMap value); + + public abstract Builder setGeneratedRepoSpecs(ImmutableMap value); + + public abstract LockFileModuleExtension build(); } } diff --git a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/SingleExtensionEvalFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/SingleExtensionEvalFunction.java index 6714d12c4f2544..7f56efc2340aa4 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/SingleExtensionEvalFunction.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/SingleExtensionEvalFunction.java @@ -198,11 +198,12 @@ public SkyValue compute(SkyKey skyKey, Environment env) .post( ModuleExtensionResolutionEvent.create( extensionId, - LockFileModuleExtension.create( - bzlTransitiveDigest, - moduleExtensionResult.getAccumulatedFileDigests(), - extensionEnvVars, - generatedRepoSpecs))); + LockFileModuleExtension.builder() + .setBzlTransitiveDigest(bzlTransitiveDigest) + .setAccumulatedFileDigests(moduleExtensionResult.getAccumulatedFileDigests()) + .setEnvVariables(extensionEnvVars) + .setGeneratedRepoSpecs(generatedRepoSpecs) + .build())); } return createSingleExtentionValue(generatedRepoSpecs, usagesValue); }