[packages/libreoffice] up to 7.2.0.3

atler atler at pld-linux.org
Thu Aug 12 20:15:36 CEST 2021


commit c1940ea3a6b3922774ca64e9690fd2a4a71581db
Author: Jan Palus <atler at pld-linux.org>
Date:   Thu Aug 12 20:11:18 2021 +0200

    up to 7.2.0.3
    
    - patch skia to fix build with freetype 2.11
    - use internal libcmis (libreoffice codebase relies on own patches)

 disable-failing-test.patch                   |  25 +-
 gcc11.patch                                  |  28 -
 libreoffice-upgrade-liborcus-to-0.16.0.patch | 805 ---------------------------
 libreoffice.spec                             | 145 +++--
 pld-skia-patches.patch                       |  10 +
 skia-freetype2.11.patch                      |  37 ++
 6 files changed, 114 insertions(+), 936 deletions(-)
---
diff --git a/libreoffice.spec b/libreoffice.spec
index b2b8de1..35b157f 100644
--- a/libreoffice.spec
+++ b/libreoffice.spec
@@ -33,6 +33,7 @@
 
 %bcond_with	system_agg		# system agg library (not supported as of 6.4.x, pdfium uses included version)
 %bcond_without	system_beanshell	# system Java BeanShell library
+%bcond_with	system_cmis		# system libcmis library (build fails)
 %bcond_with	system_coinmp		# system CoinMP library (not in PLD yet)
 %bcond_with	system_hsqldb		# system Java HSQLDB library
 %bcond_without	system_hunspell		# system hunspell library
@@ -53,29 +54,29 @@
 %define		with_qt5	1
 %endif
 
-%define		major_ver	6.4.7
+%define		major_ver	7.2.0
 %define		qt5_ver		5.6
 
 Summary:	LibreOffice - powerful office suite
 Summary(pl.UTF-8):	LibreOffice - potężny pakiet biurowy
 Name:		libreoffice
-Version:	%{major_ver}.2
-Release:	6
+Version:	%{major_ver}.3
+Release:	1
 License:	GPL/LGPL
 Group:		X11/Applications
 Source0:	http://download.documentfoundation.org/libreoffice/src/%{major_ver}/%{name}-%{version}.tar.xz
-# Source0-md5:	123a79615835b84e63db0e73616de42d
+# Source0-md5:	2e994b22a38dfd4e76d90552566ad533
 Source1:	http://download.documentfoundation.org/libreoffice/src/%{major_ver}/%{name}-dictionaries-%{version}.tar.xz
-# Source1-md5:	83110d0469eac3c6eb02706f9c971d89
+# Source1-md5:	a92d627c04334cb56f9b722e1e2be78c
 Source2:	http://download.documentfoundation.org/libreoffice/src/%{major_ver}/%{name}-help-%{version}.tar.xz
-# Source2-md5:	12d7df4d251c3a12cc328b7386b85883
+# Source2-md5:	70a9677a664e4ed0153524e803cea16e
 Source3:	http://download.documentfoundation.org/libreoffice/src/%{major_ver}/%{name}-translations-%{version}.tar.xz
-# Source3-md5:	4c56cbcfea204bd0ee0ad4ddc37c0283
+# Source3-md5:	30537a2522c857b024a8f7309bba4fdd
 
 # make (download|fetch) DO_FETCH_TARBALLS=1 WGET=wget
 # but not sure if all are needed?
-Source20:	http://dev-www.libreoffice.org/src/pdfium-4137.tar.bz2
-# Source20-md5:	f9524b0fa40702d2891d0f8ae612adbf
+Source20:	http://dev-www.libreoffice.org/src/pdfium-4500.tar.bz2
+# Source20-md5:	d9bc09c21cbbc7053b9678f2a9b761ae
 Source21:	http://dev-www.libreoffice.org/src/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
 # Source21-md5:	17410483b5b5f267aa18b7e00b65e6e0
 Source22:	http://dev-www.libreoffice.org/src/CoinMP-1.7.6.tgz
@@ -86,20 +87,26 @@ Source24:	http://dev-www.libreoffice.org/src/0168229624cfac409e766913506961a8-uc
 # Source24-md5:	0168229624cfac409e766913506961a8
 Source25:	http://dev-www.libreoffice.org/src/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip
 # Source25-md5:	35c94d2df8893241173de1d16b6034c0
-Source26:	https://dev-www.libreoffice.org/extern/odfvalidator-1.2.0-incubating-SNAPSHOT-jar-with-dependencies-971c54fd38a968f5860014b44301872706f9e540.jar
-# Source26-md5:	52edf061bc1063dd624cf69170db4d5f
+Source26:	https://dev-www.libreoffice.org/extern/odfvalidator-0.9.0-RC2-SNAPSHOT-jar-with-dependencies-2726ab578664434a545f8379a01a9faffac0ae73.jar
+# Source26-md5:	80e162d2adfd99057d1e0c62c3883364
 Source27:	http://dev-www.libreoffice.org/src/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip
 # Source27-md5:	a7983f859eafb2677d7ff386a023bc40
-Source28:	https://dev-www.libreoffice.org/extern/884ed41809687c3e168fc7c19b16585149ff058eca79acbf3ee784f6630704cc-opens___.ttf
-# Source28-md5:	866ba2ca4188f1610b121dfd514a17e8
+Source28:	https://dev-www.libreoffice.org/extern/f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
+# Source28-md5:	09c7414a011363c72248c7bf3a23d758
 Source29:	https://dev-www.libreoffice.org/src/QR-Code-generator-1.4.0.tar.gz
 # Source29-md5:	0e81d36829be287ff27ae802e0587463
 Source30:	https://dev-www.libreoffice.org/extern/8249374c274932a21846fa7629c2aa9b-officeotron-0.7.4-master.jar
 # Source30-md5:	8249374c274932a21846fa7629c2aa9b
+Source31:	https://dev-www.libreoffice.org/src/dtoa-20180411.tgz
+# Source31-md5:	4295bad62b2524793d8a7ba3e7385501
+Source32:	https://dev-www.libreoffice.org/src/skia-m90-45c57e116ee0ce214bdf78405a4762722e4507d9.tar.xz
+# Source32-md5:	76729a69e8ab04f49987c7aa701cadc4
+Source33:	https://dev-www.libreoffice.org/src/libcmis-0.5.2.tar.xz
+# Source33-md5:	3653bc54e1bcd17ae09a1a7086daa38b
+Source34:	skia-freetype2.11.patch
 
 Patch0:		disable-failing-test.patch
-Patch1:		%{name}-upgrade-liborcus-to-0.16.0.patch
-Patch2:		gcc11.patch
+Patch1:		pld-skia-patches.patch
 
 URL:		http://www.documentfoundation.org/
 BuildRequires:	/usr/bin/getopt
@@ -114,7 +121,8 @@ BuildRequires:	automake >= 1:1.9
 BuildRequires:	bash
 BuildRequires:	bison >= 2.0
 BuildRequires:	bluez-libs-devel
-BuildRequires:	boost-devel >= 1.47
+BuildRequires:	boost-devel >= 1.66
+BuildRequires:	box2d-devel
 BuildRequires:	cairo-devel >= 1.8.0
 %{?with_ccache:BuildRequires:	ccache}
 BuildRequires:	clucene-core-devel >= 2.3
@@ -137,7 +145,7 @@ BuildRequires:	gpgme-c++-devel
 BuildRequires:	graphite2-devel >= 0.9.3
 BuildRequires:	gstreamer-devel >= 1.0
 BuildRequires:	gstreamer-plugins-base-devel >= 1.0
-%{?with_gtk3:BuildRequires:	gtk+3-devel >= 3.18}
+%{?with_gtk3:BuildRequires:	gtk+3-devel >= 3.20}
 BuildRequires:	harfbuzz-icu-devel >= 0.9.42
 %{?with_system_hunspell:BuildRequires:	hunspell-devel >= 1.2.2}
 %{?with_system_hyphen:BuildRequires:	hyphen-devel}
@@ -175,7 +183,7 @@ BuildRequires:	libjpeg-devel
 BuildRequires:	liblangtag-devel >= 0.4.0
 BuildRequires:	libmspub-devel >= 0.1
 BuildRequires:	libmwaw-devel >= 0.3.1
-BuildRequires:	libnumbertext-devel >= 1.0.0
+BuildRequires:	libnumbertext-devel >= 1.0.6
 BuildRequires:	libodfgen-devel >= 0.1.1
 BuildRequires:	liborcus-devel >= 0.16.0
 BuildRequires:	libpagemaker-devel >= 0.0.2
@@ -202,7 +210,7 @@ BuildRequires:	mdds-devel >= 1.5.0
 %{?with_mono:BuildRequires:	mono-static >= 1.2.3}
 BuildRequires:	mysql-devel >= 5
 BuildRequires:	mythes-devel >= 1.2
-BuildRequires:	neon-devel >= 0.26.0
+BuildRequires:	neon-devel >= 0.31.2
 BuildRequires:	nspr-devel >= 1:4.8
 BuildRequires:	nss-devel >= 1:3.10
 BuildRequires:	openldap-devel
@@ -211,7 +219,7 @@ BuildRequires:	pango-devel >= 1:1.17.3
 BuildRequires:	perl-Archive-Zip
 BuildRequires:	perl-base >= 5
 BuildRequires:	perl-devel >= 5
-BuildRequires:	pkgconfig
+BuildRequires:	pkgconfig >= 1:0.9.0
 BuildRequires:	poppler-cpp-devel >= 0.12.0
 BuildRequires:	poppler-devel >= 0.12.0
 %{?with_pgsql:BuildRequires:	postgresql-devel}
@@ -226,6 +234,7 @@ BuildRequires:	sane-backends-devel
 BuildRequires:	sed >= 4.0
 BuildRequires:	startup-notification-devel >= 0.5
 BuildRequires:	systemtap-sdt-devel
+BuildRequires:	tar >= 1:1.22
 BuildRequires:	unixODBC-devel >= 2.2.12-2
 BuildRequires:	unzip
 BuildRequires:	xmlsec1-nss-devel >= 1.2.28
@@ -237,13 +246,14 @@ BuildRequires:	xorg-lib-libXext-devel
 BuildRequires:	xorg-lib-libXinerama-devel
 BuildRequires:	xorg-lib-libXrandr-devel >= 1.2
 BuildRequires:	xorg-lib-libXrender-devel
+BuildRequires:	xz
 BuildRequires:	zip >= 3.0
 BuildRequires:	zlib-devel
 %if %{with java}
 BuildRequires:	ant >= 1.7.0
 BuildRequires:	ant-apache-regexp
-BuildRequires:	jdk >= 1.8
-BuildRequires:	jre-X11 >= 1.8
+BuildRequires:	jdk >= 1.9
+BuildRequires:	jre >= 1.9
 %endif
 %if %{with kde5}
 BuildRequires:	kf5-kconfig-devel >= 5.0
@@ -344,7 +354,7 @@ Summary(pl.UTF-8):	Interfejs GTK+ 3 dla LibreOffice
 Group:		X11/Libraries
 Requires:	%{name}-core = %{version}-%{release}
 Requires:	glib2 >= 1:2.38
-Requires:	gtk+3 >= 3.18
+Requires:	gtk+3 >= 3.20
 Obsoletes:	libreoffice-libs-gtk-common < 6.4.5.2-1
 Obsoletes:	libreoffice-libs-gtk2 < 6.4.5.2-1
 
@@ -403,7 +413,7 @@ Requires:	libpagemaker >= 0.0.2
 Requires:	libraptor2 >= 2.0.7
 Requires:	librevenge >= 0.0.1
 Requires:	mktemp
-Requires:	neon >= 0.26.0
+Requires:	neon >= 0.31.2
 Requires:	nspr >= 1:4.8
 Requires:	nss >= 1:3.10
 Requires:	redland >= 1.0.16
@@ -2843,7 +2853,6 @@ oraz narzędzie ui-previewer do sprawdzania wyglądu okien dialogowych.
 %setup -q -a1 -a2 -a3
 %patch0 -p1
 %patch1 -p1
-%patch2 -p1
 
 for dir in *-%{version}; do
 	[ -f $dir/ChangeLog ] && %{__mv} $dir/ChangeLog ChangeLog-$dir
@@ -2863,8 +2872,15 @@ ln %{SOURCE27} ext_sources
 ln %{SOURCE28} ext_sources
 ln %{SOURCE29} ext_sources
 ln %{SOURCE30} ext_sources
+ln %{SOURCE31} ext_sources
+ln %{SOURCE32} ext_sources
+%if %{without system_cmis}
+ln %{SOURCE33} ext_sources
+%endif
 :> src.downloaded
 
+ln %{SOURCE34} external/skia
+
 %build
 # Make sure we have /proc mounted - otherwise idlc will fail later.
 if [ ! -f /proc/cpuinfo ]; then
@@ -2889,9 +2905,6 @@ export CXX="%{__cxx}"
 export CPP="%{__cpp}"
 
 export IGNORE_MANIFEST_CHANGES=1
-export QT4INC="%{_includedir}/qt4"
-export QT4LIB="%{_libdir}"
-export QT4DIR="%{_libdir}/qt4"
 
 %if %{with java}
 export JAVA_HOME="%{java_home}"
@@ -2943,6 +2956,7 @@ export PATH=$PATH:%{_libdir}/interbase/bin
 	--enable-scripting-javascript \
 	--enable-split-app-modules \
 	--enable-split-opt-features \
+	--disable-zxing \
 	--with-build-version=%{version}-%{release} \
 	--with-external-dict-dir=%{_datadir}/myspell \
 	--with-external-tar=$(pwd)/ext_sources \
@@ -2958,6 +2972,7 @@ export PATH=$PATH:%{_libdir}/interbase/bin
 	%{?with_system_agg:--with-system-agg} \
 	%{!?with_system_hyphen:--without-system-altlinuxhyph} \
 	%{!?with_system_beanshell:--without-system-beanshell} \
+	%{__with_without system_cmis system-libcmis} \
 	%{!?with_system_coinmp:--without-system-coinmp} \
 	%{?with_system_hsqldb:--with-system-hsqldb} \
 	%{!?with_system_hunspell:--without-system-hunspell} \
@@ -3003,9 +3018,6 @@ rm -rf $RPM_BUILD_ROOT
 if [ ! -f makeinstall.stamp -o ! -d $RPM_BUILD_ROOT ]; then
 	%{__rm} -rf makeinstall.stamp installed.stamp $RPM_BUILD_ROOT
 
-	export QTINC="%{_includedir}/qt"
-	export QTLIB="%{_libdir}"
-	export QT4DIR="%{_libdir}/qt4"
 	export DESTDIR=$RPM_BUILD_ROOT
 	export TMP="%{tmpdir}"
 	export TMPDIR="%{tmpdir}"
@@ -3049,9 +3061,7 @@ if [ ! -f installed.stamp ]; then
 	%{__mv} $RPM_BUILD_ROOT%{_libdir}/%{name}/program/resource $RPM_BUILD_ROOT%{_datadir}/%{name}/program
 	ln -s ../../../share/%{name}/program/resource $RPM_BUILD_ROOT%{_libdir}/%{name}/program/resource
 
-	%{__rm} -r $RPM_BUILD_ROOT%{_desktopdir}/*.desktop \
-		$RPM_BUILD_ROOT%{_iconsdir}/{gnome,locolor} \
-		$RPM_BUILD_ROOT%{_datadir}/application-registry
+	%{__rm} -r $RPM_BUILD_ROOT%{_desktopdir}/*.desktop
 	for a in $RPM_BUILD_ROOT%{_datadir}/%{name}/share/xdg/*.desktop; do
 		cp $a $RPM_BUILD_ROOT%{_desktopdir}/libreoffice-$(basename "$a")
 	done
@@ -3330,12 +3340,7 @@ fi
 %attr(755,root,root) %{_libdir}/%{name}/program/libfps_officelo.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libfrmlo.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libfsstoragelo.so
-%attr(755,root,root) %{_libdir}/%{name}/program/libfwelo.so
-%attr(755,root,root) %{_libdir}/%{name}/program/libfwilo.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libfwklo.so
-%attr(755,root,root) %{_libdir}/%{name}/program/libfwllo.so
-%attr(755,root,root) %{_libdir}/%{name}/program/libfwmlo.so
-%attr(755,root,root) %{_libdir}/%{name}/program/libgielo.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libguesslanglo.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libhelplinkerlo.so
 %{!?with_system_hunspell:%attr(755,root,root) %{_libdir}/%{name}/program/libhunspell.so}
@@ -3356,10 +3361,8 @@ fi
 %attr(755,root,root) %{_libdir}/%{name}/program/liblocaledata_others.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libloglo.so
 %attr(755,root,root) %{_libdir}/%{name}/program/liblosessioninstalllo.so
-%attr(755,root,root) %{_libdir}/%{name}/program/libmcnttype.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libmigrationoo2lo.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libmigrationoo3lo.so
-%attr(755,root,root) %{_libdir}/%{name}/program/libmorklo.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libmozbootstraplo.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libmsfilterlo.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libmsformslo.so
@@ -3390,6 +3393,7 @@ fi
 %attr(755,root,root) %{_libdir}/%{name}/program/libsduilo.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libsfxlo.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libsimplecanvaslo.so
+%attr(755,root,root) %{_libdir}/%{name}/program/libskialo.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libslideshowlo.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libsofficeapp.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libsotlo.so
@@ -3491,6 +3495,7 @@ fi
 %{_libdir}/%{name}/program/classes/form.jar
 %{!?with_system_hsqldb:%{_libdir}/%{name}/program/classes/hsqldb.jar}
 %{_libdir}/%{name}/program/classes/js.jar
+%{_libdir}/%{name}/program/classes/libreoffice.jar
 %{_libdir}/%{name}/program/classes/officebean.jar
 %{_libdir}/%{name}/program/classes/query.jar
 %{_libdir}/%{name}/program/classes/report.jar
@@ -3508,53 +3513,27 @@ fi
 %dir %{_libdir}/%{name}/program/opencl
 %{_libdir}/%{name}/program/opencl/cl-test.ods
 %dir %{_libdir}/%{name}/program/opengl
-%{_libdir}/%{name}/program/opengl/areaHashCRC64TFragmentShader.glsl
-%{_libdir}/%{name}/program/opengl/areaScaleFastFragmentShader.glsl
-%{_libdir}/%{name}/program/opengl/areaScaleFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/basicFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/basicVertexShader.glsl
-%{_libdir}/%{name}/program/opengl/blendedTextureFragmentShader.glsl
-%{_libdir}/%{name}/program/opengl/blendedTextureVertexShader.glsl
-%{_libdir}/%{name}/program/opengl/combinedFragmentShader.glsl
-%{_libdir}/%{name}/program/opengl/combinedTextureFragmentShader.glsl
-%{_libdir}/%{name}/program/opengl/combinedTextureVertexShader.glsl
-%{_libdir}/%{name}/program/opengl/combinedVertexShader.glsl
-%{_libdir}/%{name}/program/opengl/convolutionFragmentShader.glsl
-%{_libdir}/%{name}/program/opengl/diffTextureFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/dissolveFragmentShader.glsl
-%{_libdir}/%{name}/program/opengl/dumbVertexShader.glsl
 %{_libdir}/%{name}/program/opengl/dummyVertexShader.glsl
 %{_libdir}/%{name}/program/opengl/fadeBlackFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/fadeFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/glitterFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/glitterVertexShader.glsl
-%{_libdir}/%{name}/program/opengl/greyscaleFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/honeycombFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/honeycombGeometryShader.glsl
 %{_libdir}/%{name}/program/opengl/honeycombVertexShader.glsl
-%{_libdir}/%{name}/program/opengl/invert50FragmentShader.glsl
-%{_libdir}/%{name}/program/opengl/linearGradientFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/linearMultiColorGradientFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/linearTwoColorGradientFragmentShader.glsl
-%{_libdir}/%{name}/program/opengl/lineFragmentShader.glsl
-%{_libdir}/%{name}/program/opengl/lineVertexShader.glsl
-%{_libdir}/%{name}/program/opengl/maskedTextureFragmentShader.glsl
-%{_libdir}/%{name}/program/opengl/maskedTextureVertexShader.glsl
-%{_libdir}/%{name}/program/opengl/maskFragmentShader.glsl
-%{_libdir}/%{name}/program/opengl/radialGradientFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/radialMultiColorGradientFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/radialTwoColorGradientFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/rectangularMultiColorGradientFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/rectangularTwoColorGradientFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/reflectionFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/reflectionVertexShader.glsl
-%{_libdir}/%{name}/program/opengl/replaceColorFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/rippleFragmentShader.glsl
-%{_libdir}/%{name}/program/opengl/solidFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/staticFragmentShader.glsl
-%{_libdir}/%{name}/program/opengl/textureFragmentShader.glsl
-%{_libdir}/%{name}/program/opengl/textureVertexShader.glsl
-%{_libdir}/%{name}/program/opengl/transformedTextureVertexShader.glsl
 %{_libdir}/%{name}/program/opengl/vortexFragmentShader.glsl
 %{_libdir}/%{name}/program/opengl/vortexGeometryShader.glsl
 %{_libdir}/%{name}/program/opengl/vortexVertexShader.glsl
@@ -3595,7 +3574,8 @@ fi
 %{_datadir}/%{name}/share/config/images_sifr_dark.zip
 %{_datadir}/%{name}/share/config/images_sifr_dark_svg.zip
 %{_datadir}/%{name}/share/config/images_sifr_svg.zip
-%{_datadir}/%{name}/share/config/images_tango.zip
+%{_datadir}/%{name}/share/config/images_sukapura.zip
+%{_datadir}/%{name}/share/config/images_sukapura_svg.zip
 %dir %{_datadir}/%{name}/share/config/soffice.cfg
 %dir %{_datadir}/%{name}/share/config/soffice.cfg/cui
 %{_datadir}/%{name}/share/config/soffice.cfg/cui/ui
@@ -3685,16 +3665,21 @@ fi
 %dir %{_datadir}/%{name}/share/registry/res
 %{_datadir}/%{name}/share/registry/res/fcfg_langpack_en-US.xcd
 
+%dir %{_datadir}/%{name}/share/skia
+%{_datadir}/%{name}/share/skia/skia_denylist_vulkan.xml
+
 %dir %{_datadir}/%{name}/share/theme_definitions
 %dir %{_datadir}/%{name}/share/theme_definitions/ios
 %{_datadir}/%{name}/share/theme_definitions/ios/*.svg
 %{_datadir}/%{name}/share/theme_definitions/ios/*.xml
 
 %dir %{_datadir}/%{name}/share/tipoftheday
-%{_datadir}/%{name}/share/tipoftheday/tipoftheday*.png
+%{_datadir}/%{name}/share/tipoftheday/*.gif
+%{_datadir}/%{name}/share/tipoftheday/*.png
 
 %dir %{_datadir}/%{name}/share/template
 %dir %{_datadir}/%{name}/share/template/common
+%{_datadir}/%{name}/share/template/common/draw
 %{_datadir}/%{name}/share/template/common/internal
 %{_datadir}/%{name}/share/template/common/officorr
 %{_datadir}/%{name}/share/template/common/offimisc
@@ -3710,6 +3695,9 @@ fi
 %{_datadir}/%{name}/share/template/common/wizard/report
 %{_datadir}/%{name}/share/template/common/wizard/styles
 
+%dir %{_datadir}/%{name}/share/toolbarmode
+%{_datadir}/%{name}/share/toolbarmode/*.png
+
 %dir %{_datadir}/%{name}/share/wizards
 %{_datadir}/%{name}/share/wizards/resources_en_US.properties
 
@@ -3735,7 +3723,6 @@ fi
 %attr(755,root,root) %{_libdir}/%{name}/program/unopkg
 %attr(755,root,root) %{_libdir}/%{name}/program/unopkg.bin
 %{_libdir}/%{name}/program/bootstraprc
-%{_libdir}/%{name}/program/flat_logo.svg
 %{_libdir}/%{name}/program/fundamentalrc
 %{_libdir}/%{name}/program/intro.png
 %{_libdir}/%{name}/program/redirectrc
@@ -3755,7 +3742,6 @@ fi
 
 %{_datadir}/mime/packages/libreoffice.xml
 %{_iconsdir}/hicolor/*/mimetypes/libreoffice-*.png
-%{_iconsdir}/hicolor/*/mimetypes/libreoffice-*.svg
 %{_iconsdir}/hicolor/*/apps/libreoffice-main.png
 %{_iconsdir}/hicolor/*/apps/libreoffice-main.svg
 %{_iconsdir}/hicolor/*/apps/libreoffice-chart.png
@@ -3767,9 +3753,6 @@ fi
 %{_iconsdir}/hicolor/*/apps/libreoffice-startcenter.png
 %{_iconsdir}/hicolor/*/apps/libreoffice-startcenter.svg
 
-%{_datadir}/mime-info/libreoffice.keys
-%{_datadir}/mime-info/libreoffice.mime
-
 %{_mandir}/man1/loffice.1
 %{_mandir}/man1/lofromtemplate.1
 %{_mandir}/man1/libreoffice.1*
@@ -3835,8 +3818,8 @@ fi
 %{_datadir}/%{name}/share/config/soffice.cfg/modules/dbtdata/popupmenu
 %{_datadir}/%{name}/share/config/soffice.cfg/modules/dbtdata/toolbar
 %{_datadir}/%{name}/share/registry/base.xcd
-%{_datadir}/appdata/libreoffice-base.appdata.xml
-%{_datadir}/appdata/org.libreoffice.kde.metainfo.xml
+%{_datadir}/metainfo/libreoffice-base.appdata.xml
+%{_datadir}/metainfo/org.libreoffice.kde.metainfo.xml
 
 %files calc
 %defattr(644,root,root,755)
@@ -3867,7 +3850,7 @@ fi
 %{_datadir}/%{name}/share/config/soffice.cfg/modules/scalc/toolbar
 %{_datadir}/%{name}/share/config/soffice.cfg/modules/scalc/ui
 %{_datadir}/%{name}/share/registry/calc.xcd
-%{_datadir}/appdata/libreoffice-calc.appdata.xml
+%{_datadir}/metainfo/libreoffice-calc.appdata.xml
 
 %files draw
 %defattr(644,root,root,755)
@@ -3884,7 +3867,7 @@ fi
 %{_datadir}/%{name}/share/config/soffice.cfg/modules/sdraw/toolbar
 %{_datadir}/%{name}/share/config/soffice.cfg/modules/sdraw/ui
 %{_datadir}/%{name}/share/registry/draw.xcd
-%{_datadir}/appdata/libreoffice-draw.appdata.xml
+%{_datadir}/metainfo/libreoffice-draw.appdata.xml
 
 %files emailmerge
 %defattr(644,root,root,755)
@@ -3917,7 +3900,7 @@ fi
 %{_datadir}/%{name}/share/config/soffice.cfg/modules/swriter/ui
 %{_datadir}/%{name}/share/config/soffice.cfg/writerperfect
 %{_datadir}/%{name}/share/registry/writer.xcd
-%{_datadir}/appdata/libreoffice-writer.appdata.xml
+%{_datadir}/metainfo/libreoffice-writer.appdata.xml
 
 %files impress
 %defattr(644,root,root,755)
@@ -3941,7 +3924,7 @@ fi
 %{_datadir}/%{name}/share/config/soffice.cfg/modules/simpress/ui
 %{_datadir}/%{name}/share/registry/impress.xcd
 %{_datadir}/%{name}/share/registry/ogltrans.xcd
-%{_datadir}/appdata/libreoffice-impress.appdata.xml
+%{_datadir}/metainfo/libreoffice-impress.appdata.xml
 
 %files math
 %defattr(644,root,root,755)
@@ -3973,7 +3956,6 @@ fi
 
 %files graphicfilter
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/%{name}/program/libflashlo.so
 %attr(755,root,root) %{_libdir}/%{name}/program/libsvgfilterlo.so
 %{_datadir}/%{name}/share/registry/graphicfilter.xcd
 %attr(755,root,root) %{_libdir}/%{name}/program/libgraphicfilterlo.so
@@ -3988,7 +3970,6 @@ fi
 %if %{with pgsql}
 %files postgresql
 %defattr(644,root,root,755)
-%{_libdir}/%{name}/program/postgresql-sdbc.ini
 %{_libdir}/%{name}/program/services/postgresql-sdbc.rdb
 %{_datadir}/%{name}/share/registry/postgresql.xcd
 %attr(755,root,root) %{_libdir}/%{name}/program/libpostgresql-sdbclo.so
diff --git a/disable-failing-test.patch b/disable-failing-test.patch
index 320865b..3bfe16e 100644
--- a/disable-failing-test.patch
+++ b/disable-failing-test.patch
@@ -5,23 +5,12 @@
      CPPUNIT_TEST_SUITE(SdImportTest);
  
 -    CPPUNIT_TEST(testDocumentLayout);
-     CPPUNIT_TEST(testSmoketest);
-     CPPUNIT_TEST(testN759180);
-     CPPUNIT_TEST(testN778859);
---- libreoffice-6.0.0.3/sw/qa/extras/uiwriter/uiwriter.cxx~	2018-01-24 21:31:03.000000000 +0100
-+++ libreoffice-6.0.0.3/sw/qa/extras/uiwriter/uiwriter.cxx	2018-02-02 08:41:59.126211831 +0100
-@@ -532,7 +532,6 @@ public:
-     CPPUNIT_TEST(testTdf114306_2);
-     CPPUNIT_TEST(testTdf113481);
-     CPPUNIT_TEST(testTdf115013);
--    CPPUNIT_TEST(testTdf114536);
-     CPPUNIT_TEST(testTdf115065);
-     CPPUNIT_TEST(testTdf115132);
-     CPPUNIT_TEST(testXDrawPagesSupplier);
-
+     CPPUNIT_TEST(testTdf142913);
+     CPPUNIT_TEST(testTdf142590);
+     CPPUNIT_TEST(testCustomSlideShow);
 --- libreoffice-6.3.0.4/dbaccess/Module_dbaccess.mk~	2019-08-06 19:26:35.000000000 +0200
 +++ libreoffice-6.3.0.4/dbaccess/Module_dbaccess.mk	2019-08-09 09:06:37.432422956 +0200
-@@ -33,24 +33,6 @@
+@@ -33,18 +33,6 @@
  ))
  
  ifneq ($(OS),iOS)
@@ -32,12 +21,6 @@
 -    $(if $(ENABLE_JAVA),CppunitTest_dbaccess_tdf126268) \
 -))
 -
--# remove if we have a be file for this
--ifeq ($(ENDIANNESS),little)
--$(eval $(call gb_Module_add_check_targets,dbaccess,\
--    CppunitTest_dbaccess_firebird_regression_test \
--))
--endif
 -$(eval $(call gb_Module_add_check_targets,dbaccess,\
 -    CppunitTest_dbaccess_firebird_test \
 -))
diff --git a/gcc11.patch b/gcc11.patch
deleted file mode 100644
index b7d5eb8..0000000
--- a/gcc11.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 8830cf86b146b1252ac37f351a23246088d569b0 Mon Sep 17 00:00:00 2001
-From: Jeff Law <law at redhat.com>
-Date: Tue, 3 Nov 2020 08:05:03 -0700
-Subject: [PATCH] include cstddef for gcc11
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Change-Id: I2f845ce9bb660ad6c1eea80ea81dd71add2c0db1
-Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107191
-Tested-by: Jenkins
-Reviewed-by: Caolán McNamara <caolanm at redhat.com>
----
- include/o3tl/lru_map.hxx | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/include/o3tl/lru_map.hxx b/include/o3tl/lru_map.hxx
-index c7132fd079c43..96fb3161782d7 100644
---- a/include/o3tl/lru_map.hxx
-+++ b/include/o3tl/lru_map.hxx
-@@ -14,6 +14,7 @@
- #include <cassert>
- #include <list>
- #include <unordered_map>
-+#include <cstddef>
- 
- namespace o3tl
- {
diff --git a/libreoffice-upgrade-liborcus-to-0.16.0.patch b/libreoffice-upgrade-liborcus-to-0.16.0.patch
deleted file mode 100644
index cc137c4..0000000
--- a/libreoffice-upgrade-liborcus-to-0.16.0.patch
+++ /dev/null
@@ -1,805 +0,0 @@
-From 9ffb1f6ac0f11fd446fd0e84b8dc69898691b4d3 Mon Sep 17 00:00:00 2001
-From: Kohei Yoshida <kohei at libreoffice.org>
-Date: Wed, 9 Sep 2020 21:23:48 -0400
-Subject: [PATCH] Upgrade liborcus to 0.16.0.
-
-Change-Id: Iae29fb26417dfc161698a81bee84e81545969065
-Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102502
-Tested-by: Jenkins
-Reviewed-by: Kohei Yoshida <kohei at libreoffice.org>
----
- RepositoryExternal.mk                         |   4 +-
- configure.ac                                  |   2 +-
- download.lst                                  |   4 +-
- ...k-all-untentionally-unused-variables.patch | 376 ++++++++++++++++++
- external/liborcus/ExternalPackage_liborcus.mk |   8 +-
- external/liborcus/ExternalProject_liborcus.mk |   4 +-
- external/liborcus/Library_orcus-parser.mk     |   1 +
- external/liborcus/Library_orcus.mk            |   4 +
- external/liborcus/UnpackedTarball_liborcus.mk |   1 +
- .../liborcus/windows-constants-hack.patch     |   2 +-
- sc/source/filter/inc/orcusinterface.hxx       |  21 +-
- sc/source/filter/orcus/interface.cxx          |  82 ++--
- sc/source/filter/orcus/xmlcontext.cxx         |   7 +-
- sc/source/ui/xmlsource/xmlsourcedlg.cxx       |   6 +-
- 14 files changed, 475 insertions(+), 47 deletions(-)
- create mode 100644 external/liborcus/0001-Mark-all-untentionally-unused-variables.patch
-
-diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
-index 7f623ac..df765fa 100644
---- a/RepositoryExternal.mk
-+++ b/RepositoryExternal.mk
-@@ -3281,7 +3281,7 @@ $(call gb_LinkTarget_set_include,$(1),\
- )
- 
- $(call gb_LinkTarget_add_libs,$(1),\
--       -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/liborcus/.libs -lorcus-0.15 \
-+       -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/liborcus/.libs -lorcus-0.16 \
- )
- 
- $(if $(SYSTEM_BOOST), \
-@@ -3300,7 +3300,7 @@ $(call gb_LinkTarget_set_include,$(1),\
- )
- 
- $(call gb_LinkTarget_add_libs,$(1),\
--	-L$(call gb_UnpackedTarball_get_dir,liborcus)/src/parser/.libs -lorcus-parser-0.15 \
-+	-L$(call gb_UnpackedTarball_get_dir,liborcus)/src/parser/.libs -lorcus-parser-0.16 \
- )
- 
- endef
-diff --git a/configure.ac b/configure.ac
-index ce14b54..36342b1 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -9827,7 +9827,7 @@ AC_SUBST(ENABLE_FUZZERS)
- dnl ===================================================================
- dnl Orcus
- dnl ===================================================================
--libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.15 >= 0.15.0])
-+libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
- if test "$with_system_orcus" != "yes"; then
-     if test "$SYSTEM_BOOST" = "TRUE"; then
-         # ===========================================================
-diff --git a/download.lst b/download.lst
-index 6398a09..1f3b4b1 100644
---- a/download.lst
-+++ b/download.lst
-@@ -196,8 +196,8 @@
- export OPENLDAP_TARBALL := openldap-2.4.45.tgz
- export OPENSSL_SHA256SUM := 14cb464efe7ac6b54799b34456bd69558a749a4931ecfd9cf9f71d7881cac7bc
- export OPENSSL_TARBALL := openssl-1.0.2t.tar.gz
--export ORCUS_SHA256SUM := 0dd26f3f2e611c51df9ee02d6dbf08887989eaa417b73f6877cd0d94df795fc2
--export ORCUS_TARBALL := liborcus-0.15.3.tar.gz
-+export ORCUS_SHA256SUM := 854c6ec167ace59baa2984e175bac7b5b2af91bfde4bb10d2088b87a51ed76ec
-+export ORCUS_TARBALL := liborcus-0.16.0.tar.bz2
- export OWNCLOUD_ANDROID_LIB_SHA256SUM := b18b3e3ef7fae6a79b62f2bb43cc47a5346b6330f6a383dc4be34439aca5e9fb
- export OWNCLOUD_ANDROID_LIB_TARBALL := owncloud-android-library-0.9.4-no-binary-deps.tar.gz
- export PAGEMAKER_SHA256SUM := 66adacd705a7d19895e08eac46d1e851332adf2e736c566bef1164e7a442519d
-diff --git a/external/liborcus/0001-Mark-all-untentionally-unused-variables.patch b/external/liborcus/0001-Mark-all-untentionally-unused-variables.patch
-new file mode 100644
-index 0000000..b0f6a57
---- /dev/null
-+++ b/external/liborcus/0001-Mark-all-untentionally-unused-variables.patch
-@@ -0,0 +1,376 @@
-+From 6d34c41b661a9e8dddf6d08bf1f3c1fd4f5581da Mon Sep 17 00:00:00 2001
-+From: Kohei Yoshida <kohei.yoshida at gmail.com>
-+Date: Fri, 11 Sep 2020 21:39:09 -0400
-+Subject: [PATCH] Mark all untentionally unused variables.
-+
-+---
-+ include/orcus/css_parser.hpp       | 70 ++++++++++++++++++++++++------
-+ include/orcus/csv_parser.hpp       |  5 ++-
-+ include/orcus/json_parser.hpp      | 15 +++++--
-+ include/orcus/sax_parser.hpp       | 35 ++++++++++++---
-+ include/orcus/sax_token_parser.hpp | 20 +++++++--
-+ include/orcus/yaml_parser.hpp      | 10 ++++-
-+ 6 files changed, 124 insertions(+), 31 deletions(-)
-+
-+diff --git a/include/orcus/css_parser.hpp b/include/orcus/css_parser.hpp
-+index cdfae5e0..3e96980b 100644
-+--- a/include/orcus/css_parser.hpp
-++++ b/include/orcus/css_parser.hpp
-+@@ -31,23 +31,44 @@ namespace orcus {
-+ class css_handler
-+ {
-+ public:
-+-    void at_rule_name(const char* p, size_t n) {}
-++    void at_rule_name(const char* p, size_t n)
-++    {
-++        (void)p; (void)n;
-++    }
-+ 
-+-    void simple_selector_type(const char* p, size_t n) {}
-++    void simple_selector_type(const char* p, size_t n)
-++    {
-++        (void)p; (void)n;
-++    }
-+ 
-+-    void simple_selector_class(const char* p, size_t n) {}
-++    void simple_selector_class(const char* p, size_t n)
-++    {
-++        (void)p; (void)n;
-++    }
-+ 
-+-    void simple_selector_pseudo_element(orcus::css::pseudo_element_t pe) {}
-++    void simple_selector_pseudo_element(orcus::css::pseudo_element_t pe)
-++    {
-++        (void)pe;
-++    }
-+ 
-+-    void simple_selector_pseudo_class(orcus::css::pseudo_class_t pc) {}
-++    void simple_selector_pseudo_class(orcus::css::pseudo_class_t pc)
-++    {
-++        (void)pc;
-++    }
-+ 
-+-    void simple_selector_id(const char* p, size_t n) {}
-++    void simple_selector_id(const char* p, size_t n)
-++    {
-++        (void)p; (void)n;
-++    }
-+ 
-+     void end_simple_selector() {}
-+ 
-+     void end_selector() {}
-+ 
-+-    void combinator(orcus::css::combinator_t combinator) {}
-++    void combinator(orcus::css::combinator_t combinator)
-++    {
-++        (void)combinator;
-++    }
-+ 
-+     /**
-+      * Called at each property name.
-+@@ -55,7 +76,10 @@ public:
-+      * @param p pointer to the char-array containing the property name string.
-+      * @param n length of the property name string.
-+      */
-+-    void property_name(const char* p, size_t n) {}
-++    void property_name(const char* p, size_t n)
-++    {
-++        (void)p; (void)n;
-++    }
-+ 
-+     /**
-+      * Called at each ordinary property value string.
-+@@ -63,7 +87,10 @@ public:
-+      * @param p pointer to the char-array containing the value string.
-+      * @param n length of the value string.
-+      */
-+-    void value(const char* p, size_t n) {}
-++    void value(const char* p, size_t n)
-++    {
-++        (void)p; (void)n;
-++    }
-+ 
-+     /**
-+      * Called at each RGB color value of a property.
-+@@ -72,7 +99,10 @@ public:
-+      * @param green value of green (0-255)
-+      * @param blue value of blue (0-255)
-+      */
-+-    void rgb(uint8_t red, uint8_t green, uint8_t blue) {}
-++    void rgb(uint8_t red, uint8_t green, uint8_t blue)
-++    {
-++        (void)red; (void)green; (void)blue;
-++    }
-+ 
-+     /**
-+      * Called at each RGB color value of a property with alpha transparency
-+@@ -83,7 +113,10 @@ public:
-+      * @param blue value of blue (0-255)
-+      * @param alpha alpha transparency value
-+      */
-+-    void rgba(uint8_t red, uint8_t green, uint8_t blue, double alpha) {}
-++    void rgba(uint8_t red, uint8_t green, uint8_t blue, double alpha)
-++    {
-++        (void)red; (void)green; (void)blue; (void)alpha;
-++    }
-+ 
-+     /**
-+      * Called at each HSL color value of a property.
-+@@ -92,7 +125,10 @@ public:
-+      * @param sat saturation
-+      * @param light lightness
-+      */
-+-    void hsl(uint8_t hue, uint8_t sat, uint8_t light) {}
-++    void hsl(uint8_t hue, uint8_t sat, uint8_t light)
-++    {
-++        (void)hue; (void)sat; (void)light;
-++    }
-+ 
-+     /**
-+      * Called at each HSL color value of a property with alpha transparency
-+@@ -103,7 +139,10 @@ public:
-+      * @param light lightness
-+      * @param alpha alpha value
-+      */
-+-    void hsla(uint8_t hue, uint8_t sat, uint8_t light, double alpha) {}
-++    void hsla(uint8_t hue, uint8_t sat, uint8_t light, double alpha)
-++    {
-++        (void)hue; (void)sat; (void)light; (void)alpha;
-++    }
-+ 
-+     /**
-+      * Called at each URL value of a property.
-+@@ -111,7 +150,10 @@ public:
-+      * @param p pointer to the char-array containing the URL value string.
-+      * @param n length of the URL value string.
-+      */
-+-    void url(const char* p, size_t n) {}
-++    void url(const char* p, size_t n)
-++    {
-++        (void)p; (void)n;
-++    }
-+ 
-+     /**
-+      * Called when the parsing begins.
-+diff --git a/include/orcus/csv_parser.hpp b/include/orcus/csv_parser.hpp
-+index a873b0f2..27b4f924 100644
-+--- a/include/orcus/csv_parser.hpp
-++++ b/include/orcus/csv_parser.hpp
-+@@ -47,7 +47,10 @@ public:
-+      *                  the text content is guaranteed to be valid so long as
-+      *                  the original CSV stream content is valid.
-+      */
-+-    void cell(const char* p, size_t n, bool transient) {}
-++    void cell(const char* p, size_t n, bool transient)
-++    {
-++        (void)p; (void)n; (void)transient;
-++    }
-+ };
-+ 
-+ template<typename _Handler>
-+diff --git a/include/orcus/json_parser.hpp b/include/orcus/json_parser.hpp
-+index 51a3d7cc..ef22b3a8 100644
-+--- a/include/orcus/json_parser.hpp
-++++ b/include/orcus/json_parser.hpp
-+@@ -54,7 +54,10 @@ public:
-+      *                  pointer points to somewhere in the JSON stream being
-+      *                  parsed.
-+      */
-+-    void object_key(const char* p, size_t len, bool transient) {}
-++    void object_key(const char* p, size_t len, bool transient)
-++    {
-++        (void)p; (void)len; (void)transient;
-++    }
-+ 
-+     /**
-+      * Called when the closing curly brace of an object is encountered.
-+@@ -87,14 +90,20 @@ public:
-+      *                  pointer points to somewhere in the JSON stream being
-+      *                  parsed.
-+      */
-+-    void string(const char* p, size_t len, bool transient) {}
-++    void string(const char* p, size_t len, bool transient)
-++    {
-++        (void)p; (void)len; (void)transient;
-++    }
-+ 
-+     /**
-+      * Called when a numeric value is encountered.
-+      *
-+      * @param val numeric value.
-+      */
-+-    void number(double val) {}
-++    void number(double val)
-++    {
-++        (void)val;
-++    }
-+ };
-+ 
-+ /**
-+diff --git a/include/orcus/sax_parser.hpp b/include/orcus/sax_parser.hpp
-+index 73c17d06..3b21bfdf 100644
-+--- a/include/orcus/sax_parser.hpp
-++++ b/include/orcus/sax_parser.hpp
-+@@ -30,7 +30,10 @@ public:
-+      *
-+      * @param param struct containing doctype declaration data.
-+      */
-+-    void doctype(const orcus::sax::doctype_declaration& param) {}
-++    void doctype(const orcus::sax::doctype_declaration& param)
-++    {
-++        (void)param;
-++    }
-+ 
-+     /**
-+      * Called when <?... is encountered, where the '...' may be an
-+@@ -39,28 +42,40 @@ public:
-+      *
-+      * @param decl name of the identifier.
-+      */
-+-    void start_declaration(const orcus::pstring& decl) {}
-++    void start_declaration(const orcus::pstring& decl)
-++    {
-++        (void)decl;
-++    }
-+ 
-+     /**
-+      * Called when the closing tag (>) of a <?... ?> is encountered.
-+      *
-+      * @param decl name of the identifier.
-+      */
-+-    void end_declaration(const orcus::pstring& decl) {}
-++    void end_declaration(const orcus::pstring& decl)
-++    {
-++        (void)decl;
-++    }
-+ 
-+     /**
-+      * Called at the start of each element.
-+      *
-+      * @param elem information of the element being parsed.
-+      */
-+-    void start_element(const orcus::sax::parser_element& elem) {}
-++    void start_element(const orcus::sax::parser_element& elem)
-++    {
-++        (void)elem;
-++    }
-+ 
-+     /**
-+      * Called at the end of each element.
-+      *
-+      * @param elem information of the element being parsed.
-+      */
-+-    void end_element(const orcus::sax::parser_element& elem) {}
-++    void end_element(const orcus::sax::parser_element& elem)
-++    {
-++        (void)elem;
-++    }
-+ 
-+     /**
-+      * Called when a segment of a text content is parsed.  Each text content
-+@@ -76,7 +91,10 @@ public:
-+      *                  a non-text value or be interned within the scope of
-+      *                  the callback</em>.
-+      */
-+-    void characters(const orcus::pstring& val, bool transient) {}
-++    void characters(const orcus::pstring& val, bool transient)
-++    {
-++        (void)val; (void)transient;
-++    }
-+ 
-+     /**
-+      * Called upon parsing of an attribute of an element.  Note that <em>when
-+@@ -86,7 +104,10 @@ public:
-+      *
-+      * @param attr struct containing attribute information.
-+      */
-+-    void attribute(const orcus::sax::parser_attribute& attr) {}
-++    void attribute(const orcus::sax::parser_attribute& attr)
-++    {
-++        (void)attr;
-++    }
-+ };
-+ 
-+ /**
-+diff --git a/include/orcus/sax_token_parser.hpp b/include/orcus/sax_token_parser.hpp
-+index 1452bc27..6b1b1de4 100644
-+--- a/include/orcus/sax_token_parser.hpp
-++++ b/include/orcus/sax_token_parser.hpp
-+@@ -71,7 +71,10 @@ public:
-+      *
-+      * @param decl struct containing the attributes of the XML declaration.
-+      */
-+-    void declaration(const orcus::xml_declaration_t& decl) {}
-++    void declaration(const orcus::xml_declaration_t& decl)
-++    {
-++        (void)decl;
-++    }
-+ 
-+     /**
-+      * Called at the start of each element.
-+@@ -79,7 +82,10 @@ public:
-+      * @param elem struct containing the element's information as well as all
-+      *             the attributes that belong to the element.
-+      */
-+-    void start_element(const orcus::xml_token_element_t& elem) {}
-++    void start_element(const orcus::xml_token_element_t& elem)
-++    {
-++        (void)elem;
-++    }
-+ 
-+     /**
-+      * Called at the end of each element.
-+@@ -87,7 +93,10 @@ public:
-+      * @param elem struct containing the element's information as well as all
-+      *             the attributes that belong to the element.
-+      */
-+-    void end_element(const orcus::xml_token_element_t& elem) {}
-++    void end_element(const orcus::xml_token_element_t& elem)
-++    {
-++        (void)elem;
-++    }
-+ 
-+     /**
-+      * Called when a segment of a text content is parsed.  Each text content
-+@@ -103,7 +112,10 @@ public:
-+      *                  a non-text value or be interned within the scope of
-+      *                  the callback</em>.
-+      */
-+-    void characters(const orcus::pstring& val, bool transient) {}
-++    void characters(const orcus::pstring& val, bool transient)
-++    {
-++        (void)val; (void)transient;
-++    }
-+ };
-+ 
-+ /**
-+diff --git a/include/orcus/yaml_parser.hpp b/include/orcus/yaml_parser.hpp
-+index 797ebbec..8d16fbc7 100644
-+--- a/include/orcus/yaml_parser.hpp
-++++ b/include/orcus/yaml_parser.hpp
-+@@ -72,14 +72,20 @@ public:
-+      * @param p pointer to the first character of the string value.
-+      * @param len length of the string value.
-+      */
-+-    void string(const char* p, size_t n) {}
-++    void string(const char* p, size_t n)
-++    {
-++        (void)p; (void)n;
-++    }
-+ 
-+     /**
-+      * Called when a numeric value is encountered.
-+      *
-+      * @param val numeric value.
-+      */
-+-    void number(double val) {}
-++    void number(double val)
-++    {
-++        (void)val;
-++    }
-+ 
-+     /**
-+      * Called when a boolean 'true' keyword is encountered.
-+-- 
-+2.25.1
-+
-diff --git a/external/liborcus/ExternalPackage_liborcus.mk b/external/liborcus/ExternalPackage_liborcus.mk
-index 21dd1bf..7476918 100644
---- a/external/liborcus/ExternalPackage_liborcus.mk
-+++ b/external/liborcus/ExternalPackage_liborcus.mk
-@@ -12,11 +12,11 @@ $(eval $(call gb_ExternalPackage_ExternalPackage,liborcus,liborcus))
- $(eval $(call gb_ExternalPackage_use_external_project,liborcus,liborcus))
- 
- ifeq ($(OS),MACOSX)
--$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.15.0.dylib,src/liborcus/.libs/liborcus-0.15.0.dylib))
--$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.15.0.dylib,src/parser/.libs/liborcus-parser-0.15.0.dylib))
-+$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.16.0.dylib,src/liborcus/.libs/liborcus-0.16.0.dylib))
-+$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.16.0.dylib,src/parser/.libs/liborcus-parser-0.16.0.dylib))
- else ifeq ($(DISABLE_DYNLOADING),)
--$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.15.so.0,src/liborcus/.libs/liborcus-0.15.so.0.0.0))
--$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.15.so.0,src/parser/.libs/liborcus-parser-0.15.so.0.0.0))
-+$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.16.so.0,src/liborcus/.libs/liborcus-0.16.so.0.0.0))
-+$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.16.so.0,src/parser/.libs/liborcus-parser-0.16.so.0.0.0))
- endif
- 
- # vim: set noet sw=4 ts=4:
-diff --git a/external/liborcus/ExternalProject_liborcus.mk b/external/liborcus/ExternalProject_liborcus.mk
-index 38658cc..3671294 100644
---- a/external/liborcus/ExternalProject_liborcus.mk
-+++ b/external/liborcus/ExternalProject_liborcus.mk
-@@ -122,8 +122,8 @@
- 		   $(MAKE) \
- 		$(if $(filter MACOSX,$(OS)),\
- 			&& $(PERL) $(SRCDIR)/solenv/bin/macosx-change-install-names.pl shl OOO \
--				$(EXTERNAL_WORKDIR)/src/liborcus/.libs/liborcus-0.15.0.dylib \
--				$(EXTERNAL_WORKDIR)/src/parser/.libs/liborcus-parser-0.15.0.dylib \
-+				$(EXTERNAL_WORKDIR)/src/liborcus/.libs/liborcus-0.16.0.dylib \
-+				$(EXTERNAL_WORKDIR)/src/parser/.libs/liborcus-parser-0.16.0.dylib \
- 		) \
- 	)
- 
-diff --git a/external/liborcus/Library_orcus-parser.mk b/external/liborcus/Library_orcus-parser.mk
-index d3cbddb..4e46591 100644
---- a/external/liborcus/Library_orcus-parser.mk
-+++ b/external/liborcus/Library_orcus-parser.mk
-@@ -63,6 +63,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus-parser,\
- 	UnpackedTarball/liborcus/src/parser/tokens \
- 	UnpackedTarball/liborcus/src/parser/types \
- 	UnpackedTarball/liborcus/src/parser/xml_namespace \
-+	UnpackedTarball/liborcus/src/parser/xml_writer \
- 	UnpackedTarball/liborcus/src/parser/yaml_parser_base \
- 	UnpackedTarball/liborcus/src/parser/zip_archive \
- 	UnpackedTarball/liborcus/src/parser/zip_archive_stream \
-diff --git a/external/liborcus/Library_orcus.mk b/external/liborcus/Library_orcus.mk
-index ea99e75..0a0ca58 100644
---- a/external/liborcus/Library_orcus.mk
-+++ b/external/liborcus/Library_orcus.mk
-@@ -85,6 +85,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus,\
- 	UnpackedTarball/liborcus/src/liborcus/odf_tokens \
- 	UnpackedTarball/liborcus/src/liborcus/ods_content_xml_context \
- 	UnpackedTarball/liborcus/src/liborcus/ods_content_xml_handler \
-+	UnpackedTarball/liborcus/src/liborcus/ods_dde_links_context \
- 	UnpackedTarball/liborcus/src/liborcus/ods_session_data \
- 	UnpackedTarball/liborcus/src/liborcus/ooxml_content_types \
- 	UnpackedTarball/liborcus/src/liborcus/ooxml_global \
-@@ -103,6 +104,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus,\
- 	UnpackedTarball/liborcus/src/liborcus/orcus_xls_xml \
- 	UnpackedTarball/liborcus/src/liborcus/orcus_xlsx \
- 	UnpackedTarball/liborcus/src/liborcus/orcus_xml \
-+	UnpackedTarball/liborcus/src/liborcus/orcus_xml_impl \
- 	UnpackedTarball/liborcus/src/liborcus/orcus_xml_map_def \
- 	UnpackedTarball/liborcus/src/liborcus/session_context \
- 	UnpackedTarball/liborcus/src/liborcus/spreadsheet_iface_util \
-@@ -134,7 +136,9 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus,\
- 	UnpackedTarball/liborcus/src/liborcus/xml_simple_stream_handler \
- 	UnpackedTarball/liborcus/src/liborcus/xml_stream_handler \
- 	UnpackedTarball/liborcus/src/liborcus/xml_stream_parser \
-+	UnpackedTarball/liborcus/src/liborcus/xml_structure_mapper \
- 	UnpackedTarball/liborcus/src/liborcus/xml_structure_tree \
-+	UnpackedTarball/liborcus/src/liborcus/xpath_parser \
- 	UnpackedTarball/liborcus/src/liborcus/yaml_document_tree \
- ))
- 
-diff --git a/external/liborcus/UnpackedTarball_liborcus.mk b/external/liborcus/UnpackedTarball_liborcus.mk
-index e5e33b0..4736dbc 100644
---- a/external/liborcus/UnpackedTarball_liborcus.mk
-+++ b/external/liborcus/UnpackedTarball_liborcus.mk
-@@ -20,6 +20,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,liborcus,\
- 	external/liborcus/gcc9.patch.0 \
- 	external/liborcus/libtool.patch.0 \
- 	external/liborcus/fix-pch.patch.0 \
-+	external/liborcus/0001-Mark-all-untentionally-unused-variables.patch \
- ))
- 
- ifeq ($(OS),WNT)
-diff --git a/external/liborcus/windows-constants-hack.patch b/external/liborcus/windows-constants-hack.patch
-index 876bc16..51aabfa 100644
---- a/external/liborcus/windows-constants-hack.patch
-+++ b/external/liborcus/windows-constants-hack.patch
-@@ -8,7 +8,7 @@ index ae571f5..539ce18 100644
-  
- -#include "constants.inl"
- +#define ORCUS_MAJOR_VERSION 0
--+#define ORCUS_MINOR_VERSION 11
-++#define ORCUS_MINOR_VERSION 16
- +#define ORCUS_MICRO_VERSION 0
-  
-  namespace orcus {
-diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
-index b298c71..00aea67 100644
---- a/sc/source/filter/inc/orcusinterface.hxx
-+++ b/sc/source/filter/inc/orcusinterface.hxx
-@@ -62,6 +62,11 @@ public:
-     {
-         return mnTextEncoding;
-     }
-+
-+    ScDocumentImport& getDoc() const
-+    {
-+        return mrDoc;
-+    }
- };
- 
- class ScOrcusRefResolver : public orcus::spreadsheet::iface::import_reference_resolver
-@@ -81,20 +81,28 @@
- public:
-     ScOrcusRefResolver( const ScOrcusGlobalSettings& rGS );
- 
--    orcus::spreadsheet::address_t resolve_address(const char* p, size_t n) override;
--    orcus::spreadsheet::range_t resolve_range(const char* p, size_t n) override;
-+    orcus::spreadsheet::src_address_t resolve_address(const char* p, size_t n) override;
-+    orcus::spreadsheet::src_range_t resolve_range(const char* p, size_t n) override;
- };
- 
- class ScOrcusNamedExpression : public orcus::spreadsheet::iface::import_named_expression
- {
-     ScDocumentImport& mrDoc;
-     const ScOrcusGlobalSettings& mrGlobalSettings;
--    SCTAB const mnTab; //< negative if global, else >= 0 for sheet-local named expressions.
-+    ScAddress maBasePos;
-+    OUString maName;
-+    OUString maExpr;
-+    const SCTAB mnTab; //< negative if global, else >= 0 for sheet-local named expressions.
- 
- public:
-     ScOrcusNamedExpression( ScDocumentImport& rDoc, const ScOrcusGlobalSettings& rGS, SCTAB nTab = -1 );
- 
--    virtual void define_name(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) override;
-+    void reset();
-+
-+    virtual void set_base_position(const orcus::spreadsheet::src_address_t& pos) override;
-+    virtual void set_named_expression(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) override;
-+    virtual void set_named_range(const char* p_name, size_t n_name, const char* p_range, size_t n_range) override;
-+    virtual void commit() override;
- };
- 
- class ScOrcusSharedStrings : public orcus::spreadsheet::iface::import_shared_strings
-diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
-index 220f7ce..aa96eb2 100644
---- a/sc/source/filter/orcus/interface.cxx
-+++ b/sc/source/filter/orcus/interface.cxx
-@@ -46,6 +46,7 @@
- #include <sal/log.hxx>
- 
- #include <stylesbuffer.hxx>
-+#include <orcus/exception.hpp>
- 
- using namespace com::sun::star;
- 
-@@ -158,51 +159,54 @@ orcus::spreadsheet::formula_grammar_t ScOrcusGlobalSettings::get_default_formula
- ScOrcusRefResolver::ScOrcusRefResolver( const ScOrcusGlobalSettings& rGS ) :
-     mrGlobalSettings(rGS) {}
- 
--os::address_t ScOrcusRefResolver::resolve_address(const char* p, size_t n)
-+os::src_address_t ScOrcusRefResolver::resolve_address(const char* p, size_t n)
- {
-     OUString aStr(p, n, mrGlobalSettings.getTextEncoding());
- 
-     ScAddress aAddr;
--    aAddr.Parse(aStr, nullptr,
-+    aAddr.Parse(aStr, &mrGlobalSettings.getDoc().getDoc(),
-         formula::FormulaGrammar::extractRefConvention(
-             mrGlobalSettings.getCalcGrammar()));
- 
--    os::address_t ret;
--    ret.column = 0;
--    ret.row = 0;
--
--    if (aAddr.IsValid())
-+    if (!aAddr.IsValid())
-     {
--        ret.column = aAddr.Col();
--        ret.row = aAddr.Row();
-+        std::ostringstream os;
-+        os << "'" << std::string(p, n) << "' is not a valid address expression.";
-+        throw orcus::invalid_arg_error(os.str());
-     }
- 
-+    os::src_address_t ret;
-+    ret.sheet = aAddr.Tab();
-+    ret.column = aAddr.Col();
-+    ret.row = aAddr.Row();
-+
-     return ret;
- }
- 
--os::range_t ScOrcusRefResolver::resolve_range(const char* p, size_t n)
-+os::src_range_t ScOrcusRefResolver::resolve_range(const char* p, size_t n)
- {
-     OUString aStr(p, n, mrGlobalSettings.getTextEncoding());
- 
-     ScRange aRange;
--    aRange.Parse(aStr, nullptr,
-+    aRange.Parse(aStr, &mrGlobalSettings.getDoc().getDoc(),
-         formula::FormulaGrammar::extractRefConvention(
-             mrGlobalSettings.getCalcGrammar()));
- 
--    os::range_t ret;
--    ret.first.column = 0;
--    ret.first.row = 0;
--    ret.last.column = 0;
--    ret.last.row = 0;
--
--    if (aRange.IsValid())
-+    if (!aRange.IsValid())
-     {
--        ret.first.column = aRange.aStart.Col();
--        ret.first.row    = aRange.aStart.Row();
--        ret.last.column  = aRange.aEnd.Col();
--        ret.last.row     = aRange.aEnd.Row();
-+        std::ostringstream os;
-+        os << "'" << std::string(p, n) << "' is not a valid range expression.";
-+        throw orcus::invalid_arg_error(os.str());
-     }
- 
-+    os::src_range_t ret;
-+    ret.first.sheet  = aRange.aStart.Tab();
-+    ret.first.column = aRange.aStart.Col();
-+    ret.first.row    = aRange.aStart.Row();
-+    ret.last.sheet   = aRange.aEnd.Tab();
-+    ret.last.column  = aRange.aEnd.Col();
-+    ret.last.row     = aRange.aEnd.Row();
-+
-     return ret;
- }
- 
-@@ -210,20 +214,46 @@ ScOrcusNamedExpression::ScOrcusNamedExpression(
-     ScDocumentImport& rDoc, const ScOrcusGlobalSettings& rGS, SCTAB nTab ) :
-     mrDoc(rDoc), mrGlobalSettings(rGS), mnTab(nTab) {}
- 
--void ScOrcusNamedExpression::define_name(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp)
-+void ScOrcusNamedExpression::reset()
-+{
-+    maBasePos.SetTab(0);
-+    maBasePos.SetCol(0);
-+    maBasePos.SetRow(0);
-+    maName.clear();
-+    maExpr.clear();
-+}
-+
-+void ScOrcusNamedExpression::set_base_position(const orcus::spreadsheet::src_address_t& pos)
-+{
-+    maBasePos.SetTab(pos.sheet);
-+    maBasePos.SetCol(pos.column);
-+    maBasePos.SetRow(pos.row);
-+}
-+
-+void ScOrcusNamedExpression::set_named_expression(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp)
-+{
-+    maName = OUString(p_name, n_name, mrGlobalSettings.getTextEncoding());
-+    maExpr = OUString(p_exp, n_exp, mrGlobalSettings.getTextEncoding());
-+}
-+
-+void ScOrcusNamedExpression::set_named_range(const char* /*p_name*/, size_t /*n_name*/, const char* /*p_range*/, size_t /*n_range*/)
- {
--    OUString aName(p_name, n_name, mrGlobalSettings.getTextEncoding());
--    OUString aExpr(p_exp, n_exp, mrGlobalSettings.getTextEncoding());
-+    throw std::runtime_error("ScOrcusNamedExpression::set_named_range not implemented yet.");
-+}
- 
-+void ScOrcusNamedExpression::commit()
-+{
-     ScRangeName* pNames = mnTab >= 0 ? mrDoc.getDoc().GetRangeName(mnTab) : mrDoc.getDoc().GetRangeName();
-     if (!pNames)
-         return;
- 
-     ScRangeData* pRange = new ScRangeData(
--        &mrDoc.getDoc(), aName, aExpr, ScAddress(), ScRangeData::Type::Name,
-+        &mrDoc.getDoc(), maName, maExpr, maBasePos, ScRangeData::Type::Name,
-         mrGlobalSettings.getCalcGrammar());
- 
-     pNames->insert(pRange, false);
-+
-+    reset(); // make sure to reset the state for the next run.
- }
- 
- ScOrcusFactory::CellStoreToken::CellStoreToken(const ScAddress& rPos, Type eType)
-diff --git a/sc/source/filter/orcus/xmlcontext.cxx b/sc/source/filter/orcus/xmlcontext.cxx
-index ab16ae6..09f3ba9 100644
---- a/sc/source/filter/orcus/xmlcontext.cxx
-+++ b/sc/source/filter/orcus/xmlcontext.cxx
-@@ -89,10 +89,9 @@ void populateTree(
-        rTreeCtrl.set_image(*xEntry, rParam.maImgElementRepeat, -1);
-     }
- 
--    orcus::xml_structure_tree::entity_names_type aNames;
-+    orcus::xml_structure_tree::entity_names_type aNames = rWalker.get_attributes();
- 
-     // Insert attributes.
--    rWalker.get_attributes(aNames);
-     for (const orcus::xml_structure_tree::entity_name& rAttrName : aNames)
-     {
-         OUString sAttr(toString(rAttrName, rWalker));
-@@ -106,7 +105,7 @@ void populateTree(
-         rTreeCtrl.set_image(*xAttr, rParam.maImgAttribute, -1);
-     }
- 
--    rWalker.get_children(aNames);
-+    aNames = rWalker.get_children();
- 
-     // Non-leaf if it has child elements, leaf otherwise.
-     rEntryData.mbLeafNode = aNames.empty();
-@@ -266,7 +265,7 @@ void ScOrcusXMLContextImpl::importXML(const ScOrcusImportXMLParam& rParam)
-             std::for_each(rLink.maFieldPaths.begin(), rLink.maFieldPaths.end(),
-                 [&filter](const OString& rFieldPath)
-                 {
--                    filter.append_field_link(rFieldPath.getStr());
-+                    filter.append_field_link(rFieldPath.getStr(), orcus::pstring());
-                 }
-             );
- 
-diff --git a/sc/source/ui/xmlsource/xmlsourcedlg.cxx b/sc/source/ui/xmlsource/xmlsourcedlg.cxx
-index 1eb2e4b..167ecae 100644
---- a/sc/source/ui/xmlsource/xmlsourcedlg.cxx
-+++ b/sc/source/ui/xmlsource/xmlsourcedlg.cxx
-@@ -49,8 +49,12 @@ OUString getXPath(
-         if (pData)
-             rNamespaces.push_back(pData->mnNamespaceID);
- 
-+        // element separator is '/' whereas attribute separator is '/@' in xpath.
-         aBuf.insert(0, rTree.get_text(*xEntry, 0));
--        aBuf.insert(0, isAttribute(rTree, *xEntry) ? '@' : '/');
-+        if (isAttribute(rTree, *xEntry))
-+            aBuf.insert(0, "/@");
-+        else
-+            aBuf.insert(0, '/');
-     }
-     while (rTree.iter_parent(*xEntry));
- 
--- 
-2.26.2
-
diff --git a/pld-skia-patches.patch b/pld-skia-patches.patch
new file mode 100644
index 0000000..09d3b55
--- /dev/null
+++ b/pld-skia-patches.patch
@@ -0,0 +1,10 @@
+--- libreoffice-7.2.0.3/external/skia/UnpackedTarball_skia.mk.orig	2021-08-10 19:27:48.000000000 +0200
++++ libreoffice-7.2.0.3/external/skia/UnpackedTarball_skia.mk	2021-08-12 18:09:22.813517161 +0200
+@@ -39,6 +39,7 @@
+     fast-png-write.patch.1 \
+     skia_sk_cpu_sse_level_0_by_default.patch.1 \
+     fix-warnings.patch.1 \
++    skia-freetype2.11.patch \
+ 
+ $(eval $(call gb_UnpackedTarball_set_patchlevel,skia,1))
+ 
diff --git a/skia-freetype2.11.patch b/skia-freetype2.11.patch
new file mode 100644
index 0000000..97be7f2
--- /dev/null
+++ b/skia-freetype2.11.patch
@@ -0,0 +1,37 @@
+--- skia/src/ports/SkFontHost_FreeType_common.cpp.orig	2021-03-01 15:53:09.178606791 +0100
++++ skia/src/ports/SkFontHost_FreeType_common.cpp	2021-08-12 17:48:32.358901987 +0200
+@@ -665,8 +665,13 @@
+             canvas->drawPaint(paint);
+             break;
+         }
++#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR >= 11
++        case FT_COLR_PAINTFORMAT_TRANSFORM: {
++            SkMatrix transform = ToSkMatrix(colrv1_paint.u.transform.affine);
++#else
+         case FT_COLR_PAINTFORMAT_TRANSFORMED: {
+             SkMatrix transform = ToSkMatrix(colrv1_paint.u.transformed.affine);
++#endif
+ 
+             canvas->concat(transform);
+             break;
+@@ -760,12 +765,20 @@
+             traverse_result = colrv1_start_glyph(canvas, palette, face, paint.u.colr_glyph.glyphID,
+                                                  FT_COLOR_NO_ROOT_TRANSFORM);
+             break;
++#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR >= 11
++        case FT_COLR_PAINTFORMAT_TRANSFORM:
++#else
+         case FT_COLR_PAINTFORMAT_TRANSFORMED:
++#endif
+             canvas->saveLayer(nullptr, nullptr);
+             // Traverse / draw operation will apply transform.
+             colrv1_draw_paint(canvas, palette, face, paint);
+             traverse_result =
++#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR >= 11
++                    colrv1_traverse_paint(canvas, palette, face, paint.u.transform.paint);
++#else
+                     colrv1_traverse_paint(canvas, palette, face, paint.u.transformed.paint);
++#endif
+             canvas->restore();
+             break;
+       case FT_COLR_PAINTFORMAT_ROTATE:
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/libreoffice.git/commitdiff/c1940ea3a6b3922774ca64e9690fd2a4a71581db



More information about the pld-cvs-commit mailing list