1
0
forked from ports/opt

cairo: update to 1.17.6

This commit is contained in:
Juergen Daubert 2022-03-23 15:02:31 +01:00
parent d7f0f9fb1b
commit 99f9c56bce
8 changed files with 29 additions and 314 deletions

View File

@ -18,7 +18,6 @@ drwxr-xr-x root/root usr/include/cairo/
-rw-r--r-- root/root usr/include/cairo/cairo-xcb.h
-rw-r--r-- root/root usr/include/cairo/cairo-xlib-xrender.h
-rw-r--r-- root/root usr/include/cairo/cairo-xlib.h
-rw-r--r-- root/root usr/include/cairo/cairo-xml.h
-rw-r--r-- root/root usr/include/cairo/cairo.h
drwxr-xr-x root/root usr/lib/
drwxr-xr-x root/root usr/lib/cairo/
@ -26,14 +25,14 @@ drwxr-xr-x root/root usr/lib/cairo/
-rwxr-xr-x root/root usr/lib/cairo/libcairo-sphinx.so
-rwxr-xr-x root/root usr/lib/cairo/libcairo-trace.so
lrwxrwxrwx root/root usr/lib/libcairo-gobject.so -> libcairo-gobject.so.2
lrwxrwxrwx root/root usr/lib/libcairo-gobject.so.2 -> libcairo-gobject.so.2.11704.0
-rwxr-xr-x root/root usr/lib/libcairo-gobject.so.2.11704.0
lrwxrwxrwx root/root usr/lib/libcairo-gobject.so.2 -> libcairo-gobject.so.2.11706.0
-rwxr-xr-x root/root usr/lib/libcairo-gobject.so.2.11706.0
lrwxrwxrwx root/root usr/lib/libcairo-script-interpreter.so -> libcairo-script-interpreter.so.2
lrwxrwxrwx root/root usr/lib/libcairo-script-interpreter.so.2 -> libcairo-script-interpreter.so.2.11704.0
-rwxr-xr-x root/root usr/lib/libcairo-script-interpreter.so.2.11704.0
lrwxrwxrwx root/root usr/lib/libcairo-script-interpreter.so.2 -> libcairo-script-interpreter.so.2.11706.0
-rwxr-xr-x root/root usr/lib/libcairo-script-interpreter.so.2.11706.0
lrwxrwxrwx root/root usr/lib/libcairo.so -> libcairo.so.2
lrwxrwxrwx root/root usr/lib/libcairo.so.2 -> libcairo.so.2.11704.0
-rwxr-xr-x root/root usr/lib/libcairo.so.2.11704.0
lrwxrwxrwx root/root usr/lib/libcairo.so.2 -> libcairo.so.2.11706.0
-rwxr-xr-x root/root usr/lib/libcairo.so.2.11706.0
drwxr-xr-x root/root usr/lib/pkgconfig/
-rw-r--r-- root/root usr/lib/pkgconfig/cairo-fc.pc
-rw-r--r-- root/root usr/lib/pkgconfig/cairo-ft.pc
@ -41,6 +40,7 @@ drwxr-xr-x root/root usr/lib/pkgconfig/
-rw-r--r-- root/root usr/lib/pkgconfig/cairo-pdf.pc
-rw-r--r-- root/root usr/lib/pkgconfig/cairo-png.pc
-rw-r--r-- root/root usr/lib/pkgconfig/cairo-ps.pc
-rw-r--r-- root/root usr/lib/pkgconfig/cairo-script-interpreter.pc
-rw-r--r-- root/root usr/lib/pkgconfig/cairo-script.pc
-rw-r--r-- root/root usr/lib/pkgconfig/cairo-svg.pc
-rw-r--r-- root/root usr/lib/pkgconfig/cairo-tee.pc
@ -48,5 +48,4 @@ drwxr-xr-x root/root usr/lib/pkgconfig/
-rw-r--r-- root/root usr/lib/pkgconfig/cairo-xcb.pc
-rw-r--r-- root/root usr/lib/pkgconfig/cairo-xlib-xrender.pc
-rw-r--r-- root/root usr/lib/pkgconfig/cairo-xlib.pc
-rw-r--r-- root/root usr/lib/pkgconfig/cairo-xml.pc
-rw-r--r-- root/root usr/lib/pkgconfig/cairo.pc

View File

@ -1,9 +1,6 @@
untrusted comment: verify with /etc/ports/opt.pub
RWSE3ohX2g5d/WxTh5ZDThEZJQnninUujKFyYl0r3kf+LE95hQ30R5ebPySfAxyQz85E65znNbTlK0O1bsCBGbEvuNt2GpMx4Ao=
SHA256 (Pkgfile) = 66251a576754c11a60bc920aa5b5be856f40de9b10f13358ff8ed23b2d932cb4
SHA256 (.footprint) = b945d5a708013c2c3b534d0349b096b861f32a3ae97d16a38e2c64b0dabadee0
SHA256 (cairo-1.17.4.tar.xz) = 74b24c1ed436bbe87499179a3b27c43f4143b8676d8ad237a6fa787401959705
SHA256 (xlib-xcb.diff) = 70cd3783381bf73ea7fccd5c2db43956b10865a9c54d5edd251dbcdb9b595a43
SHA256 (fix-library-versioning.diff) = ba678534bbfb2ae8d2397b015f77d30719efee7bb7992dbd2c8e5f2fa5fd8efc
SHA256 (fix-mask-usage-in-image-compositor.patch) = cdfbdc1292629997d5cb39e91c7e577d872634669565e06e37a0130c2da2480a
SHA256 (fix-pdf-fonts.patch) = a5926f8bca3cb09e41ed8d2a60fb053c4243fdeec2c36c5c7e15d2a784b6ee9a
RWSE3ohX2g5d/ZLTDupUS39hfTnHwA5m3QnSBjQaly6PTIUZI+xs5D22sP0sy50hm4LmlRnV5uo9hoJsCtKuSz22eD3t87TSIgk=
SHA256 (Pkgfile) = 499781a27b67973946927560508f718003081d50c5dbe7caaeb070382608fb7c
SHA256 (.footprint) = a70b30a6986ae1dcab2c8f6a2aebc7b3f570c8441e648ec7f4014eb990704a63
SHA256 (cairo-1.17.6.tar.bz2) = 90496d135c9ef7612c98f8ee358390cdec0825534573778a896ea021155599d2
SHA256 (fix-cairo-sphinx.patch) = 775b9ef5d265e8f20860268dca6e520a411402a6c38cb6dc95fa405f119b5d54

View File

@ -4,17 +4,13 @@
# Depends on: fontconfig glib xorg-libpixman xorg-libxext xorg-libxrender xorg-xcb-util
name=cairo
version=1.17.4
release=2
source=(https://cairographics.org/snapshots/$name-$version.tar.xz
xlib-xcb.diff fix-library-versioning.diff
fix-mask-usage-in-image-compositor.patch fix-pdf-fonts.patch)
version=1.17.6
release=1
source=(https://gitlab.freedesktop.org/cairo/cairo/-/archive/$version/$name-$version.tar.bz2
fix-cairo-sphinx.patch)
build() {
patch -p1 -d $name-$version -i $SRC/fix-library-versioning.diff
patch -p1 -d $name-$version -i $SRC/xlib-xcb.diff
patch -p1 -d $name-$version -i $SRC/fix-mask-usage-in-image-compositor.patch
patch -p1 -d $name-$version -i $SRC/fix-pdf-fonts.patch
patch -d $name-$version -p1 -i $SRC/fix-cairo-sphinx.patch
prt-get isinst wayland-protocols mesa && PKGMK_CAIRO+=' -D gl-backend=glesv3 -D glesv3=enabled'

View File

@ -0,0 +1,12 @@
diff -Nru cairo-1.17.6.orig/util/cairo-sphinx/meson.build cairo-1.17.6/util/cairo-sphinx/meson.build
--- cairo-1.17.6.orig/util/cairo-sphinx/meson.build 2022-03-21 12:22:22.986979702 +0100
+++ cairo-1.17.6/util/cairo-sphinx/meson.build 2022-03-23 14:32:49.390005446 +0100
@@ -19,7 +19,7 @@
include_directories: [incbase],
c_args: ['-DLIBDIR="@0@"'.format(libdir)] + pthread_c_args,
dependencies: deps + [glib_dep, rt_dep, libcairo_dep, cairoboilerplate_dep, libcairoscript_dep],
- link_with: [libcairosphinx],
+ link_with: [libcairo, libcairosphinx],
link_args: extra_link_args,
install: true,
)

View File

@ -1,94 +0,0 @@
commit e9ccb1d8d095482e4139da658e679d5aad56b184
Author: Tim-Philipp Müller <tim@centricular.com>
Date: Tue Dec 15 00:12:55 2020 +0000
meson: fix library versioning
Fixes #442
diff --git a/meson.build b/meson.build
index b159b4071..53a9af343 100644
--- a/meson.build
+++ b/meson.build
@@ -3,8 +3,6 @@ project('cairo', 'c', 'cpp',
version: run_command(find_program('version.py'), check: true).stdout().strip(),
)
-cc = meson.get_compiler('c')
-
# Keep in sync with configure.ac!
freetype_required_version = '>= 9.7.3'
fontconfig_required_version = '>= 2.2.95'
@@ -16,6 +14,27 @@ libudev_required_version = '>= 136'
libdrm_required_version = '>= 2.4'
glib_required_version = '>= 2.14'
+# library versioning
+version_arr = meson.project_version().split('.')
+cairo_version_major = version_arr[0].to_int()
+cairo_version_minor = version_arr[1].to_int()
+cairo_version_micro = version_arr[2].to_int()
+
+# The libtool shared library version stuff.
+# Try and maintain compatibility with the previous library versioning.
+cairo_version_sonum = cairo_version_major + 1
+cairo_version = cairo_version_major * 10000 + cairo_version_minor * 100 + cairo_version_micro
+
+if cairo_version_minor % 2 == 1
+ # unstable release
+ cairo_libversion = '@0@.@1@.0'.format(cairo_version_sonum, cairo_version)
+else
+ # stable release
+ cairo_libversion = '@0@.@1@.@2@'.format(cairo_version_sonum, cairo_version, cairo_version_micro)
+endif
+
+cc = meson.get_compiler('c')
+
if cc.get_id() == 'msvc'
# Basic usage in the cairo type system that causes spammy and useless warnings
add_project_arguments('/wd4244', '/wd4146',
diff --git a/src/meson.build b/src/meson.build
index 5bd1a57ee..f5d741eae 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -299,8 +299,8 @@ libcairo = library('cairo', cairo_sources,
c_args: cairo_no_warn_c_args + pthread_c_args + ['-DHAVE_CONFIG_H'],
cpp_args: cairo_no_warn_c_args + pthread_c_args + ['-DHAVE_CONFIG_H'],
link_args: extra_link_args,
- soversion: '2',
- version: '2.' + ''.join(meson.project_version().split('.')) + '.0',
+ soversion: cairo_version_sonum,
+ version: cairo_libversion,
install: true,
include_directories: incbase,
)
diff --git a/util/cairo-gobject/meson.build b/util/cairo-gobject/meson.build
index 200fd8705..bf24242a0 100644
--- a/util/cairo-gobject/meson.build
+++ b/util/cairo-gobject/meson.build
@@ -12,8 +12,8 @@ libcairogobject = library('cairo-gobject', cairo_gobject_sources,
include_directories: [incbase, incsrc],
dependencies: [glib_dep, gobject_dep],
link_with: [libcairo],
- soversion: '2',
- version: '2.' + ''.join(meson.project_version().split('.')) + '.0',
+ soversion: cairo_version_sonum,
+ version: cairo_libversion,
install: true,
)
diff --git a/util/cairo-script/meson.build b/util/cairo-script/meson.build
index a782ec63f..8cedc6834 100644
--- a/util/cairo-script/meson.build
+++ b/util/cairo-script/meson.build
@@ -30,8 +30,8 @@ libcairoscript = library('cairo-script-interpreter',
include_directories: [incbase, incsrc],
dependencies: deps,
link_with: [libcairo],
- soversion: '2',
- version: '2.' + ''.join(meson.project_version().split('.')) + '.0',
+ soversion: cairo_version_sonum,
+ version: cairo_libversion,
install: true,
)

View File

@ -1,112 +0,0 @@
From 03a820b173ed1fdef6ff14b4468f5dbc02ff59be Mon Sep 17 00:00:00 2001
From: Heiko Lewin <heiko.lewin@worldiety.de>
Date: Tue, 15 Dec 2020 16:48:19 +0100
Subject: [PATCH] Fix mask usage in image-compositor
---
src/cairo-image-compositor.c | 8 ++--
test/Makefile.sources | 1 +
test/bug-image-compositor.c | 39 ++++++++++++++++++++
4 files changed, 44 insertions(+), 4 deletions(-)
create mode 100644 test/bug-image-compositor.c
diff --git a/src/cairo-image-compositor.c b/src/cairo-image-compositor.c
index 79ad69f68..4f8aaed99 100644
--- a/src/cairo-image-compositor.c
+++ b/src/cairo-image-compositor.c
@@ -2610,14 +2610,14 @@ _inplace_src_spans (void *abstract_renderer, int y, int h,
unsigned num_spans)
{
cairo_image_span_renderer_t *r = abstract_renderer;
- uint8_t *m;
+ uint8_t *m, *base = (uint8_t*)pixman_image_get_data(r->mask);
int x0;
if (num_spans == 0)
return CAIRO_STATUS_SUCCESS;
x0 = spans[0].x;
- m = r->_buf;
+ m = base;
do {
int len = spans[1].x - spans[0].x;
if (len >= r->u.composite.run_length && spans[0].coverage == 0xff) {
@@ -2655,7 +2655,7 @@ _inplace_src_spans (void *abstract_renderer, int y, int h,
spans[0].x, y,
spans[1].x - spans[0].x, h);
- m = r->_buf;
+ m = base;
x0 = spans[1].x;
} else if (spans[0].coverage == 0x0) {
if (spans[0].x != x0) {
@@ -2684,7 +2684,7 @@ _inplace_src_spans (void *abstract_renderer, int y, int h,
#endif
}
- m = r->_buf;
+ m = base;
x0 = spans[1].x;
} else {
*m++ = spans[0].coverage;
diff --git a/test/Makefile.sources b/test/Makefile.sources
index 7eb73647f..86494348d 100644
--- a/test/Makefile.sources
+++ b/test/Makefile.sources
@@ -34,6 +34,7 @@ test_sources = \
bug-source-cu.c \
bug-extents.c \
bug-seams.c \
+ bug-image-compositor.c \
caps.c \
checkerboard.c \
caps-joins.c \
diff --git a/test/bug-image-compositor.c b/test/bug-image-compositor.c
new file mode 100644
index 000000000..fc4fd370b
--- /dev/null
+++ b/test/bug-image-compositor.c
@@ -0,0 +1,39 @@
+#include "cairo-test.h"
+
+static cairo_test_status_t
+draw (cairo_t *cr, int width, int height)
+{
+ cairo_set_source_rgb (cr, 0., 0., 0.);
+ cairo_paint (cr);
+
+ cairo_set_source_rgb (cr, 1., 1., 1.);
+ cairo_set_line_width (cr, 1.);
+
+ cairo_pattern_t *p = cairo_pattern_create_linear (0, 0, width, height);
+ cairo_pattern_add_color_stop_rgb (p, 0, 0.99, 1, 1);
+ cairo_pattern_add_color_stop_rgb (p, 1, 1, 1, 1);
+ cairo_set_source (cr, p);
+
+ cairo_move_to (cr, 0.5, -1);
+ for (int i = 0; i < width; i+=3) {
+ cairo_rel_line_to (cr, 2, 2);
+ cairo_rel_line_to (cr, 1, -2);
+ }
+
+ cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
+ cairo_stroke (cr);
+
+ cairo_pattern_destroy(p);
+
+ return CAIRO_TEST_SUCCESS;
+}
+
+
+CAIRO_TEST (bug_image_compositor,
+ "Crash in image-compositor",
+ "stroke, stress", /* keywords */
+ NULL, /* requirements */
+ 10000, 1,
+ NULL, draw)
+
+
--
GitLab

View File

@ -1,58 +0,0 @@
From a3b69a0215fdface0fd5730872a4b3242d979dca Mon Sep 17 00:00:00 2001
From: Uli Schlachter <psychon@znc.in>
Date: Tue, 9 Feb 2021 16:54:35 +0100
Subject: [PATCH] pdf font subset: Generate valid font names
A hash value is encoded in base 26 with upper case letters for font
names.
Commit ed984146 replaced "numerator = abs (hash);" with "numerator =
hash;" in this code, because hash has type uint32_t and the compiler
warned about taking the absolute value of an unsigned value. However,
abs() is actually defined to take an int argument. Thus, there was some
implicit cast.
Since numerator has type long, i.e. is signed, it is now actually
possible to get an overflow in the implicit cast and then have a
negative number. The following code is not prepared for this and
produces non-letters when encoding the hash.
This commit fixes that problem by not using ldiv() and instead using /
and % to directly compute the needed values. This gets rid of the need
to convert to type long. Since now everything works with uint32_t, there
is no more chance for negative numbers messing things up.
Fixes: https://gitlab.freedesktop.org/cairo/cairo/-/issues/449
Signed-off-by: Uli Schlachter <psychon@znc.in>
---
src/cairo-pdf-surface.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c
index 6da460878..52c49b6d2 100644
--- a/src/cairo-pdf-surface.c
+++ b/src/cairo-pdf-surface.c
@@ -5310,18 +5310,14 @@ _create_font_subset_tag (cairo_scaled_font_subset_t *font_subset,
{
uint32_t hash;
int i;
- long numerator;
- ldiv_t d;
hash = _hash_data ((unsigned char *) font_name, strlen(font_name), 0);
hash = _hash_data ((unsigned char *) (font_subset->glyphs),
font_subset->num_glyphs * sizeof(unsigned long), hash);
- numerator = hash;
for (i = 0; i < 6; i++) {
- d = ldiv (numerator, 26);
- numerator = d.quot;
- tag[i] = 'A' + d.rem;
+ tag[i] = 'A' + (hash % 26);
+ hash /= 26;
}
tag[i] = 0;
}
--
GitLab

View File

@ -1,25 +0,0 @@
diff --git i/meson.build w/meson.build
index b159b4071..2a1c68891 100644
--- i/meson.build
+++ w/meson.build
@@ -313,7 +313,7 @@ endif
if feature_conf.get('CAIRO_HAS_XCB_SURFACE', 0) == 1 and feature_conf.get('CAIRO_HAS_XLIB_SURFACE', 0) == 1
# FIXME: automagic
- x11xcb_dep = dependency('x11-xcb', required: false)
+ x11xcb_dep = dependency('x11-xcb', required: get_option('xlib-xcb'))
if x11xcb_dep.found()
deps += [x11xcb_dep]
feature_conf.set('CAIRO_HAS_XLIB_XCB_FUNCTIONS', 1)
diff --git i/meson_options.txt w/meson_options.txt
index ff11fe7ed..d1ae959e1 100644
--- i/meson_options.txt
+++ w/meson_options.txt
@@ -17,6 +17,7 @@ option('qt', type : 'feature', value : 'disabled')
option('tee', type : 'feature', value : 'disabled')
option('xcb', type : 'feature', value : 'auto')
option('xlib', type : 'feature', value : 'auto')
+option('xlib-xcb', type : 'feature', value : 'disabled')
#option('xml', type : 'feature', value : 'disabled')
option('zlib', type : 'feature', value : 'auto') # script, ps, pdf, xml surfaces