commit:     1d92e043e855b1474b5575e3d84bd0fde92461b5
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 11 17:49:02 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Jun 11 17:55:19 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1d92e043

dev-python/pycairo: enable py3.13

Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../pycairo/files/pycairo-1.26.0-py313.patch       | 30 +++++++++
 dev-python/pycairo/pycairo-1.26.0-r1.ebuild        | 77 ++++++++++++++++++++++
 2 files changed, 107 insertions(+)

diff --git a/dev-python/pycairo/files/pycairo-1.26.0-py313.patch 
b/dev-python/pycairo/files/pycairo-1.26.0-py313.patch
new file mode 100644
index 000000000000..c3c0d74cb415
--- /dev/null
+++ b/dev-python/pycairo/files/pycairo-1.26.0-py313.patch
@@ -0,0 +1,30 @@
+https://github.com/pygobject/pycairo/pull/366
+
+From 387e27fa36d29bc8f656656ca8b47e7b4996f4f4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <[email protected]>
+Date: Wed, 29 May 2024 21:25:41 +0200
+Subject: [PATCH] Avoid invalid PyBUF_READ flag in PyObject_GetBuffer()
+
+Since Python 3.13, the flag is no longer allowed.
+
+See https://github.com/python/cpython/pull/114707
+
+Fixes https://github.com/pygobject/pycairo/issues/365
+---
+ cairo/surface.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cairo/surface.c b/cairo/surface.c
+index 048522c6..f00db8b5 100644
+--- a/cairo/surface.c
++++ b/cairo/surface.c
+@@ -484,7 +484,7 @@ surface_set_mime_data (PycairoSurface *o, PyObject *args) {
+     return NULL;
+   }
+ 
+-  res = PyObject_GetBuffer (obj, view, PyBUF_READ);
++  res = PyObject_GetBuffer (obj, view, PyBUF_SIMPLE);
+   if (res == -1) {
+       PyMem_Free (view);
+       return NULL;
+

diff --git a/dev-python/pycairo/pycairo-1.26.0-r1.ebuild 
b/dev-python/pycairo/pycairo-1.26.0-r1.ebuild
new file mode 100644
index 000000000000..269c6598a58e
--- /dev/null
+++ b/dev-python/pycairo/pycairo-1.26.0-r1.ebuild
@@ -0,0 +1,77 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} pypy3 )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1
+
+DESCRIPTION="Python bindings for the cairo library"
+HOMEPAGE="
+       https://www.cairographics.org/pycairo/
+       https://github.com/pygobject/pycairo/
+       https://pypi.org/project/pycairo/
+"
+SRC_URI="
+       https://github.com/pygobject/${PN}/releases/download/v${PV}/${P}.tar.gz
+"
+
+LICENSE="|| ( LGPL-2.1 MPL-1.1 )"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 
~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+IUSE="examples"
+
+BDEPEND="
+       virtual/pkgconfig
+       test? (
+               dev-python/hypothesis[${PYTHON_USEDEP}]
+       )
+"
+RDEPEND="
+       >=x11-libs/cairo-1.15.10[svg(+)]
+"
+DEPEND="
+       ${RDEPEND}
+       x11-base/xorg-proto
+"
+
+PATCHES=(
+       "${FILESDIR}"/pycairo-1.26.0-py313.patch
+)
+
+distutils_enable_sphinx docs \
+       dev-python/sphinx-rtd-theme
+distutils_enable_tests pytest
+
+python_test() {
+       esetup.py build_tests
+       epytest
+}
+
+python_install() {
+       distutils-r1_python_install
+
+       # we need to pass --root via install command, sigh
+       cat > "${T}/distutils-extra.cfg" <<-EOF || die
+               [install]
+               root = ${D}
+       EOF
+       local -x DIST_EXTRA_CONFIG=${T}/distutils-extra.cfg
+       esetup.py \
+               install_pkgconfig 
--pkgconfigdir="${EPREFIX}/usr/$(get_libdir)/pkgconfig"
+}
+
+python_install_all() {
+       if use examples; then
+               dodoc -r examples
+       fi
+
+       distutils-r1_python_install_all
+
+       insinto /usr/include/pycairo
+       doins cairo/py3cairo.h
+}

Reply via email to