[Xapian-tickets] [Xapian] #732: Consider using @rpath on OS X

Xapian nobody at xapian.org
Thu Aug 11 13:09:36 BST 2016


#732: Consider using @rpath on OS X
---------------------------------+------------------
        Reporter:  james         |      Owner:  olly
            Type:  defect        |     Status:  new
        Priority:  normal        |  Milestone:
       Component:  Build system  |    Version:
        Severity:  normal        |   Keywords:
      Blocked By:                |   Blocking:
Operating System:  Mac OS X      |
---------------------------------+------------------
 OS X library linkage is by full path, but with an override using
 DYLD_LIBRARY_PATH (and friends) so that you can change the exact location
 of the library in use at runtime. However SIP (the system integrity
 protection) system on recent versions of OS X prevents DYLD_* environment
 variables from affecting "system" binaries, such as those in /usr/bin.

 There's an alternative way of linking OS X dynamic libraries. By setting
 the library name to "@rpath/<leafname>" (eg `install_name_tool -id
 '@rpath/libxapian.30.dylib' .libs/libxapian.30.dylib`, or `-install_name
 '@rpath/libxapian.30.dylib'` to the linker), the RPATH segments of binary
 objects is used instead. This then has to be set (using `-rpath` to the
 linker command), and edited (using `install_name_tool`).

 Either we could add both the build and install paths to all binaries built
 in-tree, or we could add the build version and then use
 `install_name_tool` on installation to change that to the install path.
 This would then allow us to drop all the DYLD_* use in -bindings, and
 should allow tests to run against system libraries (which is impossible at
 the moment because of DYLD_* pruning).

 `xapian-config --ldflags` would then have to include `-rpath <install-lib-
 path>` so that clients can link with the installed version of Xapian.
 (Allow out-tree binaries to link with the in-tree uninstalled version
 seems unnecessary and prone to complication.)

 Note that libtool already sets `-install_name`, and there doesn't seem to
 be a way of overriding it. (OS X ships with its own thing called
 'libtool', but I've no idea how compatible / what version it is.)

--
Ticket URL: <https://trac.xapian.org/ticket/732>
Xapian <//xapian.org/>
Xapian



More information about the Xapian-tickets mailing list