Skip to content

What doesn't build yet, by failure class

This is the honest list of brew formulae we've tried to translate and got at least partway with, but that don't ship green yet. Each entry says what blocks it and what shape the fix takes — so contributions go to the right layer (translator, recipe class, or single-recipe handcraft).

Recipes not in this list and not in the working list are simply ones we haven't tried yet. The corpus grows weekly; if you want a specific package, open an issue.

How to read

Generated by tools/status-report.py from a hand-curated list near the bottom of the script (_BLOCKERS). When something flips to working, delete its entry — the script doesn't double-check, so stale entries are on us to clean up.

Translator pattern not handled yet

13 recipes.

  • lcov — vendored Perl CPAN modules via resources.each do |r|; r.stage do. Needs a multi-source recipe class.
  • exiftool — same Perl CPAN multi-source pattern as lcov.
  • cloc — same Perl CPAN multi-source pattern.
  • sevenzipsystem 'make', '-f', '<Makefile>', ... — generic make translator drops the explicit Makefile arg.
  • nvm — shell-only install — bash function loader, no real build.
  • fisher — shell-only install — fish plugin manager.
  • bats-core — shell-only install — bash test runner.
  • telnet — openbsd cd .. && make install shape the translator doesn't match.
  • terminal-notifier — uses xcodebuild not swift build — needs a translator pattern.
  • docker-completion — completion-only formula; no install steps the translator recognises.
  • zsh-completions — completion-only formula; same.
  • zsh-autosuggestions — zsh plugin loader; no compile step.
  • watch — linux-specific procps utility (the macOS watch brew formula is just procps-ng cross-built).

Upstream version skew / API mismatch

6 recipes.

  • mosh — protoc-from-our-protobuf works, but mosh 1.4.0 expects protobuf < 5.x and we ship 35.0. Either pin an older protobuf alongside the current one or wait for upstream mosh to catch up.
  • isl — configure's --with-gmp=<dir> selector vs --with-gmp-prefix= quirk conflicts with our auto-emitted --with-gmp=${DEP:gmp} flag — recipe-specific override needed.
  • itstool — vendored libxml2 Python bindings (multi-source CPAN-style pattern).
  • libidn2 — bundled gnulib version-etc.c references undefined _version_etc_copyright; symbol is supposed to come from version-etc-fsf.c which the tarball ships but the configure step skips.
  • jpeg-xl — runs a deps.sh to download bundled deps (highway, brotli) before cmake — multi-source pattern.
  • libomp — needs a sibling LLVM build (compiler-rt + libcxx); needs a custom recipe.

Per-recipe build-shape fix

21 recipes.

  • deno — monorepo cargo workspace with binary-name renames the std.cargo bin-walker doesn't pick up correctly.
  • grpc — cmake-based but with a feature-flag matrix the translator doesn't translate.
  • mysql — autotools fork (./mysql_config pre-step + custom configure flags).
  • pulumi — Makefile with brew-specific make brew target.
  • vim./configure plus a vim-specific make invocation; configure expects --with-features=huge to be set.
  • wget — needs libidn2 (blocked above).
  • rsyncint32 type used as a typedef but not predefined on darwin Sequoia; upstream byteorder.h needs #include <stdint.h>.
  • gnu-targnulib link issues similar to libidn2.
  • guileconfigure: error: No iconv support — libunistring built without iconv inside our autotools chain.
  • aws-sam-cligo.mod not found at expected path inside the brew tarball layout.
  • bubblewrap${DEP:X} for a brew dep not in our mapping table.
  • freetds — autotools fork with custom configure args.
  • gsasl — autotools fork with conflict between bundled gnulib and our tools.
  • httrackmake Error 2 — autotools shape that the translator emits doesn't match the actual Makefile.
  • libpq — needs a substantial postgresql client-libs split build.
  • the_silver_searcher — autoreconf wants pkg.m4 macros not in our m4 dir.
  • bgpq4autoreconf step fails — automake version skew.
  • rbenvcompletions/_rbenv path missing in the tarball layout.
  • libass — darwin BSD ar flags incompatible with libtool's expected GNU ar.
  • jdupesstruct stat::st_mtim is Linux-only; darwin has st_mtimespec. Upstream portability gap.
  • stress-ng — linux-specific syscalls (futex, clone).

Swift 6 / Xcode 16 host requirement

8 recipes.

  • xcbeautifyswift build rejects host Swift 5.10; needs Swift 6.x.
  • xcodegenswift build rejects host Swift 5.10; needs Swift 6.x.
  • xcresultparserswift build rejects host Swift 5.10; needs Swift 6.x.
  • swiftlint — Swift 6 features in source.
  • sourcekitten — Swift 6 + custom make prefix_install target.
  • swift-protobuf — package.swift declares Swift 6.2 minimum.
  • lume — needs Swift 6 + Package.swift in subdir.
  • periphery — Swift 6 + xcodebuild.

Real package gap (recipe needs writing)

9 recipes.

  • gitless — needs libgit2@1.7 (we have libgit2 latest, not @1.7).
  • libgtop — needs intltool + perl-xml-parser.
  • ncdu — needs zig@0.15; we don't have a zig recipe yet.
  • nmap — needs liblinear (source URL has TLS-cert issue we can't bypass cleanly).
  • pypy3.10 — needs pypy + tcl-tk@8.
  • wasi-libc — needs wasm-micro-runtime.
  • wasmer — needs xkeyboard-config (Linux-only).
  • zig — needs llvm@21 + lld@21.
  • cmake-docs — needs sphinx-doc with extra extensions; current build produces no output.

Source URL refuses to fetch

2 recipes.

  • liblinearhttps://www.csie.ntu.edu.tw/... server has a TLS cert chain issue.
  • block-goose-cli — upstream tarball hash drifted between the brew sha and the actual download.

@N version handling

6 recipes.

  • postgresql@14 — the translator emits a working recipe but the build needs minor-specific configure flags.
  • postgresql@16 — same.
  • postgresql@17 — same.
  • python@3.10 — same.
  • ruby@3.1 — same.
  • ruby@3.2 — same.

Misc (custom install / non-tarball source / refusal)

14 recipes.

  • caddy — shell-only install loop the translator doesn't match.
  • mole — same as caddy.
  • azure-cli — huge multi-component install pattern.
  • golangci-lint — build uses a vendored go-toolchain pattern.
  • cocoapods — Ruby gem install with extra steps.
  • git-filter-repo — single-script install pattern.
  • docker-credential-helper-ecr — go-build with platform-specific link flags.
  • groovysdk — needs openjdk-bootstrap (Java toolchain we haven't seeded).
  • python-yq — needs jq wired at runtime, not just build.
  • buf — missing url+sha (uses non-standard source kind).
  • dart-sdk — missing url+sha (uses non-standard source kind).
  • duckdb — symlink loop in the test fixtures trips our git-fetch copy.
  • jenv — shell-only install.
  • cfssl — install block uses go-build with non-standard target paths.