SIGN IN SIGN UP
Homebrew / brew UNCLAIMED

🍺 The missing package manager for macOS (or Linux)

0 0 185 Ruby

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