[libvirt] [libvirt-glib][PATCH 2/2] python: Introduce support for python3

Michal Privoznik mprivozn at redhat.com
Mon Aug 1 09:47:43 UTC 2016


Just like libvirt itself is able to work with both major version
of python, libvirt-glib should do the same. Even the code I'm
introducing here is copied from there (and changed slightly to
reflect project name).

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
---
 python/libvirt-glib.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/python/libvirt-glib.c b/python/libvirt-glib.c
index 1daca36..8b3920d 100644
--- a/python/libvirt-glib.c
+++ b/python/libvirt-glib.c
@@ -17,11 +17,19 @@
 #include <glib.h>
 #include "libvirt-glib/libvirt-glib.h"
 
+#if PY_MAJOR_VERSION > 2
+# ifndef __CYGWIN__
+extern PyObject *PyInit_libvirtglibmod(void);
+# else
+extern PyObject *PyInit_cygvirtglibmod(void);
+# endif
+#else
 #ifndef __CYGWIN__
 extern void initlibvirtglibmod(void);
 #else
 extern void initcygvirtglibmod(void);
 #endif
+#endif
 
 #define VIR_PY_NONE (Py_INCREF (Py_None), Py_None)
 
@@ -38,6 +46,41 @@ static PyMethodDef libvirtGLibMethods[] = {
     {NULL, NULL, 0, NULL}
 };
 
+#if PY_MAJOR_VERSION > 2
+static struct PyModuleDef moduledef = {
+    PyModuleDef_HEAD_INIT,
+# ifndef __CYGWIN__
+    "libvirtglibmod",
+# else
+    "cygvirtglibmod",
+# endif
+    NULL,
+    -1,
+    libvirtGLibMethods,
+    NULL,
+    NULL,
+    NULL,
+    NULL
+};
+
+PyObject *
+# ifndef __CYGWIN__
+PyInit_libvirtglibmod
+# else
+PyInit_cygvirtglibmod
+# endif
+(void)
+{
+    PyObject *module;
+
+    if (gvir_init_check(NULL, NULL, NULL) < 0)
+        return NULL;
+
+    module = PyModule_Create(&moduledef);
+
+    return module;
+}
+#else /* ! PY_MAJOR_VERSION > 2 */
 void
 #ifndef __CYGWIN__
 initlibvirtglibmod
@@ -57,3 +100,4 @@ initcygvirtglibmod
                   , libvirtGLibMethods);
 
 }
+#endif /* ! PY_MAJOR_VERSION > 2 */
-- 
2.8.4




More information about the libvir-list mailing list