+++ /dev/null
-From c60ef6a2bcc05010a89328d5fc2704d1aa505e2a Mon Sep 17 00:00:00 2001
-From: Christoph Reiter <reiter.christoph@gmail.com>
-Date: Sat, 10 Mar 2018 18:04:14 +0100
-Subject: [PATCH 1/4] tests_gi: Use capture_output() context manager instead of
- manually mocking stdout
-
----
- tests/helper.py | 2 +-
- tests/test_gi.py | 14 +++-----------
- 2 files changed, 4 insertions(+), 12 deletions(-)
-
-diff --git a/tests/helper.py b/tests/helper.py
-index c4308fee..892cb740 100644
---- a/tests/helper.py
-+++ b/tests/helper.py
-@@ -113,7 +113,7 @@ def capture_glib_deprecation_warnings():
- @contextlib.contextmanager
- def capture_output():
- """
-- with capture_output as (stdout, stderr):
-+ with capture_output() as (stdout, stderr):
- some_action()
- print(stdout.getvalue(), stderr.getvalue())
- """
-diff --git a/tests/test_gi.py b/tests/test_gi.py
-index d0c72b64..3b77ff2d 100644
---- a/tests/test_gi.py
-+++ b/tests/test_gi.py
-@@ -13,7 +13,6 @@ import subprocess
- import gc
- import weakref
- import warnings
--from io import StringIO, BytesIO
-
- import gi
- import gi.overrides
-@@ -24,7 +23,7 @@ from gi.repository import GObject, GLib, Gio
- from gi.repository import GIMarshallingTests
-
- from compathelper import _bytes, _unicode
--from helper import capture_exceptions
-+from helper import capture_exceptions, capture_output
-
- if sys.version_info < (3, 0):
- CONSTANT_UTF8 = "const \xe2\x99\xa5 utf8"
-@@ -2836,16 +2835,9 @@ class TestModule(unittest.TestCase):
- self.assertTrue(hasattr(item, '__class__'))
-
- def test_help(self):
-- orig_stdout = sys.stdout
-- try:
-- if sys.version_info < (3, 0):
-- sys.stdout = BytesIO()
-- else:
-- sys.stdout = StringIO()
-+ with capture_output() as (stdout, stderr):
- help(GIMarshallingTests)
-- output = sys.stdout.getvalue()
-- finally:
-- sys.stdout = orig_stdout
-+ output = stdout.getvalue()
-
- self.assertTrue('SimpleStruct' in output, output)
- self.assertTrue('Interface2' in output, output)
---
-2.18.0
-
-From 1826e41cd317ba3c19cf8767b1ef8752f1865aac Mon Sep 17 00:00:00 2001
-From: Christoph Reiter <reiter.christoph@gmail.com>
-Date: Sat, 10 Mar 2018 18:54:28 +0100
-Subject: [PATCH 2/4] IntrospectionModule: __path__ should be List[str] and not
- str
-
-This fixes a crash when calling help() on the module which got stricter with
-Python 3.7.
-
-It's a bit questionable why the type has __path__ in the first place as
-that's only meant for packages. But let's leave that for now.
----
- gi/module.py | 5 +++--
- tests/test_gi.py | 6 ++++--
- 2 files changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/gi/module.py b/gi/module.py
-index fd8f5080..9e8b5256 100644
---- a/gi/module.py
-+++ b/gi/module.py
-@@ -124,10 +124,11 @@ class IntrospectionModule(object):
- self._version = version
- self.__name__ = 'gi.repository.' + namespace
-
-- self.__path__ = repository.get_typelib_path(self._namespace)
-+ path = repository.get_typelib_path(self._namespace)
-+ self.__path__ = [path]
- if _have_py3:
- # get_typelib_path() delivers bytes, not a string
-- self.__path__ = self.__path__.decode('UTF-8')
-+ self.__path__ = [path.decode('UTF-8')]
-
- if self._version is None:
- self._version = repository.get_version(self._namespace)
-diff --git a/tests/test_gi.py b/tests/test_gi.py
-index 3b77ff2d..2fa0423d 100644
---- a/tests/test_gi.py
-+++ b/tests/test_gi.py
-@@ -2813,8 +2813,10 @@ class TestKeywords(unittest.TestCase):
-
- class TestModule(unittest.TestCase):
- def test_path(self):
-- self.assertTrue(GIMarshallingTests.__path__.endswith('GIMarshallingTests-1.0.typelib'),
-- GIMarshallingTests.__path__)
-+ path = GIMarshallingTests.__path__
-+ assert isinstance(path, list)
-+ assert len(path) == 1
-+ assert path[0].endswith('GIMarshallingTests-1.0.typelib')
-
- def test_str(self):
- self.assertTrue("'GIMarshallingTests' from '" in str(GIMarshallingTests),
---
-2.18.0
-
-From 8adc8be0a2ab17e5215a4bc6f63a9ee391237596 Mon Sep 17 00:00:00 2001
-From: Christoph Reiter <reiter.christoph@gmail.com>
-Date: Sun, 11 Mar 2018 13:13:30 +0100
-Subject: [PATCH 3/4] _struct_dealloc: handle being called with an error set
-
-With Python 3.7 it gets called with an error set and tp_dealloc
-implementations need to handle that.
-Fix by saving and restoring the error.
----
- gi/pygi-struct.c | 12 +++++++++++-
- 1 file changed, 11 insertions(+), 1 deletion(-)
-
-diff --git a/gi/pygi-struct.c b/gi/pygi-struct.c
-index 4d5b5411..e2906e0a 100644
---- a/gi/pygi-struct.c
-+++ b/gi/pygi-struct.c
-@@ -61,7 +61,14 @@ out:
- static void
- _struct_dealloc (PyGIStruct *self)
- {
-- GIBaseInfo *info = _struct_get_info ( (PyObject *) self );
-+ GIBaseInfo *info;
-+ PyObject *error_type, *error_value, *error_traceback;
-+ gboolean have_error = !!PyErr_Occurred ();
-+
-+ if (have_error)
-+ PyErr_Fetch (&error_type, &error_value, &error_traceback);
-+
-+ info = _struct_get_info ( (PyObject *) self );
-
- if (info != NULL && g_struct_info_is_foreign ( (GIStructInfo *) info)) {
- pygi_struct_foreign_release (info, pyg_pointer_get_ptr (self));
-@@ -73,6 +80,9 @@ _struct_dealloc (PyGIStruct *self)
- g_base_info_unref (info);
- }
-
-+ if (have_error)
-+ PyErr_Restore (error_type, error_value, error_traceback);
-+
- Py_TYPE (self)->tp_free ((PyObject *)self);
- }
-
---
-2.18.0
-
-From 2299d46e7a57a74f734844ae28bfd536e89e5254 Mon Sep 17 00:00:00 2001
-From: Christoph Reiter <reiter.christoph@gmail.com>
-Date: Sat, 10 Mar 2018 20:03:33 +0100
-Subject: [PATCH 4/4] marshal-cleanup: save and restore exception around
- cleanup
-
-With Python 3.7 some Python API in the cleanup path clears exceptions
-which makes us return NULL in the end without an error set.
-
-Make if safe to call the cleanup functions with an error set by
-saving and restoring exceptions.
----
- gi/pygi-marshal-cleanup.c | 25 +++++++++++++++++++++++++
- 1 file changed, 25 insertions(+)
-
-diff --git a/gi/pygi-marshal-cleanup.c b/gi/pygi-marshal-cleanup.c
-index b4d04bc5..0e4eda3f 100644
---- a/gi/pygi-marshal-cleanup.c
-+++ b/gi/pygi-marshal-cleanup.c
-@@ -93,6 +93,11 @@ pygi_marshal_cleanup_args_from_py_marshal_success (PyGIInvokeState *state,
- PyGICallableCache *cache)
- {
- gssize i;
-+ PyObject *error_type, *error_value, *error_traceback;
-+ gboolean have_error = !!PyErr_Occurred ();
-+
-+ if (have_error)
-+ PyErr_Fetch (&error_type, &error_value, &error_traceback);
-
- for (i = 0; i < _pygi_callable_cache_args_len (cache); i++) {
- PyGIArgCache *arg_cache = _pygi_callable_cache_get_arg (cache, i);
-@@ -112,6 +117,9 @@ pygi_marshal_cleanup_args_from_py_marshal_success (PyGIInvokeState *state,
- state->args[i].arg_cleanup_data = NULL;
- }
- }
-+
-+ if (have_error)
-+ PyErr_Restore (error_type, error_value, error_traceback);
- }
-
- void
-@@ -119,6 +127,12 @@ pygi_marshal_cleanup_args_to_py_marshal_success (PyGIInvokeState *state,
- PyGICallableCache *cache)
- {
- GSList *cache_item;
-+ PyObject *error_type, *error_value, *error_traceback;
-+ gboolean have_error = !!PyErr_Occurred ();
-+
-+ if (have_error)
-+ PyErr_Fetch (&error_type, &error_value, &error_traceback);
-+
- /* clean up the return if available */
- if (cache->return_cache != NULL) {
- PyGIMarshalCleanupFunc cleanup_func = cache->return_cache->to_py_cleanup;
-@@ -153,6 +167,9 @@ pygi_marshal_cleanup_args_to_py_marshal_success (PyGIInvokeState *state,
-
- cache_item = cache_item->next;
- }
-+
-+ if (have_error)
-+ PyErr_Restore (error_type, error_value, error_traceback);
- }
-
- void
-@@ -161,6 +178,11 @@ pygi_marshal_cleanup_args_from_py_parameter_fail (PyGIInvokeState *state,
- gssize failed_arg_index)
- {
- gssize i;
-+ PyObject *error_type, *error_value, *error_traceback;
-+ gboolean have_error = !!PyErr_Occurred ();
-+
-+ if (have_error)
-+ PyErr_Fetch (&error_type, &error_value, &error_traceback);
-
- state->failed = TRUE;
-
-@@ -192,6 +214,9 @@ pygi_marshal_cleanup_args_from_py_parameter_fail (PyGIInvokeState *state,
- }
- state->args[i].arg_cleanup_data = NULL;
- }
-+
-+ if (have_error)
-+ PyErr_Restore (error_type, error_value, error_traceback);
- }
-
- void
---
-2.18.0
-
+++ /dev/null
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-GNOME2_LA_PUNT="yes"
-PYTHON_COMPAT=( python2_7 python3_{4,5,6} )
-
-inherit eutils gnome2 python-r1 virtualx
-
-DESCRIPTION="GLib's GObject library bindings for Python"
-HOMEPAGE="https://wiki.gnome.org/Projects/PyGObject"
-
-LICENSE="LGPL-2.1+"
-SLOT="3"
-KEYWORDS="alpha amd64 arm ~arm64 hppa ia64 ~mips ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
-IUSE="+cairo examples test +threads"
-
-REQUIRED_USE="
- ${PYTHON_REQUIRED_USE}
- test? ( cairo )
-"
-
-COMMON_DEPEND="${PYTHON_DEPS}
- >=dev-libs/glib-2.38:2
- >=dev-libs/gobject-introspection-1.46.0:=
- virtual/libffi:=
- cairo? (
- >=dev-python/pycairo-1.10.0[${PYTHON_USEDEP}]
- x11-libs/cairo )
-"
-DEPEND="${COMMON_DEPEND}
- virtual/pkgconfig
- cairo? ( x11-libs/cairo[glib] )
- test? (
- dev-libs/atk[introspection]
- media-fonts/font-cursor-misc
- media-fonts/font-misc-misc
- x11-libs/cairo[glib]
- x11-libs/gdk-pixbuf:2[introspection]
- x11-libs/gtk+:3[introspection]
- x11-libs/pango[introspection]
- python_targets_python2_7? ( dev-python/pyflakes[$(python_gen_usedep python2_7)] ) )
-"
-# gnome-base/gnome-common required by eautoreconf
-
-# We now disable introspection support in slot 2 per upstream recommendation
-# (see https://bugzilla.gnome.org/show_bug.cgi?id=642048#c9); however,
-# older versions of slot 2 installed their own site-packages/gi, and
-# slot 3 will collide with them.
-RDEPEND="${COMMON_DEPEND}
- !<dev-python/pygtk-2.13
- !<dev-python/pygobject-2.28.6-r50:2[introspection]
-"
-
-src_prepare() {
- # Test fail with xvfb but not X
- sed -e 's/^.*TEST_NAMES=compat_test_pygtk .*;/echo "Test disabled";/' \
- -i tests/Makefile.{am,in} || die
-
- gnome2_src_prepare
- python_copy_sources
-}
-
-src_configure() {
- # Hard-enable libffi support since both gobject-introspection and
- # glib-2.29.x rdepend on it anyway
- # docs disabled by upstream default since they are very out of date
- configuring() {
- gnome2_src_configure \
- $(use_enable cairo) \
- $(use_enable threads thread)
-
- # Pyflakes tests work only in python2, bug #516744
- if use test && [[ ${EPYTHON} != python2.7 ]]; then
- sed -e 's/if type pyflakes/if false/' \
- -i Makefile || die "sed failed"
- fi
- }
-
- python_foreach_impl run_in_build_dir configuring
-}
-
-src_compile() {
- python_foreach_impl run_in_build_dir gnome2_src_compile
-}
-
-src_test() {
- export GIO_USE_VFS="local" # prevents odd issues with deleting ${T}/.gvfs
- export GIO_USE_VOLUME_MONITOR="unix" # prevent udisks-related failures in chroots, bug #449484
- export SKIP_PEP8="yes"
-
- testing() {
- export XDG_CACHE_HOME="${T}/${EPYTHON}"
- run_in_build_dir virtx emake check
- unset XDG_CACHE_HOME
- }
- python_foreach_impl testing
- unset GIO_USE_VFS
-}
-
-src_install() {
- python_foreach_impl run_in_build_dir gnome2_src_install
-
- dodoc -r examples
-}
+++ /dev/null
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-GNOME2_LA_PUNT="yes"
-PYTHON_COMPAT=( python2_7 python3_{4,5,6,7} )
-
-inherit eutils gnome2 python-r1 virtualx
-
-DESCRIPTION="GLib's GObject library bindings for Python"
-HOMEPAGE="https://wiki.gnome.org/Projects/PyGObject"
-
-LICENSE="LGPL-2.1+"
-SLOT="3"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
-IUSE="+cairo examples test +threads"
-
-REQUIRED_USE="
- ${PYTHON_REQUIRED_USE}
- test? ( cairo )
-"
-
-COMMON_DEPEND="${PYTHON_DEPS}
- >=dev-libs/glib-2.38:2
- >=dev-libs/gobject-introspection-1.46.0:=
- virtual/libffi:=
- cairo? (
- >=dev-python/pycairo-1.10.0[${PYTHON_USEDEP}]
- x11-libs/cairo )
-"
-DEPEND="${COMMON_DEPEND}
- virtual/pkgconfig
- cairo? ( x11-libs/cairo[glib] )
- test? (
- dev-libs/atk[introspection]
- media-fonts/font-cursor-misc
- media-fonts/font-misc-misc
- x11-libs/cairo[glib]
- x11-libs/gdk-pixbuf:2[introspection,jpeg]
- x11-libs/gtk+:3[introspection]
- x11-libs/pango[introspection]
- python_targets_python2_7? ( dev-python/pyflakes[$(python_gen_usedep python2_7)] ) )
-"
-# gnome-base/gnome-common required by eautoreconf
-
-# We now disable introspection support in slot 2 per upstream recommendation
-# (see https://bugzilla.gnome.org/show_bug.cgi?id=642048#c9); however,
-# older versions of slot 2 installed their own site-packages/gi, and
-# slot 3 will collide with them.
-RDEPEND="${COMMON_DEPEND}
- !<dev-python/pygtk-2.13
- !<dev-python/pygobject-2.28.6-r50:2[introspection]
-"
-
-PATCHES=(
- "${FILESDIR}"/pygobject-3.24.1-py37.patch
-)
-
-src_prepare() {
- # Test fail with xvfb but not X
- sed -e 's/^.*TEST_NAMES=compat_test_pygtk .*;/echo "Test disabled";/' \
- -i tests/Makefile.{am,in} || die
-
- # FAIL: test_cairo_font_options (test_cairo.TestPango)
- # AssertionError: <type 'cairo.SubpixelOrder'> != <type 'int'>
- sed -e 's/^.*type(font_opts.get_subpixel_order()), int.*/#/' \
- -i tests/test_cairo.py || die
-
- gnome2_src_prepare
- python_copy_sources
-}
-
-src_configure() {
- # Hard-enable libffi support since both gobject-introspection and
- # glib-2.29.x rdepend on it anyway
- # docs disabled by upstream default since they are very out of date
- configuring() {
- gnome2_src_configure \
- $(use_enable cairo) \
- $(use_enable threads thread)
-
- # Pyflakes tests work only in python2, bug #516744
- if use test && [[ ${EPYTHON} != python2.7 ]]; then
- sed -e 's/if type pyflakes/if false/' \
- -i Makefile || die "sed failed"
- fi
- }
-
- python_foreach_impl run_in_build_dir configuring
-}
-
-src_compile() {
- python_foreach_impl run_in_build_dir gnome2_src_compile
-}
-
-src_test() {
- local -x GIO_USE_VFS="local" # prevents odd issues with deleting ${T}/.gvfs
- local -x GIO_USE_VOLUME_MONITOR="unix" # prevent udisks-related failures in chroots, bug #449484
- local -x SKIP_PEP8="yes"
-
- testing() {
- local -x XDG_CACHE_HOME="${T}/${EPYTHON}"
- emake -C "${BUILD_DIR}" check
- }
- virtx python_foreach_impl testing
-}
-
-src_install() {
- python_foreach_impl run_in_build_dir gnome2_src_install
-
- dodoc -r examples
-}
+++ /dev/null
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-GNOME2_LA_PUNT="yes"
-PYTHON_COMPAT=( python2_7 python3_{4,5,6} )
-
-inherit eutils gnome2 python-r1 virtualx
-
-DESCRIPTION="GLib's GObject library bindings for Python"
-HOMEPAGE="https://wiki.gnome.org/Projects/PyGObject"
-
-LICENSE="LGPL-2.1+"
-SLOT="3"
-KEYWORDS="alpha amd64 arm ~arm64 ~hppa ia64 ~mips ppc ppc64 s390 ~sh ~sparc x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
-IUSE="+cairo examples test +threads"
-
-REQUIRED_USE="
- ${PYTHON_REQUIRED_USE}
- test? ( cairo )
-"
-
-COMMON_DEPEND="${PYTHON_DEPS}
- >=dev-libs/glib-2.38:2
- >=dev-libs/gobject-introspection-1.46.0:=
- virtual/libffi:=
- cairo? (
- >=dev-python/pycairo-1.10.0[${PYTHON_USEDEP}]
- x11-libs/cairo )
-"
-DEPEND="${COMMON_DEPEND}
- virtual/pkgconfig
- cairo? ( x11-libs/cairo[glib] )
- test? (
- dev-libs/atk[introspection]
- media-fonts/font-cursor-misc
- media-fonts/font-misc-misc
- x11-libs/cairo[glib]
- x11-libs/gdk-pixbuf:2[introspection,jpeg]
- x11-libs/gtk+:3[introspection]
- x11-libs/pango[introspection]
- python_targets_python2_7? ( dev-python/pyflakes[$(python_gen_usedep python2_7)] ) )
-"
-# gnome-base/gnome-common required by eautoreconf
-
-# We now disable introspection support in slot 2 per upstream recommendation
-# (see https://bugzilla.gnome.org/show_bug.cgi?id=642048#c9); however,
-# older versions of slot 2 installed their own site-packages/gi, and
-# slot 3 will collide with them.
-RDEPEND="${COMMON_DEPEND}
- !<dev-python/pygtk-2.13
- !<dev-python/pygobject-2.28.6-r50:2[introspection]
-"
-
-src_prepare() {
- # Test fail with xvfb but not X
- sed -e 's/^.*TEST_NAMES=compat_test_pygtk .*;/echo "Test disabled";/' \
- -i tests/Makefile.{am,in} || die
-
- # FAIL: test_cairo_font_options (test_cairo.TestPango)
- # AssertionError: <type 'cairo.SubpixelOrder'> != <type 'int'>
- sed -e 's/^.*type(font_opts.get_subpixel_order()), int.*/#/' \
- -i tests/test_cairo.py || die
-
- gnome2_src_prepare
- python_copy_sources
-}
-
-src_configure() {
- # Hard-enable libffi support since both gobject-introspection and
- # glib-2.29.x rdepend on it anyway
- # docs disabled by upstream default since they are very out of date
- configuring() {
- gnome2_src_configure \
- $(use_enable cairo) \
- $(use_enable threads thread)
-
- # Pyflakes tests work only in python2, bug #516744
- if use test && [[ ${EPYTHON} != python2.7 ]]; then
- sed -e 's/if type pyflakes/if false/' \
- -i Makefile || die "sed failed"
- fi
- }
-
- python_foreach_impl run_in_build_dir configuring
-}
-
-src_compile() {
- python_foreach_impl run_in_build_dir gnome2_src_compile
-}
-
-src_test() {
- local -x GIO_USE_VFS="local" # prevents odd issues with deleting ${T}/.gvfs
- local -x GIO_USE_VOLUME_MONITOR="unix" # prevent udisks-related failures in chroots, bug #449484
- local -x SKIP_PEP8="yes"
-
- testing() {
- local -x XDG_CACHE_HOME="${T}/${EPYTHON}"
- emake -C "${BUILD_DIR}" check
- }
- virtx python_foreach_impl testing
-}
-
-src_install() {
- python_foreach_impl run_in_build_dir gnome2_src_install
-
- dodoc -r examples
-}