{"record":{"id":"fc352760974bb67e","repo":"jdx/mise","slug":"source-uses-the-using-download-strategy-w","errorCode":null,"errorMessage":"{}: source uses the {using:?} download strategy, which mise cannot build from (and no bottle exists for this machine)","messagePattern":"(.+?): source uses the (.+?) download strategy, which mise cannot build from \\(and no bottle exists for this machine\\)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/system/packages/brew/source.rs","lineNumber":68,"sourceCode":"pub(super) fn missing_bottle_reason(formula: &Formula) -> String {\n    match formula.bottle_files() {\n        Some(files) if !files.is_empty() => {\n            let mut tags: Vec<String> = files.keys().cloned().collect();\n            tags.sort();\n            format!(\"bottles exist only for: {}\", tags.join(\", \"))\n        }\n        _ => \"source-only formula, no bottles\".to_string(),\n    }\n}\n\n/// Reject early what the source builder cannot handle, with the reason —\n/// checked before any work happens so dry-run and real runs fail alike.\npub(super) fn check_buildable(formula: &Formula) -> Result<()> {\n    let Some(src) = formula.stable_url() else {\n        bail!(\"{}: formula has no stable source URL\", formula.name);\n    };\n    if let Some(using) = &src.using {\n        bail!(\n            \"{}: source uses the {using:?} download strategy, which mise cannot build from \\\n             (and no bottle exists for this machine)\",\n            formula.name,\n        );\n    }\n    if src.checksum.is_none() {\n        bail!(\"{}: source archive has no sha256 in the API\", formula.name);\n    }\n    // the formula .rb must be pinned to the API snapshot's commit and\n    // verifiable — evaluating a newer/unverified formula against older\n    // source metadata would build the wrong thing\n    if formula.ruby_source_path.is_none() {\n        bail!(\"{}: API metadata has no ruby_source_path\", formula.name);\n    }\n    if formula.tap_git_head.is_none() {\n        bail!(\"{}: API metadata has no tap_git_head\", formula.name);\n    }\n    if formula","sourceCodeStart":50,"sourceCodeEnd":86,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/system/packages/brew/source.rs#L50-L86","documentation":"The formula declares a non-standard `using:` download strategy (e.g. :git, :homebrew_curl, :special). mise can only build from plain URL/checksum archives, and since no bottle exists for this machine it falls back to source — which it refuses early with this message.","triggerScenarios":"`check_buildable` sees `src.using` set on the stable source while no bottle is available for the host tag, so `build` bails naming the strategy.","commonSituations":"Niche formulas that fetch via git or special strategies; installing on uncommon platforms (linux, new macOS/ARM combos) where those formulas lack bottles; formula recently switched download strategy upstream.","solutions":["Install on a platform/OS where a bottle exists so source build is not attempted","Use a different mise backend that can handle the tool (github:, cargo:, etc.)","Install the formula with brew directly and point mise at the brew-provided version","Ask upstream to provide a normal URL-based stable spec or open a mise issue to support that strategy"],"exampleFix":"# before\nmise use brew:some-git-strategy-formula\n# after\nmise use github:some-org/some-tool","handlingStrategy":"fallback","validationCode":"curl -s https://formulae.brew.sh/api/formula/<name>.json | jq -r '.urls.stable.using' # non-null means special strategy","typeGuard":null,"tryCatchPattern":"catch the 'download strategy' message => pick an alternate backend (github:, cargo:) or a brew version with bottles","preventionTips":["Inspect `.urls.stable.using` in the API before choosing brew: for a tool","Maintain fallback backend entries in mise config","Keep to mainstream formulas/versions with standard curl-based sources","Test installs on your actual target platform (linux/arm64 etc.) early"],"tags":["homebrew","download-strategy","build-from-source","unsupported"],"backgroundTag":"unsupported-operation","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}