[notify] cairo: update to 1.17.4

Note:
-----
build system switched from autotools to meson, therefore
all libtool files (*.la) are gone.
Every port that lists the old libcairo.la file in its own
libtool file has to be rebuild if other ports depends at
build time on it.

To find the broken files the following script can be usesd:

  for f in $(grep -lrs libcairo.la /usr/lib/); do \
    pkginfo -o $f | awk '!/^Package/ {print $1}'; \
  done | sort -u
This commit is contained in:
Juergen Daubert 2021-01-03 13:04:53 +01:00
parent 88244f2ab2
commit 70cdf5f84a
8 changed files with 157 additions and 110 deletions

View File

@ -18,33 +18,22 @@ 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/
-rw-r--r-- root/root usr/lib/cairo/cairo-fdr.a
-rwxr-xr-x root/root usr/lib/cairo/cairo-fdr.la
-rwxr-xr-x root/root usr/lib/cairo/cairo-fdr.so
-rw-r--r-- root/root usr/lib/cairo/cairo-sphinx.a
-rwxr-xr-x root/root usr/lib/cairo/cairo-sphinx.la
-rwxr-xr-x root/root usr/lib/cairo/cairo-sphinx.so
-rw-r--r-- root/root usr/lib/cairo/libcairo-trace.a
-rwxr-xr-x root/root usr/lib/cairo/libcairo-trace.la
-rwxr-xr-x root/root usr/lib/cairo/libcairo-fdr.so
-rwxr-xr-x root/root usr/lib/cairo/libcairo-sphinx.so
-rwxr-xr-x root/root usr/lib/cairo/libcairo-trace.so
-rw-r--r-- root/root usr/lib/libcairo-gobject.a
-rwxr-xr-x root/root usr/lib/libcairo-gobject.la
lrwxrwxrwx root/root usr/lib/libcairo-gobject.so -> libcairo-gobject.so.2.11600.0
lrwxrwxrwx root/root usr/lib/libcairo-gobject.so.2 -> libcairo-gobject.so.2.11600.0
-rwxr-xr-x root/root usr/lib/libcairo-gobject.so.2.11600.0
-rw-r--r-- root/root usr/lib/libcairo-script-interpreter.a
-rwxr-xr-x root/root usr/lib/libcairo-script-interpreter.la
lrwxrwxrwx root/root usr/lib/libcairo-script-interpreter.so -> libcairo-script-interpreter.so.2.11600.0
lrwxrwxrwx root/root usr/lib/libcairo-script-interpreter.so.2 -> libcairo-script-interpreter.so.2.11600.0
-rwxr-xr-x root/root usr/lib/libcairo-script-interpreter.so.2.11600.0
-rw-r--r-- root/root usr/lib/libcairo.a
-rwxr-xr-x root/root usr/lib/libcairo.la
lrwxrwxrwx root/root usr/lib/libcairo.so -> libcairo.so.2.11600.0
lrwxrwxrwx root/root usr/lib/libcairo.so.2 -> libcairo.so.2.11600.0
-rwxr-xr-x root/root usr/lib/libcairo.so.2.11600.0
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-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.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
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
@ -59,4 +48,5 @@ 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,8 +1,7 @@
untrusted comment: verify with /etc/ports/opt.pub
RWSE3ohX2g5d/QNUPvchHfTb74n9Ht2Z5QIqgGDoNqsahsWLvK9lCunNxS0y/FOKR2b5PZhrKLehPzxDDoR/F4VDLKmyjxw4vg0=
SHA256 (Pkgfile) = 3c777fd8c9c6048f1ee5d83a36edb7d9f80b4a9e032bee1cbecb78ed9c25c136
SHA256 (.footprint) = 742a6524df8abaf10bc5b1bc5ffc934be8e2302c233bf44112a26e466fb0eb86
SHA256 (cairo-1.16.0.tar.xz) = 5e7b29b3f113ef870d1e3ecf8adf21f923396401604bda16d44be45e66052331
SHA256 (cairo-xlib-endianness.patch) = 58d39311edee6d8ddf76deac1d2e3526b4c02d4aa1f35a6ca16ff50c8e65429f
SHA256 (cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff) = 4c8b8095a41f244ddfbc9b24e2f73a6fd8d697f43903617e0519b95b27b30726
SHA256 (CVE-2018-19876.patch) = 78923093cd9b80a4d604e4141ae553f1aa4521d59a9aed8735d1e1be9cca3d99
RWSE3ohX2g5d/QkehMFqMWovc3NST3g0Zbs+fz3eKyJCDVeErRvWrtWXZu13aBGGqaYnmjYQ277uIJrPbAQFiYoFLSHR5HZn7A4=
SHA256 (Pkgfile) = 52863419cb709a04a90e7064ba668bc9071bb20980dd474a29cc0bc78075cecf
SHA256 (.footprint) = b945d5a708013c2c3b534d0349b096b861f32a3ae97d16a38e2c64b0dabadee0
SHA256 (cairo-1.17.4.tar.xz) = 74b24c1ed436bbe87499179a3b27c43f4143b8676d8ad237a6fa787401959705
SHA256 (xlib-xcb.diff) = 70cd3783381bf73ea7fccd5c2db43956b10865a9c54d5edd251dbcdb9b595a43
SHA256 (fix-library-versioning.diff) = ba678534bbfb2ae8d2397b015f77d30719efee7bb7992dbd2c8e5f2fa5fd8efc

View File

@ -1,30 +0,0 @@
From 90e85c2493fdfa3551f202ff10282463f1e36645 Mon Sep 17 00:00:00 2001
From: Carlos Garcia Campos <cgarcia@igalia.com>
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.18.1

View File

@ -1,29 +1,26 @@
# Description: A 2D graphics library with support for multiple output devices
# URL: https://www.cairographics.org/
# Maintainer: Fredrik Rinnestam, fredrik at crux dot nu
# Depends on: fontconfig, xorg-libxext, xorg-libxrender, xorg-libpixman, xorg-xcb-util, glib
# URL: https://www.cairographics.org/
# Maintainer: CRUX System Team, core-ports at crux dot nu
# Depends on: fontconfig, xorg-libxext, xorg-libxrender, xorg-libpixman, xorg-xcb-util, glib
name=cairo
version=1.16.0
release=2
source=(https://cairographics.org/releases/cairo-$version.tar.xz
cairo-xlib-endianness.patch
cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff \
CVE-2018-19876.patch)
version=1.17.4
release=1
source=(https://cairographics.org/snapshots/$name-$version.tar.xz
xlib-xcb.diff fix-library-versioning.diff)
build() {
cd $name-$version
patch -p1 -i $SRC/cairo-xlib-endianness.patch
patch -p1 -i $SRC/cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff
patch -p1 -i $SRC/CVE-2018-19876.patch
patch -p1 -d $name-$version -i $SRC/fix-library-versioning.diff
patch -p1 -d $name-$version -i $SRC/xlib-xcb.diff
./configure --prefix=/usr \
--enable-xcb=yes \
--enable-ps \
--enable-pdf \
--disable-gtk-doc \
--enable-tee=yes
make
make DESTDIR=$PKG install
rm -rf $PKG/usr/share
meson setup build $name-$version \
--prefix=/usr \
--buildtype=plain \
-D spectre=disabled \
-D tee=enabled \
-D tests=disabled
meson compile -C build
DESTDIR=$PKG meson install -C build
chmod +x $PKG/usr/bin/cairo-trace
}

View File

@ -1,13 +0,0 @@
Index: cairo-1.15.4/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
width = bitmap->width;
height = bitmap->rows;
- if (width == 0 || height == 0) {
+ if (width == 0 || height == 0 || bitmap->buffer == NULL) {
*surface = (cairo_image_surface_t *)
cairo_image_surface_create_for_data (NULL, format, 0, 0, 0);
return (*surface)->base.status;

View File

@ -1,15 +0,0 @@
--- 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 @@
}
n = new;
d = (uint32_t *) data;
- do {
+ while (c--) {
*n++ = bswap_32 (*d);
d++;
- } while (--c);
+ }
data = (uint8_t *) new;
}
break;

View File

@ -0,0 +1,94 @@
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,
)

25
cairo/xlib-xcb.diff Normal file
View File

@ -0,0 +1,25 @@
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