jdx/mise · error
Unsupported qualifier '{}'. Supported: gnu, glibc, musl, msv
Error message
Unsupported qualifier '{}'. Supported: gnu, glibc, musl, msvc, baseline, musl-baseline What it means
Platform::validate restricts the optional qualifier — everything after the second hyphen, joined back together — to {gnu, glibc, musl, msvc, baseline, musl-baseline}. Compound qualifiers like musl-baseline are supported, so this error means the joined qualifier string is something else: a distro name, a glibc version, or a misplaced segment. Qualifiers distinguish libc/ABI variants in lockfile platform keys (Platform::libc maps gnu/glibc to gnu and musl to musl).
Source
Thrown at src/platform.rs:98
"Unsupported OS '{}'. Supported: linux, macos, windows, android",
self.os
),
}
// Validate architecture
match self.arch.as_str() {
"x64" | "arm64" | "x86" | "loongarch64" | "riscv64" => {}
_ => bail!(
"Unsupported architecture '{}'. Supported: x64, arm64, x86, loongarch64, riscv64",
self.arch
),
}
// Validate qualifier if present
if let Some(qualifier) = &self.qualifier {
match qualifier.as_str() {
"gnu" | "glibc" | "musl" | "msvc" | "baseline" | "musl-baseline" => {}
_ => bail!(
"Unsupported qualifier '{}'. Supported: gnu, glibc, musl, msvc, baseline, musl-baseline",
qualifier
),
}
}
Ok(())
}
/// Convert to platform key format used in lockfiles
pub(crate) fn to_key(&self) -> String {
match &self.qualifier {
Some(qualifier) => format!("{}-{}-{}", self.os, self.arch, qualifier),
None => format!("{}-{}", self.os, self.arch),
}
}
/// Parse multiple platform strings, validating each oneView on GitHub (pinned to 6f52dcdf99)
Solutions
- Use only the listed qualifiers; encode libc as musl/gnu/glibc and ABI as baseline/musl-baseline.
- Drop the qualifier entirely (plain linux-x64) if the distinction does not matter — distro is not a lockfile dimension.
- Fix segment order: os-arch-qualifier, e.g. linux-x64-musl, not linux-musl-x64.
Example fix
# before mise lock -p linux-x64-alpine -p linux-musl-x64 # after mise lock -p linux-x64-musl
Defensive patterns
Strategy: validation
Validate before calling
q="$(cut -d- -f3- <<<"$p")" case "$q" in ""|gnu|glibc|musl|msvc|baseline|musl-baseline) ;; *) echo "unsupported qualifier: $q"; exit 2;; esac
Type guard
fn supported_qualifier(q: &str) -> bool {
matches!(q, "gnu" | "glibc" | "musl" | "msvc" | "baseline" | "musl-baseline")
} Prevention
- Treat qualifiers as a closed set; check the allowlist before inventing new values.
- Do not encode distro names or glibc versions in platform strings.
- Keep the os-arch-qualifier segment order in mind when composing strings.
When it happens
Trigger: `mise lock -p linux-x64-alpine`, `-p linux-x64-glibc2.17`, `-p linux-x64-musl-custom`, or ordering mistakes like `-p linux-musl-x64` (musl lands in the arch slot) and double-arch strings like linux-x64-arm64 (arm64 becomes the qualifier).
Common situations: Trying to encode the distro or glibc version into the platform key; permuting segment order; leftover tokens from pasted target triples.
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
- Invalid platform format '{}'. Expected 'os-arch' or 'os-arch
- Unsupported OS '{}'. Supported: linux, macos, windows, andro
- Unsupported architecture '{}'. Supported: x64, arm64, x86, l
- precompiled erlang is not supported on musl linux
- swift does not publish musl builds
AI-assisted analysis of jdx/mise@6f52dcdf99 (2026-08-22).
Data as JSON: /api/errors/98e3146706efe5eb.
Report an issue: GitHub.