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 +}
