summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Ehresman <jpe@wingware.com>2010-04-14 16:12:22 -0400
committerJohn Ehresman <jpe@wingware.com>2010-04-15 12:18:00 -0400
commit4572baf15f87cc0ef21d731fc7ba0ecf0de2f463 (patch)
tree7d345fac8090155fafb1ddc1fb0d99876665b3ce
parentb28ac0322bf7b1316b5ed8b19492a3848b090ab0 (diff)
downloadpygobject-4572baf15f87cc0ef21d731fc7ba0ecf0de2f463.tar.gz
pygobject-4572baf15f87cc0ef21d731fc7ba0ecf0de2f463.tar.xz
pygobject-4572baf15f87cc0ef21d731fc7ba0ecf0de2f463.zip
Changes to module init, and to compile under python3. Doesn't work though
-rw-r--r--gio/Makefile.am4
-rw-r--r--gio/giomodule.c151
-rw-r--r--gio/unixmodule.c16
-rw-r--r--glib/glibmodule.c6
-rw-r--r--glib/pyglib-python-compat.h81
-rw-r--r--glib/pyglib.h23
-rw-r--r--gobject/gobjectmodule.c6
-rw-r--r--gobject/pygflags.c23
-rw-r--r--gobject/pygobject.h2
-rw-r--r--gobject/pygtype.c3
-rw-r--r--tests/common.py4
-rw-r--r--tests/testhelpermodule.c26
12 files changed, 187 insertions, 158 deletions
diff --git a/gio/Makefile.am b/gio/Makefile.am
index a34fd19..455fe74 100644
--- a/gio/Makefile.am
+++ b/gio/Makefile.am
@@ -66,7 +66,7 @@ CLEANFILES += gio.c
EXTRA_DIST += $(GIO_DEFS) $(GIO_OVERRIDES)
gio.c: $(GIO_DEFS) $(GIO_OVERRIDES)
_gio_la_CFLAGS = $(GIO_CFLAGS)
-_gio_la_LDFLAGS = $(common_ldflags) -export-symbols-regex init_gio
+_gio_la_LDFLAGS = $(common_ldflags) -export-symbols-regex "init_gio|PyInit__gio"
_gio_la_LIBADD = $(GIO_LIBS) $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la
_gio_la_SOURCES = \
giomodule.c \
@@ -84,7 +84,7 @@ CLEANFILES += unix.c
EXTRA_DIST += $(GIOUNIX_DEFS) unix.override
unix.c: $(GIOUNIX_DEFS) unix.override
unix_la_CFLAGS = $(GIOUNIX_CFLAGS)
-unix_la_LDFLAGS = $(common_ldflags) -export-symbols-regex initunix
+unix_la_LDFLAGS = $(common_ldflags) -export-symbols-regex "initunix|PyInit_unix"
unix_la_LIBADD = $(GIOUNIX_LIBS)
unix_la_SOURCES = unixmodule.c
nodist_unix_la_SOURCES = unix.c
diff --git a/gio/giomodule.c b/gio/giomodule.c
index 171a06f..292a0d9 100644
--- a/gio/giomodule.c
+++ b/gio/giomodule.c
@@ -39,157 +39,158 @@ void pygio_add_constants(PyObject *module, const gchar *strip_prefix);
extern PyMethodDef pygio_functions[];
-DL_EXPORT(void)
-init_gio(void)
+PYGLIB_INIT_FUNCTION(_gio, "gio._gio", pygio_functions)
{
- PyObject *m, *d;
+ PyObject *d;
PyObject *tuple;
PyObject *e;
+ PyObject *pygobject_mod;
/* perform any initialisation required by the library here */
- m = Py_InitModule("gio._gio", pygio_functions);
- d = PyModule_GetDict(m);
-
- init_pygobject_check(2, 15, 2);
+ d = PyModule_GetDict(module);
+ pygobject_mod = pygobject_init(2, 15, 2);
+ if (pygobject_mod == NULL)
+ return -1;
+
pygio_register_classes(d);
- pygio_add_constants(m, "G_IO_");
+ pygio_add_constants(module, "G_IO_");
- PyModule_AddStringConstant(m, "ERROR", g_quark_to_string(G_IO_ERROR));
+ PyModule_AddStringConstant(module, "ERROR", g_quark_to_string(G_IO_ERROR));
e = pyglib_register_exception_for_domain("gio.Error", G_IO_ERROR);
PyDict_SetItemString(d, "Error", e);
Py_DECREF(e);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_TYPE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_TYPE",
G_FILE_ATTRIBUTE_STANDARD_TYPE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_IS_HIDDEN",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_IS_HIDDEN",
G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_IS_BACKUP",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_IS_BACKUP",
G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_IS_SYMLINK",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_IS_SYMLINK",
G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL",
G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_NAME",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_NAME",
G_FILE_ATTRIBUTE_STANDARD_NAME);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME",
G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_EDIT_NAME",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_EDIT_NAME",
G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_COPY_NAME",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_COPY_NAME",
G_FILE_ATTRIBUTE_STANDARD_COPY_NAME);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_DESCRIPTION",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_DESCRIPTION",
G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_ICON",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_ICON",
G_FILE_ATTRIBUTE_STANDARD_ICON);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE",
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE",
G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_SIZE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_SIZE",
G_FILE_ATTRIBUTE_STANDARD_SIZE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET",
G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_TARGET_URI",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_TARGET_URI",
G_FILE_ATTRIBUTE_STANDARD_TARGET_URI);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_STANDARD_SORT_ORDER",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_SORT_ORDER",
G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_ETAG_VALUE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ETAG_VALUE",
G_FILE_ATTRIBUTE_ETAG_VALUE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_ID_FILE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ID_FILE",
G_FILE_ATTRIBUTE_ID_FILE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_ID_FILESYSTEM",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ID_FILESYSTEM",
G_FILE_ATTRIBUTE_ID_FILESYSTEM);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_ACCESS_CAN_READ",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ACCESS_CAN_READ",
G_FILE_ATTRIBUTE_ACCESS_CAN_READ);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_ACCESS_CAN_WRITE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ACCESS_CAN_WRITE",
G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE",
G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_ACCESS_CAN_DELETE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ACCESS_CAN_DELETE",
G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_ACCESS_CAN_TRASH",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ACCESS_CAN_TRASH",
G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_ACCESS_CAN_RENAME",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ACCESS_CAN_RENAME",
G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT",
G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT",
G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT",
G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE",
G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI",
G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_TIME_MODIFIED",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TIME_MODIFIED",
G_FILE_ATTRIBUTE_TIME_MODIFIED);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_TIME_MODIFIED_USEC",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TIME_MODIFIED_USEC",
G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_TIME_ACCESS",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TIME_ACCESS",
G_FILE_ATTRIBUTE_TIME_ACCESS);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_TIME_ACCESS_USEC",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TIME_ACCESS_USEC",
G_FILE_ATTRIBUTE_TIME_ACCESS_USEC);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_TIME_CHANGED",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TIME_CHANGED",
G_FILE_ATTRIBUTE_TIME_CHANGED);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_TIME_CHANGED_USEC",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TIME_CHANGED_USEC",
G_FILE_ATTRIBUTE_TIME_CHANGED_USEC);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_TIME_CREATED",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TIME_CREATED",
G_FILE_ATTRIBUTE_TIME_CREATED);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_TIME_CREATED_USEC",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TIME_CREATED_USEC",
G_FILE_ATTRIBUTE_TIME_CREATED_USEC);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_UNIX_DEVICE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_DEVICE",
G_FILE_ATTRIBUTE_UNIX_DEVICE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_UNIX_INODE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_INODE",
G_FILE_ATTRIBUTE_UNIX_INODE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_UNIX_MODE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_MODE",
G_FILE_ATTRIBUTE_UNIX_MODE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_UNIX_NLINK",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_NLINK",
G_FILE_ATTRIBUTE_UNIX_NLINK);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_UNIX_UID",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_UID",
G_FILE_ATTRIBUTE_UNIX_UID);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_UNIX_GID",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_GID",
G_FILE_ATTRIBUTE_UNIX_GID);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_UNIX_RDEV",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_RDEV",
G_FILE_ATTRIBUTE_UNIX_RDEV);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_UNIX_BLOCK_SIZE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_BLOCK_SIZE",
G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_UNIX_BLOCKS",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_BLOCKS",
G_FILE_ATTRIBUTE_UNIX_BLOCKS);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT",
G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_DOS_IS_ARCHIVE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_DOS_IS_ARCHIVE",
G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_DOS_IS_SYSTEM",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_DOS_IS_SYSTEM",
G_FILE_ATTRIBUTE_DOS_IS_SYSTEM);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_OWNER_USER",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_OWNER_USER",
G_FILE_ATTRIBUTE_OWNER_USER);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_OWNER_USER_REAL",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_OWNER_USER_REAL",
G_FILE_ATTRIBUTE_OWNER_USER_REAL);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_OWNER_GROUP",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_OWNER_GROUP",
G_FILE_ATTRIBUTE_OWNER_GROUP);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_THUMBNAIL_PATH",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_THUMBNAIL_PATH",
G_FILE_ATTRIBUTE_THUMBNAIL_PATH);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_THUMBNAILING_FAILED",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_THUMBNAILING_FAILED",
G_FILE_ATTRIBUTE_THUMBNAILING_FAILED);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_FILESYSTEM_SIZE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_FILESYSTEM_SIZE",
G_FILE_ATTRIBUTE_FILESYSTEM_SIZE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_FILESYSTEM_FREE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_FILESYSTEM_FREE",
G_FILE_ATTRIBUTE_FILESYSTEM_FREE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_FILESYSTEM_TYPE",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_FILESYSTEM_TYPE",
G_FILE_ATTRIBUTE_FILESYSTEM_TYPE);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_FILESYSTEM_READONLY",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_FILESYSTEM_READONLY",
G_FILE_ATTRIBUTE_FILESYSTEM_READONLY);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW",
G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_GVFS_BACKEND",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_GVFS_BACKEND",
G_FILE_ATTRIBUTE_GVFS_BACKEND);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_SELINUX_CONTEXT",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_SELINUX_CONTEXT",
G_FILE_ATTRIBUTE_SELINUX_CONTEXT);
- PyModule_AddStringConstant(m, "FILE_ATTRIBUTE_TRASH_ITEM_COUNT",
+ PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TRASH_ITEM_COUNT",
G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT);
- PyModule_AddStringConstant(m, "ERROR", g_quark_to_string(G_IO_ERROR));
+ PyModule_AddStringConstant(module, "ERROR", g_quark_to_string(G_IO_ERROR));
/* pygio version */
tuple = Py_BuildValue ("(iii)",
@@ -198,5 +199,7 @@ init_gio(void)
PYGIO_MICRO_VERSION);
PyDict_SetItemString(d, "pygio_version", tuple);
Py_DECREF(tuple);
+
+ return 0;
}
diff --git a/gio/unixmodule.c b/gio/unixmodule.c
index 7a49856..0bd3c7e 100644
--- a/gio/unixmodule.c
+++ b/gio/unixmodule.c
@@ -34,19 +34,19 @@ void pyunix_add_constants(PyObject *module, const gchar *strip_prefix);
extern PyMethodDef pyunix_functions[];
-DL_EXPORT(void)
-initunix(void)
+PYGLIB_INIT_FUNCTION(unix, "gio.unix", pyunix_functions)
{
- PyObject *m, *d;
+ PyObject *d, *pyobj_mod;
/* perform any initialisation required by the library here */
- m = Py_InitModule("gio.unix", pyunix_functions);
- d = PyModule_GetDict(m);
-
- init_pygobject();
+ d = PyModule_GetDict(module);
+ pyobj_mod = pygobject_init(-1, -1, -1);
+ if (pyobj_mod == NULL)
+ return -1;
+
pyunix_register_classes(d);
-
+ return 0;
}
diff --git a/glib/glibmodule.c b/glib/glibmodule.c
index 7b96180..af2d05c 100644
--- a/glib/glibmodule.c
+++ b/glib/glibmodule.c
@@ -883,7 +883,8 @@ pyglib_register_constants(PyObject *m)
(char*) g_quark_to_string(G_OPTION_ERROR));
}
-PYGLIB_MODULE_START(_glib, "glib._glib")
+
+PYGLIB_INIT_FUNCTION(_glib, "glib._glib", _glib_functions)
{
PyObject *d = PyModule_GetDict(module);
@@ -898,5 +899,6 @@ PYGLIB_MODULE_START(_glib, "glib._glib")
pyglib_spawn_register_types(d);
pyglib_option_context_register_types(d);
pyglib_option_group_register_types(d);
+
+ return 0;
}
-PYGLIB_MODULE_END
diff --git a/glib/pyglib-python-compat.h b/glib/pyglib-python-compat.h
index 6ba08a4..a422893 100644
--- a/glib/pyglib-python-compat.h
+++ b/glib/pyglib-python-compat.h
@@ -41,6 +41,47 @@ typedef int Py_ssize_t;
typedef inquiry lenfunc;
#endif
+#if PY_VERSION_HEX < 0x03000000
+
+#define PYGLIB_INIT_FUNCTION(modname, fullpkgname, functions) \
+static int _pyglib_init_##modname(PyObject *module); \
+void init##modname(void) \
+{ \
+ PyObject *module = Py_InitModule(fullpkgname, functions); \
+ _pyglib_init_##modname(module); \
+} \
+static int _pyglib_init_##modname(PyObject *module)
+
+#else
+
+#define PYGLIB_INIT_FUNCTION(modname, fullpkgname, functions) \
+static struct PyModuleDef _##modname##module = { \
+ PyModuleDef_HEAD_INIT, \
+ fullpkgname, \
+ NULL, \
+ -1, \
+ functions, \
+ NULL, \
+ NULL, \
+ NULL, \
+ NULL \
+}; \
+static int _pyglib_init_##modname(PyObject *module); \
+PyObject *PyInit_##modname(void) \
+{ \
+ PyObject *module = PyModule_Create(&_##modname##module); \
+ if (module == NULL) \
+ return NULL; \
+ if (_pyglib_init_##modname(module) != 0 ) {\
+ Py_DECREF(module); \
+ return NULL; \
+ } \
+ return module; \
+} \
+static int _pyglib_init_##modname(PyObject *module)
+
+#endif
+
/* Compilation on Python 2.x */
#if PY_VERSION_HEX < 0x03000000
#define RO READONLY
@@ -74,12 +115,31 @@ typedef inquiry lenfunc;
size,
#endif
+#define PYGLIB_MODULE_START(symbol, modname) \
+DL_EXPORT(void) init##symbol(void) \
+{ \
+ PyObject *module; \
+ module = Py_InitModule(modname, symbol##_functions);
+#define PYGLIB_MODULE_END }
+#define PYGLIB_DEFINE_TYPE(typename, symbol, csymbol) \
+PyTypeObject symbol = { \
+ PyObject_HEAD_INIT(NULL) \
+ 0, \
+ typename, \
+ sizeof(csymbol), \
+ 0, \
+};
+#define PYGLIB_REGISTER_TYPE(d, type, name) \
+ if (!type.tp_alloc) \
+ type.tp_alloc = PyType_GenericAlloc; \
+ if (!type.tp_new) \
+ type.tp_new = PyType_GenericNew; \
+ if (PyType_Ready(&type)) \
+ return; \
+ PyDict_SetItemString(d, name, (PyObject *)&type);
+
#else
-#undef PYGLIB_MODULE_START
-#undef PYGLIB_MODULE_END
-#undef PYGLIB_DEFINE_TYPE
-#undef PYGLIB_REGISTER_TYPE
#define PYGLIB_MODULE_START(symbol, modname) \
static struct PyModuleDef _##symbol##module = { \
@@ -114,8 +174,8 @@ PyTypeObject symbol = { \
PyDict_SetItemString(d, name, (PyObject *)&type);
#define _PyUnicode_Check PyUnicode_Check
-#define _PyUnicode_AsString PyUnicode_AsString
-#define _PyUnicode_AsStringAndSize(obj, buf, size) PyUnicode_AsStringAndSize(obj, size)
+#define _PyUnicode_AsString _PyUnicode_AsString
+#define _PyUnicode_AsStringAndSize(obj, buf, size) _PyUnicode_AsStringAndSize(obj, size)
#define _PyUnicode_FromString PyUnicode_FromString
#define _PyUnicode_FromStringAndSize PyUnicode_FromStringAndSize
#define _PyUnicode_FromFormat PyUnicode_FromFormat
@@ -126,9 +186,16 @@ PyTypeObject symbol = { \
#define _PyLong_Check PyLong_Check
#define _PyLong_FromLong PyLong_FromLong
#define _PyLong_AsLong PyLong_AsLong
-#define _PyLong_AS_LONG PyLong_AS_LONG
+#define _PyLong_AS_LONG(o) PyLong_AS_LONG((PyObject*)(o))
#define _PyLongObject PyLongObject
#define _PyLong_Type PyLong_Type
+
+#define _PyByteArray_FromStringAndSize PyByteArray_FromStringAndSize
+#define _PyByteArray_Resize(o, len) PyByteArray_Resize(*o, len)
+#define _PyByteArray_AsString PyByteArray_AsString
+#define _PyByteArray_Size PyByteArray_Size
+#define _PyByteArray_Check PyByteArray_Check
+
#endif
#endif /* __PYGLIB_PYTHON_COMPAT_H__ */
diff --git a/glib/pyglib.h b/glib/pyglib.h
index 62561e9..0a47fce 100644
--- a/glib/pyglib.h
+++ b/glib/pyglib.h
@@ -69,29 +69,6 @@ PyObject* _pyglib_generic_long_richcompare(long a, long b, int op);
PyEval_RestoreThread(_save); \
} G_STMT_END
-#define PYGLIB_MODULE_START(symbol, modname) \
-DL_EXPORT(void) init##symbol(void) \
-{ \
- PyObject *module; \
- module = Py_InitModule(modname, symbol##_functions);
-#define PYGLIB_MODULE_END }
-#define PYGLIB_DEFINE_TYPE(typename, symbol, csymbol) \
-PyTypeObject symbol = { \
- PyObject_HEAD_INIT(NULL) \
- 0, \
- typename, \
- sizeof(csymbol), \
- 0, \
-};
-#define PYGLIB_REGISTER_TYPE(d, type, name) \
- if (!type.tp_alloc) \
- type.tp_alloc = PyType_GenericAlloc; \
- if (!type.tp_new) \
- type.tp_new = PyType_GenericNew; \
- if (PyType_Ready(&type)) \
- return; \
- PyDict_SetItemString(d, name, (PyObject *)&type);
-
G_END_DECLS
#endif /* __PYGLIB_H__ */
diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c
index 267546f..90b4d1e 100644
--- a/gobject/gobjectmodule.c
+++ b/gobject/gobjectmodule.c
@@ -2610,7 +2610,8 @@ pygobject_register_warnings(PyObject *d)
}
-PYGLIB_MODULE_START(_gobject, "gobject._gobject")
+//PYGLIB_MODULE_START(_gobject, "gobject._gobject")
+PYGLIB_INIT_FUNCTION(_gobject, "gobject._gobject", _gobject_functions)
{
PyObject *d;
@@ -2638,5 +2639,6 @@ PYGLIB_MODULE_START(_gobject, "gobject._gobject")
pygobject_api_functions.threads_enabled = pyglib_threads_enabled();
_pyglib_notify_on_enabling_threads(pyg_note_threads_enabled);
+
+ return 0;
}
-PYGLIB_MODULE_END
diff --git a/gobject/pygflags.c b/gobject/pygflags.c
index 1865abb..abac423 100644
--- a/gobject/pygflags.c
+++ b/gobject/pygflags.c
@@ -439,7 +439,7 @@ static PyNumberMethods pyg_flags_as_number = {
(binaryfunc)pyg_flags_warn, /* nb_multiply */
(binaryfunc)pyg_flags_warn, /* nb_divide */
(binaryfunc)pyg_flags_warn, /* nb_remainder */
- (binaryfunc)pyg_flags_warn, /* nb_divmod */
+// (binaryfunc)pyg_flags_warn, /* nb_divmod */
(ternaryfunc)pyg_flags_warn, /* nb_power */
0, /* nb_negative */
0, /* nb_positive */
@@ -451,27 +451,6 @@ static PyNumberMethods pyg_flags_as_number = {
(binaryfunc)pyg_flags_and, /* nb_and */
(binaryfunc)pyg_flags_xor, /* nb_xor */
(binaryfunc)pyg_flags_or, /* nb_or */
- 0, /* nb_coerce */
- 0, /* nb_int */
- 0, /* nb_long */
- 0, /* nb_float */
- 0, /* nb_oct */
- 0, /* nb_hex */
- 0, /* nb_inplace_add */
- 0, /* nb_inplace_subtract */
- 0, /* nb_inplace_multiply */
- 0, /* nb_inplace_divide */
- 0, /* nb_inplace_remainder */
- 0, /* nb_inplace_power */
- 0, /* nb_inplace_lshift */
- 0, /* nb_inplace_rshift */
- 0, /* nb_inplace_and */
- 0, /* nb_inplace_xor */
- 0, /* nb_inplace_or */
- 0, /* nb_floor_divide */
- 0, /* nb_true_divide */
- 0, /* nb_inplace_floor_divide */
- 0, /* nb_inplace_true_divide */
};
void
diff --git a/gobject/pygobject.h b/gobject/pygobject.h
index aaab860..e3c3df1 100644
--- a/gobject/pygobject.h
+++ b/gobject/pygobject.h
@@ -320,7 +320,7 @@ pygobject_init(int req_major, int req_minor, int req_micro)
Py_XDECREF(traceback);
PyErr_Format(PyExc_ImportError,
"could not import gobject (error was: %s)",
- PyString_AsString(py_orig_exc));
+ _PyUnicode_AsString(py_orig_exc));
Py_DECREF(py_orig_exc);
} else {
PyErr_SetString(PyExc_ImportError,
diff --git a/gobject/pygtype.c b/gobject/pygtype.c
index aff6287..3915f8f 100644
--- a/gobject/pygtype.c
+++ b/gobject/pygtype.c
@@ -907,7 +907,8 @@ pyg_value_from_pyobject(GValue *value, PyObject *obj)
GString *string;
char *buffer;
Py_ssize_t len;
- if (_PyUnicode_AsStringAndSize(obj, &buffer, &len))
+ buffer = _PyUnicode_AsStringAndSize(obj, &buffer, &len);
+ if (buffer == NULL)
return -1;
string = g_string_new_len(buffer, len);
g_value_set_boxed(value, string);
diff --git a/tests/common.py b/tests/common.py
index a6fa73d..ff30ec1 100644
--- a/tests/common.py
+++ b/tests/common.py
@@ -34,7 +34,9 @@ def importModule(module, directory, name=None):
try:
obj = __import__(module, {}, {}, '')
- except ImportError, e:
+ except ImportError:
+ raise
+ e = sys.exc_info()[1]
raise SystemExit('%s could not be imported: %s' % (origName, e))
location = obj.__file__
diff --git a/tests/testhelpermodule.c b/tests/testhelpermodule.c
index dc8c609..c6fd9f5 100644
--- a/tests/testhelpermodule.c
+++ b/tests/testhelpermodule.c
@@ -112,8 +112,7 @@ static const PyMethodDef _PyTestInterface_methods[] = {
/* TestInterface */
PyTypeObject PyTestInterface_Type = {
- PyObject_HEAD_INIT(NULL)
- 0, /* ob_size */
+ PyVarObject_HEAD_INIT(NULL, 0)
"test.Interface", /* tp_name */
sizeof(PyObject), /* tp_basicsize */
0, /* tp_itemsize */
@@ -122,7 +121,7 @@ PyTypeObject PyTestInterface_Type = {
(printfunc)0, /* tp_print */
(getattrfunc)0, /* tp_getattr */
(setattrfunc)0, /* tp_setattr */
- (cmpfunc)0, /* tp_compare */
+ NULL, /* tp_compare */
(reprfunc)0, /* tp_repr */
(PyNumberMethods*)0, /* tp_as_number */
(PySequenceMethods*)0, /* tp_as_sequence */
@@ -183,8 +182,7 @@ _wrap_TestInterface__do_iface_method(PyObject *cls, PyObject *args, PyObject *kw
}
PyTypeObject PyTestUnknown_Type = {
- PyObject_HEAD_INIT(NULL)
- 0, /* ob_size */
+ PyVarObject_HEAD_INIT(NULL, 0)
"testhelper.Unknown", /* tp_name */
sizeof(PyGObject), /* tp_basicsize */
0, /* tp_itemsize */
@@ -193,7 +191,7 @@ PyTypeObject PyTestUnknown_Type = {
(printfunc)0, /* tp_print */
(getattrfunc)0, /* tp_getattr */
(setattrfunc)0, /* tp_setattr */
- (cmpfunc)0, /* tp_compare */
+ NULL, /* tp_compare */
(reprfunc)0, /* tp_repr */
(PyNumberMethods*)0, /* tp_as_number */
(PySequenceMethods*)0, /* tp_as_sequence */
@@ -524,31 +522,28 @@ static PyMethodDef testhelper_functions[] = {
{ NULL, NULL }
};
-void
-inittesthelper ()
+PYGLIB_INIT_FUNCTION(testhelper, "testhelper", testhelper_functions)
{
PyObject *m, *d;
- PyObject *module;
g_thread_init(NULL);
init_pygobject();
- m = Py_InitModule ("testhelper", testhelper_functions);
- d = PyModule_GetDict(m);
+ d = PyModule_GetDict(module);
- if ((module = PyImport_ImportModule("gobject")) != NULL) {
- PyObject *moddict = PyModule_GetDict(module);
+ if ((m = PyImport_ImportModule("gobject")) != NULL) {
+ PyObject *moddict = PyModule_GetDict(m);
_PyGObject_Type = (PyTypeObject *)PyDict_GetItemString(moddict, "GObject");
if (_PyGObject_Type == NULL) {
PyErr_SetString(PyExc_ImportError,
"cannot import name GObject from gobject");
- return ;
+ return -1;
}
} else {
PyErr_SetString(PyExc_ImportError,
"could not import gobject");
- return ;
+ return -1;
}
/* TestInterface */
@@ -566,5 +561,6 @@ inittesthelper ()
pyg_set_object_has_new_constructor(TEST_TYPE_UNKNOWN);
//pyg_register_class_init(TEST_TYPE_UNKNOWN, __GtkUIManager_class_init);
+ return 0;
}