python: Make all GnuPG errors available.
authorJustus Winter <justus@gnupg.org>
Tue, 24 May 2016 15:22:08 +0000 (17:22 +0200)
committerJustus Winter <justus@gnupg.org>
Tue, 24 May 2016 16:00:16 +0000 (18:00 +0200)
* lang/python/Makefile.am (errors.i): Generate file.
* lang/python/gpgme.i: Include generated file.
* lang/python/pyme/errors.py: Pull in all errors and error sources.

Signed-off-by: Justus Winter <justus@gnupg.org>
lang/python/Makefile.am
lang/python/gpgme.i
lang/python/pyme/errors.py

index 86c1965..f58f079 100644 (file)
@@ -29,7 +29,12 @@ copystamp: $(srcdir)/pyme $(srcdir)/helpers.c $(srcdir)/helpers.h
        if test "$(srcdir)" != "$(builddir)" ; then cp -r $^ . ; fi
        touch $@
 
-gpgme_wrap.c pyme/pygpgme.py: gpgme.i gpgme.h copystamp
+errors.i:
+       sed -n -e \
+         '/GPG_ERR_[^ ]* =/s/ *\(.*\) = .*/%constant long \1 = \1;/p' \
+         `gpg-error-config --prefix`/include/gpg-error.h >$@
+
+gpgme_wrap.c pyme/pygpgme.py: gpgme.i errors.i gpgme.h copystamp
        $(SWIG) -python -py3 $(SWIGOPT) \
          -o $(builddir)/gpgme_wrap.c -outdir $(builddir)/pyme \
          $<
@@ -38,7 +43,8 @@ all-local: gpgme_wrap.c pyme/pygpgme.py copystamp
        $(PYTHON) $(srcdir)/setup.py build --verbose
 
 clean-local:
-       rm -rf -- build gpgme.h gpgme_wrap.c pyme/pygpgme.py copystamp
+       rm -rf -- build gpgme.h errors.i gpgme_wrap.c pyme/pygpgme.py \
+         copystamp
        if test "$(srcdir)" != "$(builddir)" ; then \
          rm -rf pyme helpers.c helpers.h ; \
        fi
index a82efb5..84bc6e9 100644 (file)
@@ -259,7 +259,7 @@ PyObject* object_to_gpgme_t(PyObject* input, const char* objtype, int argnum) {
 %}
 %include "gpgme.h"
 
-%constant long EOF = GPG_ERR_EOF;
+%include "errors.i"
 
 // Generating and handling pointers-to-pointers.
 
index 5c8f922..f716421 100644 (file)
@@ -17,6 +17,9 @@
 #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
 
 from . import pygpgme
+from . import util
+
+util.process_constants('GPG_ERR_', globals())
 
 class GPGMEError(Exception):
     def __init__(self, error = None, message = None):
@@ -43,8 +46,6 @@ class GPGMEError(Exception):
     def __str__(self):
         return "%s (%d,%d)"%(self.getstring(), self.getsource(), self.getcode())
 
-EOF = getattr(pygpgme, "EOF")
-
 def errorcheck(retval, extradata = None):
     if retval:
         raise GPGMEError(retval, extradata)