jdx/mise · error · eyre::Report

{}: source uses the {using:?} download strategy, which mise

Error message

{}: source uses the {using:?} download strategy, which mise cannot build from (and no bottle exists for this machine)

What it means

mise's source builder can only handle plain archive downloads. If the formula's stable source spec declares a custom download strategy via `using` (e.g. :git, :cvs, :bzr, :homebrew_curl), mise cannot fetch or build it, and since no bottle exists for the machine either, check_buildable rejects the build up front and names the strategy.

Source

Thrown at src/system/packages/brew/source.rs:67

pub fn missing_bottle_reason(formula: &Formula) -> String {
    match formula.bottle_files() {
        Some(files) if !files.is_empty() => {
            let mut tags: Vec<String> = files.keys().cloned().collect();
            tags.sort();
            format!("bottles exist only for: {}", tags.join(", "))
        }
        _ => "source-only formula, no bottles".to_string(),
    }
}

/// Reject early what the source builder cannot handle, with the reason —
/// checked before any work happens so dry-run and real runs fail alike.
pub fn check_buildable(formula: &Formula) -> Result<()> {
    let Some(src) = formula.stable_url() else {
        bail!("{}: formula has no stable source URL", formula.name);
    };
    if let Some(using) = &src.using {
        bail!(
            "{}: source uses the {using:?} download strategy, which mise cannot build from \
             (and no bottle exists for this machine)",
            formula.name,
        );
    }
    if src.checksum.is_none() {
        bail!("{}: source archive has no sha256 in the API", formula.name);
    }
    // the formula .rb must be pinned to the API snapshot's commit and
    // verifiable — evaluating a newer/unverified formula against older
    // source metadata would build the wrong thing
    if formula.ruby_source_path.is_none() {
        bail!("{}: API metadata has no ruby_source_path", formula.name);
    }
    if formula.tap_git_head.is_none() {
        bail!("{}: API metadata has no tap_git_head", formula.name);
    }
    if formula

View on GitHub (pinned to 9dcfcaa0dc)

Solutions

  1. Install that formula with native Homebrew, which implements all download strategies
  2. Choose a different formula/version that ships a plain tarball source or a bottle for your platform
  3. Install the tool directly (clone and build) outside mise
Defensive patterns

Strategy: validation

Prevention

When it happens

Trigger: A formula whose stable source uses `using:` reaches check_buildable because the host had no matching bottle tag; the `using` field is Some and the bail fires with the Debug-formatted strategy.

Common situations: Formulae built from git checkouts or other VCS strategies; platforms without bottles (unusual architectures, Linuxbrew edge cases) forcing source builds of such formulae.

Related errors


AI-assisted analysis of jdx/mise@9dcfcaa0dc (2026-08-17). Data as JSON: /api/errors/fc352760974bb67e. Report an issue: GitHub.