Clang cannot load `libz3` during an in-progress upgrade
Source: Troubleshooting reference
Symptom: a formula failure ends with a separate loader error such as:
clang: error while loading shared libraries: libz3.so.4.15: cannot open shared object fileRoot cause: Bundle upgraded Z3 before unversioned LLVM. The installed LLVM still
needs Z3’s previous major SONAME, while opt/z3 already selects the new keg.
This is independent of a formula that was compiled with GCC and usually repairs
itself when the same Bundle run reaches LLVM.
The Linux installer reconciles this pair before Bundle: it upgrades an outdated
LLVM in upgrade mode, reinstalls a current keg whose linkage is broken, and
checks both brew linkage and the unversioned Clang executable again after
Bundle.
Do not point the old SONAME at the new major library or repoint opt/z3 during
the active transaction. After all Homebrew processes exit, rerun
~/dotfiles/bootstrap.sh upgrade. For a manual check, run:
"$(brew --prefix)/bin/clang" --versionIf it still reports the old Z3 SONAME, upgrade an outdated LLVM or reinstall a current but broken keg, then verify its linkage:
if [[ -n "$(brew outdated --formula llvm)" ]]; then brew upgrade llvmelse brew reinstall llvmfibrew linkage --test llvm"$(brew --prefix)/bin/clang" --version