From 7efabb81f9bbfc7ea149285949a27400ea6db736 Mon Sep 17 00:00:00 2001 From: Marek Szuba Date: Fri, 4 Jun 2021 12:21:30 +0100 Subject: media-gfx/zbar: fix python3_9 compilation failure Backported upstream fix. Tested against python3_8 and python3_9, compiles fine against both. Reported-by: PhobosK Closes: https://bugs.gentoo.org/788703 Signed-off-by: Marek Szuba --- .../zbar/files/zbar-0.23.1_python_tp_print.patch | 55 ++++++++++++++++++++++ media-gfx/zbar/zbar-0.23.1.ebuild | 1 + 2 files changed, 56 insertions(+) create mode 100644 media-gfx/zbar/files/zbar-0.23.1_python_tp_print.patch (limited to 'media-gfx') diff --git a/media-gfx/zbar/files/zbar-0.23.1_python_tp_print.patch b/media-gfx/zbar/files/zbar-0.23.1_python_tp_print.patch new file mode 100644 index 000000000000..8d4d821426d2 --- /dev/null +++ b/media-gfx/zbar/files/zbar-0.23.1_python_tp_print.patch @@ -0,0 +1,55 @@ +From 938d39716488b545b92c28f48acc94a7b8fc9138 Mon Sep 17 00:00:00 2001 +From: Mauro Carvalho Chehab +Date: Tue, 28 Jul 2020 10:27:30 +0200 +Subject: [PATCH] python: enum: make it compatible with Python 3.9 + +As reported by: + https://github.com/mchehab/zbar/issues/92 + +python bindings don't build with Python 3.9, because it is +using tp_print, which has been silently ignored since Python +3.0, according with[1]: + + "The tp_print slot of PyTypeObject has been removed. + It was used for printing objects to files in Python 2.7 + and before. + Since Python 3.0, it has been ignored and unused." + +[1] https://docs.python.org/3.9/whatsnew/3.9.html#id3 + +Signed-off-by: Mauro Carvalho Chehab +--- + python/enum.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/python/enum.c b/python/enum.c +index a1135531..dfe1b1ef 100644 +--- a/python/enum.c ++++ b/python/enum.c +@@ -76,6 +76,8 @@ enumitem_str (zbarEnumItem *self) + return(self->name); + } + ++#if PY_MAJOR_VERSION < 3 ++/* tp_print was dropped on Python 3.9 */ + static int + enumitem_print (zbarEnumItem *self, + FILE *fp, +@@ -83,6 +85,7 @@ enumitem_print (zbarEnumItem *self, + { + return(self->name->ob_type->tp_print(self->name, fp, flags)); + } ++#endif + + static PyObject* + enumitem_repr (zbarEnumItem *self) +@@ -115,7 +118,9 @@ PyTypeObject zbarEnumItem_Type = { + .tp_new = (newfunc)enumitem_new, + .tp_dealloc = (destructor)enumitem_dealloc, + .tp_str = (reprfunc)enumitem_str, ++#if PY_MAJOR_VERSION < 3 + .tp_print = (printfunc)enumitem_print, ++#endif + .tp_repr = (reprfunc)enumitem_repr, + }; + diff --git a/media-gfx/zbar/zbar-0.23.1.ebuild b/media-gfx/zbar/zbar-0.23.1.ebuild index d74a878a969a..7b07b269b68f 100644 --- a/media-gfx/zbar/zbar-0.23.1.ebuild +++ b/media-gfx/zbar/zbar-0.23.1.ebuild @@ -87,6 +87,7 @@ PATCHES=( "${FILESDIR}/${PN}-0.23_fix_Qt5X11Extras_detect.patch" "${FILESDIR}/${PN}-0.23_fix_python_detect.patch" "${FILESDIR}/${P}-autoconf-2.70.patch" + "${FILESDIR}/${PN}-0.23.1_python_tp_print.patch" ) DOCS=( README.md NEWS.md TODO.md HACKING.md TODO.md ChangeLog ) -- cgit v1.2.3-65-gdbad