diff --git a/.gitignore b/.gitignore index deb1374..7f8d7e8 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ pygobject-2.21.5.tar.bz2 /pygobject-2.28.3.tar.bz2 /pygobject-2.28.4.tar.bz2 /pygobject-2.28.6.tar.bz2 +/pygobject-2.28.7.tar.xz diff --git a/0001-Fix-set_qdata-warning-on-accessing-NULL-gobject-prop.patch b/0001-Fix-set_qdata-warning-on-accessing-NULL-gobject-prop.patch deleted file mode 100644 index e20c7be..0000000 --- a/0001-Fix-set_qdata-warning-on-accessing-NULL-gobject-prop.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 42d871eb0b08ee6d55e95cc7e4b90844919555b9 Mon Sep 17 00:00:00 2001 -From: Ivan Stankovic -Date: Tue, 21 Feb 2012 12:24:58 +0100 -Subject: [PATCH] Fix set_qdata warning on accessing NULL gobject property - -https://bugzilla.gnome.org/show_bug.cgi?id=661155 ---- - gobject/pygobject.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -diff --git a/gobject/pygobject.c b/gobject/pygobject.c -index 6c2f06c..70dc89a 100644 ---- a/gobject/pygobject.c -+++ b/gobject/pygobject.c -@@ -991,7 +991,9 @@ pygobject_new(GObject *obj) - PyObject * - pygobject_new_sunk(GObject *obj) - { -- g_object_set_qdata (obj, pygobject_ref_sunk_key, GINT_TO_POINTER (1)); -+ if (obj) -+ g_object_set_qdata (obj, pygobject_ref_sunk_key, GINT_TO_POINTER (1)); -+ - return pygobject_new_full(obj, TRUE, NULL); - } - --- -1.7.1 - diff --git a/fix-gio-flags.patch b/fix-gio-flags.patch deleted file mode 100644 index 95b9114..0000000 --- a/fix-gio-flags.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 42d01f060c5d764baa881d13c103d68897163a49 Mon Sep 17 00:00:00 2001 -From: Ryan Lortie -Date: Mon, 12 Mar 2012 16:44:14 -0400 -Subject: [PATCH] gio-types.defs: change some enums to flags - -These flags types were originally incorrectly handled in glib as being -enums. That bug was fixed, but they're still enums here, leading to -warnings about the mismatch. - -Change them to flags. - -https://bugzilla.gnome.org/show_bug.cgi?id=668522 ---- - gio/gio-types.defs | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/gio/gio-types.defs b/gio/gio-types.defs -index 331e0bc..7eee5c8 100644 ---- a/gio/gio-types.defs -+++ b/gio/gio-types.defs -@@ -526,7 +526,7 @@ - ) - ) - --(define-enum MountMountFlags -+(define-flags MountMountFlags - (in-module "gio") - (c-name "GMountMountFlags") - (gtype-id "G_TYPE_MOUNT_MOUNT_FLAGS") -@@ -545,7 +545,7 @@ - ) - ) - --(define-enum DriveStartFlags -+(define-flags DriveStartFlags - (in-module "gio") - (c-name "GDriveStartFlags") - (gtype-id "G_TYPE_DRIVE_START_FLAGS") -@@ -770,7 +770,7 @@ - ) - ) - --(define-enum SocketMsgFlags -+(define-flags SocketMsgFlags - (in-module "gio") - (c-name "GSocketMsgFlags") - (gtype-id "G_TYPE_SOCKET_MSG_FLAGS") --- -1.7.9.1 \ No newline at end of file diff --git a/pygobject-2.28.6-historyentry.patch b/pygobject-2.28.6-historyentry.patch deleted file mode 100644 index fcde701..0000000 --- a/pygobject-2.28.6-historyentry.patch +++ /dev/null @@ -1,311 +0,0 @@ -From 9456ba70fdb98b3a4eb7ee2f630182387a54ca00 Mon Sep 17 00:00:00 2001 -From: Martin Pitt -Date: Tue, 19 Feb 2013 14:39:56 +0000 -Subject: Move property and signal creation into _class_init() - -We must not add class interfaces after g_type_class_ref() has been called the -first time. Move signal and property creation from pyg_type_register() into -pyg_object_class_init(), and drop the hack of registering interfaces twice. - -This is a backport of commit efcb0f9fd for 2.28.x. This allows old pygtk -applications to work with pygobject 2.28.x and glib 2.35.x. - -https://bugzilla.gnome.org/show_bug.cgi?id=694108 ---- -diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c -index 2a84606..91f7315 100644 ---- a/gobject/gobjectmodule.c -+++ b/gobject/gobjectmodule.c -@@ -312,13 +312,6 @@ pyg_object_get_property (GObject *object, guint property_id, - pyglib_gil_state_release(state); - } - --static void --pyg_object_class_init(GObjectClass *class, PyObject *py_class) --{ -- class->set_property = pyg_object_set_property; -- class->get_property = pyg_object_get_property; --} -- - typedef struct _PyGSignalAccumulatorData { - PyObject *callable; - PyObject *user_data; -@@ -484,15 +477,14 @@ override_signal(GType instance_type, const gchar *signal_name) - } - - static PyObject * --add_signals (GType instance_type, PyObject *signals) -+add_signals (GObjectClass *klass, PyObject *signals) - { - gboolean ret = TRUE; -- GObjectClass *oclass; - Py_ssize_t pos = 0; - PyObject *key, *value, *overridden_signals = NULL; -+ GType instance_type = G_OBJECT_CLASS_TYPE (klass); - - overridden_signals = PyDict_New(); -- oclass = g_type_class_ref(instance_type); - while (PyDict_Next(signals, &pos, &key, &value)) { - const gchar *signal_name; - gchar *signal_name_canon, *c; -@@ -530,7 +522,6 @@ add_signals (GType instance_type, PyObject *signals) - if (!ret) - break; - } -- g_type_class_unref(oclass); - if (ret) - return overridden_signals; - else { -@@ -800,14 +791,12 @@ pyg_param_spec_from_object (PyObject *tuple) - } - - static gboolean --add_properties (GType instance_type, PyObject *properties) -+add_properties (GObjectClass *klass, PyObject *properties) - { - gboolean ret = TRUE; -- GObjectClass *oclass; - Py_ssize_t pos = 0; - PyObject *key, *value; - -- oclass = g_type_class_ref(instance_type); - while (PyDict_Next(properties, &pos, &key, &value)) { - const gchar *prop_name; - GType prop_type; -@@ -873,7 +862,7 @@ add_properties (GType instance_type, PyObject *properties) - Py_DECREF(slice); - - if (pspec) { -- g_object_class_install_property(oclass, 1, pspec); -+ g_object_class_install_property(klass, 1, pspec); - } else { - PyObject *type, *value, *traceback; - ret = FALSE; -@@ -883,7 +872,7 @@ add_properties (GType instance_type, PyObject *properties) - g_snprintf(msg, 256, - "%s (while registering property '%s' for GType '%s')", - PYGLIB_PyUnicode_AsString(value), -- prop_name, g_type_name(instance_type)); -+ prop_name, G_OBJECT_CLASS_NAME(klass)); - Py_DECREF(value); - value = PYGLIB_PyUnicode_FromString(msg); - } -@@ -892,11 +881,63 @@ add_properties (GType instance_type, PyObject *properties) - } - } - -- g_type_class_unref(oclass); - return ret; - } - - static void -+pyg_object_class_init(GObjectClass *class, PyObject *py_class) -+{ -+ PyObject *gproperties, *gsignals, *overridden_signals; -+ PyObject *class_dict = ((PyTypeObject*) py_class)->tp_dict; -+ -+ class->set_property = pyg_object_set_property; -+ class->get_property = pyg_object_get_property; -+ -+ /* install signals */ -+ /* we look this up in the instance dictionary, so we don't -+ * accidentally get a parent type's __gsignals__ attribute. */ -+ gsignals = PyDict_GetItemString(class_dict, "__gsignals__"); -+ if (gsignals) { -+ if (!PyDict_Check(gsignals)) { -+ PyErr_SetString(PyExc_TypeError, -+ "__gsignals__ attribute not a dict!"); -+ return; -+ } -+ if (!(overridden_signals = add_signals(class, gsignals))) { -+ return; -+ } -+ if (PyDict_SetItemString(class_dict, "__gsignals__", -+ overridden_signals)) { -+ return; -+ } -+ Py_DECREF(overridden_signals); -+ -+ PyDict_DelItemString(class_dict, "__gsignals__"); -+ } else { -+ PyErr_Clear(); -+ } -+ -+ /* install properties */ -+ /* we look this up in the instance dictionary, so we don't -+ * accidentally get a parent type's __gproperties__ attribute. */ -+ gproperties = PyDict_GetItemString(class_dict, "__gproperties__"); -+ if (gproperties) { -+ if (!PyDict_Check(gproperties)) { -+ PyErr_SetString(PyExc_TypeError, -+ "__gproperties__ attribute not a dict!"); -+ return; -+ } -+ if (!add_properties(class, gproperties)) { -+ return; -+ } -+ PyDict_DelItemString(class_dict, "__gproperties__"); -+ /* Borrowed reference. Py_DECREF(gproperties); */ -+ } else { -+ PyErr_Clear(); -+ } -+} -+ -+static void - pyg_register_class_init(GType gtype, PyGClassInitFunc class_init) - { - GSList *list; -@@ -1068,7 +1109,7 @@ pygobject__g_instance_init(GTypeInstance *instance, - */ - static void - pyg_type_add_interfaces(PyTypeObject *class, GType instance_type, -- PyObject *bases, gboolean new_interfaces, -+ PyObject *bases, - GType *parent_interfaces, guint n_parent_interfaces) - { - int i; -@@ -1082,7 +1123,6 @@ pyg_type_add_interfaces(PyTypeObject *class, GType instance_type, - guint k; - PyObject *base = PyTuple_GET_ITEM(bases, i); - GType itype; -- gboolean is_new = TRUE; - const GInterfaceInfo *iinfo; - GInterfaceInfo iinfo_copy; - -@@ -1099,16 +1139,6 @@ pyg_type_add_interfaces(PyTypeObject *class, GType instance_type, - if (!G_TYPE_IS_INTERFACE(itype)) - continue; - -- for (k = 0; k < n_parent_interfaces; ++k) { -- if (parent_interfaces[k] == itype) { -- is_new = FALSE; -- break; -- } -- } -- -- if ((new_interfaces && !is_new) || (!new_interfaces && is_new)) -- continue; -- - iinfo = pyg_lookup_interface_info(itype); - if (!iinfo) { - gchar *error; -@@ -1129,7 +1159,7 @@ pyg_type_add_interfaces(PyTypeObject *class, GType instance_type, - int - pyg_type_register(PyTypeObject *class, const char *type_name) - { -- PyObject *gtype, *gsignals, *gproperties, *overridden_signals; -+ PyObject *gtype; - GType parent_type, instance_type; - GType *parent_interfaces; - guint n_parent_interfaces; -@@ -1216,88 +1246,22 @@ pyg_type_register(PyTypeObject *class, const char *type_name) - } - - /* -- * Note: Interfaces to be implemented are searched twice. First -- * we register interfaces that are already implemented by a parent -- * type. The second time, the remaining interfaces are -- * registered, i.e. the ones that are not implemented by a parent -- * type. In between these two loops, properties and signals are -- * registered. It has to be done this way, in two steps, -- * otherwise glib will complain. If registering all interfaces -- * always before properties, you get an error like: -- * -- * ../gobject:121: Warning: Object class -- * test_interface+MyObject doesn't implement property -- * 'some-property' from interface 'TestInterface' -- * -- * If, on the other hand, you register interfaces after -- * registering the properties, you get something like: -- * -- * ../gobject:121: Warning: cannot add interface type -- * `TestInterface' to type `test_interface+MyUnknown', since -- * type `test_interface+MyUnknown' already conforms to -- * interface -- * -- * This looks like a GLib quirk, but no bug has been filed -- * upstream. However we have a unit test for this particular -- * problem, which can be found in test_interfaces.py, class -- * TestInterfaceImpl. -+ * Note, all interfaces need to be registered before the first -+ * g_type_class_ref(), see bug #686149. - * - * See also comment above pyg_type_add_interfaces(). - */ -- pyg_type_add_interfaces(class, instance_type, class->tp_bases, FALSE, -+ pyg_type_add_interfaces(class, instance_type, class->tp_bases, - parent_interfaces, n_parent_interfaces); - -- /* we look this up in the instance dictionary, so we don't -- * accidentally get a parent type's __gsignals__ attribute. */ -- gsignals = PyDict_GetItemString(class->tp_dict, "__gsignals__"); -- if (gsignals) { -- if (!PyDict_Check(gsignals)) { -- PyErr_SetString(PyExc_TypeError, -- "__gsignals__ attribute not a dict!"); -- g_free(parent_interfaces); -- return -1; -- } -- if (!(overridden_signals = add_signals(instance_type, gsignals))) { -- g_free(parent_interfaces); -- return -1; -- } -- if (PyDict_SetItemString(class->tp_dict, "__gsignals__", -- overridden_signals)) { -- g_free(parent_interfaces); -- return -1; -- } -- Py_DECREF(overridden_signals); -- } else { -- PyErr_Clear(); -- } - -- /* we look this up in the instance dictionary, so we don't -- * accidentally get a parent type's __gsignals__ attribute. */ -- gproperties = PyDict_GetItemString(class->tp_dict, "__gproperties__"); -- if (gproperties) { -- if (!PyDict_Check(gproperties)) { -- PyErr_SetString(PyExc_TypeError, -- "__gproperties__ attribute not a dict!"); -- g_free(parent_interfaces); -- return -1; -- } -- if (!add_properties(instance_type, gproperties)) { -- g_free(parent_interfaces); -- return -1; -- } -- PyDict_DelItemString(class->tp_dict, "__gproperties__"); -- /* Borrowed reference. Py_DECREF(gproperties); */ -- } else { -- PyErr_Clear(); -+ gclass = g_type_class_ref(instance_type); -+ if (PyErr_Occurred() != NULL) { -+ g_type_class_unref(gclass); -+ g_free(parent_interfaces); -+ return -1; - } - -- /* Register new interfaces, that are _not_ already defined by -- * the parent type. FIXME: See above. -- */ -- pyg_type_add_interfaces(class, instance_type, class->tp_bases, TRUE, -- parent_interfaces, n_parent_interfaces); -- -- gclass = g_type_class_ref(instance_type); - if (pyg_run_class_init(instance_type, gclass, class)) { - g_type_class_unref(gclass); - g_free(parent_interfaces); -@@ -1306,9 +1270,8 @@ pyg_type_register(PyTypeObject *class, const char *type_name) - g_type_class_unref(gclass); - g_free(parent_interfaces); - -- if (gsignals) -- PyDict_DelItemString(class->tp_dict, "__gsignals__"); -- -+ if (PyErr_Occurred() != NULL) -+ return -1; - return 0; - } - --- -cgit v0.9.2 diff --git a/pygobject2.spec b/pygobject2.spec index e9d8618..8ac2968 100644 --- a/pygobject2.spec +++ b/pygobject2.spec @@ -1,24 +1,15 @@ ### Abstract ### Name: pygobject2 -Version: 2.28.6 -Release: 19%{?dist} +Version: 2.28.7 +Release: 1%{?dist} License: LGPLv2+ Group: Development/Languages Summary: Python 2 bindings for GObject URL: http://www.pygtk.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-root #VCS: git:git://git.gnome.org/pygobject -Source: http://ftp.gnome.org/pub/GNOME/sources/pygobject/2.28/pygobject-%{version}.tar.bz2 - -### Patches ### -# Fix this warning on startup: -# ** WARNING **: Trying to register gtype 'GMountMountFlags' as enum when -# in fact it is of type 'GFlags' -# using upstream patch (rhbz#790053) -Patch1: fix-gio-flags.patch -Patch2: 0001-Fix-set_qdata-warning-on-accessing-NULL-gobject-prop.patch -Patch3: pygobject-2.28.6-historyentry.patch +Source0: http://ftp.gnome.org/pub/GNOME/sources/pygobject/2.28/pygobject-%{version}.tar.xz ### Build Dependencies ### @@ -64,9 +55,6 @@ This package contains documentation files for %{name}. %prep %setup -q -n pygobject-%{version} -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 find -name '*.py' | xargs sed -i '1s|^#!python|#!%{__python}|' @@ -125,6 +113,9 @@ rm examples/Makefile* %{_datadir}/pygobject/xsl %changelog +* Mon Dec 11 2017 Kalev Lember - 2.28.7-1 +- Update to 2.28.7 + * Thu Aug 03 2017 Fedora Release Engineering - 2.28.6-19 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild diff --git a/sources b/sources index f521fdf..5c6316b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -a43d783228dd32899e6908352b8308f3 pygobject-2.28.6.tar.bz2 +SHA512 (pygobject-2.28.7.tar.xz) = a5f3ae39f8156bd6234fb6d0ea31eba782fbdd4c292656c31b33e098abe3dcf0774d492cf602a4637cb679af9ecd511b24263349fbfd25708ca70f16cb052dfb