jdx/mise · error

Unsupported qualifier

Error message

Unsupported qualifier '{}'. Supported: gnu, glibc, musl, msvc, baseline, musl-baseline

What it means

mise validates platform qualifiers (libc/environment strings) used in platform targets like `x86_64-linux-musl`. This bail fires when a qualifier string is not one of the six allowed values, preventing ambiguous or typo'd platform specs from silently resolving to the wrong artifacts.

Solutions

  1. Change the qualifier to one of the supported values: gnu, glibc, musl, msvc, baseline, or musl-baseline
  2. Fix typos in the platform string (e.g. 'musi' -> 'musl')
  3. If you need a libc/ABI not listed, remove the qualifier and pin a platform-independent version instead

Example fix

// before
[tools]
"node:20.5.0" = { platform = "x86_64-linux-androideabi" }
// after
[tools]
"node:20.5.0" = { platform = "x86_64-linux-musl" }
Defensive patterns

Strategy: validation

Validate before calling

const QUALIFIERS = ["gnu","glibc","musl","msvc","baseline","musl-baseline"];
function qualifierOk(platform: string): boolean {
  const parts = platform.split("-");
  return parts.length < 3 || QUALIFIERS.includes(parts.slice(2).join("-"));
}

Type guard

function isSupportedQualifier(q: string): q is "gnu"|"glibc"|"musl"|"msvc"|"baseline"|"musl-baseline" {
  return ["gnu","glibc","musl","msvc","baseline","musl-baseline"].includes(q as any);
}

Try / catch

null

Prevention

When it happens

Trigger: Calling mise with a platform target string containing a qualifier outside {gnu, glibc, musl, msvc, baseline, musl-baseline}, e.g. `mise use <tool>@<version>-linux-android` or a malformed platform spec in config.

Common situations: Typos in .tool-versions or mise.toml platform keys; copying qualifiers from other ecosystems (e.g. 'gnuabi64', 'gnueabi', 'android', 'mingw'); hand-writing platform-pinned tool versions for cross-compilation.

Understand the failure class

Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.

Related errors


AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17). Data as JSON: /api/errors/98e3146706efe5eb. Report an issue: GitHub.

Appendix: 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 533346cc37)