[RFC PATCH] Python bindings: CDLL("libnotmuch.3.dylib") on Darwin

Tomi Ollila tomi.ollila at iki.fi
Tue Jun 25 07:36:56 PDT 2013


Use os.uname() to check for 'Darwin' and load "libnotmuch.3.dylib"
instead of "libnotmuch.so.3" if that is the case.
---

This is followup to thread starting from

  id:1369540418-94177-1-git-send-email-Julian at GrayVines.com

For anyone interested: this is basically no-overhead addition as ctypes
already loads os module (is "available" as ctypes._os) -- Comparison using
strace(1) showed that uname system call is used in addition to other processing.

This patch is modeled after _lb_'s comments on IRC:

< _lb_> nmlib = CDLL("libnotmuch.so.3") needs to be replaced with
        nmlib = CDLL("libnotmuch.3.dylib") in OSX
< _lb_> Works like a charm! Mmm... I'll have to subscribe to the list
        to send the patch...
< _lb_> I guess the quid of the question is to have an os detection
        if so it loads the right lib?

... a few days ago, but the patch didn't arrive yet ;D

I tested that this still works on Linux, but did not test on Mac OS X;
also I did not think much how to handle the importing and the if test.

Anyone using Mac care to take over -- you are probably more interested
of getting this thing to work :D

Tomi

 bindings/python/notmuch/globals.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/bindings/python/notmuch/globals.py b/bindings/python/notmuch/globals.py
index c7632c3..2deb87c 100644
--- a/bindings/python/notmuch/globals.py
+++ b/bindings/python/notmuch/globals.py
@@ -22,7 +22,11 @@ from ctypes import CDLL, Structure, POINTER
 #-----------------------------------------------------------------------------
 #package-global instance of the notmuch library
 try:
-    nmlib = CDLL("libnotmuch.so.3")
+    from os import uname
+    if uname()[0] == 'Darwin':
+        nmlib = CDLL("libnotmuch.3.dylib")
+    else:
+        nmlib = CDLL("libnotmuch.so.3")
 except:
     raise ImportError("Could not find shared 'notmuch' library.")
 
-- 
1.8.0



More information about the notmuch mailing list