[PATCH] python: replace hardcoding of SONAME version

Subject: [PATCH] python: replace hardcoding of SONAME version

Date: Sat, 7 Mar 2015 08:31:14 +0100

To: notmuch@notmuchmail.org

Cc:

From: David Bremner


Failing to update this string in globals.py causes failures when the
SONAME changes.  In order to hopefully reduce the number of such
errors, automate the process of setting the SONAME in the python
bindings.
---
 Makefile.local                     | 4 +++-
 bindings/python/notmuch/globals.py | 5 +++--
 bindings/python/notmuch/version.py | 1 +
 3 files changed, 7 insertions(+), 3 deletions(-)

After hitting the mismatch again while working on the count API, I
decided to try to fix it.

diff --git a/Makefile.local b/Makefile.local
index 81ee347..6d54742 100644
--- a/Makefile.local
+++ b/Makefile.local
@@ -107,7 +107,9 @@ dist: $(TAR_FILE)
 .PHONY: update-versions
 
 update-versions:
-	sed -i "s/^__VERSION__[[:blank:]]*=.*$$/__VERSION__ = \'${VERSION}\'/" $(PV_FILE)
+	sed -i -e "s/^__VERSION__[[:blank:]]*=.*$$/__VERSION__ = \'${VERSION}\'/" \
+	    -e "s/^SOVERSION[[:blank:]]*=.*$$/SOVERSION = \'${LIBNOTMUCH_VERSION_MAJOR}\'/" \
+	    ${PV_FILE}
 
 # We invoke make recursively only to force ordering of our phony
 # targets in the case of parallel invocation of make (-j).
diff --git a/bindings/python/notmuch/globals.py b/bindings/python/notmuch/globals.py
index 24b25d3..4c49d51 100644
--- a/bindings/python/notmuch/globals.py
+++ b/bindings/python/notmuch/globals.py
@@ -18,15 +18,16 @@ Copyright 2010 Sebastian Spaeth <Sebastian@SSpaeth.de>
 """
 
 from ctypes import CDLL, Structure, POINTER
+from version import SOVERSION
 
 #-----------------------------------------------------------------------------
 #package-global instance of the notmuch library
 try:
     from os import uname
     if uname()[0] == 'Darwin':
-        nmlib = CDLL("libnotmuch.4.dylib")
+        nmlib = CDLL("libnotmuch.{0:s}.dylib".format(SOVERSION))
     else:
-        nmlib = CDLL("libnotmuch.so.4")
+        nmlib = CDLL("libnotmuch.so.{0:s}".format(SOVERSION))
 except:
     raise ImportError("Could not find shared 'notmuch' library.")
 
diff --git a/bindings/python/notmuch/version.py b/bindings/python/notmuch/version.py
index f719fdf..35744d3 100644
--- a/bindings/python/notmuch/version.py
+++ b/bindings/python/notmuch/version.py
@@ -1,2 +1,3 @@
 # this file should be kept in sync with ../../../version
 __VERSION__ = '0.19'
+SOVERSION = '4'
-- 
2.1.4


Thread: