dbt-labs/dbt-core · error · anyhow
no brew-supported targets found in {source_desc} (need at le
Error message
no brew-supported targets found in {source_desc} (need at least one of: aarch64-apple-darwin, x86_64-apple-darwin, aarch64-unknown-linux-gnu, x86_64-unknown-linux-gnu) What it means
After collecting tarballs, render.rs resolves which platforms they cover and requires at least one of the four brew-supported targets (aarch64-apple-darwin, x86_64-apple-darwin, aarch64-unknown-linux-gnu, x86_64-unknown-linux-gnu). If resolve_platforms() matches none of the found tarballs against the URL template and version, run() bails. A Homebrew formula cannot be generated without at least one supported platform artifact.
Source
Thrown at crates/dbt-ci/src/homebrew/render.rs:75
(None, Some(file)) => (
collect_tarballs_from_sha256sums(file, &args.tarball_prefix, &args.version)?,
format!("manifest {}", file.display()),
),
(None, None) | (Some(_), Some(_)) => {
unreachable!("clap should reject neither/both --tarballs-dir/--sha256sums")
}
};
if tarballs.is_empty() {
bail!(
"no `{prefix}{version}-*.tar.gz` tarballs found in {source_desc}",
prefix = args.tarball_prefix,
version = args.version,
);
}
let platforms = resolve_platforms(&tarballs, &args.url_template, &args.version);
if platforms.is_empty() {
bail!(
"no brew-supported targets found in {source_desc} (need at least one of: \
aarch64-apple-darwin, x86_64-apple-darwin, aarch64-unknown-linux-gnu, x86_64-unknown-linux-gnu)",
);
}
// `install_as` defaults to the formula name — preserves the historic
// behavior where `bin.install "X"` is renamed to match the formula's
// filename when binary-name and formula-name differ.
let install_as = args
.install_as
.clone()
.unwrap_or_else(|| formula_name.clone());
let ctx = FormulaCtx {
class_name: pascal_case(&formula_name),
binary_name: args.binary_name.clone(),
install_as,
version: args.version.clone(),View on GitHub (pinned to 0267ce9170)
Solutions
- Build and include release artifacts for at least one supported target: aarch64-apple-darwin, x86_64-apple-darwin, aarch64-unknown-linux-gnu, or x86_64-unknown-linux-gnu.
- Ensure artifact filenames contain the exact target triple so resolve_platforms can map them.
- If using a custom --url-template, confirm it preserves the target-triple segment the resolver parses.
- Check the release build matrix in CI actually produces gnu/darwin targets and not only musl/windows.
Example fix
// before (build matrix only produces musl)
matrix: { target: [x86_64-unknown-linux-musl] }
// after
matrix:
target: [aarch64-apple-darwin, x86_64-apple-darwin, x86_64-unknown-linux-gnu] Defensive patterns
Strategy: validation
Validate before calling
const SUPPORTED: [&str; 4] = [
"aarch64-apple-darwin",
"x86_64-apple-darwin",
"aarch64-unknown-linux-gnu",
"x86_64-unknown-linux-gnu",
];
let has_supported = tarballs.iter().any(|t| {
SUPPORTED.iter().any(|tgt| t.to_string_lossy().contains(tgt))
});
if !has_supported {
return Err("release artifacts contain none of the four brew-supported target triples".into());
} Try / catch
match render() {
Err(e) if e.to_string().contains("brew-supported targets") => {
eprintln!("no darwin/gnu artifacts in release; fix build matrix to include at least one supported target");
}
Err(e) => return Err(e),
Ok(v) => v,
} Prevention
- Include all four supported targets in the release build matrix by default.
- Verify uploaded artifact names embed the exact target triple.
- Review the build matrix whenever target lists change.
- Add a CI gate that scans release assets for supported triples before publishing the formula.
When it happens
Trigger: All tarballs found in the source correspond to targets outside the supported list (e.g. aarch64-unknown-linux-musl, windows targets, *-freebsd), or resolve_platforms fails to match the URL template/filename convention so no platform is extracted from otherwise valid artifacts.
Common situations: Release built only for musl static targets which Homebrew formulae don't reference; artifacts renamed to a convention resolve_platforms no longer recognizes (e.g. target triple missing from filename); publishing a formula for a Windows-only release; custom --url-template that no longer embeds the target triple the parser expects.
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
- no `{prefix}{version}-*.tar.gz` tarballs found in {source_de
- env var `{env_name}` is not set (required unless --dry-run)
- `git {}` exited with status {}
- formula file not found: {}
- formula filename does not end in .rb: {filename}
AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07).
Data as JSON: /api/errors/f7aeb1b0ccec5343.
Report an issue: GitHub.