Re: Last minute fixes to the go bindings

2012-05-10 Thread Justus Winter
Quoting Austin Clements (2012-05-09 20:07:00)
 LGTM.
 
 Quoth Justus Winter on May 09 at 12:23 pm:
  Hi everyone :)
  
  this is a small patch series that I'd like to see included in 0.13.
  
  The first patch updates notmuch-addrlookup with respect to Austins
  recent change of the notmuch_database_open function. This fixes the
  compilation of the utility.
  
  The second patch fixes the values of all the STATUS_* constants. Turns
  out all of them were set to zero by accident. This isn't a c style
  enum, golang has the iota operator to do this kind of stuff. This
  fixes the error handling for all the users of the go bindings.
 
 'Doh!  Is it possible to get the status values out of cgo, rather than
 depending on the list in libnotmuch and the list in Go being in the
 same order?

Yes, it is and I've prepared a patch. But since I'm living in go 1
land here I prepared it on top of my go 1 patchset and I'm thinking of
sending it once that one got merged.

@David: what do you think about merging this patch set?

Justus
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: Last minute fixes to the go bindings

2012-05-10 Thread David Bremner
Justus Winter 4win...@informatik.uni-hamburg.de writes:
 @David: what do you think about merging this patch set?

Yeah, unless I am convinced otherwise, I will merge for the next release
candidate.

d

___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[PATCH] ruby: extern linkage portability improvement

2012-05-10 Thread Tomi Ollila
Some C compilers are stricter when it comes to (tentative) definition
of a variable -- in those compilers introducing variable without 'extern'
keyword always allocates new 'storage' to the variable and linking all
these modules fails due to duplicate symbols.

This change uses some macro trickery to avoid writing every variable twice.

This is reimplementation of Charlie Allom's patch:
id:1336481467-66356-1-git-send-email-char...@mediasp.com

combining information from other change made by Ali Polatel.
---

Charlie: could you test whether this patch actually work ? :)

Everyone: what do you think of the hiding extern macro trick ?

 bindings/ruby/defs.h |   56 +++--
 bindings/ruby/init.c |2 +
 2 files changed, 33 insertions(+), 25 deletions(-)

diff --git a/bindings/ruby/defs.h b/bindings/ruby/defs.h
index 85d8205..2531760 100644
--- a/bindings/ruby/defs.h
+++ b/bindings/ruby/defs.h
@@ -24,31 +24,37 @@
 #include ruby.h
 #include notmuch.h
 
-VALUE notmuch_rb_cDatabase;
-VALUE notmuch_rb_cDirectory;
-VALUE notmuch_rb_cFileNames;
-VALUE notmuch_rb_cQuery;
-VALUE notmuch_rb_cThreads;
-VALUE notmuch_rb_cThread;
-VALUE notmuch_rb_cMessages;
-VALUE notmuch_rb_cMessage;
-VALUE notmuch_rb_cTags;
-
-VALUE notmuch_rb_eBaseError;
-VALUE notmuch_rb_eDatabaseError;
-VALUE notmuch_rb_eMemoryError;
-VALUE notmuch_rb_eReadOnlyError;
-VALUE notmuch_rb_eXapianError;
-VALUE notmuch_rb_eFileError;
-VALUE notmuch_rb_eFileNotEmailError;
-VALUE notmuch_rb_eNullPointerError;
-VALUE notmuch_rb_eTagTooLongError;
-VALUE notmuch_rb_eUnbalancedFreezeThawError;
-VALUE notmuch_rb_eUnbalancedAtomicError;
-
-ID ID_call;
-ID ID_db_create;
-ID ID_db_mode;
+#ifdef RUBY_INIT_C
+#define extern
+#endif
+
+extern VALUE notmuch_rb_cDatabase;
+extern VALUE notmuch_rb_cDirectory;
+extern VALUE notmuch_rb_cFileNames;
+extern VALUE notmuch_rb_cQuery;
+extern VALUE notmuch_rb_cThreads;
+extern VALUE notmuch_rb_cThread;
+extern VALUE notmuch_rb_cMessages;
+extern VALUE notmuch_rb_cMessage;
+extern VALUE notmuch_rb_cTags;
+
+extern VALUE notmuch_rb_eBaseError;
+extern VALUE notmuch_rb_eDatabaseError;
+extern VALUE notmuch_rb_eMemoryError;
+extern VALUE notmuch_rb_eReadOnlyError;
+extern VALUE notmuch_rb_eXapianError;
+extern VALUE notmuch_rb_eFileError;
+extern VALUE notmuch_rb_eFileNotEmailError;
+extern VALUE notmuch_rb_eNullPointerError;
+extern VALUE notmuch_rb_eTagTooLongError;
+extern VALUE notmuch_rb_eUnbalancedFreezeThawError;
+extern VALUE notmuch_rb_eUnbalancedAtomicError;
+
+extern ID ID_call;
+extern ID ID_db_create;
+extern ID ID_db_mode;
+
+#undef extern
 
 /* RSTRING_PTR() is new in ruby-1.9 */
 #if !defined(RSTRING_PTR)
diff --git a/bindings/ruby/init.c b/bindings/ruby/init.c
index 3fe60fb..b2dc7f6 100644
--- a/bindings/ruby/init.c
+++ b/bindings/ruby/init.c
@@ -18,7 +18,9 @@
  * Author: Ali Polatel a...@exherbo.org
  */
 
+#define RUBY_INIT_C
 #include defs.h
+#undef RUBY_INIT_C
 
 /*
  * Document-module: Notmuch
-- 
1.7.8.2

___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Last minute fixes to the go bindings

2012-05-10 Thread Justus Winter
Quoting Austin Clements (2012-05-09 20:07:00)
> LGTM.
> 
> Quoth Justus Winter on May 09 at 12:23 pm:
> > Hi everyone :)
> > 
> > this is a small patch series that I'd like to see included in 0.13.
> > 
> > The first patch updates notmuch-addrlookup with respect to Austins
> > recent change of the notmuch_database_open function. This fixes the
> > compilation of the utility.
> > 
> > The second patch fixes the values of all the STATUS_* constants. Turns
> > out all of them were set to zero by accident. This isn't a c style
> > enum, golang has the iota operator to do this kind of stuff. This
> > fixes the error handling for all the users of the go bindings.
> 
> 'Doh!  Is it possible to get the status values out of cgo, rather than
> depending on the list in libnotmuch and the list in Go being in the
> same order?

Yes, it is and I've prepared a patch. But since I'm living in go 1
land here I prepared it on top of my go 1 patchset and I'm thinking of
sending it once that one got merged.

@David: what do you think about merging this patch set?

Justus


Last minute fixes to the go bindings

2012-05-10 Thread David Bremner
Justus Winter <4winter at informatik.uni-hamburg.de> writes:
> @David: what do you think about merging this patch set?

Yeah, unless I am convinced otherwise, I will merge for the next release
candidate.

d



[PATCH] ruby: extern linkage portability improvement

2012-05-10 Thread Tomi Ollila
Some C compilers are stricter when it comes to (tentative) definition
of a variable -- in those compilers introducing variable without 'extern'
keyword always allocates new 'storage' to the variable and linking all
these modules fails due to duplicate symbols.

This change uses some macro trickery to avoid writing every variable twice.

This is reimplementation of Charlie Allom's patch:
id:"1336481467-66356-1-git-send-email-charlie at mediasp.com"

combining information from other change made by Ali Polatel.
---

Charlie: could you test whether this patch actually work ? :)

Everyone: what do you think of the "hiding extern" macro trick ?

 bindings/ruby/defs.h |   56 +++--
 bindings/ruby/init.c |2 +
 2 files changed, 33 insertions(+), 25 deletions(-)

diff --git a/bindings/ruby/defs.h b/bindings/ruby/defs.h
index 85d8205..2531760 100644
--- a/bindings/ruby/defs.h
+++ b/bindings/ruby/defs.h
@@ -24,31 +24,37 @@
 #include 
 #include "notmuch.h"

-VALUE notmuch_rb_cDatabase;
-VALUE notmuch_rb_cDirectory;
-VALUE notmuch_rb_cFileNames;
-VALUE notmuch_rb_cQuery;
-VALUE notmuch_rb_cThreads;
-VALUE notmuch_rb_cThread;
-VALUE notmuch_rb_cMessages;
-VALUE notmuch_rb_cMessage;
-VALUE notmuch_rb_cTags;
-
-VALUE notmuch_rb_eBaseError;
-VALUE notmuch_rb_eDatabaseError;
-VALUE notmuch_rb_eMemoryError;
-VALUE notmuch_rb_eReadOnlyError;
-VALUE notmuch_rb_eXapianError;
-VALUE notmuch_rb_eFileError;
-VALUE notmuch_rb_eFileNotEmailError;
-VALUE notmuch_rb_eNullPointerError;
-VALUE notmuch_rb_eTagTooLongError;
-VALUE notmuch_rb_eUnbalancedFreezeThawError;
-VALUE notmuch_rb_eUnbalancedAtomicError;
-
-ID ID_call;
-ID ID_db_create;
-ID ID_db_mode;
+#ifdef RUBY_INIT_C
+#define extern
+#endif
+
+extern VALUE notmuch_rb_cDatabase;
+extern VALUE notmuch_rb_cDirectory;
+extern VALUE notmuch_rb_cFileNames;
+extern VALUE notmuch_rb_cQuery;
+extern VALUE notmuch_rb_cThreads;
+extern VALUE notmuch_rb_cThread;
+extern VALUE notmuch_rb_cMessages;
+extern VALUE notmuch_rb_cMessage;
+extern VALUE notmuch_rb_cTags;
+
+extern VALUE notmuch_rb_eBaseError;
+extern VALUE notmuch_rb_eDatabaseError;
+extern VALUE notmuch_rb_eMemoryError;
+extern VALUE notmuch_rb_eReadOnlyError;
+extern VALUE notmuch_rb_eXapianError;
+extern VALUE notmuch_rb_eFileError;
+extern VALUE notmuch_rb_eFileNotEmailError;
+extern VALUE notmuch_rb_eNullPointerError;
+extern VALUE notmuch_rb_eTagTooLongError;
+extern VALUE notmuch_rb_eUnbalancedFreezeThawError;
+extern VALUE notmuch_rb_eUnbalancedAtomicError;
+
+extern ID ID_call;
+extern ID ID_db_create;
+extern ID ID_db_mode;
+
+#undef extern

 /* RSTRING_PTR() is new in ruby-1.9 */
 #if !defined(RSTRING_PTR)
diff --git a/bindings/ruby/init.c b/bindings/ruby/init.c
index 3fe60fb..b2dc7f6 100644
--- a/bindings/ruby/init.c
+++ b/bindings/ruby/init.c
@@ -18,7 +18,9 @@
  * Author: Ali Polatel 
  */

+#define RUBY_INIT_C
 #include "defs.h"
+#undef RUBY_INIT_C

 /*
  * Document-module: Notmuch
-- 
1.7.8.2