From 9c4558f99d4921eed496a2a1ed42092c062eb0b2486adf827113005836c87c1a Mon Sep 17 00:00:00 2001 From: Dominique Leuenberger Date: Tue, 13 Sep 2022 07:31:49 +0000 Subject: [PATCH] Accepting request 1002604 from GNOME:Next GNOME 43.rc - let's get this into Staging to see what we break (e.g meson:test seems to be an issue already) OBS-URL: https://build.opensuse.org/request/show/1002604 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/cairo?expand=0&rev=152 --- ...ult-LCD-filter-to-FreeType-s-default.patch | 56 ++++++++++++++++++ cairo-1.16.0.tar.xz | 3 - cairo-1.17.6.tar.xz | 3 + ...M_Var-instead-of-free-when-available.patch | 30 ---------- cairo-composite_color_glyphs.patch | 57 ------------------- ...de-explicitly-requested-grayscale-aa.patch | 44 -------------- ...tmap_surface-bsc1036789-CVE-2017-7475.diff | 8 +-- cairo-pdf-add-missing-flush.patch | 29 ---------- cairo-xlib-endianness.patch | 8 ++- cairo.changes | 41 +++++++++++++ cairo.spec | 31 ++++------ 11 files changed, 121 insertions(+), 189 deletions(-) create mode 100644 0001-Set-default-LCD-filter-to-FreeType-s-default.patch delete mode 100644 cairo-1.16.0.tar.xz create mode 100644 cairo-1.17.6.tar.xz delete mode 100644 cairo-Use-FT_Done_MM_Var-instead-of-free-when-available.patch delete mode 100644 cairo-composite_color_glyphs.patch delete mode 100644 cairo-do-not-override-explicitly-requested-grayscale-aa.patch delete mode 100644 cairo-pdf-add-missing-flush.patch diff --git a/0001-Set-default-LCD-filter-to-FreeType-s-default.patch b/0001-Set-default-LCD-filter-to-FreeType-s-default.patch new file mode 100644 index 0000000..4d7e1a1 --- /dev/null +++ b/0001-Set-default-LCD-filter-to-FreeType-s-default.patch @@ -0,0 +1,56 @@ +From 12a5b7384f35d9a3f4c6b151fac4857444db3d6a Mon Sep 17 00:00:00 2001 +From: Nikolaus Waxweiler +Date: Sat, 10 Nov 2018 16:44:23 +0000 +Subject: [PATCH] Set default LCD filter to FreeType's default + +--- + src/cairo-ft-font.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c +index 325dd61b4..3c47dc12e 100644 +--- a/src/cairo-ft-font.c ++++ b/src/cairo-ft-font.c +@@ -1404,7 +1404,7 @@ _render_glyph_outline (FT_Face face, + cairo_image_surface_t **surface) + { + int rgba = FC_RGBA_UNKNOWN; +- int lcd_filter = FT_LCD_FILTER_LEGACY; ++ int lcd_filter = FT_LCD_FILTER_DEFAULT; + FT_GlyphSlot glyphslot = face->glyph; + FT_Outline *outline = &glyphslot->outline; + FT_Bitmap bitmap; +@@ -1439,13 +1439,13 @@ _render_glyph_outline (FT_Face face, + case CAIRO_LCD_FILTER_NONE: + lcd_filter = FT_LCD_FILTER_NONE; + break; +- case CAIRO_LCD_FILTER_DEFAULT: + case CAIRO_LCD_FILTER_INTRA_PIXEL: + lcd_filter = FT_LCD_FILTER_LEGACY; + break; + case CAIRO_LCD_FILTER_FIR3: + lcd_filter = FT_LCD_FILTER_LIGHT; + break; ++ case CAIRO_LCD_FILTER_DEFAULT: + case CAIRO_LCD_FILTER_FIR5: + lcd_filter = FT_LCD_FILTER_DEFAULT; + break; +@@ -3416,7 +3416,6 @@ _cairo_ft_font_options_substitute (const cairo_font_options_t *options, + case CAIRO_LCD_FILTER_NONE: + lcd_filter = FT_LCD_FILTER_NONE; + break; +- case CAIRO_LCD_FILTER_DEFAULT: + case CAIRO_LCD_FILTER_INTRA_PIXEL: + lcd_filter = FT_LCD_FILTER_LEGACY; + break; +@@ -3424,6 +3423,7 @@ _cairo_ft_font_options_substitute (const cairo_font_options_t *options, + lcd_filter = FT_LCD_FILTER_LIGHT; + break; + default: ++ case CAIRO_LCD_FILTER_DEFAULT: + case CAIRO_LCD_FILTER_FIR5: + lcd_filter = FT_LCD_FILTER_DEFAULT; + break; +-- +2.19.1 + diff --git a/cairo-1.16.0.tar.xz b/cairo-1.16.0.tar.xz deleted file mode 100644 index 350baf0..0000000 --- a/cairo-1.16.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e7b29b3f113ef870d1e3ecf8adf21f923396401604bda16d44be45e66052331 -size 41997432 diff --git a/cairo-1.17.6.tar.xz b/cairo-1.17.6.tar.xz new file mode 100644 index 0000000..115057b --- /dev/null +++ b/cairo-1.17.6.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4eebc4c2bad0402bc3f501db184417094657d111fb6c06f076a82ea191fe1faf +size 35055900 diff --git a/cairo-Use-FT_Done_MM_Var-instead-of-free-when-available.patch b/cairo-Use-FT_Done_MM_Var-instead-of-free-when-available.patch deleted file mode 100644 index b7e42b2..0000000 --- a/cairo-Use-FT_Done_MM_Var-instead-of-free-when-available.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 90e85c2493fdfa3551f202ff10282463f1e36645 Mon Sep 17 00:00:00 2001 -From: Carlos Garcia Campos -Date: Mon, 19 Nov 2018 12:33:07 +0100 -Subject: [PATCH] ft: Use FT_Done_MM_Var instead of free when available in - cairo_ft_apply_variations - -Fixes a crash when using freetype >= 2.9 ---- - src/cairo-ft-font.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c -index 325dd61b4..981973f78 100644 ---- a/src/cairo-ft-font.c -+++ b/src/cairo-ft-font.c -@@ -2393,7 +2393,11 @@ skip: - done: - free (coords); - free (current_coords); -+#if HAVE_FT_DONE_MM_VAR -+ FT_Done_MM_Var (face->glyph->library, ft_mm_var); -+#else - free (ft_mm_var); -+#endif - } - } - --- -2.19.2 - diff --git a/cairo-composite_color_glyphs.patch b/cairo-composite_color_glyphs.patch deleted file mode 100644 index 0d8ca47..0000000 --- a/cairo-composite_color_glyphs.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 79ad01724161502e8d9d2bd384ff1f0174e5df6e Mon Sep 17 00:00:00 2001 -From: Matthias Clasen -Date: Thu, 30 May 2019 07:30:55 -0400 -Subject: [PATCH] Fix a thinko in composite_color_glyphs - -We can't just move around the contents of the -passed-in string, we need to make a copy. This -was showing up as memory corruption in pango. - -See https://gitlab.gnome.org/GNOME/pango/issues/346 ---- - src/cairo-surface.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/src/cairo-surface.c b/src/cairo-surface.c -index c30f84087..e112b660a 100644 ---- a/src/cairo-surface.c -+++ b/src/cairo-surface.c -@@ -2820,6 +2820,7 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface, - const cairo_clip_t *clip) - { - cairo_int_status_t status; -+ char *utf8_copy = NULL; - - TRACE ((stderr, "%s\n", __FUNCTION__)); - if (unlikely (surface->status)) -@@ -2847,6 +2848,10 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface, - status = CAIRO_INT_STATUS_UNSUPPORTED; - - if (_cairo_scaled_font_has_color_glyphs (scaled_font)) { -+ utf8_copy = malloc (sizeof (char) * utf8_len); -+ memcpy (utf8_copy, utf8, sizeof (char) * utf8_len); -+ utf8 = utf8_copy; -+ - status = composite_color_glyphs (surface, op, - source, - (char *)utf8, &utf8_len, -@@ -2861,6 +2866,8 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface, - if (num_glyphs == 0) - goto DONE; - } -+ else -+ utf8_copy = NULL; - - /* The logic here is duplicated in _cairo_analysis_surface show_glyphs and - * show_text_glyphs. Keep in synch. */ -@@ -2918,6 +2925,9 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface, - surface->serial++; - } - -+ if (utf8_copy) -+ free (utf8_copy); -+ - return _cairo_surface_set_error (surface, status); - } - - diff --git a/cairo-do-not-override-explicitly-requested-grayscale-aa.patch b/cairo-do-not-override-explicitly-requested-grayscale-aa.patch deleted file mode 100644 index 958d6c9..0000000 --- a/cairo-do-not-override-explicitly-requested-grayscale-aa.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 4f4d89506f58a64b4829b1bb239bab9e46d63727 Mon Sep 17 00:00:00 2001 -From: Jehan -Date: Tue, 19 Jan 2021 12:42:31 +0100 -Subject: [PATCH] src: do not override explicitly requested grayscale - antialiasing. - -If CAIRO_ANTIALIAS_DEFAULT is selected and system is set to subpixel, it -is perfectly normal to switch to CAIRO_ANTIALIAS_SUBPIXEL. -But when the calling application specifically requested -CAIRO_ANTIALIAS_GRAY then Cairo should honor the request. - -This is an issue we have had for years in GIMP, where text on images -would render differently depending on the system the file is opened on. -This is obviously not right as a graphics work should be system -independant and allow the creator to decide if one wants a text to have -grayscale or subpixel rendering (a settings which would stick when -sharing the work file). Cairo should not override this. -The CAIRO_ANTIALIAS_DEFAULT settings exists exactly for this (when we -want Cairo to choose for us, in a system-dependant way); other settings -are when we need system independance. - -Thanks to Adam Fontenot for initial investigations and tests on this and -other contributors before this. ---- - src/cairo-ft-font.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c -index d2221edec..1f5befec3 100644 ---- a/src/cairo-ft-font.c -+++ b/src/cairo-ft-font.c -@@ -1945,8 +1945,7 @@ _cairo_ft_options_merge (cairo_ft_options_t *options, - } - - if (other->base.antialias == CAIRO_ANTIALIAS_SUBPIXEL && -- (options->base.antialias == CAIRO_ANTIALIAS_DEFAULT || -- options->base.antialias == CAIRO_ANTIALIAS_GRAY)) { -+ options->base.antialias == CAIRO_ANTIALIAS_DEFAULT) { - options->base.antialias = CAIRO_ANTIALIAS_SUBPIXEL; - options->base.subpixel_order = other->base.subpixel_order; - } --- -2.33.1 - diff --git a/cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff b/cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff index a05811b..adb2002 100644 --- a/cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff +++ b/cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff @@ -1,8 +1,8 @@ -Index: cairo-1.15.4/src/cairo-ft-font.c +Index: cairo-1.17.6/src/cairo-ft-font.c =================================================================== ---- cairo-1.15.4.orig/src/cairo-ft-font.c -+++ cairo-1.15.4/src/cairo-ft-font.c -@@ -1149,7 +1149,7 @@ _get_bitmap_surface (FT_Bitmap *bi +--- cairo-1.17.6.orig/src/cairo-ft-font.c ++++ cairo-1.17.6/src/cairo-ft-font.c +@@ -1223,7 +1223,7 @@ _get_bitmap_surface (FT_Bitmap *bi width = bitmap->width; height = bitmap->rows; diff --git a/cairo-pdf-add-missing-flush.patch b/cairo-pdf-add-missing-flush.patch deleted file mode 100644 index f83f4c7..0000000 --- a/cairo-pdf-add-missing-flush.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 4c8813f0eaacc32c27126ad2296951a626300b89 Mon Sep 17 00:00:00 2001 -From: Adrian Johnson -Date: Thu, 25 Oct 2018 18:46:17 +1030 -Subject: [PATCH] pdf: add missing flush - -Issue #342 ---- - src/cairo-pdf-surface.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c -index 7eb61aa..939b2d2 100644 ---- a/src/cairo-pdf-surface.c -+++ b/src/cairo-pdf-surface.c -@@ -7711,6 +7711,11 @@ _cairo_pdf_surface_mask (void *abstract_surface, - * and most common, case to handle. */ - if (_cairo_pattern_is_constant_alpha (mask, &extents.bounded, &alpha) && - _can_paint_pattern (source)) { -+ -+ status = _cairo_pdf_operators_flush (&surface->pdf_operators); -+ if (unlikely (status)) -+ goto cleanup; -+ - _cairo_output_stream_printf (surface->output, "q\n"); - status = _cairo_pdf_surface_paint_pattern (surface, - op, --- -2.25.0 - diff --git a/cairo-xlib-endianness.patch b/cairo-xlib-endianness.patch index 60da2af..54285a8 100644 --- a/cairo-xlib-endianness.patch +++ b/cairo-xlib-endianness.patch @@ -1,6 +1,8 @@ ---- cairo/src/cairo-xlib-render-compositor.c 2013-04-12 11:22:48.010384018 +0200 -+++ cairo/src/cairo-xlib-render-compositor.c.new 2013-04-12 11:23:54.362925287 +0200 -@@ -1318,10 +1318,10 @@ +Index: cairo-1.17.6/src/cairo-xlib-render-compositor.c +=================================================================== +--- cairo-1.17.6.orig/src/cairo-xlib-render-compositor.c ++++ cairo-1.17.6/src/cairo-xlib-render-compositor.c +@@ -1325,10 +1325,10 @@ _cairo_xlib_surface_add_glyph (cairo_xli } n = new; d = (uint32_t *) data; diff --git a/cairo.changes b/cairo.changes index b1727ff..adc3985 100644 --- a/cairo.changes +++ b/cairo.changes @@ -1,3 +1,44 @@ +------------------------------------------------------------------- +Wed Aug 31 18:23:24 UTC 2022 - Bjørn Lie + +- Update to version 1.17.6: + + This snapshot sees the removal of the following backends and + platform support: Qt4, BeOS, OS/2, DirectFB, DRM, Cogl, OpenVG. + + Thanks to all past contributors for their work on them. If you + were using any of these backends then you will need to stick to + Cairo 1.16. + + This snapshot is going to be the **last** release of Cairo with + the Autotools build system. The Meson build has seen many + improvements and it is considerably easier to maintain and + faster to build. +- Changes from version 1.17.4: + + A particularly noteworthy improvement in this release is the + addition of the meson build system as an alternative to + autotools. + + The cogl Cairo backend underwent significant development this + cycle. + + Subpixel positioning support allows improved glyph outlines + with the Freetype font backend. + + For a complete log of changes, please see + https://cairographics.org/releases/ChangeLog.1.17.4 +- Changes from version 1.17.2: + + This snapshot provides the new support for writing floating + point formats as 16 bpc PNGs, with support for RGBA128F and + RGB96F formats. This new feature increases Cairo's pixman + version requirement to 0.36.0. + + Beyond this are a range of bugfixes. + For a complete log of changes, please see + https://cairographics.org/releases/ChangeLog.1.17.2 +- Drop patches fixed upstream: + + cairo-Use-FT_Done_MM_Var-instead-of-free-when-available.patch + + cairo-composite_color_glyphs.patch + + cairo-pdf-add-missing-flush.patch + + cairo-do-not-override-explicitly-requested-grayscale-aa.patch +- Rebase remaining patches with quilt. +- Add 0001-Set-default-LCD-filter-to-FreeType-s-default.patch: Set + default LCD filter to FreeType's default (patch merged upstream). +- Use ldconfig_scriptlets macro for post(un) handling. + ------------------------------------------------------------------- Fri Oct 22 09:24:48 UTC 2021 - Ferdinand Thiessen diff --git a/cairo.spec b/cairo.spec index 8dab7d6..a70ae57 100644 --- a/cairo.spec +++ b/cairo.spec @@ -1,7 +1,7 @@ # # spec file for package cairo # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,33 +19,29 @@ %define build_xcb_backend 1 %define build_gl_backend 1 Name: cairo -Version: 1.16.0 +Version: 1.17.6 Release: 0 Summary: Vector Graphics Library with Cross-Device Output Support License: LGPL-2.1-or-later OR MPL-1.1 Group: Development/Libraries/C and C++ URL: https://cairographics.org/ -Source0: https://cairographics.org/releases/%{name}-%{version}.tar.xz +Source0: https://download.gnome.org/sources/cairo/1.17/%{name}-%{version}.tar.xz Source99: baselibs.conf + # PATCH-FIX-UPSTREAM cairo-xlib-endianness.patch fdo#63461 bnc#882951 fcrozat@suse.com -- Fix crash when client and server have different endianness Patch0: cairo-xlib-endianness.patch # PATCH-FIX-UPSTREAM cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff alarrosa@suse.com -- Fix segfault in get_bitmap_surface Patch1: cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff -# PATCH-FIX-UPSTREAM cairo-Use-FT_Done_MM_Var-instead-of-free-when-available.patch -- ft: Use FT_Done_MM_Var instead of free when available in cairo_ft_apply_variations -Patch2: cairo-Use-FT_Done_MM_Var-instead-of-free-when-available.patch -# PATCH-FIX-UPSTREAM cairo-composite_color_glyphs.patch -- Fix a thinko in composite_color_glyphs -Patch3: cairo-composite_color_glyphs.patch -# PATCH-FIX-UPSTREAM cairo-pdf-add-missing-flush.patch - fix pdf generation (upstream issue #342) -Patch4: cairo-pdf-add-missing-flush.patch -# PATCH-FIX-UPSTREAM cairo-do-not-override-explicitly-requested-grayscale-aa.patch -- Fix font antialiasing requested by applications -Patch5: cairo-do-not-override-explicitly-requested-grayscale-aa.patch +# PATCH-FIX-UPSTREAM 0001-Set-default-LCD-filter-to-FreeType-s-default.patch -- Set default LCD filter to FreeType's default +Patch2: 0001-Set-default-LCD-filter-to-FreeType-s-default.patch + BuildRequires: gtk-doc BuildRequires: pkgconfig BuildRequires: pkgconfig(fontconfig) BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(gobject-2.0) BuildRequires: pkgconfig(libpng) -BuildRequires: pkgconfig(pixman-1) >= 0.30.0 +BuildRequires: pkgconfig(pixman-1) >= 0.36.0 BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(xrender) @@ -165,18 +161,15 @@ cairo. --enable-xlib \ --enable-gtk-doc \ --disable-static -make %{?_smp_mflags} V=1 +%make_build %install %make_install find %{buildroot} -type f -name "*.la" -delete -print -%post -n libcairo2 -p /sbin/ldconfig -%postun -n libcairo2 -p /sbin/ldconfig -%post -n libcairo-gobject2 -p /sbin/ldconfig -%postun -n libcairo-gobject2 -p /sbin/ldconfig -%post -n libcairo-script-interpreter2 -p /sbin/ldconfig -%postun -n libcairo-script-interpreter2 -p /sbin/ldconfig +%ldconfig_scriptlets -n libcairo2 +%ldconfig_scriptlets -n libcairo-gobject2 +%ldconfig_scriptlets -n libcairo-script-interpreter2 %files -n libcairo2 %license COPYING COPYING-LGPL-2.1 COPYING-MPL-1.1