From 765e3efbd8c134913e50a6414be842f62d9b967593118cc527668d63cfe35494 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Chv=C3=A1tal?= Date: Mon, 7 Oct 2019 09:08:28 +0000 Subject: [PATCH] - Add patch to fix build on python 3.8: * python38.patch OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pycairo?expand=0&rev=5 --- python-pycairo.changes | 6 ++++++ python-pycairo.spec | 16 +++++++--------- python38.patch | 26 ++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 python38.patch diff --git a/python-pycairo.changes b/python-pycairo.changes index c1b92a2..d3c56d2 100644 --- a/python-pycairo.changes +++ b/python-pycairo.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Oct 7 09:01:40 UTC 2019 - Tomáš Chvátal + +- Add patch to fix build on python 3.8: + * python38.patch + ------------------------------------------------------------------- Tue May 21 20:22:58 UTC 2019 - Todd R diff --git a/python-pycairo.spec b/python-pycairo.spec index b686df9..a7e8dbe 100644 --- a/python-pycairo.spec +++ b/python-pycairo.spec @@ -23,9 +23,9 @@ Version: 1.18.1 Release: 0 Summary: Python Bindings for Cairo License: LGPL-2.1-or-later OR MPL-1.1 -Group: Development/Libraries/Python -Url: http://www.cairographics.org/pycairo +URL: https://github.com/pygobject/pycairo Source: https://github.com/pygobject/pycairo/releases/download/v%{version}/pycairo-%{version}.tar.gz +Patch0: python38.patch BuildRequires: %{python_module devel} BuildRequires: %{python_module pytest} BuildRequires: cairo-devel >= 1.13.1 @@ -36,7 +36,6 @@ Obsoletes: python-cairo < %{version} Provides: %{oldpython}-cairo = %{version} Obsoletes: %{oldpython}-cairo < %{version} %endif - %python_subpackages %description @@ -44,10 +43,9 @@ Pycairo is a Python module providing bindings for the cairo graphics library. %package devel Summary: Development files for the Cairo Python bindings -Group: Development/Libraries/C and C++ +Requires: python-devel Requires: python-pycairo = %{version} Requires: python-pycairo-common-devel = %{version} -Requires: python-devel Provides: python-cairo-devel = %{version} Obsoletes: python-cairo-devel < %{version} %ifpython2 @@ -63,13 +61,12 @@ packages that depen on Pycairo. %package -n python-pycairo-common-devel Summary: Headers for the Cairo Python bindings -Group: Development/Libraries/C and C++ -Provides: %{python_module pycairo-common-devel = %{version}} +Requires: cairo-devel Provides: %{python_module cairo-common-devel = %{version}} +Provides: %{python_module pycairo-common-devel = %{version}} Obsoletes: %{python_module cairo-common-devel < %{version}} Provides: python-cairo-common-devel = %{version} Obsoletes: python-cairo-common-devel < %{version} -Requires: cairo-devel %description -n python-pycairo-common-devel Pycairo is a Python module providing bindings for the cairo graphics library. @@ -78,7 +75,8 @@ This package provides the headers and development files needed to build packages that depen on Pycairo. %prep -%setup -n pycairo-%{version} +%setup -q -n pycairo-%{version} +%patch0 -p1 %build %python_build diff --git a/python38.patch b/python38.patch new file mode 100644 index 0000000..9fea327 --- /dev/null +++ b/python38.patch @@ -0,0 +1,26 @@ +From 71c81741495cdce132b6f45a0f596d70909c1e4d Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Sat, 15 Jun 2019 16:07:00 +0200 +Subject: [PATCH] enum: explicitely set enum.__str__ + +Python 3.8 has removed the int.__str__ implementation. So we don't fall +back to object.__str__ and thus enum.__repr__ set __str__ to int.__repr__ +instead. This gives us the same behaviour with all python versions. + +See https://github.com/python/cpython/commit/96aeaec64738b730 +--- + cairo/enums.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/cairo/enums.c b/cairo/enums.c +index 08fbaf3..4273232 100644 +--- a/cairo/enums.c ++++ b/cairo/enums.c +@@ -257,6 +257,7 @@ init_enums (PyObject *module) { + PyObject *ev; + + Pycairo_IntEnum_Type.tp_repr = (reprfunc)int_enum_repr; ++ Pycairo_IntEnum_Type.tp_str = PYCAIRO_PyLong_Type.tp_repr; + Pycairo_IntEnum_Type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE; + Pycairo_IntEnum_Type.tp_methods = int_enum_methods; + Pycairo_IntEnum_Type.tp_base = &PYCAIRO_PyLong_Type;