From 923b15a9fbcaee243261da852a4d9d794d01aced Mon Sep 17 00:00:00 2001 From: Bruno Palermo Date: Sat, 22 Aug 2026 13:34:29 -0300 Subject: [PATCH 1/6] docs(fork): declare the fork, its licence obligations and its provenance MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This repository is no longer just a checkout of griffinbank/rules_clojure with a patch on top — it is published independently to the Bazel Central Registry — so it has to say so, and it has to satisfy the licence it inherits. Upstream is Apache-2.0 (LICENSE, unchanged and byte-identical here). Section 4(b) requires modified files to carry prominent notices stating that they were changed, which is what the new NOTICE does. NOTICE also inventories the third-party code already vendored under src/rules_clojure/{namespace,tools/reader,java/classpath}: tools.namespace, tools.reader and java.classpath are EPL-1.0, and their per-file copyright headers must never be stripped. The README gains a fork banner, and its Setup section moves from the `http_archive` + WORKSPACE snippet — which referenced repositories.bzl and setup.bzl, files that no longer exist — to `bazel_dep`. It also documents the JDK 21 requirement explicitly: the clojure_library worker runs on the TOOL JVM, and rules_clojure.fs uses java.util.HexFormat, so a build whose tool runtime is older fails with ClassNotFoundException. That is the most common way a first rules_clojure build fails and it was undocumented. One inherited inconsistency is documented rather than silently resolved: the README footer claims EPL-1.0 and points at an epl-v10.html that is not in the tree, while LICENSE is Apache-2.0. Upstream's notice is reproduced verbatim, with a statement that LICENSE governs. Resolving it is upstream's call, not this fork's. AGENTS.md records the fork's branch discipline — in particular that bazel-9-compat is the branch PR #108 is opened from and must stay mergeable by upstream, so fork-only work does not land there. --- AGENTS.md | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ NOTICE | 65 ++++++++++++++++++++++ README.md | 75 ++++++++++++++++++------- 3 files changed, 282 insertions(+), 19 deletions(-) create mode 100644 AGENTS.md create mode 100644 NOTICE diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..8d294d8 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,161 @@ +# AGENTS.md + +This file provides guidance to coding agents (Claude Code, etc.) when working with code in this repository. + +`rules_clojure` is a set of Bazel rules for building and testing Clojure. It is both a Bazel ruleset (Starlark) and a Clojure program that the rules invoke. + +## This is a fork + +Upstream is [griffinbank/rules_clojure](https://github.com/griffinbank/rules_clojure), which +does not load under Bazel 9 and was never published to the Bazel Central Registry. This fork +carries the Bazel 9 fix (offered upstream as griffinbank/rules_clojure#108) and publishes the +module to the BCR. Practical consequences when working here: + +- **Licence.** Upstream is Apache-2.0. `LICENSE` stays byte-identical, `NOTICE` records the + modifications required by §4(b), and the EPL-1.0 headers on the vendored `namespace/`, + `tools/reader/` and `java/classpath.clj` files must never be stripped. Update `NOTICE` when + the fork diverges further. +- **Branches.** `main` is the shipping line. `bazel-9-compat` is the branch PR #108 is opened + from — keep it pristine so upstream can still merge it; do not land fork-only work there. + `git remote` has `upstream` for syncs. +- **Versioning.** `MODULE.bazel`'s version is what BCR publishes and must equal the release + tag minus its `v`; the release workflow's `check` job enforces it. The fork's line starts at + 0.6.0, leaving 0.5.x free for upstream. + +## Commands + +```bash +bazel build //... # build everything +bazel test //... # run all tests +bazel test //test/rules_clojure:compile-test # run one test target +bazel run //:repl # clojure.main repl with worker + test deps on the classpath +REPIN=1 bazel run @maven_deps//:pin # repin maven_deps_install_lock.json after editing MODULE.bazel +``` + +Test targets live in `test/rules_clojure/BUILD`: `worker-test`, `persistent-classloader-test`, +`gen-build-test`, `compile-test`, `testrunner-test`. Each is a `clojure_test` running one namespace +in its own JVM. + +`examples/` is in `.bazelignore` — each example is a separate Bazel module and must be tested +from its own directory (`cd examples/simple && bazel test //...`). There are three: + +| | | +|---|---| +| `examples/bzlmod` | The **BCR test module**: consumes rules_clojure over bzlmod with Clojure from `rules_jvm_external`. Deliberately avoids the `deps` extension, which is too non-hermetic for a registry presubmit. Changing it changes what BCR runs. | +| `examples/simple` | The `tools_deps` / `gen_srcs` path, via the `deps` module extension. | +| `examples/stress` | Third-party libraries known to be awkward to AOT. | + +`.github/workflows/ci.yml` runs the ruleset and `examples/bzlmod` on Bazel 8.6.0 and 9.2.0 +across Linux and macOS, and the two `tools_deps` examples on Linux only. + +Bazel version is pinned in `.bazelversion` (9.2.0); CI overrides it with `USE_BAZEL_VERSION` +to cover 8.6.0 as well. JDK 21+ required; the root `.bazelrc` forces `local_jdk`, while +`examples/bzlmod` uses `remotejdk_21` — deliberately, since it stands in for a consumer. + +The root `deps.edn` is **not** the dependency source — it exists only to start a plain `clj` repl when +the Bazel build is broken. Real deps come from `maven.install` in `MODULE.bazel`. + +## Architecture + +Two layers: Starlark rules in `rules.bzl` / `rules/*.bzl`, and a Clojure implementation in +`src/rules_clojure/` that the rules shell out to. + +Only `clojure_library` is a genuinely new rule. `clojure_binary`, `clojure_test`, and `cljs_library` +are macros delegating to `java_binary` / `java_test`; `clojure_repl` is a small rule that adds +`classpath_dirs` on top of a java binary. + +### Compile pipeline (`clojure_library`) + +`rules/jar.bzl:clojure_jar_impl` computes the compile classpath and `src_dir`, writes a JSON args file +(`output-jar`, `src-dir`, `srcs`, `resources`, `aot-nses`, `classpath`), and runs +`//src/rules_clojure:worker` as a **Bazel persistent worker** (JSON protocol, multiplex-capable). +Inside the worker: + +- `worker.clj` — spec-validates the request, allocates a classloader, delegates, returns the response. +- `persistent_classloader.clj` — classloader cache/reuse. Read `design.md` before touching this; it + documents the classloader hierarchy, JarHell/CLJ-1544 constraints, and every rejected alternative. + Core invariants: classpaths must be *compatible* to reuse a loader, and a loader that compiled a + `defprotocol` is discarded rather than cached. +- `compile.clj` — **non-transitive** AOT: `require`s the namespace's deps, then compiles only the + target ns, so the jar holds just that ns's classfiles. This code runs on the *user's* classpath, so + it must not use third-party dependencies and should avoid forcing a Clojure version bump. +- `jar.clj` — writes the jar with fixed modification times for reproducibility; `.class` entries are + deliberately stamped 2s newer than `.clj` so Clojure's loader prefers the compiled class. + +The worker env (`libworker`) and the compile env (`libcompile`) are separate classloaders so +rules_clojure's own dependencies cannot conflict with user code. + +### Bootstrap (chicken-and-egg) + +rules_clojure cannot build itself with `clojure_library`. `src/rules_clojure/BUILD` instead defines a +`bootstrap` `java_library` holding the raw `.clj` files as resources, a `bootstrap-bin`, and genrules +that run `bootstrap_worker.clj` / `bootstrap_compiler.clj` / `bootstrap_libfs.clj` / +`bootstrap_gen_build.clj` / `bootstrap_testrunner.clj` to AOT `libworker.jar`, `libcompile.jar`, +`libfs.jar`, `libgen_build.jar`, `libtestrunner.jar`, which are pulled back in via `java_import`. + +**When adding a namespace used by the worker, compiler, gen_build, or testrunner, you must add it in +two places**: the `resources` list of the `bootstrap` `java_library`, and the `nses-to-compile` vector +in the relevant `src/rules_clojure/bootstrap_*.clj` (order matters — it is a compile order). + +### Dependency resolution and BUILD generation + +`rules/tools_deps.bzl` is a repository rule that downloads the Clojure CLI, symlinks `~/.m2/repository`, +and runs `gen_build.clj` to emit `BUILD.bazel` files with a `java_import` per maven jar plus a +per-namespace AOT target (`@deps//:org_clojure_clojure_clojure_core`). `extensions.bzl` is the bzlmod +entrypoint (`deps` module extension wrapping `clojure_tools_deps`). + +`gen_build.clj` (~1200 lines) is the largest piece and has three `-main` modes: `deps` (the +repository-rule path above), `srcs` (gazelle-like generation of `clojure_library`/`clojure_test` +targets from the source tree, exposed as `clojure_gen_srcs`), and `ns-loader` +(`clojure_gen_namespace_loader`, used for CLJS test discovery). Namespace metadata keys +`:bazel/clojure_library` and `:bazel/clojure_test`, and the `:bazel` map in `deps.edn` +(`:ignore`, `:no-aot`, `:deps`, `:clojure_library`, `:clojure_test`), are merged in here. + +### Test runner + +`testrunner.clj` is the default `main_class` for `clojure_test`. It runs one namespace with +`clojure.test` and, when Bazel sets `XML_OUTPUT_FILE`, writes a JUnit XML report with one `` +per `deftest`. A custom `main_class` may be supplied but must honour the same contract (one ns +argument, JUnit XML out, exit code 0/non-zero). + +### Vendored code + +`src/rules_clojure/namespace/`, `src/rules_clojure/tools/reader/`, and `src/rules_clojure/java/classpath.clj` +are vendored copies of tools.namespace, tools.reader, and java.classpath, renamed under the +`rules-clojure.*` prefix specifically so they cannot conflict with the user's versions. Keep them +self-contained; don't reintroduce the upstream dependencies. + +## Conventions and gotchas + +- **Bazel 9 compatibility** (current work): the native `java_*` rules are stubbed with a reduced + attribute set, and `JavaInfo`/`java_common` are no longer Starlark globals. Always + `load("@rules_java//java:defs.bzl", ...)` for `java_binary`/`java_test`/`java_library`/`java_import`, + and `@rules_java//java/common:java_info.bzl` / `java_common.bzl` for the providers. +- `clojure_library` fails if `srcs` are given with no `aot` — `srcs` are compile-time-only inputs and + do not land in the jar; use `resources` (with `resource_strip_prefix`) to ship `.clj` files. +- Whether a dependency belongs in `deps` vs `runtime_deps` is decided by AOT: anything loaded while + compiling must be in `deps`. +- Tests pass jar paths to Clojure via `env` + `$(rlocationpaths ...)` (see `TEST_JARS`, + `COMPILE_CLASSPATH`, `CLOJURE_JARS` in `test/rules_clojure/BUILD`); a `filegroup` wrapper is needed + for `java_library` deps to show up in runfiles. +- `gen-build-test` shells out to buildifier via the `BUILDIFIER` env var; generated BUILD files are + expected to be buildifier-formatted. + +## Releasing + +Tagging `v` runs `.github/workflows/release.yml`, which cuts a **draft** release via +bazel-contrib's `release_ruleset`, publishes the entry to the BCR through +`bazel-contrib/publish-to-bcr`, and only then un-drafts the release. `.bcr/*.template.json` +and `.bcr/presubmit.yml` are what the registry entry is generated from. + +Two things carry hard-won constraints and should not be "simplified": + +- `publish-to-bcr` is called **directly**, and `publish_token` is mapped explicitly rather + than via `secrets: inherit` — it is an environment secret, and `inherit` passes only + repository and organization secrets. The reasoning is in the comments in `release.yml`. +- The release must be a **draft** while assets are attached (immutable releases), and the + archive must be produced by `release_ruleset` — BCR rejects attestations signed any other + way, which is why `.github/workflows/release_prep.sh` exists at that exact path. + +Rehearse with a prerelease tag (`v0.6.0-rc1`): everything runs except the pull request against +`bazelbuild/bazel-central-registry`. diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..7069cd5 --- /dev/null +++ b/NOTICE @@ -0,0 +1,65 @@ +rules_clojure + +Copyright © 2026 Griffin Bank + +This product includes software originally developed at Griffin Bank and +published as https://github.com/griffinbank/rules_clojure, licensed under the +Apache License, Version 2.0. A copy of that licence is distributed with this +work in the file LICENSE, and governs this distribution. + + +Modifications +------------- + +This distribution is a fork, maintained at +https://github.com/bpalermo/rules_clojure by Bruno Palermo, and contains +modifications to the original work. Section 4(b) of the Apache License asks +that those be stated; as of version 0.6.0 they are: + + * Bazel 9 compatibility. Bazel 9 removed JavaInfo and java_common from the + Starlark globals and reduced the native java_* rules to stubs, so + rules.bzl, rules/{jar,namespace,repl}.bzl and the BUILD files now load + them from rules_java (8.16.1 -> 9.7.1). Offered upstream as + griffinbank/rules_clojure#108. + + * The same fix applied to GENERATED BUILD files, which the change above did + not cover: rules_clojure.gen-build now emits rules_java load statements + for the java_import and java_library targets it writes into @deps and + into ClojureScript source directories, and rules/tools_deps.bzl does the + same for the java_binary targets it generates. + + * examples/gen_srcs_bench converted from WORKSPACE to bzlmod; Bazel 9 has + removed WORKSPACE support, and its WORKSPACE referenced repositories.bzl + and setup.bzl, neither of which still exists. + + * Publication as a Bazel module to the Bazel Central Registry: the .bcr/ + templates, release automation under .github/workflows, and + examples/bzlmod as the registry test module. + + * Continuous integration moved from CircleCI to GitHub Actions, covering + Bazel 8.x and 9.x on Linux and macOS. + +Griffin Bank is neither affiliated with nor responsible for this fork. + + +Vendored third-party code +------------------------- + +The files below are copied from other projects, with their namespaces renamed +under the rules-clojure.* prefix so that they cannot conflict with a user's own +versions. They remain under the Eclipse Public License 1.0 and carry their +original copyright headers, which must not be removed: + + src/rules_clojure/namespace/{file,find,parse}.clj, parse.cljc + clojure/tools.namespace — Copyright (c) Stuart Sierra and contributors + + src/rules_clojure/tools/reader.clj, src/rules_clojure/tools/reader/** + clojure/tools.reader — Copyright (c) Nicola Mometto, Rich Hickey & + contributors + + src/rules_clojure/java/classpath.clj + clojure/java.classpath — Copyright (c) Rich Hickey, Stuart Sierra, and + contributors + +rules_clojure was itself forked from https://github.com/simuons/rules_clojure, +with additional inspiration from https://github.com/markdingram/bazel-clojure. diff --git a/README.md b/README.md index a0050b1..f975e51 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,16 @@ # Yet Another Clojure rules for [Bazel](https://bazel.build) -Status: Stable. [Griffin](https://www.griffin.com) is using it production +> **This is a fork.** The upstream project is +> [griffinbank/rules_clojure](https://github.com/griffinbank/rules_clojure), which does not +> load under Bazel 9 and has never been published to the Bazel Central Registry. This fork +> carries the Bazel 9 compatibility fix — offered upstream as +> [griffinbank/rules_clojure#108](https://github.com/griffinbank/rules_clojure/pull/108) — and +> publishes the result to the BCR so it can be consumed with a plain `bazel_dep`. It is +> maintained independently of Griffin; file issues +> [here](https://github.com/bpalermo/rules_clojure/issues), not upstream. See `NOTICE` for the +> full list of changes. + +Status: Stable. [Griffin](https://www.griffin.com) uses the upstream project in production. # Why Bazel? @@ -18,19 +28,26 @@ Bazel can cache test results, so bazel only executes tests that depend on files ## Setup -Add the following to your `WORKSPACE`: +In your `MODULE.bazel`: -```skylark -RULES_CLOJURE_SHA = $CURRENT_SHA1 -http_archive(name = "rules_clojure", - strip_prefix = "rules_clojure-%s" % RULES_CLOJURE_SHA, - url = "https://github.com/griffinbank/rules_clojure/archive/%s.zip" % RULES_CLOJURE_SHA) +```starlark +bazel_dep(name = "rules_clojure", version = "0.6.0") +``` -load("@rules_clojure//:repositories.bzl", "rules_clojure_deps") -rules_clojure_deps() +Then load the rules from `@rules_clojure//:rules.bzl`, as the examples below do. A worked +example lives in [`examples/bzlmod`](examples/bzlmod). -load("@rules_clojure//:setup.bzl", "rules_clojure_setup") -rules_clojure_setup() +### JDK + +The `clojure_library` worker runs on Bazel's **tool** JVM, not the target one, and needs Java +21 — `rules_clojure.fs` uses `java.util.HexFormat`. If your build's tool JDK is older, the +worker fails with `ClassNotFoundException: java.util.HexFormat`. Set both in your `.bazelrc`: + +``` +build --java_language_version=21 +build --java_runtime_version=remotejdk_21 +build --tool_java_language_version=21 +build --tool_java_runtime_version=remotejdk_21 ``` Differs from [simuons/rules_clojure](https://github.com/simuons/rules_clojure) that it uses `java_library` and `java_binary` as much as possible. @@ -131,6 +148,10 @@ load("@rules_clojure//rules:tools_deps.bzl", "clojure_gen_srcs") clojure_gen_srcs(name = "gen_srcs") ``` +If your source tree contains ClojureScript (`.cljs` / `.js`), the generated BUILD files include +a `java_library` and therefore `load("@rules_java//java:defs.bzl", "java_library")`, so your +`MODULE.bazel` needs `bazel_dep(name = "rules_java", ...)`. Pure-Clojure trees do not. + `gen_srcs` defines a target which behaves similarly to [bazel-gazelle](https://github.com/bazelbuild/bazel-gazelle). When run, it introspects all directories under deps.edn `:paths`, and generates a BUILD.bazel file in each directory. `gen_src` defines `clojure_library` and `clojure_test` targets. Creates a library per namespace, with AOT. Run `gen_srcs` again any time the ns declarations in the source tree change. @@ -287,7 +308,12 @@ cljs_library( # Compatibility -rules_clojure requires JDK 21 or higher. It is currently tested with Bazel 8.6 and JDK21 +rules_clojure requires JDK 21 or higher. + +This fork is tested against Bazel 8.6 and 9.2, on Linux and macOS, with JDK 21. Bazel 9 +support is the reason the fork exists: Bazel 9 removed `JavaInfo` and `java_common` from the +Starlark globals and reduced the native `java_*` rules to stubs, so both the rules and the +`BUILD` files now load them from `rules_java`. Windows is not tested. # Thanks @@ -302,10 +328,21 @@ rules_clojure requires JDK 21 or higher. It is currently tested with Bazel 8.6 a Copyright and License ---------------------------------------- -Copyright © 2026 Griffin Bank. All rights reserved. The use and -distribution terms for this software are covered by the -[Eclipse Public License 1.0] which can be found in the file -epl-v10.html at the root of this distribution. By using this software -in any fashion, you are agreeing to be bound by the terms of this -license. You must not remove this notice, or any other, from this -software. +Copyright © 2026 Griffin Bank. All rights reserved. + +This software is distributed under the **Apache License, Version 2.0**, the licence in the +`LICENSE` file at the root of this distribution, and that file governs. Upstream's notice +below refers to the Eclipse Public License 1.0 and to an `epl-v10.html` that is not present in +the tree; it is reproduced unchanged rather than edited away, and the discrepancy is upstream's +to resolve. + +> The use and distribution terms for this software are covered by the +> [Eclipse Public License 1.0] which can be found in the file +> epl-v10.html at the root of this distribution. By using this software +> in any fashion, you are agreeing to be bound by the terms of this +> license. You must not remove this notice, or any other, from this +> software. + +Code vendored from clojure/tools.namespace, clojure/tools.reader and clojure/java.classpath +remains under the Eclipse Public License 1.0, per the copyright headers on those files. See +`NOTICE` for the inventory and for the modifications this fork makes to the original work. From e509eed49bc6e5ad7be8b68a6ec3116d895b913d Mon Sep 17 00:00:00 2001 From: Bruno Palermo Date: Sat, 22 Aug 2026 13:34:45 -0300 Subject: [PATCH 2/6] build: pin Bazel 9.2.0 and select the JDK hermetically Two changes to how a build here is configured, in every module. .bazeliskrc becomes .bazelversion. Both are read by bazelisk and USE_BAZEL_VERSION overrides either, so CI can still drive the version matrix; .bazelversion is the conventional file and is what the tooling around Bazel (IDE plugins, setup-bazel) looks for. The pin moves to 9.2.0, the version this fork exists to support. The examples move with it rather than trailing behind at their own version, which is how their Bazel 9 breakage went unnoticed in the first place. local_jdk becomes remotejdk_21, with the language version stated too, and the TOOL runtime set alongside the target one. Three reasons, in order of how much they bite: - The release workflow runs `bazel test //...` on a runner whose default JDK this project does not control. With local_jdk that is a coin flip on the runner image, decided at release time. - The worker runs on the tool JVM and needs Java 21 for java.util.HexFormat, so tool_java_runtime_version is the setting that actually matters and it was being left to chance. - CI no longer needs a setup-java step, and a fresh clone builds without the developer first installing a matching JDK. --- .bazeliskrc | 1 - .bazelrc | 12 ++++++++++-- .bazelversion | 1 + examples/gen_srcs_bench/.bazeliskrc | 1 - examples/gen_srcs_bench/.bazelrc | 8 ++++++-- examples/gen_srcs_bench/.bazelversion | 1 + examples/simple/.bazeliskrc | 1 - examples/simple/.bazelrc | 8 ++++++-- examples/simple/.bazelversion | 1 + examples/stress/.bazeliskrc | 1 - examples/stress/.bazelrc | 8 ++++++-- examples/stress/.bazelversion | 1 + 12 files changed, 32 insertions(+), 12 deletions(-) delete mode 100644 .bazeliskrc create mode 100644 .bazelversion delete mode 100644 examples/gen_srcs_bench/.bazeliskrc create mode 100644 examples/gen_srcs_bench/.bazelversion delete mode 100644 examples/simple/.bazeliskrc create mode 100644 examples/simple/.bazelversion delete mode 100644 examples/stress/.bazeliskrc create mode 100644 examples/stress/.bazelversion diff --git a/.bazeliskrc b/.bazeliskrc deleted file mode 100644 index 1ab2228..0000000 --- a/.bazeliskrc +++ /dev/null @@ -1 +0,0 @@ -USE_BAZEL_VERSION=8.6.0 diff --git a/.bazelrc b/.bazelrc index 22270a6..237a6c5 100644 --- a/.bazelrc +++ b/.bazelrc @@ -1,5 +1,13 @@ test --test_output=all test --verbose_failures -build --java_runtime_version=local_jdk -build --tool_java_runtime_version=local_jdk +# remotejdk rather than local_jdk: the build is then hermetic, CI needs no setup-java step, +# and bazel-contrib's release workflow — which runs `bazel test //...` on a runner whose +# default JDK we do not control — cannot fail on the JDK version. +# +# 21 is the floor: rules_clojure.fs uses java.util.HexFormat, and the TOOL runtime is what +# runs the persistent worker, so both have to be set. +build --java_language_version=21 +build --java_runtime_version=remotejdk_21 +build --tool_java_language_version=21 +build --tool_java_runtime_version=remotejdk_21 diff --git a/.bazelversion b/.bazelversion new file mode 100644 index 0000000..deeb3d6 --- /dev/null +++ b/.bazelversion @@ -0,0 +1 @@ +9.2.0 diff --git a/examples/gen_srcs_bench/.bazeliskrc b/examples/gen_srcs_bench/.bazeliskrc deleted file mode 100644 index 1ab2228..0000000 --- a/examples/gen_srcs_bench/.bazeliskrc +++ /dev/null @@ -1 +0,0 @@ -USE_BAZEL_VERSION=8.6.0 diff --git a/examples/gen_srcs_bench/.bazelrc b/examples/gen_srcs_bench/.bazelrc index a7c6157..1b8e87c 100644 --- a/examples/gen_srcs_bench/.bazelrc +++ b/examples/gen_srcs_bench/.bazelrc @@ -1,2 +1,6 @@ -build --java_runtime_version=local_jdk -build --tool_java_runtime_version=local_jdk +# Hermetic, and 21 because the clojure_library worker runs on the TOOL JVM and +# rules_clojure.fs needs java.util.HexFormat. +build --java_language_version=21 +build --java_runtime_version=remotejdk_21 +build --tool_java_language_version=21 +build --tool_java_runtime_version=remotejdk_21 diff --git a/examples/gen_srcs_bench/.bazelversion b/examples/gen_srcs_bench/.bazelversion new file mode 100644 index 0000000..deeb3d6 --- /dev/null +++ b/examples/gen_srcs_bench/.bazelversion @@ -0,0 +1 @@ +9.2.0 diff --git a/examples/simple/.bazeliskrc b/examples/simple/.bazeliskrc deleted file mode 100644 index 1ab2228..0000000 --- a/examples/simple/.bazeliskrc +++ /dev/null @@ -1 +0,0 @@ -USE_BAZEL_VERSION=8.6.0 diff --git a/examples/simple/.bazelrc b/examples/simple/.bazelrc index a7c6157..1b8e87c 100644 --- a/examples/simple/.bazelrc +++ b/examples/simple/.bazelrc @@ -1,2 +1,6 @@ -build --java_runtime_version=local_jdk -build --tool_java_runtime_version=local_jdk +# Hermetic, and 21 because the clojure_library worker runs on the TOOL JVM and +# rules_clojure.fs needs java.util.HexFormat. +build --java_language_version=21 +build --java_runtime_version=remotejdk_21 +build --tool_java_language_version=21 +build --tool_java_runtime_version=remotejdk_21 diff --git a/examples/simple/.bazelversion b/examples/simple/.bazelversion new file mode 100644 index 0000000..deeb3d6 --- /dev/null +++ b/examples/simple/.bazelversion @@ -0,0 +1 @@ +9.2.0 diff --git a/examples/stress/.bazeliskrc b/examples/stress/.bazeliskrc deleted file mode 100644 index 1ab2228..0000000 --- a/examples/stress/.bazeliskrc +++ /dev/null @@ -1 +0,0 @@ -USE_BAZEL_VERSION=8.6.0 diff --git a/examples/stress/.bazelrc b/examples/stress/.bazelrc index 22270a6..11b2324 100644 --- a/examples/stress/.bazelrc +++ b/examples/stress/.bazelrc @@ -1,5 +1,9 @@ test --test_output=all test --verbose_failures -build --java_runtime_version=local_jdk -build --tool_java_runtime_version=local_jdk +# Hermetic, and 21 because the clojure_library worker runs on the TOOL JVM and +# rules_clojure.fs needs java.util.HexFormat. +build --java_language_version=21 +build --java_runtime_version=remotejdk_21 +build --tool_java_language_version=21 +build --tool_java_runtime_version=remotejdk_21 diff --git a/examples/stress/.bazelversion b/examples/stress/.bazelversion new file mode 100644 index 0000000..deeb3d6 --- /dev/null +++ b/examples/stress/.bazelversion @@ -0,0 +1 @@ +9.2.0 From 210ae980bfc6bb39800bbd3677b1f48f8f9ed47b Mon Sep 17 00:00:00 2001 From: Bruno Palermo Date: Sat, 22 Aug 2026 13:35:07 -0300 Subject: [PATCH 3/6] feat(bcr): publish as a Bazel module to the Bazel Central Registry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rules_clojure has never been in the BCR, so every consumer needs an archive_override or git_override — and git_override is honoured only in the root module, which means a module that depends on rules_clojure cannot be published either. This makes the fork installable with a plain bazel_dep. Version 0.6.0. Upstream's latest is 0.5, so this leaves 0.5.x free and a future upstream patch release cannot collide with this line. The Clojure 1.8 maven install moves to a dev_dependency extension proxy. It exists only for persistent-classloader-test, which proves the classloader cache copes with a foreign Clojure version; dev dependencies are ignored when this module is not the root, so a consumer no longer downloads it. Verified with `bazel mod graph` from examples/bzlmod: the module now brings rules_java and rules_jvm_external and nothing else. Release automation follows bazel-contrib's, and several details in it are load-bearing rather than stylistic — the comments in release.yml say which and why, because each was a failure paid for once already elsewhere: - publish-to-bcr is called directly, not through a local wrapper. A wrapper relying on `secrets: inherit` for its REQUIRED publish_token fails workflow startup validation for every job in the file. - publish_token is mapped explicitly for the same reason, and because it is an environment secret, which `inherit` does not pass. - The release is cut as a draft and published only after BCR succeeds: attestations must be attached while the release is still mutable. - The archive is built by .github/workflows/release_prep.sh at exactly that path, because release_ruleset takes no command input — an archive attested any other way is rejected by BCR. - A prerelease tag (v0.6.0-rc1) runs everything except opening the upstream pull request, so the pipeline can be rehearsed without spending BCR reviewers' attention on an add-only registry. examples/bzlmod is new and is what the registry presubmit runs: a module that depends on rules_clojure over bzlmod, brings its own Clojure from Maven, and AOT-compiles and tests Clojure code. It deliberately does not use rules_clojure's own `deps` extension — that downloads the Clojure CLI from download.clojure.org and symlinks $HOME/.m2/repository, which is too non-hermetic to hang a registry presubmit on. examples/simple keeps covering that path from CI instead. presubmit.yml also builds //src/rules_clojure:worker from an anonymous module. That runs the bootstrap genrules, which proves the module's own maven_deps install resolves when rules_clojure is NOT the root module — the most likely way publication breaks. --- .bcr/metadata.template.json | 13 + .bcr/presubmit.yml | 44 +++ .bcr/source.template.json | 5 + .github/workflows/release.yml | 130 +++++++++ .github/workflows/release_prep.sh | 52 ++++ .gitignore | 4 + MODULE.bazel | 26 +- MODULE.bazel.lock | 263 ++++++++++++++---- examples/bzlmod/.bazelrc | 14 + examples/bzlmod/MODULE.bazel | 54 ++++ examples/bzlmod/src/example/BUILD.bazel | 17 ++ examples/bzlmod/src/example/core.clj | 11 + examples/bzlmod/test/example/BUILD.bazel | 18 ++ examples/bzlmod/test/example/core_test.clj | 6 + examples/gen_srcs_bench/MODULE.bazel | 2 +- examples/gen_srcs_bench/MODULE.bazel.lock | 303 +++++++++++++++++++++ examples/simple/MODULE.bazel | 2 +- examples/simple/MODULE.bazel.lock | 169 +++++------- examples/stress/MODULE.bazel | 2 +- examples/stress/MODULE.bazel.lock | 170 +++++------- 20 files changed, 1035 insertions(+), 270 deletions(-) create mode 100644 .bcr/metadata.template.json create mode 100644 .bcr/presubmit.yml create mode 100644 .bcr/source.template.json create mode 100644 .github/workflows/release.yml create mode 100755 .github/workflows/release_prep.sh create mode 100644 examples/bzlmod/.bazelrc create mode 100644 examples/bzlmod/MODULE.bazel create mode 100644 examples/bzlmod/src/example/BUILD.bazel create mode 100644 examples/bzlmod/src/example/core.clj create mode 100644 examples/bzlmod/test/example/BUILD.bazel create mode 100644 examples/bzlmod/test/example/core_test.clj create mode 100644 examples/gen_srcs_bench/MODULE.bazel.lock diff --git a/.bcr/metadata.template.json b/.bcr/metadata.template.json new file mode 100644 index 0000000..196476c --- /dev/null +++ b/.bcr/metadata.template.json @@ -0,0 +1,13 @@ +{ + "homepage": "https://github.com/bpalermo/rules_clojure", + "maintainers": [ + { + "name": "Bruno Palermo", + "github": "bpalermo", + "github_user_id": 4821983 + } + ], + "repository": ["github:bpalermo/rules_clojure"], + "versions": [], + "yanked_versions": {} +} diff --git a/.bcr/presubmit.yml b/.bcr/presubmit.yml new file mode 100644 index 0000000..3c11d14 --- /dev/null +++ b/.bcr/presubmit.yml @@ -0,0 +1,44 @@ +# Bazel 8.x and 9.x, because both are supported and the whole point of this fork is that +# 9 works — a matrix that tested only one of them would let the other rot silently. +# +# Linux and macOS arm64 only. Windows has never been supported (the toolchain shells out +# to POSIX installers and the worker's path handling is untested there), and claiming it +# would fail here rather than merely disappoint. +matrix: + platform: ["ubuntu2404", "macos_arm64"] + bazel: ["8.x", "9.x"] + +tasks: + verify_targets: + name: the worker builds as a dependency + platform: ${{ platform }} + bazel: ${{ bazel }} + # A buildable target, not a .bzl file, and specifically this one: building the worker + # runs the bootstrap genrules, which proves the module's own maven_deps install + # resolves when rules_clojure is NOT the root module. That is the single most likely + # way publication breaks. + build_flags: + # The bootstrap genrules run Clojure on the TOOL JVM, and rules_clojure.fs needs + # java.util.HexFormat (Java 17+). The anonymous module BCR generates has no + # .bazelrc, so state the tool runtime here. + - "--tool_java_language_version=21" + - "--tool_java_runtime_version=remotejdk_21" + build_targets: + - "@rules_clojure//src/rules_clojure:worker" + +# The real test: a module that depends on this one, brings its own Clojure from Maven, +# and AOT-compiles and tests Clojure code. Its own .bazelrc carries the JDK settings. +bcr_test_module: + module_path: "examples/bzlmod" + matrix: + platform: ["ubuntu2404", "macos_arm64"] + bazel: ["8.x", "9.x"] + tasks: + run_tests: + name: build and test Clojure through the published module + platform: ${{ platform }} + bazel: ${{ bazel }} + build_targets: + - "//src/example:hello" + test_targets: + - "//test/example:core_test" diff --git a/.bcr/source.template.json b/.bcr/source.template.json new file mode 100644 index 0000000..f5b34d8 --- /dev/null +++ b/.bcr/source.template.json @@ -0,0 +1,5 @@ +{ + "url": "https://github.com/{OWNER}/{REPO}/releases/download/{TAG}/{REPO}-{TAG}.tar.gz", + "integrity": "", + "strip_prefix": "{REPO}-{VERSION}" +} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..e0e0d39 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,130 @@ +name: release + +on: + # `*` matches any character except `/`, so the last one absorbs the suffix in + # v0.6.0-rc1: prerelease tags trigger this too, and the `prerelease` input below marks + # them accordingly. Rehearse with a prerelease tag rather than a dry run — the source + # archive must come from bazel-contrib/.github's release_ruleset workflow or BCR rejects + # its attestation, and that workflow always releases. + push: + tags: ["v*.*.*"] + workflow_dispatch: + inputs: + tag_name: + description: "Tag to release, e.g. v0.6.0" + required: true + type: string + +permissions: + contents: read + +jobs: + # Fail in seconds on a misconfigured release rather than after the whole pipeline. + check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + + - name: MODULE.bazel must agree with the tag + env: + TAG: ${{ inputs.tag_name || github.ref_name }} + run: | + version="${TAG#v}" + echo "releasing $version" + modver=$(grep -oE 'version = "[^"]+"' MODULE.bazel | head -1 | cut -d'"' -f2) + if [ "$modver" != "$version" ]; then + echo "::error::MODULE.bazel declares '$modver' but the tag is '$version'" >&2 + exit 1 + fi + + # The BCR entry commit's AUTHOR must be the address the Google CLA is signed under: + # bazelbuild/bazel-central-registry runs a cla/google check that reads the commit + # email, and publish-to-bcr otherwise defaults to a noreply address, which fails it + # AFTER the release is published and the tag can no longer move. + # + # A repository variable rather than a literal, because this repo is public. Only the + # length is printed; the address is not echoed into a public log. + - name: the CLA author address must be configured + env: + BCR_AUTHOR_EMAIL: ${{ vars.BCR_AUTHOR_EMAIL }} + run: | + if [ -z "${BCR_AUTHOR_EMAIL}" ]; then + echo "::error::repository variable BCR_AUTHOR_EMAIL is unset. Set it to the address the Google CLA is signed under: gh variable set BCR_AUTHOR_EMAIL" >&2 + exit 1 + fi + case "${BCR_AUTHOR_EMAIL}" in + *@*.*) echo "BCR_AUTHOR_EMAIL is set (${#BCR_AUTHOR_EMAIL} chars)" ;; + *) echo "::error::BCR_AUTHOR_EMAIL does not look like an email address" >&2; exit 1 ;; + esac + + # Through bazel-contrib's workflow rather than `gh release create`: BCR verifies that a + # module's source-archive attestation was signed by release_ruleset and rejects + # attestations produced any other way. + # + # draft: true is required for attestations to coexist with immutable releases — assets + # must be attached while the release is still mutable. `finalize` publishes it. + release: + needs: check + permissions: + contents: write + id-token: write + attestations: write + uses: bazel-contrib/.github/.github/workflows/release_ruleset.yaml@v7.7.0 + with: + bazel_test_command: "bazel test //..." + draft: true + # Derived from the tag: anything with a -suffix (v0.6.0-rc1) is a prerelease. + prerelease: ${{ contains(inputs.tag_name || github.ref_name, '-') }} + release_files: rules_clojure-*.tar.gz + tag_name: ${{ inputs.tag_name || github.ref_name }} + + # Called DIRECTLY, not through a local wrapper workflow. A wrapper that relies on + # `secrets: inherit` to satisfy this workflow's REQUIRED publish_token fails startup + # validation for the entire release workflow — an inherited secret set is not statically + # known, so validation cannot prove the secret is present. + publish-to-bcr: + needs: release + permissions: + attestations: write + contents: write + id-token: write + uses: bazel-contrib/publish-to-bcr/.github/workflows/publish.yaml@v1.5.0 + with: + tag_name: ${{ inputs.tag_name || github.ref_name }} + # A fork of bazelbuild/bazel-central-registry that the token can push a branch to; + # the pull request is opened from there against upstream. + registry_fork: bpalermo/bazel-central-registry + # A prerelease pushes the entry branch to the fork but stops short of the upstream + # pull request. BCR is add-only — a merged release-candidate entry is permanent — + # and rehearsing must not spend BCR reviewers' attention. Everything before the pull + # request (token auth, asset download, attestation, entry generation) still runs. + open_pull_request: ${{ !contains(inputs.tag_name || github.ref_name, '-') }} + # A `uses:` job cannot declare `environment:` itself (actions/runner#1490), so it is + # passed as an input for the callee's job to declare — which is also the only place + # the environment secret can be resolved. The `bcr-publish` environment's policy + # allows only v* tags, so a pull request cannot reach the token. + environment: bcr-publish + # Required with immutable releases: the release is still a draft while this runs, so + # downloading assets by release URL would 404. + download_default_release_artifacts: true + author_name: Bruno Palermo + author_email: ${{ vars.BCR_AUTHOR_EMAIL }} + # Explicitly mapped, NOT `inherit`: PUBLISH_TOKEN is an ENVIRONMENT secret, and + # `inherit` passes only repository and organization secrets. This expression is empty + # at this level — which is all the static required-secret check needs — and the + # environment secret shadows it inside the callee's job. Do not "simplify" it. + secrets: + publish_token: ${{ secrets.PUBLISH_TOKEN }} + + # Publishing the release is the LAST thing that happens: it is the only irreversible, + # publicly visible step, and everything before it can be re-run. + finalize: + needs: [check, publish-to-bcr] + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - env: + TAG: ${{ inputs.tag_name || github.ref_name }} + GH_TOKEN: ${{ github.token }} + run: gh release edit "$TAG" --draft=false --repo "$GITHUB_REPOSITORY" diff --git a/.github/workflows/release_prep.sh b/.github/workflows/release_prep.sh new file mode 100755 index 0000000..d1e33c4 --- /dev/null +++ b/.github/workflows/release_prep.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash +# Prepare the release archive. Called by bazel-contrib/.github's release_ruleset workflow +# with the tag as its only argument; stdout becomes the release notes. +# +# The path is hard-coded on purpose upstream: release_ruleset has no release_prep_command +# input, because a dispatch-supplied command would not be covered by the attestation. That +# is also why BCR only trusts source archives produced this way — it verifies the signing +# workflow, so an archive attested any other way is rejected. +# +# This is a source-only ruleset, so the archive is just the tagged tree. The prefix matches +# what GitHub generates for source archives, so switching between the two costs nothing. + +set -o errexit -o nounset -o pipefail + +TAG="${1:?tag, e.g. v0.6.0}" +PREFIX="rules_clojure-${TAG#v}" +ARCHIVE="rules_clojure-${TAG}.tar.gz" + +git archive --format=tar --prefix="${PREFIX}/" "${TAG}" | gzip > "${ARCHIVE}" + +# Sanity check rather than trust: an archive whose MODULE.bazel disagrees with the tag +# would be rejected by BCR much later, with a far less obvious message. +declared=$(tar -xzOf "${ARCHIVE}" "${PREFIX}/MODULE.bazel" \ + | grep -oE 'version = "[^"]+"' | head -1 | cut -d'"' -f2) +if [ "${declared}" != "${TAG#v}" ]; then + echo "archived MODULE.bazel declares '${declared}', tag is '${TAG#v}'" >&2 + exit 1 +fi + +cat < spec.alpha -> clojure is a real cycle in the Maven metadata, and Bazel's +# analysis phase rejects it. Cutting the back-edge resolves it; clojure itself is pinned +# above, so nothing leaves the classpath. +maven.artifact( + name = "maven", + artifact = "spec.alpha", + exclusions = ["org.clojure:clojure"], + group = "org.clojure", + version = "0.5.238", +) +maven.artifact( + name = "maven", + artifact = "core.specs.alpha", + exclusions = ["org.clojure:clojure"], + group = "org.clojure", + version = "0.4.74", +) +use_repo(maven, "maven") diff --git a/examples/bzlmod/src/example/BUILD.bazel b/examples/bzlmod/src/example/BUILD.bazel new file mode 100644 index 0000000..3807a1d --- /dev/null +++ b/examples/bzlmod/src/example/BUILD.bazel @@ -0,0 +1,17 @@ +load("@rules_clojure//:rules.bzl", "clojure_binary", "clojure_library") + +package(default_visibility = ["//visibility:public"]) + +clojure_library( + name = "core", + srcs = ["core.clj"], + aot = ["example.core"], + deps = ["@maven//:org_clojure_clojure"], + resource_strip_prefix = "src", +) + +clojure_binary( + name = "hello", + main_class = "example.core", + runtime_deps = [":core"], +) diff --git a/examples/bzlmod/src/example/core.clj b/examples/bzlmod/src/example/core.clj new file mode 100644 index 0000000..127deec --- /dev/null +++ b/examples/bzlmod/src/example/core.clj @@ -0,0 +1,11 @@ +(ns example.core + (:gen-class)) + +(defn greeting + "The one piece of behaviour this example asserts, so that the test proves AOT'd code + actually loads and runs rather than merely compiling." + [who] + (str "hello, " who)) + +(defn -main [& args] + (println (greeting (or (first args) "world")))) diff --git a/examples/bzlmod/test/example/BUILD.bazel b/examples/bzlmod/test/example/BUILD.bazel new file mode 100644 index 0000000..6fb44bc --- /dev/null +++ b/examples/bzlmod/test/example/BUILD.bazel @@ -0,0 +1,18 @@ +load("@rules_clojure//:rules.bzl", "clojure_library", "clojure_test") + +# resources, not srcs: the test namespace is not AOT'd, it is loaded from source by the +# test runner. clojure_library fails fast on srcs without aot. +clojure_library( + name = "core_test_lib", + testonly = True, + resources = ["core_test.clj"], + resource_strip_prefix = "test", + deps = ["@maven//:org_clojure_clojure"], + runtime_deps = ["//src/example:core"], +) + +clojure_test( + name = "core_test", + test_ns = "example.core-test", + runtime_deps = [":core_test_lib"], +) diff --git a/examples/bzlmod/test/example/core_test.clj b/examples/bzlmod/test/example/core_test.clj new file mode 100644 index 0000000..c0c0c17 --- /dev/null +++ b/examples/bzlmod/test/example/core_test.clj @@ -0,0 +1,6 @@ +(ns example.core-test + (:require [clojure.test :refer [deftest is]] + [example.core :as core])) + +(deftest greeting-test + (is (= "hello, world" (core/greeting "world")))) diff --git a/examples/gen_srcs_bench/MODULE.bazel b/examples/gen_srcs_bench/MODULE.bazel index 3ffddf6..f413879 100644 --- a/examples/gen_srcs_bench/MODULE.bazel +++ b/examples/gen_srcs_bench/MODULE.bazel @@ -3,7 +3,7 @@ # exists any more, and Bazel 9 has removed WORKSPACE support outright. module(name = "example-gen-srcs-bench") -bazel_dep(name = "rules_clojure", version = "0.5") +bazel_dep(name = "rules_clojure", version = "0.6.0") bazel_dep(name = "rules_java", version = "9.7.1") local_path_override( diff --git a/examples/gen_srcs_bench/MODULE.bazel.lock b/examples/gen_srcs_bench/MODULE.bazel.lock new file mode 100644 index 0000000..df9b247 --- /dev/null +++ b/examples/gen_srcs_bench/MODULE.bazel.lock @@ -0,0 +1,303 @@ +{ + "lockFileVersion": 24, + "registryFileHashes": { + "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", + "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", + "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", + "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.2/MODULE.bazel": "73939767a4686cd9a520d16af5ab440071ed75cec1a876bf2fcfaf1f71987a16", + "https://bcr.bazel.build/modules/abseil-cpp/20250127.1/MODULE.bazel": "c4a89e7ceb9bf1e25cf84a9f830ff6b817b72874088bf5141b314726e46a57c1", + "https://bcr.bazel.build/modules/abseil-cpp/20250512.1/MODULE.bazel": "d209fdb6f36ffaf61c509fcc81b19e81b411a999a934a032e10cd009a0226215", + "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/MODULE.bazel": "51f2312901470cdab0dbdf3b88c40cd21c62a7ed58a3de45b365ddc5b11bcab2", + "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/source.json": "cea3901d7e299da7320700abbaafe57a65d039f10d0d7ea601c4a66938ea4b0c", + "https://bcr.bazel.build/modules/apple_support/1.11.1/MODULE.bazel": "1843d7cd8a58369a444fc6000e7304425fba600ff641592161d9f15b179fb896", + "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85", + "https://bcr.bazel.build/modules/apple_support/1.23.1/MODULE.bazel": "53763fed456a968cf919b3240427cf3a9d5481ec5466abc9d5dc51bc70087442", + "https://bcr.bazel.build/modules/apple_support/1.24.2/MODULE.bazel": "0e62471818affb9f0b26f128831d5c40b074d32e6dda5a0d3852847215a41ca4", + "https://bcr.bazel.build/modules/apple_support/1.24.2/source.json": "2c22c9827093250406c5568da6c54e6fdf0ef06238def3d99c71b12feb057a8d", + "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", + "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", + "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", + "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", + "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", + "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", + "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", + "https://bcr.bazel.build/modules/bazel_features/1.23.0/MODULE.bazel": "fd1ac84bc4e97a5a0816b7fd7d4d4f6d837b0047cf4cbd81652d616af3a6591a", + "https://bcr.bazel.build/modules/bazel_features/1.27.0/MODULE.bazel": "621eeee06c4458a9121d1f104efb80f39d34deff4984e778359c60eaf1a8cb65", + "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d", + "https://bcr.bazel.build/modules/bazel_features/1.3.0/MODULE.bazel": "cdcafe83ec318cda34e02948e81d790aab8df7a929cec6f6969f13a489ccecd9", + "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87", + "https://bcr.bazel.build/modules/bazel_features/1.36.0/MODULE.bazel": "596cb62090b039caf1cad1d52a8bc35cf188ca9a4e279a828005e7ee49a1bec3", + "https://bcr.bazel.build/modules/bazel_features/1.36.0/source.json": "279625cafa5b63cc0a8ee8448d93bc5ac1431f6000c50414051173fd22a6df3c", + "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", + "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", + "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", + "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", + "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", + "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", + "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/MODULE.bazel": "88ade7293becda963e0e3ea33e7d54d3425127e0a326e0d17da085a5f1f03ff6", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/MODULE.bazel": "69ad6927098316848b34a9142bcc975e018ba27f08c4ff403f50c1b6e646ca67", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/source.json": "34a3c8bcf233b835eb74be9d628899bb32999d3e0eadef1947a0a562a2b16ffb", + "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", + "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", + "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", + "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", + "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", + "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", + "https://bcr.bazel.build/modules/googletest/1.15.2/MODULE.bazel": "6de1edc1d26cafb0ea1a6ab3f4d4192d91a312fd2d360b63adaa213cd00b2108", + "https://bcr.bazel.build/modules/googletest/1.17.0/MODULE.bazel": "dbec758171594a705933a29fcf69293d2468c49ec1f2ebca65c36f504d72df46", + "https://bcr.bazel.build/modules/googletest/1.17.0/source.json": "38e4454b25fc30f15439c0378e57909ab1fd0a443158aa35aec685da727cd713", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", + "https://bcr.bazel.build/modules/jsoncpp/1.9.6/MODULE.bazel": "2f8d20d3b7d54143213c4dfc3d98225c42de7d666011528dc8fe91591e2e17b0", + "https://bcr.bazel.build/modules/jsoncpp/1.9.6/source.json": "a04756d367a2126c3541682864ecec52f92cdee80a35735a3cb249ce015ca000", + "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", + "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/MODULE.bazel": "6f7b417dcc794d9add9e556673ad25cb3ba835224290f4f848f8e2db1e1fca74", + "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/source.json": "f448c6e8963fdfa7eb831457df83ad63d3d6355018f6574fb017e8169deb43a9", + "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", + "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", + "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", + "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", + "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", + "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", + "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", + "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc", + "https://bcr.bazel.build/modules/platforms/1.0.0/MODULE.bazel": "f05feb42b48f1b3c225e4ccf351f367be0371411a803198ec34a389fb22aa580", + "https://bcr.bazel.build/modules/platforms/1.0.0/source.json": "f4ff1fd412e0246fd38c82328eb209130ead81d62dcd5a9e40910f867f733d96", + "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", + "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", + "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", + "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", + "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", + "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", + "https://bcr.bazel.build/modules/protobuf/29.1/MODULE.bazel": "557c3457560ff49e122ed76c0bc3397a64af9574691cb8201b4e46d4ab2ecb95", + "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", + "https://bcr.bazel.build/modules/protobuf/32.1/MODULE.bazel": "89cd2866a9cb07fee9ff74c41ceace11554f32e0d849de4e23ac55515cfada4d", + "https://bcr.bazel.build/modules/protobuf/32.1/source.json": "bd2664e90875c0cd755d1d9b7a103a4b027893ac8eafa3bba087557ffc244ad4", + "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", + "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34", + "https://bcr.bazel.build/modules/pybind11_bazel/3.0.0/MODULE.bazel": "a2bfa6020ed603a00d944161c63173c7f109774e99bee0c2cd8dbf24159f8134", + "https://bcr.bazel.build/modules/pybind11_bazel/3.0.0/source.json": "d8f5104d4c21d272bf327ebe44366fb0b4c036cdaa1f5cceb21a408ca4ef2ef8", + "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", + "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/MODULE.bazel": "b4963dda9b31080be1905ef085ecd7dd6cd47c05c79b9cdf83ade83ab2ab271a", + "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa", + "https://bcr.bazel.build/modules/re2/2025-11-05.bcr.1/MODULE.bazel": "3d9d4995833fc0334fc5c88b56a05288dd25d651544cd7b2233bbd6357bbeba0", + "https://bcr.bazel.build/modules/re2/2025-11-05.bcr.1/source.json": "7df1394aabda1c9bc188a302f5d54b1c657924edd04ebc57d2be29dbd7efd141", + "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", + "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", + "https://bcr.bazel.build/modules/rules_apple/3.16.0/MODULE.bazel": "0d1caf0b8375942ce98ea944be754a18874041e4e0459401d925577624d3a54a", + "https://bcr.bazel.build/modules/rules_apple/3.16.0/source.json": "d8b5fe461272018cc07cfafce11fe369c7525330804c37eec5a82f84cd475366", + "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", + "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", + "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", + "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", + "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", + "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", + "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", + "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", + "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", + "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", + "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", + "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", + "https://bcr.bazel.build/modules/rules_cc/0.2.0/MODULE.bazel": "b5c17f90458caae90d2ccd114c81970062946f49f355610ed89bebf954f5783c", + "https://bcr.bazel.build/modules/rules_cc/0.2.14/MODULE.bazel": "353c99ed148887ee89c54a17d4100ae7e7e436593d104b668476019023b58df8", + "https://bcr.bazel.build/modules/rules_cc/0.2.17/MODULE.bazel": "1849602c86cb60da8613d2de887f9566a6d354a6df6d7009f9d04a14402f9a84", + "https://bcr.bazel.build/modules/rules_cc/0.2.17/source.json": "3832f45d145354049137c0090df04629d9c2b5493dc5c2bf46f1834040133a07", + "https://bcr.bazel.build/modules/rules_cc/0.2.8/MODULE.bazel": "f1df20f0bf22c28192a794f29b501ee2018fa37a3862a1a2132ae2940a23a642", + "https://bcr.bazel.build/modules/rules_cc/0.2.9/MODULE.bazel": "34263f1dca62ea664265438cef714d7db124c03e1ed55ebb4f1dc860164308d1", + "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", + "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", + "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", + "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", + "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", + "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", + "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", + "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", + "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", + "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", + "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", + "https://bcr.bazel.build/modules/rules_java/8.14.0/MODULE.bazel": "717717ed40cc69994596a45aec6ea78135ea434b8402fb91b009b9151dd65615", + "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", + "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", + "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", + "https://bcr.bazel.build/modules/rules_java/9.7.1/MODULE.bazel": "aced1dc2cf4282cf56f1ab13b697b88dc676898b2630713d3e82a94371f7eceb", + "https://bcr.bazel.build/modules/rules_java/9.7.1/source.json": "59be399068e8a9a8bd90236112fb9a9d9acc08de745c49e33b4b7b861de6fa99", + "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", + "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", + "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", + "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", + "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", + "https://bcr.bazel.build/modules/rules_jvm_external/6.7/MODULE.bazel": "e717beabc4d091ecb2c803c2d341b88590e9116b8bf7947915eeb33aab4f96dd", + "https://bcr.bazel.build/modules/rules_jvm_external/6.8/MODULE.bazel": "b5afe861e867e4c8e5b88e401cb7955bd35924258f97b1862cc966cbcf4f1a62", + "https://bcr.bazel.build/modules/rules_jvm_external/6.8/source.json": "c85e553d5ac17f7825cd85b9cceb500c64f9e44f0e93c7887469e430c4ae9eff", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", + "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", + "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", + "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", + "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", + "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a", + "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", + "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", + "https://bcr.bazel.build/modules/rules_proto/6.0.0-rc1/MODULE.bazel": "1e5b502e2e1a9e825eef74476a5a1ee524a92297085015a052510b09a1a09483", + "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", + "https://bcr.bazel.build/modules/rules_proto/7.1.0/MODULE.bazel": "002d62d9108f75bb807cd56245d45648f38275cb3a99dcd45dfb864c5d74cb96", + "https://bcr.bazel.build/modules/rules_proto/7.1.0/source.json": "39f89066c12c24097854e8f57ab8558929f9c8d474d34b2c00ac04630ad8940e", + "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", + "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", + "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", + "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", + "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", + "https://bcr.bazel.build/modules/rules_python/0.33.2/MODULE.bazel": "3e036c4ad8d804a4dad897d333d8dce200d943df4827cb849840055be8d2e937", + "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", + "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", + "https://bcr.bazel.build/modules/rules_python/1.4.1/MODULE.bazel": "8991ad45bdc25018301d6b7e1d3626afc3c8af8aaf4bc04f23d0b99c938b73a6", + "https://bcr.bazel.build/modules/rules_python/1.6.3/MODULE.bazel": "a7b80c42cb3de5ee2a5fa1abc119684593704fcd2fec83165ebe615dec76574f", + "https://bcr.bazel.build/modules/rules_python/1.6.3/source.json": "f0be74977e5604a6526c8a416cda22985093ff7d5d380d41722d7e44015cc419", + "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", + "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b", + "https://bcr.bazel.build/modules/rules_shell/0.3.0/source.json": "c55ed591aa5009401ddf80ded9762ac32c358d2517ee7820be981e2de9756cf3", + "https://bcr.bazel.build/modules/rules_swift/1.16.0/MODULE.bazel": "4a09f199545a60d09895e8281362b1ff3bb08bbde69c6fc87aff5b92fcc916ca", + "https://bcr.bazel.build/modules/rules_swift/2.1.1/MODULE.bazel": "494900a80f944fc7aa61500c2073d9729dff0b764f0e89b824eb746959bc1046", + "https://bcr.bazel.build/modules/rules_swift/2.1.1/source.json": "40fc69dfaac64deddbb75bd99cdac55f4427d9ca0afbe408576a65428427a186", + "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", + "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", + "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", + "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", + "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", + "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", + "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", + "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/MODULE.bazel": "5e463fbfba7b1701d957555ed45097d7f984211330106ccd1352c6e0af0dcf91", + "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/source.json": "32bd87e5f4d7acc57c5b2ff7c325ae3061d5e242c0c4c214ae87e0f1c13e54cb", + "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", + "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "eec517b5bbe5492629466e11dae908d043364302283de25581e3eb944326c4ca", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/source.json": "22bc55c47af97246cfc093d0acf683a7869377de362b5d1c552c2c2e16b7a806", + "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" + }, + "selectedYankedVersions": {}, + "moduleExtensions": { + "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { + "general": { + "bzlTransitiveDigest": "nvW/NrBXlAmiQw99EMGKkLaD2KbNp2mQDlxdfpr+0Ls=", + "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_github_jetbrains_kotlin_git": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", + "attributes": { + "urls": [ + "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" + ], + "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" + } + }, + "com_github_jetbrains_kotlin": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", + "attributes": { + "git_repository_name": "com_github_jetbrains_kotlin_git", + "compiler_version": "1.9.23" + } + }, + "com_github_google_ksp": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", + "attributes": { + "urls": [ + "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" + ], + "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", + "strip_version": "1.9.23-1.0.20" + } + }, + "com_github_pinterest_ktlint": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", + "urls": [ + "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" + ], + "executable": true + } + }, + "rules_android": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", + "strip_prefix": "rules_android-0.1.1", + "urls": [ + "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_kotlin+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_python+//python/uv:uv.bzl%uv": { + "general": { + "bzlTransitiveDigest": "xfNZ/WmfkC9N/pNH0cmucTOrqBa966d9iMmmX54m1UM=", + "usagesDigest": "icnInV8HDGrRQf9x8RMfxWfBHgT3OgRlYovS/9POEJw=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "uv": { + "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", + "attributes": { + "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'", + "toolchain_names": [ + "none" + ], + "toolchain_implementations": { + "none": "'@@rules_python+//python:none'" + }, + "toolchain_compatible_with": { + "none": [ + "@platforms//:incompatible" + ] + }, + "toolchain_target_settings": {} + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_python+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_python+", + "platforms", + "platforms" + ] + ] + } + } + }, + "facts": {} +} diff --git a/examples/simple/MODULE.bazel b/examples/simple/MODULE.bazel index c605a71..c7cc27b 100644 --- a/examples/simple/MODULE.bazel +++ b/examples/simple/MODULE.bazel @@ -1,6 +1,6 @@ module(name = "example-simple") -bazel_dep(name = "rules_clojure", version = "0.5") +bazel_dep(name = "rules_clojure", version = "0.6.0") # Bazel 9 stubs the native java_* rules, so the BUILD files here load them from # rules_java. This module must declare that dependency itself — it is a diff --git a/examples/simple/MODULE.bazel.lock b/examples/simple/MODULE.bazel.lock index 0330b34..df9b247 100644 --- a/examples/simple/MODULE.bazel.lock +++ b/examples/simple/MODULE.bazel.lock @@ -1,5 +1,5 @@ { - "lockFileVersion": 11, + "lockFileVersion": 24, "registryFileHashes": { "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", @@ -12,12 +12,13 @@ "https://bcr.bazel.build/modules/abseil-cpp/20240116.2/MODULE.bazel": "73939767a4686cd9a520d16af5ab440071ed75cec1a876bf2fcfaf1f71987a16", "https://bcr.bazel.build/modules/abseil-cpp/20250127.1/MODULE.bazel": "c4a89e7ceb9bf1e25cf84a9f830ff6b817b72874088bf5141b314726e46a57c1", "https://bcr.bazel.build/modules/abseil-cpp/20250512.1/MODULE.bazel": "d209fdb6f36ffaf61c509fcc81b19e81b411a999a934a032e10cd009a0226215", - "https://bcr.bazel.build/modules/abseil-cpp/20250814.0/MODULE.bazel": "c43c16ca2c432566cdb78913964497259903ebe8fb7d9b57b38e9f1425b427b8", - "https://bcr.bazel.build/modules/abseil-cpp/20250814.0/source.json": "b88bff599ceaf0f56c264c749b1606f8485cec3b8c38ba30f88a4df9af142861", + "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/MODULE.bazel": "51f2312901470cdab0dbdf3b88c40cd21c62a7ed58a3de45b365ddc5b11bcab2", + "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/source.json": "cea3901d7e299da7320700abbaafe57a65d039f10d0d7ea601c4a66938ea4b0c", "https://bcr.bazel.build/modules/apple_support/1.11.1/MODULE.bazel": "1843d7cd8a58369a444fc6000e7304425fba600ff641592161d9f15b179fb896", "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85", - "https://bcr.bazel.build/modules/apple_support/1.15.1/source.json": "517f2b77430084c541bc9be2db63fdcbb7102938c5f64c17ee60ffda2e5cf07b", - "https://bcr.bazel.build/modules/apple_support/1.5.0/MODULE.bazel": "50341a62efbc483e8a2a6aec30994a58749bd7b885e18dd96aa8c33031e558ef", + "https://bcr.bazel.build/modules/apple_support/1.23.1/MODULE.bazel": "53763fed456a968cf919b3240427cf3a9d5481ec5466abc9d5dc51bc70087442", + "https://bcr.bazel.build/modules/apple_support/1.24.2/MODULE.bazel": "0e62471818affb9f0b26f128831d5c40b074d32e6dda5a0d3852847215a41ca4", + "https://bcr.bazel.build/modules/apple_support/1.24.2/source.json": "2c22c9827093250406c5568da6c54e6fdf0ef06238def3d99c71b12feb057a8d", "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", @@ -26,10 +27,12 @@ "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", "https://bcr.bazel.build/modules/bazel_features/1.23.0/MODULE.bazel": "fd1ac84bc4e97a5a0816b7fd7d4d4f6d837b0047cf4cbd81652d616af3a6591a", + "https://bcr.bazel.build/modules/bazel_features/1.27.0/MODULE.bazel": "621eeee06c4458a9121d1f104efb80f39d34deff4984e778359c60eaf1a8cb65", "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d", "https://bcr.bazel.build/modules/bazel_features/1.3.0/MODULE.bazel": "cdcafe83ec318cda34e02948e81d790aab8df7a929cec6f6969f13a489ccecd9", "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87", - "https://bcr.bazel.build/modules/bazel_features/1.30.0/source.json": "b07e17f067fe4f69f90b03b36ef1e08fe0d1f3cac254c1241a1818773e3423bc", + "https://bcr.bazel.build/modules/bazel_features/1.36.0/MODULE.bazel": "596cb62090b039caf1cad1d52a8bc35cf188ca9a4e279a828005e7ee49a1bec3", + "https://bcr.bazel.build/modules/bazel_features/1.36.0/source.json": "279625cafa5b63cc0a8ee8448d93bc5ac1431f6000c50414051173fd22a6df3c", "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", @@ -44,7 +47,8 @@ "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/MODULE.bazel": "88ade7293becda963e0e3ea33e7d54d3425127e0a326e0d17da085a5f1f03ff6", - "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/source.json": "7ebaefba0b03efe59cac88ed5bbc67bcf59a3eff33af937345ede2a38b2d368a", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/MODULE.bazel": "69ad6927098316848b34a9142bcc975e018ba27f08c4ff403f50c1b6e646ca67", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/source.json": "34a3c8bcf233b835eb74be9d628899bb32999d3e0eadef1947a0a562a2b16ffb", "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", @@ -72,20 +76,23 @@ "https://bcr.bazel.build/modules/platforms/1.0.0/source.json": "f4ff1fd412e0246fd38c82328eb209130ead81d62dcd5a9e40910f867f733d96", "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", + "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", + "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", "https://bcr.bazel.build/modules/protobuf/29.1/MODULE.bazel": "557c3457560ff49e122ed76c0bc3397a64af9574691cb8201b4e46d4ab2ecb95", "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", - "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858", "https://bcr.bazel.build/modules/protobuf/32.1/MODULE.bazel": "89cd2866a9cb07fee9ff74c41ceace11554f32e0d849de4e23ac55515cfada4d", "https://bcr.bazel.build/modules/protobuf/32.1/source.json": "bd2664e90875c0cd755d1d9b7a103a4b027893ac8eafa3bba087557ffc244ad4", "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34", - "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/source.json": "6900fdc8a9e95866b8c0d4ad4aba4d4236317b5c1cd04c502df3f0d33afed680", + "https://bcr.bazel.build/modules/pybind11_bazel/3.0.0/MODULE.bazel": "a2bfa6020ed603a00d944161c63173c7f109774e99bee0c2cd8dbf24159f8134", + "https://bcr.bazel.build/modules/pybind11_bazel/3.0.0/source.json": "d8f5104d4c21d272bf327ebe44366fb0b4c036cdaa1f5cceb21a408ca4ef2ef8", "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/MODULE.bazel": "b4963dda9b31080be1905ef085ecd7dd6cd47c05c79b9cdf83ade83ab2ab271a", - "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/source.json": "2ff292be6ef3340325ce8a045ecc326e92cbfab47c7cbab4bd85d28971b97ac4", "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa", + "https://bcr.bazel.build/modules/re2/2025-11-05.bcr.1/MODULE.bazel": "3d9d4995833fc0334fc5c88b56a05288dd25d651544cd7b2233bbd6357bbeba0", + "https://bcr.bazel.build/modules/re2/2025-11-05.bcr.1/source.json": "7df1394aabda1c9bc188a302f5d54b1c657924edd04ebc57d2be29dbd7efd141", "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", "https://bcr.bazel.build/modules/rules_apple/3.16.0/MODULE.bazel": "0d1caf0b8375942ce98ea944be754a18874041e4e0459401d925577624d3a54a", @@ -93,6 +100,7 @@ "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", + "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", @@ -102,30 +110,39 @@ "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", "https://bcr.bazel.build/modules/rules_cc/0.2.0/MODULE.bazel": "b5c17f90458caae90d2ccd114c81970062946f49f355610ed89bebf954f5783c", + "https://bcr.bazel.build/modules/rules_cc/0.2.14/MODULE.bazel": "353c99ed148887ee89c54a17d4100ae7e7e436593d104b668476019023b58df8", + "https://bcr.bazel.build/modules/rules_cc/0.2.17/MODULE.bazel": "1849602c86cb60da8613d2de887f9566a6d354a6df6d7009f9d04a14402f9a84", + "https://bcr.bazel.build/modules/rules_cc/0.2.17/source.json": "3832f45d145354049137c0090df04629d9c2b5493dc5c2bf46f1834040133a07", "https://bcr.bazel.build/modules/rules_cc/0.2.8/MODULE.bazel": "f1df20f0bf22c28192a794f29b501ee2018fa37a3862a1a2132ae2940a23a642", - "https://bcr.bazel.build/modules/rules_cc/0.2.8/source.json": "85087982aca15f31307bd52698316b28faa31bd2c3095a41f456afec0131344c", + "https://bcr.bazel.build/modules/rules_cc/0.2.9/MODULE.bazel": "34263f1dca62ea664265438cef714d7db124c03e1ed55ebb4f1dc860164308d1", "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", + "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", + "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", + "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", - "https://bcr.bazel.build/modules/rules_java/7.6.5/MODULE.bazel": "481164be5e02e4cab6e77a36927683263be56b7e36fef918b458d7a8a1ebadb1", - "https://bcr.bazel.build/modules/rules_java/8.16.1/MODULE.bazel": "0f20b1cecaa8e52f60a8f071e59a20b4e3b9a67f6c56c802ea256f6face692d3", - "https://bcr.bazel.build/modules/rules_java/8.16.1/source.json": "072f8d11264edc499621be2dc9ea01d6395db5aa6f8799c034ae01a3e857f2e4", + "https://bcr.bazel.build/modules/rules_java/8.14.0/MODULE.bazel": "717717ed40cc69994596a45aec6ea78135ea434b8402fb91b009b9151dd65615", "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", + "https://bcr.bazel.build/modules/rules_java/9.7.1/MODULE.bazel": "aced1dc2cf4282cf56f1ab13b697b88dc676898b2630713d3e82a94371f7eceb", + "https://bcr.bazel.build/modules/rules_java/9.7.1/source.json": "59be399068e8a9a8bd90236112fb9a9d9acc08de745c49e33b4b7b861de6fa99", "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", + "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", + "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", "https://bcr.bazel.build/modules/rules_jvm_external/6.7/MODULE.bazel": "e717beabc4d091ecb2c803c2d341b88590e9116b8bf7947915eeb33aab4f96dd", "https://bcr.bazel.build/modules/rules_jvm_external/6.8/MODULE.bazel": "b5afe861e867e4c8e5b88e401cb7955bd35924258f97b1862cc966cbcf4f1a62", "https://bcr.bazel.build/modules/rules_jvm_external/6.8/source.json": "c85e553d5ac17f7825cd85b9cceb500c64f9e44f0e93c7887469e430c4ae9eff", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", @@ -139,18 +156,20 @@ "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", "https://bcr.bazel.build/modules/rules_proto/6.0.0-rc1/MODULE.bazel": "1e5b502e2e1a9e825eef74476a5a1ee524a92297085015a052510b09a1a09483", "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", "https://bcr.bazel.build/modules/rules_proto/7.1.0/MODULE.bazel": "002d62d9108f75bb807cd56245d45648f38275cb3a99dcd45dfb864c5d74cb96", "https://bcr.bazel.build/modules/rules_proto/7.1.0/source.json": "39f89066c12c24097854e8f57ab8558929f9c8d474d34b2c00ac04630ad8940e", "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", - "https://bcr.bazel.build/modules/rules_python/0.22.1/MODULE.bazel": "26114f0c0b5e93018c0c066d6673f1a2c3737c7e90af95eff30cfee38d0bbac7", "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", "https://bcr.bazel.build/modules/rules_python/0.33.2/MODULE.bazel": "3e036c4ad8d804a4dad897d333d8dce200d943df4827cb849840055be8d2e937", "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", + "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", "https://bcr.bazel.build/modules/rules_python/1.4.1/MODULE.bazel": "8991ad45bdc25018301d6b7e1d3626afc3c8af8aaf4bc04f23d0b99c938b73a6", - "https://bcr.bazel.build/modules/rules_python/1.4.1/source.json": "8ec8c90c70ccacc4de8ca1b97f599e756fb59173e898ee08b733006650057c07", + "https://bcr.bazel.build/modules/rules_python/1.6.3/MODULE.bazel": "a7b80c42cb3de5ee2a5fa1abc119684593704fcd2fec83165ebe615dec76574f", + "https://bcr.bazel.build/modules/rules_python/1.6.3/source.json": "f0be74977e5604a6526c8a416cda22985093ff7d5d380d41722d7e44015cc419", "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b", "https://bcr.bazel.build/modules/rules_shell/0.3.0/source.json": "c55ed591aa5009401ddf80ded9762ac32c358d2517ee7820be981e2de9756cf3", @@ -159,94 +178,31 @@ "https://bcr.bazel.build/modules/rules_swift/2.1.1/source.json": "40fc69dfaac64deddbb75bd99cdac55f4427d9ca0afbe408576a65428427a186", "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", + "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", + "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/MODULE.bazel": "5e463fbfba7b1701d957555ed45097d7f984211330106ccd1352c6e0af0dcf91", "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/source.json": "32bd87e5f4d7acc57c5b2ff7c325ae3061d5e242c0c4c214ae87e0f1c13e54cb", "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", - "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "eec517b5bbe5492629466e11dae908d043364302283de25581e3eb944326c4ca", "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/source.json": "22bc55c47af97246cfc093d0acf683a7869377de362b5d1c552c2c2e16b7a806", "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" }, "selectedYankedVersions": {}, "moduleExtensions": { - "@@apple_support~//crosstool:setup.bzl%apple_cc_configure_extension": { + "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { "general": { - "bzlTransitiveDigest": "ltCGFbl/LQQZXn/LEMXfKX7pGwyqNiOCHcmiQW0tmjM=", - "usagesDigest": "eXsWd8YDJDt7+F94YtjKuTAIRMWBi9JLS8hUiqynRIY=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "local_config_apple_cc_toolchains": { - "bzlFile": "@@apple_support~//crosstool:setup.bzl", - "ruleClassName": "_apple_cc_autoconf_toolchains", - "attributes": {} - }, - "local_config_apple_cc": { - "bzlFile": "@@apple_support~//crosstool:setup.bzl", - "ruleClassName": "_apple_cc_autoconf", - "attributes": {} - } - }, - "recordedRepoMappingEntries": [ - [ - "apple_support~", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_clojure~//:extensions.bzl%deps": { - "general": { - "bzlTransitiveDigest": "fVOaAJmm/w4r+x3qg49cw3GvhdNaZ4f8awymXnlF4VE=", - "usagesDigest": "MJAlc7VZHxFg9/FIhgw6EIzouzOHImb+N3wfqzQgsDs=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "deps": { - "bzlFile": "@@rules_clojure~//rules:tools_deps.bzl", - "ruleClassName": "clojure_tools_deps", - "attributes": { - "aliases": [ - "dev", - "test" - ], - "deps_edn": "@@//:deps.edn", - "root_module_name": "example-simple" - } - } - }, - "moduleExtensionMetadata": { - "useAllRepos": "REGULAR", - "reproducible": false - }, - "recordedRepoMappingEntries": [ - [ - "rules_clojure~", - "rules_clojure", - "rules_clojure~" - ] - ] - } - }, - "@@rules_kotlin~//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { - "general": { - "bzlTransitiveDigest": "fus14IFJ/1LGWWGKPH/U18VnJCoMjfDt1ckahqCnM0A=", - "usagesDigest": "aJF6fLy82rR95Ff5CZPAqxNoFgOMLMN5ImfBS0nhnkg=", + "bzlTransitiveDigest": "nvW/NrBXlAmiQw99EMGKkLaD2KbNp2mQDlxdfpr+0Ls=", + "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { "com_github_jetbrains_kotlin_git": { - "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:compiler.bzl", - "ruleClassName": "kotlin_compiler_git_repository", + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", "attributes": { "urls": [ "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" @@ -255,16 +211,14 @@ } }, "com_github_jetbrains_kotlin": { - "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:compiler.bzl", - "ruleClassName": "kotlin_capabilities_repository", + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", "attributes": { "git_repository_name": "com_github_jetbrains_kotlin_git", "compiler_version": "1.9.23" } }, "com_github_google_ksp": { - "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:ksp.bzl", - "ruleClassName": "ksp_compiler_plugin_repository", + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", "attributes": { "urls": [ "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" @@ -274,8 +228,7 @@ } }, "com_github_pinterest_ktlint": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_file", + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", "attributes": { "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", "urls": [ @@ -285,8 +238,7 @@ } }, "rules_android": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", "strip_prefix": "rules_android-0.1.1", @@ -298,31 +250,30 @@ }, "recordedRepoMappingEntries": [ [ - "rules_kotlin~", + "rules_kotlin+", "bazel_tools", "bazel_tools" ] ] } }, - "@@rules_python~//python/uv:uv.bzl%uv": { + "@@rules_python+//python/uv:uv.bzl%uv": { "general": { - "bzlTransitiveDigest": "Xpqjnjzy6zZ90Es9Wa888ZLHhn7IsNGbph/e6qoxzw8=", - "usagesDigest": "Tx9xMlyNlKU8Dq4pnYUJ8g2T1PHLiGoAs42AGwUIqh8=", + "bzlTransitiveDigest": "xfNZ/WmfkC9N/pNH0cmucTOrqBa966d9iMmmX54m1UM=", + "usagesDigest": "icnInV8HDGrRQf9x8RMfxWfBHgT3OgRlYovS/9POEJw=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { "uv": { - "bzlFile": "@@rules_python~//python/uv/private:uv_toolchains_repo.bzl", - "ruleClassName": "uv_toolchains_repo", + "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", "attributes": { - "toolchain_type": "'@@rules_python~//python/uv:uv_toolchain_type'", + "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'", "toolchain_names": [ "none" ], "toolchain_implementations": { - "none": "'@@rules_python~//python:none'" + "none": "'@@rules_python+//python:none'" }, "toolchain_compatible_with": { "none": [ @@ -333,8 +284,20 @@ } } }, - "recordedRepoMappingEntries": [] + "recordedRepoMappingEntries": [ + [ + "rules_python+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_python+", + "platforms", + "platforms" + ] + ] } } - } + }, + "facts": {} } diff --git a/examples/stress/MODULE.bazel b/examples/stress/MODULE.bazel index 6d8be7e..9a0c973 100644 --- a/examples/stress/MODULE.bazel +++ b/examples/stress/MODULE.bazel @@ -1,6 +1,6 @@ module(name = "example-stress") -bazel_dep(name = "rules_clojure", version = "0.5") +bazel_dep(name = "rules_clojure", version = "0.6.0") local_path_override(module_name = "rules_clojure", path = "../..") diff --git a/examples/stress/MODULE.bazel.lock b/examples/stress/MODULE.bazel.lock index 8a57e22..df9b247 100644 --- a/examples/stress/MODULE.bazel.lock +++ b/examples/stress/MODULE.bazel.lock @@ -1,5 +1,5 @@ { - "lockFileVersion": 11, + "lockFileVersion": 24, "registryFileHashes": { "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", @@ -12,12 +12,13 @@ "https://bcr.bazel.build/modules/abseil-cpp/20240116.2/MODULE.bazel": "73939767a4686cd9a520d16af5ab440071ed75cec1a876bf2fcfaf1f71987a16", "https://bcr.bazel.build/modules/abseil-cpp/20250127.1/MODULE.bazel": "c4a89e7ceb9bf1e25cf84a9f830ff6b817b72874088bf5141b314726e46a57c1", "https://bcr.bazel.build/modules/abseil-cpp/20250512.1/MODULE.bazel": "d209fdb6f36ffaf61c509fcc81b19e81b411a999a934a032e10cd009a0226215", - "https://bcr.bazel.build/modules/abseil-cpp/20250814.0/MODULE.bazel": "c43c16ca2c432566cdb78913964497259903ebe8fb7d9b57b38e9f1425b427b8", - "https://bcr.bazel.build/modules/abseil-cpp/20250814.0/source.json": "b88bff599ceaf0f56c264c749b1606f8485cec3b8c38ba30f88a4df9af142861", + "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/MODULE.bazel": "51f2312901470cdab0dbdf3b88c40cd21c62a7ed58a3de45b365ddc5b11bcab2", + "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/source.json": "cea3901d7e299da7320700abbaafe57a65d039f10d0d7ea601c4a66938ea4b0c", "https://bcr.bazel.build/modules/apple_support/1.11.1/MODULE.bazel": "1843d7cd8a58369a444fc6000e7304425fba600ff641592161d9f15b179fb896", "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85", - "https://bcr.bazel.build/modules/apple_support/1.15.1/source.json": "517f2b77430084c541bc9be2db63fdcbb7102938c5f64c17ee60ffda2e5cf07b", - "https://bcr.bazel.build/modules/apple_support/1.5.0/MODULE.bazel": "50341a62efbc483e8a2a6aec30994a58749bd7b885e18dd96aa8c33031e558ef", + "https://bcr.bazel.build/modules/apple_support/1.23.1/MODULE.bazel": "53763fed456a968cf919b3240427cf3a9d5481ec5466abc9d5dc51bc70087442", + "https://bcr.bazel.build/modules/apple_support/1.24.2/MODULE.bazel": "0e62471818affb9f0b26f128831d5c40b074d32e6dda5a0d3852847215a41ca4", + "https://bcr.bazel.build/modules/apple_support/1.24.2/source.json": "2c22c9827093250406c5568da6c54e6fdf0ef06238def3d99c71b12feb057a8d", "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", @@ -26,10 +27,12 @@ "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", "https://bcr.bazel.build/modules/bazel_features/1.23.0/MODULE.bazel": "fd1ac84bc4e97a5a0816b7fd7d4d4f6d837b0047cf4cbd81652d616af3a6591a", + "https://bcr.bazel.build/modules/bazel_features/1.27.0/MODULE.bazel": "621eeee06c4458a9121d1f104efb80f39d34deff4984e778359c60eaf1a8cb65", "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d", "https://bcr.bazel.build/modules/bazel_features/1.3.0/MODULE.bazel": "cdcafe83ec318cda34e02948e81d790aab8df7a929cec6f6969f13a489ccecd9", "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87", - "https://bcr.bazel.build/modules/bazel_features/1.30.0/source.json": "b07e17f067fe4f69f90b03b36ef1e08fe0d1f3cac254c1241a1818773e3423bc", + "https://bcr.bazel.build/modules/bazel_features/1.36.0/MODULE.bazel": "596cb62090b039caf1cad1d52a8bc35cf188ca9a4e279a828005e7ee49a1bec3", + "https://bcr.bazel.build/modules/bazel_features/1.36.0/source.json": "279625cafa5b63cc0a8ee8448d93bc5ac1431f6000c50414051173fd22a6df3c", "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", @@ -44,7 +47,8 @@ "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/MODULE.bazel": "88ade7293becda963e0e3ea33e7d54d3425127e0a326e0d17da085a5f1f03ff6", - "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/source.json": "7ebaefba0b03efe59cac88ed5bbc67bcf59a3eff33af937345ede2a38b2d368a", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/MODULE.bazel": "69ad6927098316848b34a9142bcc975e018ba27f08c4ff403f50c1b6e646ca67", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/source.json": "34a3c8bcf233b835eb74be9d628899bb32999d3e0eadef1947a0a562a2b16ffb", "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", @@ -72,20 +76,23 @@ "https://bcr.bazel.build/modules/platforms/1.0.0/source.json": "f4ff1fd412e0246fd38c82328eb209130ead81d62dcd5a9e40910f867f733d96", "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", + "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", + "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", "https://bcr.bazel.build/modules/protobuf/29.1/MODULE.bazel": "557c3457560ff49e122ed76c0bc3397a64af9574691cb8201b4e46d4ab2ecb95", "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", - "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858", "https://bcr.bazel.build/modules/protobuf/32.1/MODULE.bazel": "89cd2866a9cb07fee9ff74c41ceace11554f32e0d849de4e23ac55515cfada4d", "https://bcr.bazel.build/modules/protobuf/32.1/source.json": "bd2664e90875c0cd755d1d9b7a103a4b027893ac8eafa3bba087557ffc244ad4", "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34", - "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/source.json": "6900fdc8a9e95866b8c0d4ad4aba4d4236317b5c1cd04c502df3f0d33afed680", + "https://bcr.bazel.build/modules/pybind11_bazel/3.0.0/MODULE.bazel": "a2bfa6020ed603a00d944161c63173c7f109774e99bee0c2cd8dbf24159f8134", + "https://bcr.bazel.build/modules/pybind11_bazel/3.0.0/source.json": "d8f5104d4c21d272bf327ebe44366fb0b4c036cdaa1f5cceb21a408ca4ef2ef8", "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/MODULE.bazel": "b4963dda9b31080be1905ef085ecd7dd6cd47c05c79b9cdf83ade83ab2ab271a", - "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/source.json": "2ff292be6ef3340325ce8a045ecc326e92cbfab47c7cbab4bd85d28971b97ac4", "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa", + "https://bcr.bazel.build/modules/re2/2025-11-05.bcr.1/MODULE.bazel": "3d9d4995833fc0334fc5c88b56a05288dd25d651544cd7b2233bbd6357bbeba0", + "https://bcr.bazel.build/modules/re2/2025-11-05.bcr.1/source.json": "7df1394aabda1c9bc188a302f5d54b1c657924edd04ebc57d2be29dbd7efd141", "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", "https://bcr.bazel.build/modules/rules_apple/3.16.0/MODULE.bazel": "0d1caf0b8375942ce98ea944be754a18874041e4e0459401d925577624d3a54a", @@ -93,6 +100,7 @@ "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", + "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", @@ -102,30 +110,39 @@ "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", "https://bcr.bazel.build/modules/rules_cc/0.2.0/MODULE.bazel": "b5c17f90458caae90d2ccd114c81970062946f49f355610ed89bebf954f5783c", + "https://bcr.bazel.build/modules/rules_cc/0.2.14/MODULE.bazel": "353c99ed148887ee89c54a17d4100ae7e7e436593d104b668476019023b58df8", + "https://bcr.bazel.build/modules/rules_cc/0.2.17/MODULE.bazel": "1849602c86cb60da8613d2de887f9566a6d354a6df6d7009f9d04a14402f9a84", + "https://bcr.bazel.build/modules/rules_cc/0.2.17/source.json": "3832f45d145354049137c0090df04629d9c2b5493dc5c2bf46f1834040133a07", "https://bcr.bazel.build/modules/rules_cc/0.2.8/MODULE.bazel": "f1df20f0bf22c28192a794f29b501ee2018fa37a3862a1a2132ae2940a23a642", - "https://bcr.bazel.build/modules/rules_cc/0.2.8/source.json": "85087982aca15f31307bd52698316b28faa31bd2c3095a41f456afec0131344c", + "https://bcr.bazel.build/modules/rules_cc/0.2.9/MODULE.bazel": "34263f1dca62ea664265438cef714d7db124c03e1ed55ebb4f1dc860164308d1", "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", + "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", + "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", + "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", - "https://bcr.bazel.build/modules/rules_java/7.6.5/MODULE.bazel": "481164be5e02e4cab6e77a36927683263be56b7e36fef918b458d7a8a1ebadb1", - "https://bcr.bazel.build/modules/rules_java/8.16.1/MODULE.bazel": "0f20b1cecaa8e52f60a8f071e59a20b4e3b9a67f6c56c802ea256f6face692d3", - "https://bcr.bazel.build/modules/rules_java/8.16.1/source.json": "072f8d11264edc499621be2dc9ea01d6395db5aa6f8799c034ae01a3e857f2e4", + "https://bcr.bazel.build/modules/rules_java/8.14.0/MODULE.bazel": "717717ed40cc69994596a45aec6ea78135ea434b8402fb91b009b9151dd65615", "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", + "https://bcr.bazel.build/modules/rules_java/9.7.1/MODULE.bazel": "aced1dc2cf4282cf56f1ab13b697b88dc676898b2630713d3e82a94371f7eceb", + "https://bcr.bazel.build/modules/rules_java/9.7.1/source.json": "59be399068e8a9a8bd90236112fb9a9d9acc08de745c49e33b4b7b861de6fa99", "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", + "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", + "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", "https://bcr.bazel.build/modules/rules_jvm_external/6.7/MODULE.bazel": "e717beabc4d091ecb2c803c2d341b88590e9116b8bf7947915eeb33aab4f96dd", "https://bcr.bazel.build/modules/rules_jvm_external/6.8/MODULE.bazel": "b5afe861e867e4c8e5b88e401cb7955bd35924258f97b1862cc966cbcf4f1a62", "https://bcr.bazel.build/modules/rules_jvm_external/6.8/source.json": "c85e553d5ac17f7825cd85b9cceb500c64f9e44f0e93c7887469e430c4ae9eff", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", @@ -139,18 +156,20 @@ "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", "https://bcr.bazel.build/modules/rules_proto/6.0.0-rc1/MODULE.bazel": "1e5b502e2e1a9e825eef74476a5a1ee524a92297085015a052510b09a1a09483", "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", "https://bcr.bazel.build/modules/rules_proto/7.1.0/MODULE.bazel": "002d62d9108f75bb807cd56245d45648f38275cb3a99dcd45dfb864c5d74cb96", "https://bcr.bazel.build/modules/rules_proto/7.1.0/source.json": "39f89066c12c24097854e8f57ab8558929f9c8d474d34b2c00ac04630ad8940e", "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", - "https://bcr.bazel.build/modules/rules_python/0.22.1/MODULE.bazel": "26114f0c0b5e93018c0c066d6673f1a2c3737c7e90af95eff30cfee38d0bbac7", "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", "https://bcr.bazel.build/modules/rules_python/0.33.2/MODULE.bazel": "3e036c4ad8d804a4dad897d333d8dce200d943df4827cb849840055be8d2e937", "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", + "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", "https://bcr.bazel.build/modules/rules_python/1.4.1/MODULE.bazel": "8991ad45bdc25018301d6b7e1d3626afc3c8af8aaf4bc04f23d0b99c938b73a6", - "https://bcr.bazel.build/modules/rules_python/1.4.1/source.json": "8ec8c90c70ccacc4de8ca1b97f599e756fb59173e898ee08b733006650057c07", + "https://bcr.bazel.build/modules/rules_python/1.6.3/MODULE.bazel": "a7b80c42cb3de5ee2a5fa1abc119684593704fcd2fec83165ebe615dec76574f", + "https://bcr.bazel.build/modules/rules_python/1.6.3/source.json": "f0be74977e5604a6526c8a416cda22985093ff7d5d380d41722d7e44015cc419", "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b", "https://bcr.bazel.build/modules/rules_shell/0.3.0/source.json": "c55ed591aa5009401ddf80ded9762ac32c358d2517ee7820be981e2de9756cf3", @@ -159,95 +178,31 @@ "https://bcr.bazel.build/modules/rules_swift/2.1.1/source.json": "40fc69dfaac64deddbb75bd99cdac55f4427d9ca0afbe408576a65428427a186", "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", + "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", + "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/MODULE.bazel": "5e463fbfba7b1701d957555ed45097d7f984211330106ccd1352c6e0af0dcf91", "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/source.json": "32bd87e5f4d7acc57c5b2ff7c325ae3061d5e242c0c4c214ae87e0f1c13e54cb", "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", - "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "eec517b5bbe5492629466e11dae908d043364302283de25581e3eb944326c4ca", "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/source.json": "22bc55c47af97246cfc093d0acf683a7869377de362b5d1c552c2c2e16b7a806", "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" }, "selectedYankedVersions": {}, "moduleExtensions": { - "@@apple_support~//crosstool:setup.bzl%apple_cc_configure_extension": { + "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { "general": { - "bzlTransitiveDigest": "ltCGFbl/LQQZXn/LEMXfKX7pGwyqNiOCHcmiQW0tmjM=", - "usagesDigest": "eXsWd8YDJDt7+F94YtjKuTAIRMWBi9JLS8hUiqynRIY=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "local_config_apple_cc_toolchains": { - "bzlFile": "@@apple_support~//crosstool:setup.bzl", - "ruleClassName": "_apple_cc_autoconf_toolchains", - "attributes": {} - }, - "local_config_apple_cc": { - "bzlFile": "@@apple_support~//crosstool:setup.bzl", - "ruleClassName": "_apple_cc_autoconf", - "attributes": {} - } - }, - "recordedRepoMappingEntries": [ - [ - "apple_support~", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_clojure~//:extensions.bzl%deps": { - "general": { - "bzlTransitiveDigest": "mig3aAx98hw7PCp95j0UBlPFVsr49ee0A/RqPOK3ygA=", - "usagesDigest": "/htp8kNXc8dCSqliZxbsAhYBDCPnRn5yb+VTpv6e9m0=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "deps": { - "bzlFile": "@@rules_clojure~//rules:tools_deps.bzl", - "ruleClassName": "clojure_tools_deps", - "attributes": { - "repo_name": "deps", - "aliases": [ - "dev", - "test" - ], - "deps_edn": "@@//:deps.edn", - "root_module_name": "example-stress" - } - } - }, - "moduleExtensionMetadata": { - "useAllRepos": "REGULAR", - "reproducible": false - }, - "recordedRepoMappingEntries": [ - [ - "rules_clojure~", - "rules_clojure", - "rules_clojure~" - ] - ] - } - }, - "@@rules_kotlin~//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { - "general": { - "bzlTransitiveDigest": "fus14IFJ/1LGWWGKPH/U18VnJCoMjfDt1ckahqCnM0A=", - "usagesDigest": "aJF6fLy82rR95Ff5CZPAqxNoFgOMLMN5ImfBS0nhnkg=", + "bzlTransitiveDigest": "nvW/NrBXlAmiQw99EMGKkLaD2KbNp2mQDlxdfpr+0Ls=", + "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { "com_github_jetbrains_kotlin_git": { - "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:compiler.bzl", - "ruleClassName": "kotlin_compiler_git_repository", + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", "attributes": { "urls": [ "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" @@ -256,16 +211,14 @@ } }, "com_github_jetbrains_kotlin": { - "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:compiler.bzl", - "ruleClassName": "kotlin_capabilities_repository", + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", "attributes": { "git_repository_name": "com_github_jetbrains_kotlin_git", "compiler_version": "1.9.23" } }, "com_github_google_ksp": { - "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:ksp.bzl", - "ruleClassName": "ksp_compiler_plugin_repository", + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", "attributes": { "urls": [ "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" @@ -275,8 +228,7 @@ } }, "com_github_pinterest_ktlint": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_file", + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", "attributes": { "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", "urls": [ @@ -286,8 +238,7 @@ } }, "rules_android": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", "strip_prefix": "rules_android-0.1.1", @@ -299,31 +250,30 @@ }, "recordedRepoMappingEntries": [ [ - "rules_kotlin~", + "rules_kotlin+", "bazel_tools", "bazel_tools" ] ] } }, - "@@rules_python~//python/uv:uv.bzl%uv": { + "@@rules_python+//python/uv:uv.bzl%uv": { "general": { - "bzlTransitiveDigest": "Xpqjnjzy6zZ90Es9Wa888ZLHhn7IsNGbph/e6qoxzw8=", - "usagesDigest": "Tx9xMlyNlKU8Dq4pnYUJ8g2T1PHLiGoAs42AGwUIqh8=", + "bzlTransitiveDigest": "xfNZ/WmfkC9N/pNH0cmucTOrqBa966d9iMmmX54m1UM=", + "usagesDigest": "icnInV8HDGrRQf9x8RMfxWfBHgT3OgRlYovS/9POEJw=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { "uv": { - "bzlFile": "@@rules_python~//python/uv/private:uv_toolchains_repo.bzl", - "ruleClassName": "uv_toolchains_repo", + "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", "attributes": { - "toolchain_type": "'@@rules_python~//python/uv:uv_toolchain_type'", + "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'", "toolchain_names": [ "none" ], "toolchain_implementations": { - "none": "'@@rules_python~//python:none'" + "none": "'@@rules_python+//python:none'" }, "toolchain_compatible_with": { "none": [ @@ -334,8 +284,20 @@ } } }, - "recordedRepoMappingEntries": [] + "recordedRepoMappingEntries": [ + [ + "rules_python+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_python+", + "platforms", + "platforms" + ] + ] } } - } + }, + "facts": {} } From b5f6c83a4b56bb66e641f6162702d063561aec30 Mon Sep 17 00:00:00 2001 From: Bruno Palermo Date: Sat, 22 Aug 2026 13:35:23 -0300 Subject: [PATCH 4/6] ci: replace CircleCI with GitHub Actions across Bazel 8 and 9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The two pipelines here had drifted into covering neither claim properly. The GitHub Actions workflow built only the root `//...` and only on `master`, a branch this repository does not have; CircleCI covered the examples but on one platform, one Bazel version, and a JDK installed by apt. One workflow now covers what .bcr/presubmit.yml promises, because a registry entry claiming Bazel 8 and 9 on Linux and macOS should not be the only place either is tested: - the ruleset and examples/bzlmod on both majors and both platforms - examples/simple and examples/stress on Linux only for now. The macOS branch of rules/tools_deps.bzl needs HOMEBREW_RUBY_PATH and is the least exercised code in the repo; promote it once it is seen to pass rather than blocking every pull request on it today. Caches are restored by pull requests but written only from main. That is the standard Actions cache-poisoning shape — otherwise an untrusted pull request writes entries a later trusted build restores — and it also stops pull-request caches evicting main's from the shared repository quota. It is gated on the ref rather than the event because workflow_dispatch can target any branch. No setup-java step: every module now selects remotejdk_21 itself. --- .circleci/config.yml | 33 --------------- .github/workflows/ci.yml | 87 +++++++++++++++++++++++++++++++++------- 2 files changed, 72 insertions(+), 48 deletions(-) delete mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index bec10fb..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,33 +0,0 @@ -version: 2.1 - -jobs: - test: - docker: - - image: cimg/base:2025.01 - steps: - - checkout - - run: - command: sudo apt-get update && sudo apt-get install curl openjdk-21-jdk-headless - - run: - command: curl -OL https://github.com/bazelbuild/bazelisk/releases/download/v1.25.0/bazelisk-amd64.deb - - run: - command: sudo dpkg -i bazelisk-amd64.deb - - run: - command: java -version - - run: - command: bazel --version - - run: - name: unit tests - command: bazel test //... - - run: - name: example tests - command: cd examples/simple && bazel test //... - - run: - name: stress tests - command: cd examples/stress && bazel test //... - - -workflows: - test-workflow: - jobs: - - test diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c4dd14c..f1d38eb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,23 +1,80 @@ -name: CI +name: ci + on: push: - branches: - - master + branches: [main] pull_request: - branches: - - master + workflow_dispatch: + +# The default token permissions are write-heavy for every job; grant least privilege. +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: - verify: + # The ruleset itself, plus the module a stranger would write, on both supported Bazel + # majors and both supported platforms. This is what .bcr/presubmit.yml claims, so it is + # what CI has to cover. + bazel: + name: bazel ${{ matrix.bazel }} (${{ matrix.os }}) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest] + bazel: ["8.6.0", "9.2.0"] + env: + # Takes precedence over .bazelversion, which is how one checkout covers both majors. + USE_BAZEL_VERSION: ${{ matrix.bazel }} + steps: + - uses: actions/checkout@v5 + + - uses: bazel-contrib/setup-bazel@0.19.0 + with: + bazelisk-cache: true + disk-cache: ${{ github.workflow }}-${{ matrix.bazel }} + repository-cache: true + # Pull requests RESTORE caches but never SAVE them, so only reviewed code can + # populate a cache a later trusted build consumes — the standard Actions + # cache-poisoning shape — and PR caches stop evicting main's from the shared + # repository quota. Gated on the ref, not the event: workflow_dispatch can + # target any branch. + cache-save: ${{ github.ref == 'refs/heads/main' }} + + - name: the ruleset + run: bazel test //... + + # examples/ is in .bazelignore — each example is its own module and its own run. + - name: examples/bzlmod (the BCR test module) + working-directory: examples/bzlmod + run: bazel test //... + + # The tools.deps path: clojure_tools_deps downloads the Clojure CLI and resolves + # deps.edn, and gen_srcs writes the BUILD files these examples build from. Linux only + # for now — the macOS branch of rules/tools_deps.bzl needs HOMEBREW_RUBY_PATH and is the + # least exercised code in the repo. Promote it once it is seen to pass. + tools-deps-examples: + name: examples/${{ matrix.example }} (bazel ${{ matrix.bazel }}) runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: [simple, stress] + bazel: ["8.6.0", "9.2.0"] + env: + USE_BAZEL_VERSION: ${{ matrix.bazel }} steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Mount bazel cache - uses: actions/cache@v2 + - uses: actions/checkout@v5 + + - uses: bazel-contrib/setup-bazel@0.19.0 with: - path: ~/.cache/bazel - key: bazel - - name: Run bazel build - run: bazel build //... - - name: Run bazel test + bazelisk-cache: true + disk-cache: ${{ github.workflow }}-${{ matrix.example }}-${{ matrix.bazel }} + repository-cache: true + cache-save: ${{ github.ref == 'refs/heads/main' }} + + - working-directory: examples/${{ matrix.example }} run: bazel test //... From b00f7cf3f196ffe269592bdf1b5be22729484e71 Mon Sep 17 00:00:00 2001 From: Bruno Palermo Date: Sat, 22 Aug 2026 13:42:56 -0300 Subject: [PATCH 5/6] ci: use actions/checkout@v7 The only action in either workflow that was behind. Everything else is already current: bazel-contrib/setup-bazel 0.19.0, bazel-contrib/.github v7.7.0 and bazel-contrib/publish-to-bcr v1.5.0 are each the latest release. Both call sites use checkout with no inputs, so there is nothing for the v5 -> v7 major bumps to break; the change is the newer Node runtime. --- .github/workflows/ci.yml | 4 ++-- .github/workflows/release.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f1d38eb..bbcb42c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,7 +30,7 @@ jobs: # Takes precedence over .bazelversion, which is how one checkout covers both majors. USE_BAZEL_VERSION: ${{ matrix.bazel }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 - uses: bazel-contrib/setup-bazel@0.19.0 with: @@ -67,7 +67,7 @@ jobs: env: USE_BAZEL_VERSION: ${{ matrix.bazel }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 - uses: bazel-contrib/setup-bazel@0.19.0 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e0e0d39..2e08bb7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,7 @@ jobs: check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 - name: MODULE.bazel must agree with the tag env: From cab55ecacce7af36c65053defb8122d12538c21a Mon Sep 17 00:00:00 2001 From: Bruno Palermo Date: Sat, 22 Aug 2026 13:45:03 -0300 Subject: [PATCH 6/6] docs: add this fork's copyright alongside Griffin Bank's, not instead of it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Being a hard fork is a statement about maintenance, not about ownership, and the README did not make that distinction — it carried only upstream's copyright, which understated this fork's changes, while leaving room to read "hard fork" as licence independence, which it is not. Apache-2.0 section 4(c) requires a derivative work to retain all copyright and attribution notices from the original. Nearly every line here is still Griffin Bank's, so their notice stays exactly as it is. Section 4 also permits a copyright statement over one's own modifications, which is what the second line now is: added alongside theirs, never in place of it. Both README and NOTICE now say this explicitly, so that a future reader — or a future fork of this fork — does not have to infer it. --- NOTICE | 11 ++++++++++- README.md | 21 ++++++++++++++++----- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/NOTICE b/NOTICE index 7069cd5..03cd439 100644 --- a/NOTICE +++ b/NOTICE @@ -1,12 +1,21 @@ rules_clojure -Copyright © 2026 Griffin Bank +Copyright © 2026 Griffin Bank (original work) +Copyright © 2026 Bruno Palermo (modifications) This product includes software originally developed at Griffin Bank and published as https://github.com/griffinbank/rules_clojure, licensed under the Apache License, Version 2.0. A copy of that licence is distributed with this work in the file LICENSE, and governs this distribution. +This distribution is a hard fork: maintained independently, on its own +roadmap, with no expectation of merging back upstream. That is a statement +about maintenance, not about ownership. Apache-2.0 section 4(c) requires all +copyright and attribution notices from the original to be retained in a +derivative work, so Griffin Bank's notice stands above and is not to be +removed; the second line is the copyright statement over this fork's own +modifications, which section 4 permits to be added alongside. + Modifications ------------- diff --git a/README.md b/README.md index f975e51..c9a6a54 100644 --- a/README.md +++ b/README.md @@ -328,13 +328,24 @@ Starlark globals and reduced the native `java_*` rules to stubs, so both the rul Copyright and License ---------------------------------------- -Copyright © 2026 Griffin Bank. All rights reserved. +Copyright © 2026 Griffin Bank. All rights reserved. — original work +Copyright © 2026 Bruno Palermo — modifications This software is distributed under the **Apache License, Version 2.0**, the licence in the -`LICENSE` file at the root of this distribution, and that file governs. Upstream's notice -below refers to the Eclipse Public License 1.0 and to an `epl-v10.html` that is not present in -the tree; it is reproduced unchanged rather than edited away, and the discrepancy is upstream's -to resolve. +`LICENSE` file at the root of this distribution, and that file governs. + +This is a hard fork of [griffinbank/rules_clojure](https://github.com/griffinbank/rules_clojure): +it is maintained independently, on its own roadmap, with no expectation of merging back. That +describes **maintenance, not ownership**. Apache-2.0 §4(c) requires a derivative work to retain +all copyright and attribution notices from the original, so Griffin Bank's notice above stays +exactly as it is, for as long as any of their code is here — which is nearly all of it. The +second line is what §4 permits instead: a copyright statement covering this fork's own +modifications, added alongside rather than in place of theirs. `NOTICE` lists what those +modifications are, as §4(b) requires. + +Upstream's notice below refers to the Eclipse Public License 1.0 and to an `epl-v10.html` that +is not present in the tree, while `LICENSE` is Apache-2.0. It is reproduced unchanged rather +than edited away; the discrepancy is upstream's to resolve. > The use and distribution terms for this software are covered by the > [Eclipse Public License 1.0] which can be found in the file