commit:     1716ef9b38d0e9865bd6394611d3a73a29b561db
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 17 14:53:48 2023 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Oct 17 15:11:05 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1716ef9b

dev-python/pycairo: Bump to 1.25.0

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/pycairo/Manifest                        |  1 +
 dev-python/pycairo/files/pycairo-1.25.0-init.patch | 43 ++++++++++++
 dev-python/pycairo/pycairo-1.25.0.ebuild           | 77 ++++++++++++++++++++++
 3 files changed, 121 insertions(+)

diff --git a/dev-python/pycairo/Manifest b/dev-python/pycairo/Manifest
index 7d7dc567ee93..60ac285971ac 100644
--- a/dev-python/pycairo/Manifest
+++ b/dev-python/pycairo/Manifest
@@ -1 +1,2 @@
 DIST pycairo-1.24.0.tar.gz 344850 BLAKE2B 
f1469254ccfcb96ee5e39af49fcae575717e2f0e9a3dc74a13408306b5c94f4557a9c6d6a448541cb1f6dd27781e484b37d5ea9f230dc87f9d3370fac31dfdba
 SHA512 
bbc160bc9c3c9365018c680f6a69347bc222cdaec10ea48d18aedd0341048df74973d3299d783662adf02b414874824660da10943d88f64c30451d3fdccc63fb
+DIST pycairo-1.25.0.tar.gz 347794 BLAKE2B 
d05c1f505059c181d176b533ff4753e90888189160b1904531da4d9e9b784976442acb8c848be48d23e04f1fd07fef88a05b374c833ecee1c0b0e2881dadd4d0
 SHA512 
f34df509d36fbc739e8ddb40e2ead473db6970eacb7a2b0ccad8b82fd41a5daa25c89a5d34e7f2b2b70c4bf74e4e9d87465414aa414280e0aa7a4787b05712da

diff --git a/dev-python/pycairo/files/pycairo-1.25.0-init.patch 
b/dev-python/pycairo/files/pycairo-1.25.0-init.patch
new file mode 100644
index 000000000000..cc670618a261
--- /dev/null
+++ b/dev-python/pycairo/files/pycairo-1.25.0-init.patch
@@ -0,0 +1,43 @@
+From 1ef1ea2f0ba3854309114a2395734c34a1e158d8 Mon Sep 17 00:00:00 2001
+From: Tycho Andersen <[email protected]>
+Date: Mon, 16 Oct 2023 20:01:52 -0600
+Subject: [PATCH] module: reorder cairo script surface initialization
+
+PyType_Ready() expects subclasses to be initialized after base classes.
+Since ScriptSurface inherits from Surface, Surface must be initialized
+first.
+
+This causes a segfault in pypy3.10, and the fix was suggested here:
+
+https://foss.heptapod.net/pypy/pypy/-/issues/4017#note_332375
+
+This fixes the seg fault for me.
+
+Signed-off-by: Tycho Andersen <[email protected]>
+---
+ cairo/cairomodule.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/cairo/cairomodule.c b/cairo/cairomodule.c
+index 0026a0e..f27330f 100644
+--- a/cairo/cairomodule.c
++++ b/cairo/cairomodule.c
+@@ -210,6 +210,9 @@ PYCAIRO_MODINIT_FUNC PyInit__cairo(void)
+   if (PyType_Ready(&PycairoTextExtents_Type) < 0)
+     return NULL;
+ 
++  if (PyType_Ready(&PycairoSurface_Type) < 0)
++    return NULL;
++
+ #ifdef CAIRO_HAS_SCRIPT_SURFACE
+   if (PyType_Ready(&PycairoScriptDevice_Type) < 0)
+     return NULL;
+@@ -223,8 +226,6 @@ PYCAIRO_MODINIT_FUNC PyInit__cairo(void)
+   if (PyType_Ready(&PycairoScaledFont_Type) < 0)
+     return NULL;
+ 
+-  if (PyType_Ready(&PycairoSurface_Type) < 0)
+-    return NULL;
+ #ifdef CAIRO_HAS_IMAGE_SURFACE
+   if (PyType_Ready(&PycairoImageSurface_Type) < 0)
+     return NULL;

diff --git a/dev-python/pycairo/pycairo-1.25.0.ebuild 
b/dev-python/pycairo/pycairo-1.25.0.ebuild
new file mode 100644
index 000000000000..855fe827c15a
--- /dev/null
+++ b/dev-python/pycairo/pycairo-1.25.0.ebuild
@@ -0,0 +1,77 @@
+# Copyright 1999-2023 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..12} 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
+"
+
+distutils_enable_sphinx docs \
+       dev-python/sphinx-rtd-theme
+distutils_enable_tests pytest
+
+PATCHES=(
+       "${FILESDIR}/${P}-init.patch"
+)
+
+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 = ${ED}
+       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
+       newins cairo/pycairo.h py3cairo.h
+}

Reply via email to