[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