diff --git a/SOURCES/pygobject-3.22.0-allow-static-module-import.patch b/SOURCES/pygobject-3.22.0-allow-static-module-import.patch new file mode 100644 index 0000000..f5a5e54 --- /dev/null +++ b/SOURCES/pygobject-3.22.0-allow-static-module-import.patch @@ -0,0 +1,77 @@ +--- pygobject-3.22.0/gi/__init__.py.allow-static-module-import 2016-07-06 08:17:26.000000000 +0200 ++++ pygobject-3.22.0/gi/__init__.py 2017-02-08 16:53:17.446776839 +0100 +@@ -27,17 +27,12 @@ + import sys + import os + import importlib +-import types +- +-_static_binding_error = ('When using gi.repository you must not import static ' +- 'modules like "gobject". Please change all occurrences ' +- 'of "import gobject" to "from gi.repository import GObject". ' +- 'See: https://bugzilla.gnome.org/show_bug.cgi?id=709183') + + # we can't have pygobject 2 loaded at the same time we load the internal _gobject + if 'gobject' in sys.modules: +- raise ImportError(_static_binding_error) +- ++ raise ImportError('When using gi.repository you must not import static ' ++ 'modules like "gobject". Please change all occurrences ' ++ 'of "import gobject" to "from gi.repository import GObject".') + + from . import _gi + from ._gi import _gobject +@@ -57,20 +52,6 @@ + __version__ = "{0}.{1}.{2}".format(*version_info) + + +-class _DummyStaticModule(types.ModuleType): +- __path__ = None +- +- def __getattr__(self, name): +- raise AttributeError(_static_binding_error) +- +- +-sys.modules['glib'] = _DummyStaticModule('glib', _static_binding_error) +-sys.modules['gobject'] = _DummyStaticModule('gobject', _static_binding_error) +-sys.modules['gio'] = _DummyStaticModule('gio', _static_binding_error) +-sys.modules['gtk'] = _DummyStaticModule('gtk', _static_binding_error) +-sys.modules['gtk.gdk'] = _DummyStaticModule('gtk.gdk', _static_binding_error) +- +- + def check_version(version): + if isinstance(version, str): + version_list = tuple(map(int, version.split("."))) +--- pygobject-3.22.0/tests/test_import_machinery.py.allow-static-module-import 2016-08-25 16:36:12.000000000 +0200 ++++ pygobject-3.22.0/tests/test_import_machinery.py 2017-02-08 16:53:17.473776850 +0100 +@@ -90,30 +90,6 @@ + self.assertIn('gi.repository.Gio', sys.modules) + self.assertIn('gi.repository.GIMarshallingTests', sys.modules) + +- def test_static_binding_protection(self): +- # Importing old static bindings once gi has been imported should not +- # crash but instead give back a dummy module which produces RuntimeErrors +- # on access. +- with self.assertRaises(AttributeError): +- import gobject +- gobject.anything +- +- with self.assertRaises(AttributeError): +- import glib +- glib.anything +- +- with self.assertRaises(AttributeError): +- import gio +- gio.anything +- +- with self.assertRaises(AttributeError): +- import gtk +- gtk.anything +- +- with self.assertRaises(AttributeError): +- import gtk.gdk +- gtk.gdk.anything +- + + class TestImporter(unittest.TestCase): + def test_invalid_repository_module_name(self): diff --git a/SPECS/pygobject3.spec b/SPECS/pygobject3.spec new file mode 100644 index 0000000..4c31725 --- /dev/null +++ b/SPECS/pygobject3.spec @@ -0,0 +1,475 @@ +# Last updated for version 3.18.0 +%define glib2_version 2.38.0 +%define gobject_introspection_version 1.46.0 +%define python2_version 2.7 + +%global with_python3 1 +%define python3_version 3.6 + +%global with_check 0 + +Name: pygobject3 +Version: 3.22.0 +Release: 1%{?dist}.1 +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.22/pygobject-%{version}.tar.xz + +# https://bugzilla.redhat.com/1247996 +# which reverts https://bugzilla.gnome.org/709183 +Patch1: pygobject-3.22.0-allow-static-module-import.patch + +BuildRequires: glib2-devel >= %{glib2_version} +BuildRequires: gobject-introspection-devel >= %{gobject_introspection_version} +BuildRequires: python2-devel >= %{python2_version} +%if 0%{?with_python3} +BuildRequires: python3-devel >= %{python3_version} +BuildRequires: python3-cairo-devel +%endif # if with_python3 + +BuildRequires: cairo-gobject-devel +BuildRequires: pycairo-devel + +# Required by the upstream selftest suite: +%if %{with_check} +%if 0%{?fedora} +# Temporarily disabled pyflakes tests to avoid the build failing due to too new +# pyflakes 0.7.2 in F19 +# https://bugzilla.gnome.org/show_bug.cgi?id=701009 +#BuildRequires: pyflakes +BuildRequires: python-pep8 +%endif +## for the Gdk and Gtk typelibs, used during the test suite: +BuildRequires: gtk3 +## for xvfb-run: +BuildRequires: xorg-x11-server-Xvfb +BuildRequires: dejavu-sans-fonts +BuildRequires: dejavu-sans-mono-fonts +BuildRequires: dejavu-serif-fonts +## for dbus-launch, used by test_gdbus: +BuildRequires: dbus-x11 +%endif # with_check + +%description +The %{name} package provides a convenient wrapper for the GObject library +for use in Python programs. + +%package -n python-gobject +Summary: Python 2 bindings for GObject Introspection +Requires: python-gobject-base%{?_isa} = %{version}-%{release} +# The cairo override module depends on this +Requires: pycairo%{?_isa} + +Obsoletes: %{name} < 3.17.90-2 +Provides: %{name} = %{version}-%{release} +Provides: %{name}%{?_isa} = %{version}-%{release} + +%description -n python-gobject +The python-gobject package provides a convenient wrapper for the GObject +library and and other libraries that are compatible with GObject Introspection, +for use in Python 2 programs. + +%package -n python-gobject-base +Summary: Python 2 bindings for GObject Introspection base package +Requires: gobject-introspection%{?_isa} >= %{gobject_introspection_version} + +Obsoletes: %{name}-base < 3.17.90-2 +Provides: %{name}-base = %{version}-%{release} +Provides: %{name}-base%{?_isa} = %{version}-%{release} + +%description -n python-gobject-base +This package provides the non-cairo specific bits of the GObject Introspection +library. + +%if 0%{?with_python3} +%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} + +%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. + +%endif # with_python3 + +%package devel +Summary: Development files for embedding PyGObject introspection support +Requires: python-gobject%{?_isa} = %{version}-%{release} +%if 0%{?with_python3} +Requires: python3-gobject%{?_isa} = %{version}-%{release} +%endif +Requires: gobject-introspection-devel%{?_isa} + +%description devel +This package contains files required to embed PyGObject + +%prep +%setup -q -n pygobject-%{version} +%patch1 -p1 -b .allow-static-module-import + +%if 0%{?with_python3} +rm -rf %{py3dir} +cp -a . %{py3dir} +find %{py3dir} -name '*.py' | xargs sed -i '1s|^#!python|#!%{__python3}|' +%endif # with_python3 + +find -name '*.py' | xargs sed -i '1s|^#!python|#!%{__python}|' + +%build +PYTHON=%{__python} +export PYTHON +%configure +make %{?_smp_mflags} V=1 + +%if 0%{?with_python3} +pushd %{py3dir} +PYTHON=%{__python3} +export PYTHON +%configure +make %{?_smp_mflags} V=1 +popd +%endif # with_python3 + +%install +%if 0%{?with_python3} +pushd %{py3dir} +PYTHON=%{__python3} +export PYTHON +%make_install +popd + +%endif # with_python3 + +%make_install +find $RPM_BUILD_ROOT -name '*.la' -delete + +# Don't include makefiles in the installed docs, in order to avoid creating +# multilib conflicts +rm -rf _docs +mkdir _docs +cp -a examples _docs +rm _docs/examples/Makefile* + +%check +%if %{with_check} +# Run the selftests under a temporary xvfb X server (so that they can +# initialize Gdk etc): + +# FIXME: disabled for python3 +# Currently this fails with python3 with: +# File "/builddir/build/BUILD/python3-pygobject3-3.3.4-4.fc19/gi/__init__.py", line 23, in +# from ._gi import _API, Repository +#ValueError: level must be >= 0 +# Reported upstream as http://bugs.python.org/issue15610 +%if 0 +pushd %{py3dir} +PYTHON=%{__python3} +export PYTHON +xvfb-run make DESTDIR=$RPM_BUILD_ROOT check V=1 +popd +%endif # with_python3 + +xvfb-run make DESTDIR=$RPM_BUILD_ROOT check V=1 + +%endif # with_check + +%files -n python-gobject +%{python_sitearch}/gi/_gi_cairo.so + +%files -n python-gobject-base +%license COPYING +%doc AUTHORS NEWS README +%dir %{python_sitearch}/gi +%{python_sitearch}/gi/* +%exclude %{python_sitearch}/gi/_gi_cairo.so +%{python_sitearch}/pygobject-*.egg-info +%{python_sitearch}/pygtkcompat/ + +%if 0%{?with_python3} +%files -n python3-gobject +%{python3_sitearch}/gi/_gi_cairo*.so + +%files -n python3-gobject-base +%license COPYING +%doc AUTHORS NEWS README +%dir %{python3_sitearch}/gi +%{python3_sitearch}/gi/* +%exclude %{python3_sitearch}/gi/_gi_cairo*.so +%{python3_sitearch}/pygobject-*.egg-info +%{python3_sitearch}/pygtkcompat/ +%endif # with_python3 + +%files devel +%doc _docs/* +%dir %{_includedir}/pygobject-3.0/ +%{_includedir}/pygobject-3.0/pygobject.h +%{_libdir}/pkgconfig/pygobject-3.0.pc + +%changelog +* Thu Nov 09 2017 John Francini - 3.22.0-1.1 +- Bump release to allow rebuild to fix BZ#1510160 + +* Mon Sep 19 2016 Kalev Lember - 3.22.0-1 +- Update to 3.22.0 +- Resolves: #1387039 + +* Tue Sep 15 2015 Matthew Barnes - 3.14.0-3 +- Allow importing static modules to fix RHEL7 rebase regressions + +* Fri May 22 2015 Rui Matos - 3.14.0-2 +- Add patch to fix a coverity issue + https://bugzilla.gnome.org/show_bug.cgi?id=749698 + +* Mon Sep 22 2014 Kalev Lember - 3.14.0-1 +- Update to 3.14.0 + +* Tue Sep 16 2014 Kalev Lember - 3.13.92-1 +- Update to 3.13.92 + +* Tue Sep 02 2014 Kalev Lember - 3.13.91-1 +- Update to 3.13.91 + +* Thu Aug 21 2014 Kalev Lember - 3.13.90-2 +- Backport a fix for virt-manager crash (#1130758) + +* Tue Aug 19 2014 Kalev Lember - 3.13.90-1 +- Update to 3.13.90 + +* Sun Aug 17 2014 Fedora Release Engineering - 3.13.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Aug 15 2014 Kalev Lember - 3.13.4-1 +- Update to 3.13.4 + +* Tue Jun 24 2014 Richard Hughes - 3.13.3-1 +- Update to 3.13.3 + +* Sat Jun 07 2014 Fedora Release Engineering - 3.13.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon May 26 2014 Kalev Lember - 3.13.2-1 +- Update to 3.13.2 +- Drop old testsuite patches + +* Mon May 12 2014 Bohuslav Kabrda - 3.13.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Changes/Python_3.4 + +* Tue Apr 29 2014 Richard Hughes - 3.13.1-1 +- Update to 3.13.1 + +* Tue Apr 15 2014 Kalev Lember - 3.12.1-1 +- Update to 3.12.1 + +* Sat Apr 05 2014 Kalev Lember - 3.12.0-2 +- Update dep versions +- Tighten deps with %%_isa + +* Mon Mar 24 2014 Richard Hughes - 3.12.0-1 +- Update to 3.12.0 + +* Tue Mar 18 2014 Richard Hughes - 3.11.92-1 +- Update to 3.11.92 + +* Tue Mar 04 2014 Richard Hughes - 3.11.91-1 +- Update to 3.11.91 + +* Tue Feb 18 2014 Richard Hughes - 3.11.90-1 +- Update to 3.11.90 + +* Wed Feb 05 2014 Richard Hughes - 3.11.5-1 +- Update to 3.11.5 + +* Tue Jan 14 2014 Richard Hughes - 3.11.4-1 +- Update to 3.11.4 + +* Tue Dec 17 2013 Richard Hughes - 3.11.3-1 +- Update to 3.11.3 + +* Mon Nov 18 2013 Richard Hughes - 3.11.2-1 +- Update to 3.11.2 + +* Tue Oct 29 2013 Richard Hughes - 3.11.1-1 +- Update to 3.11.1 + +* Wed Sep 25 2013 Kalev Lember - 3.10.0-1 +- Update to 3.10.0 + +* Wed Sep 18 2013 Kalev Lember - 3.9.92-1 +- Update to 3.9.92 + +* Tue Sep 03 2013 Kalev Lember - 3.9.91-1 +- Update to 3.9.91 + +* Thu Aug 22 2013 Kalev Lember - 3.9.90-1 +- Update to 3.9.90 + +* Fri Aug 9 2013 Daniel Drake - 3.9.5-1 +- Update to 3.9.5 + +* Sun Aug 04 2013 Fedora Release Engineering - 3.9.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Sun Jun 02 2013 Kalev Lember - 3.9.2-1 +- Update to 3.9.2 + +* Sun Jun 02 2013 Kalev Lember - 3.9.1-2 +- Disable pyflakes tests to avoid failures with too new pyflakes 0.7.2 + +* Fri May 10 2013 Richard Hughes - 3.9.1-1 +- Update to 3.9.1 + +* Thu Apr 25 2013 Peter Robinson 3.8.1-2 +- Add upstream patch to fix Sugar (RHBZ 947538) + +* Mon Apr 15 2013 Kalev Lember - 3.8.1-1 +- Update to 3.8.1 + +* Tue Apr 2 2013 David Malcolm - 3.8.0-2 +- add workarounds for ppc64 (rhbz#924425) + +* Tue Mar 26 2013 Kalev Lember - 3.8.0-1 +- Update to 3.8.0 + +* Wed Mar 20 2013 Kalev Lember - 3.7.92-1 +- Update to 3.7.92 + +* Thu Mar 7 2013 Matthias Clasen - 3.7.91-1 +- Update to 3.7.91 + +* Thu Feb 21 2013 Kalev Lember - 3.7.90-1 +- Update to 3.7.90 + +* Wed Feb 06 2013 Kalev Lember - 3.7.5.1-1 +- Update to 3.7.5.1 +- Re-enable tests + +* Wed Jan 16 2013 Matthias Clasen - 3.7.4-1 +- Update to 3.7.4 + +* Fri Dec 28 2012 Dan HorĂ¡k - 3.7.3-2 +- Fix GBytes test (gnome#690837) + +* Thu Dec 20 2012 Kalev Lember - 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 3.7.1-3 +- Split non-cairo parts into a subpackage + +* Mon Nov 12 2012 Kalev Lember - 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 - 3.7.1-1 +- Update to 3.7.1 + +* Tue Nov 6 2012 Daniel Drake - 3.4.1.1-2 +- Upstream fix for property lookup; needed for basic Sugar operation. + +* Wed Oct 17 2012 Kalev Lember - 3.4.1.1-1 +- Update to 3.4.1.1 + +* Thu Sep 13 2012 Daniel Drake - 3.3.91-1 +- Latest version; upstreamed patches dropped + +* Wed Aug 15 2012 David Malcolm - 3.3.4-9 +- avoid dragging pyflakes and python-pep8 into RHEL (patch 7) + +* Fri Aug 10 2012 David Malcolm - 3.3.4-8 +- add endianness patch (rhbz#841596; attachment 603634) + +* Fri Aug 10 2012 David Malcolm - 3.3.4-7 +- update endianness patch for rhbz#841596 (to attachment 603367) + +* Thu Aug 9 2012 David Malcolm - 3.3.4-6 +- fix issues on big-endian 64-bit machines (rhbz#841596, rhbz#842880) + +* Thu Aug 9 2012 David Malcolm - 3.3.4-5 +- use xvfb-run in selftests; update known failures + +* Wed Aug 8 2012 David Malcolm - 3.3.4-4 +- add a %%check check; add V=1 to all make invocations + +* Sat Aug 04 2012 David Malcolm - 3.3.4-3 +- rebuild for https://fedoraproject.org/wiki/Features/Python_3.3 + +* Fri Aug 3 2012 David Malcolm - 3.3.4-2 +- remove rhel logic from with_python3 conditional + +* Tue Jul 17 2012 Richard Hughes - 3.3.4-1 +- Update to 3.3.4 + +* Tue Jun 26 2012 David Malcolm - 3.3.3.1-2 +- fix a segfault when dealing with mismatched .so/typelib files + +* Mon Jun 25 2012 Peter Robinson - 3.3.3.1-1 +- Update to 3.3.3.1 + +* Tue Jun 19 2012 Kalev Lember - 3.3.2-1 +- Update to 3.3.2 + +* Sat May 05 2012 Kalev Lember - 3.3.1-1 +- Update to 3.3.1 +- Dropped the now unneeded -lm patch + +* Tue Mar 27 2012 Kalev Lember - 3.2.0-1 +- Update to 3.2.0 + +* Thu Mar 22 2012 Matthias Clasen - 3.1.93-1 +- Update to 3.1.93 + +* Wed Mar 21 2012 Kalev Lember - 3.1.92-1 +- Update to 3.1.92 + +* Sun Feb 26 2012 Matthias Clasen - 3.1.1-1 +- Update to 3.1.1 + +* Tue Feb 7 2012 Matthias Clasen - 3.1.0-1 +- Update to 3.1.0 + +* Sat Jan 14 2012 Fedora Release Engineering - 3.0.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Dec 20 2011 Ignacio Casal Quinteiro - 3.0.3-1 +- udpate to 3.0.3 + +* Sat Oct 22 2011 Ignacio Casal Quinteiro - 3.0.2-1 +- udpate to 3.0.2 + +* Fri Sep 30 2011 Ignacio Casal Quinteiro - 3.0.1-1 +- udpate to 3.0.1 + +* Tue Sep 20 2011 Matthias Clasen - 3.0.0-1 +- Update to 3.0.0 + +* Thu Sep 15 2011 John (J5) Palmieri - 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 - 2.90.3-1 +- udpate to 2.90.3 + +* Thu Aug 22 2011 John (J5) Palmieri - 2.90.2-3 +- remove some old requires + +* Thu Aug 19 2011 John (J5) Palmieri - 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 - 2.90.2-1 +- Initial package