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 formulaView on GitHub (pinned to 9dcfcaa0dc)
Solutions
- Install that formula with native Homebrew, which implements all download strategies
- Choose a different formula/version that ships a plain tarball source or a bottle for your platform
- Install the tool directly (clone and build) outside mise
Defensive patterns
Strategy: validation
Prevention
- Recognize formulae whose sources use VCS strategies (:git, :cvs) — mise cannot build them
- On bottle-less platforms, install such formulae with native Homebrew
- Check `brew info <formula>` for download strategy before expecting mise to build from source
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
- {}: formula has no stable source URL
- {}: source archive has no sha256 in the API
- {}: API metadata has no ruby_source_path
- {}: API metadata has no tap_git_head
- {}: API metadata has no formula checksum
AI-assisted analysis of jdx/mise@9dcfcaa0dc (2026-08-17).
Data as JSON: /api/errors/fc352760974bb67e.
Report an issue: GitHub.