-
Notifications
You must be signed in to change notification settings - Fork 435
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
Support rustfmt toolchains for bzlmod #2260
Comments
illicitonion
pushed a commit
that referenced
this issue
Jan 12, 2024
daivinhtran
pushed a commit
to daivinhtran/rules_rust
that referenced
this issue
Jan 17, 2024
daivinhtran
pushed a commit
to daivinhtran/rules_rust
that referenced
this issue
Jan 17, 2024
Drop import macro (bazelbuild#2411) As discussed over at bazelbuild#2383 Fix rustfmt toolchains when consuming rules_rust with bzlmod. (bazelbuild#2410) Fixes bazelbuild#2260 Provide a better error message when trying to generate rust-project.json (bazelbuild#2196) Currently when trying to generate a `rust-project.json`, if there aren't actually any Rust targets defined, the script mysteriously fails. This adds a better error message. Update android example to use Starlark version of android_ndk_repository (bazelbuild#2417) The native version of `android_ndk_repository` rule no longer work with the newer ndk versions. When I set `ANDROID_NDK_HOME` to `/usr/local/vinhdaitran/Android/Sdk/ndk/26.1.10909125`, the rule expects a different structure from the Android NDK path. ``` ERROR: /usr/local/vinhdaitran/github/rules_rust/examples/android/WORKSPACE.bazel:67:23: fetching android_ndk_repository rule //external:androidndk: java.io.IOException: Expected directory at /usr/local/vinhdaitran/Android/Sdk/ndk/26.1.10909125/platforms but it is not a directory or it does not exist. Unable to read the Android NDK at /usr/local/vinhdaitran/Android/Sdk/ndk/26.1.10909125, the path may be invalid. Is the path in android_ndk_repository() or ANDROID_NDK_HOME set correctly? If the path is correct, the contents in the Android NDK directory may have been modified. ``` Using the Starlark version of the rule, as recommended in https://bazel.build/reference/be/android#android_ndk_repository, fixes the issue. cc: @keith Allow ~ in repository names (bazelbuild#2427) Fixes bazelbuild#2426 Prepare rust rules for Starlark CcToolchainInfo. (bazelbuild#2424) bazelbuild#2425
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
When running under bazel 6.4.0 using
--enable_blzmod
, therustfmt
toolchain doesn't get wired up as it should. A simple no-op bazel module fails to support the@rules_rust//:rustfmt
target like this:when using this
MODULE.bazel
:The problem can also be seen in the output of
where there are no
rustfmt
toolchains.Unfortunately at the moment I cannot sign a CLA and thus cannot submit a PR, but the following fixes the problem:
The problem is that although this isn't necessary when working in
WORKSPACE
mode whennative.register_toolchains
is invoked directly, without it the rustfmt toolchains are not added to the toolchain repository hub, and so are not picked up later inMODULE.bazel
whenregister_toolchains
is called. And as far as I can tell it is not harmful to have this added code when working inWORKSPACE
mode.I note that this problem not only affects the direct use of
rustfmt
, but also is a problem forrust_bindgen
(which isn't yet supported for bzlmod but I am working on that!)Disclaimer: I am no expert in toolchains; I am not sure if the
target_compatible_with_by_toolchain
setting is correct; I just copied it from the similar for forrust_analyzer
farther above.The text was updated successfully, but these errors were encountered: