dev-python/pygobject: Remove old

Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
Michał Górny
2020-09-20 10:11:59 +02:00
parent 18f79d2f10
commit a10be9ce04
10 changed files with 0 additions and 900 deletions

View File

@@ -1,3 +1,2 @@
DIST pygobject-2.28.6.tar.xz 747248 BLAKE2B 5f92794034b2d0559a623db4a7d273a7dc3f099cae87ede91b17e81acac085a9298c6b81b45b4b8540b6a75ced97e474a993437dbfcfc2133d3321d6a979b541 SHA512 37544ea2377258758169b25a2969d5ee1c9ffb9b6e63e05bc7a0471a49ac9169c51ec587d4489172c7d256f53df878a81c1992a08059aa7e43dbbb69f799545c
DIST pygobject-3.34.0.tar.xz 552268 BLAKE2B a9cbeb644e0aa1b23067b591fe5c6299741395656631d39782a8c183a5d3a8e5e7f1a81acdefee186b7cc2bc34dda9271468b1828d5b9613ddc1256e24f1ecb8 SHA512 782195d22e564b88dea8d43469f0111f398b44b51a63df2fe7d07650af94d5cd037f322a5d7e405338823be3419fcdbf0113fe50b220ab1cfd07d4d01dbc4766
DIST pygobject-3.36.1.tar.xz 556568 BLAKE2B cd38aec8e71ff230926327e77867d07ae0fd5549b71619301bb3be01821ea93e557ecf335ea238292176981a864b269eaa2a86da47e8fb320f187f54caf24dc4 SHA512 5e00dcd03dfe4f92acbf827c13c164b6b9740b2a8cef3b2dce70f96a2156fee2411c84dc669f12b910f4a93daa03ba845282832e2b09d8c887102d43764a345f

View File

@@ -1,64 +0,0 @@
From b3e852d29bfd1e90f7e0da409fd0ae36cc01675a Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <eva@gentoo.org>
Date: Fri, 8 Apr 2011 15:36:35 +0200
Subject: [PATCH 1/3] Move codegen to a non-private directory
---
codegen/Makefile.am | 2 +-
codegen/pygobject-codegen-2.0.in | 3 ++-
pygobject-2.0.pc.in | 3 ++-
3 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/codegen/Makefile.am b/codegen/Makefile.am
index f9886eb..d714ff2 100644
--- a/codegen/Makefile.am
+++ b/codegen/Makefile.am
@@ -2,7 +2,7 @@ PLATFORM_VERSION = 2.0
bin_SCRIPTS = pygobject-codegen-$(PLATFORM_VERSION)
-codegendir = $(pkgdatadir)/$(PLATFORM_VERSION)/codegen
+codegendir = $(pyexecdir)/gtk-2.0/codegen
codegen_SCRIPTS = \
code-coverage.py \
diff --git a/codegen/pygobject-codegen-2.0.in b/codegen/pygobject-codegen-2.0.in
index c5c912e..c04451b 100644
--- a/codegen/pygobject-codegen-2.0.in
+++ b/codegen/pygobject-codegen-2.0.in
@@ -1,9 +1,10 @@
#!/bin/sh
prefix=@prefix@
+exec_prefix=@exec_prefix@
datarootdir=@datarootdir@
datadir=@datadir@
-codegendir=${datadir}/pygobject/2.0/codegen
+codegendir=@pyexecdir@/gtk-2.0/codegen
PYTHONPATH=$codegendir
export PYTHONPATH
diff --git a/pygobject-2.0.pc.in b/pygobject-2.0.pc.in
index a47b685..0d1a811 100644
--- a/pygobject-2.0.pc.in
+++ b/pygobject-2.0.pc.in
@@ -4,6 +4,7 @@ includedir=@includedir@
datarootdir=@datarootdir@
datadir=@datadir@
libdir=@libdir@
+pyexecdir=@pyexecdir@
# you can use the --variable=pygtkincludedir argument to
# pkg-config to get this value. You might want to use this to
@@ -12,7 +13,7 @@ pygtkincludedir=${includedir}/pygtk-2.0
fixxref=${datadir}/pygobject/xsl/fixxref.py
pygdocs=${datadir}/gtk-doc/html/pygobject
defsdir=${datadir}/pygobject/2.0/defs
-codegendir=${datadir}/pygobject/2.0/codegen
+codegendir=${pyexecdir}/gtk-2.0/codegen
overridesdir=@pyexecdir@/gi/overrides
Name: PyGObject
--
1.7.4.1

View File

@@ -1,76 +0,0 @@
From b5c4b8b97a1ccb9a4c63ab726ea9c84d81ef51ca Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <eva@gentoo.org>
Date: Fri, 5 Nov 2010 23:39:08 +0100
Subject: [PATCH 2/3] Do not build tests unless needed
---
tests/Makefile.am | 12 +++++-------
tests/runtests.py | 2 ++
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/tests/Makefile.am b/tests/Makefile.am
index bad15f0..5b0859a 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,7 +1,7 @@
CLEANFILES =
-noinst_LTLIBRARIES =
+check_LTLIBRARIES =
if ENABLE_INTROSPECTION
-noinst_LTLIBRARIES += libregress.la libgimarshallingtests.la
+check_LTLIBRARIES += libregress.la libgimarshallingtests.la
nodist_libregress_la_SOURCES = $(GI_DATADIR)/tests/regress.c $(GI_DATADIR)/tests/regress.h
libregress_la_CFLAGS = $(GIO_CFLAGS) $(PYCAIRO_CFLAGS)
@@ -46,7 +46,7 @@ gschemas.compiled: org.gnome.test.gschema.xml
CLEANFILES += Regress-1.0.gir Regress-1.0.typelib GIMarshallingTests-1.0.gir GIMarshallingTests-1.0.typelib gschemas.compiled
endif
-noinst_LTLIBRARIES += testhelper.la
+check_LTLIBRARIES += testhelper.la
testhelper_la_CFLAGS = -I$(top_srcdir)/gobject -I$(top_srcdir)/glib $(PYTHON_INCLUDES) $(GLIB_CFLAGS)
testhelper_la_LDFLAGS = -module -avoid-version
@@ -66,8 +66,6 @@ testhelper.la: $(testhelper_la_OBJECTS) $(testhelper_la_DEPENDENCIES)
test -L $@ || $(LN_S) .libs/$@ $@
-all: $(LTLIBRARIES:.la=.so)
-
TEST_FILES_STATIC = \
test_gobject.py \
test_interface.py \
@@ -109,7 +107,7 @@ EXTRA_DIST = \
EXTRA_DIST += $(TEST_FILES_STATIC) $(TEST_FILES_GI) $(TEST_FILES_GIO)
clean-local:
- rm -f $(LTLIBRARIES:.la=.so) file.txt~
+ rm -f $(check_LTLIBRARIES:.la=.so) file.txt~
DBUS_LAUNCH=$(shell which dbus-launch)
RUN_TESTS_ENV_VARS= \
@@ -121,7 +119,7 @@ RUN_TESTS_ENV_VARS= \
RUN_TESTS_LAUNCH=$(RUN_TESTS_ENV_VARS) $(DBUS_LAUNCH) $(EXEC_NAME) $(PYTHON) $(srcdir)/runtests.py
# run tests in separately to avoid loading static and introspection bindings in the same process
-check-local: $(LTLIBRARIES:.la=.so) Regress-1.0.typelib GIMarshallingTests-1.0.typelib gschemas.compiled
+check-local: $(check_LTLIBRARIES:.la=.so) Regress-1.0.typelib GIMarshallingTests-1.0.typelib gschemas.compiled
TEST_FILES="$(TEST_FILES_STATIC)" $(RUN_TESTS_LAUNCH)
TEST_FILES="$(TEST_FILES_GI)" $(RUN_TESTS_LAUNCH)
if BUILD_GIO
diff --git a/tests/runtests.py b/tests/runtests.py
index 2bb8637..4107bcf 100644
--- a/tests/runtests.py
+++ b/tests/runtests.py
@@ -6,6 +6,8 @@ import sys
import unittest
+# Some tests fail with translated messages.
+os.environ["LC_ALL"] = "C"
# force untranslated messages, as we check for them in some tests
os.environ['LC_MESSAGES'] = 'C'
--
1.7.4.1

View File

@@ -1,103 +0,0 @@
From 2f75378f3c56f245cabdcd2c52b561dbb878db2d Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <eva@gentoo.org>
Date: Fri, 8 Apr 2011 15:43:39 +0200
Subject: [PATCH 3/3] Enable support to build against multiple version of python
---
codegen/pygobject-codegen-2.0.in | 2 +-
gi/Makefile.am | 2 +-
gio/Makefile.am | 2 +-
glib/Makefile.am | 10 +++++-----
gobject/Makefile.am | 2 +-
5 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/codegen/pygobject-codegen-2.0.in b/codegen/pygobject-codegen-2.0.in
index c04451b..194e5ba 100644
--- a/codegen/pygobject-codegen-2.0.in
+++ b/codegen/pygobject-codegen-2.0.in
@@ -4,7 +4,7 @@ prefix=@prefix@
exec_prefix=@exec_prefix@
datarootdir=@datarootdir@
datadir=@datadir@
-codegendir=@pyexecdir@/gtk-2.0/codegen
+codegendir=$(@PYTHON@ -c "from distutils import sysconfig; print sysconfig.get_python_lib(1, 0, prefix='@exec_prefix@')")/gtk-2.0/codegen
PYTHONPATH=$codegendir
export PYTHONPATH
diff --git a/gi/Makefile.am b/gi/Makefile.am
index 31f6c79..8690522 100644
--- a/gi/Makefile.am
+++ b/gi/Makefile.am
@@ -25,7 +25,7 @@ _gi_la_LDFLAGS = \
-export-symbols-regex "init_gi|PyInit__gi"
_gi_la_LIBADD = \
$(GI_LIBS) \
- $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la
+ $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@@PYTHON_VERSION@.la
_gi_la_SOURCES = \
pygi-repository.c \
pygi-repository.h \
diff --git a/gio/Makefile.am b/gio/Makefile.am
index 6b3eb57..00e1c54 100644
--- a/gio/Makefile.am
+++ b/gio/Makefile.am
@@ -67,7 +67,7 @@ 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_LIBADD = $(GIO_LIBS) $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la
+_gio_la_LIBADD = $(GIO_LIBS) $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@@PYTHON_VERSION@.la
_gio_la_SOURCES = \
giomodule.c \
pygio-utils.c \
diff --git a/glib/Makefile.am b/glib/Makefile.am
index e210318..df39687 100644
--- a/glib/Makefile.am
+++ b/glib/Makefile.am
@@ -4,7 +4,7 @@ INCLUDES = $(PYTHON_INCLUDES) $(GLIB_CFLAGS) -DPY_SSIZE_T_CLEAN
pkgincludedir = $(includedir)/pygtk-2.0
pkginclude_HEADERS = pyglib.h
-lib_LTLIBRARIES = libpyglib-2.0-@PYTHON_BASENAME@.la
+lib_LTLIBRARIES = libpyglib-2.0-@PYTHON_BASENAME@@PYTHON_VERSION@.la
pkgpyexecdir = $(pyexecdir)
@@ -19,9 +19,9 @@ if PLATFORM_WIN32
common_ldflags += -no-undefined
endif
-libpyglib_2_0_@PYTHON_BASENAME@_la_CFLAGS = $(GLIB_CFLAGS)
-libpyglib_2_0_@PYTHON_BASENAME@_la_LIBADD = $(GLIB_LIBS) $(FFI_LIBS)
-libpyglib_2_0_@PYTHON_BASENAME@_la_SOURCES = \
+libpyglib_2_0_@PYTHON_BASENAME@@PYTHON_VERSION@_la_CFLAGS = $(GLIB_CFLAGS)
+libpyglib_2_0_@PYTHON_BASENAME@@PYTHON_VERSION@_la_LIBADD = $(GLIB_LIBS) $(FFI_LIBS)
+libpyglib_2_0_@PYTHON_BASENAME@@PYTHON_VERSION@_la_SOURCES = \
pyglib.c \
pyglib.h \
pyglib-private.h \
@@ -29,7 +29,7 @@ libpyglib_2_0_@PYTHON_BASENAME@_la_SOURCES = \
_glib_la_CFLAGS = $(GLIB_CFLAGS)
_glib_la_LDFLAGS = $(common_ldflags) -export-symbols-regex "_glib|PyInit__glib"
-_glib_la_LIBADD = $(GLIB_LIBS) libpyglib-2.0-@PYTHON_BASENAME@.la
+_glib_la_LIBADD = $(GLIB_LIBS) libpyglib-2.0-@PYTHON_BASENAME@@PYTHON_VERSION@.la
_glib_la_SOURCES = \
glibmodule.c \
pygiochannel.c \
diff --git a/gobject/Makefile.am b/gobject/Makefile.am
index 7208329..3f9ad8e 100644
--- a/gobject/Makefile.am
+++ b/gobject/Makefile.am
@@ -35,7 +35,7 @@ _gobject_la_LDFLAGS = $(common_ldflags) -export-symbols-regex "_gobject|PyInit__
_gobject_la_LIBADD = \
$(GLIB_LIBS) \
$(FFI_LIBS) \
- $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la
+ $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@@PYTHON_VERSION@.la
_gobject_la_SOURCES = \
gobjectmodule.c \
pygboxed.c \
--
1.7.4.1

View File

@@ -1,98 +0,0 @@
From 9d8867a7c67a14d055a0dd8db5f6a9aae5762a04 Mon Sep 17 00:00:00 2001
From: Alexandre Rostovtsev <tetromino@gentoo.org>
Date: Sun, 13 Jan 2013 19:50:14 -0500
Subject: [PATCH] Disable failing tests
---
tests/test_gio.py | 13 ++++++++-----
tests/test_overrides.py | 4 ++--
2 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/tests/test_gio.py b/tests/test_gio.py
index e14eddf..a4d1bc7 100644
--- a/tests/test_gio.py
+++ b/tests/test_gio.py
@@ -650,10 +650,11 @@ class TestInputStream(unittest.TestCase):
else:
return read_data
+ """
def testReadAsync(self):
def callback(stream, result):
- self.assertEquals(result.get_op_res_gssize(), 7)
try:
+ self.assertEquals(result.get_op_res_gssize(), 7)
data = stream.read_finish(result)
self.assertEquals(data, "testing")
stream.close()
@@ -694,7 +695,7 @@ class TestInputStream(unittest.TestCase):
self.assertRaises(TypeError, self.stream.read_async, 1024,
priority=1, cancellable="bar")
self.assertRaises(TypeError, self.stream.read_async, 1024, 1, "bar")
-
+ """
# FIXME: this makes 'make check' freeze
def _testCloseAsync(self):
@@ -822,10 +823,11 @@ class TestOutputStream(unittest.TestCase):
self.assertEquals(stream.get_contents(), some_data)
+ """
def testWriteAsync(self):
def callback(stream, result):
- self.assertEquals(result.get_op_res_gssize(), 7)
try:
+ self.assertEquals(result.get_op_res_gssize(), 7)
self.assertEquals(stream.write_finish(result), 7)
self.failUnless(os.path.exists("outputstream.txt"))
self.assertEquals(open("outputstream.txt").read(), "testing")
@@ -861,6 +863,7 @@ class TestOutputStream(unittest.TestCase):
self.assertRaises(TypeError, self.stream.write_async, "foo",
priority=1, cancellable="bar")
self.assertRaises(TypeError, self.stream.write_async, "foo", 1, "bar")
+ """
# FIXME: this makes 'make check' freeze
def _testCloseAsync(self):
@@ -1007,7 +1010,7 @@ class TestVfs(unittest.TestCase):
class TestVolume(unittest.TestCase):
def setUp(self):
self.monitor = gio.volume_monitor_get()
-
+"""
def testVolumeEnumerate(self):
volumes = self.monitor.get_volumes()
self.failUnless(isinstance(volumes, list))
@@ -1018,7 +1021,7 @@ class TestVolume(unittest.TestCase):
for id in ids:
if id is not None:
self.failUnless(isinstance(id, str))
-
+"""
class TestFileInputStream(unittest.TestCase):
def setUp(self):
self._f = open("file.txt", "w+")
diff --git a/tests/test_overrides.py b/tests/test_overrides.py
index 47f38a3..063792d 100644
--- a/tests/test_overrides.py
+++ b/tests/test_overrides.py
@@ -337,13 +337,13 @@ class TestPango(unittest.TestCase):
desc = Pango.FontDescription('monospace')
self.assertEquals(desc.get_family(), 'monospace')
self.assertEquals(desc.get_variant(), Pango.Variant.NORMAL)
-
+"""
def test_layout(self):
self.assertRaises(TypeError, Pango.Layout)
context = Pango.Context()
layout = Pango.Layout(context)
self.assertEquals(layout.get_context(), context)
-
+"""
class TestGdk(unittest.TestCase):
def test_constructor(self):
--
1.8.1

View File

@@ -1,50 +0,0 @@
From 42d01f060c5d764baa881d13c103d68897163a49 Mon Sep 17 00:00:00 2001
From: Ryan Lortie <desrt@desrt.ca>
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.8.5

View File

@@ -1,315 +0,0 @@
From 9456ba70fdb98b3a4eb7ee2f630182387a54ca00 Mon Sep 17 00:00:00 2001
From: Martin Pitt <martinpitt@gnome.org>
Date: Tue, 19 Feb 2013 15:39:56 +0100
Subject: [PATCH] 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
---
gobject/gobjectmodule.c | 177 +++++++++++++++++++-----------------------------
1 file changed, 70 insertions(+), 107 deletions(-)
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;
}
--
1.8.3.2

View File

@@ -1,28 +0,0 @@
From 42d871eb0b08ee6d55e95cc7e4b90844919555b9 Mon Sep 17 00:00:00 2001
From: Ivan Stankovic <ivan.stankovic@avl.com>
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.8.5

View File

@@ -1,33 +0,0 @@
From 9c8ec7495e9e73855dc284be293828572f408c92 Mon Sep 17 00:00:00 2001
From: Alexandre Rostovtsev <tetromino@gentoo.org>
Date: Tue, 25 Dec 2012 00:26:05 -0500
Subject: [PATCH] Do not run introspection tests when building with
introspection disabled
---
tests/Makefile.am | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/tests/Makefile.am b/tests/Makefile.am
index e60bad5..3a0d1b7 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -120,9 +120,14 @@ RUN_TESTS_ENV_VARS= \
RUN_TESTS_LAUNCH=$(RUN_TESTS_ENV_VARS) $(DBUS_LAUNCH) $(EXEC_NAME) $(PYTHON) $(srcdir)/runtests.py
# run tests in separately to avoid loading static and introspection bindings in the same process
-check-local: $(check_LTLIBRARIES:.la=.so) Regress-1.0.typelib GIMarshallingTests-1.0.typelib gschemas.compiled
+if ENABLE_INTROSPECTION
+CHECK_LOCAL_INTROSPECTION_REQ = Regress-1.0.typelib GIMarshallingTests-1.0.typelib gschemas.compiled
+endif
+check-local: $(check_LTLIBRARIES:.la=.so) $(CHECK_LOCAL_INTROSPECTION_REQ)
TEST_FILES="$(TEST_FILES_STATIC)" $(RUN_TESTS_LAUNCH)
+if ENABLE_INTROSPECTION
TEST_FILES="$(TEST_FILES_GI)" $(RUN_TESTS_LAUNCH)
+endif
if BUILD_GIO
TEST_FILES="$(TEST_FILES_GIO)" $(RUN_TESTS_LAUNCH)
endif
--
1.8.0.2

View File

@@ -1,132 +0,0 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="5"
GCONF_DEBUG="no"
GNOME2_LA_PUNT="yes"
PYTHON_COMPAT=( python2_7 )
inherit autotools eutils gnome2 python-r1 virtualx
DESCRIPTION="GLib's GObject library bindings for Python"
HOMEPAGE="http://www.pygtk.org/"
LICENSE="LGPL-2.1+"
SLOT="2"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~mips ppc ppc64 s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
IUSE="examples libffi test"
RESTRICT="!test? ( test )"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
COMMON_DEPEND=">=dev-libs/glib-2.24.0:2
dev-lang/python-exec:2
libffi? ( dev-libs/libffi:= )
${PYTHON_DEPS}
"
DEPEND="${COMMON_DEPEND}
dev-util/gtk-doc-am
virtual/pkgconfig
test? (
media-fonts/font-cursor-misc
media-fonts/font-misc-misc )
"
RDEPEND="${COMMON_DEPEND}
!<dev-python/pygtk-2.23"
src_prepare() {
# Fix FHS compliance, see upstream bug #535524
epatch "${FILESDIR}/${PN}-2.28.3-fix-codegen-location.patch"
# Do not build tests if unneeded, bug #226345
epatch "${FILESDIR}/${PN}-2.28.3-make_check.patch"
# Support installation for multiple Python versions, upstream bug #648292
epatch "${FILESDIR}/${PN}-2.28.3-support_multiple_python_versions.patch"
# Disable tests that fail
epatch "${FILESDIR}/${P}-disable-failing-tests.patch"
# Disable introspection tests when we build with --disable-introspection
epatch "${FILESDIR}/${P}-tests-no-introspection.patch"
# Fix warning spam
epatch "${FILESDIR}/${P}-set_qdata.patch"
epatch "${FILESDIR}/${P}-gio-types-2.32.patch"
# Fix glib-2.36 compatibility, bug #486602
epatch "${FILESDIR}/${P}-glib-2.36-class_init.patch"
sed -i \
-e 's:AM_CONFIG_HEADER:AC_CONFIG_HEADERS:' \
-e 's:AM_PROG_CC_STDC:AC_PROG_CC:' \
configure.ac || die
eautoreconf
gnome2_src_prepare
python_copy_sources
prepare_shebangs() {
# Make a backup with unconverted shebangs to keep python_doscript happy
cp codegen/codegen.py pygobject-codegen-2.0
sed -e "s%#! \?/usr/bin/env python%#!${PYTHON}%" \
-i codegen/*.py || die "shebang convertion failed"
}
python_foreach_impl run_in_build_dir prepare_shebangs
}
src_configure() {
DOCS="AUTHORS ChangeLog* NEWS README"
# --disable-introspection and --disable-cairo because we use pygobject:3
# for introspection support
G2CONF="${G2CONF}
--disable-introspection
--disable-cairo
$(use_with libffi ffi)"
python_foreach_impl run_in_build_dir gnome2_src_configure
}
src_compile() {
python_foreach_impl run_in_build_dir gnome2_src_compile
}
# FIXME: With python multiple ABI support, tests return 1 even when they pass
src_test() {
unset DBUS_SESSION_BUS_ADDRESS
export GIO_USE_VFS="local" # prevents odd issues with deleting ${T}/.gvfs
testing() {
export XDG_CACHE_HOME="${T}/${EPYTHON}"
run_in_build_dir Xemake -j1 check
unset XDG_CACHE_HOME
}
python_foreach_impl testing
unset GIO_USE_VFS
}
src_install() {
installing() {
local f prefixed_sitedir
gnome2_src_install
python_doscript pygobject-codegen-2.0
# Don't keep multiple copies of pygobject-codegen-2.0 script
prefixed_sitedir=$(python_get_sitedir)
dosym "${prefixed_sitedir#${EPREFIX}}/gtk-2.0/codegen/codegen.py" "/usr/lib/python-exec/${EPYTHON}/pygobject-codegen-2.0"
}
python_foreach_impl run_in_build_dir installing
if use examples; then
insinto /usr/share/doc/${PF}
doins -r examples
fi
}
run_in_build_dir() {
pushd "${BUILD_DIR}" > /dev/null || die
"$@"
popd > /dev/null
}