Let module extensions track calls to `Label()`
... that use repo mapping. This is a rather obscure case of the lockfile being stale; if the `Label()` constructor is called in an extension impl function, and that call uses repo mapping of any form (i.e. the argument looks like `@foo//bar`), then we need to be ready to rerun the extension if `@foo` were to suddenly map to something else. I also did a minor refactoring in `SingleExtensionEvalFunction` around the logic to decide whether the locked extension is up-to-date. Right now we perform a "diff" between the locked extension and what we expect to be up-to-date, and if a "diff" is found *and* `--lockfile_mode=error`, we basically perform a diff again. We also don't short circuit; that is, if the transitive bzl digest has changed, there's no point in seeing whether any files have changed, but we do right now. A follow-up will be sent to fix the analogous bug for repo rules. Fixes #20721. Closes #20742. PiperOrigin-RevId: 595818144 Change-Id: Id660b7a659a7f2e4dde19c16784c2ab18a9ceb69
Showing
- src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java 4 additions, 1 deletion...ild/lib/analysis/starlark/StarlarkRuleClassFunctions.java
- src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BUILD 1 addition, 0 deletions...ain/java/com/google/devtools/build/lib/bazel/bzlmod/BUILD
- src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BazelLockFileValue.java 0 additions, 33 deletions...e/devtools/build/lib/bazel/bzlmod/BazelLockFileValue.java
- src/main/java/com/google/devtools/build/lib/bazel/bzlmod/GsonTypeAdapterUtil.java 83 additions, 1 deletion.../devtools/build/lib/bazel/bzlmod/GsonTypeAdapterUtil.java
- src/main/java/com/google/devtools/build/lib/bazel/bzlmod/LockFileModuleExtension.java 10 additions, 1 deletion...tools/build/lib/bazel/bzlmod/LockFileModuleExtension.java
- src/main/java/com/google/devtools/build/lib/bazel/bzlmod/SingleExtensionEvalFunction.java 128 additions, 38 deletions...s/build/lib/bazel/bzlmod/SingleExtensionEvalFunction.java
- src/main/java/com/google/devtools/build/lib/cmdline/Label.java 35 additions, 0 deletions...ain/java/com/google/devtools/build/lib/cmdline/Label.java
- src/test/java/com/google/devtools/build/lib/cmdline/LabelTest.java 37 additions, 0 deletions...java/com/google/devtools/build/lib/cmdline/LabelTest.java
- src/test/py/bazel/bzlmod/bazel_lockfile_test.py 80 additions, 0 deletionssrc/test/py/bazel/bzlmod/bazel_lockfile_test.py
Please register or sign in to comment