[PATCH v2] lib: make notmuch shared library install_name be full path on Mac OS X

Jinwoo Lee jinwoo68 at gmail.com
Wed Mar 4 14:39:44 PST 2015


On Wed, Mar  4, 2015 at 02:32 PM, "J. Lewis Muir" <jlmuir at 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.


More information about the notmuch mailing list