commit:     1013e397bc7000b42a9c2a185b6a1d92e4509d1d
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 18 03:44:53 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Sep 18 03:44:53 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1013e397

x11-libs/cairo: fix cups compat

Closes: https://bugs.gentoo.org/939607
Signed-off-by: Sam James <sam <AT> gentoo.org>

 x11-libs/cairo/cairo-1.18.2-r1.ebuild        | 96 ++++++++++++++++++++++++++++
 x11-libs/cairo/files/cairo-1.18.2-cups.patch | 32 ++++++++++
 2 files changed, 128 insertions(+)

diff --git a/x11-libs/cairo/cairo-1.18.2-r1.ebuild 
b/x11-libs/cairo/cairo-1.18.2-r1.ebuild
new file mode 100644
index 000000000000..9bcd379e8859
--- /dev/null
+++ b/x11-libs/cairo/cairo-1.18.2-r1.ebuild
@@ -0,0 +1,96 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit meson-multilib
+
+if [[ ${PV} == *9999* ]]; then
+       inherit git-r3
+       EGIT_REPO_URI="https://gitlab.freedesktop.org/cairo/cairo.git";
+else
+       
SRC_URI="https://gitlab.freedesktop.org/cairo/cairo/-/archive/${PV}/cairo-${PV}.tar.bz2";
+       KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc 
~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos 
~x64-macos ~x64-solaris"
+fi
+
+DESCRIPTION="A vector graphics library with cross-device output support"
+HOMEPAGE="https://www.cairographics.org/ 
https://gitlab.freedesktop.org/cairo/cairo";
+LICENSE="|| ( LGPL-2.1 MPL-1.1 )"
+SLOT="0"
+IUSE="X aqua debug +glib gtk-doc test"
+# Tests need more wiring up like e.g. 
https://gitlab.freedesktop.org/cairo/cairo/-/blob/master/.gitlab-ci.yml
+# any2ppm tests seem to hang for now.
+RESTRICT="test !test? ( test )"
+
+RDEPEND="
+       >=dev-libs/lzo-2.06-r1:2[${MULTILIB_USEDEP}]
+       >=media-libs/fontconfig-2.13.92[${MULTILIB_USEDEP}]
+       >=media-libs/freetype-2.13:2[png,${MULTILIB_USEDEP}]
+       >=media-libs/libpng-1.6.10:0=[${MULTILIB_USEDEP}]
+       >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]
+       >=x11-libs/pixman-0.42.3[${MULTILIB_USEDEP}]
+       debug? ( sys-libs/binutils-libs:0=[${MULTILIB_USEDEP}] )
+       glib? ( >=dev-libs/glib-2.34.3:2[${MULTILIB_USEDEP}] )
+       X? (
+               >=x11-libs/libXrender-0.9.8[${MULTILIB_USEDEP}]
+               >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
+               >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
+               >=x11-libs/libxcb-1.9.1:=[${MULTILIB_USEDEP}]
+       )"
+DEPEND="${RDEPEND}
+       test? (
+               app-text/ghostscript-gpl
+               app-text/poppler[cairo]
+               gnome-base/librsvg
+       )
+       X? ( x11-base/xorg-proto )"
+BDEPEND="
+       virtual/pkgconfig
+       gtk-doc? ( dev-util/gtk-doc )"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-respect-fontconfig.patch
+       "${FILESDIR}"/${P}-cups.patch
+)
+
+multilib_src_configure() {
+       local emesonargs=(
+               -Ddwrite=disabled
+               -Dfontconfig=enabled
+               -Dfreetype=enabled
+               -Dpng=enabled
+               $(meson_feature aqua quartz)
+               $(meson_feature X tee)
+               $(meson_feature X xcb)
+               $(meson_feature X xlib)
+               -Dxlib-xcb=disabled
+               -Dzlib=enabled
+
+               # Requires poppler-glib (poppler[cairo]) which isn't available 
in multilib
+               $(meson_native_use_feature test tests)
+
+               -Dgtk2-utils=disabled
+
+               $(meson_feature glib)
+               -Dspectre=disabled # only used for tests
+               $(meson_feature debug symbol-lookup)
+
+               $(meson_use gtk-doc gtk_doc)
+       )
+
+       meson_src_configure
+}
+
+multilib_src_test() {
+       multilib_is_native_abi && meson_src_test
+}
+
+multilib_src_install_all() {
+       einstalldocs
+
+       if use gtk-doc; then
+               mkdir -p "${ED}"/usr/share/gtk-doc/cairo || die
+               mv "${ED}"/usr/share/gtk-doc/{html/cairo,cairo/html} || die
+               rmdir "${ED}"/usr/share/gtk-doc/html || die
+       fi
+}

diff --git a/x11-libs/cairo/files/cairo-1.18.2-cups.patch 
b/x11-libs/cairo/files/cairo-1.18.2-cups.patch
new file mode 100644
index 000000000000..6a34c28a6250
--- /dev/null
+++ b/x11-libs/cairo/files/cairo-1.18.2-cups.patch
@@ -0,0 +1,32 @@
+https://bugs.gentoo.org/939607
+https://gitlab.freedesktop.org/cairo/cairo/-/issues/870
+https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/595
+https://gitlab.freedesktop.org/cairo/cairo/-/commit/f19e2fe080ddcfce93c8234a919fd882f3d63362
+
+From f19e2fe080ddcfce93c8234a919fd882f3d63362 Mon Sep 17 00:00:00 2001
+From: Adrian Johnson <[email protected]>
+Date: Fri, 13 Sep 2024 06:28:39 +0930
+Subject: [PATCH] cff: Don't fail if no local subs
+
+Fixes: #870
+--- a/src/cairo-cff-subset.c
++++ b/src/cairo-cff-subset.c
+@@ -952,9 +952,13 @@ cairo_cff_font_read_private_dict (cairo_cff_font_t   
*font,
+        decode_number (operand, nominal_width);
+ 
+     num_subs = _cairo_array_num_elements (local_sub_index);
+-    *local_subs_used = _cairo_calloc_ab (num_subs, sizeof (cairo_bool_t));
+-    if (unlikely (*local_subs_used == NULL))
+-      return _cairo_error (CAIRO_STATUS_NO_MEMORY);
++    if (num_subs > 0) {
++      *local_subs_used = _cairo_calloc_ab (num_subs, sizeof (cairo_bool_t));
++      if (unlikely (*local_subs_used == NULL))
++          return _cairo_error (CAIRO_STATUS_NO_MEMORY);
++    } else {
++      *local_subs_used = NULL;
++    }
+ 
+     if (num_subs < 1240)
+       *local_sub_bias = 107;
+-- 
+GitLab

Reply via email to