[PATCH v2] lib: make notmuch shared library install_name be full path on Mac OS X
authorJ. Lewis Muir <jlmuir@imca-cat.org>
Wed, 4 Mar 2015 22:32:49 +0000 (16:32 +1800)
committerW. Trevor King <wking@tremily.us>
Sat, 20 Aug 2016 21:48:14 +0000 (14:48 -0700)
a4/e63a2e4fc576cfad8b08349668432d05d53f7a [new file with mode: 0644]

diff --git a/a4/e63a2e4fc576cfad8b08349668432d05d53f7a b/a4/e63a2e4fc576cfad8b08349668432d05d53f7a
new file mode 100644 (file)
index 0000000..6f09829
--- /dev/null
@@ -0,0 +1,92 @@
+Return-Path: <jlmuir@imca-cat.org>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+       by olra.theworths.org (Postfix) with ESMTP id 7A2C4431FAF\r
+       for <notmuch@notmuchmail.org>; Wed,  4 Mar 2015 14:34:27 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 2.438\r
+X-Spam-Level: **\r
+X-Spam-Status: No, score=2.438 tagged_above=-999 required=5\r
+       tests=[DNS_FROM_AHBL_RHSBL=2.438] autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+       with ESMTP id PYjE9rkpNREz for <notmuch@notmuchmail.org>;\r
+       Wed,  4 Mar 2015 14:34:24 -0800 (PST)\r
+Received: from tuna.imca.aps.anl.gov (tuna.imca.aps.anl.gov [164.54.200.33])\r
+       by olra.theworths.org (Postfix) with ESMTP id 53327431FAE\r
+       for <notmuch@notmuchmail.org>; Wed,  4 Mar 2015 14:34:24 -0800 (PST)\r
+Received: from localhost (seal.imca.aps.anl.gov [164.54.200.39])\r
+       by tuna.imca.aps.anl.gov (Postfix) with ESMTP id C0C0020067;\r
+       Wed,  4 Mar 2015 16:33:23 -0600 (CST)\r
+From: "J. Lewis Muir" <jlmuir@imca-cat.org>\r
+To: notmuch@notmuchmail.org\r
+Subject: [PATCH v2] lib: make notmuch shared library install_name be full path\r
+       on Mac OS X\r
+Date: Wed,  4 Mar 2015 16:32:49 -0600\r
+Message-Id: <1425508369-28448-1-git-send-email-jlmuir@imca-cat.org>\r
+X-Mailer: git-send-email 1.9.3 (Apple Git-50)\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+       <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Wed, 04 Mar 2015 22:34:27 -0000\r
+\r
+The install_name of libnotmuch.dylib on Mac OS X is what is written\r
+into a program that links against it.  If it is just the name of the\r
+shared library file, as opposed to the full path, the program won't be\r
+able to find it when it runs and will abort.  Instead, the install_name\r
+should be the full path to the shared library (in its final installed\r
+location).\r
+\r
+Why does Notmuch work without this patch when installed via Homebrew?\r
+The answer is twofold.  One, /usr/local/lib is a special location in\r
+which the dynamic linker will look by default to find shared libraries.\r
+Homebrew highly recommends installing to /usr/local, and, assuming it\r
+has been configured this way, the Notmuch library will end up installed\r
+in /usr/local/lib, and the dynamic linker will find it.  Two, Homebrew\r
+globally corrects all install names in dynamically shared libraries and\r
+binaries for each package it installs.  So, even if the install names in\r
+a package's binaries and libraries are incorrect, Homebrew corrects them\r
+automatically, and no one ever knows.\r
+\r
+Why does Notmuch work without this patch when installed via MacPorts?\r
+The answer is that MacPorts applies a patch just like this patch to fix\r
+the same problem.\r
+---\r
+ lib/Makefile.local | 2 +-\r
+ 1 file changed, 1 insertion(+), 1 deletion(-)\r
+\r
+diff --git a/lib/Makefile.local b/lib/Makefile.local\r
+index 7278f46..f9ecd50 100644\r
+--- a/lib/Makefile.local\r
++++ b/lib/Makefile.local\r
+@@ -27,7 +27,7 @@ LIBRARY_SUFFIX = dylib\r
+ LINKER_NAME = libnotmuch.$(LIBRARY_SUFFIX)\r
+ SONAME = libnotmuch.$(LIBNOTMUCH_VERSION_MAJOR).$(LIBRARY_SUFFIX)\r
+ LIBNAME = libnotmuch.$(LIBNOTMUCH_VERSION_MAJOR).$(LIBNOTMUCH_VERSION_MINOR).$(LIBNOTMUCH_VERSION_RELEASE).$(LIBRARY_SUFFIX)\r
+-LIBRARY_LINK_FLAG = -dynamiclib -install_name $(SONAME) -compatibility_version $(LIBNOTMUCH_VERSION_MAJOR).$(LIBNOTMUCH_VERSION_MINOR) -current_version $(LIBNOTMUCH_VERSION_MAJOR).$(LIBNOTMUCH_VERSION_MINOR).$(LIBNOTMUCH_VERSION_RELEASE)\r
++LIBRARY_LINK_FLAG = -dynamiclib -install_name $(libdir)/$(SONAME) -compatibility_version $(LIBNOTMUCH_VERSION_MAJOR).$(LIBNOTMUCH_VERSION_MINOR) -current_version $(LIBNOTMUCH_VERSION_MAJOR).$(LIBNOTMUCH_VERSION_MINOR).$(LIBNOTMUCH_VERSION_RELEASE)\r
+ else\r
+ LIBRARY_SUFFIX = so\r
+ LINKER_NAME = libnotmuch.$(LIBRARY_SUFFIX)\r
+-- \r
+1.9.3 (Apple Git-50)\r
+\r
+This version of the patch has a better commit message as suggested\r
+by David Bremner on the mailing list.  The steps for reproducing the\r
+problem and the steps showing the analysis of the problem have been\r
+removed.  Added is an answer to the question of why Notmuch works\r
+without this patch when installed via Homebrew and MacPorts.\r
+\r
+The message-id of the previous version of this patch is\r
+1409541227-38895-1-git-send-email-jlmuir@imca-cat.org.\r