Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stop rustfmt versioning from overriding rust-analyzer versioning. #2553

Merged
merged 2 commits into from
Mar 19, 2024

Conversation

ReticentIris
Copy link
Contributor

@ReticentIris ReticentIris commented Mar 16, 2024

There is a bug/typo in rust_register_toolchains where rustfmt_version would always override rust_analyzer_version (default or otherwise specified). This causes problems related to mismatched ABIs when rust-analyzer tries to expand proc macros if one were to use an older-than-default nightly toolchain without specifying a specific rustfmt_version. This is because rust-analyzer will be set to use the default rustfmt_version which is nightly/2024-02-08:

DEFAULT_NIGHTLY_ISO_DATE = "2024-02-08"

As a very basic example of what I mean:

rust_register_toolchains(
    edition = "2021",
    versions = [
        "nightly/2024-01-31",
    ],
    extra_exec_rustc_flags = ["-A", "async_fn_in_trait"],
)

Will result in rust-analyzer complaining with:

proc macro `Deserialize` not expanded: Cannot create expander for /private/var/tmp/_bazel_a/a03e1cfb3989a3cda645602bbe0ee892/execroot/_main/bazel-out/darwin_arm64-opt-exec-ST-13d3ddad9198/bin/external/crate_index__serde_derive-1.0.195/libserde_derive-1365269244.dylib: mismatched ABI expected: `rustc 1.78.0-nightly (8ace7ea1f 2024-02-07)`, got `rustc 1.77.0-nightly (11f32b73e 2024-01-31)`rust-analyzer[unresolved-proc-macro](https://rust-analyzer.github.io/manual.html#unresolved-proc-macro)

Using a workaround of setting rustfmt_version causes the ABI mismatch to be resolved:

rust_register_toolchains(
    edition = "2021",
    versions = [
        "nightly/2024-01-31",
    ],
    rustfmt_version = "nightly/2024-01-31",
    extra_exec_rustc_flags = ["-A", "async_fn_in_trait"],
)

This PR fixes the issue so that rust-analyzer version selection actually works.

Copy link

google-cla bot commented Mar 16, 2024

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

Copy link
Collaborator

@UebelAndre UebelAndre left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch, thank you!

@UebelAndre UebelAndre added this pull request to the merge queue Mar 19, 2024
Merged via the queue into bazelbuild:main with commit 846e910 Mar 19, 2024
3 checks passed
fmeum pushed a commit to bazel-contrib/toolchains_llvm that referenced this pull request Mar 28, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [rules_rust](https://togithub.com/bazelbuild/rules_rust) |
http_archive | minor | `0.40.0` -> `0.41.0` |

---

### Release Notes

<details>
<summary>bazelbuild/rules_rust (rules_rust)</summary>

###
[`v0.41.0`](https://togithub.com/bazelbuild/rules_rust/releases/tag/0.41.0)

[Compare
Source](https://togithub.com/bazelbuild/rules_rust/compare/0.40.0...0.41.0)

### 0.41.0

```python
load("@&#8203;bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
    name = "rules_rust",
    integrity = "sha256-Y4v6kjQQfXxh5tU6FQB6YXux/ODFGUq3IlpgBV4Bwj8=",
    urls = ["https://github.com/bazelbuild/rules_rust/releases/download/0.41.0/rules_rust-v0.41.0.tar.gz"],
)
```

Additional documentation can be found at:
https://bazelbuild.github.io/rules_rust/#setup

#### What's Changed

- Add example of cross-compiling with musl by
[@&#8203;illicitonion](https://togithub.com/illicitonion) in
[bazelbuild/rules_rust#2535
- Temporarily disable "Examples Clang with LLD" CI job by
[@&#8203;UebelAndre](https://togithub.com/UebelAndre) in
[bazelbuild/rules_rust#2560
- Update cargo_toml to `0.19.2` by
[@&#8203;jun-sheaf](https://togithub.com/jun-sheaf) in
[bazelbuild/rules_rust#2551
- Stop rustfmt versioning from overriding rust-analyzer versioning. by
[@&#8203;ReticentIris](https://togithub.com/ReticentIris) in
[bazelbuild/rules_rust#2553
- Rust Analyzer added NixOS supported platforms by
[@&#8203;rickvanprim](https://togithub.com/rickvanprim) in
[bazelbuild/rules_rust#2547
- Removed unused 'select_with_or' by
[@&#8203;dzbarsky](https://togithub.com/dzbarsky) in
[bazelbuild/rules_rust#2562
- Added Rust 1.77.0 by
[@&#8203;UebelAndre](https://togithub.com/UebelAndre) in
[bazelbuild/rules_rust#2568
- bzlmod: fix issue with nightly versions by
[@&#8203;QuentinPerez](https://togithub.com/QuentinPerez) in
[bazelbuild/rules_rust#2545
- Allow a no-cargo setup for bzlmod by
[@&#8203;dzbarsky](https://togithub.com/dzbarsky) in
[bazelbuild/rules_rust#2565
- Fixed genquery for rust targets by
[@&#8203;UebelAndre](https://togithub.com/UebelAndre) in
[bazelbuild/rules_rust#2559
- Fix cargo-bazel recompile for MODULE.bazel by
[@&#8203;ericmcbride](https://togithub.com/ericmcbride) in
[bazelbuild/rules_rust#2570
- Minor cleanup of bzl files by
[@&#8203;UebelAndre](https://togithub.com/UebelAndre) in
[bazelbuild/rules_rust#2573
- Added starlark unit tests for `rust_toolchain.opt_level` by
[@&#8203;UebelAndre](https://togithub.com/UebelAndre) in
[bazelbuild/rules_rust#2578
- Mark the bzlmod extension reproducible as appropriate by
[@&#8203;dzbarsky](https://togithub.com/dzbarsky) in
[bazelbuild/rules_rust#2575
- Release 0.41.0 by
[@&#8203;UebelAndre](https://togithub.com/UebelAndre) in
[bazelbuild/rules_rust#2569

#### New Contributors

- [@&#8203;jun-sheaf](https://togithub.com/jun-sheaf) made their first
contribution in
[bazelbuild/rules_rust#2551
- [@&#8203;ReticentIris](https://togithub.com/ReticentIris) made their
first contribution in
[bazelbuild/rules_rust#2553
- [@&#8203;QuentinPerez](https://togithub.com/QuentinPerez) made their
first contribution in
[bazelbuild/rules_rust#2545
- [@&#8203;ericmcbride](https://togithub.com/ericmcbride) made their
first contribution in
[bazelbuild/rules_rust#2570

**Full Changelog**:
bazelbuild/rules_rust@0.40.0...0.41.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/bazel-contrib/toolchains_llvm).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIn0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants