cairo: update to 1.17.6
This commit is contained in:
parent
d7f0f9fb1b
commit
99f9c56bce
@ -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
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
||||
|
12
cairo/fix-cairo-sphinx.patch
Normal file
12
cairo/fix-cairo-sphinx.patch
Normal 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,
|
||||
)
|
@ -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,
|
||||
)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user