jdx/mise · error
unsupported architecture
Error message
unsupported architecture: {other} What it means
linux_precompiled_base_url maps the host architecture to the naming used by Erlang's precompiled build artifacts; the target arch matched none of the known values (x64→amd64 etc.). Without a mapping there is no download URL to build, so the function bails with the unsupported arch name.
Solutions
- Compile Erlang from source on the unsupported architecture (enable erlang_compile, install build dependencies)
- Run on x86_64 or arm64 hardware/emulation (e.g. qemu-user or arm64 runners)
- Check that a typo in MISE_ARCH / target triple isn't causing a bogus arch name
Example fix
// before # armv7 device mise install erlang@26.2 // after mise settings set erlang_compile true mise install erlang@26.2 # compiles from source
Defensive patterns
Strategy: validation
Validate before calling
case "$(uname -m)" in x86_64|aarch64|arm64) echo "precompiled OK";; *) echo "unsupported arch: compile from source";; esac
Try / catch
null
Prevention
- Check builds.hex.pm build matrix before choosing precompiled for exotic arches
- Set erlang_compile=true on non-amd64/arm64 machines by default
- Use arm64 or x86_64 runners in CI
When it happens
Trigger: Installing precompiled Erlang on architectures like x86 (32-bit), riscv64, ppc64le, s390x, or armv7 Linux.
Common situations: Raspberry Pi 32-bit OS; niche server architectures (s390x mainframes, ppc64le); riscv64 dev boards running mise.
Understand the failure class
Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.
Related errors
- precompiled erlang is not supported on
- unsupported OS version
- no precompiled ruby is available for this platform\nTo…
- precompiled erlang is not available
- precompiled erlang is not supported on musl linux
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/f85fc3515447bf37.
Report an issue: GitHub.
Appendix: source
Thrown at src/plugins/core/erlang.rs:173
fn source_archive_url(version: &str) -> String {
format!(
"https://github.com/erlang/otp/archive/{}.tar.gz",
Self::release_tag(version)
)
}
fn source_cache_name(url: &str) -> String {
format!("otp-source-{}.tar.gz", crate::hash::hash_sha256_to_str(url))
}
fn linux_precompiled_base_url(target: &PlatformTarget) -> Result<String> {
if target.libc() == Some("musl") {
bail!("precompiled erlang is not supported on musl linux");
}
let arch = match target.arch_name() {
"x64" => "amd64",
"arm64" => "arm64",
other => bail!("unsupported architecture: {other}"),
};
let os_ver = Self::linux_precompiled_os_version()?;
Ok(format!("https://builds.hex.pm/builds/otp/{arch}/{os_ver}"))
}
async fn linux_precompiled_lock_info(
version: &str,
target: &PlatformTarget,
) -> Result<PlatformInfo> {
let base_url = Self::linux_precompiled_base_url(target)?;
let release_tag = Self::release_tag(version);
let builds = HTTP_FETCH
.get_text_cached(format!("{base_url}/builds.txt"))
.await?;
let checksum = parse_hex_build_checksum(&builds, &release_tag)?;
Ok(PlatformInfo {
url: Some(format!("{base_url}/{release_tag}.tar.gz")),
checksum: Some(checksum),View on GitHub (pinned to 533346cc37)