make install: Run ldconfig or install a DT_RUNPATH in binary as appropriate.
authorCarl Worth <cworth@cworth.org>
Fri, 4 Jun 2010 23:52:56 +0000 (16:52 -0700)
committerCarl Worth <cworth@cworth.org>
Fri, 4 Jun 2010 23:52:56 +0000 (16:52 -0700)
commitd64d0cc8d9f9e9f23fa4432328db2ea4739bae0f
tree049b68354a6ddee473ea35144d3452680d5dd15f
parentb3076ed2693c6e32fd70a9ec78e36bc71727356e
make install: Run ldconfig or install a DT_RUNPATH in binary as appropriate.

Various users were confused as to why they couldn't run notmuch
immediately after "make install", (with linker errors saying that
libnotmuch.so could not be found). The errors came from two different
causes:

1. The user had installed to a system library directory, but had not
   yet run ldconfig.

2. The user had installed to some non-system directory, and had not
   set the LD_LIBRARY_PATH variable.

With this change we fix both problems (on Linux) without the user
having to do anything additional. We first use ldconfig to find the
system library directories. If the user is installing to one of these,
then we run ldconfig as part of "make install".

For case (2) we use the -rpath and --enable-new-dtags linker options
to install a DT_RUNPATH entry in the binary. This entry tells the
dynamic linker where to find libnotmuch. Without the
--enable-new-dtags option only a DT_RPATH option would be installed,
(which has the drawback of not allowing any override with the
LD_LIBRARY_PATH variable).

Distributions (such as Debian and Fedora) don't want to see binaries
packaged with a DT_RPATH or DT_RUNPATH entry. This should be avoided
automatically as long as the packages install to standard locations,
(such as /usr/lib).
Makefile.local
configure
lib/Makefile.local