On Tue, 29 Dec 2009 04:16:43 -0500, Ben wrote: > Regardless, I thought it might be nice to have access to the notmuch > backend from a language other than C (preferably my high-level language > of choice, python) [...] Funny, I was just doing the same: a Python binding. Haha, so now we have two just-backed Python bindings. What should we do? > [...] To this end, I took a few hours today acquainting > myself with SWIG and produced these bindings for Python. Unfortunately, > it doesn't appear that SWIG has particularly good support for > object-oriented C [...] I already used SWIG sometimes in the past (and did not like it a lot), so my binding is using Cython [*] (which is exactly like Pyrex plus some extra features), so the binding is partly manual. > While the bindings are currently in the form of a patch to notmuch > (creating a top-level swig directory in the source tree), they could > certainly be moved out-of-tree if the powers that be don't feel it > appropriate to include them. [...] Same here, see attached patch. It is currently unfinished, and I was just about to add support for iterating notmuch_threads_t and other similar structures. I can also publish a Git repo with the entire branch, just drop me a line if you want me to do that. > [...] Unfortunately, the build system is currently almost entirely > independent from the notmuch build system. If these are to be > included in-tree, I would be curious to hear people have > to say about how we might integrate it into the sup build system. ^^^ (Mmmh, I suppose you mean "notmuch build system" there :P) Mine is a little more cooked, as I have added a distutils "setup.py" script. The bad news is that Python modules need to be compiled as relocatable object files (-fPIC to teh rescue!), and the linker will refuse to link the generated code with "notmuch.a" -- so I am instructing distutils to compile *all* sources again. Not nice. BTW, I think that if more bindings start to appear, Notmuch might be built as a shared library, to avoid duplicating it everywhere. One option may be using *just* libtool but not the rest of auto-foo tools (for the record: I agree with Carl that they are slow and wicked). Regards, [*] http://www.cython.org/ -- Adrian Perez de Castro Igalia - Free Software Engineering