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 one

View on GitHub (pinned to 6f52dcdf99)

Solutions

  1. Use only the listed qualifiers; encode libc as musl/gnu/glibc and ABI as baseline/musl-baseline.
  2. Drop the qualifier entirely (plain linux-x64) if the distinction does not matter — distro is not a lockfile dimension.
  3. 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

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


AI-assisted analysis of jdx/mise@6f52dcdf99 (2026-08-22). Data as JSON: /api/errors/98e3146706efe5eb. Report an issue: GitHub.