bazelbuild / bazelbuild/rules_rust

rust_analyzer repository registered multiple times

Open
#3,729 0 comments 0 reactions 1 assignee Claimed by @UebelAndre View on GitHub
rust-analyzer
Dominant language
Starlark
Stars
843
Forks
651
Avg merge
2d 18h
Merged PRs (30d)
15

Description

I'm trying to register multiple toolchains with bzlmod (they have different settings, omitted here for simplicity):

```
rust.toolchain(
edition = "2024",
target_settings = [ "@rules_rust//rust/platform:x86_64-apple-darwin" ],
versions = ["1.90.0"],
)

rust.toolchain(
edition = "2024",
target_settings = [ "@rules_rust//rust/platform:aarch64-apple-darwin" ],
versions = ["1.90.0"],
)

...
```

Unfortunately this leads to an error:

> A repo named rust_analyzer_1.90.0_tools is already generated by this module extension

I think the `maybe()` call is incorrect, and should be applied to the repository:

```diff
diff --git a/rust/repositories.bzl b/rust/repositories.bzl
index 71305a752..b9e21ca88 100644
--- a/rust/repositories.bzl
+++ b/rust/repositories.bzl
@@ -238,8 +238,7 @@ def rust_register_toolchains(
exec_compatible_with_by_toolchain = {}
target_compatible_with_by_toolchain = {}

- maybe(
- rust_analyzer_toolchain_repository,
+ rust_analyzer_toolchain_setup(
name = rust_analyzer_repo_name,
version = rust_analyzer_version,
urls = urls,
@@ -838,7 +837,7 @@ rust_analyzer_toolchain_tools_repository = repository_rule(
attrs = _RUST_ANALYZER_TOOLCHAIN_TOOLS_REPOSITORY_ATTRS,
)

-def rust_analyzer_toolchain_repository(
+def rust_analyzer_toolchain_setup(
name,
version,
exec_compatible_with = [],
@@ -866,7 +865,8 @@ def rust_analyzer_toolchain_repository(
Returns:
str: The name of a registerable rust_analyzer_toolchain.
"""
- rust_analyzer_toolchain_tools_repository(
+ maybe(
+ rust_analyzer_toolchain_tools_repository,
name = name + "_tools",
version = version,
sha256s = sha256s,
```

This however I believe only works for `WORKSPACE`. Even with the fix above, the error is still present when importing rules_rust via `MODULE.bazel`

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.