diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..af6aa36
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/pygobject-3.40.1.tar.xz
diff --git a/.pygobject3.metadata b/.pygobject3.metadata
new file mode 100644
index 0000000..934a598
--- /dev/null
+++ b/.pygobject3.metadata
@@ -0,0 +1 @@
+2c12bc5732a38b055bcc2bcdeefdc8663380f3c9 SOURCES/pygobject-3.40.1.tar.xz
diff --git a/SOURCES/0001-IntrospectionModule-handle-two-threads-loading-type-.patch b/SOURCES/0001-IntrospectionModule-handle-two-threads-loading-type-.patch
new file mode 100644
index 0000000..a38c813
--- /dev/null
+++ b/SOURCES/0001-IntrospectionModule-handle-two-threads-loading-type-.patch
@@ -0,0 +1,290 @@
+From 1212d1cd3d4b47294770408a7abd18bc4c578a64 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Wed, 10 Jun 2020 18:04:07 -0400
+Subject: [PATCH] IntrospectionModule: handle two threads loading type at same
+ time
+
+If two threads are trying to load a type at exactly the same time,
+it's possible for two wrappers to get generated for the type.
+One thread will end up with the wrapper that's not blessed as the
+"real" one and future calls will fail.  The blessed wrapper will
+be incomplete, and so future calls from it will fail as well.
+
+This commit adds a lock to ensure the two threads don't stomp
+on each others toes.
+---
+ gi/module.py | 110 +++++++++++++++++++++++++++------------------------
+ 1 file changed, 58 insertions(+), 52 deletions(-)
+
+diff --git a/gi/module.py b/gi/module.py
+index f9e26bc2..93b8e6a3 100644
+--- a/gi/module.py
++++ b/gi/module.py
+@@ -1,53 +1,54 @@
+ # -*- Mode: Python; py-indent-offset: 4 -*-
+ # vim: tabstop=4 shiftwidth=4 expandtab
+ #
+ # Copyright (C) 2007-2009 Johan Dahlin <johan@gnome.org>
+ #
+ #   module.py: dynamic module for introspected libraries.
+ #
+ # This library is free software; you can redistribute it and/or
+ # modify it under the terms of the GNU Lesser General Public
+ # License as published by the Free Software Foundation; either
+ # version 2.1 of the License, or (at your option) any later version.
+ #
+ # This library is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this library; if not, write to the Free Software
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ # USA
+ 
+ import importlib
++from threading import Lock
+ 
+ import gi
+ 
+ from ._gi import \
+     Repository, \
+     FunctionInfo, \
+     RegisteredTypeInfo, \
+     EnumInfo, \
+     ObjectInfo, \
+     InterfaceInfo, \
+     ConstantInfo, \
+     StructInfo, \
+     UnionInfo, \
+     CallbackInfo, \
+     Struct, \
+     Boxed, \
+     CCallback, \
+     enum_add, \
+     enum_register_new_gtype_and_add, \
+     flags_add, \
+     flags_register_new_gtype_and_add, \
+     GInterface
+ from .types import \
+     GObjectMeta, \
+     StructMeta
+ 
+ from ._constants import \
+     TYPE_NONE, \
+     TYPE_BOXED, \
+     TYPE_POINTER, \
+@@ -90,152 +91,157 @@ def get_interfaces_for_object(object_info):
+         namespace = interface_info.get_namespace()
+         name = interface_info.get_name()
+ 
+         module = importlib.import_module('gi.repository.' + namespace)
+         interfaces.append(getattr(module, name))
+     return interfaces
+ 
+ 
+ class IntrospectionModule(object):
+     """An object which wraps an introspection typelib.
+ 
+     This wrapping creates a python module like representation of the typelib
+     using gi repository as a foundation. Accessing attributes of the module
+     will dynamically pull them in and create wrappers for the members.
+     These members are then cached on this introspection module.
+     """
+     def __init__(self, namespace, version=None):
+         """Might raise gi._gi.RepositoryError"""
+ 
+         repository.require(namespace, version)
+         self._namespace = namespace
+         self._version = version
+         self.__name__ = 'gi.repository.' + namespace
+ 
+         path = repository.get_typelib_path(self._namespace)
+         self.__path__ = [path]
+ 
+         if self._version is None:
+             self._version = repository.get_version(self._namespace)
+ 
++        self._lock = Lock()
++
+     def __getattr__(self, name):
+         info = repository.find_by_name(self._namespace, name)
+         if not info:
+             raise AttributeError("%r object has no attribute %r" % (
+                                  self.__name__, name))
+ 
+         if isinstance(info, EnumInfo):
+             g_type = info.get_g_type()
+-            wrapper = g_type.pytype
+ 
+-            if wrapper is None:
+-                if info.is_flags():
+-                    if g_type.is_a(TYPE_FLAGS):
+-                        wrapper = flags_add(g_type)
+-                    else:
+-                        assert g_type == TYPE_NONE
+-                        wrapper = flags_register_new_gtype_and_add(info)
+-                else:
+-                    if g_type.is_a(TYPE_ENUM):
+-                        wrapper = enum_add(g_type)
++            with self._lock:
++                wrapper = g_type.pytype
++
++                if wrapper is None:
++                    if info.is_flags():
++                        if g_type.is_a(TYPE_FLAGS):
++                            wrapper = flags_add(g_type)
++                        else:
++                            assert g_type == TYPE_NONE
++                            wrapper = flags_register_new_gtype_and_add(info)
+                     else:
+-                        assert g_type == TYPE_NONE
+-                        wrapper = enum_register_new_gtype_and_add(info)
+-
+-                wrapper.__info__ = info
+-                wrapper.__module__ = 'gi.repository.' + info.get_namespace()
+-
+-                # Don't use upper() here to avoid locale specific
+-                # identifier conversion (e. g. in Turkish 'i'.upper() == 'i')
+-                # see https://bugzilla.gnome.org/show_bug.cgi?id=649165
+-                ascii_upper_trans = ''.maketrans(
+-                    'abcdefgjhijklmnopqrstuvwxyz',
+-                    'ABCDEFGJHIJKLMNOPQRSTUVWXYZ')
+-                for value_info in info.get_values():
+-                    value_name = value_info.get_name_unescaped().translate(ascii_upper_trans)
+-                    setattr(wrapper, value_name, wrapper(value_info.get_value()))
+-                for method_info in info.get_methods():
+-                    setattr(wrapper, method_info.__name__, method_info)
+-
+-            if g_type != TYPE_NONE:
+-                g_type.pytype = wrapper
++                        if g_type.is_a(TYPE_ENUM):
++                            wrapper = enum_add(g_type)
++                        else:
++                            assert g_type == TYPE_NONE
++                            wrapper = enum_register_new_gtype_and_add(info)
++
++                    wrapper.__info__ = info
++                    wrapper.__module__ = 'gi.repository.' + info.get_namespace()
++
++                    # Don't use upper() here to avoid locale specific
++                    # identifier conversion (e. g. in Turkish 'i'.upper() == 'i')
++                    # see https://bugzilla.gnome.org/show_bug.cgi?id=649165
++                    ascii_upper_trans = ''.maketrans(
++                        'abcdefgjhijklmnopqrstuvwxyz',
++                        'ABCDEFGJHIJKLMNOPQRSTUVWXYZ')
++                    for value_info in info.get_values():
++                        value_name = value_info.get_name_unescaped().translate(ascii_upper_trans)
++                        setattr(wrapper, value_name, wrapper(value_info.get_value()))
++                    for method_info in info.get_methods():
++                        setattr(wrapper, method_info.__name__, method_info)
++
++                if g_type != TYPE_NONE:
++                    g_type.pytype = wrapper
+ 
+         elif isinstance(info, RegisteredTypeInfo):
+             g_type = info.get_g_type()
+ 
+             # Create a wrapper.
+             if isinstance(info, ObjectInfo):
+                 parent = get_parent_for_object(info)
+                 interfaces = tuple(interface for interface in get_interfaces_for_object(info)
+                                    if not issubclass(parent, interface))
+                 bases = (parent,) + interfaces
+                 metaclass = GObjectMeta
+             elif isinstance(info, CallbackInfo):
+                 bases = (CCallback,)
+                 metaclass = GObjectMeta
+             elif isinstance(info, InterfaceInfo):
+                 bases = (GInterface,)
+                 metaclass = GObjectMeta
+             elif isinstance(info, (StructInfo, UnionInfo)):
+                 if g_type.is_a(TYPE_BOXED):
+                     bases = (Boxed,)
+                 elif (g_type.is_a(TYPE_POINTER) or
+                       g_type == TYPE_NONE or
+                       g_type.fundamental == g_type):
+                     bases = (Struct,)
+                 else:
+                     raise TypeError("unable to create a wrapper for %s.%s" % (info.get_namespace(), info.get_name()))
+                 metaclass = StructMeta
+             else:
+                 raise NotImplementedError(info)
+ 
+-            # Check if there is already a Python wrapper that is not a parent class
+-            # of the wrapper being created. If it is a parent, it is ok to clobber
+-            # g_type.pytype with a new child class wrapper of the existing parent.
+-            # Note that the return here never occurs under normal circumstances due
+-            # to caching on the __dict__ itself.
+-            if g_type != TYPE_NONE:
+-                type_ = g_type.pytype
+-                if type_ is not None and type_ not in bases:
+-                    self.__dict__[name] = type_
+-                    return type_
+-
+-            dict_ = {
+-                '__info__': info,
+-                '__module__': 'gi.repository.' + self._namespace,
+-                '__gtype__': g_type
+-            }
+-            wrapper = metaclass(name, bases, dict_)
+-
+-            # Register the new Python wrapper.
+-            if g_type != TYPE_NONE:
+-                g_type.pytype = wrapper
++            with self._lock:
++                # Check if there is already a Python wrapper that is not a parent class
++                # of the wrapper being created. If it is a parent, it is ok to clobber
++                # g_type.pytype with a new child class wrapper of the existing parent.
++                # Note that the return here never occurs under normal circumstances due
++                # to caching on the __dict__ itself.
++                if g_type != TYPE_NONE:
++                    type_ = g_type.pytype
++                    if type_ is not None and type_ not in bases:
++                        self.__dict__[name] = type_
++                        return type_
++
++                dict_ = {
++                    '__info__': info,
++                    '__module__': 'gi.repository.' + self._namespace,
++                    '__gtype__': g_type
++                }
++                wrapper = metaclass(name, bases, dict_)
++
++                # Register the new Python wrapper.
++                if g_type != TYPE_NONE:
++                    g_type.pytype = wrapper
+ 
+         elif isinstance(info, FunctionInfo):
+             wrapper = info
+         elif isinstance(info, ConstantInfo):
+             wrapper = info.get_value()
+         else:
+             raise NotImplementedError(info)
+ 
+         # Cache the newly created wrapper which will then be
+         # available directly on this introspection module instead of being
+         # lazily constructed through the __getattr__ we are currently in.
+         self.__dict__[name] = wrapper
+         return wrapper
+ 
+     def __repr__(self):
+         path = repository.get_typelib_path(self._namespace)
+         return "<IntrospectionModule %r from %r>" % (self._namespace, path)
+ 
+     def __dir__(self):
+         # Python's default dir() is just dir(self.__class__) + self.__dict__.keys()
+         result = set(dir(self.__class__))
+         result.update(self.__dict__.keys())
+ 
+         # update *set* because some repository attributes have already been
+         # wrapped by __getattr__() and included in self.__dict__; but skip
+         # Callback types, as these are not real objects which we can actually
+         # get
+         namespace_infos = repository.get_infos(self._namespace)
+         result.update(info.get_name() for info in namespace_infos if
+                       not isinstance(info, CallbackInfo))
+-- 
+2.31.1
+
diff --git a/SPECS/pygobject3.spec b/SPECS/pygobject3.spec
new file mode 100644
index 0000000..8b6888a
--- /dev/null
+++ b/SPECS/pygobject3.spec
@@ -0,0 +1,599 @@
+%define glib2_version                  2.56.0
+%define gobject_introspection_version  1.56.0
+%define pycairo_version                1.16.0
+%define python2_version                2.7
+%define python3_version                3.4
+
+Name:           pygobject3
+Version:        3.40.1
+Release:        5%{?dist}
+Summary:        Python bindings for GObject Introspection
+
+License:        LGPLv2+ and MIT
+URL:            https://wiki.gnome.org/Projects/PyGObject
+Source0:        https://download.gnome.org/sources/pygobject/3.40/pygobject-%{version}.tar.xz
+
+BuildRequires:  cairo-gobject-devel
+BuildRequires:  glib2-devel >= %{glib2_version}
+BuildRequires:  gobject-introspection-devel >= %{gobject_introspection_version}
+BuildRequires:  meson
+BuildRequires:  python3-devel >= %{python3_version}
+BuildRequires:  python3-cairo-devel >= %{pycairo_version}
+BuildRequires:  python3-setuptools
+
+Patch10001:     0001-IntrospectionModule-handle-two-threads-loading-type-.patch
+
+%description
+The %{name} package provides a convenient wrapper for the GObject library
+for use in Python programs.
+
+%package     -n python3-gobject
+Summary:        Python 3 bindings for GObject Introspection
+Requires:       python3-gobject-base%{?_isa} = %{version}-%{release}
+# The cairo override module depends on this
+Requires:       python3-cairo%{?_isa} >= %{pycairo_version}
+
+%description -n python3-gobject
+The python3-gobject package provides a convenient wrapper for the GObject 
+library and and other libraries that are compatible with GObject Introspection, 
+for use in Python 3 programs.
+
+%package     -n python3-gobject-base
+Summary:        Python 3 bindings for GObject Introspection base package
+Requires:       gobject-introspection%{?_isa} >= %{gobject_introspection_version}
+
+%description -n python3-gobject-base
+This package provides the non-cairo specific bits of the GObject Introspection
+library.
+
+%package     -n python3-gobject-devel
+Summary:        Development files for embedding PyGObject introspection support
+Requires:       python3-gobject%{?_isa} = %{version}-%{release}
+Requires:       gobject-introspection-devel%{?_isa}
+# Renamed in F31
+Obsoletes:      pygobject3-devel < 3.34.0-2
+Provides:       pygobject3-devel = %{version}-%{release}
+
+%description -n python3-gobject-devel
+This package contains files required to embed PyGObject
+
+%prep
+%autosetup -n pygobject-%{version} -p1
+
+%build
+%meson -Dpython=%{__python3}
+%meson_build
+
+%install
+%meson_install
+
+%files -n python3-gobject
+%{python3_sitearch}/gi/_gi_cairo*.so
+
+%files -n python3-gobject-base
+%license COPYING
+%doc NEWS
+%exclude %{python3_sitearch}/gi/_gi_cairo*.so
+%{python3_sitearch}/gi/
+%{python3_sitearch}/PyGObject-*.egg-info
+%{python3_sitelib}/gi/
+%{python3_sitelib}/pygtkcompat/
+
+%files -n python3-gobject-devel
+%dir %{_includedir}/pygobject-3.0/
+%{_includedir}/pygobject-3.0/pygobject.h
+%{_libdir}/pkgconfig/pygobject-3.0.pc
+
+%changelog
+* Thu Aug 19 2021 DJ Delorie <dj@redhat.com> - 3.40.1-5
+- Rebuilt for libffi 3.4.2 SONAME transition.
+  Related: rhbz#1891914
+
+* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 3.40.1-4
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+  Related: rhbz#1991688
+
+* Wed May 05 2021 Ray Strode <rstrode@redhat.com> - 3.40.1-3
+- Add concurrency fix
+  Related: #1957130
+
+* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 3.40.1-2
+- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
+
+* Tue Mar 30 2021 Kalev Lember <klember@redhat.com> - 3.40.1-1
+- Update to 3.40.1
+
+* Mon Mar 22 2021 Kalev Lember <klember@redhat.com> - 3.40.0-1
+- Update to 3.40.0
+
+* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.38.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Mon Oct 05 2020 Kalev Lember <klember@redhat.com> - 3.38.0-2
+- Explicity BuildRequire python3-setuptools
+
+* Sat Sep 12 2020 Kalev Lember <klember@redhat.com> - 3.38.0-1
+- Update to 3.38.0
+
+* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.36.1-4
+- Second attempt - Rebuilt for
+  https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.36.1-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Fri May 22 2020 Miro Hrončok <mhroncok@redhat.com> - 3.36.1-2
+- Rebuilt for Python 3.9
+
+* Thu May 07 2020 Kalev Lember <klember@redhat.com> - 3.36.1-1
+- Update to 3.36.1
+
+* Sun Mar 08 2020 Kalev Lember <klember@redhat.com> - 3.36.0-2
+- Drop pkgconfig provides filtering as we no longer ship the Python 2 package
+
+* Sun Mar 08 2020 Kalev Lember <klember@redhat.com> - 3.36.0-1
+- Update to 3.36.0
+
+* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.34.0-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Thu Jan 16 2020 Miro Hrončok <mhroncok@redhat.com> - 3.34.0-4
+- Subpackages python2-gobject, python2-gobject-base, python2-gobject-devel have been removed
+  See https://fedoraproject.org/wiki/Changes/RetirePython2
+
+* Wed Sep 25 2019 Kalev Lember <klember@redhat.com> - 3.34.0-3
+- Don't add pkgconfig provides to python2-gobject-devel
+
+* Sat Sep 21 2019 Kalev Lember <klember@redhat.com> - 3.34.0-2
+- Drop Python 3 conditionals
+- Split pygobject3-devel into python2-gobject-devel and python3-gobject-devel
+  (#1749589)
+
+* Mon Sep 09 2019 Kalev Lember <klember@redhat.com> - 3.34.0-1
+- Update to 3.34.0
+
+* Mon Aug 19 2019 Kalev Lember <klember@redhat.com> - 3.33.1-1
+- Update to 3.33.1
+
+* Thu Aug 15 2019 Miro Hrončok <mhroncok@redhat.com> - 3.32.2-3
+- Rebuilt for Python 3.8
+
+* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.32.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Mon Jun 24 2019 Kalev Lember <klember@redhat.com> - 3.32.2-1
+- Update to 3.32.2
+
+* Tue Jun 18 2019 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.32.1-2
+- Fix build under python3.8 (#1717655)
+
+* Mon May 06 2019 Kalev Lember <klember@redhat.com> - 3.32.1-1
+- Update to 3.32.1
+
+* Mon Mar 11 2019 Kalev Lember <klember@redhat.com> - 3.32.0-1
+- Update to 3.32.0
+
+* Thu Mar 07 2019 Kalev Lember <klember@redhat.com> - 3.31.4-1
+- Update to 3.31.4
+
+* Mon Feb 04 2019 Kalev Lember <klember@redhat.com> - 3.31.3-1
+- Update to 3.31.3
+
+* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.31.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Wed Jan 23 2019 Kalev Lember <klember@redhat.com> - 3.31.2-1
+- Update to 3.31.2
+
+* Sat Dec 01 2018 Kalev Lember <klember@redhat.com> - 3.30.4-1
+- Update to 3.30.4
+
+* Tue Nov 27 2018 Kalev Lember <klember@redhat.com> - 3.30.3-1
+- Update to 3.30.3
+
+* Mon Nov 12 2018 Kalev Lember <klember@redhat.com> - 3.30.2-1
+- Update to 3.30.2
+
+* Fri Sep 14 2018 Kalev Lember <klember@redhat.com> - 3.30.1-1
+- Update to 3.30.1
+
+* Fri Sep 14 2018 Dan Horák <dan[at]danny.cz> - 3.30.0-2
+- Include temporary big endian fix (#1623547)
+
+* Thu Sep 06 2018 Kalev Lember <klember@redhat.com> - 3.30.0-1
+- Update to 3.30.0
+
+* Mon Aug 13 2018 Kalev Lember <klember@redhat.com> - 3.29.2-1
+- Update to 3.29.2
+
+* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.28.3-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Fri Jun 15 2018 Miro Hrončok <mhroncok@redhat.com> - 3.28.3-2
+- Rebuilt for Python 3.7
+
+* Fri Jun 01 2018 Kalev Lember <klember@redhat.com> - 3.28.3-1
+- Update to 3.28.3
+
+* Wed Mar 28 2018 Kalev Lember <klember@redhat.com> - 3.28.2-1
+- Update to 3.28.2
+
+* Mon Mar 19 2018 Kalev Lember <klember@redhat.com> - 3.28.1-1
+- Update to 3.28.1
+
+* Mon Mar 12 2018 Kalev Lember <klember@redhat.com> - 3.28.0-1
+- Update to 3.28.0
+
+* Sat Mar 03 2018 Kalev Lember <klember@redhat.com> - 3.27.5-1
+- Update to 3.27.5
+
+* Wed Feb 21 2018 Iryna Shcherbina <ishcherb@redhat.com> - 3.27.1-3
+- Update Python 2 dependency declarations to new packaging standards
+  (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)
+
+* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.27.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Wed Dec 20 2017 Kalev Lember <klember@redhat.com> - 3.27.1-1
+- Update to 3.27.1
+
+* Wed Nov 01 2017 Kalev Lember <klember@redhat.com> - 3.26.1-1
+- Update to 3.26.1
+
+* Wed Sep 27 2017 Troy Dawson <tdawson@redhat.com> - 3.26.0-2
+- Cleanup spec file conditionals
+
+* Thu Sep 14 2017 Kalev Lember <klember@redhat.com> - 3.26.0-1
+- Update to 3.26.0
+
+* Thu Sep 14 2017 Kalev Lember <klember@redhat.com> - 3.24.1-5
+- Rename python-gobject-base to python2-gobject-base as well
+
+* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.24.1-4
+- Python 2 binary package renamed to python2-pygobject3
+  See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3
+
+* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.24.1-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.24.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Tue Apr 11 2017 Kalev Lember <klember@redhat.com> - 3.24.1-1
+- Update to 3.24.1
+
+* Tue Mar 21 2017 Kalev Lember <klember@redhat.com> - 3.24.0-1
+- Update to 3.24.0
+
+* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.22.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Mon Dec 12 2016 Charalampos Stratakis <cstratak@redhat.com> - 3.22.0-2
+- Rebuild for Python 3.6
+
+* Mon Sep 19 2016 Kalev Lember <klember@redhat.com> - 3.22.0-1
+- Update to 3.22.0
+
+* Sun Sep 11 2016 Kalev Lember <klember@redhat.com> - 3.21.92-1
+- Update to 3.21.92
+
+* Fri Aug 26 2016 Kalev Lember <klember@redhat.com> - 3.21.91-1
+- Update to 3.21.91
+
+* Tue Aug 23 2016 Kalev Lember <klember@redhat.com> - 3.21.1-0.1.git395779e
+- Update to 3.21.1 git snapshot
+
+* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.21.0-2
+- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
+
+* Tue May 03 2016 Kalev Lember <klember@redhat.com> - 3.21.0-1
+- Update to 3.21.0
+
+* Tue Mar 22 2016 Kalev Lember <klember@redhat.com> - 3.20.0-1
+- Update to 3.20.0
+
+* Wed Mar 16 2016 Kalev Lember <klember@redhat.com> - 3.19.92-1
+- Update to 3.19.92
+
+* Wed Mar 02 2016 Richard Hughes <rhughes@redhat.com> - 3.19.91-1
+- Update to 3.19.91
+
+* Mon Feb 29 2016 Richard Hughes <rhughes@redhat.com> - 3.19.90-1
+- Update to 3.19.90
+
+* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.19.2-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Tue Nov 03 2015 Robert Kuska <rkuska@redhat.com> - 3.19.2-2
+- Rebuilt for Python3.5 rebuild
+
+* Sun Nov 01 2015 Kalev Lember <klember@redhat.com> - 3.19.2-1
+- Update to 3.19.2
+
+* Sat Oct 24 2015 Kalev Lember <klember@redhat.com> - 3.18.2-1
+- Update to 3.18.2
+
+* Sat Oct 24 2015 Kalev Lember <klember@redhat.com> - 3.18.1-1
+- Update to 3.18.1
+- Update project URL and Source download location
+
+* Mon Oct 19 2015 Kalev Lember <klember@redhat.com> - 3.18.0-2
+- Backport a fix for Gdk.rectangle_intersect/rectangle_union compatibility
+  (#1269901)
+
+* Tue Sep 22 2015 Kalev Lember <klember@redhat.com> - 3.18.0-1
+- Update to 3.18.0
+
+* Sat Aug 22 2015 Kalev Lember <klember@redhat.com> - 3.17.90-2
+- Rename Python 2 subpackage to python-gobject for consistency with the
+  python3-gobject package
+
+* Thu Aug 20 2015 Kalev Lember <klember@redhat.com> - 3.17.90-1
+- Update to 3.17.90
+- Use make_install macro
+- Use license macro for COPYING
+
+* Tue Jun 30 2015 Kalev Lember <klember@redhat.com> - 3.17.1-3
+- Split non-cairo parts python3-gobject into a subpackage
+
+* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.17.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Mon Jun 15 2015 Kalev Lember <kalevlember@gmail.com> - 3.17.1-1
+- Update to 3.17.1
+
+* Wed Jun 03 2015 Kalev Lember <kalevlember@gmail.com> - 3.16.1-2
+- Backport a patch for GdkRectangle changes in gtk+ 3.17.2
+
+* Tue Apr 14 2015 Kalev Lember <kalevlember@gmail.com> - 3.16.1-1
+- Update to 3.16.1
+
+* Tue Mar 24 2015 Kalev Lember <kalevlember@gmail.com> - 3.16.0-1
+- Update to 3.16.0
+
+* Thu Mar 05 2015 Kalev Lember <kalevlember@gmail.com> - 3.15.91-1
+- Update to 3.15.91
+
+* Sat Feb 21 2015 Kalev Lember <kalevlember@gmail.com> - 3.15.0-1
+- Update to 3.15.0
+
+* Mon Sep 22 2014 Kalev Lember <kalevlember@gmail.com> - 3.14.0-1
+- Update to 3.14.0
+
+* Tue Sep 16 2014 Kalev Lember <kalevlember@gmail.com> - 3.13.92-1
+- Update to 3.13.92
+
+* Tue Sep 02 2014 Kalev Lember <kalevlember@gmail.com> - 3.13.91-1
+- Update to 3.13.91
+
+* Thu Aug 21 2014 Kalev Lember <kalevlember@gmail.com> - 3.13.90-2
+- Backport a fix for virt-manager crash (#1130758)
+
+* Tue Aug 19 2014 Kalev Lember <kalevlember@gmail.com> - 3.13.90-1
+- Update to 3.13.90
+
+* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.13.4-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Fri Aug 15 2014 Kalev Lember <kalevlember@gmail.com> - 3.13.4-1
+- Update to 3.13.4
+
+* Tue Jun 24 2014 Richard Hughes <rhughes@redhat.com> - 3.13.3-1
+- Update to 3.13.3
+
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.13.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Mon May 26 2014 Kalev Lember <kalevlember@gmail.com> - 3.13.2-1
+- Update to 3.13.2
+- Drop old testsuite patches
+
+* Mon May 12 2014 Bohuslav Kabrda <bkabrda@redhat.com> - 3.13.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Changes/Python_3.4
+
+* Tue Apr 29 2014 Richard Hughes <rhughes@redhat.com> - 3.13.1-1
+- Update to 3.13.1
+
+* Tue Apr 15 2014 Kalev Lember <kalevlember@gmail.com> - 3.12.1-1
+- Update to 3.12.1
+
+* Sat Apr 05 2014 Kalev Lember <kalevlember@gmail.com> - 3.12.0-2
+- Update dep versions
+- Tighten deps with %%_isa
+
+* Mon Mar 24 2014 Richard Hughes <rhughes@redhat.com> - 3.12.0-1
+- Update to 3.12.0
+
+* Tue Mar 18 2014 Richard Hughes <rhughes@redhat.com> - 3.11.92-1
+- Update to 3.11.92
+
+* Tue Mar 04 2014 Richard Hughes <rhughes@redhat.com> - 3.11.91-1
+- Update to 3.11.91
+
+* Tue Feb 18 2014 Richard Hughes <rhughes@redhat.com> - 3.11.90-1
+- Update to 3.11.90
+
+* Wed Feb 05 2014 Richard Hughes <rhughes@redhat.com> - 3.11.5-1
+- Update to 3.11.5
+
+* Tue Jan 14 2014 Richard Hughes <rhughes@redhat.com> - 3.11.4-1
+- Update to 3.11.4
+
+* Tue Dec 17 2013 Richard Hughes <rhughes@redhat.com> - 3.11.3-1
+- Update to 3.11.3
+
+* Mon Nov 18 2013 Richard Hughes <rhughes@redhat.com> - 3.11.2-1
+- Update to 3.11.2
+
+* Tue Oct 29 2013 Richard Hughes <rhughes@redhat.com> - 3.11.1-1
+- Update to 3.11.1
+
+* Wed Sep 25 2013 Kalev Lember <kalevlember@gmail.com> - 3.10.0-1
+- Update to 3.10.0
+
+* Wed Sep 18 2013 Kalev Lember <kalevlember@gmail.com> - 3.9.92-1
+- Update to 3.9.92
+
+* Tue Sep 03 2013 Kalev Lember <kalevlember@gmail.com> - 3.9.91-1
+- Update to 3.9.91
+
+* Thu Aug 22 2013 Kalev Lember <kalevlember@gmail.com> - 3.9.90-1
+- Update to 3.9.90
+
+* Fri Aug  9 2013 Daniel Drake <dsd@laptop.org> - 3.9.5-1
+- Update to 3.9.5
+
+* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.9.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
+* Sun Jun 02 2013 Kalev Lember <kalevlember@gmail.com> - 3.9.2-1
+- Update to 3.9.2
+
+* Sun Jun 02 2013 Kalev Lember <kalevlember@gmail.com> - 3.9.1-2
+- Disable pyflakes tests to avoid failures with too new pyflakes 0.7.2
+
+* Fri May 10 2013 Richard Hughes <rhughes@redhat.com> - 3.9.1-1
+- Update to 3.9.1
+
+* Thu Apr 25 2013 Peter Robinson <pbrobinson@fedoraproject.org> 3.8.1-2
+- Add upstream patch to fix Sugar (RHBZ 947538)
+
+* Mon Apr 15 2013 Kalev Lember <kalevlember@gmail.com> - 3.8.1-1
+- Update to 3.8.1
+
+* Tue Apr  2 2013 David Malcolm <dmalcolm@redhat.com> - 3.8.0-2
+- add workarounds for ppc64 (rhbz#924425)
+
+* Tue Mar 26 2013 Kalev Lember <kalevlember@gmail.com> - 3.8.0-1
+- Update to 3.8.0
+
+* Wed Mar 20 2013 Kalev Lember <kalevlember@gmail.com> - 3.7.92-1
+- Update to 3.7.92
+
+* Thu Mar  7 2013 Matthias Clasen <mclasen@redhat.com> - 3.7.91-1
+- Update to 3.7.91
+
+* Thu Feb 21 2013 Kalev Lember <kalevlember@gmail.com> - 3.7.90-1
+- Update to 3.7.90
+
+* Wed Feb 06 2013 Kalev Lember <kalevlember@gmail.com> - 3.7.5.1-1
+- Update to 3.7.5.1
+- Re-enable tests
+
+* Wed Jan 16 2013 Matthias Clasen <mclasen@redhat.com> - 3.7.4-1
+- Update to 3.7.4
+
+* Fri Dec 28 2012 Dan Horák <dan[at]danny.cz> - 3.7.3-2
+- Fix GBytes test (gnome#690837)
+
+* Thu Dec 20 2012 Kalev Lember <kalevlember@gmail.com> - 3.7.3-1
+- Update to 3.7.3
+- Drop upstreamed patches; rebase the ignore-more-pep8-errors patch
+
+* Thu Dec 13 2012 Ray Strode <rstrode@redhat.com> 3.7.1-3
+- Split non-cairo parts into a subpackage
+
+* Mon Nov 12 2012 Kalev Lember <kalevlember@gmail.com> - 3.7.1-2
+- Remove lib64 rpaths (#817701)
+- Move code examples to the -devel subpackage and fix the multilib
+  conflict (#831434)
+
+* Fri Nov 09 2012 Kalev Lember <kalevlember@gmail.com> - 3.7.1-1
+- Update to 3.7.1
+
+* Tue Nov  6 2012 Daniel Drake <dsd@laptop.org> - 3.4.1.1-2
+- Upstream fix for property lookup; needed for basic Sugar operation.
+
+* Wed Oct 17 2012 Kalev Lember <kalevlember@gmail.com> - 3.4.1.1-1
+- Update to 3.4.1.1
+
+* Thu Sep 13 2012 Daniel Drake <dsd@laptop.org> - 3.3.91-1
+- Latest version; upstreamed patches dropped
+
+* Wed Aug 15 2012 David Malcolm <dmalcolm@redhat.com> - 3.3.4-9
+- avoid dragging pyflakes and python-pep8 into RHEL (patch 7)
+
+* Fri Aug 10 2012 David Malcolm <dmalcolm@redhat.com> - 3.3.4-8
+- add endianness patch (rhbz#841596; attachment 603634)
+
+* Fri Aug 10 2012 David Malcolm <dmalcolm@redhat.com> - 3.3.4-7
+- update endianness patch for rhbz#841596 (to attachment 603367)
+
+* Thu Aug  9 2012 David Malcolm <dmalcolm@redhat.com> - 3.3.4-6
+- fix issues on big-endian 64-bit machines (rhbz#841596, rhbz#842880)
+
+* Thu Aug  9 2012 David Malcolm <dmalcolm@redhat.com> - 3.3.4-5
+- use xvfb-run in selftests; update known failures
+
+* Wed Aug  8 2012 David Malcolm <dmalcolm@redhat.com> - 3.3.4-4
+- add a %%check check; add V=1 to all make invocations
+
+* Sat Aug 04 2012 David Malcolm <dmalcolm@redhat.com> - 3.3.4-3
+- rebuild for https://fedoraproject.org/wiki/Features/Python_3.3
+
+* Fri Aug  3 2012 David Malcolm <dmalcolm@redhat.com> - 3.3.4-2
+- remove rhel logic from with_python3 conditional
+
+* Tue Jul 17 2012 Richard Hughes <hughsient@gmail.com> - 3.3.4-1
+- Update to 3.3.4
+
+* Tue Jun 26 2012 David Malcolm <dmalcolm@redhat.com> - 3.3.3.1-2
+- fix a segfault when dealing with mismatched .so/typelib files
+
+* Mon Jun 25 2012 Peter Robinson <pbrobinson@fedoraproject.org> - 3.3.3.1-1
+- Update to 3.3.3.1
+
+* Tue Jun 19 2012 Kalev Lember <kalevlember@gmail.com> - 3.3.2-1
+- Update to 3.3.2
+
+* Sat May 05 2012 Kalev Lember <kalevlember@gmail.com> - 3.3.1-1
+- Update to 3.3.1
+- Dropped the now unneeded -lm patch
+
+* Tue Mar 27 2012 Kalev Lember <kalevlember@gmail.com> - 3.2.0-1
+- Update to 3.2.0
+
+* Thu Mar 22 2012 Matthias Clasen <mclasen@redhat.com> - 3.1.93-1
+- Update to 3.1.93
+
+* Wed Mar 21 2012 Kalev Lember <kalevlember@gmail.com> - 3.1.92-1
+- Update to 3.1.92
+
+* Sun Feb 26 2012 Matthias Clasen <mclasen@redhat.com> - 3.1.1-1
+- Update to 3.1.1
+
+* Tue Feb  7 2012 Matthias Clasen <mclasen@redhat.com> - 3.1.0-1
+- Update to 3.1.0
+
+* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.3-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Tue Dec 20 2011 Ignacio Casal Quinteiro <icq@gnome.org> - 3.0.3-1
+- udpate to 3.0.3
+
+* Sat Oct 22 2011 Ignacio Casal Quinteiro <icq@gnome.org> - 3.0.2-1
+- udpate to 3.0.2
+
+* Fri Sep 30 2011 Ignacio Casal Quinteiro <icq@gnome.org> - 3.0.1-1
+- udpate to 3.0.1
+
+* Tue Sep 20 2011 Matthias Clasen <mclasen@redhat.com> - 3.0.0-1
+- Update to 3.0.0
+
+* Thu Sep 15 2011 John (J5) Palmieri <johnp@gnome.org> - 2.90.4-1
+- update to 2.90.4
+- get rid of packaging cruft that is taken care of by upstream now
+
+* Wed Aug 31 2011 Ignacio Casal Quinteiro <icq@gnome.org> - 2.90.3-1
+- udpate to 2.90.3
+
+* Mon Aug 22 2011 John (J5) Palmieri <johnp@redhat.com> - 2.90.2-3
+- remove some old requires
+
+* Fri Aug 19 2011 John (J5) Palmieri <johnp@redhat.com> - 2.90.2-2
+- fix up issues uncovered during package review
+- disable docs because they still reference the static bindings 
+  and upstream is working on new documentation
+
+* Thu Aug 18 2011 John (J5) Palmieri <johnp@redhat.com> - 2.90.2-1
+- Initial package