On Wed, Mar 4, 2015 at 02:32 PM, "J. Lewis Muir" <jlmuir@imca-cat.org> wrote: > The install_name of libnotmuch.dylib on Mac OS X is what is written > into a program that links against it. If it is just the name of the > shared library file, as opposed to the full path, the program won't be > able to find it when it runs and will abort. Instead, the install_name > should be the full path to the shared library (in its final installed > location). Thanks for this fix! I built notmuch last night on my mac using the prefix of "/opt/local", and it revealed this problem. Manually moving libnotmuch.dylib to $HOME/lib fixed it. I'll try again once this patch is checked in. > > Why does Notmuch work without this patch when installed via Homebrew? > The answer is twofold. One, /usr/local/lib is a special location in > which the dynamic linker will look by default to find shared libraries. > Homebrew highly recommends installing to /usr/local, and, assuming it > has been configured this way, the Notmuch library will end up installed > in /usr/local/lib, and the dynamic linker will find it. Two, Homebrew > globally corrects all install names in dynamically shared libraries and > binaries for each package it installs. So, even if the install names in > a package's binaries and libraries are incorrect, Homebrew corrects them > automatically, and no one ever knows. > > Why does Notmuch work without this patch when installed via MacPorts? > The answer is that MacPorts applies a patch just like this patch to fix > the same problem.