GNU bug report logs - #76922
[PATCH] gnu: cairo: Add patch to fix regression when writing PDFs with fonts

Previous Next

Package: guix-patches;

Reported by: Remco van 't Veer <remco <at> remworks.net>

Date: Mon, 10 Mar 2025 16:18:01 UTC

Severity: normal

Tags: patch

Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Remco van 't Veer <remco <at> remworks.net>
Subject: bug#76922: closed (Re: bug#76922: [PATCH] gnu: cairo: Add patch
 to fix regression when writing PDFs with fonts)
Date: Thu, 13 Mar 2025 01:19:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#76922: [PATCH] gnu: cairo: Add patch to fix regression when writing PDFs with fonts

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 76922 <at> debbugs.gnu.org.

-- 
76922: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=76922
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Remco van 't Veer <remco <at> remworks.net>
Cc: Vivien Kraus <vivien <at> planete-kraus.eu>, 76922-done <at> debbugs.gnu.org,
 Liliana Marie Prikler <liliana.prikler <at> gmail.com>
Subject: Re: bug#76922: [PATCH] gnu: cairo: Add patch to fix regression when
 writing PDFs with fonts
Date: Thu, 13 Mar 2025 10:18:08 +0900
Hi,

Remco van 't Veer <remco <at> remworks.net> writes:

> Fix out of memory errors when writing PDFs with fonts embedded in
> xournalpp and others.  See also:
>
>   https://gitlab.freedesktop.org/cairo/cairo/-/issues/870
>
> * gnu/packages/gtk.scm (cairo)[replacement]: New field pointing to cairo-1.18.4.
> * gnu/packages/gtk.scm (cairo-1.18.4): Add package.
>
> Change-Id: I6efa5a3acdf39fe78e558173f896f3a6abbc5c27
> ---
>  gnu/packages/gtk.scm | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
>
> diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
> index 846103ff9e..4d49246206 100644
> --- a/gnu/packages/gtk.scm
> +++ b/gnu/packages/gtk.scm
> @@ -38,6 +38,7 @@
>  ;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke <at> gnu.org>
>  ;;; Copyright © 2024 John Kehayias <john.kehayias <at> protonmail.com>
>  ;;; Copyright © 2025 Florian Pelz <pelzflorian <at> pelzflorian.de>
> +;;; Copyright © 2025 Remco van 't Veer <remco <at> remworks.net>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -172,6 +173,7 @@ (define cairo
>    (package
>      (name "cairo")
>      (version "1.18.2")
> +    (replacement cairo-1.18.4)
>      (source
>       (origin
>         (method url-fetch)
> @@ -238,6 +240,19 @@ (define cairo
>      ;; Hide and have cairo-with-documentation public.
>      (properties '((hidden? . #t)))))
>  
> +(define cairo-1.18.4
> +  (package
> +    (inherit cairo)
> +    (version "1.18.4")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri
> +        (string-append "https://cairographics.org/releases/cairo-"
> +                       version ".tar.xz"))
> +       (sha256
> +        (base32 "1jrcqfcna0358aqrk7rnys1hwq6k36ilr9r62bg26j3fi8hdhpj4"))))))

I've added a comment to remember this can be removed after ungrafting,
tested it worked with xournalpp to export an annotated PDF, and pushed
to the master branch.

Thank you :-)

-- 
Thanks,
Maxim

[Message part 3 (message/rfc822, inline)]
From: Remco van 't Veer <remco <at> remworks.net>
To: guix-patches <at> gnu.org
Cc: Remco van 't Veer <remco <at> remworks.net>
Subject: [PATCH] gnu: cairo: Add patch to fix regression when writing PDFs
 with fonts
Date: Mon, 10 Mar 2025 17:15:46 +0100
Applied patch fixes out of memory errors when writing PDFs with fonts
in xournalpp and others.  See also:

  https://gitlab.freedesktop.org/cairo/cairo/-/issues/870

* gnu/local.mk: Register patch.
* gnu/packages/gtk.scm (cairo): Add patch.
* gnu/packages/patches/cairo-cff-dont-fail-if-no-local-subs: Add patch.

Change-Id: Id6475d0ddb27208486bf41e18de72d116da110fb
---
 gnu/local.mk                                  |  3 +-
 gnu/packages/gtk.scm                          |  2 ++
 ...cairo-cff-dont-fail-if-no-local-subs.patch | 34 +++++++++++++++++++
 3 files changed, 38 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/cairo-cff-dont-fail-if-no-local-subs.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 880af09168..f26c79b3e1 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -48,7 +48,7 @@
 # Copyright © 2021 Andrew Tropin <andrew <at> trop.in>
 # Copyright © 2021 Simon Tournier <zimon.toutoune <at> gmail.com>
 # Copyright © 2022 Daniel Meißner <daniel.meissner-i4k <at> ruhr-uni-bochum.de>
-# Copyright © 2022, 2024 Remco van 't Veer <remco <at> remworks.net>
+# Copyright © 2022, 2024, 2025 Remco van 't Veer <remco <at> remworks.net>
 # Copyright © 2022, 2024 Artyom V. Poptsov <poptsov.artyom <at> gmail.com>
 # Copyright © 2022, 2023 John Kehayias <john.kehayias <at> protonmail.com>
 # Copyright © 2022 muradm <mail <at> muradm.net>
@@ -1069,6 +1069,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/busybox-add-missing-sha-NI-guard.patch	\
   %D%/packages/patches/c2rust-ast-exporter-local-search.patch	\
   %D%/packages/patches/cadical-add-shared-library.patch		\
+  %D%/packages/patches/cairo-cff-dont-fail-if-no-local-subs.patch		\
   %D%/packages/patches/calibre-no-updates-dialog.patch		\
   %D%/packages/patches/calibre-remove-test-sqlite.patch		\
   %D%/packages/patches/calibre-remove-test-unrar.patch		\
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 846103ff9e..f2b3f19897 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -38,6 +38,7 @@
 ;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke <at> gnu.org>
 ;;; Copyright © 2024 John Kehayias <john.kehayias <at> protonmail.com>
 ;;; Copyright © 2025 Florian Pelz <pelzflorian <at> pelzflorian.de>
+;;; Copyright © 2025 Remco van 't Veer <remco <at> remworks.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -178,6 +179,7 @@ (define cairo
        (uri
         (string-append "https://cairographics.org/releases/cairo-"
                        version ".tar.xz"))
+       (patches (search-patches "cairo-cff-dont-fail-if-no-local-subs.patch"))
        (sha256
         (base32 "0nnli5cghygbl9bvlbjls7nspnrrzx1y1pbd7p649s154js9nax6"))))
     (build-system meson-build-system)
diff --git a/gnu/packages/patches/cairo-cff-dont-fail-if-no-local-subs.patch b/gnu/packages/patches/cairo-cff-dont-fail-if-no-local-subs.patch
new file mode 100644
index 0000000000..ed1056a0c8
--- /dev/null
+++ b/gnu/packages/patches/cairo-cff-dont-fail-if-no-local-subs.patch
@@ -0,0 +1,34 @@
+From f19e2fe080ddcfce93c8234a919fd882f3d63362 Mon Sep 17 00:00:00 2001
+From: Adrian Johnson <ajohnson <at> redneon.com>
+Date: Fri, 13 Sep 2024 06:28:39 +0930
+Subject: [PATCH] cff: Don't fail if no local subs
+
+Fixes: #870
+---
+ src/cairo-cff-subset.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/src/cairo-cff-subset.c b/src/cairo-cff-subset.c
+index 076cb2b0a..8a7de0065 100644
+--- 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
+

base-commit: d0510dcd824e1b3fda62a8841e792581d7b8de8d
-- 
2.48.1




This bug report was last modified 71 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.