[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