miri dependency not available on Linux ARM64
Verification
- [x] I searched for recent similar issues at https://github.com/rust-lang/rustup/issues?q=is%3Aissue+is%3Aopen%2Cclosed and found no duplicates.
- [x] I am on the latest version of Rustup according to https://github.com/rust-lang/rustup/tags and am still able to reproduce my issue.
Problem
I am getting this error:
error: some components are unavailable for download for channel '1.86.0': 'miri' for target 'aarch64-unknown-linux-gnu', 'rustc-codegen-cranelift' for target 'aarch64-unknown-linux-gnu'
From the project's rust-toolchain config, it has this and nothing else:
[toolchain]
channel = "1.86.0"
Source, in case you want to reference any other config files: https://github.com/pantsbuild/pants/src/rust.
Steps
As noted above, this error is reported immediately upon running Rust, e.g. rustc.
This is observed on Ubuntu 24.04, running in Docker on Apple Silicon, ARM64.
Possible Solution(s)
No response
Notes
No response
Rustup version
$ rustup --version
rustup 1.28.2 (e4f3ad6f8 2025-04-28)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: syncing channel updates for '1.86.0-aarch64-unknown-linux-gnu'
info: latest update on 2025-04-03, rust version 1.86.0 (05f9846f8 2025-03-31)
Installed toolchains
$ rustup show
Default host: aarch64-unknown-linux-gnu
rustup home: /usr/local/rustup
info: syncing channel updates for '1.86.0-aarch64-unknown-linux-gnu'
info: latest update on 2025-04-03, rust version 1.86.0 (05f9846f8 2025-03-31)
installed toolchains
--------------------
stable-aarch64-unknown-linux-gnu (default)
active toolchain
----------------
no active toolchain
OS version
$ uname -a
Linux 158204fd7093 6.8.0-50-generic #51-Ubuntu SMP PREEMPT_DYNAMIC Sat Nov 9 18:03:35 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
In case this is environment-specific for our project, I was able to resolve by running:
rustup set profile default
The VS Code dev container where this was observed was defaulting to the complete profile.
@0xg0nz0 Hello, thanks for filing this issue!
It is true that both miri and rustc-codegen-cranelift are nightly-exclusive components as for now, so complete failing to install might indicate an inconsistency somewhere in the interpretation of that particular profile.
AFAIK rustup simply extract the profile definitions from the manifest:
https://github.com/rust-lang/rustup/blob/a92432fc8b6d5d4e56ebd08ca1c45b7b1294c1bd/src/dist/manifest.rs#L313-L317
... so in this case it could indicate an error straight in the manifest.
@pietroalbini Looking towards the end of the stable multirust-channel-manifest.toml I have found the following section:
[profiles]
complete = ["rustc", "cargo", "rust-std", "rust-mingw", "rust-docs", "rustfmt-preview", "clippy-preview", "rust-analyzer-preview", "rust-src", "llvm-tools-preview", "rust-analysis", "miri-preview", "rustc-codegen-cranelift-preview"]
... where miri-preview and rustc-codegen-cranelift-preview are clearly unavailable in this context. Is that the expected behavior?
I don't think this is intended behavior. I would change build-manifest to do this filtering.