summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /dev-python/pygobject
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'dev-python/pygobject')
-rw-r--r--dev-python/pygobject/Manifest5
-rw-r--r--dev-python/pygobject/files/pygobject-2.28.3-fix-codegen-location.patch64
-rw-r--r--dev-python/pygobject/files/pygobject-2.28.3-make_check.patch76
-rw-r--r--dev-python/pygobject/files/pygobject-2.28.3-support_multiple_python_versions.patch103
-rw-r--r--dev-python/pygobject/files/pygobject-2.28.6-disable-failing-tests.patch98
-rw-r--r--dev-python/pygobject/files/pygobject-2.28.6-gio-types-2.32.patch50
-rw-r--r--dev-python/pygobject/files/pygobject-2.28.6-glib-2.36-class_init.patch315
-rw-r--r--dev-python/pygobject/files/pygobject-2.28.6-set_qdata.patch28
-rw-r--r--dev-python/pygobject/files/pygobject-2.28.6-tests-no-introspection.patch33
-rw-r--r--dev-python/pygobject/files/pygobject-3.16.1-unittest.patch15
-rw-r--r--dev-python/pygobject/metadata.xml6
-rw-r--r--dev-python/pygobject/pygobject-2.28.6-r55.ebuild132
-rw-r--r--dev-python/pygobject/pygobject-3.12.2.ebuild99
-rw-r--r--dev-python/pygobject/pygobject-3.14.0.ebuild99
-rw-r--r--dev-python/pygobject/pygobject-3.16.1.ebuild103
-rw-r--r--dev-python/pygobject/pygobject-3.16.2.ebuild115
16 files changed, 1341 insertions, 0 deletions
diff --git a/dev-python/pygobject/Manifest b/dev-python/pygobject/Manifest
new file mode 100644
index 000000000000..f1d90b15cefb
--- /dev/null
+++ b/dev-python/pygobject/Manifest
@@ -0,0 +1,5 @@
+DIST pygobject-2.28.6.tar.xz 747248 SHA256 fb8a1d4f665130a125011659bd347c7339c944232163dbb9a34fd0686577adb8 SHA512 37544ea2377258758169b25a2969d5ee1c9ffb9b6e63e05bc7a0471a49ac9169c51ec587d4489172c7d256f53df878a81c1992a08059aa7e43dbbb69f799545c WHIRLPOOL 402f764d6ca73f238784738a1e09832858fd95af5a633e825412e9e6a21e89ab6b2090d3995902ed404fc4fde445cf970c76fcd93f8f64cf9def742452776c00
+DIST pygobject-3.12.2.tar.xz 702176 SHA256 7e7a3d349acf5bb4b68f8539a42e67958840a67cd4f0341ee9aa49189af2a522 SHA512 81ea6904b6a6b405593394e3a4915cd8ccbacafa4820a3f38cce1ebd0a2de3cd4cad2feadec9ae8910ac3fa2b63fd66a8cb264f74d04631f5d4c3f45c29b5b47 WHIRLPOOL ca2f3cd2018b9923d1f758750e489cad6e658a4a621db5c8fd056d2f721d59630d4a4c6f01f932997b336b391b7e54dcd2b7068dd863bc0c01ad93737abbc386
+DIST pygobject-3.14.0.tar.xz 720128 SHA256 779effa93f4b59cdb72f4ab0128fb3fd82900bf686193b570fd3a8ce63392d54 SHA512 f6e1e5826a6afe81eb0a37bb554b433769622f8a0d17ac9836498425d70c4583cf8157027a555c21fd7a0d6686863c7803a350550665a375a906fccdabca2090 WHIRLPOOL 0a665504b792691238b89d2704ce1cc024f89ddf96fd6b626f1f5b05dbccfd633e61f9b45b0ca09873029c576b9804edcfa77e1bceae9e995be44a3fd60852ca
+DIST pygobject-3.16.1.tar.xz 725220 SHA256 7d96dad050f15ec1688617b749bb485811842de46a22d31f9396023e8eaa1ec3 SHA512 f32db7620b6714fdc780ec28c282566c0e662648a53f37b2466cbed609d1cbbbf998e30fd42d24ae1e5c0334656b04276dd3a8bf210f9b93f2bfb66f305f7a72 WHIRLPOOL 7f3257f1743510d1c602d797bce4722f6f987676dee4186b7026277f94412663bef0b1e70519030e890ad330eb2cb2cdb7ac7bf8060d9c4a0aca019bd7d4f1a2
+DIST pygobject-3.16.2.tar.xz 725544 SHA256 de620e00fe7ecb788aa2dc0d664e41f71b8e718e728168e8d982cf193a9e7e64 SHA512 9a742db4b05fdf0cf2b7bb9139d5f43b4a4e25b4652e8bd3aa8d6f64b03b745b57c047dfc95335045126d0dd4c797989d95d6a1bdb4752cab8e04146470653bf WHIRLPOOL d39b5f23ca33f4331582fd8229a348db679b1db1b9f5daff2639a03ec70f31bfcf2f7ac7a67cc3d54a2444faa228b878fdd9556110af10c3246087a634ba88e3
diff --git a/dev-python/pygobject/files/pygobject-2.28.3-fix-codegen-location.patch b/dev-python/pygobject/files/pygobject-2.28.3-fix-codegen-location.patch
new file mode 100644
index 000000000000..44440a526b81
--- /dev/null
+++ b/dev-python/pygobject/files/pygobject-2.28.3-fix-codegen-location.patch
@@ -0,0 +1,64 @@
+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
+
diff --git a/dev-python/pygobject/files/pygobject-2.28.3-make_check.patch b/dev-python/pygobject/files/pygobject-2.28.3-make_check.patch
new file mode 100644
index 000000000000..45c04b96780e
--- /dev/null
+++ b/dev-python/pygobject/files/pygobject-2.28.3-make_check.patch
@@ -0,0 +1,76 @@
+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
+
diff --git a/dev-python/pygobject/files/pygobject-2.28.3-support_multiple_python_versions.patch b/dev-python/pygobject/files/pygobject-2.28.3-support_multiple_python_versions.patch
new file mode 100644
index 000000000000..65d881a43d2a
--- /dev/null
+++ b/dev-python/pygobject/files/pygobject-2.28.3-support_multiple_python_versions.patch
@@ -0,0 +1,103 @@
+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
+
diff --git a/dev-python/pygobject/files/pygobject-2.28.6-disable-failing-tests.patch b/dev-python/pygobject/files/pygobject-2.28.6-disable-failing-tests.patch
new file mode 100644
index 000000000000..f9d396dc4b56
--- /dev/null
+++ b/dev-python/pygobject/files/pygobject-2.28.6-disable-failing-tests.patch
@@ -0,0 +1,98 @@
+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
+
diff --git a/dev-python/pygobject/files/pygobject-2.28.6-gio-types-2.32.patch b/dev-python/pygobject/files/pygobject-2.28.6-gio-types-2.32.patch
new file mode 100644
index 000000000000..fa0adf54ad04
--- /dev/null
+++ b/dev-python/pygobject/files/pygobject-2.28.6-gio-types-2.32.patch
@@ -0,0 +1,50 @@
+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
+
diff --git a/dev-python/pygobject/files/pygobject-2.28.6-glib-2.36-class_init.patch b/dev-python/pygobject/files/pygobject-2.28.6-glib-2.36-class_init.patch
new file mode 100644
index 000000000000..b2f9b147f847
--- /dev/null
+++ b/dev-python/pygobject/files/pygobject-2.28.6-glib-2.36-class_init.patch
@@ -0,0 +1,315 @@
+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
+
diff --git a/dev-python/pygobject/files/pygobject-2.28.6-set_qdata.patch b/dev-python/pygobject/files/pygobject-2.28.6-set_qdata.patch
new file mode 100644
index 000000000000..55376b59d829
--- /dev/null
+++ b/dev-python/pygobject/files/pygobject-2.28.6-set_qdata.patch
@@ -0,0 +1,28 @@
+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
+
diff --git a/dev-python/pygobject/files/pygobject-2.28.6-tests-no-introspection.patch b/dev-python/pygobject/files/pygobject-2.28.6-tests-no-introspection.patch
new file mode 100644
index 000000000000..d7e0c68e0dca
--- /dev/null
+++ b/dev-python/pygobject/files/pygobject-2.28.6-tests-no-introspection.patch
@@ -0,0 +1,33 @@
+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
+
diff --git a/dev-python/pygobject/files/pygobject-3.16.1-unittest.patch b/dev-python/pygobject/files/pygobject-3.16.1-unittest.patch
new file mode 100644
index 000000000000..5ee15b1dd1bd
--- /dev/null
+++ b/dev-python/pygobject/files/pygobject-3.16.1-unittest.patch
@@ -0,0 +1,15 @@
+Comment out unittest that ought to work but for some reason does not want to.
+
+--- a/tests/test_glib.py 2015-05-10 14:01:45.873164005 +0200
++++ b/tests/test_glib.py 2015-03-05 09:32:55.000000000 +0100
+@@ -38,8 +38,8 @@
+ def test_xdg_dirs(self):
+ d = GLib.get_user_data_dir()
+ self.assertTrue('/' in d, d)
+- d = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_MUSIC)
+- self.assertTrue('/' in d, d)
++ #d = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_MUSIC)
++ #self.assertTrue('/' in d, d)
+ with warnings.catch_warnings():
+ warnings.simplefilter('ignore', PyGIDeprecationWarning)
+
diff --git a/dev-python/pygobject/metadata.xml b/dev-python/pygobject/metadata.xml
new file mode 100644
index 000000000000..9b1bc26a9df2
--- /dev/null
+++ b/dev-python/pygobject/metadata.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>gnome</herd>
+<herd>python</herd>
+</pkgmetadata>
diff --git a/dev-python/pygobject/pygobject-2.28.6-r55.ebuild b/dev-python/pygobject/pygobject-2.28.6-r55.ebuild
new file mode 100644
index 000000000000..01c5f60590e7
--- /dev/null
+++ b/dev-python/pygobject/pygobject-2.28.6-r55.ebuild
@@ -0,0 +1,132 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+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 hppa ia64 ~mips ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
+IUSE="examples libffi test"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+COMMON_DEPEND=">=dev-libs/glib-2.24.0:2
+ dev-lang/python-exec:2
+ libffi? ( virtual/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
+}
diff --git a/dev-python/pygobject/pygobject-3.12.2.ebuild b/dev-python/pygobject/pygobject-3.12.2.ebuild
new file mode 100644
index 000000000000..67f2b1b8954a
--- /dev/null
+++ b/dev-python/pygobject/pygobject-3.12.2.ebuild
@@ -0,0 +1,99 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+GCONF_DEBUG="no"
+GNOME2_LA_PUNT="yes"
+PYTHON_COMPAT=( python{2_7,3_3,3_4} )
+
+inherit 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 hppa ia64 ~mips ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~x86-interix ~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="
+ >=dev-libs/glib-2.38:2
+ >=dev-libs/gobject-introspection-1.38
+ virtual/libffi:=
+ cairo? (
+ >=dev-python/pycairo-1.10.0[${PYTHON_USEDEP}]
+ x11-libs/cairo )
+ ${PYTHON_DEPS}
+"
+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] )
+"
+# 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() {
+ 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
+ python_foreach_impl run_in_build_dir \
+ gnome2_src_configure \
+ $(use_enable cairo) \
+ $(use_enable threads thread)
+}
+
+src_compile() {
+ python_foreach_impl run_in_build_dir gnome2_src_compile
+}
+
+src_test() {
+ unset DBUS_SESSION_BUS_ADDRESS
+ 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
+
+ testing() {
+ export XDG_CACHE_HOME="${T}/${EPYTHON}"
+ run_in_build_dir Xemake check
+ unset XDG_CACHE_HOME
+ }
+ python_foreach_impl testing
+ unset GIO_USE_VFS
+}
+
+src_install() {
+ DOCS="AUTHORS ChangeLog* NEWS README"
+
+ python_foreach_impl run_in_build_dir gnome2_src_install
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}
+ doins -r examples
+ fi
+}
diff --git a/dev-python/pygobject/pygobject-3.14.0.ebuild b/dev-python/pygobject/pygobject-3.14.0.ebuild
new file mode 100644
index 000000000000..2cc8d7068903
--- /dev/null
+++ b/dev-python/pygobject/pygobject-3.14.0.ebuild
@@ -0,0 +1,99 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+GCONF_DEBUG="no"
+GNOME2_LA_PUNT="yes"
+PYTHON_COMPAT=( python{2_7,3_3,3_4} )
+
+inherit 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 hppa ia64 ~mips ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~x86-interix ~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="
+ >=dev-libs/glib-2.38:2
+ >=dev-libs/gobject-introspection-1.39
+ virtual/libffi:=
+ cairo? (
+ >=dev-python/pycairo-1.10.0[${PYTHON_USEDEP}]
+ x11-libs/cairo )
+ ${PYTHON_DEPS}
+"
+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] )
+"
+# 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() {
+ 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
+ python_foreach_impl run_in_build_dir \
+ gnome2_src_configure \
+ $(use_enable cairo) \
+ $(use_enable threads thread)
+}
+
+src_compile() {
+ python_foreach_impl run_in_build_dir gnome2_src_compile
+}
+
+src_test() {
+ unset DBUS_SESSION_BUS_ADDRESS
+ 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
+
+ testing() {
+ export XDG_CACHE_HOME="${T}/${EPYTHON}"
+ run_in_build_dir Xemake check
+ unset XDG_CACHE_HOME
+ }
+ python_foreach_impl testing
+ unset GIO_USE_VFS
+}
+
+src_install() {
+ DOCS="AUTHORS ChangeLog* NEWS README"
+
+ python_foreach_impl run_in_build_dir gnome2_src_install
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}
+ doins -r examples
+ fi
+}
diff --git a/dev-python/pygobject/pygobject-3.16.1.ebuild b/dev-python/pygobject/pygobject-3.16.1.ebuild
new file mode 100644
index 000000000000..9d8907c58d3b
--- /dev/null
+++ b/dev-python/pygobject/pygobject-3.16.1.ebuild
@@ -0,0 +1,103 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+GCONF_DEBUG="no"
+GNOME2_LA_PUNT="yes"
+PYTHON_COMPAT=( python{2_7,3_3,3_4} )
+
+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 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~x86-interix ~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="
+ >=dev-libs/glib-2.38:2
+ >=dev-libs/gobject-introspection-1.39
+ virtual/libffi:=
+ cairo? (
+ >=dev-python/pycairo-1.10.0[${PYTHON_USEDEP}]
+ x11-libs/cairo )
+ ${PYTHON_DEPS}
+"
+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] )
+"
+# 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() {
+ # Comment out broken unittest
+ epatch "${FILESDIR}"/${PN}-3.16.1-unittest.patch
+
+ 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
+ python_foreach_impl run_in_build_dir \
+ gnome2_src_configure \
+ $(use_enable cairo) \
+ $(use_enable threads thread)
+}
+
+src_compile() {
+ python_foreach_impl run_in_build_dir gnome2_src_compile
+}
+
+src_test() {
+ unset DBUS_SESSION_BUS_ADDRESS
+ 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 Xemake check
+ unset XDG_CACHE_HOME
+ }
+ python_foreach_impl testing
+ unset GIO_USE_VFS
+}
+
+src_install() {
+ DOCS="AUTHORS ChangeLog* NEWS README"
+
+ python_foreach_impl run_in_build_dir gnome2_src_install
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}
+ doins -r examples
+ fi
+}
diff --git a/dev-python/pygobject/pygobject-3.16.2.ebuild b/dev-python/pygobject/pygobject-3.16.2.ebuild
new file mode 100644
index 000000000000..e5610c23cd41
--- /dev/null
+++ b/dev-python/pygobject/pygobject-3.16.2.ebuild
@@ -0,0 +1,115 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+GCONF_DEBUG="no"
+GNOME2_LA_PUNT="yes"
+PYTHON_COMPAT=( python{2_7,3_3,3_4} )
+
+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 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~x86-interix ~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.39:=
+ 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]
+ !sparc? ( python_targets_python2_7? ( dev-python/pyflakes[$(python_gen_usedep python2_7)] ) ) )
+"
+# FIXME: remove "!sparc?" automagic nonsense above when pyflakes is
+# keyworded on sparc, bug #553380
+
+# 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() {
+ # Comment out broken unittest
+ epatch "${FILESDIR}"/${PN}-3.16.1-unittest.patch
+
+ 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() {
+ unset DBUS_SESSION_BUS_ADDRESS
+ 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 Xemake check
+ unset XDG_CACHE_HOME
+ }
+ python_foreach_impl testing
+ unset GIO_USE_VFS
+}
+
+src_install() {
+ DOCS="AUTHORS ChangeLog* NEWS README"
+
+ python_foreach_impl run_in_build_dir gnome2_src_install
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}
+ doins -r examples
+ fi
+}