summaryrefslogtreecommitdiff
path: root/dev-python/pycairo
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2023-10-17 18:31:39 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2023-10-17 18:31:39 +0000
commitcb259cfa3af99553df6eb9b1b3620b04be2965b6 (patch)
treeef833450d1a1ac83546d99a9780b301ded931d82 /dev-python/pycairo
parent792e7671e9a15cded06bc28deb0f93fc6e2ec98a (diff)
downloadbaldeagleos-repo-cb259cfa3af99553df6eb9b1b3620b04be2965b6.tar.gz
baldeagleos-repo-cb259cfa3af99553df6eb9b1b3620b04be2965b6.tar.xz
baldeagleos-repo-cb259cfa3af99553df6eb9b1b3620b04be2965b6.zip
Adding metadata
Diffstat (limited to 'dev-python/pycairo')
-rw-r--r--dev-python/pycairo/Manifest1
-rw-r--r--dev-python/pycairo/files/pycairo-1.25.0-init.patch43
-rw-r--r--dev-python/pycairo/pycairo-1.25.0.ebuild77
3 files changed, 121 insertions, 0 deletions
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 <tycho@tycho.pizza>
+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 <tycho@tycho.pizza>
+---
+ 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..6da52edba552
--- /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_{8,9,10,11,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
+}