fix: serialize entries with overlapping recursive deps
`brew install` acquires file locks on all recursive dependencies (including build deps via FormulaInstaller#lock). When two entries share any transitive dep (e.g., bat and fd both pull in ca-certificates via their rust/libgit2 chains), their concurrent `brew install` processes deadlock on the shared file lock. Use Formula#recursive_dependencies to build a conflict graph: entries sharing any transitive dep are serialized (later entry waits for earlier). Entries with disjoint dep trees still run in parallel. Example with tree, bat, fd, fzf (--jobs=4): Batch 1: tree + bat + fzf (parallel, no shared deps) Batch 2: fd (after bat, shared ca-certificates/openssl chain)
M
Matt Van Horn committed
11166aff32eb7ad966a0155842d88a2852a01831
Parent: fe13c72