summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-08-06 02:57:35 +0000
committerCoprDistGit <infra@openeuler.org>2024-08-06 02:57:35 +0000
commit9ff4174f91184dbd5ad42ebe21d0e150d888c290 (patch)
tree165b5cd8d551e6bab38d7b1c0137d80c207a10d3
parent28930047a5d7ce8bffe52612a6e507c6f806f080 (diff)
automatic import of libreofficeopeneuler24.03_LTS
-rw-r--r--.gitignore8
-rw-r--r--0001-CVE-2021-25636.patch69
-rw-r--r--0001-CVE-2022-26305-compare-authors-using-Thumbprint.patch63
-rw-r--r--0001-EditTextObjectImpl-copy-ctor-doesn-t-exactly-copy-Ed.patch53
-rw-r--r--0001-Get-rid-of-apache-commons-logging.patch1309
-rw-r--r--0001-Replace-inet_ntoa-with-inet_ntop.patch162
-rw-r--r--0001-Resolves-rhbz-1432468-disable-opencl-by-default.patch26
-rw-r--r--0001-Resolves-rhbz-2081661-gtk-critical-gtk_tree_view_scr.patch51
-rw-r--r--0001-Resolves-tdf-140250-don-t-share-adjustments-between-.patch123
-rw-r--r--0001-Resolves-tdf-145567-restore-focus-to-the-usual-frame.patch63
-rw-r--r--0001-Revert-tdf-101630-gdrive-support-w-oAuth-and-Drive-A.patch1262
-rw-r--r--0001-Simplify-construction-of-a-hardcoded-IPv4-address.patch39
-rw-r--r--0001-annocheck-warning-about-missing-.note.gnu.property-s.patch143
-rw-r--r--0001-disable-libe-book-support.patch145
-rw-r--r--0001-disble-tip-of-the-day-dialog-by-default.patch26
-rw-r--r--0001-document-new-shouldn-t-get-prefixed-to-become-libreo.patch45
-rw-r--r--0001-don-t-suppress-crashes.patch35
-rw-r--r--0001-fix-comparison-when-searching-cache.patch40
-rw-r--r--0001-fix-detecting-qrcodegen.patch40
-rw-r--r--0001-gtk3-workaround-missing-gdk_threads_enter-calls-in-e.patch118
-rw-r--r--0001-make-with-idlc-cpp-cpp-work-for-gcc-cpp-as-a-ucpp-re.patch111
-rw-r--r--0001-math.desktop-include-Spreadsheet-category.patch39
-rw-r--r--0001-rhbz-1918152-fix-FTBFS.patch26
-rw-r--r--0001-rhbz-1980800-allow-convert-to-csv-to-write-each-shee.patch428
-rw-r--r--0001-tdf-121546-sw-don-t-use-undo-array-s-m_pOutlineNodes.patch72
-rw-r--r--0002-CVE-2022-26307-make-hash-encoding-match-decoding.patch183
-rw-r--r--0003-CVE-2022-26306-add-Initialization-Vectors-to-passwor.patch583
-rw-r--r--0004-CVE-2022-2630-6-7-add-infobar-to-prompt-to-refresh-t.patch113
-rw-r--r--gpgkey-C2839ECAD9408FBE9531C3E9F434A1EFAFEEAEA3.gpg.asc51
-rw-r--r--libreoffice-7.1.8.1.tar.xz.asc16
-rw-r--r--libreoffice-base-symbolic.svg27
-rw-r--r--libreoffice-calc-symbolic.svg27
-rw-r--r--libreoffice-draw-symbolic.svg26
-rw-r--r--libreoffice-help-7.1.8.1.tar.xz.asc16
-rw-r--r--libreoffice-impress-symbolic.svg25
-rw-r--r--libreoffice-main-symbolic.svg24
-rw-r--r--libreoffice-math-symbolic.svg25
-rw-r--r--libreoffice-multiliblauncher.sh16
-rw-r--r--libreoffice-translations-7.1.8.1.tar.xz.asc16
-rw-r--r--libreoffice-writer-symbolic.svg28
-rw-r--r--libreoffice.spec4816
-rw-r--r--sources8
42 files changed, 10496 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..b955633 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,8 @@
+/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
+/185d60944ea767075d27247c3162b3bc-unowinreg.dll
+/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip
+/dtoa-20180411.tgz
+/f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
+/libreoffice-7.1.8.1.tar.xz
+/libreoffice-help-7.1.8.1.tar.xz
+/libreoffice-translations-7.1.8.1.tar.xz
diff --git a/0001-CVE-2021-25636.patch b/0001-CVE-2021-25636.patch
new file mode 100644
index 0000000..9ec1f6a
--- /dev/null
+++ b/0001-CVE-2021-25636.patch
@@ -0,0 +1,69 @@
+From 26c9da40d44f1469df97398362667c74553be7d2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Mon, 20 Dec 2021 17:05:44 +0000
+Subject: [PATCH] only use X509Data
+
+Change-Id: I52e6588f5fac04bb26d77c1f3af470db73e41f72
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127193
+Tested-by: Jenkins
+Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
+(cherry picked from commit be446d81e07b5499152efeca6ca23034e51ea5ff)
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127178
+Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
+(cherry picked from commit b0404f80577de9ff69e58390c6f6ef949fdb0139)
+---
+ .../source/xmlsec/mscrypt/xmlsignature_mscryptimpl.cxx | 6 ++++++
+ xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.cxx | 6 ++++++
+ 2 files changed, 12 insertions(+)
+
+diff --git a/xmlsecurity/source/xmlsec/mscrypt/xmlsignature_mscryptimpl.cxx b/xmlsecurity/source/xmlsec/mscrypt/xmlsignature_mscryptimpl.cxx
+index c699c950f351..9f816479f9dd 100644
+--- a/xmlsecurity/source/xmlsec/mscrypt/xmlsignature_mscryptimpl.cxx
++++ b/xmlsecurity/source/xmlsec/mscrypt/xmlsignature_mscryptimpl.cxx
+@@ -22,6 +22,8 @@
+ #include <rtl/uuid.h>
+ #include <xmlsec-wrapper.h>
+
++#include <xmlsec/mscng/x509.h>
++
+ #include <com/sun/star/xml/crypto/SecurityOperationStatus.hpp>
+ #include <com/sun/star/xml/crypto/XXMLSignature.hpp>
+
+@@ -233,6 +235,10 @@ SAL_CALL XMLSignature_MSCryptImpl::validate(
+ // We do certificate verification ourselves.
+ pDsigCtx->keyInfoReadCtx.flags |= XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS;
+
++ // limit possible key data to valid X509 certificates only, no KeyValues
++ if (xmlSecPtrListAdd(&(pDsigCtx->keyInfoReadCtx.enabledKeyData), BAD_CAST xmlSecMSCngKeyDataX509GetKlass()) < 0)
++ throw RuntimeException("failed to limit allowed key data");
++
+ //Verify signature
+ //The documentation says that the signature is only valid if the return value is 0 (that is, not < 0)
+ //AND pDsigCtx->status == xmlSecDSigStatusSucceeded. That is, we must not make any assumptions, if
+diff --git a/xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.cxx b/xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.cxx
+index b41d754f7407..975c17272dc7 100644
+--- a/xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.cxx
++++ b/xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.cxx
+@@ -20,6 +20,8 @@
+ #include <sal/config.h>
+ #include <xmlsec-wrapper.h>
+
++#include <xmlsec/nss/x509.h>
++
+ #include <xmlelementwrapper_xmlsecimpl.hxx>
+ #include <xmlsec/xmlstreamio.hxx>
+ #include <xmlsec/errorcallback.hxx>
+@@ -247,6 +249,10 @@ SAL_CALL XMLSignature_NssImpl::validate(
+ // We do certificate verification ourselves.
+ pDsigCtx->keyInfoReadCtx.flags |= XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS;
+
++ // limit possible key data to valid X509 certificates only, no KeyValues
++ if (xmlSecPtrListAdd(&(pDsigCtx->keyInfoReadCtx.enabledKeyData), BAD_CAST xmlSecNssKeyDataX509GetKlass()) < 0)
++ throw RuntimeException("failed to limit allowed key data");
++
+ //Verify signature
+ int rs = xmlSecDSigCtxVerify( pDsigCtx.get() , pNode );
+
+--
+2.35.1
+
diff --git a/0001-CVE-2022-26305-compare-authors-using-Thumbprint.patch b/0001-CVE-2022-26305-compare-authors-using-Thumbprint.patch
new file mode 100644
index 0000000..5656d0d
--- /dev/null
+++ b/0001-CVE-2022-26305-compare-authors-using-Thumbprint.patch
@@ -0,0 +1,63 @@
+From 77f30ada1156ca1e1357776fea8e9dc113f6898d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Thu, 3 Mar 2022 14:22:37 +0000
+Subject: [PATCH 1/5] CVE-2022-26305 compare authors using Thumbprint
+
+Change-Id: I338f58eb07cbf0a3d13a7dafdaddac09252a8546
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130929
+Tested-by: Jenkins
+Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
+(cherry picked from commit 65442205b5b274ad309308162f150f8d41648f72)
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130866
+Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
+(cherry picked from commit a7aaa78acea4c1d51283c2fce54ff9f5339026f8)
+---
+ .../component/documentdigitalsignatures.cxx | 23 +++++++++++++++----
+ 1 file changed, 19 insertions(+), 4 deletions(-)
+
+diff --git a/xmlsecurity/source/component/documentdigitalsignatures.cxx b/xmlsecurity/source/component/documentdigitalsignatures.cxx
+index b9066ea92cac..5a21c8421bec 100644
+--- a/xmlsecurity/source/component/documentdigitalsignatures.cxx
++++ b/xmlsecurity/source/component/documentdigitalsignatures.cxx
+@@ -19,9 +19,10 @@
+
+ #include <resourcemanager.hxx>
+
+-#include <digitalsignaturesdialog.hxx>
++#include <certificate.hxx>
+ #include <certificatechooser.hxx>
+ #include <certificateviewer.hxx>
++#include <digitalsignaturesdialog.hxx>
+ #include <macrosecurity.hxx>
+ #include <biginteger.hxx>
+ #include <strings.hrc>
+@@ -666,9 +667,23 @@ sal_Bool DocumentDigitalSignatures::isAuthorTrusted(
+ Sequence< SvtSecurityOptions::Certificate > aTrustedAuthors = SvtSecurityOptions().GetTrustedAuthors();
+
+ return std::any_of(aTrustedAuthors.begin(), aTrustedAuthors.end(),
+- [&xAuthor, &sSerialNum](const SvtSecurityOptions::Certificate& rAuthor) {
+- return xmlsecurity::EqualDistinguishedNames(rAuthor[0], xAuthor->getIssuerName())
+- && ( rAuthor[1] == sSerialNum );
++ [this, &xAuthor, &sSerialNum](const SvtSecurityOptions::Certificate& rAuthor) {
++ if (!xmlsecurity::EqualDistinguishedNames(rAuthor[0], xAuthor->getIssuerName()))
++ return false;
++ if (rAuthor[1] != sSerialNum)
++ return false;
++
++ DocumentSignatureManager aSignatureManager(mxCtx, {});
++ if (!aSignatureManager.init())
++ return false;
++ uno::Reference<css::security::XCertificate> xCert = aSignatureManager.getSecurityEnvironment()->createCertificateFromAscii(rAuthor[2]);
++
++ auto pAuthor = dynamic_cast<xmlsecurity::Certificate*>(xAuthor.get());
++ auto pCert = dynamic_cast<xmlsecurity::Certificate*>(xCert.get());
++ if (pAuthor && pCert)
++ return pCert->getSHA256Thumbprint() == pAuthor->getSHA256Thumbprint();
++
++ return xCert->getSHA1Thumbprint() == xAuthor->getSHA1Thumbprint();
+ });
+ }
+
+--
+2.37.3
+
diff --git a/0001-EditTextObjectImpl-copy-ctor-doesn-t-exactly-copy-Ed.patch b/0001-EditTextObjectImpl-copy-ctor-doesn-t-exactly-copy-Ed.patch
new file mode 100644
index 0000000..c4b0fff
--- /dev/null
+++ b/0001-EditTextObjectImpl-copy-ctor-doesn-t-exactly-copy-Ed.patch
@@ -0,0 +1,53 @@
+From 3925cf39742ebee935498b14571f13f3e8b64b49 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Sat, 19 Feb 2022 20:43:33 +0000
+Subject: [PATCH] EditTextObjectImpl copy ctor doesn't exactly copy
+ EditTextObjectImpl
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+and this is apparently relied on, so eliding the copy gives unexpected
+results.
+
+EditTextObjectImpl::Clone returns a copy of *this, but the
+EditTextObjectImpl copy ctor explicitly does not copy the "PortionInfo"
+member, so in:
+
+commit fb8973f31f111229be5184f4e4223e963ced2c7b
+Author: Caolán McNamara <caolanm@redhat.com>
+Date: Sat Oct 10 19:21:38 2020 +0100
+
+ ofz#23492 the only user of this ctor throws away the original of the clone
+
+ so we can take ownership of the original instead
+
+where the copy was optimized away we want from a state where there was a
+new EditTextObjectImpl with an empty PortionInfo member to one where the
+PortionInfo of the EditTextObjectImpl was retained.
+
+So explicitly clear this unwanted info.
+
+It's very hard to make rational judgements about code if a copy behaves
+differently than the orignal :-(
+
+Change-Id: I642d60841d6bdccbf830f8a2ccdbd9f542a8aa18
+---
+ editeng/source/outliner/outliner.cxx | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/editeng/source/outliner/outliner.cxx b/editeng/source/outliner/outliner.cxx
+index 9c474131352c..d48e4a542723 100644
+--- a/editeng/source/outliner/outliner.cxx
++++ b/editeng/source/outliner/outliner.cxx
+@@ -383,6 +383,7 @@ std::unique_ptr<OutlinerParaObject> Outliner::CreateParaObject( sal_Int32 nStart
+ aParagraphDataVector[nPara-nStartPara] = *GetParagraph(nPara);
+ }
+
++ xText->ClearPortionInfo(); // tdf#147166 the PortionInfo is unwanted here
+ std::unique_ptr<OutlinerParaObject> pPObj(new OutlinerParaObject(std::move(xText), aParagraphDataVector, bIsEditDoc));
+ pPObj->SetOutlinerMode(GetMode());
+
+--
+2.35.1
+
diff --git a/0001-Get-rid-of-apache-commons-logging.patch b/0001-Get-rid-of-apache-commons-logging.patch
new file mode 100644
index 0000000..ca31754
--- /dev/null
+++ b/0001-Get-rid-of-apache-commons-logging.patch
@@ -0,0 +1,1309 @@
+From 4fd868fdfca690e9b0f159b2beadde5920897ab4 Mon Sep 17 00:00:00 2001
+From: Stephan Bergmann <sbergman@redhat.com>
+Date: Sun, 11 Apr 2021 09:20:13 +0200
+Subject: [PATCH] Get rid of apache-commons-logging
+
+...using Java 1.4 java.util.logging.Logger instead also for the last remaining
+uses in reportbuilder.
+
+(The mention in swext/mediawiki/src/THIRDPARTYLICENSEREADME.html was presumably
+a leftover from 4b6ceed4a4a9b152905a8b1712ffb9bd61373c16 "swext: Wiki Publisher
+does not use those apache-commons libraries".)
+
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113939
+Tested-by: Jenkins
+Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
+(cherry picked from commit 6de0b1710adfba82c96b75a5da6f52633a54c692)
+Conflicts:
+ readlicense_oo/license/NOTICE
+ swext/mediawiki/src/THIRDPARTYLICENSEREADME.html
+
+Change-Id: Ia0bc598fe5844ced11cae497548ec7d09453a99d
+---
+ Makefile.fetch | 1 -
+ RepositoryExternal.mk | 26 ----------
+ config_host.mk.in | 3 --
+ configure.ac | 40 ---------------
+ distro-configs/LibreOfficeFlatpak.conf | 1 -
+ download.lst | 2 -
+ external/Module_external.mk | 1 -
+ .../ExternalPackage_apache_commons_logging.mk | 16 ------
+ .../ExternalProject_apache_commons_logging.mk | 32 ------------
+ external/apache-commons/Makefile | 7 ---
+ .../apache-commons/Module_apache-commons.mk | 18 -------
+ external/apache-commons/README | 1 -
+ .../UnpackedTarball_apache_commons_logging.mk | 22 ---------
+ external/apache-commons/patches/logging.patch | 46 -----------------
+ readlicense_oo/license/NOTICE | 8 ---
+ readlicense_oo/license/license.xml | 6 ---
+ reportbuilder/Jar_reportbuilder.mk | 1 -
+ .../report/SDBCReportDataFactory.java | 7 +--
+ .../libreoffice/report/StorageRepository.java | 48 +++++++++---------
+ .../libreoffice/report/pentaho/Manifest.mf | 2 +-
+ .../report/pentaho/PentahoReportJob.java | 10 ++--
+ .../report/pentaho/SOReportJobFactory.java | 9 ++--
+ .../layoutprocessor/FormatValueUtility.java | 2 +-
+ .../FormattedTextLayoutController.java | 7 ++-
+ .../ImageElementLayoutController.java | 19 ++++---
+ .../report/pentaho/output/ImageProducer.java | 23 ++++-----
+ .../output/OfficeDocumentReportTarget.java | 23 ++++-----
+ .../report/pentaho/output/OleProducer.java | 12 ++---
+ .../report/pentaho/output/StyleUtilities.java | 10 ++--
+ .../SpreadsheetRawReportTarget.java | 2 +-
+ .../office/DocumentContentReadHandler.java | 13 +++--
+ solenv/flatpak-manifest.in | 6 ---
+ .../src/THIRDPARTYLICENSEREADME.html | 49 -------------------
+ 33 files changed, 82 insertions(+), 391 deletions(-)
+ delete mode 100644 external/apache-commons/ExternalPackage_apache_commons_logging.mk
+ delete mode 100644 external/apache-commons/ExternalProject_apache_commons_logging.mk
+ delete mode 100644 external/apache-commons/Makefile
+ delete mode 100644 external/apache-commons/Module_apache-commons.mk
+ delete mode 100644 external/apache-commons/README
+ delete mode 100644 external/apache-commons/UnpackedTarball_apache_commons_logging.mk
+ delete mode 100644 external/apache-commons/patches/logging.patch
+
+diff --git a/Makefile.fetch b/Makefile.fetch
+index 0a6202a4b3c7..924927bb4fb5 100644
+--- a/Makefile.fetch
++++ b/Makefile.fetch
+@@ -101,7 +101,6 @@ $(WORKDIR)/download: $(BUILDDIR)/config_$(gb_Side).mk $(SRCDIR)/download.lst $(S
+ @date >> $(fetch_LOGFILE)
+ $(foreach item, \
+ $(call fetch_Optional,ABW,ABW_TARBALL) \
+- $(call fetch_Optional,APACHE_COMMONS,APACHE_COMMONS_LOGGING_TARBALL) \
+ $(call fetch_Optional,APR,APR_TARBALL) \
+ $(call fetch_Optional,APR,APR_UTIL_TARBALL) \
+ $(call fetch_Optional,BOOST,BOOST_TARBALL) \
+diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
+index ad3febbae41b..d2fe7e044dfb 100644
+--- a/RepositoryExternal.mk
++++ b/RepositoryExternal.mk
+@@ -3723,32 +3723,6 @@ endif # SYSTEM_RHINO
+
+ endif
+
+-ifneq ($(SYSTEM_APACHE_COMMONS),)
+-
+-define gb_Jar__use_commons-logging
+-$(call gb_Jar_use_system_jar,$(1),$(COMMONS_LOGGING_JAR))
+-endef
+-gb_ExternalProject__use_commons-logging :=
+-
+-else # !SYSTEM_APACHE_COMMONS
+-
+-ifeq ($(ENABLE_JAVA),TRUE)
+-$(eval $(call gb_Helper_register_jars_for_install,OOO,reportbuilder,\
+- commons-logging-$(COMMONS_LOGGING_VERSION) \
+-))
+-endif
+-
+-define gb_Jar__use_commons-logging
+-$(call gb_Jar_use_external_project,$(1),apache_commons_logging)
+-$(call gb_Jar_use_jar,$(1),commons-logging-$(COMMONS_LOGGING_VERSION))
+-endef
+-define gb_ExternalProject__use_commons-logging
+-$(call gb_ExternalProject_use_external_project,$(1),apache_commons_logging)
+-endef
+-
+-endif # SYSTEM_APACHE_COMMONS
+-
+-
+ ifneq ($(SYSTEM_JFREEREPORT),)
+
+ define gb_Jar__use_flow-engine
+diff --git a/config_host.mk.in b/config_host.mk.in
+index 42f4511a62e8..c9b3aa015123 100644
+--- a/config_host.mk.in
++++ b/config_host.mk.in
+@@ -77,8 +77,6 @@ export CLUCENE_LIBS=$(gb_SPACE)@CLUCENE_LIBS@
+ export LIBCMIS_CFLAGS=$(gb_SPACE)@LIBCMIS_CFLAGS@
+ export LIBCMIS_LIBS=$(gb_SPACE)@LIBCMIS_LIBS@
+ export COM=@COM@
+-export COMMONS_LOGGING_JAR=@COMMONS_LOGGING_JAR@
+-export COMMONS_LOGGING_VERSION=@COMMONS_LOGGING_VERSION@
+ export COMPATH=@COMPATH@
+ export COMPILER_PLUGINS=@COMPILER_PLUGINS@
+ export COMPILER_PLUGINS_ANALYZER_PCH=@COMPILER_PLUGINS_ANALYZER_PCH@
+@@ -546,7 +544,6 @@ export STRIP=@STRIP@
+ export STRIP_COMPONENTS=@STRIP_COMPONENTS@
+ export SYSBASE=@SYSBASE@
+ export SYSTEM_ABW=@SYSTEM_ABW@
+-export SYSTEM_APACHE_COMMONS=@SYSTEM_APACHE_COMMONS@
+ export SYSTEM_APR=@SYSTEM_APR@
+ export SYSTEM_BLUEZ=@SYSTEM_BLUEZ@
+ export SYSTEM_BOOST=@SYSTEM_BOOST@
+diff --git a/configure.ac b/configure.ac
+index 11d93b7ba6eb..1cb0a61ad9c2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -2076,11 +2076,6 @@ AC_ARG_WITH(system-gpgmepp,
+ [Use gpgmepp already on system]),,
+ [with_system_gpgmepp="$with_system_libs"])
+
+-AC_ARG_WITH(system-apache-commons,
+- AS_HELP_STRING([--with-system-apache-commons],
+- [Use Apache commons libraries already on system.]),,
+- [with_system_apache_commons="$with_system_jars"])
+-
+ AC_ARG_WITH(system-mariadb,
+ AS_HELP_STRING([--with-system-mariadb],
+ [Use MariaDB/MySQL libraries already on system.]),,
+@@ -2158,11 +2153,6 @@ AC_ARG_WITH(rhino-jar,
+ [Specify path to jarfile manually.]),
+ RHINO_JAR=$withval)
+
+-AC_ARG_WITH(commons-logging-jar,
+- AS_HELP_STRING([--with-commons-logging-jar=JARFILE],
+- [Specify path to jarfile manually.]),
+- COMMONS_LOGGING_JAR=$withval)
+-
+ AC_ARG_WITH(system-jfreereport,
+ AS_HELP_STRING([--with-system-jfreereport],
+ [Use JFreeReport already on system.]),,
+@@ -12298,36 +12288,6 @@ AC_SUBST(LIBREPOSITORY_JAR)
+ AC_SUBST(LIBFONTS_JAR)
+ AC_SUBST(LIBSERIALIZER_JAR)
+
+-# this has to be here because both the Wiki Publisher and the SRB use
+-# commons-logging
+-COMMONS_LOGGING_VERSION=1.2
+-if test "$ENABLE_REPORTBUILDER" = "TRUE"; then
+- AC_MSG_CHECKING([which Apache commons-* libs to use])
+- if test "$with_system_apache_commons" = "yes"; then
+- SYSTEM_APACHE_COMMONS=TRUE
+- AC_MSG_RESULT([external])
+- if test -z $COMMONS_LOGGING_JAR; then
+- if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then
+- COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar
+- elif test -f /usr/share/java/commons-logging.jar; then
+- COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar
+- else
+- AC_MSG_ERROR(commons-logging.jar replacement not found.)
+- fi
+- elif ! test -f $COMMONS_LOGGING_JAR; then
+- AC_MSG_ERROR(commons-logging.jar not found.)
+- fi
+- else
+- AC_MSG_RESULT([internal])
+- SYSTEM_APACHE_COMMONS=
+- BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS"
+- NEED_ANT=TRUE
+- fi
+-fi
+-AC_SUBST(SYSTEM_APACHE_COMMONS)
+-AC_SUBST(COMMONS_LOGGING_JAR)
+-AC_SUBST(COMMONS_LOGGING_VERSION)
+-
+ # scripting provider for BeanShell?
+ AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
+ if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
+diff --git a/distro-configs/LibreOfficeFlatpak.conf b/distro-configs/LibreOfficeFlatpak.conf
+index 81604de9f1f7..97bfaba200fc 100644
+--- a/distro-configs/LibreOfficeFlatpak.conf
++++ b/distro-configs/LibreOfficeFlatpak.conf
+@@ -10,7 +10,6 @@
+ --without-export-validation
+ --without-junit
+ --without-lxml
+---without-system-apache-commons
+ --without-system-beanshell
+ --without-system-bluez
+ --without-system-boost
+diff --git a/download.lst b/download.lst
+index c474e9f60208..f74d49e8dfcb 100644
+--- a/download.lst
++++ b/download.lst
+@@ -5,8 +5,6 @@
+
+ export ABW_SHA256SUM := e763a9dc21c3d2667402d66e202e3f8ef4db51b34b79ef41f56cacb86dcd6eed
+ export ABW_TARBALL := libabw-0.1.3.tar.xz
+-export APACHE_COMMONS_LOGGING_SHA256SUM := 49665da5a60d033e6dff40fe0a7f9173e886ae859ce6096c1afe34c48b677c81
+-export APACHE_COMMONS_LOGGING_TARBALL := commons-logging-1.2-src.tar.gz
+ export APR_SHA256SUM := 1af06e1720a58851d90694a984af18355b65bb0d047be03ec7d659c746d6dbdb
+ export APR_TARBALL := apr-1.5.2.tar.gz
+ export APR_UTIL_SHA256SUM := 976a12a59bc286d634a21d7be0841cc74289ea9077aa1af46be19d1a6e844c19
+diff --git a/external/Module_external.mk b/external/Module_external.mk
+index 1c722a325c2d..185974271b93 100644
+--- a/external/Module_external.mk
++++ b/external/Module_external.mk
+@@ -16,7 +16,6 @@ endif
+ $(eval $(call gb_Module_add_moduledirs,external,\
+ $(call gb_Helper_optional,XMLSEC,xmlsec) \
+ $(call gb_Helper_optional,ABW,libabw) \
+- $(call gb_Helper_optional,APACHE_COMMONS,apache-commons) \
+ $(call gb_Helper_optional,APR,apr) \
+ $(call gb_Helper_optional,BOOST,boost) \
+ $(call gb_Helper_optional,BOX2D,box2d) \
+diff --git a/external/apache-commons/ExternalPackage_apache_commons_logging.mk b/external/apache-commons/ExternalPackage_apache_commons_logging.mk
+deleted file mode 100644
+index 2bff13b93c66..000000000000
+--- a/external/apache-commons/ExternalPackage_apache_commons_logging.mk
++++ /dev/null
+@@ -1,16 +0,0 @@
+-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+-#
+-# This file is part of the LibreOffice project.
+-#
+-# This Source Code Form is subject to the terms of the Mozilla Public
+-# License, v. 2.0. If a copy of the MPL was not distributed with this
+-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+-#
+-
+-$(eval $(call gb_ExternalPackage_ExternalPackage,apache_commons_logging,apache_commons_logging))
+-
+-$(eval $(call gb_ExternalPackage_use_external_project,apache_commons_logging,apache_commons_logging))
+-
+-$(eval $(call gb_ExternalPackage_add_file,apache_commons_logging,$(LIBO_SHARE_JAVA_FOLDER)/commons-logging-$(COMMONS_LOGGING_VERSION).jar,target/commons-logging-$(COMMONS_LOGGING_VERSION).jar))
+-
+-# vim: set noet sw=4 ts=4:
+diff --git a/external/apache-commons/ExternalProject_apache_commons_logging.mk b/external/apache-commons/ExternalProject_apache_commons_logging.mk
+deleted file mode 100644
+index 7c689d18c443..000000000000
+--- a/external/apache-commons/ExternalProject_apache_commons_logging.mk
++++ /dev/null
+@@ -1,32 +0,0 @@
+-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+-#
+-# This file is part of the LibreOffice project.
+-#
+-# This Source Code Form is subject to the terms of the Mozilla Public
+-# License, v. 2.0. If a copy of the MPL was not distributed with this
+-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+-#
+-
+-$(eval $(call gb_ExternalProject_ExternalProject,apache_commons_logging))
+-
+-$(eval $(call gb_ExternalProject_register_targets,apache_commons_logging,\
+- build \
+-))
+-
+-$(call gb_ExternalProject_get_state_target,apache_commons_logging,build) :
+- $(call gb_Trace_StartRange,apache_commons_logging,EXTERNAL)
+- $(call gb_ExternalProject_run,build,\
+- JAVA_HOME=$(JAVA_HOME_FOR_BUILD) \
+- ANT_OPTS="$$ANT_OPTS -Dfile.encoding=ISO-8859-1" \
+- $(ICECREAM_RUN) "$(ANT)" \
+- $(if $(verbose),-v,-q) \
+- -f build.xml \
+- -Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
+- -Dant.build.javac.source=$(JAVA_SOURCE_VER) \
+- -Dant.build.javac.target=$(JAVA_TARGET_VER) \
+- $(if $(debug),-Dcompile.debug="true",-Dcompile.debug="false") \
+- compile build-jar \
+- )
+- $(call gb_Trace_EndRange,apache_commons_logging,EXTERNAL)
+-
+-# vim: set noet sw=4 ts=4:
+diff --git a/external/apache-commons/Makefile b/external/apache-commons/Makefile
+deleted file mode 100644
+index e4968cf85fb6..000000000000
+--- a/external/apache-commons/Makefile
++++ /dev/null
+@@ -1,7 +0,0 @@
+-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+-
+-module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+-
+-include $(module_directory)/../../solenv/gbuild/partial_build.mk
+-
+-# vim: set noet sw=4 ts=4:
+diff --git a/external/apache-commons/Module_apache-commons.mk b/external/apache-commons/Module_apache-commons.mk
+deleted file mode 100644
+index 45aabe229b03..000000000000
+--- a/external/apache-commons/Module_apache-commons.mk
++++ /dev/null
+@@ -1,18 +0,0 @@
+-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+-#
+-# This file is part of the LibreOffice project.
+-#
+-# This Source Code Form is subject to the terms of the Mozilla Public
+-# License, v. 2.0. If a copy of the MPL was not distributed with this
+-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+-#
+-
+-$(eval $(call gb_Module_Module,apache-commons))
+-
+-$(eval $(call gb_Module_add_targets,apache-commons,\
+- ExternalPackage_apache_commons_logging \
+- ExternalProject_apache_commons_logging \
+- UnpackedTarball_apache_commons_logging \
+-))
+-
+-# vim: set noet sw=4 ts=4:
+diff --git a/external/apache-commons/README b/external/apache-commons/README
+deleted file mode 100644
+index 18944aca4af7..000000000000
+--- a/external/apache-commons/README
++++ /dev/null
+@@ -1 +0,0 @@
+-Java library; used for logging in Extensions, from [http://commons.apache.org/]
+diff --git a/external/apache-commons/UnpackedTarball_apache_commons_logging.mk b/external/apache-commons/UnpackedTarball_apache_commons_logging.mk
+deleted file mode 100644
+index 1d5ad3dc2d9d..000000000000
+--- a/external/apache-commons/UnpackedTarball_apache_commons_logging.mk
++++ /dev/null
+@@ -1,22 +0,0 @@
+-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+-#
+-# This file is part of the LibreOffice project.
+-#
+-# This Source Code Form is subject to the terms of the Mozilla Public
+-# License, v. 2.0. If a copy of the MPL was not distributed with this
+-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+-#
+-
+-$(eval $(call gb_UnpackedTarball_UnpackedTarball,apache_commons_logging))
+-
+-$(eval $(call gb_UnpackedTarball_set_tarball,apache_commons_logging,$(APACHE_COMMONS_LOGGING_TARBALL),,apache-commons))
+-
+-$(eval $(call gb_UnpackedTarball_fix_end_of_line,apache_commons_logging,\
+- build.xml \
+-))
+-
+-$(eval $(call gb_UnpackedTarball_add_patches,apache_commons_logging,\
+- external/apache-commons/patches/logging.patch \
+-))
+-
+-# vim: set noet sw=4 ts=4:
+diff --git a/external/apache-commons/patches/logging.patch b/external/apache-commons/patches/logging.patch
+deleted file mode 100644
+index c225e5a30338..000000000000
+--- a/external/apache-commons/patches/logging.patch
++++ /dev/null
+@@ -1,46 +0,0 @@
+---- misc/commons-logging-1.1.1-src/build.xml 2007-11-22 00:27:52.000000000 +0100
+-+++ misc/build/commons-logging-1.1.1-src/build.xml 2008-06-24 14:23:56.316301736 +0200
+-@@ -129,12 +129,6 @@
+-
+- <!-- ========== Compiler Defaults ========================================= -->
+-
+-- <!-- Version of java class files to generate. -->
+-- <property name="target.version" value="1.2"/>
+--
+-- <!-- Version of java source to accept -->
+-- <property name="source.version" value="1.2"/>
+--
+- <!-- Should Java compilations set the 'debug' compiler option? -->
+- <property name="compile.debug" value="true"/>
+-
+-@@ -283,6 +277,10 @@
+- classpathref="compile.classpath"
+- classname="org.apache.avalon.framework.logger.Logger"/>
+-
+-+ <available property="servlet-api.present"
+-+ classpathref="compile.classpath"
+-+ classname="javax.servlet.ServletContextListener"/>
+-+
+- <available file="${log4j12.jar}" property="log4j12.present"/>
+- <available file="${log4j13.jar}" property="log4j13.present"/>
+- <available file="${build.home}/docs" property="maven.generated.docs.present"/>
+-@@ -362,8 +360,8 @@
+- debug="${compile.debug}"
+- deprecation="${compile.deprecation}"
+- optimize="${compile.optimize}"
+-- source="${source.version}"
+-- target="${target.version}">
+-+ source="${ant.build.javac.source}"
+-+ target="${ant.build.javac.target}">
+-
+- <classpath refid="compile.classpath"/>
+-
+-@@ -373,6 +371,8 @@
+- unless="logkit.present"/>
+- <exclude name="org/apache/commons/logging/impl/AvalonLogger.java"
+- unless="avalon-framework.present"/>
+-+ <exclude name="org/apache/commons/logging/impl/ServletContextCleaner.java"
+-+ unless="servlet-api.present"/>
+- </javac>
+- </target>
+-
+diff --git a/readlicense_oo/license/NOTICE b/readlicense_oo/license/NOTICE
+index 46b7fccaf737..0cecc2dbfa50 100644
+--- a/readlicense_oo/license/NOTICE
++++ b/readlicense_oo/license/NOTICE
+@@ -25,7 +25,6 @@ Apache projects:
+ - Apache Lucene
+ - Apache Portable Runtime
+ - Apache Portable Runtime Utility Library
+-- Apache Commons - used by MediaWiki Publisher extension
+ - Apache Jakarta HttpClient - used by MediaWiki Publisher extension
+ - Apache Tomcat - used by MediaWiki Publisher extension
+
+@@ -106,13 +105,6 @@ This product includes software from the Spring Framework,
+ under the Apache License 2.0 (see: StringUtils.containsWhitespace())
+
+
+-Apache Commons Logging
+-Copyright 2003-2007 The Apache Software Foundation
+-
+-This product includes software developed by
+-The Apache Software Foundation (http://www.apache.org/).
+-
+-
+ Apache Tomcat
+ Copyright 1999-2012 The Apache Software Foundation
+
+diff --git a/readlicense_oo/license/license.xml b/readlicense_oo/license/license.xml
+index 2c45a12fd202..2bd6b943096f 100644
+--- a/readlicense_oo/license/license.xml
++++ b/readlicense_oo/license/license.xml
+@@ -52,12 +52,6 @@
+ <h1 style="text-align: center;"><a id="thirdparty" name="thirdparty">Third Party Code Additional Copyright
+ Notices and License Terms</a></h1>
+ <h1><a id="a__Libraries" name="a__Libraries">Libraries</a></h1>
+- <div class="APACHE_COMMONS">
+- <h2>Apache Commons</h2>
+- <p>The following software may be included in this product: Apache Commons (codec, httpclient, lang, logging).
+- Use of any of this software is governed by the terms of the license below:</p>
+- <p><a href="#a__Apache_License_version_2_0">Jump to Apache License Version 2.0</a></p>
+- </div>
+ <div class="APR">
+ <h2>Apache Portable Runtime (APR)</h2>
+ <p>The following software may be included in this product: Apache Portable Runtime (APR).
+diff --git a/reportbuilder/Jar_reportbuilder.mk b/reportbuilder/Jar_reportbuilder.mk
+index 101ebc9330b7..7abcf796a0d0 100644
+--- a/reportbuilder/Jar_reportbuilder.mk
++++ b/reportbuilder/Jar_reportbuilder.mk
+@@ -15,7 +15,6 @@ $(eval $(call gb_Jar_use_jars,reportbuilder,\
+ ))
+
+ $(eval $(call gb_Jar_use_externals,reportbuilder,\
+- commons-logging \
+ flow-engine \
+ flute \
+ libbase \
+diff --git a/reportbuilder/java/org/libreoffice/report/SDBCReportDataFactory.java b/reportbuilder/java/org/libreoffice/report/SDBCReportDataFactory.java
+index 463addc63e71..b3c4508666ca 100644
+--- a/reportbuilder/java/org/libreoffice/report/SDBCReportDataFactory.java
++++ b/reportbuilder/java/org/libreoffice/report/SDBCReportDataFactory.java
+@@ -58,9 +58,6 @@ import java.util.Map;
+ import java.util.logging.Level;
+ import java.util.logging.Logger;
+
+-import org.apache.commons.logging.Log;
+-import org.apache.commons.logging.LogFactory;
+-
+
+ /**
+ * Very primitive implementation, just to show how this could be used ...
+@@ -142,7 +139,7 @@ public class SDBCReportDataFactory implements DataSourceFactory
+ private int parameterCount = 0;
+ private final ArrayList<Integer> parameterIndex = new ArrayList<Integer>();
+ }
+- private static final Log LOGGER = LogFactory.getLog(SDBCReportDataFactory.class);
++ private static final Logger LOGGER = Logger.getLogger(SDBCReportDataFactory.class.getName());
+ public static final String COMMAND_TYPE = "command-type";
+ public static final String ESCAPE_PROCESSING = "escape-processing";
+ public static final String SORT_EXPRESSIONS = "sort-expressions";
+@@ -259,7 +256,7 @@ public class SDBCReportDataFactory implements DataSourceFactory
+ }
+ catch (SQLException ex)
+ {
+- LOGGER.error("ReportProcessing failed / getOrderStatement could not get quote character", ex);
++ LOGGER.severe("ReportProcessing failed / getOrderStatement could not get quote character: " + ex);
+ // fall back to the SQL standard
+ quote="";
+ }
+diff --git a/reportbuilder/java/org/libreoffice/report/StorageRepository.java b/reportbuilder/java/org/libreoffice/report/StorageRepository.java
+index 8b6d08c458a2..a338ee5dedb5 100644
+--- a/reportbuilder/java/org/libreoffice/report/StorageRepository.java
++++ b/reportbuilder/java/org/libreoffice/report/StorageRepository.java
+@@ -37,9 +37,7 @@ import java.io.BufferedOutputStream;
+ import java.io.IOException;
+ import java.io.InputStream;
+ import java.io.OutputStream;
+-
+-import org.apache.commons.logging.Log;
+-import org.apache.commons.logging.LogFactory;
++import java.util.logging.Logger;
+
+ /**
+ * A directory holds all the contents here.
+@@ -49,8 +47,8 @@ import org.apache.commons.logging.LogFactory;
+ public class StorageRepository implements InputRepository, OutputRepository
+ {
+
+- private static final Log LOGGER = LogFactory.getLog(StorageRepository.class);
+- private static final String REPORT_PROCESSING_FAILED = "ReportProcessing failed";
++ private static final Logger LOGGER = Logger.getLogger(StorageRepository.class.getName());
++ private static final String REPORT_PROCESSING_FAILED = "ReportProcessing failed: ";
+ private XStorage input;
+ private XStorage output;
+ private final String rootURL;
+@@ -134,11 +132,11 @@ public class StorageRepository implements InputRepository, OutputRepository
+ }
+ catch (InvalidStorageException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ catch (com.sun.star.lang.IllegalArgumentException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ catch (NoSuchElementException e)
+ {
+@@ -168,15 +166,15 @@ public class StorageRepository implements InputRepository, OutputRepository
+ }
+ catch (InvalidStorageException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ catch (com.sun.star.lang.IllegalArgumentException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ catch (NoSuchElementException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ return false;
+ }
+@@ -195,23 +193,23 @@ public class StorageRepository implements InputRepository, OutputRepository
+ }
+ catch (NoSuchElementException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ catch (WrappedTargetException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ catch (InvalidStorageException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ catch (IllegalArgumentException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ catch (com.sun.star.io.IOException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ throw new IOException();
+ }
+@@ -245,27 +243,27 @@ public class StorageRepository implements InputRepository, OutputRepository
+ }
+ catch (UnknownPropertyException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ catch (PropertyVetoException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ catch (IllegalArgumentException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ catch (WrappedTargetException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ catch (InvalidStorageException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ catch (com.sun.star.io.IOException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+
+ throw new IOException();
+@@ -293,11 +291,11 @@ public class StorageRepository implements InputRepository, OutputRepository
+ }
+ catch (com.sun.star.io.IOException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ catch (WrappedTargetException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ output.dispose();
+ }
+@@ -312,11 +310,11 @@ public class StorageRepository implements InputRepository, OutputRepository
+ }
+ catch (InvalidStorageException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ catch (com.sun.star.lang.IllegalArgumentException ex)
+ {
+- LOGGER.error(REPORT_PROCESSING_FAILED, ex);
++ LOGGER.severe(REPORT_PROCESSING_FAILED + ex);
+ }
+ catch (NoSuchElementException ex)
+ {
+diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/Manifest.mf b/reportbuilder/java/org/libreoffice/report/pentaho/Manifest.mf
+index 23731b104054..2a56b2fbb9fa 100644
+--- a/reportbuilder/java/org/libreoffice/report/pentaho/Manifest.mf
++++ b/reportbuilder/java/org/libreoffice/report/pentaho/Manifest.mf
+@@ -3,5 +3,5 @@ Class-Path: reportbuilderwizard.jar
+ flute-1.1.6.jar libserializer-1.1.6.jar libbase-1.1.6.jar
+ libfonts-1.1.6.jar libformula-1.1.7.jar liblayout.jar
+ libloader-1.1.6.jar librepository-1.1.6.jar libxml-1.1.7.jar
+- flow-engine.jar sac.jar commons-logging-1.2.jar
++ flow-engine.jar sac.jar
+ UNO-Type-Path:
+diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/PentahoReportJob.java b/reportbuilder/java/org/libreoffice/report/pentaho/PentahoReportJob.java
+index 480bca548e7e..efb4261ce127 100644
+--- a/reportbuilder/java/org/libreoffice/report/pentaho/PentahoReportJob.java
++++ b/reportbuilder/java/org/libreoffice/report/pentaho/PentahoReportJob.java
+@@ -42,9 +42,7 @@ import java.io.IOException;
+
+ import java.util.ArrayList;
+ import java.util.List;
+-
+-import org.apache.commons.logging.Log;
+-import org.apache.commons.logging.LogFactory;
++import java.util.logging.Logger;
+
+ import org.jfree.report.expressions.Expression;
+ import org.jfree.report.expressions.FormulaExpression;
+@@ -72,7 +70,7 @@ import org.pentaho.reporting.libraries.resourceloader.ResourceManager;
+ public class PentahoReportJob implements ReportJob
+ {
+
+- private static final Log LOGGER = LogFactory.getLog(PentahoReportJob.class);
++ private static final Logger LOGGER = Logger.getLogger(PentahoReportJob.class.getName());
+ private final DataSourceFactory dataSourceFactory;
+ private final OutputRepository outputRepository;
+ private final JobProperties jobProperties;
+@@ -235,7 +233,7 @@ public class PentahoReportJob implements ReportJob
+ }
+ catch (ParseException ex)
+ {
+- LOGGER.error("ReportProcessing failed", ex);
++ LOGGER.severe("ReportProcessing failed: " + ex);
+ }
+ }
+ else if (node instanceof OfficeDetailSection)
+@@ -338,7 +336,7 @@ public class PentahoReportJob implements ReportJob
+ rp.processReport(job);
+ job.close();
+ final long endTime = System.currentTimeMillis();
+- LOGGER.debug("Report processing time: " + (endTime - startTime));
++ LOGGER.config("Report processing time: " + (endTime - startTime));
+ }
+ catch (final Exception e)
+ {
+diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/SOReportJobFactory.java b/reportbuilder/java/org/libreoffice/report/pentaho/SOReportJobFactory.java
+index 54694fd619ab..3c52473e3d3c 100644
+--- a/reportbuilder/java/org/libreoffice/report/pentaho/SOReportJobFactory.java
++++ b/reportbuilder/java/org/libreoffice/report/pentaho/SOReportJobFactory.java
+@@ -68,9 +68,6 @@ import java.io.Writer;
+ import java.io.PrintWriter;
+ import java.io.StringWriter;
+
+-import org.apache.commons.logging.Log;
+-import org.apache.commons.logging.LogFactory;
+-
+ /**
+ * This class capsulates the class, that implements the minimal component, a factory for creating the service
+ * (<CODE>__getComponentFactory</CODE>) and a method, that writes the information into the given registry key
+@@ -86,7 +83,7 @@ public class SOReportJobFactory
+ public static class _SOReportJobFactory extends WeakBase implements XInitialization, XServiceInfo, XJob, XPropertySet, ReportJobFactory
+ {
+
+- private static final Log LOGGER = LogFactory.getLog(_SOReportJobFactory.class);
++ private static final Logger LOGGER = Logger.getLogger(_SOReportJobFactory.class.getName());
+ /**
+ * The service name, that must be used to get an instance of this service.
+ */
+@@ -242,7 +239,7 @@ public class SOReportJobFactory
+ }
+ catch (java.lang.Exception e)
+ {
+- LOGGER.error("ReportProcessing failed", e);
++ LOGGER.severe("ReportProcessing failed: " + e);
+ Writer result = new StringWriter();
+ PrintWriter printWriter = new PrintWriter(result);
+ e.printStackTrace(printWriter);
+@@ -254,7 +251,7 @@ public class SOReportJobFactory
+ }
+ catch (java.lang.IncompatibleClassChangeError e)
+ {
+- LOGGER.error("Detected an IncompatibleClassChangeError");
++ LOGGER.severe("Detected an IncompatibleClassChangeError");
+ Writer result = new StringWriter();
+ PrintWriter printWriter = new PrintWriter(result);
+ e.printStackTrace(printWriter);
+diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormatValueUtility.java b/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormatValueUtility.java
+index 6a1bd00736ee..eab7c512284d 100644
+--- a/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormatValueUtility.java
++++ b/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormatValueUtility.java
+@@ -208,7 +208,7 @@ public class FormatValueUtility
+ if (result == null)
+ {
+ // ignore it. Ignoring it is much better than printing 'null'.
+- // LOGGER.debug("Formula '" + formulaExpression.getFormula() + "' evaluated to null.");
++ // LOGGER.config("Formula '" + formulaExpression.getFormula() + "' evaluated to null.");
+ return null;
+ }
+ else if (result instanceof DataFlags)
+diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormattedTextLayoutController.java b/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormattedTextLayoutController.java
+index 7f1470edc866..7959b5857408 100644
+--- a/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormattedTextLayoutController.java
++++ b/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormattedTextLayoutController.java
+@@ -20,8 +20,7 @@ package org.libreoffice.report.pentaho.layoutprocessor;
+
+ import org.libreoffice.report.pentaho.OfficeNamespaces;
+ import org.libreoffice.report.pentaho.model.FormattedTextElement;
+-import org.apache.commons.logging.Log;
+-import org.apache.commons.logging.LogFactory;
++import java.util.logging.Logger;
+
+ import org.jfree.report.DataFlags;
+ import org.jfree.report.DataSourceException;
+@@ -45,7 +44,7 @@ public class FormattedTextLayoutController
+ extends AbstractReportElementLayoutController
+ {
+
+- private static final Log LOGGER = LogFactory.getLog(FormattedTextLayoutController.class);
++ private static final Logger LOGGER = Logger.getLogger(FormattedTextLayoutController.class.getName());
+
+ @Override
+ public boolean isValueChanged()
+@@ -62,7 +61,7 @@ public class FormattedTextLayoutController
+ }
+ catch (final ParseException e)
+ {
+- LOGGER.debug("Parse Exception", e);
++ LOGGER.config("Parse Exception: " + e);
+ return false;
+ }
+ }
+diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/ImageElementLayoutController.java b/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/ImageElementLayoutController.java
+index 0bf40b9dcd28..6fc68e816f7c 100644
+--- a/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/ImageElementLayoutController.java
++++ b/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/ImageElementLayoutController.java
+@@ -22,8 +22,7 @@ import org.libreoffice.report.OfficeToken;
+ import org.libreoffice.report.pentaho.OfficeNamespaces;
+ import org.libreoffice.report.pentaho.model.ImageElement;
+
+-import org.apache.commons.logging.Log;
+-import org.apache.commons.logging.LogFactory;
++import java.util.logging.Logger;
+
+ import org.jfree.layouting.util.AttributeMap;
+ import org.jfree.report.DataSourceException;
+@@ -59,7 +58,7 @@ public class ImageElementLayoutController
+ extends AbstractReportElementLayoutController
+ {
+
+- private static final Log LOGGER = LogFactory.getLog(ImageElementLayoutController.class);
++ private static final Logger LOGGER = Logger.getLogger(ImageElementLayoutController.class.getName());
+ private ImageElementContext context;
+
+ @Override
+@@ -116,7 +115,7 @@ public class ImageElementLayoutController
+ final LayoutController cellController = findParentCell();
+ if (cellController == null)
+ {
+- LOGGER.warn("Image is not contained in a table. Unable to calculate the image-size.");
++ LOGGER.warning("Image is not contained in a table. Unable to calculate the image-size.");
+ return null;
+ }
+ final Element tableCell = (Element) cellController.getNode();
+@@ -124,14 +123,14 @@ public class ImageElementLayoutController
+ final int colSpan = TextUtilities.parseInt((String) tableCell.getAttribute(OfficeNamespaces.TABLE_NS, "number-columns-spanned"), 1);
+ if (rowSpan < 1 || colSpan < 1)
+ {
+- LOGGER.warn("Rowspan or colspan for image-size calculation was invalid.");
++ LOGGER.warning("Rowspan or colspan for image-size calculation was invalid.");
+ return null;
+ }
+
+ final LayoutController rowController = cellController.getParent();
+ if (rowController == null)
+ {
+- LOGGER.warn("Table-Cell has no parent. Unable to calculate the image-size.");
++ LOGGER.warning("Table-Cell has no parent. Unable to calculate the image-size.");
+ return null;
+ }
+ final Section tableRow = (Section) rowController.getNode();
+@@ -141,14 +140,14 @@ public class ImageElementLayoutController
+ final int columnPos = findNodeInSection(tableRow, tableCell, OfficeToken.COVERED_TABLE_CELL);
+ if (columnPos == -1)
+ {
+- LOGGER.warn("Table-Cell is not a direct child of the table-row. Unable to calculate the image-size.");
++ LOGGER.warning("Table-Cell is not a direct child of the table-row. Unable to calculate the image-size.");
+ return null;
+ }
+
+ final LayoutController tableController = rowController.getParent();
+ if (tableController == null)
+ {
+- LOGGER.warn("Table-Row has no Table. Unable to calculate the image-size.");
++ LOGGER.warning("Table-Row has no Table. Unable to calculate the image-size.");
+ return null;
+ }
+
+@@ -158,7 +157,7 @@ public class ImageElementLayoutController
+ if (columns.getNodeCount() <= columnPos + colSpan)
+ {
+ // the colspan is too large. The table definition is therefore invalid. We do not try to fix this.
+- LOGGER.warn(
++ LOGGER.warning(
+ "The Table's defined columns do not match the col-span or col-position. Unable to calculate the image-size.");
+ return null;
+ }
+@@ -169,7 +168,7 @@ public class ImageElementLayoutController
+ final int rowPos = findNodeInSection(table, tableRow, null);
+ if (rowPos == -1)
+ {
+- LOGGER.warn("Table-Cell is not a direct child of the table-row. Unable to calculate the image-size.");
++ LOGGER.warning("Table-Cell is not a direct child of the table-row. Unable to calculate the image-size.");
+ return null;
+ }
+
+diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/output/ImageProducer.java b/reportbuilder/java/org/libreoffice/report/pentaho/output/ImageProducer.java
+index ae1a8273bfb7..69995d7aa1c5 100644
+--- a/reportbuilder/java/org/libreoffice/report/pentaho/output/ImageProducer.java
++++ b/reportbuilder/java/org/libreoffice/report/pentaho/output/ImageProducer.java
+@@ -48,9 +48,6 @@ import java.util.Map;
+ import java.util.logging.Level;
+ import java.util.logging.Logger;
+
+-import org.apache.commons.logging.Log;
+-import org.apache.commons.logging.LogFactory;
+-
+ import org.jfree.layouting.input.style.values.CSSNumericType;
+ import org.jfree.layouting.input.style.values.CSSNumericValue;
+
+@@ -67,7 +64,7 @@ import org.pentaho.reporting.libraries.base.util.WaitingImageObserver;
+ public class ImageProducer
+ {
+
+- private static final Log LOGGER = LogFactory.getLog(ImageProducer.class);
++ private static final Logger LOGGER = Logger.getLogger(ImageProducer.class.getName());
+
+ public static class OfficeImage
+ {
+@@ -188,7 +185,7 @@ public class ImageProducer
+ final boolean preserveIRI)
+ {
+
+- LOGGER.debug("Want to produce image " + imageData);
++ LOGGER.config("Want to produce image " + imageData);
+ if (imageData instanceof String)
+ {
+ return produceFromString((String) imageData, preserveIRI);
+@@ -247,11 +244,11 @@ public class ImageProducer
+ }
+ catch (IOException e)
+ {
+- LOGGER.warn("Failed to produce image from Blob", e);
++ LOGGER.warning("Failed to produce image from Blob: " + e);
+ }
+ catch (SQLException e)
+ {
+- LOGGER.warn("Failed to produce image from Blob", e);
++ LOGGER.warning("Failed to produce image from Blob: " + e);
+ }
+ return null;
+ }
+@@ -295,11 +292,11 @@ public class ImageProducer
+ }
+ catch (IOException e)
+ {
+- LOGGER.warn("Failed to load image from local input-repository", e);
++ LOGGER.warning("Failed to load image from local input-repository: " + e);
+ }
+ catch (ReportExecutionException e)
+ {
+- LOGGER.warn("Failed to create image from local input-repository", e);
++ LOGGER.warning("Failed to create image from local input-repository: " + e);
+ }
+ return null;
+ }
+@@ -353,11 +350,11 @@ public class ImageProducer
+ }
+ catch (IOException e)
+ {
+- LOGGER.warn("Failed to load image from local input-repository", e);
++ LOGGER.warning("Failed to load image from local input-repository: " + e);
+ }
+ catch (ReportExecutionException e)
+ {
+- LOGGER.warn("Failed to create image from local input-repository", e);
++ LOGGER.warning("Failed to create image from local input-repository: " + e);
+ }
+ }
+ else
+@@ -435,11 +432,11 @@ public class ImageProducer
+ }
+ catch (IOException e)
+ {
+- LOGGER.warn("Failed to load image from local input-repository", e);
++ LOGGER.warning("Failed to load image from local input-repository: " + e);
+ }
+ catch (ReportExecutionException e)
+ {
+- LOGGER.warn("Failed to create image from local input-repository", e);
++ LOGGER.warning("Failed to create image from local input-repository: " + e);
+ }
+
+ if (!preserveIRI)
+diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/output/OfficeDocumentReportTarget.java b/reportbuilder/java/org/libreoffice/report/pentaho/output/OfficeDocumentReportTarget.java
+index a5c3be135a65..b73b5781b3a3 100644
+--- a/reportbuilder/java/org/libreoffice/report/pentaho/output/OfficeDocumentReportTarget.java
++++ b/reportbuilder/java/org/libreoffice/report/pentaho/output/OfficeDocumentReportTarget.java
+@@ -65,9 +65,6 @@ import java.util.Map;
+ import java.util.zip.DeflaterOutputStream;
+ import java.util.zip.InflaterInputStream;
+
+-import org.apache.commons.logging.Log;
+-import org.apache.commons.logging.LogFactory;
+-
+ import org.jfree.layouting.input.style.parser.CSSValueFactory;
+ import org.jfree.layouting.input.style.parser.StyleSheetParserUtil;
+ import org.jfree.layouting.input.style.values.CSSNumericType;
+@@ -112,7 +109,7 @@ import org.w3c.css.sac.LexicalUnit;
+ public abstract class OfficeDocumentReportTarget extends AbstractReportTarget
+ {
+
+- protected static final Log LOGGER = LogFactory.getLog(OfficeDocumentReportTarget.class);
++ protected static final Logger LOGGER = Logger.getLogger(OfficeDocumentReportTarget.class.getName());
+ public static final String HORIZONTAL_POS = "horizontal-pos";
+ public static final String TAG_DEF_PREFIX = "org.libreoffice.report.pentaho.output.";
+ private static final int ROLE_NONE = 0;
+@@ -517,7 +514,7 @@ public abstract class OfficeDocumentReportTarget extends AbstractReportTarget
+ // todo
+ if (DEBUG_ELEMENTS)
+ {
+- LOGGER.debug("Starting " + getCurrentState() + '/' + states.size() + ' ' + ReportTargetUtil.getNamespaceFromAttribute(attrs) + " -> " + ReportTargetUtil.getElemenTypeFromAttribute(attrs));
++ LOGGER.config("Starting " + getCurrentState() + '/' + states.size() + ' ' + ReportTargetUtil.getNamespaceFromAttribute(attrs) + " -> " + ReportTargetUtil.getElemenTypeFromAttribute(attrs));
+ }
+ try
+ {
+@@ -713,7 +710,7 @@ public abstract class OfficeDocumentReportTarget extends AbstractReportTarget
+ }
+ catch (IOException ioe)
+ {
+- LOGGER.error("ReportProcessing failed", ioe);
++ LOGGER.severe("ReportProcessing failed: " + ioe);
+ throw new ReportProcessingException("Failed to write content", ioe);
+ }
+ }
+@@ -762,7 +759,7 @@ public abstract class OfficeDocumentReportTarget extends AbstractReportTarget
+ if (styleMapper.isListOfStyles(elementNamespace, elementName, attrNamespace, attrName))
+ {
+ // ignored for now.
+- LOGGER.warn("List of styles is not yet implemented.");
++ LOGGER.warning("List of styles is not yet implemented.");
+ continue;
+ }
+
+@@ -970,7 +967,7 @@ public abstract class OfficeDocumentReportTarget extends AbstractReportTarget
+
+ if (DEBUG_ELEMENTS)
+ {
+- LOGGER.debug("Finished " + getCurrentState() + "/" + states.size() + " " + ReportTargetUtil.getNamespaceFromAttribute(attrs) + ":" + ReportTargetUtil.getElemenTypeFromAttribute(attrs));
++ LOGGER.config("Finished " + getCurrentState() + "/" + states.size() + " " + ReportTargetUtil.getNamespaceFromAttribute(attrs) + ":" + ReportTargetUtil.getElemenTypeFromAttribute(attrs));
+ }
+
+ }
+@@ -1153,7 +1150,7 @@ public abstract class OfficeDocumentReportTarget extends AbstractReportTarget
+ }
+ catch (IOException e)
+ {
+- LOGGER.error("ReportProcessing failed", e);
++ LOGGER.severe("ReportProcessing failed: " + e);
+ }
+ return state;
+ }
+@@ -1294,7 +1291,7 @@ public abstract class OfficeDocumentReportTarget extends AbstractReportTarget
+
+ final CSSNumericValue height = image.getHeight(); // always in 100th of a mm
+
+- LOGGER.debug("Image " + imageData + " Width: " + width + ", Height: " + height);
++ LOGGER.config("Image " + imageData + " Width: " + width + ", Height: " + height);
+ if (width == null || height == null)
+ {
+ return;
+@@ -1313,7 +1310,7 @@ public abstract class OfficeDocumentReportTarget extends AbstractReportTarget
+
+ if (imageAreaWidthVal == null || imageAreaHeightVal == null)
+ {
+- LOGGER.debug("Image data returned from context is invalid. Maybe this is not an image?");
++ LOGGER.config("Image data returned from context is invalid. Maybe this is not an image?");
+ return;
+ }
+ else
+@@ -1410,7 +1407,7 @@ public abstract class OfficeDocumentReportTarget extends AbstractReportTarget
+ }
+ else
+ {
+- LOGGER.debug("There is no image-context, so we have to rely on the image's natural bounds. " + "This may go awfully wrong.");
++ LOGGER.config("There is no image-context, so we have to rely on the image's natural bounds. " + "This may go awfully wrong.");
+ imageAreaWidthVal = image.getWidth();
+ imageAreaHeightVal = image.getHeight();
+ }
+@@ -1427,7 +1424,7 @@ public abstract class OfficeDocumentReportTarget extends AbstractReportTarget
+ frameList.setAttribute(OfficeNamespaces.SVG_NS, "y", posY.getValue() + posY.getType().getType());
+
+
+- LOGGER.debug("Image " + imageData + " A-Width: " + imageAreaWidthVal + ", A-Height: " + imageAreaHeightVal);
++ LOGGER.config("Image " + imageData + " A-Width: " + imageAreaWidthVal + ", A-Height: " + imageAreaHeightVal);
+
+ if (imageAreaWidthVal != null)
+ {
+diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/output/OleProducer.java b/reportbuilder/java/org/libreoffice/report/pentaho/output/OleProducer.java
+index 2010a189be1d..27f3c25a4b4b 100644
+--- a/reportbuilder/java/org/libreoffice/report/pentaho/output/OleProducer.java
++++ b/reportbuilder/java/org/libreoffice/report/pentaho/output/OleProducer.java
+@@ -32,14 +32,12 @@ import org.libreoffice.report.pentaho.PentahoReportEngineMetaData;
+ import java.io.IOException;
+
+ import java.util.List;
+-
+-import org.apache.commons.logging.Log;
+-import org.apache.commons.logging.LogFactory;
++import java.util.logging.Logger;
+
+ public class OleProducer
+ {
+
+- private static final Log LOGGER = LogFactory.getLog(OleProducer.class);
++ private static final Logger LOGGER = Logger.getLogger(OleProducer.class.getName());
+ private final InputRepository inputRepository;
+ private final OutputRepository outputRepository;
+ private final DefaultNameGenerator nameGenerator;
+@@ -100,16 +98,16 @@ public class OleProducer
+ }
+ catch (ReportExecutionException ex)
+ {
+- LOGGER.error("ReportProcessing failed", ex);
++ LOGGER.severe("ReportProcessing failed: " + ex);
+ }
+ catch (IOException ex)
+ {
+- LOGGER.error("ReportProcessing failed", ex);
++ LOGGER.severe("ReportProcessing failed: " + ex);
+ }
+ }
+ catch (IOException ex)
+ {
+- LOGGER.error("ReportProcessing failed", ex);
++ LOGGER.severe("ReportProcessing failed: " + ex);
+ } finally
+ {
+ if (subInputRepository != null)
+diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/output/StyleUtilities.java b/reportbuilder/java/org/libreoffice/report/pentaho/output/StyleUtilities.java
+index 2b204a4bf502..98af0c3fa076 100644
+--- a/reportbuilder/java/org/libreoffice/report/pentaho/output/StyleUtilities.java
++++ b/reportbuilder/java/org/libreoffice/report/pentaho/output/StyleUtilities.java
+@@ -28,9 +28,7 @@ import org.libreoffice.report.pentaho.model.OfficeStylesCollection;
+ import java.util.ArrayList;
+ import java.util.HashSet;
+ import java.util.Set;
+-
+-import org.apache.commons.logging.Log;
+-import org.apache.commons.logging.LogFactory;
++import java.util.logging.Logger;
+
+ import org.jfree.report.ReportProcessingException;
+ import org.jfree.report.structure.Element;
+@@ -46,7 +44,7 @@ import org.jfree.report.util.AttributeNameGenerator;
+ public class StyleUtilities
+ {
+
+- private static final Log LOGGER = LogFactory.getLog(StyleUtilities.class);
++ private static final Logger LOGGER = Logger.getLogger(StyleUtilities.class.getName());
+ private static final String STYLE = "style";
+
+ private StyleUtilities()
+@@ -180,7 +178,7 @@ public class StyleUtilities
+ }
+ else if (styleParent != null)
+ {
+- LOGGER.warn("Inconsistent styles: " + styleFamily + ":" + styleParent + " does not exist.");
++ LOGGER.warning("Inconsistent styles: " + styleFamily + ":" + styleParent + " does not exist.");
+ }
+ return preStyle;
+ }
+@@ -301,7 +299,7 @@ public class StyleUtilities
+ }
+ else
+ {
+- LOGGER.warn("Dangling data style: " + styleName);
++ LOGGER.warning("Dangling data style: " + styleName);
+ derivedStyle = null;
+ }
+ }
+diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/output/spreadsheet/SpreadsheetRawReportTarget.java b/reportbuilder/java/org/libreoffice/report/pentaho/output/spreadsheet/SpreadsheetRawReportTarget.java
+index e6c234503c22..b1d979e7b788 100644
+--- a/reportbuilder/java/org/libreoffice/report/pentaho/output/spreadsheet/SpreadsheetRawReportTarget.java
++++ b/reportbuilder/java/org/libreoffice/report/pentaho/output/spreadsheet/SpreadsheetRawReportTarget.java
+@@ -305,7 +305,7 @@ public class SpreadsheetRawReportTarget extends OfficeDocumentReportTarget
+ }
+ catch (IOException ex)
+ {
+- LOGGER.error("ReportProcessing failed", ex);
++ LOGGER.severe("ReportProcessing failed: " + ex);
+ }
+ }
+ }
+diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/parser/office/DocumentContentReadHandler.java b/reportbuilder/java/org/libreoffice/report/pentaho/parser/office/DocumentContentReadHandler.java
+index 6d36eb6f9ea5..65a48252e69f 100644
+--- a/reportbuilder/java/org/libreoffice/report/pentaho/parser/office/DocumentContentReadHandler.java
++++ b/reportbuilder/java/org/libreoffice/report/pentaho/parser/office/DocumentContentReadHandler.java
+@@ -22,8 +22,7 @@ import org.libreoffice.report.pentaho.model.OfficeDocument;
+ import org.libreoffice.report.pentaho.model.OfficeStylesCollection;
+ import org.libreoffice.report.pentaho.parser.style.OfficeStylesReadHandler;
+
+-import org.apache.commons.logging.Log;
+-import org.apache.commons.logging.LogFactory;
++import java.util.logging.Logger;
+
+ import org.jfree.report.JFreeReport;
+
+@@ -49,7 +48,7 @@ import org.xml.sax.SAXException;
+ public class DocumentContentReadHandler extends AbstractXmlReadHandler
+ {
+
+- private static final Log LOGGER = LogFactory.getLog(DocumentContentReadHandler.class);
++ private static final Logger LOGGER = Logger.getLogger(DocumentContentReadHandler.class.getName());
+ private OfficeDocument report;
+ private FontFaceDeclsReadHandler fontFaceReadHandler;
+ private BodyReadHandler bodyReadHandler;
+@@ -98,12 +97,12 @@ public class DocumentContentReadHandler extends AbstractXmlReadHandler
+ catch (ResourceKeyCreationException e)
+ {
+ // ignore ..
+- LOGGER.debug("Failed to create resource-key for 'styles.xml'. Ignoring.", e);
++ LOGGER.config("Failed to create resource-key for 'styles.xml'. Ignoring: " + e);
+ }
+ catch (ResourceException e)
+ {
+ // ignore ..
+- LOGGER.debug("Failed to parse resource for 'styles.xml'. Ignoring.", e);
++ LOGGER.config("Failed to parse resource for 'styles.xml'. Ignoring: " + e);
+ }
+
+ return new OfficeStylesCollection();
+@@ -135,12 +134,12 @@ public class DocumentContentReadHandler extends AbstractXmlReadHandler
+ catch (ResourceKeyCreationException e)
+ {
+ // ignore ..
+- LOGGER.debug("Failed to create resource-key for 'content.xml'. Ignoring.");
++ LOGGER.config("Failed to create resource-key for 'content.xml'. Ignoring.");
+ }
+ catch (ResourceException e)
+ {
+ // ignore ..
+- LOGGER.debug("Failed to parse resource for 'content.xml'. Ignoring.");
++ LOGGER.config("Failed to parse resource for 'content.xml'. Ignoring.");
+ }
+ return new OfficeDocument();
+
+diff --git a/solenv/flatpak-manifest.in b/solenv/flatpak-manifest.in
+index d5699baefb90..8610fa05d6f5 100644
+--- a/solenv/flatpak-manifest.in
++++ b/solenv/flatpak-manifest.in
+@@ -543,13 +543,6 @@
+ "dest": "external/tarballs",
+ "dest-filename": "beeca87be45ec87d241ddd0e1bad80c1-bsh-2.0b6-src.zip"
+ },
+- {
+- "url": "https://dev-www.libreoffice.org/src/commons-logging-1.2-src.tar.gz",
+- "sha256": "49665da5a60d033e6dff40fe0a7f9173e886ae859ce6096c1afe34c48b677c81",
+- "type": "file",
+- "dest": "external/tarballs",
+- "dest-filename": "commons-logging-1.2-src.tar.gz"
+- },
+ {
+ "url": "https://dev-www.libreoffice.org/src/ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip",
+ "sha256": "233f66e8d25c5dd971716d4200203a612a407649686ef3b52075d04b4c9df0dd",
+diff --git a/swext/mediawiki/src/THIRDPARTYLICENSEREADME.html b/swext/mediawiki/src/THIRDPARTYLICENSEREADME.html
+index fbd8b0bfdca0..877661330b6b 100644
+--- a/swext/mediawiki/src/THIRDPARTYLICENSEREADME.html
++++ b/swext/mediawiki/src/THIRDPARTYLICENSEREADME.html
+@@ -10,27 +10,6 @@ DO NOT TRANSLATE OR LOCALIZE THIS DOCUMENT<br>
+ <br>
+ <ul id="mozToc">
+ <!--mozToc h2 1 h3 2-->
+- <li><a href="#mozTocId445655">The Apache Software Foundation
+- </a>
+- <ul>
+- <li><a href="#mozTocId662146">Commons Codec
+- </a></li>
+- </ul>
+- </li>
+- <li><a href="#mozTocId954021">The Apache Software Foundation
+- </a>
+- <ul>
+- <li><a href="#mozTocId934893">Commons HTTP Client
+- </a></li>
+- </ul>
+- </li>
+- <li><a href="#mozTocId478594">The Apache Software Foundation
+- </a>
+- <ul>
+- <li><a href="#mozTocId789223">Commons Lang
+- </a></li>
+- </ul>
+- </li>
+ <li><a href="#mozTocId877758">The Apache Software Foundation
+ </a>
+ <ul>
+@@ -51,34 +30,6 @@ Foundation
+ <hr style="width: 100%; height: 2px;">The following software may be
+ included in this product: Jakarta Commons Codec; Use of any of this
+ software is governed by the terms of the license below:<br>
+-<h2><a class="mozTocH2" name="mozTocId445655"></a>The Apache Software
+-Foundation<br>
+-</h2>
+-<h3><a class="mozTocH3" name="mozTocId662146"></a>Commons Codec<br>
+-</h3>
+-<pre> Apache License<br> Version 2.0, January 2004<br> http://www.apache.org/licenses/<br><br> TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION<br><br> 1. Definitions.<br><br> "License" shall mean the terms and conditions for use, reproduction,<br> and distribution as defined by Sections 1 through 9 of this document.<br><br> "Licensor" shall mean the copyright owner or entity authorized by<br> the copyright owner that is granting the License.<br><br> "Legal Entity" shall mean the union of the acting entity and all<br> other entities that control, are controlled by, or are under common<br> control with that entity. For the purposes of this definition,<br> "control" means (i) the power, direct or indirect, to cause the<br> direction or management of such entity, whether by contract or<br> otherwise, or (ii) ownership of fifty percent (50%) or more of the<br> outstanding shares, or (iii) beneficial ownership of such entity.<br><br> "You" (or "Your") shall mean an individual or Legal Entity<br> exercising permissions granted by this License.<br><br> "Source" form shall mean the preferred form for making modifications,<br> including but not limited to software source code, documentation<br> source, and configuration files.<br><br> "Object" form shall mean any form resulting from mechanical<br> transformation or translation of a Source form, including but<br> not limited to compiled object code, generated documentation,<br> and conversions to other media types.<br><br> "Work" shall mean the work of authorship, whether in Source or<br> Object form, made available under the License, as indicated by a<br> copyright notice that is included in or attached to the work<br> (an example is provided in the Appendix below).<br><br> "Derivative Works" shall mean any work, whether in Source or Object<br> form, that is based on (or derived from) the Work and for which the<br> editorial revisions, annotations, elaborations, or other modifications<br> represent, as a whole, an original work of authorship. For the purposes<br> of this License, Derivative Works shall not include works that remain<br> separable from, or merely link (or bind by name) to the interfaces of,<br> the Work and Derivative Works thereof.<br><br> "Contribution" shall mean any work of authorship, including<br> the original version of the Work and any modifications or additions<br> to that Work or Derivative Works thereof, that is intentionally<br> submitted to Licensor for inclusion in the Work by the copyright owner<br> or by an individual or Legal Entity authorized to submit on behalf of<br> the copyright owner. For the purposes of this definition, "submitted"<br> means any form of electronic, verbal, or written communication sent<br> to the Licensor or its representatives, including but not limited to<br> communication on electronic mailing lists, source code control systems,<br> and issue tracking systems that are managed by, or on behalf of, the<br> Licensor for the purpose of discussing and improving the Work, but<br> excluding communication that is conspicuously marked or otherwise<br> designated in writing by the copyright owner as "Not a Contribution."<br><br> "Contributor" shall mean Licensor and any individual or Legal Entity<br> on behalf of whom a Contribution has been received by Licensor and<br> subsequently incorporated within the Work.<br><br> 2. Grant of Copyright License. Subject to the terms and conditions of<br> this License, each Contributor hereby grants to You a perpetual,<br> worldwide, non-exclusive, no-charge, royalty-free, irrevocable<br> copyright license to reproduce, prepare Derivative Works of,<br> publicly display, publicly perform, sublicense, and distribute the<br> Work and such Derivative Works in Source or Object form.<br><br> 3. Grant of Patent License. Subject to the terms and conditions of<br> this License, each Contributor hereby grants to You a perpetual,<br> worldwide, non-exclusive, no-charge, royalty-free, irrevocable<br> (except as stated in this section) patent license to make, have made,<br> use, offer to sell, sell, import, and otherwise transfer the Work,<br> where such license applies only to those patent claims licensable<br> by such Contributor that are necessarily infringed by their<br> Contribution(s) alone or by combination of their Contribution(s)<br> with the Work to which such Contribution(s) was submitted. If You<br> institute patent litigation against any entity (including a<br> cross-claim or counterclaim in a lawsuit) alleging that the Work<br> or a Contribution incorporated within the Work constitutes direct<br> or contributory patent infringement, then any patent licenses<br> granted to You under this License for that Work shall terminate<br> as of the date such litigation is filed.<br><br> 4. Redistribution. You may reproduce and distribute copies of the<br> Work or Derivative Works thereof in any medium, with or without<br> modifications, and in Source or Object form, provided that You<br> meet the following conditions:<br><br> (a) You must give any other recipients of the Work or<br> Derivative Works a copy of this License; and<br><br> (b) You must cause any modified files to carry prominent notices<br> stating that You changed the files; and<br><br> (c) You must retain, in the Source form of any Derivative Works<br> that You distribute, all copyright, patent, trademark, and<br> attribution notices from the Source form of the Work,<br> excluding those notices that do not pertain to any part of<br> the Derivative Works; and<br><br> (d) If the Work includes a "NOTICE" text file as part of its<br> distribution, then any Derivative Works that You distribute must<br> include a readable copy of the attribution notices contained<br> within such NOTICE file, excluding those notices that do not<br> pertain to any part of the Derivative Works, in at least one<br> of the following places: within a NOTICE text file distributed<br> as part of the Derivative Works; within the Source form or<br> documentation, if provided along with the Derivative Works; or,<br> within a display generated by the Derivative Works, if and<br> wherever such third-party notices normally appear. The contents<br> of the NOTICE file are for informational purposes only and<br> do not modify the License. You may add Your own attribution<br> notices within Derivative Works that You distribute, alongside<br> or as an addendum to the NOTICE text from the Work, provided<br> that such additional attribution notices cannot be construed<br> as modifying the License.<br><br> You may add Your own copyright statement to Your modifications and<br> may provide additional or different license terms and conditions<br> for use, reproduction, or distribution of Your modifications, or<br> for any such Derivative Works as a whole, provided Your use,<br> reproduction, and distribution of the Work otherwise complies with<br> the conditions stated in this License.<br><br> 5. Submission of Contributions. Unless You explicitly state otherwise,<br> any Contribution intentionally submitted for inclusion in the Work<br> by You to the Licensor shall be under the terms and conditions of<br> this License, without any additional terms or conditions.<br> Notwithstanding the above, nothing herein shall supersede or modify<br> the terms of any separate license agreement you may have executed<br> with Licensor regarding such Contributions.<br><br> 6. Trademarks. This License does not grant permission to use the trade<br> names, trademarks, service marks, or product names of the Licensor,<br> except as required for reasonable and customary use in describing the<br> origin of the Work and reproducing the content of the NOTICE file.<br><br> 7. Disclaimer of Warranty. Unless required by applicable law or<br> agreed to in writing, Licensor provides the Work (and each<br> Contributor provides its Contributions) on an "AS IS" BASIS,<br> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or<br> implied, including, without limitation, any warranties or conditions<br> of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A<br> PARTICULAR PURPOSE. You are solely responsible for determining the<br> appropriateness of using or redistributing the Work and assume any<br> risks associated with Your exercise of permissions under this License.<br><br> 8. Limitation of Liability. In no event and under no legal theory,<br> whether in tort (including negligence), contract, or otherwise,<br> unless required by applicable law (such as deliberate and grossly<br> negligent acts) or agreed to in writing, shall any Contributor be<br> liable to You for damages, including any direct, indirect, special,<br> incidental, or consequential damages of any character arising as a<br> result of this License or out of the use or inability to use the<br> Work (including but not limited to damages for loss of goodwill,<br> work stoppage, computer failure or malfunction, or any and all<br> other commercial damages or losses), even if such Contributor<br> has been advised of the possibility of such damages.<br><br> 9. Accepting Warranty or Additional Liability. While redistributing<br> the Work or Derivative Works thereof, You may choose to offer,<br> and charge a fee for, acceptance of support, warranty, indemnity,<br> or other liability obligations and/or rights consistent with this<br> License. However, in accepting such obligations, You may act only<br> on Your own behalf and on Your sole responsibility, not on behalf<br> of any other Contributor, and only if You agree to indemnify,<br> defend, and hold each Contributor harmless for any liability<br> incurred by, or claims asserted against, such Contributor by reason<br> of your accepting any such warranty or additional liability.<br><br> END OF TERMS AND CONDITIONS<br><br> APPENDIX: How to apply the Apache License to your work.<br><br> To apply the Apache License to your work, attach the following<br> boilerplate notice, with the fields enclosed by brackets "[]"<br> replaced with your own identifying information. (Don't include<br> the brackets!) The text should be enclosed in the appropriate<br> comment syntax for the file format. We also recommend that a<br> file or class name and description of purpose be included on the<br> same "printed page" as the copyright notice for easier<br> identification within third-party archives.<br><br> Copyright [yyyy] [name of copyright owner]<br><br> Licensed under the Apache License, Version 2.0 (the "License");<br> you may not use this file except in compliance with the License.<br> You may obtain a copy of the License at<br><br> http://www.apache.org/licenses/LICENSE-2.0<br><br> Unless required by applicable law or agreed to in writing, software<br> distributed under the License is distributed on an "AS IS" BASIS,<br> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br> See the License for the specific language governing permissions and<br> limitations under the License.<br><br></pre>
+-<hr style="width: 100%; height: 2px;">The following software may be
+-included in this product: Jakarta Commons HTTP Client 2; Use of any of
+-this
+-software is governed by the terms of the license below:<br>
+-<h2><a class="mozTocH2" name="mozTocId954021"></a>The Apache Software
+-Foundation<br>
+-</h2>
+-<h3><a class="mozTocH3" name="mozTocId934893"></a>Commons HTTP Client<br>
+-</h3>
+-<pre> Apache License<br> Version 2.0, January 2004<br> http://www.apache.org/licenses/<br><br> TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION<br><br> 1. Definitions.<br><br> "License" shall mean the terms and conditions for use, reproduction,<br> and distribution as defined by Sections 1 through 9 of this document.<br><br> "Licensor" shall mean the copyright owner or entity authorized by<br> the copyright owner that is granting the License.<br><br> "Legal Entity" shall mean the union of the acting entity and all<br> other entities that control, are controlled by, or are under common<br> control with that entity. For the purposes of this definition,<br> "control" means (i) the power, direct or indirect, to cause the<br> direction or management of such entity, whether by contract or<br> otherwise, or (ii) ownership of fifty percent (50%) or more of the<br> outstanding shares, or (iii) beneficial ownership of such entity.<br><br> "You" (or "Your") shall mean an individual or Legal Entity<br> exercising permissions granted by this License.<br><br> "Source" form shall mean the preferred form for making modifications,<br> including but not limited to software source code, documentation<br> source, and configuration files.<br><br> "Object" form shall mean any form resulting from mechanical<br> transformation or translation of a Source form, including but<br> not limited to compiled object code, generated documentation,<br> and conversions to other media types.<br><br> "Work" shall mean the work of authorship, whether in Source or<br> Object form, made available under the License, as indicated by a<br> copyright notice that is included in or attached to the work<br> (an example is provided in the Appendix below).<br><br> "Derivative Works" shall mean any work, whether in Source or Object<br> form, that is based on (or derived from) the Work and for which the<br> editorial revisions, annotations, elaborations, or other modifications<br> represent, as a whole, an original work of authorship. For the purposes<br> of this License, Derivative Works shall not include works that remain<br> separable from, or merely link (or bind by name) to the interfaces of,<br> the Work and Derivative Works thereof.<br><br> "Contribution" shall mean any work of authorship, including<br> the original version of the Work and any modifications or additions<br> to that Work or Derivative Works thereof, that is intentionally<br> submitted to Licensor for inclusion in the Work by the copyright owner<br> or by an individual or Legal Entity authorized to submit on behalf of<br> the copyright owner. For the purposes of this definition, "submitted"<br> means any form of electronic, verbal, or written communication sent<br> to the Licensor or its representatives, including but not limited to<br> communication on electronic mailing lists, source code control systems,<br> and issue tracking systems that are managed by, or on behalf of, the<br> Licensor for the purpose of discussing and improving the Work, but<br> excluding communication that is conspicuously marked or otherwise<br> designated in writing by the copyright owner as "Not a Contribution."<br><br> "Contributor" shall mean Licensor and any individual or Legal Entity<br> on behalf of whom a Contribution has been received by Licensor and<br> subsequently incorporated within the Work.<br><br> 2. Grant of Copyright License. Subject to the terms and conditions of<br> this License, each Contributor hereby grants to You a perpetual,<br> worldwide, non-exclusive, no-charge, royalty-free, irrevocable<br> copyright license to reproduce, prepare Derivative Works of,<br> publicly display, publicly perform, sublicense, and distribute the<br> Work and such Derivative Works in Source or Object form.<br><br> 3. Grant of Patent License. Subject to the terms and conditions of<br> this License, each Contributor hereby grants to You a perpetual,<br> worldwide, non-exclusive, no-charge, royalty-free, irrevocable<br> (except as stated in this section) patent license to make, have made,<br> use, offer to sell, sell, import, and otherwise transfer the Work,<br> where such license applies only to those patent claims licensable<br> by such Contributor that are necessarily infringed by their<br> Contribution(s) alone or by combination of their Contribution(s)<br> with the Work to which such Contribution(s) was submitted. If You<br> institute patent litigation against any entity (including a<br> cross-claim or counterclaim in a lawsuit) alleging that the Work<br> or a Contribution incorporated within the Work constitutes direct<br> or contributory patent infringement, then any patent licenses<br> granted to You under this License for that Work shall terminate<br> as of the date such litigation is filed.<br><br> 4. Redistribution. You may reproduce and distribute copies of the<br> Work or Derivative Works thereof in any medium, with or without<br> modifications, and in Source or Object form, provided that You<br> meet the following conditions:<br><br> (a) You must give any other recipients of the Work or<br> Derivative Works a copy of this License; and<br><br> (b) You must cause any modified files to carry prominent notices<br> stating that You changed the files; and<br><br> (c) You must retain, in the Source form of any Derivative Works<br> that You distribute, all copyright, patent, trademark, and<br> attribution notices from the Source form of the Work,<br> excluding those notices that do not pertain to any part of<br> the Derivative Works; and<br><br> (d) If the Work includes a "NOTICE" text file as part of its<br> distribution, then any Derivative Works that You distribute must<br> include a readable copy of the attribution notices contained<br> within such NOTICE file, excluding those notices that do not<br> pertain to any part of the Derivative Works, in at least one<br> of the following places: within a NOTICE text file distributed<br> as part of the Derivative Works; within the Source form or<br> documentation, if provided along with the Derivative Works; or,<br> within a display generated by the Derivative Works, if and<br> wherever such third-party notices normally appear. The contents<br> of the NOTICE file are for informational purposes only and<br> do not modify the License. You may add Your own attribution<br> notices within Derivative Works that You distribute, alongside<br> or as an addendum to the NOTICE text from the Work, provided<br> that such additional attribution notices cannot be construed<br> as modifying the License.<br><br> You may add Your own copyright statement to Your modifications and<br> may provide additional or different license terms and conditions<br> for use, reproduction, or distribution of Your modifications, or<br> for any such Derivative Works as a whole, provided Your use,<br> reproduction, and distribution of the Work otherwise complies with<br> the conditions stated in this License.<br><br> 5. Submission of Contributions. Unless You explicitly state otherwise,<br> any Contribution intentionally submitted for inclusion in the Work<br> by You to the Licensor shall be under the terms and conditions of<br> this License, without any additional terms or conditions.<br> Notwithstanding the above, nothing herein shall supersede or modify<br> the terms of any separate license agreement you may have executed<br> with Licensor regarding such Contributions.<br><br> 6. Trademarks. This License does not grant permission to use the trade<br> names, trademarks, service marks, or product names of the Licensor,<br> except as required for reasonable and customary use in describing the<br> origin of the Work and reproducing the content of the NOTICE file.<br><br> 7. Disclaimer of Warranty. Unless required by applicable law or<br> agreed to in writing, Licensor provides the Work (and each<br> Contributor provides its Contributions) on an "AS IS" BASIS,<br> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or<br> implied, including, without limitation, any warranties or conditions<br> of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A<br> PARTICULAR PURPOSE. You are solely responsible for determining the<br> appropriateness of using or redistributing the Work and assume any<br> risks associated with Your exercise of permissions under this License.<br><br> 8. Limitation of Liability. In no event and under no legal theory,<br> whether in tort (including negligence), contract, or otherwise,<br> unless required by applicable law (such as deliberate and grossly<br> negligent acts) or agreed to in writing, shall any Contributor be<br> liable to You for damages, including any direct, indirect, special,<br> incidental, or consequential damages of any character arising as a<br> result of this License or out of the use or inability to use the<br> Work (including but not limited to damages for loss of goodwill,<br> work stoppage, computer failure or malfunction, or any and all<br> other commercial damages or losses), even if such Contributor<br> has been advised of the possibility of such damages.<br><br> 9. Accepting Warranty or Additional Liability. While redistributing<br> the Work or Derivative Works thereof, You may choose to offer,<br> and charge a fee for, acceptance of support, warranty, indemnity,<br> or other liability obligations and/or rights consistent with this<br> License. However, in accepting such obligations, You may act only<br> on Your own behalf and on Your sole responsibility, not on behalf<br> of any other Contributor, and only if You agree to indemnify,<br> defend, and hold each Contributor harmless for any liability<br> incurred by, or claims asserted against, such Contributor by reason<br> of your accepting any such warranty or additional liability.<br><br> END OF TERMS AND CONDITIONS<br><br> APPENDIX: How to apply the Apache License to your work.<br><br> To apply the Apache License to your work, attach the following<br> boilerplate notice, with the fields enclosed by brackets "[]"<br> replaced with your own identifying information. (Don't include<br> the brackets!) The text should be enclosed in the appropriate<br> comment syntax for the file format. We also recommend that a<br> file or class name and description of purpose be included on the<br> same "printed page" as the copyright notice for easier<br> identification within third-party archives.<br><br> Copyright [yyyy] [name of copyright owner]<br><br> Licensed under the Apache License, Version 2.0 (the "License");<br> you may not use this file except in compliance with the License.<br> You may obtain a copy of the License at<br><br> http://www.apache.org/licenses/LICENSE-2.0<br><br> Unless required by applicable law or agreed to in writing, software<br> distributed under the License is distributed on an "AS IS" BASIS,<br> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br> See the License for the specific language governing permissions and<br> limitations under the License.<br><br></pre>
+-<hr style="width: 100%; height: 2px;">The following software may be
+-included in this product: Jakarta Commons Lang 2.1; Use of any of this
+-software is governed by the terms of the license below:<br>
+-<h2><a class="mozTocH2" name="mozTocId478594"></a>The Apache Software
+-Foundation<br>
+-</h2>
+-<h3><a class="mozTocH3" name="mozTocId789223"></a>Commons Lang<br>
+-</h3>
+-<pre> Apache License<br> Version 2.0, January 2004<br> http://www.apache.org/licenses/<br><br> TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION<br><br> 1. Definitions.<br><br> "License" shall mean the terms and conditions for use, reproduction,<br> and distribution as defined by Sections 1 through 9 of this document.<br><br> "Licensor" shall mean the copyright owner or entity authorized by<br> the copyright owner that is granting the License.<br><br> "Legal Entity" shall mean the union of the acting entity and all<br> other entities that control, are controlled by, or are under common<br> control with that entity. For the purposes of this definition,<br> "control" means (i) the power, direct or indirect, to cause the<br> direction or management of such entity, whether by contract or<br> otherwise, or (ii) ownership of fifty percent (50%) or more of the<br> outstanding shares, or (iii) beneficial ownership of such entity.<br><br> "You" (or "Your") shall mean an individual or Legal Entity<br> exercising permissions granted by this License.<br><br> "Source" form shall mean the preferred form for making modifications,<br> including but not limited to software source code, documentation<br> source, and configuration files.<br><br> "Object" form shall mean any form resulting from mechanical<br> transformation or translation of a Source form, including but<br> not limited to compiled object code, generated documentation,<br> and conversions to other media types.<br><br> "Work" shall mean the work of authorship, whether in Source or<br> Object form, made available under the License, as indicated by a<br> copyright notice that is included in or attached to the work<br> (an example is provided in the Appendix below).<br><br> "Derivative Works" shall mean any work, whether in Source or Object<br> form, that is based on (or derived from) the Work and for which the<br> editorial revisions, annotations, elaborations, or other modifications<br> represent, as a whole, an original work of authorship. For the purposes<br> of this License, Derivative Works shall not include works that remain<br> separable from, or merely link (or bind by name) to the interfaces of,<br> the Work and Derivative Works thereof.<br><br> "Contribution" shall mean any work of authorship, including<br> the original version of the Work and any modifications or additions<br> to that Work or Derivative Works thereof, that is intentionally<br> submitted to Licensor for inclusion in the Work by the copyright owner<br> or by an individual or Legal Entity authorized to submit on behalf of<br> the copyright owner. For the purposes of this definition, "submitted"<br> means any form of electronic, verbal, or written communication sent<br> to the Licensor or its representatives, including but not limited to<br> communication on electronic mailing lists, source code control systems,<br> and issue tracking systems that are managed by, or on behalf of, the<br> Licensor for the purpose of discussing and improving the Work, but<br> excluding communication that is conspicuously marked or otherwise<br> designated in writing by the copyright owner as "Not a Contribution."<br><br> "Contributor" shall mean Licensor and any individual or Legal Entity<br> on behalf of whom a Contribution has been received by Licensor and<br> subsequently incorporated within the Work.<br><br> 2. Grant of Copyright License. Subject to the terms and conditions of<br> this License, each Contributor hereby grants to You a perpetual,<br> worldwide, non-exclusive, no-charge, royalty-free, irrevocable<br> copyright license to reproduce, prepare Derivative Works of,<br> publicly display, publicly perform, sublicense, and distribute the<br> Work and such Derivative Works in Source or Object form.<br><br> 3. Grant of Patent License. Subject to the terms and conditions of<br> this License, each Contributor hereby grants to You a perpetual,<br> worldwide, non-exclusive, no-charge, royalty-free, irrevocable<br> (except as stated in this section) patent license to make, have made,<br> use, offer to sell, sell, import, and otherwise transfer the Work,<br> where such license applies only to those patent claims licensable<br> by such Contributor that are necessarily infringed by their<br> Contribution(s) alone or by combination of their Contribution(s)<br> with the Work to which such Contribution(s) was submitted. If You<br> institute patent litigation against any entity (including a<br> cross-claim or counterclaim in a lawsuit) alleging that the Work<br> or a Contribution incorporated within the Work constitutes direct<br> or contributory patent infringement, then any patent licenses<br> granted to You under this License for that Work shall terminate<br> as of the date such litigation is filed.<br><br> 4. Redistribution. You may reproduce and distribute copies of the<br> Work or Derivative Works thereof in any medium, with or without<br> modifications, and in Source or Object form, provided that You<br> meet the following conditions:<br><br> (a) You must give any other recipients of the Work or<br> Derivative Works a copy of this License; and<br><br> (b) You must cause any modified files to carry prominent notices<br> stating that You changed the files; and<br><br> (c) You must retain, in the Source form of any Derivative Works<br> that You distribute, all copyright, patent, trademark, and<br> attribution notices from the Source form of the Work,<br> excluding those notices that do not pertain to any part of<br> the Derivative Works; and<br><br> (d) If the Work includes a "NOTICE" text file as part of its<br> distribution, then any Derivative Works that You distribute must<br> include a readable copy of the attribution notices contained<br> within such NOTICE file, excluding those notices that do not<br> pertain to any part of the Derivative Works, in at least one<br> of the following places: within a NOTICE text file distributed<br> as part of the Derivative Works; within the Source form or<br> documentation, if provided along with the Derivative Works; or,<br> within a display generated by the Derivative Works, if and<br> wherever such third-party notices normally appear. The contents<br> of the NOTICE file are for informational purposes only and<br> do not modify the License. You may add Your own attribution<br> notices within Derivative Works that You distribute, alongside<br> or as an addendum to the NOTICE text from the Work, provided<br> that such additional attribution notices cannot be construed<br> as modifying the License.<br><br> You may add Your own copyright statement to Your modifications and<br> may provide additional or different license terms and conditions<br> for use, reproduction, or distribution of Your modifications, or<br> for any such Derivative Works as a whole, provided Your use,<br> reproduction, and distribution of the Work otherwise complies with<br> the conditions stated in this License.<br><br> 5. Submission of Contributions. Unless You explicitly state otherwise,<br> any Contribution intentionally submitted for inclusion in the Work<br> by You to the Licensor shall be under the terms and conditions of<br> this License, without any additional terms or conditions.<br> Notwithstanding the above, nothing herein shall supersede or modify<br> the terms of any separate license agreement you may have executed<br> with Licensor regarding such Contributions.<br><br> 6. Trademarks. This License does not grant permission to use the trade<br> names, trademarks, service marks, or product names of the Licensor,<br> except as required for reasonable and customary use in describing the<br> origin of the Work and reproducing the content of the NOTICE file.<br><br> 7. Disclaimer of Warranty. Unless required by applicable law or<br> agreed to in writing, Licensor provides the Work (and each<br> Contributor provides its Contributions) on an "AS IS" BASIS,<br> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or<br> implied, including, without limitation, any warranties or conditions<br> of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A<br> PARTICULAR PURPOSE. You are solely responsible for determining the<br> appropriateness of using or redistributing the Work and assume any<br> risks associated with Your exercise of permissions under this License.<br><br> 8. Limitation of Liability. In no event and under no legal theory,<br> whether in tort (including negligence), contract, or otherwise,<br> unless required by applicable law (such as deliberate and grossly<br> negligent acts) or agreed to in writing, shall any Contributor be<br> liable to You for damages, including any direct, indirect, special,<br> incidental, or consequential damages of any character arising as a<br> result of this License or out of the use or inability to use the<br> Work (including but not limited to damages for loss of goodwill,<br> work stoppage, computer failure or malfunction, or any and all<br> other commercial damages or losses), even if such Contributor<br> has been advised of the possibility of such damages.<br><br> 9. Accepting Warranty or Additional Liability. While redistributing<br> the Work or Derivative Works thereof, You may choose to offer,<br> and charge a fee for, acceptance of support, warranty, indemnity,<br> or other liability obligations and/or rights consistent with this<br> License. However, in accepting such obligations, You may act only<br> on Your own behalf and on Your sole responsibility, not on behalf<br> of any other Contributor, and only if You agree to indemnify,<br> defend, and hold each Contributor harmless for any liability<br> incurred by, or claims asserted against, such Contributor by reason<br> of your accepting any such warranty or additional liability.<br><br> END OF TERMS AND CONDITIONS<br><br> APPENDIX: How to apply the Apache License to your work.<br><br> To apply the Apache License to your work, attach the following<br> boilerplate notice, with the fields enclosed by brackets "[]"<br> replaced with your own identifying information. (Don't include<br> the brackets!) The text should be enclosed in the appropriate<br> comment syntax for the file format. We also recommend that a<br> file or class name and description of purpose be included on the<br> same "printed page" as the copyright notice for easier<br> identification within third-party archives.<br><br> Copyright [yyyy] [name of copyright owner]<br><br> Licensed under the Apache License, Version 2.0 (the "License");<br> you may not use this file except in compliance with the License.<br> You may obtain a copy of the License at<br><br> http://www.apache.org/licenses/LICENSE-2.0<br><br> Unless required by applicable law or agreed to in writing, software<br> distributed under the License is distributed on an "AS IS" BASIS,<br> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br> See the License for the specific language governing permissions and<br> limitations under the License.<br><br></pre>
+-<hr style="width: 100%; height: 2px;">The following software may be
+-included in this product: Jakarta Commons Codec; Use of any of this
+-software is governed by the terms of the license below:<br>
+ <h2><a class="mozTocH2" name="mozTocId877758"></a>The Apache Software
+ Foundation<br>
+ </h2>
+--
+2.30.2
+
diff --git a/0001-Replace-inet_ntoa-with-inet_ntop.patch b/0001-Replace-inet_ntoa-with-inet_ntop.patch
new file mode 100644
index 0000000..ed8ab7e
--- /dev/null
+++ b/0001-Replace-inet_ntoa-with-inet_ntop.patch
@@ -0,0 +1,162 @@
+From 366e9237399a948d2ef616b758d390bd7d0978a5 Mon Sep 17 00:00:00 2001
+From: Stephan Bergmann <sbergman@redhat.com>
+Date: Mon, 31 May 2021 09:36:28 +0200
+Subject: [PATCH] Replace inet_ntoa with inet_ntop
+
+...as inet_ntoa is potentially not thread-safe; and add a test
+
+Change-Id: I9df945b006ba7194c3b1444c4886101c08339ad0
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116425
+Tested-by: Jenkins
+Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
+(cherry picked from commit 33bf4f0bcf941ee4609f558442035514f54cbc8a)
+
+and
+
+Replace inet_addr with inet_pton
+
+...as inet_addr is deprecated (it does not allow to distinguish successful
+return for "255.255.255.255" from -1 error return); and update tests
+
+Change-Id: I605cb2ba18fe9bd11d2d68c8f1c94271c4503509
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116441
+Tested-by: Jenkins
+Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
+(cherry picked from commit 1fef071c01caf6c293dd941ee7c8340e6894afc3)
+
+fix leak in SocketTest
+
+Change-Id: I8c5e2d4c4687beab08876fe3e945d19a1629bc36
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116514
+Tested-by: Jenkins
+Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
+(cherry picked from commit 313eaf979ea2d69e4ffa88a5e87cc09ffe0ff088)
+---
+ sal/CppunitTest_sal_osl.mk | 1 +
+ sal/osl/unx/socket.cxx | 16 +++++++----
+ sal/qa/osl/socket.cxx | 58 ++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 70 insertions(+), 5 deletions(-)
+ create mode 100644 sal/qa/osl/socket.cxx
+
+diff --git a/sal/CppunitTest_sal_osl.mk b/sal/CppunitTest_sal_osl.mk
+index 2e4b77509f56..d8c2627d9e0f 100644
+--- a/sal/CppunitTest_sal_osl.mk
++++ b/sal/CppunitTest_sal_osl.mk
+@@ -23,6 +23,7 @@ $(eval $(call gb_CppunitTest_add_exception_objects,sal_osl,\
+ sal/qa/osl/process/osl_Thread \
+ sal/qa/osl/profile/osl_old_testprofile \
+ sal/qa/osl/setthreadname/test-setthreadname \
++ sal/qa/osl/socket \
+ ))
+
+ $(eval $(call gb_CppunitTest_use_libraries,sal_osl,\
+diff --git a/sal/osl/unx/socket.cxx b/sal/osl/unx/socket.cxx
+index 56a8f6cd63ac..9fafc6d1db81 100644
+--- a/sal/osl/unx/socket.cxx
++++ b/sal/osl/unx/socket.cxx
+@@ -437,7 +437,10 @@ oslSocketAddr SAL_CALL osl_createInetBroadcastAddr (
+ &pDottedAddr, strDottedAddr->buffer, strDottedAddr->length,
+ RTL_TEXTENCODING_UTF8, OUSTRING_TO_OSTRING_CVTFLAGS);
+
+- nAddr = inet_addr (pDottedAddr->buffer);
++ in_addr buf;
++ if (inet_pton (AF_INET, pDottedAddr->buffer, &buf) == 1) {
++ nAddr = buf.s_addr;
++ }
+ rtl_string_release (pDottedAddr);
+ }
+
+@@ -505,11 +508,11 @@ oslSocketAddr osl_psz_createInetSocketAddr (
+ sal_Int32 Port)
+ {
+ oslSocketAddr pAddr = nullptr;
+- sal_Int32 Addr = inet_addr(pszDottedAddr);
+- if(Addr != -1)
++ in_addr buf;
++ if(inet_pton(AF_INET, pszDottedAddr, &buf) == 1)
+ {
+ /* valid dotted addr */
+- pAddr = createSocketAddrWithFamily( osl_Socket_FamilyInet, htons(Port) , Addr );
++ pAddr = createSocketAddrWithFamily( osl_Socket_FamilyInet, htons(Port) , buf.s_addr );
+ }
+ return pAddr;
+ }
+@@ -1090,7 +1093,10 @@ oslSocketResult SAL_CALL osl_getDottedInetAddrOfSocketAddr(oslSocketAddr Addr, r
+ return osl_Socket_Error;
+ }
+
+- rtl_uString_newFromAscii(ustrDottedInetAddr,inet_ntoa(pSystemInetAddr->sin_addr));
++ char buf[INET_ADDRSTRLEN];
++ auto const text = inet_ntop(AF_INET, &pSystemInetAddr->sin_addr, buf, INET_ADDRSTRLEN);
++ assert(text != nullptr);
++ rtl_uString_newFromAscii(ustrDottedInetAddr,text);
+
+ return osl_Socket_Ok;
+
+diff --git a/sal/qa/osl/socket.cxx b/sal/qa/osl/socket.cxx
+new file mode 100644
+index 000000000000..ed31c9ede7ae
+--- /dev/null
++++ b/sal/qa/osl/socket.cxx
+@@ -0,0 +1,58 @@
++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
++/*
++ * This file is part of the LibreOffice project.
++ *
++ * This Source Code Form is subject to the terms of the Mozilla Public
++ * License, v. 2.0. If a copy of the MPL was not distributed with this
++ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
++ */
++
++#include <cppunit/TestAssert.h>
++#include <cppunit/TestFixture.h>
++#include <cppunit/extensions/HelperMacros.h>
++
++#include <osl/socket.h>
++#include <rtl/ustring.hxx>
++
++namespace
++{
++class SocketTest : public CppUnit::TestFixture
++{
++ CPPUNIT_TEST_SUITE(SocketTest);
++ CPPUNIT_TEST(test_createInetSocketAddr);
++ CPPUNIT_TEST(test_createInetBroadcastAddr);
++ CPPUNIT_TEST_SUITE_END();
++
++ void test_createInetSocketAddr()
++ {
++ OUString const in("123.4.56.78");
++ auto const addr = osl_createInetSocketAddr(in.pData, 100);
++ CPPUNIT_ASSERT(addr != nullptr);
++ CPPUNIT_ASSERT_EQUAL(osl_Socket_FamilyInet, osl_getFamilyOfSocketAddr(addr));
++ OUString out;
++ auto const res = osl_getDottedInetAddrOfSocketAddr(addr, &out.pData);
++ CPPUNIT_ASSERT_EQUAL(osl_Socket_Ok, res);
++ CPPUNIT_ASSERT_EQUAL(in, out);
++ CPPUNIT_ASSERT_EQUAL(sal_Int32(100), osl_getInetPortOfSocketAddr(addr));
++ osl_destroySocketAddr(addr);
++ }
++
++ void test_createInetBroadcastAddr()
++ {
++ OUString const in("123.4.56.78");
++ auto const addr = osl_createInetBroadcastAddr(in.pData, 100);
++ CPPUNIT_ASSERT(addr != nullptr);
++ CPPUNIT_ASSERT_EQUAL(osl_Socket_FamilyInet, osl_getFamilyOfSocketAddr(addr));
++ OUString out;
++ auto const res = osl_getDottedInetAddrOfSocketAddr(addr, &out.pData);
++ CPPUNIT_ASSERT_EQUAL(osl_Socket_Ok, res);
++ CPPUNIT_ASSERT_EQUAL(OUString("123.255.255.255"), out);
++ CPPUNIT_ASSERT_EQUAL(sal_Int32(100), osl_getInetPortOfSocketAddr(addr));
++ osl_destroySocketAddr(addr);
++ }
++};
++
++CPPUNIT_TEST_SUITE_REGISTRATION(SocketTest);
++}
++
++/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
+--
+2.31.1
+
diff --git a/0001-Resolves-rhbz-1432468-disable-opencl-by-default.patch b/0001-Resolves-rhbz-1432468-disable-opencl-by-default.patch
new file mode 100644
index 0000000..a974295
--- /dev/null
+++ b/0001-Resolves-rhbz-1432468-disable-opencl-by-default.patch
@@ -0,0 +1,26 @@
+From 87b90b6fbf010effd44ef0e2bd3d75b27562a82b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Mon, 27 Mar 2017 11:47:01 +0100
+Subject: [PATCH] Resolves: rhbz#1432468 disable opencl by default
+
+Change-Id: Ie037fcabdd219f195425979dd721501fb5527573
+---
+ officecfg/registry/schema/org/openoffice/Office/Common.xcs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+index 99b4104f6499..ef7ada84c2f3 100644
+--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
++++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+@@ -5652,7 +5652,7 @@
+ <desc>Determines whether OpenCL can be used, when available, to speed up
+ some operations.</desc>
+ </info>
+- <value>true</value>
++ <value>false</value>
+ </prop>
+ <prop oor:name="OpenCLDenyList" oor:type="oor:string-list" oor:nillable="false">
+ <!-- UIHints: Tools - Options General OpenCL -->
+--
+2.29.2
+
diff --git a/0001-Resolves-rhbz-2081661-gtk-critical-gtk_tree_view_scr.patch b/0001-Resolves-rhbz-2081661-gtk-critical-gtk_tree_view_scr.patch
new file mode 100644
index 0000000..6a40195
--- /dev/null
+++ b/0001-Resolves-rhbz-2081661-gtk-critical-gtk_tree_view_scr.patch
@@ -0,0 +1,51 @@
+From 1dbfd248524789efa4a84dc94d56a229c19bc0b9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Wed, 4 May 2022 11:52:58 +0100
+Subject: [PATCH] Resolves: rhbz#2081661 gtk-critical
+ gtk_tree_view_scroll_to_cell assertion
+
+Change-Id: I4c7c4caed907072ef3a73ccfafabe882d618fa0e
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133730
+Tested-by: Jenkins
+Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
+(cherry picked from commit 816435e4c2d52615462670464c48689bebdf1e55)
+---
+ cui/source/customize/SvxMenuConfigPage.cxx | 2 +-
+ cui/source/customize/SvxToolbarConfigPage.cxx | 6 ++++--
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/cui/source/customize/SvxMenuConfigPage.cxx b/cui/source/customize/SvxMenuConfigPage.cxx
+index 34cee1368d7a..bf7457193f5c 100644
+--- a/cui/source/customize/SvxMenuConfigPage.cxx
++++ b/cui/source/customize/SvxMenuConfigPage.cxx
+@@ -136,7 +136,7 @@ void SvxMenuConfigPage::Init()
+
+ ReloadTopLevelListBox();
+
+- m_xTopLevelListBox->set_active(0);
++ m_xTopLevelListBox->set_active(m_xTopLevelListBox->get_count() ? 0 : -1);
+ SelectElement();
+
+ m_xCommandCategoryListBox->Init(comphelper::getProcessComponentContext(), m_xFrame,
+diff --git a/cui/source/customize/SvxToolbarConfigPage.cxx b/cui/source/customize/SvxToolbarConfigPage.cxx
+index 99a85d82f96e..d2284428d8f1 100644
+--- a/cui/source/customize/SvxToolbarConfigPage.cxx
++++ b/cui/source/customize/SvxToolbarConfigPage.cxx
+@@ -246,10 +246,12 @@ void SvxToolbarConfigPage::Init()
+
+ ReloadTopLevelListBox();
+
+- sal_Int32 nPos = 0;
++ sal_Int32 nCount = m_xTopLevelListBox->get_count();
++ sal_Int32 nPos = nCount > 0 ? 0 : -1;
++
+ if (!m_aURLToSelect.isEmpty())
+ {
+- for (sal_Int32 i = 0, nCount = m_xTopLevelListBox->get_count(); i < nCount; ++i)
++ for (sal_Int32 i = 0; i < nCount; ++i)
+ {
+ SvxConfigEntry* pData
+ = reinterpret_cast<SvxConfigEntry*>(m_xTopLevelListBox->get_id(i).toInt64());
+--
+2.35.1
+
diff --git a/0001-Resolves-tdf-140250-don-t-share-adjustments-between-.patch b/0001-Resolves-tdf-140250-don-t-share-adjustments-between-.patch
new file mode 100644
index 0000000..97e4abe
--- /dev/null
+++ b/0001-Resolves-tdf-140250-don-t-share-adjustments-between-.patch
@@ -0,0 +1,123 @@
+From 197efb35e6f9661ecbeac2897d36a25bc2f6433e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Sun, 14 Nov 2021 14:59:38 +0000
+Subject: [PATCH] Resolves: tdf#140250 don't share adjustments between
+ differerent spinbuttons
+
+Change-Id: Ib684c746ff3176cf45ea9364efc12f2d6dde1f70
+---
+ cui/uiconfig/ui/breaknumberoption.ui | 18 ++++++++++++++++--
+ cui/uiconfig/ui/calloutpage.ui | 14 ++++++++++++--
+ svx/uiconfig/ui/sidebareffect.ui | 7 ++++++-
+ 3 files changed, 34 insertions(+), 5 deletions(-)
+
+diff --git a/cui/uiconfig/ui/breaknumberoption.ui b/cui/uiconfig/ui/breaknumberoption.ui
+index 2641babeeb5d..23fe294ec702 100644
+--- a/cui/uiconfig/ui/breaknumberoption.ui
++++ b/cui/uiconfig/ui/breaknumberoption.ui
+@@ -9,6 +9,20 @@
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
++ <object class="GtkAdjustment" id="adjustment2">
++ <property name="lower">2</property>
++ <property name="upper">9</property>
++ <property name="value">1</property>
++ <property name="step_increment">1</property>
++ <property name="page_increment">10</property>
++ </object>
++ <object class="GtkAdjustment" id="adjustment3">
++ <property name="lower">2</property>
++ <property name="upper">9</property>
++ <property name="value">1</property>
++ <property name="step_increment">1</property>
++ <property name="page_increment">10</property>
++ </object>
+ <object class="GtkDialog" id="BreakNumberOption">
+ <property name="can_focus">False</property>
+ <property name="border_width">6</property>
+@@ -134,7 +148,7 @@
+ <property name="can_focus">True</property>
+ <property name="halign">start</property>
+ <property name="activates_default">True</property>
+- <property name="adjustment">adjustment1</property>
++ <property name="adjustment">adjustment2</property>
+ <property name="truncate-multiline">True</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="afterbreak-atkobject">
+@@ -179,7 +193,7 @@
+ <property name="can_focus">True</property>
+ <property name="halign">start</property>
+ <property name="activates_default">True</property>
+- <property name="adjustment">adjustment1</property>
++ <property name="adjustment">adjustment3</property>
+ <property name="truncate-multiline">True</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="wordlength-atkobject">
+diff --git a/cui/uiconfig/ui/calloutpage.ui b/cui/uiconfig/ui/calloutpage.ui
+index 87d4eff64eb4..00898dc3390c 100644
+--- a/cui/uiconfig/ui/calloutpage.ui
++++ b/cui/uiconfig/ui/calloutpage.ui
+@@ -7,6 +7,16 @@
+ <property name="step_increment">0.5</property>
+ <property name="page_increment">10</property>
+ </object>
++ <object class="GtkAdjustment" id="adjustment2">
++ <property name="upper">2400</property>
++ <property name="step_increment">0.5</property>
++ <property name="page_increment">10</property>
++ </object>
++ <object class="GtkAdjustment" id="adjustment3">
++ <property name="upper">2400</property>
++ <property name="step_increment">0.5</property>
++ <property name="page_increment">10</property>
++ </object>
+ <object class="GtkBox" id="CalloutPage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+@@ -231,7 +241,7 @@
+ <property name="can_focus">True</property>
+ <property name="activates_default">True</property>
+ <property name="text">0.00</property>
+- <property name="adjustment">adjustment1</property>
++ <property name="adjustment">adjustment2</property>
+ <property name="digits">2</property>
+ <property name="truncate-multiline">True</property>
+ <child internal-child="accessible">
+@@ -277,7 +287,7 @@
+ <property name="can_focus">True</property>
+ <property name="activates_default">True</property>
+ <property name="text">0.00</property>
+- <property name="adjustment">adjustment1</property>
++ <property name="adjustment">adjustment3</property>
+ <property name="digits">2</property>
+ <property name="truncate-multiline">True</property>
+ <child internal-child="accessible">
+diff --git a/svx/uiconfig/ui/sidebareffect.ui b/svx/uiconfig/ui/sidebareffect.ui
+index 0e633242cd5c..1e041a2a8726 100644
+--- a/svx/uiconfig/ui/sidebareffect.ui
++++ b/svx/uiconfig/ui/sidebareffect.ui
+@@ -12,6 +12,11 @@
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
++ <object class="GtkAdjustment" id="adjustment3">
++ <property name="upper">150</property>
++ <property name="step_increment">1</property>
++ <property name="page_increment">10</property>
++ </object>
+ <!-- n-columns=1 n-rows=1 -->
+ <object class="GtkGrid" id="EffectPropertyPanel">
+ <property name="visible">True</property>
+@@ -195,7 +200,7 @@
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="truncate-multiline">True</property>
+- <property name="adjustment">adjustment1</property>
++ <property name="adjustment">adjustment3</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+--
+2.33.1
+
diff --git a/0001-Resolves-tdf-145567-restore-focus-to-the-usual-frame.patch b/0001-Resolves-tdf-145567-restore-focus-to-the-usual-frame.patch
new file mode 100644
index 0000000..cced1b7
--- /dev/null
+++ b/0001-Resolves-tdf-145567-restore-focus-to-the-usual-frame.patch
@@ -0,0 +1,63 @@
+From ea6cfca48017b76bfeb8898e6d9e47b3011a3add Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Sat, 6 Nov 2021 21:32:21 +0000
+Subject: [PATCH] Resolves: tdf#145567 restore focus to the usual frame focus
+ widget
+
+when tearing down the start center. Don't leave the focus in an
+arbitrary widget.
+
+Change-Id: I82c30c94121dc43b2ea1b4fbc66a0a3e79f7e664
+---
+ vcl/unx/gtk3/gtk3gtkinst.cxx | 28 ++++++++++++++++++++++++++++
+ 1 file changed, 28 insertions(+)
+
+diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
+index a5d233e2f95e..0fddb27aaa2d 100644
+--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
++++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
+@@ -1899,6 +1899,26 @@ GdkDragAction VclToGdk(sal_Int8 dragOperation)
+ return eRet;
+ }
+
++GtkWindow* get_active_window()
++{
++ GtkWindow* pFocus = nullptr;
++
++ GList* pList = gtk_window_list_toplevels();
++
++ for (GList* pEntry = pList; pEntry; pEntry = pEntry->next)
++ {
++ if (gtk_window_has_toplevel_focus(GTK_WINDOW(pEntry->data)))
++ {
++ pFocus = GTK_WINDOW(pEntry->data);
++ break;
++ }
++ }
++
++ g_list_free(pList);
++
++ return pFocus;
++}
++
+ class GtkInstanceWidget : public virtual weld::Widget
+ {
+ protected:
+@@ -16635,6 +16655,14 @@ private:
+ // rehook handler and let vcl cycle its own way through this widget's
+ // children
+ pFrame->AllowCycleFocusOut();
++
++ // tdf#145567 if the focus is in this hierarchy then, now that we are tearing down,
++ // move focus to the usual focus candidate for the frame
++ GtkWindow* pFocusWin = get_active_window();
++ GtkWidget* pFocus = pFocusWin ? gtk_window_get_focus(pFocusWin) : nullptr;
++ bool bHasFocus = pFocus && gtk_widget_is_ancestor(pFocus, pTopLevel);
++ if (bHasFocus)
++ pFrame->GrabFocus();
+ }
+
+ static void signalUnmap(GtkWidget*, gpointer user_data)
+--
+2.33.1
+
diff --git a/0001-Revert-tdf-101630-gdrive-support-w-oAuth-and-Drive-A.patch b/0001-Revert-tdf-101630-gdrive-support-w-oAuth-and-Drive-A.patch
new file mode 100644
index 0000000..2399026
--- /dev/null
+++ b/0001-Revert-tdf-101630-gdrive-support-w-oAuth-and-Drive-A.patch
@@ -0,0 +1,1262 @@
+From 12f14a6c9d2b5034df53646bbc57774c0c83ecaa Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Fri, 3 Sep 2021 09:13:03 +0100
+Subject: [PATCH] Revert "tdf#101630 - gdrive support w/oAuth and Drive API v3"
+
+This reverts commit 854c03ebc94aae205b85d0c9d342048baf93e9a9.
+---
+ Repository.mk | 2 +-
+ config_host/config_oauth2.h.in | 8 +-
+ external/libcmis/UnpackedTarball_libcmis.mk | 2 -
+ external/libcmis/libcmis_gdrive.patch.1 | 702 ------------------
+ .../libcmis_oauth_pw_as_refreshtoken.patch.1 | 185 -----
+ .../data/org/openoffice/Office/Common.xcu | 2 +-
+ ucb/source/ucp/cmis/auth_provider.cxx | 130 +---
+ ucb/source/ucp/cmis/auth_provider.hxx | 8 +-
+ ucb/source/ucp/cmis/cmis_content.cxx | 21 +-
+ ucb/source/ucp/cmis/cmis_repo_content.cxx | 4 +-
+ 10 files changed, 56 insertions(+), 1008 deletions(-)
+ delete mode 100644 external/libcmis/libcmis_gdrive.patch.1
+ delete mode 100644 external/libcmis/libcmis_oauth_pw_as_refreshtoken.patch.1
+
+diff --git a/Repository.mk b/Repository.mk
+index 23c268775fcf..c887d9b4297d 100644
+--- a/Repository.mk
++++ b/Repository.mk
+@@ -432,7 +432,7 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \
+ ucpexpand1 \
+ ucpext \
+ ucpimage \
+- $(if $(ENABLE_LIBCMIS),ucpcmis1) \
++ ucpcmis1 \
+ ucptdoc1 \
+ unordf \
+ unoxml \
+diff --git a/config_host/config_oauth2.h.in b/config_host/config_oauth2.h.in
+index 9945dda3dda5..a95015b41f3e 100644
+--- a/config_host/config_oauth2.h.in
++++ b/config_host/config_oauth2.h.in
+@@ -15,13 +15,13 @@
+
+
+ /* Google Drive settings */
+-#define GDRIVE_BASE_URL "https://www.googleapis.com/drive/v3"
++#define GDRIVE_BASE_URL "https://www.googleapis.com/drive/v2"
+ #define GDRIVE_CLIENT_ID ""
+ #define GDRIVE_CLIENT_SECRET ""
+-#define GDRIVE_AUTH_URL "https://accounts.google.com/o/oauth2/v2/auth"
+-#define GDRIVE_TOKEN_URL "https://oauth2.googleapis.com/token"
++#define GDRIVE_AUTH_URL "https://accounts.google.com/o/oauth2/auth"
++#define GDRIVE_TOKEN_URL "https://accounts.google.com/o/oauth2/token"
+ #define GDRIVE_REDIRECT_URI "urn:ietf:wg:oauth:2.0:oob"
+-#define GDRIVE_SCOPE "https://www.googleapis.com/auth/drive.file"
++#define GDRIVE_SCOPE "https://www.googleapis.com/auth/drive"
+
+
+ /* Alfresco Cloud */
+diff --git a/external/libcmis/UnpackedTarball_libcmis.mk b/external/libcmis/UnpackedTarball_libcmis.mk
+index 8398853e4511..a5be3078c95a 100644
+--- a/external/libcmis/UnpackedTarball_libcmis.mk
++++ b/external/libcmis/UnpackedTarball_libcmis.mk
+@@ -17,8 +17,6 @@ $(eval $(call gb_UnpackedTarball_add_patches,libcmis, \
+ external/libcmis/libcmis-libxml2_compatibility.patch \
+ external/libcmis/0001-rename-class-GetObject-to-avoid-name-clash-on-Window.patch \
+ external/libcmis/libcmis_onedrive.patch \
+- external/libcmis/libcmis_oauth_pw_as_refreshtoken.patch.1 \
+- external/libcmis/libcmis_gdrive.patch.1 \
+ ))
+
+ # vim: set noet sw=4 ts=4:
+diff --git a/external/libcmis/libcmis_gdrive.patch.1 b/external/libcmis/libcmis_gdrive.patch.1
+deleted file mode 100644
+index 24ff65d1ef15..000000000000
+--- a/external/libcmis/libcmis_gdrive.patch.1
++++ /dev/null
+@@ -1,702 +0,0 @@
+-diff -ur libcmis.org/src/libcmis/gdrive-document.cxx libcmis/src/libcmis/gdrive-document.cxx
+---- libcmis.org/src/libcmis/gdrive-document.cxx 2021-07-27 19:11:02.679247008 +0200
+-+++ libcmis/src/libcmis/gdrive-document.cxx 2021-07-27 19:11:18.873246420 +0200
+-@@ -145,23 +145,17 @@
+- {
+- if ( !os.get( ) )
+- throw libcmis::Exception( "Missing stream" );
+-- if ( !isImmutable( ) )
+-- throw libcmis::Exception( string ( "Document " + getId( )+
+-- " is not editable" ) );
+-- string putUrl = getUploadUrl( ) + getId( );
+-- putUrl += "?uploadType=media";
+--
+-- // If it's a Google document, convert it
+-- if ( isGoogleDoc( ) )
+-- putUrl += "&convert=true";
+-+
+-+ string putUrl = GDRIVE_UPLOAD_LINK + getId( ) + "?uploadType=media";
+-
+- // Upload stream
+- boost::shared_ptr< istream> is ( new istream ( os->rdbuf( ) ) );
+- vector <string> headers;
+- headers.push_back( string( "Content-Type: " ) + contentType );
+-+ string res;
+- try
+- {
+-- getSession()->httpPutRequest( putUrl, *is, headers );
+-+ res = getSession()->httpPatchRequest( putUrl, *is, headers )->getStream()->str();
+- }
+- catch ( const CurlException& e )
+- {
+-@@ -181,35 +175,10 @@
+- {
+- if ( !os.get( ) )
+- throw libcmis::Exception( "Missing stream" );
+--
+-- if ( !isImmutable( ) )
+-- throw libcmis::Exception( string ( "Document " + getId( )+
+-- " is not editable" ) );
+-- string metaUrl = getUrl( );
+--
+-- // If it's a Google document, convert it
+-- if ( isGoogleDoc( ) )
+-- metaUrl += "?convert=true";
+--
+-- // Update file name meta information
+-- if ( !fileName.empty( ) && fileName != getContentFilename( ) )
+-- {
+-- Json metaJson;
+-- Json fileJson( fileName.c_str( ) );
+-- metaJson.add("title", fileJson );
+--
+-- std::istringstream is( metaJson.toString( ) );
+-- vector<string> headers;
+-- headers.push_back( "Content-Type: application/json" );
+-- try
+-- {
+-- getSession()->httpPutRequest( metaUrl, is, headers );
+-- }
+-- catch ( const CurlException& e )
+-- {
+-- throw e.getCmisException( );
+-- }
+-- }
+-+
+-+ // TODO: when would the filename need an update?
+-+ if (!fileName.empty() && fileName != getContentFilename())
+-+ std::cout << "filename change is not implemented in setContentStream" << std::endl;
+-
+- // Upload stream
+- uploadStream( os, contentType );
+-@@ -251,7 +220,7 @@
+- vector< libcmis::DocumentPtr > GDriveDocument::getAllVersions( )
+- {
+- vector< libcmis::DocumentPtr > revisions;
+-- string versionUrl = getUrl( ) + "/revisions";
+-+ string versionUrl = GDRIVE_METADATA_LINK + getId( ) + "/revisions";
+- // Run the http request to get the properties definition
+- string res;
+- try
+-@@ -263,7 +232,7 @@
+- throw e.getCmisException( );
+- }
+- Json jsonRes = Json::parse( res );
+-- Json::JsonVector objs = jsonRes["items"].getList( );
+-+ Json::JsonVector objs = jsonRes["revisions"].getList( );
+-
+- string parentId = getStringProperty( "cmis:parentId" );
+-
+-diff -ur libcmis.org/src/libcmis/gdrive-folder.cxx libcmis/src/libcmis/gdrive-folder.cxx
+---- libcmis.org/src/libcmis/gdrive-folder.cxx 2021-07-27 19:11:02.678247008 +0200
+-+++ libcmis/src/libcmis/gdrive-folder.cxx 2021-07-27 19:11:18.874246420 +0200
+-@@ -62,8 +62,8 @@
+- // Instead of sending multiple queries for children,
+- // we send a single query to search for objects where parents
+- // include the folderID.
+-- string query = getSession( )->getBindingUrl( ) +
+-- "/files?q=\"" + getId( ) + "\"+in+parents+and+trashed+=+false";
+-+ string query = GDRIVE_METADATA_LINK + "?q=\"" + getId( ) + "\"+in+parents+and+trashed+=+false" +
+-+ "&fields=files(kind,id,name,parents,mimeType,createdTime,modifiedTime,thumbnailLink,size)";
+-
+- string res;
+- try
+-@@ -76,7 +76,7 @@
+- }
+-
+- Json jsonRes = Json::parse( res );
+-- Json::JsonVector objs = jsonRes["items"].getList( );
+-+ Json::JsonVector objs = jsonRes["files"].getList( );
+-
+- // Create children objects from Json objects
+- for(unsigned int i = 0; i < objs.size(); i++)
+-@@ -95,7 +95,7 @@
+- string GDriveFolder::uploadProperties( Json properties )
+- {
+- // URL for uploading meta data
+-- string metaUrl = getSession()->getBindingUrl() + "/files/";
+-+ string metaUrl = GDRIVE_METADATA_LINK + "?fields=kind,id,name,parents,mimeType,createdTime,modifiedTime";
+-
+- // add parents to the properties
+- properties.add( "parents", GdriveUtils::createJsonFromParentId( getId( ) ) );
+-@@ -147,9 +147,15 @@
+-
+- Json propsJson = GdriveUtils::toGdriveJson( properties );
+-
+-- // Add filename to properties
+-- Json jsonFilename( fileName.c_str( ) );
+-- propsJson.add( "title", jsonFilename );
+-+ if(!fileName.empty()) {
+-+ // use provided filename
+-+ Json jsonFilename( fileName.c_str( ) );
+-+
+-+ propsJson.add( "name", jsonFilename );
+-+ }
+-+ if(!contentType.empty()) {
+-+ propsJson.add( "mimeType", Json(contentType.c_str()));
+-+ }
+-
+- // Upload meta-datas
+- string res = uploadProperties( propsJson);
+-@@ -171,12 +177,9 @@
+- libcmis::UnfileObjects::Type /*unfile*/,
+- bool /*continueOnError*/ )
+- {
+-- // Object remove doesn't work with folder
+-- // Using trash instead
+- try
+- {
+-- istringstream is( "" );
+-- getSession( )->httpPostRequest( getUrl( ) + "/trash", is, "" );
+-+ getSession( )->httpDeleteRequest( GDRIVE_METADATA_LINK + getId( ) );
+- }
+- catch ( const CurlException& e )
+- {
+-diff -ur libcmis.org/src/libcmis/gdrive-object.cxx libcmis/src/libcmis/gdrive-object.cxx
+---- libcmis.org/src/libcmis/gdrive-object.cxx 2021-07-27 19:11:02.675247009 +0200
+-+++ libcmis/src/libcmis/gdrive-object.cxx 2021-07-27 19:11:18.874246420 +0200
+-@@ -89,8 +89,8 @@
+- property.reset( new GDriveProperty( it->first, it->second ) );
+- m_properties[ property->getPropertyType( )->getId()] = property;
+-
+-- // we map "title" to both "cmis:name" and "cmis:getContentStreamFileName"
+-- if ( it->first == "title" )
+-+ // we map "name" to both "cmis:name" and "cmis:getContentStreamFileName"
+-+ if ( it->first == "name" )
+- {
+- property.reset( new GDriveProperty( "cmis:name", it->second) );
+- m_properties[ property->getPropertyType( )->getId()] = property;
+-@@ -142,16 +142,13 @@
+- {
+- if ( m_renditions.empty( ) )
+- {
+-- string downloadUrl = getStringProperty( "downloadUrl" );
+-- if ( !downloadUrl.empty( ) )
+-- {
+-- string mimeType = getStringProperty( "cmis:contentStreamMimeType" );
+-- if ( !mimeType.empty( ) )
+-- {
+-- RenditionPtr rendition(
+-- new Rendition( mimeType, mimeType, mimeType, downloadUrl ));
+-- m_renditions.push_back( rendition );
+-- }
+-+ string downloadUrl = GDRIVE_METADATA_LINK + getId( ) + "?alt=media";
+-+ string mimeType = getStringProperty( "cmis:contentStreamMimeType" );
+-+ if ( !mimeType.empty( ) )
+-+ {
+-+ RenditionPtr rendition(
+-+ new Rendition( mimeType, mimeType, mimeType, downloadUrl ));
+-+ m_renditions.push_back( rendition );
+- }
+-
+- vector< string > exportLinks = getMultiStringProperty( "exportLinks" );
+-@@ -192,7 +189,7 @@
+- {
+- vector< string > headers;
+- headers.push_back( "Content-Type: application/json" );
+-- response = getSession( )->httpPutRequest( getUrl( ), is, headers );
+-+ response = getSession( )->httpPatchRequest( getUrl( ), is, headers );
+- }
+- catch ( const CurlException& e )
+- {
+-@@ -228,7 +225,7 @@
+- {
+- try
+- {
+-- getSession( )->httpDeleteRequest( getUrl( ) );
+-+ getSession( )->httpDeleteRequest( GDRIVE_METADATA_LINK + getId( ) );
+- }
+- catch ( const CurlException& e )
+- {
+-@@ -239,8 +236,8 @@
+- void GDriveObject::move( FolderPtr /*source*/, FolderPtr destination )
+- {
+- Json parentsJson;
+-- Json parentsValue = GdriveUtils::createJsonFromParentId( destination->getId( ) );
+-- parentsJson.add( "parents", parentsValue );
+-+ parentsJson.add( "addParents", Json(destination->getId( ).c_str()) );
+-+ parentsJson.add( "removeParents", Json(getStringProperty( "cmis:parentId" ).c_str()) );
+-
+- istringstream is( parentsJson.toString( ) );
+- libcmis::HttpResponsePtr response;
+-@@ -248,7 +245,7 @@
+- {
+- vector< string > headers;
+- headers.push_back( "Content-Type: application/json" );
+-- response = getSession( )->httpPutRequest( getUrl( ), is, headers );
+-+ response = getSession( )->httpPatchRequest( getUrl( ), is, headers );
+- }
+- catch ( const CurlException& e )
+- {
+-@@ -262,12 +259,10 @@
+-
+- string GDriveObject::getUrl( )
+- {
+-- return getSession( )->getBindingUrl( ) + "/files/" + getId( );
+--}
+--
+--string GDriveObject::getUploadUrl( )
+--{
+-- return GDRIVE_UPLOAD_LINKS;
+-+ // thumbnailLink causes some operations to fail with internal server error,
+-+ // see https://issuetracker.google.com/issues/36760667
+-+ return GDRIVE_METADATA_LINK + getId( ) +
+-+ "?fields=kind,id,name,parents,mimeType,createdTime,modifiedTime,size";
+- }
+-
+- vector< string> GDriveObject::getMultiStringProperty( const string& propertyName )
+-diff -ur libcmis.org/src/libcmis/gdrive-repository.cxx libcmis/src/libcmis/gdrive-repository.cxx
+---- libcmis.org/src/libcmis/gdrive-repository.cxx 2021-07-27 19:11:02.676247009 +0200
+-+++ libcmis/src/libcmis/gdrive-repository.cxx 2021-07-27 19:11:18.874246420 +0200
+-@@ -35,7 +35,7 @@
+- m_name = "Google Drive";
+- m_description = "Google Drive repository";
+- m_productName = "Google Drive";
+-- m_productVersion = "v2";
+-+ m_productVersion = "v3";
+- m_rootId = "root";
+-
+- m_capabilities[ ACL ] = "discover";
+-diff -ur libcmis.org/src/libcmis/gdrive-session.cxx libcmis/src/libcmis/gdrive-session.cxx
+---- libcmis.org/src/libcmis/gdrive-session.cxx 2021-07-27 19:11:02.675247009 +0200
+-+++ libcmis/src/libcmis/gdrive-session.cxx 2021-07-27 19:11:18.874246420 +0200
+-@@ -124,9 +124,13 @@
+-
+- libcmis::ObjectPtr GDriveSession::getObject( string objectId )
+- {
+-+ if(objectId == "root") {
+-+ return getRootFolder();
+-+ }
+- // Run the http request to get the properties definition
+- string res;
+-- string objectLink = m_bindingUrl + "/files/" + objectId;
+-+ string objectLink = GDRIVE_METADATA_LINK + objectId +
+-+ "?fields=kind,id,name,parents,mimeType,createdTime,modifiedTime,thumbnailLink,size";
+- try
+- {
+- res = httpGetRequest( objectLink )->getStream()->str();
+-@@ -188,9 +192,10 @@
+- {
+- // Normal child case
+- // Ask for the ID of the child if there is any
+-- string childIdUrl = m_bindingUrl + "/files/" + objectId +
+-- "/children/?q=title+=+'" + segment +
+-- "'&fields=items:id";
+-+ // somewhat flawed as names are not necessarily unique in GDrive...
+-+ string query = libcmis::escape("'" + objectId + "' in parents and trashed = false and name='" + segment + "'");
+-+
+-+ string childIdUrl = m_bindingUrl + "/files/?q=" + query + "&fields=files(id)";
+-
+- string res;
+- try
+-@@ -204,7 +209,7 @@
+- Json jsonRes = Json::parse( res );
+-
+- // Did we get an id?
+-- Json::JsonVector items = jsonRes["items"].getList();
+-+ Json::JsonVector items = jsonRes["files"].getList();
+- if ( items.empty( ) )
+- throw libcmis::Exception( "Object not found: " + path, "objectNotFound" );
+-
+-@@ -219,6 +224,27 @@
+- return getObject( objectId );
+- }
+-
+-+libcmis::FolderPtr GDriveSession::getRootFolder()
+-+{
+-+ // permissions/scope with just drive.file don't allow to get it with the "root" alias/by its actual object-ID
+-+ Json propsJson;
+-+
+-+ // GDrive folder is a file with a different mime type.
+-+ string mimeType = GDRIVE_FOLDER_MIME_TYPE;
+-+
+-+ // Add mimetype to the propsJson
+-+ Json jsonMimeType( mimeType.c_str( ) );
+-+ propsJson.add( "mimeType", jsonMimeType );
+-+ propsJson.add( "id", "root" );
+-+
+-+ // Upload meta-datas
+-+ propsJson.add("cmis:name", "VirtualRoot");
+-+
+-+ libcmis::FolderPtr folderPtr( new GDriveFolder( this, propsJson ) );
+-+
+-+ return folderPtr;
+-+}
+-+
+- libcmis::ObjectTypePtr GDriveSession::getType( string id )
+- {
+- libcmis::ObjectTypePtr type( new GdriveObjectType( id ) );
+-diff -ur libcmis.org/src/libcmis/gdrive-session.hxx libcmis/src/libcmis/gdrive-session.hxx
+---- libcmis.org/src/libcmis/gdrive-session.hxx 2021-07-27 19:11:02.675247009 +0200
+-+++ libcmis/src/libcmis/gdrive-session.hxx 2021-07-27 19:11:18.875246420 +0200
+-@@ -57,6 +57,8 @@
+-
+- virtual std::vector< libcmis::ObjectTypePtr > getBaseTypes( );
+-
+-+ virtual libcmis::FolderPtr getRootFolder();
+-+
+- virtual std::string getRefreshToken();
+-
+- private:
+-diff -ur libcmis.org/src/libcmis/gdrive-utils.cxx libcmis/src/libcmis/gdrive-utils.cxx
+---- libcmis.org/src/libcmis/gdrive-utils.cxx 2021-07-27 19:11:02.677247008 +0200
+-+++ libcmis/src/libcmis/gdrive-utils.cxx 2021-07-27 19:11:18.875246420 +0200
+-@@ -44,17 +44,17 @@
+- convertedKey = "cmis:createdBy";
+- else if ( key == "description" )
+- convertedKey = "cmis:description";
+-- else if ( key == "createdDate" )
+-+ else if ( key == "createdTime" )
+- convertedKey = "cmis:creationDate";
+- else if ( key == "lastModifyingUserName" )
+- convertedKey = "cmis:lastModifiedBy";
+-- else if ( key == "modifiedDate" )
+-+ else if ( key == "modifiedTime" )
+- convertedKey = "cmis:lastModificationDate";
+-- else if ( key == "title" )
+-+ else if ( key == "name" )
+- convertedKey = "cmis:contentStreamFileName";
+- else if ( key == "mimeType" )
+- convertedKey = "cmis:contentStreamMimeType";
+-- else if ( key == "fileSize" )
+-+ else if ( key == "size" )
+- convertedKey = "cmis:contentStreamLength";
+- else if ( key == "editable" )
+- convertedKey = "cmis:isImmutable";
+-@@ -72,21 +72,21 @@
+- else if ( key == "cmis:createdBy" )
+- convertedKey = "ownerNames";
+- else if ( key == "cmis:creationDate" )
+-- convertedKey = "createdDate";
+-+ convertedKey = "createdTime";
+- else if ( key == "cmis:description" )
+- convertedKey = "description";
+- else if ( key == "cmis:lastModifiedBy" )
+- convertedKey = "lastModifyingUserName";
+- else if ( key == "cmis:lastModificationDate" )
+-- convertedKey = "modifiedDate";
+-+ convertedKey = "modifiedTime";
+- else if ( key == "cmis:contentStreamFileName" )
+-- convertedKey = "title";
+-+ convertedKey = "name";
+- else if ( key == "cmis:name" )
+-- convertedKey = "title";
+-+ convertedKey = "name";
+- else if ( key == "cmis:contentStreamMimeType" )
+- convertedKey = "mimeType";
+- else if ( key == "cmis:contentStreamLength" )
+-- convertedKey = "fileSize";
+-+ convertedKey = "size";
+- else if ( key == "cmis:isImmutable" )
+- convertedKey = "editable";
+- else if ( key == "cmis:parentId" )
+-@@ -124,9 +124,9 @@
+- bool GdriveUtils::checkUpdatable( const string& key )
+- {
+- // taken from https://developers.google.com/drive/v2/reference/files
+-- bool updatable = ( key == "title" ||
+-+ bool updatable = ( key == "name" ||
+- key == "description" ||
+-- key == "modifiedDate" ||
+-+ key == "modifiedTime" ||
+- key == "lastViewedByMeDate" );
+- return updatable;
+- }
+-@@ -143,18 +143,11 @@
+-
+- Json GdriveUtils::createJsonFromParentId( const string& parentId )
+- {
+-- Json parentValue( parentId.c_str( ) );
+--
+- // parents is a Json array
+- Json firstParent;
+-- firstParent.add( "id", parentValue );
+--
+-- Json::JsonVector parents;
+-- parents.insert( parents.begin( ), firstParent );
+-+ firstParent.add( Json( parentId.c_str() ) );
+-
+-- Json parentsValue( parents );
+--
+-- return parentsValue;
+-+ return firstParent;
+- }
+-
+- vector< string > GdriveUtils::parseGdriveProperty( string key, Json json )
+-diff -ur libcmis.org/src/libcmis/gdrive-utils.hxx libcmis/src/libcmis/gdrive-utils.hxx
+---- libcmis.org/src/libcmis/gdrive-utils.hxx 2021-07-27 19:11:02.677247008 +0200
+-+++ libcmis/src/libcmis/gdrive-utils.hxx 2021-07-27 19:11:18.875246420 +0200
+-@@ -35,7 +35,8 @@
+- #include "json-utils.hxx"
+-
+- static const std::string GDRIVE_FOLDER_MIME_TYPE = "application/vnd.google-apps.folder" ;
+--static const std::string GDRIVE_UPLOAD_LINKS = "https://www.googleapis.com/upload/drive/v2/files/";
+-+static const std::string GDRIVE_UPLOAD_LINK = "https://www.googleapis.com/upload/drive/v3/files/";
+-+static const std::string GDRIVE_METADATA_LINK = "https://www.googleapis.com/drive/v3/files/";
+-
+- class GdriveUtils
+- {
+-diff -ur libcmis.org/src/libcmis/oauth2-handler.cxx libcmis/src/libcmis/oauth2-handler.cxx
+---- libcmis.org/src/libcmis/oauth2-handler.cxx 2021-07-27 19:11:02.676247009 +0200
+-+++ libcmis/src/libcmis/oauth2-handler.cxx 2021-07-27 19:11:18.875246420 +0200
+-@@ -92,8 +92,11 @@
+- "code=" + authCode +
+- "&client_id=" + m_data->getClientId() +
+- "&redirect_uri=" + m_data->getRedirectUri() +
+-- "&scope=" + libcmis::escape( m_data->getScope() ) +
+- "&grant_type=authorization_code" ;
+-+ if(boost::starts_with(m_data->getTokenUrl(), "https://oauth2.googleapis.com/"))
+-+ post += "&client_secret=" + m_data->getClientSecret();
+-+ else
+-+ post += "&scope=" + libcmis::escape( m_data->getScope() );
+-
+- istringstream is( post );
+-
+-@@ -104,7 +107,7 @@
+- resp = m_session->httpPostRequest ( m_data->getTokenUrl(), is,
+- "application/x-www-form-urlencoded" );
+- }
+-- catch ( const CurlException& )
+-+ catch ( const CurlException& e)
+- {
+- throw libcmis::Exception(
+- "Couldn't get tokens from the authorization code ");
+-@@ -122,6 +125,8 @@
+- "refresh_token=" + m_refresh +
+- "&client_id=" + m_data->getClientId() +
+- "&grant_type=refresh_token" ;
+-+ if(boost::starts_with(m_data->getTokenUrl(), "https://oauth2.googleapis.com/"))
+-+ post += "&client_secret=" + m_data->getClientSecret();
+-
+- istringstream is( post );
+- libcmis::HttpResponsePtr resp;
+-@@ -130,7 +135,7 @@
+- resp = m_session->httpPostRequest( m_data->getTokenUrl( ), is,
+- "application/x-www-form-urlencoded" );
+- }
+-- catch (const CurlException& )
+-+ catch (const CurlException& e )
+- {
+- throw libcmis::Exception( "Couldn't refresh token ");
+- }
+-diff -ur libcmis.org/src/libcmis/oauth2-providers.cxx libcmis/src/libcmis/oauth2-providers.cxx
+---- libcmis.org/src/libcmis/oauth2-providers.cxx 2021-07-27 19:11:02.679247008 +0200
+-+++ libcmis/src/libcmis/oauth2-providers.cxx 2021-07-27 19:11:18.886246420 +0200
+-@@ -80,172 +80,8 @@
+-
+- }
+-
+--string OAuth2Providers::OAuth2Gdrive( HttpSession* session, const string& authUrl,
+-- const string& username, const string& password )
+--{
+-- /* This member function implements 'Google OAuth 2.0'
+-- *
+-- * The interaction is carried out by libcmis, with no web browser involved.
+-- *
+-- * Normal sequence (without 2FA) is:
+-- * 1) a get to activate login page
+-- * receive first login page, html format
+-- * 2) subsequent post to sent email
+-- * receive html page for password input
+-- * 3) subsequent post to send password
+-- * receive html page for application consent
+-- * 4) subsequent post to send a consent for the application
+-- * receive a single-use authorization code
+-- * this code is returned as a string
+-- *
+-- * Sequence with 2FA is:
+-- * 1) a get to activate login page
+-- * receive first login page, html format
+-- * 2) subsequent post to sent email
+-- * receive html page for password input
+-- * 3) subsequent post to send password
+-- * receive html page for pin input
+-- * 3b) subsequent post to send pin number
+-- * receive html page for application consent
+-- * 4) subsequent post to send a consent for the application
+-- * receive a single-use authorization code
+-- * this code is returned as a string
+-- */
+--
+-- static const string CONTENT_TYPE( "application/x-www-form-urlencoded" );
+-- // STEP 1: get login page
+-- string res;
+-- try
+-- {
+-- // send the first get, receive the html login page
+-- res = session->httpGetRequest( authUrl )->getStream( )->str( );
+-- }
+-- catch ( const CurlException& )
+-- {
+-- return string( );
+-- }
+--
+-- // STEP 2: send email
+--
+-- string loginEmailPost, loginEmailLink;
+-- if ( !parseResponse( res.c_str( ), loginEmailPost, loginEmailLink ) )
+-- return string( );
+--
+-- loginEmailPost += "Email=";
+-- loginEmailPost += escapeForm( username );
+--
+-- istringstream loginEmailIs( loginEmailPost );
+-- string loginEmailRes;
+-- try
+-- {
+-- // send a post with user email, receive the html page for password input
+-- loginEmailRes = session->httpPostRequest ( loginEmailLink, loginEmailIs, CONTENT_TYPE )
+-- ->getStream( )->str( );
+-- }
+-- catch ( const CurlException& )
+-- {
+-- return string( );
+-- }
+--
+-- // STEP 3: password page
+--
+-- string loginPasswdPost, loginPasswdLink;
+-- if ( !parseResponse( loginEmailRes.c_str( ), loginPasswdPost, loginPasswdLink ) )
+-- return string( );
+--
+-- loginPasswdPost += "Passwd=";
+-- loginPasswdPost += escapeForm( password );
+--
+-- istringstream loginPasswdIs( loginPasswdPost );
+-- string loginPasswdRes;
+-- try
+-- {
+-- // send a post with user password, receive the application consent page
+-- loginPasswdRes = session->httpPostRequest ( loginPasswdLink, loginPasswdIs, CONTENT_TYPE )
+-- ->getStream( )->str( );
+-- }
+-- catch ( const CurlException& )
+-- {
+-- return string( );
+-- }
+--
+-- string approvalPost, approvalLink;
+-- if ( !parseResponse( loginPasswdRes. c_str( ), approvalPost, approvalLink) )
+-- return string( );
+--
+-- // when 2FA is enabled, link doesn't start with 'http'
+-- if ( approvalLink.compare(0, 4, "http") != 0 )
+-- {
+-- // STEP 3b: 2 Factor Authentication, pin code request
+--
+-- string loginChallengePost( approvalPost );
+-- string loginChallengeLink( approvalLink );
+--
+-- libcmis::OAuth2AuthCodeProvider fallbackProvider = libcmis::SessionFactory::getOAuth2AuthCodeProvider( );
+-- unique_ptr< char, void (*)( void * ) > pin{ fallbackProvider( "", "", "" ), free };
+--
+-- if( !pin )
+-- {
+-- // unset OAuth2AuthCode Provider to avoid showing pin request again in the HttpSession::oauth2Authenticate
+-- libcmis::SessionFactory::setOAuth2AuthCodeProvider( NULL );
+-- return string( );
+-- }
+--
+-- loginChallengeLink = "https://accounts.google.com" + loginChallengeLink;
+-- loginChallengePost += string( PIN_INPUT_NAME ) + "=";
+-- loginChallengePost += string( pin.get() );
+--
+-- istringstream loginChallengeIs( loginChallengePost );
+-- string loginChallengeRes;
+-- try
+-- {
+-- // send a post with pin, receive the application consent page
+-- loginChallengeRes = session->httpPostRequest ( loginChallengeLink, loginChallengeIs, CONTENT_TYPE )
+-- ->getStream( )->str( );
+-- }
+-- catch ( const CurlException& )
+-- {
+-- return string( );
+-- }
+--
+-- approvalPost = string();
+-- approvalLink = string();
+--
+-- if ( !parseResponse( loginChallengeRes. c_str( ), approvalPost, approvalLink) )
+-- return string( );
+-- }
+-- else if( approvalLink.compare( "https://accounts.google.com/ServiceLoginAuth" ) == 0 )
+-- {
+-- // wrong password,
+-- // unset OAuth2AuthCode Provider to avoid showing pin request again in the HttpSession::oauth2Authenticate
+-- libcmis::SessionFactory::setOAuth2AuthCodeProvider( NULL );
+-- return string( );
+-- }
+--
+-- // STEP 4: allow libcmis to access google drive
+-- approvalPost += "submit_access=true";
+--
+-- istringstream approvalIs( approvalPost );
+-- string approvalRes;
+-- try
+-- {
+-- // send a post with application consent
+-- approvalRes = session->httpPostRequest ( approvalLink, approvalIs,
+-- CONTENT_TYPE) ->getStream( )->str( );
+-- }
+-- catch ( const CurlException& e )
+-- {
+-- throw e.getCmisException( );
+-- }
+--
+-- // Take the authentication code from the text bar
+-- string code = parseCode( approvalRes.c_str( ) );
+--
+-- return code;
+--}
+--
+--string OAuth2Providers::OAuth2Onedrive( HttpSession* /*session*/, const string& /*authUrl*/,
+-- const string& /*username*/, const string& /*password*/ )
+-+string OAuth2Providers::OAuth2Dummy( HttpSession* /*session*/, const string& /*authUrl*/,
+-+ const string& /*username*/, const string& /*password*/ )
+- {
+- return string( );
+- }
+-@@ -314,12 +150,8 @@
+- // For Alfresco in the cloud, only match the hostname as there can be several
+- // binding URLs created with it.
+- return OAuth2Alfresco;
+-- else if ( boost::starts_with( url, "https://www.googleapis.com/drive/v2" ) )
+-- return OAuth2Gdrive;
+-- else if ( boost::starts_with( url, "https://graph.microsoft.com/v1.0" ) )
+-- return OAuth2Onedrive;
+-
+-- return OAuth2Gdrive;
+-+ return OAuth2Dummy;
+- }
+-
+- int OAuth2Providers::parseResponse ( const char* response, string& post, string& link )
+-diff -ur libcmis.org/src/libcmis/oauth2-providers.hxx libcmis/src/libcmis/oauth2-providers.hxx
+---- libcmis.org/src/libcmis/oauth2-providers.hxx 2021-07-27 19:11:02.678247008 +0200
+-+++ libcmis/src/libcmis/oauth2-providers.hxx 2021-07-27 19:11:18.886246420 +0200
+-@@ -39,12 +39,8 @@
+- class OAuth2Providers
+- {
+- public :
+-- static std::string OAuth2Gdrive( HttpSession* session, const std::string& authUrl,
+-+ static std::string OAuth2Dummy( HttpSession* session, const std::string& authUrl,
+- const std::string& username, const std::string& password );
+--
+-- static std::string OAuth2Onedrive( HttpSession* session, const std::string& authUrl,
+-- const std::string& username, const std::string& password );
+--
+- static std::string OAuth2Alfresco( HttpSession* session, const std::string& authUrl,
+- const std::string& username, const std::string& password );
+-
+-diff -ur libcmis.org/src/libcmis/session-factory.cxx libcmis/src/libcmis/session-factory.cxx
+---- libcmis.org/src/libcmis/session-factory.cxx 2021-07-27 19:11:02.679247008 +0200
+-+++ libcmis/src/libcmis/session-factory.cxx 2021-07-27 19:11:18.886246420 +0200
+-@@ -66,7 +66,7 @@
+- if ( !bindingUrl.empty( ) )
+- {
+- // Try the special cases based on the binding URL
+-- if ( bindingUrl == "https://www.googleapis.com/drive/v2" )
+-+ if ( bindingUrl == "https://www.googleapis.com/drive/v3" )
+- {
+- session = new GDriveSession( bindingUrl, username, password,
+- oauth2, verbose );
+diff --git a/external/libcmis/libcmis_oauth_pw_as_refreshtoken.patch.1 b/external/libcmis/libcmis_oauth_pw_as_refreshtoken.patch.1
+deleted file mode 100644
+index a8cb06509421..000000000000
+--- a/external/libcmis/libcmis_oauth_pw_as_refreshtoken.patch.1
++++ /dev/null
+@@ -1,185 +0,0 @@
+-diff -ur libcmis.org/inc/libcmis/session.hxx libcmis/inc/libcmis/session.hxx
+---- libcmis.org/inc/libcmis/session.hxx 2021-07-27 19:09:42.580249917 +0200
+-+++ libcmis/inc/libcmis/session.hxx 2021-07-27 19:10:02.368249199 +0200
+-@@ -95,6 +95,8 @@
+- certificate exception feature available on common web browser.
+- */
+- virtual void setNoSSLCertificateCheck( bool noCheck ) = 0;
+-+
+-+ virtual std::string getRefreshToken() { return ""; };
+- };
+- }
+-
+-diff -ur libcmis.org/src/libcmis/gdrive-session.cxx libcmis/src/libcmis/gdrive-session.cxx
+---- libcmis.org/src/libcmis/gdrive-session.cxx 2021-07-27 19:09:42.581249917 +0200
+-+++ libcmis/src/libcmis/gdrive-session.cxx 2021-07-27 19:10:02.369249198 +0200
+-@@ -70,6 +70,46 @@
+- {
+- }
+-
+-+
+-+void GDriveSession::setOAuth2Data( libcmis::OAuth2DataPtr oauth2 )
+-+{
+-+ m_oauth2Handler = new OAuth2Handler( this, oauth2 );
+-+ m_oauth2Handler->setOAuth2Parser( OAuth2Providers::getOAuth2Parser( getBindingUrl( ) ) );
+-+
+-+ oauth2Authenticate( );
+-+}
+-+
+-+void GDriveSession::oauth2Authenticate()
+-+{
+-+ // treat the supplied password as refresh token
+-+ if (!m_password.empty())
+-+ {
+-+ try
+-+ {
+-+ m_inOAuth2Authentication = true;
+-+
+-+ m_oauth2Handler->setRefreshToken(m_password);
+-+ // Try to get new access tokens using the stored refreshtoken
+-+ m_oauth2Handler->refresh();
+-+ m_inOAuth2Authentication = false;
+-+ }
+-+ catch (const CurlException &e)
+-+ {
+-+ m_inOAuth2Authentication = false;
+-+ // refresh token expired or invalid, trigger initial auth (that in turn will hit the fallback with copy'n'paste method)
+-+ BaseSession::oauth2Authenticate();
+-+ }
+-+ }
+-+ else
+-+ {
+-+ BaseSession::oauth2Authenticate();
+-+ }
+-+}
+-+
+-+string GDriveSession::getRefreshToken() {
+-+ return HttpSession::getRefreshToken();
+-+}
+-+
+- libcmis::RepositoryPtr GDriveSession::getRepository( )
+- {
+- // Return a dummy repository since GDrive doesn't have that notion
+-diff -ur libcmis.org/src/libcmis/gdrive-session.hxx libcmis/src/libcmis/gdrive-session.hxx
+---- libcmis.org/src/libcmis/gdrive-session.hxx 2021-07-27 19:09:42.583249917 +0200
+-+++ libcmis/src/libcmis/gdrive-session.hxx 2021-07-27 19:10:02.369249198 +0200
+-@@ -57,8 +57,14 @@
+-
+- virtual std::vector< libcmis::ObjectTypePtr > getBaseTypes( );
+-
+-+ virtual std::string getRefreshToken();
+-+
+- private:
+- GDriveSession( );
+-+
+-+ virtual void setOAuth2Data( libcmis::OAuth2DataPtr oauth2 );
+-+
+-+ void oauth2Authenticate( );
+- };
+-
+- #endif /* _GDRIVE_SESSION_HXX_ */
+-diff -ur libcmis.org/src/libcmis/http-session.hxx libcmis/src/libcmis/http-session.hxx
+---- libcmis.org/src/libcmis/http-session.hxx 2021-07-27 19:09:42.582249917 +0200
+-+++ libcmis/src/libcmis/http-session.hxx 2021-07-27 19:10:02.369249198 +0200
+-@@ -148,7 +148,7 @@
+-
+- void setNoSSLCertificateCheck( bool noCheck );
+-
+-- std::string getRefreshToken( );
+-+ virtual std::string getRefreshToken( );
+-
+- protected:
+- HttpSession( );
+-diff -ur libcmis.org/src/libcmis/oauth2-handler.cxx libcmis/src/libcmis/oauth2-handler.cxx
+---- libcmis.org/src/libcmis/oauth2-handler.cxx 2021-07-27 19:09:42.582249917 +0200
+-+++ libcmis/src/libcmis/oauth2-handler.cxx 2021-07-27 19:10:02.369249198 +0200
+-@@ -158,6 +158,11 @@
+- return m_refresh;
+- }
+-
+-+void OAuth2Handler::setRefreshToken( string refreshToken )
+-+{
+-+ m_refresh = refreshToken;
+-+}
+-+
+- string OAuth2Handler::getHttpHeader( )
+- {
+- string header;
+-diff -ur libcmis.org/src/libcmis/oauth2-handler.hxx libcmis/src/libcmis/oauth2-handler.hxx
+---- libcmis.org/src/libcmis/oauth2-handler.hxx 2021-07-27 19:09:42.582249917 +0200
+-+++ libcmis/src/libcmis/oauth2-handler.hxx 2021-07-27 19:10:02.370249198 +0200
+-@@ -61,6 +61,7 @@
+-
+- std::string getAccessToken( ) ;
+- std::string getRefreshToken( ) ;
+-+ void setRefreshToken( std::string refreshToken ) ;
+-
+- // adding HTTP auth header
+- std::string getHttpHeader( ) ;
+-diff -ur libcmis.org/src/libcmis/onedrive-session.cxx libcmis/src/libcmis/onedrive-session.cxx
+---- libcmis.org/src/libcmis/onedrive-session.cxx 2021-07-27 19:09:42.583249917 +0200
+-+++ libcmis/src/libcmis/onedrive-session.cxx 2021-07-27 19:10:02.370249198 +0200
+-@@ -68,6 +68,45 @@
+- {
+- }
+-
+-+void OneDriveSession::setOAuth2Data( libcmis::OAuth2DataPtr oauth2 )
+-+{
+-+ m_oauth2Handler = new OAuth2Handler( this, oauth2 );
+-+ m_oauth2Handler->setOAuth2Parser( OAuth2Providers::getOAuth2Parser( getBindingUrl( ) ) );
+-+
+-+ oauth2Authenticate( );
+-+}
+-+
+-+void OneDriveSession::oauth2Authenticate()
+-+{
+-+ // treat the supplied password as refresh token
+-+ if (!m_password.empty())
+-+ {
+-+ try
+-+ {
+-+ m_inOAuth2Authentication = true;
+-+
+-+ m_oauth2Handler->setRefreshToken(m_password);
+-+ // Try to get new access tokens using the stored refreshtoken
+-+ m_oauth2Handler->refresh();
+-+ m_inOAuth2Authentication = false;
+-+ }
+-+ catch (const CurlException &e)
+-+ {
+-+ m_inOAuth2Authentication = false;
+-+ // refresh token expired or invalid, trigger initial auth (that in turn will hit the fallback with copy'n'paste method)
+-+ BaseSession::oauth2Authenticate();
+-+ }
+-+ }
+-+ else
+-+ {
+-+ BaseSession::oauth2Authenticate();
+-+ }
+-+}
+-+
+-+string OneDriveSession::getRefreshToken() {
+-+ return HttpSession::getRefreshToken();
+-+}
+-+
+- libcmis::RepositoryPtr OneDriveSession::getRepository( )
+- {
+- // Return a dummy repository since OneDrive doesn't have that notion
+-diff -ur libcmis.org/src/libcmis/onedrive-session.hxx libcmis/src/libcmis/onedrive-session.hxx
+---- libcmis.org/src/libcmis/onedrive-session.hxx 2021-07-27 19:09:42.583249917 +0200
+-+++ libcmis/src/libcmis/onedrive-session.hxx 2021-07-27 19:10:02.370249198 +0200
+-@@ -62,8 +62,14 @@
+-
+- bool isAPathMatch( Json objectJson, std::string path );
+-
+-+ virtual std::string getRefreshToken();
+-+
+- private:
+- OneDriveSession( );
+-+
+-+ virtual void setOAuth2Data( libcmis::OAuth2DataPtr oauth2 );
+-+
+-+ void oauth2Authenticate( );
+- };
+-
+- #endif /* _ONEDRIVE_SESSION_HXX_ */
+diff --git a/officecfg/registry/data/org/openoffice/Office/Common.xcu b/officecfg/registry/data/org/openoffice/Office/Common.xcu
+index fde7c90f9b26..816d22bc993c 100644
+--- a/officecfg/registry/data/org/openoffice/Office/Common.xcu
++++ b/officecfg/registry/data/org/openoffice/Office/Common.xcu
+@@ -433,7 +433,7 @@
+ </prop>
+ <prop oor:name="CmisServersUrls">
+ <value>
+- <it>https://www.googleapis.com/drive/v3</it>
++ <it>https://www.googleapis.com/drive/v2</it>
+ <it>https://graph.microsoft.com/v1.0</it>
+ <it>https://api.alfresco.com/cmis/versions/1.0/atom/</it>
+ <it></it>
+diff --git a/ucb/source/ucp/cmis/auth_provider.cxx b/ucb/source/ucp/cmis/auth_provider.cxx
+index c4407f47cc3f..dd7b4f9f1e3c 100644
+--- a/ucb/source/ucp/cmis/auth_provider.cxx
++++ b/ucb/source/ucp/cmis/auth_provider.cxx
+@@ -11,10 +11,7 @@
+ #define STD_TO_OUSTR( str ) OUString( str.c_str(), str.length( ), RTL_TEXTENCODING_UTF8 )
+
+ #include <com/sun/star/task/XInteractionHandler.hpp>
+-#include <com/sun/star/task/PasswordContainer.hpp>
+-#include <com/sun/star/task/XPasswordContainer2.hpp>
+
+-#include <comphelper/processfactory.hxx>
+ #include <ucbhelper/simpleauthenticationrequest.hxx>
+ #include <ucbhelper/authenticationfallback.hxx>
+
+@@ -67,91 +64,6 @@ namespace cmis
+ return false;
+ }
+
+- string AuthProvider::getRefreshToken(string& rUsername)
+- {
+- string refreshToken;
+- const css::uno::Reference<css::ucb::XCommandEnvironment> xEnv = getXEnv();
+- if (xEnv.is())
+- {
+- uno::Reference<task::XInteractionHandler> xIH = xEnv->getInteractionHandler();
+-
+- if (rUsername.empty())
+- {
+- rtl::Reference<ucbhelper::SimpleAuthenticationRequest> xRequest
+- = new ucbhelper::SimpleAuthenticationRequest(
+- m_sUrl, m_sBindingUrl,
+- ucbhelper::SimpleAuthenticationRequest::EntityType::ENTITY_NA, OUString(),
+- ucbhelper::SimpleAuthenticationRequest::EntityType::ENTITY_MODIFY,
+- STD_TO_OUSTR(rUsername),
+- ucbhelper::SimpleAuthenticationRequest::EntityType::ENTITY_NA, OUString());
+- xIH->handle(xRequest.get());
+-
+- rtl::Reference<ucbhelper::InteractionContinuation> xSelection
+- = xRequest->getSelection();
+-
+- if (xSelection.is())
+- {
+- // Handler handled the request.
+- uno::Reference<task::XInteractionAbort> xAbort(xSelection.get(),
+- uno::UNO_QUERY);
+- if (!xAbort.is())
+- {
+- const rtl::Reference<ucbhelper::InteractionSupplyAuthentication>& xSupp
+- = xRequest->getAuthenticationSupplier();
+-
+- rUsername = OUSTR_TO_STDSTR(xSupp->getUserName());
+- }
+- }
+- }
+-
+- uno::Reference<uno::XComponentContext> xContext
+- = ::comphelper::getProcessComponentContext();
+- uno::Reference<task::XPasswordContainer2> xMasterPasswd
+- = task::PasswordContainer::create(xContext);
+- if (xMasterPasswd->hasMasterPassword())
+- {
+- xMasterPasswd->authorizateWithMasterPassword(xIH);
+- }
+- if (xMasterPasswd->isPersistentStoringAllowed())
+- {
+- task::UrlRecord aRec
+- = xMasterPasswd->findForName(m_sBindingUrl, STD_TO_OUSTR(rUsername), xIH);
+- if (aRec.UserList.hasElements() && aRec.UserList[0].Passwords.hasElements())
+- refreshToken = OUSTR_TO_STDSTR(aRec.UserList[0].Passwords[0]);
+- }
+- }
+- return refreshToken;
+- }
+-
+- bool AuthProvider::storeRefreshToken(const string& username, const string& password,
+- const string& refreshToken)
+- {
+- if (refreshToken.empty())
+- return false;
+- if (password == refreshToken)
+- return true;
+- const css::uno::Reference<css::ucb::XCommandEnvironment> xEnv = getXEnv();
+- if (xEnv.is())
+- {
+- uno::Reference<task::XInteractionHandler> xIH = xEnv->getInteractionHandler();
+- uno::Reference<uno::XComponentContext> xContext
+- = ::comphelper::getProcessComponentContext();
+- uno::Reference<task::XPasswordContainer2> xMasterPasswd
+- = task::PasswordContainer::create(xContext);
+- uno::Sequence<OUString> aPasswd{ STD_TO_OUSTR(refreshToken) };
+- if (xMasterPasswd->isPersistentStoringAllowed())
+- {
+- if (xMasterPasswd->hasMasterPassword())
+- {
+- xMasterPasswd->authorizateWithMasterPassword(xIH);
+- }
+- xMasterPasswd->addPersistent(m_sBindingUrl, STD_TO_OUSTR(username), aPasswd, xIH);
+- return true;
+- }
+- }
+- return false;
+- }
+-
+ css::uno::WeakReference< css::ucb::XCommandEnvironment> AuthProvider::sm_xEnv;
+
+ void AuthProvider::setXEnv(const css::uno::Reference< css::ucb::XCommandEnvironment>& xEnv )
+@@ -164,7 +76,7 @@ namespace cmis
+ return sm_xEnv;
+ }
+
+- char* AuthProvider::copyWebAuthCodeFallback( const char* url,
++ char* AuthProvider::onedriveAuthCodeFallback( const char* url,
+ const char* /*username*/,
+ const char* /*password*/ )
+ {
+@@ -208,6 +120,46 @@ namespace cmis
+
+ return strdup( "" );
+ }
++
++ char* AuthProvider::gdriveAuthCodeFallback( const char* /*url*/,
++ const char* /*username*/,
++ const char* /*password*/ )
++ {
++ const css::uno::Reference<
++ css::ucb::XCommandEnvironment> xEnv = getXEnv( );
++
++ if ( xEnv.is() )
++ {
++ uno::Reference< task::XInteractionHandler > xIH
++ = xEnv->getInteractionHandler();
++
++ if ( xIH.is() )
++ {
++ rtl::Reference< ucbhelper::AuthenticationFallbackRequest > xRequest
++ = new ucbhelper::AuthenticationFallbackRequest (
++ "PIN:", "" );
++
++ xIH->handle( xRequest.get() );
++
++ rtl::Reference< ucbhelper::InteractionContinuation > xSelection
++ = xRequest->getSelection();
++
++ if ( xSelection.is() )
++ {
++ // Handler handled the request.
++ const rtl::Reference< ucbhelper::InteractionAuthFallback >&
++ xAuthFallback = xRequest->getAuthFallbackInter( );
++ if ( xAuthFallback.is() )
++ {
++ OUString code = xAuthFallback->getCode( );
++ return strdup( OUSTR_TO_STDSTR( code ).c_str( ) );
++ }
++ }
++ }
++ }
++
++ return strdup( "" );
++ }
+ }
+
+ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
+diff --git a/ucb/source/ucp/cmis/auth_provider.hxx b/ucb/source/ucp/cmis/auth_provider.hxx
+index 462f7edba54d..24430401d278 100644
+--- a/ucb/source/ucp/cmis/auth_provider.hxx
++++ b/ucb/source/ucp/cmis/auth_provider.hxx
+@@ -39,11 +39,11 @@ namespace cmis
+
+ bool authenticationQuery( std::string& username, std::string& password ) override;
+
+- std::string getRefreshToken( std::string& username );
+- bool storeRefreshToken(const std::string& username, const std::string& password,
+- const std::string& refreshToken);
++ static char* onedriveAuthCodeFallback( const char* url,
++ const char* /*username*/,
++ const char* /*password*/ );
+
+- static char* copyWebAuthCodeFallback( const char* url,
++ static char* gdriveAuthCodeFallback( const char* /*url*/,
+ const char* /*username*/,
+ const char* /*password*/ );
+
+diff --git a/ucb/source/ucp/cmis/cmis_content.cxx b/ucb/source/ucp/cmis/cmis_content.cxx
+index edb13ddf2457..355575d185d1 100644
+--- a/ucb/source/ucp/cmis/cmis_content.cxx
++++ b/ucb/source/ucp/cmis/cmis_content.cxx
+@@ -347,15 +347,12 @@ namespace cmis
+ string rPassword = OUSTR_TO_STDSTR( m_aURL.getPassword( ) );
+
+ bool bSkipInitialPWAuth = false;
+- if (m_aURL.getBindingUrl() == ONEDRIVE_BASE_URL
+- || m_aURL.getBindingUrl() == GDRIVE_BASE_URL)
+- {
++ if ( m_aURL.getBindingUrl( ) == ONEDRIVE_BASE_URL ) {
+ // skip the initial username and pw-auth prompt, the only supported method is the
+ // auth-code-fallback one (login with your browser, copy code into the dialog)
+ // TODO: if LO were to listen on localhost for the request, it would be much nicer
+ // user experience
+ bSkipInitialPWAuth = true;
+- rPassword = aAuthProvider.getRefreshToken(rUsername);
+ }
+
+ bool bIsDone = false;
+@@ -368,9 +365,7 @@ namespace cmis
+ libcmis::OAuth2DataPtr oauth2Data;
+ if ( m_aURL.getBindingUrl( ) == GDRIVE_BASE_URL )
+ {
+- // reset the skip, so user gets a chance to cancel
+- bSkipInitialPWAuth = false;
+- libcmis::SessionFactory::setOAuth2AuthCodeProvider(AuthProvider::copyWebAuthCodeFallback);
++ libcmis::SessionFactory::setOAuth2AuthCodeProvider(AuthProvider::gdriveAuthCodeFallback);
+ oauth2Data.reset( new libcmis::OAuth2Data(
+ GDRIVE_AUTH_URL, GDRIVE_TOKEN_URL,
+ GDRIVE_SCOPE, GDRIVE_REDIRECT_URI,
+@@ -385,7 +380,7 @@ namespace cmis
+ {
+ // reset the skip, so user gets a chance to cancel
+ bSkipInitialPWAuth = false;
+- libcmis::SessionFactory::setOAuth2AuthCodeProvider(AuthProvider::copyWebAuthCodeFallback);
++ libcmis::SessionFactory::setOAuth2AuthCodeProvider(AuthProvider::onedriveAuthCodeFallback);
+ oauth2Data.reset( new libcmis::OAuth2Data(
+ ONEDRIVE_AUTH_URL, ONEDRIVE_TOKEN_URL,
+ ONEDRIVE_SCOPE, ONEDRIVE_REDIRECT_URI,
+@@ -417,12 +412,6 @@ namespace cmis
+ else
+ {
+ m_pProvider->registerSession(sSessionId, m_aURL.getUsername( ), m_pSession);
+- if (m_aURL.getBindingUrl() == ONEDRIVE_BASE_URL
+- || m_aURL.getBindingUrl() == GDRIVE_BASE_URL)
+- {
+- aAuthProvider.storeRefreshToken(rUsername, rPassword,
+- m_pSession->getRefreshToken());
+- }
+ }
+
+ bIsDone = true;
+@@ -430,10 +419,7 @@ namespace cmis
+ catch( const libcmis::Exception & e )
+ {
+ if ( e.getType() != "permissionDenied" )
+- {
+- SAL_INFO("ucb.ucp.cmis", "Unexpected libcmis exception: " << e.what());
+ throw;
+- }
+ }
+ }
+ else
+@@ -525,7 +511,6 @@ namespace cmis
+ }
+ catch ( const libcmis::Exception& )
+ {
+- SAL_INFO( "ucb.ucp.cmis", "object: " << OUSTR_TO_STDSTR(m_sObjectId));
+ throw libcmis::Exception( "Object not found" );
+ }
+ }
+diff --git a/ucb/source/ucp/cmis/cmis_repo_content.cxx b/ucb/source/ucp/cmis/cmis_repo_content.cxx
+index 1bec3152b3b6..d98da53d5e2d 100644
+--- a/ucb/source/ucp/cmis/cmis_repo_content.cxx
++++ b/ucb/source/ucp/cmis/cmis_repo_content.cxx
+@@ -165,7 +165,7 @@ namespace cmis
+ libcmis::OAuth2DataPtr oauth2Data;
+ if ( m_aURL.getBindingUrl( ) == GDRIVE_BASE_URL )
+ {
+- libcmis::SessionFactory::setOAuth2AuthCodeProvider( AuthProvider::copyWebAuthCodeFallback );
++ libcmis::SessionFactory::setOAuth2AuthCodeProvider( AuthProvider::gdriveAuthCodeFallback );
+ oauth2Data.reset( new libcmis::OAuth2Data(
+ GDRIVE_AUTH_URL, GDRIVE_TOKEN_URL,
+ GDRIVE_SCOPE, GDRIVE_REDIRECT_URI,
+@@ -178,7 +178,7 @@ namespace cmis
+ ALFRESCO_CLOUD_CLIENT_ID, ALFRESCO_CLOUD_CLIENT_SECRET ) );
+ if ( m_aURL.getBindingUrl( ) == ONEDRIVE_BASE_URL )
+ {
+- libcmis::SessionFactory::setOAuth2AuthCodeProvider( AuthProvider::copyWebAuthCodeFallback );
++ libcmis::SessionFactory::setOAuth2AuthCodeProvider( AuthProvider::onedriveAuthCodeFallback );
+ oauth2Data.reset( new libcmis::OAuth2Data(
+ ONEDRIVE_AUTH_URL, ONEDRIVE_TOKEN_URL,
+ ONEDRIVE_SCOPE, ONEDRIVE_REDIRECT_URI,
+--
+2.31.1
+
diff --git a/0001-Simplify-construction-of-a-hardcoded-IPv4-address.patch b/0001-Simplify-construction-of-a-hardcoded-IPv4-address.patch
new file mode 100644
index 0000000..fcfa651
--- /dev/null
+++ b/0001-Simplify-construction-of-a-hardcoded-IPv4-address.patch
@@ -0,0 +1,39 @@
+From 68a6c70f25762374f7aed0d4d755345c6f37c78d Mon Sep 17 00:00:00 2001
+From: Stephan Bergmann <sbergman@redhat.com>
+Date: Mon, 31 May 2021 10:56:38 +0200
+Subject: [PATCH] Simplify construction of a hardcoded IPv4 address
+
+Change-Id: I822313ee708935dd4ecb636c13a961fdd054d660
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116434
+Tested-by: Jenkins
+Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
+---
+ sd/source/ui/remotecontrol/DiscoveryService.cxx | 12 +-----------
+ 1 file changed, 1 insertion(+), 11 deletions(-)
+
+diff --git a/sd/source/ui/remotecontrol/DiscoveryService.cxx b/sd/source/ui/remotecontrol/DiscoveryService.cxx
+index 9ed2ae727761..cf0043387403 100644
+--- a/sd/source/ui/remotecontrol/DiscoveryService.cxx
++++ b/sd/source/ui/remotecontrol/DiscoveryService.cxx
+@@ -119,17 +119,7 @@ void DiscoveryService::setupSockets()
+
+ struct ip_mreq multicastRequest;
+
+-// the Win32 SDK 8.1 deprecates inet_addr()
+-#if defined(_WIN32)
+- IN_ADDR addr;
+- INT ret = InetPtonW(AF_INET, L"239.0.0.1", & addr);
+- if (1 == ret)
+- {
+- multicastRequest.imr_multiaddr.s_addr = addr.S_un.S_addr;
+- }
+-#else
+- multicastRequest.imr_multiaddr.s_addr = inet_addr( "239.0.0.1" );
+-#endif
++ multicastRequest.imr_multiaddr.s_addr = htonl((239U << 24) | 1U); // 239.0.0.1
+ multicastRequest.imr_interface.s_addr = htonl(INADDR_ANY);
+
+ rc = setsockopt( mSocket, IPPROTO_IP, IP_ADD_MEMBERSHIP,
+--
+2.31.1
+
diff --git a/0001-annocheck-warning-about-missing-.note.gnu.property-s.patch b/0001-annocheck-warning-about-missing-.note.gnu.property-s.patch
new file mode 100644
index 0000000..aabe104
--- /dev/null
+++ b/0001-annocheck-warning-about-missing-.note.gnu.property-s.patch
@@ -0,0 +1,143 @@
+From 6de192ad5ffe9ec04328bfd178050cb8a33e1cbb Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Wed, 15 Dec 2021 12:46:24 +0000
+Subject: [PATCH] annocheck warning about missing .note.gnu.property section
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+copy and paste recommendation from:
+https://sourceware.org/annobin/annobin.html/Test-cf-protection.html
+
+and adapt like:
+https://github.com/openssl/openssl/commit/51994e505dbb1cd0dd76869ec962e2948b77b585
+where https://bugs.ruby-lang.org/attachments/8962 is similar
+
+Intel docs have "The ENDBR32 and ENDBR64 (collectively ENDBRANCH) are
+two new instructions that are used to mark valid indirect CALL/JMP
+target locations in the program."
+
+Change-Id: Ie867c263a888763db4478720ba189c9ec6cc974d
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126859
+Tested-by: Jenkins
+Tested-by: Caolán McNamara <caolanm@redhat.com>
+Reviewed-by: Caolán McNamara <caolanm@redhat.com>
+(cherry picked from commit af55dc3891f7950d392175004b2090cb0e54828e)
+---
+ .../source/cpp_uno/gcc3_linux_intel/call.s | 16 ++++++++++++++++
+ .../source/cpp_uno/gcc3_linux_x86-64/call.s | 19 +++++++++++++++++++
+ config_host.mk.in | 1 +
+ configure.ac | 14 ++++++++++++++
+ solenv/gbuild/platform/com_GCC_class.mk | 1 +
+ 5 files changed, 51 insertions(+)
+
+diff --git a/bridges/source/cpp_uno/gcc3_linux_intel/call.s b/bridges/source/cpp_uno/gcc3_linux_intel/call.s
+index 6be583247733..0a5870defcf3 100644
+--- a/bridges/source/cpp_uno/gcc3_linux_intel/call.s
++++ b/bridges/source/cpp_uno/gcc3_linux_intel/call.s
+@@ -290,3 +290,19 @@ privateSnippetExecutorClass:
+ .align 4
+ .LEFDEc:
+ .section .note.GNU-stack,"",@progbits
++ .section .note.gnu.property,"a"
++ .p2align 2
++ .long 1f - 0f
++ .long 4f - 1f
++ .long 5
++0:
++ .string "GNU"
++1:
++ .p2align 2
++ .long 0xc0000002
++ .long 3f - 2f
++2:
++ .long 0x3
++3:
++ .p2align 2
++4:
+diff --git a/bridges/source/cpp_uno/gcc3_linux_x86-64/call.s b/bridges/source/cpp_uno/gcc3_linux_x86-64/call.s
+index 447ac0cecfdd..2e9346dff8a0 100644
+--- a/bridges/source/cpp_uno/gcc3_linux_x86-64/call.s
++++ b/bridges/source/cpp_uno/gcc3_linux_x86-64/call.s
+@@ -22,6 +22,9 @@
+ .type privateSnippetExecutor, @function
+ privateSnippetExecutor:
+ .LFB3:
++#if defined(END_BRANCH_INS_SUPPORT)
++ endbr64
++#endif
+ pushq %rbp
+ .LCFI0:
+ movq %rsp, %rbp
+@@ -115,3 +118,19 @@ privateSnippetExecutor:
+ .align 8
+ .LEFDE1:
+ .section .note.GNU-stack,"",@progbits
++ .section .note.gnu.property,"a"
++ .p2align 3
++ .long 1f - 0f
++ .long 4f - 1f
++ .long 5
++0:
++ .string "GNU"
++1:
++ .p2align 3
++ .long 0xc0000002
++ .long 3f - 2f
++2:
++ .long 0x3
++3:
++ .p2align 3
++4:
+diff --git a/config_host.mk.in b/config_host.mk.in
+index d6edba704b21..6ac2a90695e2 100644
+--- a/config_host.mk.in
++++ b/config_host.mk.in
+@@ -260,6 +260,7 @@ export GTK3_CFLAGS=$(gb_SPACE)@GTK3_CFLAGS@
+ export GTK3_LIBS=$(gb_SPACE)@GTK3_LIBS@
+ export USING_X11=@USING_X11@
+ export HAMCREST_JAR=@HAMCREST_JAR@
++export HAVE_ASM_END_BRANCH_INS_SUPPORT=@HAVE_ASM_END_BRANCH_INS_SUPPORT@
+ export HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=@HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED@
+ export HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=@HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR@
+ export HAVE_LO_CLANG_DLLEXPORTINLINES=@HAVE_LO_CLANG_DLLEXPORTINLINES@
+diff --git a/configure.ac b/configure.ac
+index bd28bc6eb38e..ef03408e8e98 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -7730,6 +7730,20 @@ _ACEOF
+
+ CPPFLAGS="$save_CPPFLAGS"
+
++ AC_MSG_CHECKING([if CET endbranch is recognized])
++cat > endbr.s <<_ACEOF
++endbr32
++_ACEOF
++ HAVE_ASM_END_BRANCH_INS_SUPPORT=
++ if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
++ AC_MSG_RESULT([yes])
++ HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
++ else
++ AC_MSG_RESULT([no])
++ fi
++ rm -f endbr.s endbr.o
++ AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
++
+ AC_LANG_POP([C++])
+ fi
+
+diff --git a/solenv/gbuild/platform/com_GCC_class.mk b/solenv/gbuild/platform/com_GCC_class.mk
+index c29e2a979fd9..e2056abf9682 100644
+--- a/solenv/gbuild/platform/com_GCC_class.mk
++++ b/solenv/gbuild/platform/com_GCC_class.mk
+@@ -44,6 +44,7 @@ $(call gb_Helper_abbreviate_dirs,\
+ -x assembler-with-cpp \
+ $(gb_LTOFLAGS) \
+ $(gb_AFLAGS) \
++ $(if $(HAVE_ASM_END_BRANCH_INS_SUPPORT),-DEND_BRANCH_INS_SUPPORT) \
+ -c $(3) \
+ -o $(1)) \
+ $(INCLUDE) && \
+--
+2.33.1
+
diff --git a/0001-disable-libe-book-support.patch b/0001-disable-libe-book-support.patch
new file mode 100644
index 0000000..5c09e7b
--- /dev/null
+++ b/0001-disable-libe-book-support.patch
@@ -0,0 +1,145 @@
+From 4cac125f90e0a3d6828d879cb06f3a4bac14321b Mon Sep 17 00:00:00 2001
+From: David Tardon <dtardon@redhat.com>
+Date: Thu, 21 Aug 2014 16:10:51 +0200
+Subject: [PATCH] disable libe-book support
+
+Change-Id: Ie915a9bd2acf7f3aeb8b0933252da33c17043bc4
+---
+ configure.ac | 3 ---
+ external/Module_external.mk | 1 -
+ filter/Configuration_filter.mk | 8 --------
+ writerperfect/Library_wpftwriter.mk | 2 --
+ writerperfect/qa/unit/WpftFilterFixture.hxx | 4 ----
+ writerperfect/qa/unit/WpftWriterFilterTest.cxx | 5 -----
+ writerperfect/source/writer/wpftwriter.component | 5 -----
+ 7 files changed, 28 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index fe425319b8f8..4b8f6a95472c 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -8566,9 +8566,6 @@ libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
+
+ libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
+
+-libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
+-libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
+-
+ libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
+
+ libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
+diff --git a/external/Module_external.mk b/external/Module_external.mk
+index 41e018d2ef3f..1b7627a1b3e2 100644
+--- a/external/Module_external.mk
++++ b/external/Module_external.mk
+@@ -33,7 +33,6 @@ $(eval $(call gb_Module_add_moduledirs,external,\
+ $(call gb_Helper_optional,CT2N,ct2n) \
+ $(call gb_Helper_optional,CURL,curl) \
+ dtoa \
+- $(call gb_Helper_optional,EBOOK,libebook) \
+ $(call gb_Helper_optional,EPM,epm) \
+ $(call gb_Helper_optional,EPOXY,epoxy) \
+ $(call gb_Helper_optional,EPUBGEN,libepubgen) \
+diff --git a/filter/Configuration_filter.mk b/filter/Configuration_filter.mk
+index e71ffacf8f25..74d2ef05c4aa 100644
+--- a/filter/Configuration_filter.mk
++++ b/filter/Configuration_filter.mk
+@@ -358,10 +358,6 @@ $(eval $(call filter_Configuration_add_types,fcfg_langpack,fcfg_writer_types.xcu
+ writer_OOXML \
+ writer_OOXML_Template \
+ writer_layout_dump_xml \
+- writer_BroadBand_eBook \
+- writer_FictionBook_2 \
+- writer_PalmDoc \
+- writer_Plucker_eBook \
+ writer_ApplePages \
+ MWAW_Text_Document \
+ Palm_Text_Document \
+@@ -406,10 +402,6 @@ $(eval $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_writer_filters
+ OOXML_Text \
+ OOXML_Text_Template \
+ writer_layout_dump \
+- BroadBand_eBook \
+- FictionBook_2 \
+- PalmDoc \
+- Plucker_eBook \
+ ApplePages \
+ MWAW_Text_Document \
+ Palm_Text_Document \
+diff --git a/writerperfect/Library_wpftwriter.mk b/writerperfect/Library_wpftwriter.mk
+index 8993cca31490..b6e11f356d97 100644
+--- a/writerperfect/Library_wpftwriter.mk
++++ b/writerperfect/Library_wpftwriter.mk
+@@ -53,7 +53,6 @@ $(eval $(call gb_Library_use_libraries,wpftwriter,\
+ $(eval $(call gb_Library_use_externals,wpftwriter,\
+ abw \
+ boost_headers \
+- ebook \
+ epubgen \
+ etonyek \
+ icu_headers \
+@@ -73,7 +72,6 @@ $(eval $(call gb_Library_use_externals,wpftwriter,\
+
+ $(eval $(call gb_Library_add_exception_objects,wpftwriter,\
+ writerperfect/source/writer/AbiWordImportFilter \
+- writerperfect/source/writer/EBookImportFilter \
+ writerperfect/source/writer/EPUBExportDialog \
+ writerperfect/source/writer/EPUBExportFilter \
+ writerperfect/source/writer/EPUBExportUIComponent \
+diff --git a/writerperfect/qa/unit/WpftFilterFixture.hxx b/writerperfect/qa/unit/WpftFilterFixture.hxx
+index f32478165617..f42edb0d7f55 100644
+--- a/writerperfect/qa/unit/WpftFilterFixture.hxx
++++ b/writerperfect/qa/unit/WpftFilterFixture.hxx
+@@ -26,10 +26,6 @@
+ || ((major) == (req_major) \
+ && ((minor) > (req_minor) || ((minor) == (req_minor) && ((micro) >= (req_micro)))))
+
+-#define REQUIRE_EBOOK_VERSION(major, minor, micro) \
+- REQUIRE_VERSION(EBOOK_VERSION_MAJOR, EBOOK_VERSION_MINOR, EBOOK_VERSION_MICRO, major, minor, \
+- micro)
+-
+ #define REQUIRE_ETONYEK_VERSION(major, minor, micro) \
+ REQUIRE_VERSION(ETONYEK_VERSION_MAJOR, ETONYEK_VERSION_MINOR, ETONYEK_VERSION_MICRO, major, \
+ minor, micro)
+diff --git a/writerperfect/qa/unit/WpftWriterFilterTest.cxx b/writerperfect/qa/unit/WpftWriterFilterTest.cxx
+index 8bc4c7cadbb3..eca43caf8d8c 100644
+--- a/writerperfect/qa/unit/WpftWriterFilterTest.cxx
++++ b/writerperfect/qa/unit/WpftWriterFilterTest.cxx
+@@ -30,9 +30,6 @@ WpftWriterFilterTest::WpftWriterFilterTest()
+
+ void WpftWriterFilterTest::test()
+ {
+- const writerperfect::test::WpftOptionalMap_t aEBookOptional{
+- { "FictionBook2.fb2.zip", REQUIRE_EBOOK_VERSION(0, 1, 1) },
+- };
+ const writerperfect::test::WpftOptionalMap_t aEtonyekOptional{
+ { "Pages_4.pages", REQUIRE_ETONYEK_VERSION(0, 1, 2) },
+ { "Pages_5.pages", REQUIRE_ETONYEK_VERSION(0, 1, 8) },
+@@ -54,8 +51,6 @@ void WpftWriterFilterTest::test()
+
+ doTest("com.sun.star.comp.Writer.AbiWordImportFilter",
+ "/writerperfect/qa/unit/data/writer/libabw/");
+- doTest("org.libreoffice.comp.Writer.EBookImportFilter",
+- "/writerperfect/qa/unit/data/writer/libe-book/", aEBookOptional);
+ doTest("com.sun.star.comp.Writer.MSWorksImportFilter",
+ "/writerperfect/qa/unit/data/writer/libwps/", aWpsOptional);
+ doTest("com.sun.star.comp.Writer.MWAWImportFilter",
+diff --git a/writerperfect/source/writer/wpftwriter.component b/writerperfect/source/writer/wpftwriter.component
+index 8ab436634052..2720023baedf 100644
+--- a/writerperfect/source/writer/wpftwriter.component
++++ b/writerperfect/source/writer/wpftwriter.component
+@@ -38,11 +38,6 @@
+ <service name="com.sun.star.document.ExtendedTypeDetection"/>
+ <service name="com.sun.star.document.ImportFilter"/>
+ </implementation>
+- <implementation name="org.libreoffice.comp.Writer.EBookImportFilter"
+- constructor="org_libreoffice_comp_Writer_EBookImportFilter_get_implementation">
+- <service name="com.sun.star.document.ExtendedTypeDetection"/>
+- <service name="com.sun.star.document.ImportFilter"/>
+- </implementation>
+ <implementation name="org.libreoffice.comp.Writer.PagesImportFilter"
+ constructor="org_libreoffice_comp_Writer_PagesImportFilter_get_implementation">
+ <service name="com.sun.star.document.ExtendedTypeDetection"/>
+--
+2.25.1
+
diff --git a/0001-disble-tip-of-the-day-dialog-by-default.patch b/0001-disble-tip-of-the-day-dialog-by-default.patch
new file mode 100644
index 0000000..7233a4e
--- /dev/null
+++ b/0001-disble-tip-of-the-day-dialog-by-default.patch
@@ -0,0 +1,26 @@
+From d6e2cdb0023e422546e3ece5bf9915f7c490ced8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Fri, 20 Mar 2020 14:24:05 +0000
+Subject: [PATCH] disble tip-of-the-day dialog by default
+
+Change-Id: Ie7f0e3fe3dda12c2ec88c376d2b57419253ae5cf
+---
+ officecfg/registry/schema/org/openoffice/Office/Common.xcs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+index e7c339e2e22e..9aa88ef1aa02 100644
+--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
++++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+@@ -5570,7 +5570,7 @@
+ <info>
+ <desc>Determines whether the Tip-of-the-Day dialog is shown on startup.</desc>
+ </info>
+- <value>true</value>
++ <value>false</value>
+ </prop>
+ <prop oor:name="LastTipOfTheDayShown" oor:type="xs:int" oor:nillable="false">
+ <info>
+--
+2.24.1
+
diff --git a/0001-document-new-shouldn-t-get-prefixed-to-become-libreo.patch b/0001-document-new-shouldn-t-get-prefixed-to-become-libreo.patch
new file mode 100644
index 0000000..1579192
--- /dev/null
+++ b/0001-document-new-shouldn-t-get-prefixed-to-become-libreo.patch
@@ -0,0 +1,45 @@
+From ce37356f6bcaaef62a80814d7d54d3aa6d53167d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Tue, 12 Oct 2021 09:52:53 +0100
+Subject: [PATCH] document-new shouldn't get prefixed to become
+ libreoffice-document-new
+
+seen by rpminspect as .desktop "references icon libreoffice-document-new
+but no subpackages contain libreoffice-document-new"
+
+introduced by:
+
+commit f767d5e2b017c0d0cfd23ff3318cb30901847722
+Date: Sun Sep 1 11:30:12 2019 +0200
+
+ Add icons to New Document desktop file actions
+
+in the [Desktop Action NewDocument] section
+
+Change-Id: I64ce5e2dbaca32083b2f76e960c33a815f8a3773
+---
+ sysui/desktop/share/brand.pl | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/sysui/desktop/share/brand.pl b/sysui/desktop/share/brand.pl
+index 9d73e619c495..b17a7374fd62 100644
+--- a/sysui/desktop/share/brand.pl
++++ b/sysui/desktop/share/brand.pl
+@@ -81,9 +81,11 @@ while ($arg = shift) {
+ # remove possible Windows line-ends
+ chomp;
+
+- # patch all occurrences of openoffice in ICON line with
+- # $prefix
+- s/Icon=/Icon=$iconprefix/;
++ # patch all icons in ICON line with $prefix
++ if (! /Icon=document-new/ ) { # except for Icon=document-new which
++ # is a stock icon, not one of ours
++ s/Icon=/Icon=$iconprefix/;
++ }
+
+ # patch all occurrences of openoffice in icon_filename
+ # line with $prefix
+--
+2.32.0
+
diff --git a/0001-don-t-suppress-crashes.patch b/0001-don-t-suppress-crashes.patch
new file mode 100644
index 0000000..4a35f3d
--- /dev/null
+++ b/0001-don-t-suppress-crashes.patch
@@ -0,0 +1,35 @@
+From a6f2cba43d79347b6975b3b8069b423c94a7dba6 Mon Sep 17 00:00:00 2001
+From: David Tardon <dtardon@redhat.com>
+Date: Tue, 8 Nov 2016 11:50:06 +0100
+Subject: [PATCH] don't suppress crashes
+
+An automatic restart after a crash makes the crash invisible to abrt.
+
+Change-Id: I3854e619356049b144b08575879d289a3c12e4c9
+---
+ desktop/source/app/app.cxx | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
+index c54aea9dd4f7..a613fe12cef2 100644
+--- a/desktop/source/app/app.cxx
++++ b/desktop/source/app/app.cxx
+@@ -1147,14 +1147,12 @@ void Desktop::Exception(ExceptionCategory nCategory)
+ if( bRestart )
+ {
+ RequestHandler::Disable();
+- if( pSignalHandler )
+- osl_removeSignalHandler( pSignalHandler );
+
+ restartOnMac(false);
+ if ( m_rSplashScreen.is() )
+ m_rSplashScreen->reset();
+
+- _exit( EXITHELPER_CRASH_WITH_RESTART );
++ return;
+ }
+ else
+ {
+--
+2.29.2
+
diff --git a/0001-fix-comparison-when-searching-cache.patch b/0001-fix-comparison-when-searching-cache.patch
new file mode 100644
index 0000000..2928de1
--- /dev/null
+++ b/0001-fix-comparison-when-searching-cache.patch
@@ -0,0 +1,40 @@
+From a94b58277c7aeaa83ce14347cd0b8f7137969d03 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= <l.lunak@collabora.com>
+Date: Fri, 29 Oct 2021 14:20:57 +0200
+Subject: [PATCH] fix comparison when searching cache
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This made the cache always fail and re-cache, making CJK text layout
+slower over time. A mistake from ef513fd4b049b214a03fbe6e that
+converted !strcmp() to != instead of ==.
+
+Change-Id: Ib70579cd36d7b1df062e4d067e03f5c65e34b142
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124432
+Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
+Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
+Tested-by: Luboš Luňák <l.lunak@collabora.com>
+(cherry picked from commit 5b38b5744af1e896892df708c16b83e1b551d2c7)
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124206
+Tested-by: Jenkins
+---
+ i18npool/source/breakiterator/xdictionary.cxx | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/i18npool/source/breakiterator/xdictionary.cxx b/i18npool/source/breakiterator/xdictionary.cxx
+index 947a23c5073b..6b57433370c7 100644
+--- a/i18npool/source/breakiterator/xdictionary.cxx
++++ b/i18npool/source/breakiterator/xdictionary.cxx
+@@ -152,7 +152,7 @@ void xdictionary::initDictionaryData(const char *pLang)
+ osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() );
+ for(const datacache & i : aLoadedCache)
+ {
+- if( i.maLang != pLang )
++ if( i.maLang == pLang )
+ {
+ data = i.maData;
+ return;
+--
+2.33.1
+
diff --git a/0001-fix-detecting-qrcodegen.patch b/0001-fix-detecting-qrcodegen.patch
new file mode 100644
index 0000000..f439510
--- /dev/null
+++ b/0001-fix-detecting-qrcodegen.patch
@@ -0,0 +1,40 @@
+From 2f11e4247b6332b06a5b23c33207fa10767244a6 Mon Sep 17 00:00:00 2001
+From: Thierry Vignaud <thierry.vignaud@gmail.com>
+Date: Thu, 30 Jan 2020 11:19:20 +0000
+Subject: [PATCH] fix detecting qrcodegen
+
+Change-Id: Ib945b57420083489273cefc5655eb50932b5a3f8
+---
+ configure.ac | 2 +-
+ cui/source/dialogs/QrCodeGenDialog.cxx | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 5a14369..ebd1b55 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -10250,7 +10250,7 @@ else
+ AC_MSG_RESULT([external])
+ SYSTEM_QRCODEGEN=TRUE
+ AC_LANG_PUSH([C++])
+- AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
++ AC_CHECK_HEADER(qrcodegencpp/QrCode.hpp, [],
+ [AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
+ AC_CHECK_LIB([qrcodegencpp], [main], [:],
+ [ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
+diff --git a/cui/source/dialogs/QrCodeGenDialog.cxx b/cui/source/dialogs/QrCodeGenDialog.cxx
+index 7f3f6a8..b79a356 100644
+--- a/cui/source/dialogs/QrCodeGenDialog.cxx
++++ b/cui/source/dialogs/QrCodeGenDialog.cxx
+@@ -19,7 +19,7 @@
+
+ #if ENABLE_QRCODEGEN
+ #if defined(SYSTEM_QRCODEGEN)
+-#include <qrcodegen/QrCode.hpp>
++#include <qrcodegencpp/QrCode.hpp>
+ #else
+ #include <QrCode.hpp>
+ #endif
+--
+2.26.2
+
diff --git a/0001-gtk3-workaround-missing-gdk_threads_enter-calls-in-e.patch b/0001-gtk3-workaround-missing-gdk_threads_enter-calls-in-e.patch
new file mode 100644
index 0000000..c260e2d
--- /dev/null
+++ b/0001-gtk3-workaround-missing-gdk_threads_enter-calls-in-e.patch
@@ -0,0 +1,118 @@
+From b06e5e2b9761d242d9269b091da9a98ec705d2b1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Tue, 1 Jun 2021 13:20:43 +0100
+Subject: [PATCH] gtk3: workaround missing gdk_threads_enter calls in external
+ code
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+with gtk3 file dialog. file, open, +other locations,
+type davs://somewhere + return
+
+ #0 0x00007ffff7a6e2a2 in raise () at /lib64/libc.so.6
+ #1 0x00007ffff7a578a4 in abort () at /lib64/libc.so.6
+ #2 0x00007ffff7a57789 in _nl_load_domain.cold () at /lib64/libc.so.6
+ #3 0x00007ffff7a66a16 in () at /lib64/libc.so.6
+ #4 0x00007fffd9be7672 in GtkYieldMutex::ThreadsLeave() (this=0x513480) at vcl/unx/gtk3/gtkinst.cxx:354
+ #5 0x00007fffd9be6a53 in GdkThreadsLeave() () at vcl/unx/gtk3/gtkinst.cxx:116
+ #6 0x00007fffd947ac2d in gtk_dialog_run (dialog=0xa984310) at /usr/src/debug/gtk3-3.24.29-1.fc34.x86_64/gtk/gtkdialog.c:1397
+ ^^^ this also (see #30) calls gdk_threads_leave before g_main_loop_run, but no gdk_threads_enter has been called, presumably emit_show_error_message should have called it (?) ^^^
+ #7 0x00007fffd94a6dc6 in error_message_with_parent (detail=0xa97f9b0 "HTTP Error: Error resolving “nowhere”: Name or service not known", msg=<optimized out>, parent=<optimized out>)
+ at /usr/src/debug/gtk3-3.24.29-1.fc34.x86_64/gtk/gtkfilechooserwidget.c:763
+ #8 error_message (impl=<optimized out>, msg=<optimized out>, detail=0xa97f9b0 "HTTP Error: Error resolving “nowhere”: Name or service not known") at /usr/src/debug/gtk3-3.24.29-1.fc34.x86_64/gtk/gtkfilechooserwidget.c:786
+ #9 0x00007fffe996ec2f in g_closure_invoke () at /lib64/libgobject-2.0.so.0
+ #10 0x00007fffe998aea6 in signal_emit_unlocked_R () at /lib64/libgobject-2.0.so.0
+ #11 0x00007fffe998c76a in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
+ #12 0x00007fffe998c983 in g_signal_emit () at /lib64/libgobject-2.0.so.0
+ #13 0x00007fffd9561fc7 in emit_show_error_message (secondary_message=0x7fffbc0566f0 "HTTP Error: Error resolving “nowhere”: Name or service not known", primary_message=<optimized out>, view=0x900a240)
+ at /usr/src/debug/gtk3-3.24.29-1.fc34.x86_64/gtk/gtkplacesview.c:171
+ #14 server_mount_ready_cb (source_file=0x7fffbc05b4c0, res=<optimized out>, user_data=0x900a240) at /usr/src/debug/gtk3-3.24.29-1.fc34.x86_64/gtk/gtkplacesview.c:1232
+ #15 0x00007fffe9a64a7a in g_task_return_now () at /lib64/libgio-2.0.so.0
+ #16 0x00007fffe9a64c7b in g_task_return () at /lib64/libgio-2.0.so.0
+ #17 0x00007fffd80653b8 in mount_reply () at /usr/lib64/gio/modules/libgvfsdbus.so
+ #18 0x00007fffe9a64a7a in g_task_return_now () at /lib64/libgio-2.0.so.0
+ #19 0x00007fffe9a64c7b in g_task_return () at /lib64/libgio-2.0.so.0
+ #20 0x00007fffe9acd2dd in reply_cb () at /lib64/libgio-2.0.so.0
+ #21 0x00007fffe9a64a7a in g_task_return_now () at /lib64/libgio-2.0.so.0
+ #22 0x00007fffe9a64c7b in g_task_return () at /lib64/libgio-2.0.so.0
+ #23 0x00007fffe9ac4c34 in g_dbus_connection_call_done () at /lib64/libgio-2.0.so.0
+ #24 0x00007fffe9a64a7a in g_task_return_now () at /lib64/libgio-2.0.so.0
+ #25 0x00007fffe9a64abd in complete_in_idle_cb () at /lib64/libgio-2.0.so.0
+ #26 0x00007fffe987074b in g_idle_dispatch () at /lib64/libglib-2.0.so.0
+ #27 0x00007fffe98744cf in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
+ #28 0x00007fffe98c84e8 in g_main_context_iterate.constprop () at /lib64/libglib-2.0.so.0
+ #29 0x00007fffe9873a93 in g_main_loop_run () at /lib64/libglib-2.0.so.0
+ #30 0x00007fffd947ac37 in gtk_dialog_run (dialog=0x1604460) at /usr/src/debug/gtk3-3.24.29-1.fc34.x86_64/gtk/gtkdialog.c:1398
+ ^^^ this will call gdk_threads_leave before g_main_loop_run, (gdk_threads_enter has been called earlier, and gdk_threads_enter will be called after g_main_loop_run) ^^^
+ #31 0x00007fffd9bdbd96 in RunDialog::run() (this=0x9134f00) at vcl/unx/gtk3/fpicker/SalGtkPicker.cxx:199
+ #32 0x00007fffd9bbf23f in SalGtkFilePicker::execute() (this=0x9004690) at vcl/unx/gtk3/fpicker/SalGtkFilePicker.cxx:953
+ #33 0x00007ffff474741a in sfx2::FileDialogHelper_Impl::implDoExecute() (this=0x1667470) at sfx2/source/dialog/filedlghelper.cxx:1279
+
+ #14 presumably server_mount_ready_cb of gtkplacesview.c should protect its gtk
+ calls with gdk_threads_enter/gdk_threads_leave like enclosing_volume_mount_cb
+ of gtkfilesystem.c does.
+
+Seeing as gdk_threads_leave/gdk_threads_enter is gone in gtk4 I doubt
+there's any point looking for a fix in gtk3 and we should just try and
+survive the problem.
+
+Change-Id: I007be4dee4f615d4431e27034dcf7f3d446c3e9a
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116559
+Tested-by: Jenkins
+Reviewed-by: Caolán McNamara <caolanm@redhat.com>
+(cherry picked from commit 08b7529f628eda1d209cf27f9bbe52ee336fef62)
+---
+ vcl/unx/gtk3/gtk3gtkinst.cxx | 30 ++++++++++++++++++++++--------
+ 1 file changed, 22 insertions(+), 8 deletions(-)
+
+diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
+index 2d4dc36ce5fe..bba4e07f3003 100644
+--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
++++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
+@@ -314,20 +314,34 @@ thread_local std::stack<sal_uInt32> GtkYieldMutex::yieldCounts;
+ void GtkYieldMutex::ThreadsEnter()
+ {
+ acquire();
+- if (!yieldCounts.empty()) {
+- auto n = yieldCounts.top();
+- yieldCounts.pop();
+- assert(n > 0);
+- n--;
+- if (n > 0)
+- acquire(n);
++ if (yieldCounts.empty())
++ return;
++ auto n = yieldCounts.top();
++ yieldCounts.pop();
++
++ const bool bUndoingLeaveWithoutEnter = n == 0;
++ // if the ThreadsLeave bLeaveWithoutEnter of true condition occurred to
++ // create this entry then return early undoing the initial acquire of the
++ // function
++ if G_UNLIKELY(bUndoingLeaveWithoutEnter)
++ {
++ release();
++ return;
+ }
++
++ assert(n > 0);
++ n--;
++ if (n > 0)
++ acquire(n);
+ }
+
+ void GtkYieldMutex::ThreadsLeave()
+ {
+- assert(m_nCount != 0);
++ const bool bLeaveWithoutEnter = m_nCount == 0;
++ SAL_WARN_IF(bLeaveWithoutEnter, "vcl.gtk", "gdk_threads_leave without matching gdk_threads_enter");
+ yieldCounts.push(m_nCount);
++ if G_UNLIKELY(bLeaveWithoutEnter) // this ideally shouldn't happen, but can due to the gtk3 file dialog
++ return;
+ release(true);
+ }
+
+--
+2.31.1
+
diff --git a/0001-make-with-idlc-cpp-cpp-work-for-gcc-cpp-as-a-ucpp-re.patch b/0001-make-with-idlc-cpp-cpp-work-for-gcc-cpp-as-a-ucpp-re.patch
new file mode 100644
index 0000000..9d4ed5c
--- /dev/null
+++ b/0001-make-with-idlc-cpp-cpp-work-for-gcc-cpp-as-a-ucpp-re.patch
@@ -0,0 +1,111 @@
+From 748a9fd3a8e90e52a126190dbe0d97da6e0941ff Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Wed, 11 Aug 2021 20:55:14 +0100
+Subject: [PATCH] make --with-idlc-cpp=cpp work for gcc cpp as a ucpp
+ replacement
+
+e.g. the example of
+https://bugs.launchpad.net/ubuntu/+source/libreoffice/+bug/1524638
+has the same output .urd using cpp with these flags as ucpp created
+
+Change-Id: Iadfd2deba7d365c66c3260fd6736c031987e107c
+---
+ config_host.mk.in | 1 +
+ configure.ac | 14 ++++++++++++++
+ idlc/Executable_idlc.mk | 8 ++++++++
+ idlc/source/idlccompile.cxx | 8 ++++++++
+ 4 files changed, 31 insertions(+)
+
+diff --git a/config_host.mk.in b/config_host.mk.in
+index 58ca1d1c14fb..6810660067b0 100644
+--- a/config_host.mk.in
++++ b/config_host.mk.in
+@@ -635,6 +635,7 @@ export SYSTEM_RHINO=@SYSTEM_RHINO@
+ export SYSTEM_SERF=@SYSTEM_SERF@
+ export SYSTEM_STAROFFICE=@SYSTEM_STAROFFICE@
+ export SYSTEM_UCPP=@SYSTEM_UCPP@
++export SYSTEM_UCPP_IS_GCC=@SYSTEM_UCPP_IS_GCC@
+ export SYSTEM_VISIO=@SYSTEM_VISIO@
+ export SYSTEM_WPD=@SYSTEM_WPD@
+ export SYSTEM_WPG=@SYSTEM_WPG@
+diff --git a/configure.ac b/configure.ac
+index 3d2bf7e24555..ac226fd46ace 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -8807,9 +8807,22 @@ dnl ===================================================================
+ dnl Check for C preprocessor to use
+ dnl ===================================================================
+ AC_MSG_CHECKING([which C preprocessor to use in idlc])
++SYSTEM_UCPP_IS_GCC=
+ if test -n "$with_idlc_cpp"; then
+ AC_MSG_RESULT([$with_idlc_cpp])
+ AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
++ AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
++ # ucpp will accept -v (to output version), warn about the others as unknown
++ # and return 1 (due to -v)
++ # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
++ # and return 0 (due to --version ) if all options are supported
++ $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
++ if test $? -eq 0; then
++ SYSTEM_UCPP_IS_GCC=TRUE
++ AC_MSG_RESULT([yes])
++ else
++ AC_MSG_RESULT([no])
++ fi
+ else
+ AC_MSG_RESULT([ucpp])
+ AC_MSG_CHECKING([which ucpp tp use])
+@@ -8822,6 +8835,7 @@ else
+ fi
+ fi
+ AC_SUBST(SYSTEM_UCPP)
++AC_SUBST(SYSTEM_UCPP_IS_GCC)
+
+ dnl ===================================================================
+ dnl Check for epm (not needed for Windows)
+diff --git a/idlc/Executable_idlc.mk b/idlc/Executable_idlc.mk
+index e194e9049c77..f2f79dcb8911 100644
+--- a/idlc/Executable_idlc.mk
++++ b/idlc/Executable_idlc.mk
+@@ -35,10 +35,18 @@ $(eval $(call gb_Executable_add_scanners,idlc,\
+ ))
+
+ ifneq (,$(SYSTEM_UCPP))
++
+ $(eval $(call gb_Executable_add_defs,idlc,\
+ -DSYSTEM_UCPP \
+ -DUCPP=\"file://$(SYSTEM_UCPP)\" \
+ ))
++
++ifneq ($(SYSTEM_UCPP_IS_GCC),)
++$(eval $(call gb_Executable_add_defs,idlc,\
++ -DSYSTEM_UCPP_IS_GCC \
++))
++endif
++
+ endif
+
+ $(eval $(call gb_Executable_add_exception_objects,idlc,\
+diff --git a/idlc/source/idlccompile.cxx b/idlc/source/idlccompile.cxx
+index bf3325d6821a..1902d63e0cad 100644
+--- a/idlc/source/idlccompile.cxx
++++ b/idlc/source/idlccompile.cxx
+@@ -237,7 +237,15 @@ sal_Int32 compileFile(const OString * pathname)
+ ::std::vector< OUString> lCppArgs;
+ lCppArgs.emplace_back("-DIDL");
+ lCppArgs.emplace_back("-C");
++#ifdef SYSTEM_UCPP_IS_GCC
++ // -nostdinc Do not search the standard system directories for header files
++ lCppArgs.emplace_back("-nostdinc");
++ // with gcc cpp, even when not explicitly including anything, /usr/include/stdc-predef.h
++ // gets inserted without -nostdinc
++#else
++ // -zI Do not use the standard (compile-time) include path.
+ lCppArgs.emplace_back("-zI");
++#endif
+
+ Options* pOptions = idlc()->getOptions();
+
+--
+2.31.1
+
diff --git a/0001-math.desktop-include-Spreadsheet-category.patch b/0001-math.desktop-include-Spreadsheet-category.patch
new file mode 100644
index 0000000..2969ea8
--- /dev/null
+++ b/0001-math.desktop-include-Spreadsheet-category.patch
@@ -0,0 +1,39 @@
+From f586051919d047e2b67d32637817c3d96a898494 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Wed, 9 Jun 2021 09:13:23 +0100
+Subject: [PATCH] math.desktop include "Spreadsheet" category
+
+but it's not a spreadsheet
+
+since...
+
+commit dad7fe7227fb80a32d3c2c777584dc9d74b9e929
+Date: Thu Jan 2 16:16:55 2014 +0100
+
+ Fix math categories to make SUSE rpm check happy
+
+Change-Id: I0397ea12cd7f29f4b0c1f0e0ad76a3429b55c455
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116884
+Tested-by: Jenkins
+Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
+(cherry picked from commit 2df2ce1b51d13bc9e203fab1b7eb3c88c906588c)
+---
+ sysui/desktop/menus/math.desktop | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sysui/desktop/menus/math.desktop b/sysui/desktop/menus/math.desktop
+index d2391be5c234..5a8192ae4abc 100644
+--- a/sysui/desktop/menus/math.desktop
++++ b/sysui/desktop/menus/math.desktop
+@@ -21,7 +21,7 @@ Terminal=false
+ NoDisplay=false
+ Icon=math
+ Type=Application
+-Categories=Office;Spreadsheet;Education;Science;Math;X-Red-Hat-Base;X-MandrivaLinux-Office-Other;
++Categories=Office;Education;Science;Math;X-Red-Hat-Base;X-MandrivaLinux-Office-Other;
+ Exec=${UNIXBASISROOTNAME} --math %%FILE%%
+ MimeType=application/vnd.oasis.opendocument.formula;application/vnd.sun.xml.math;application/vnd.oasis.opendocument.formula-template;text/mathml;application/mathml+xml;
+ Name=%PRODUCTNAME Math
+--
+2.31.1
+
diff --git a/0001-rhbz-1918152-fix-FTBFS.patch b/0001-rhbz-1918152-fix-FTBFS.patch
new file mode 100644
index 0000000..b2502d1
--- /dev/null
+++ b/0001-rhbz-1918152-fix-FTBFS.patch
@@ -0,0 +1,26 @@
+From 8b8a49e14c1010c5ab325b64fc3b65524a6a6049 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Wed, 20 Jan 2021 09:19:25 +0000
+Subject: [PATCH] rhbz#1918152 fix FTBFS
+
+Change-Id: I5c03c810d3b2572b0e58c62293add49bd7025e70
+---
+ vcl/source/gdi/bitmap3.cxx | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/vcl/source/gdi/bitmap3.cxx b/vcl/source/gdi/bitmap3.cxx
+index ec80b03c6008..8ea5c31bee3e 100644
+--- a/vcl/source/gdi/bitmap3.cxx
++++ b/vcl/source/gdi/bitmap3.cxx
+@@ -17,8 +17,6 @@
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+-#include <math.h>
+-
+ #include <vcl/bitmapaccess.hxx>
+ #include <vcl/bitmapex.hxx>
+ #include <vcl/bitmap.hxx>
+--
+2.28.0
+
diff --git a/0001-rhbz-1980800-allow-convert-to-csv-to-write-each-shee.patch b/0001-rhbz-1980800-allow-convert-to-csv-to-write-each-shee.patch
new file mode 100644
index 0000000..b1224ac
--- /dev/null
+++ b/0001-rhbz-1980800-allow-convert-to-csv-to-write-each-shee.patch
@@ -0,0 +1,428 @@
+From aec3e189e6e9aa1eb2fe91cbb1c46f308b074cd5 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Tue, 13 Jul 2021 12:38:07 +0100
+Subject: [PATCH] rhbz#1980800 allow --convert-to csv to write each sheet to a
+ separate file
+
+Related: tdf#135762 except only currently implemented for command line use
+
+sample usage:
+soffice --convert-to csv:"Text - txt - csv (StarCalc)":44,34,UTF8,1,,0,false,true,false,false,false,-1 sample.ods
+where the new (11th!) final token ("-1") enables writing each sheet to a
+new file based on the suggested target name so output in this example
+is files sample-Sheet1.csv and sample-Sheet2.csv
+
+Only -1 for 'all sheets' vs 0 for existing 'current sheet only' (which
+is always sheet 0 from the command line) are currently options but the
+token could be expanded in the future to select specific sheets to
+export.
+
+Change-Id: Ib99a120f1a2c8d1008a7a3c59a6b39f572fb346e
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118850
+Tested-by: Jenkins
+Reviewed-by: Eike Rathke <erack@redhat.com>
+(cherry picked from commit b8903bc106dad036acb3d117e5c4fc955697fe02)
+
+Related: tdf#135762 Allow --convert-to csv to specify 1-based sheet number
+
+Same multifile mechanism as for -1 all sheets is used, so
+
+soffice --convert-to csv:"Text - txt - csv (StarCalc)":44,34,UTF8,1,,0,false,true,false,false,false,2 sample.ods
+
+writes a file sample-Sheet2.csv
+
+Change-Id: Ib9248c9561e4e340c88458ac5dfd159e443a4cfd
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118971
+Reviewed-by: Eike Rathke <erack@redhat.com>
+Tested-by: Jenkins
+(cherry picked from commit fda91f8be16ba760e360940ebafd6244c648cb8c)
+
+Related: tdf#135762 Suppress cout if not command line
+
+Change-Id: I9431221aadf97739bb197871f25fa151ef4c391c
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119294
+Reviewed-by: Eike Rathke <erack@redhat.com>
+Tested-by: Jenkins
+(cherry picked from commit 0cda081c9aa3b3dcb363f97bac60c845ce9a13e0)
+---
+ desktop/source/app/dispatchwatcher.cxx | 50 +++++++--
+ sc/source/ui/dbgui/imoptdlg.cxx | 16 ++-
+ sc/source/ui/docshell/docsh.cxx | 141 +++++++++++++++++++++----
+ sc/source/ui/inc/docsh.hxx | 2 +-
+ sc/source/ui/inc/imoptdlg.hxx | 6 +-
+ 5 files changed, 179 insertions(+), 36 deletions(-)
+
+diff --git a/desktop/source/app/dispatchwatcher.cxx b/desktop/source/app/dispatchwatcher.cxx
+index 50b92ecb7834..3df4f34ccf83 100644
+--- a/desktop/source/app/dispatchwatcher.cxx
++++ b/desktop/source/app/dispatchwatcher.cxx
+@@ -30,6 +30,7 @@
+ #include "officeipcthread.hxx"
+ #include <rtl/ustring.hxx>
+ #include <comphelper/processfactory.hxx>
++#include <comphelper/string.hxx>
+ #include <comphelper/synchronousdispatch.hxx>
+ #include <com/sun/star/io/IOException.hpp>
+ #include <com/sun/star/util/XCloseable.hpp>
+@@ -598,6 +599,8 @@ bool DispatchWatcher::executeDispatchRequests( const std::vector<DispatchRequest
+ aFilter = impl_GuessFilter( aOutFile, aDocService );
+ }
+
++ bool bMultiFileTarget = false;
++
+ if (aFilter.isEmpty())
+ {
+ std::cerr << "Error: no export filter" << std::endl;
+@@ -605,29 +608,54 @@ bool DispatchWatcher::executeDispatchRequests( const std::vector<DispatchRequest
+ else
+ {
+ sal_Int32 nFilterOptionsIndex = aFilter.indexOf(':');
+- sal_Int32 nProps = ( 0 < nFilterOptionsIndex ) ? 3 : 2;
++ sal_Int32 nProps = ( 0 < nFilterOptionsIndex ) ? 4 : 3;
+
+ if ( !aImgOut.isEmpty() )
+ nProps +=1;
+ Sequence<PropertyValue> conversionProperties( nProps );
+- conversionProperties[0].Name = "Overwrite";
+- conversionProperties[0].Value <<= true;
++ conversionProperties[0].Name = "ConversionRequestOrigin";
++ conversionProperties[0].Value <<= OUString("CommandLine");
++ conversionProperties[1].Name = "Overwrite";
++ conversionProperties[1].Value <<= true;
+
+- conversionProperties[1].Name = "FilterName";
++ conversionProperties[2].Name = "FilterName";
+ if( 0 < nFilterOptionsIndex )
+ {
+- conversionProperties[1].Value <<= aFilter.copy(0, nFilterOptionsIndex);
++ OUString sFilterName = aFilter.copy(0, nFilterOptionsIndex);
++ OUString sFilterOptions = aFilter.copy(nFilterOptionsIndex + 1);
++
++ if (sFilterName == "Text - txt - csv (StarCalc)")
++ {
++ sal_Int32 nIdx(0);
++ // If the 11th token is '-1' then we export a file
++ // per sheet where the file name is based on the suggested
++ // output filename concatenated with the sheet name, so adjust
++ // the output and overwrite messages
++ // If the 11th token is not present or numeric 0 then the
++ // default sheet is exported with the output filename. If it
++ // is numeric >0 then that sheet (1-based) with the output
++ // filename concatenated with the sheet name. So even if
++ // that is a single file, the multi file target mechanism is
++ // used.
++ const OUString aTok(sFilterOptions.getToken(11, ',', nIdx));
++ // Actual validity is checked in Calc, here just check for
++ // presence of numeric value at start.
++ bMultiFileTarget = (!aTok.isEmpty() && aTok.toInt32() != 0);
++ }
++
++ conversionProperties[2].Value <<= sFilterName;
+
+- conversionProperties[2].Name = "FilterOptions";
+- conversionProperties[2].Value <<= aFilter.copy(nFilterOptionsIndex + 1);
++ conversionProperties[3].Name = "FilterOptions";
++ conversionProperties[3].Value <<= sFilterOptions;
+ }
+ else
+ {
+- conversionProperties[1].Value <<= aFilter;
++ conversionProperties[2].Value <<= aFilter;
+ }
+
+ if ( !aImgOut.isEmpty() )
+ {
++ assert(conversionProperties[nProps-1].Name.isEmpty());
+ conversionProperties[nProps-1].Name = "ImageFilter";
+ conversionProperties[nProps-1].Value <<= aImgOut;
+ }
+@@ -639,9 +667,11 @@ bool DispatchWatcher::executeDispatchRequests( const std::vector<DispatchRequest
+ OString aTargetURL8 = OUStringToOString(aTempName, osl_getThreadTextEncoding());
+ if (aDispatchRequest.aRequestType != REQUEST_CAT)
+ {
+- std::cout << "convert " << aSource8 << " -> " << aTargetURL8;
++ std::cout << "convert " << aSource8;
++ if (!bMultiFileTarget)
++ std::cout << " -> " << aTargetURL8;
+ std::cout << " using filter : " << OUStringToOString(aFilter, osl_getThreadTextEncoding()) << std::endl;
+- if (FStatHelper::IsDocument(aOutFile))
++ if (!bMultiFileTarget && FStatHelper::IsDocument(aOutFile))
+ std::cout << "Overwriting: " << OUStringToOString(aTempName, osl_getThreadTextEncoding()) << std::endl ;
+ }
+ try
+diff --git a/sc/source/ui/dbgui/imoptdlg.cxx b/sc/source/ui/dbgui/imoptdlg.cxx
+index 071f1b0257bc..a362e4df0ee7 100644
+--- a/sc/source/ui/dbgui/imoptdlg.cxx
++++ b/sc/source/ui/dbgui/imoptdlg.cxx
+@@ -20,6 +20,7 @@
+ #include <imoptdlg.hxx>
+ #include <asciiopt.hxx>
+ #include <comphelper/string.hxx>
++#include <unotools/charclass.hxx>
+ #include <osl/thread.h>
+ #include <global.hxx>
+
+@@ -43,6 +44,7 @@ ScImportOptions::ScImportOptions( const OUString& rStr )
+ bSaveNumberAsSuch = true;
+ bSaveFormulas = false;
+ bRemoveSpace = false;
++ nSheetToExport = 0;
+ sal_Int32 nTokenCount = comphelper::string::getTokenCount(rStr, ',');
+ if ( nTokenCount < 3 )
+ return;
+@@ -77,6 +79,16 @@ ScImportOptions::ScImportOptions( const OUString& rStr )
+ bSaveFormulas = rStr.getToken(0, ',', nIdx) == "true";
+ if ( nTokenCount >= 11 )
+ bRemoveSpace = rStr.getToken(0, ',', nIdx) == "true";
++ if ( nTokenCount >= 12 )
++ {
++ const OUString aTok(rStr.getToken(0, ',', nIdx));
++ if (aTok == "-1")
++ nSheetToExport = -1; // all
++ else if (aTok.isEmpty() || CharClass::isAsciiNumeric(aTok))
++ nSheetToExport = aTok.toInt32();
++ else
++ nSheetToExport = -23; // invalid, force error
++ }
+ }
+ }
+
+@@ -99,7 +111,9 @@ OUString ScImportOptions::BuildString() const
+ "," +
+ OUString::boolean( bSaveFormulas ) + // "save formulas": not in ScAsciiOptions
+ "," +
+- OUString::boolean( bRemoveSpace ); // same as "Remove space" in ScAsciiOptions
++ OUString::boolean( bRemoveSpace ) + // same as "Remove space" in ScAsciiOptions
++ "," +
++ OUString::number(nSheetToExport) ; // Only available for command line --convert-to
+
+ return aResult;
+ }
+diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
+index 91020db0b2e0..5fdfddd0c89b 100644
+--- a/sc/source/ui/docshell/docsh.cxx
++++ b/sc/source/ui/docshell/docsh.cxx
+@@ -44,6 +44,7 @@
+ #include <sfx2/objface.hxx>
+ #include <sfx2/viewfrm.hxx>
+ #include <svl/documentlockfile.hxx>
++#include <svl/fstathelper.hxx>
+ #include <svl/sharecontrolfile.hxx>
+ #include <svl/urihelper.hxx>
+ #include <osl/file.hxx>
+@@ -119,6 +120,7 @@
+ #include <comphelper/processfactory.hxx>
+ #include <comphelper/string.hxx>
+ #include <unotools/configmgr.hxx>
++#include <unotools/ucbstreamhelper.hxx>
+ #include <uiitems.hxx>
+ #include <dpobject.hxx>
+ #include <markdata.hxx>
+@@ -1925,7 +1927,7 @@ void escapeTextSep(sal_Int32 nPos, const StrT& rStrDelim, StrT& rStr)
+
+ }
+
+-void ScDocShell::AsciiSave( SvStream& rStream, const ScImportOptions& rAsciiOpt )
++void ScDocShell::AsciiSave( SvStream& rStream, const ScImportOptions& rAsciiOpt, SCTAB nTab )
+ {
+ sal_Unicode cDelim = rAsciiOpt.nFieldSepCode;
+ sal_Unicode cStrDelim = rAsciiOpt.nTextSepCode;
+@@ -1971,7 +1973,6 @@ void ScDocShell::AsciiSave( SvStream& rStream, const ScImportOptions& rAsciiOpt
+
+ SCCOL nStartCol = 0;
+ SCROW nStartRow = 0;
+- SCTAB nTab = GetSaveTab();
+ SCCOL nEndCol;
+ SCROW nEndRow;
+ m_aDocument.GetCellArea( nTab, nEndCol, nEndRow );
+@@ -2389,35 +2390,129 @@ bool ScDocShell::ConvertTo( SfxMedium &rMed )
+ }
+ else if (aFltName == pFilterAscii)
+ {
+- SvStream* pStream = rMed.GetOutStream();
+- if (pStream)
++ OUString sItStr;
++ SfxItemSet* pSet = rMed.GetItemSet();
++ const SfxPoolItem* pItem;
++ if ( pSet && SfxItemState::SET ==
++ pSet->GetItemState( SID_FILE_FILTEROPTIONS, true, &pItem ) )
+ {
+- OUString sItStr;
+- SfxItemSet* pSet = rMed.GetItemSet();
+- const SfxPoolItem* pItem;
+- if ( pSet && SfxItemState::SET ==
+- pSet->GetItemState( SID_FILE_FILTEROPTIONS, true, &pItem ) )
++ sItStr = static_cast<const SfxStringItem*>(pItem)->GetValue();
++ }
++
++ if ( sItStr.isEmpty() )
++ {
++ // default for ascii export (from API without options):
++ // ISO8859-1/MS_1252 encoding, comma, double quotes
++
++ ScImportOptions aDefOptions( ',', '"', RTL_TEXTENCODING_MS_1252 );
++ sItStr = aDefOptions.BuildString();
++ }
++
++ weld::WaitObject aWait( GetActiveDialogParent() );
++ ScImportOptions aOptions( sItStr );
++
++ if (aOptions.nSheetToExport)
++ {
++ // Only from command line --convert-to
++ bRet = true;
++
++ // Verbose only from command line, not UI (in case we actually
++ // implement that) nor macro filter options.
++ bool bVerbose = false;
++ const css::uno::Sequence<css::beans::PropertyValue> & rArgs = rMed.GetArgs();
++ const auto pProp = std::find_if( rArgs.begin(), rArgs.end(),
++ [](const css::beans::PropertyValue& rProp) { return rProp.Name == "ConversionRequestOrigin"; });
++ if (pProp != rArgs.end())
+ {
+- sItStr = static_cast<const SfxStringItem*>(pItem)->GetValue();
++ OUString aOrigin;
++ pProp->Value >>= aOrigin;
++ bVerbose = (aOrigin == "CommandLine");
+ }
+
+- if ( sItStr.isEmpty() )
++ SCTAB nStartTab;
++ SCTAB nCount = m_aDocument.GetTableCount();
++ if (aOptions.nSheetToExport == -1)
+ {
+- // default for ascii export (from API without options):
+- // ISO8859-1/MS_1252 encoding, comma, double quotes
+-
+- ScImportOptions aDefOptions( ',', '"', RTL_TEXTENCODING_MS_1252 );
+- sItStr = aDefOptions.BuildString();
++ // All sheets.
++ nStartTab = 0;
++ }
++ else if (0 < aOptions.nSheetToExport && aOptions.nSheetToExport <= nCount)
++ {
++ // One sheet, 1-based.
++ nCount = aOptions.nSheetToExport;
++ nStartTab = nCount - 1;
++ }
++ else
++ {
++ // Usage error, no export but log.
++ if (bVerbose)
++ {
++ if (aOptions.nSheetToExport < 0)
++ std::cout << "Bad sheet number string given." << std::endl;
++ else
++ std::cout << "No sheet number " << aOptions.nSheetToExport
++ << ", number of sheets is " << nCount << std::endl;
++ }
++ nStartTab = 0;
++ nCount = 0;
++ SetError(SCERR_EXPORT_DATA);
++ bRet = false;
+ }
+
+- weld::WaitObject aWait( GetActiveDialogParent() );
+- ScImportOptions aOptions( sItStr );
+- AsciiSave( *pStream, aOptions );
+- bRet = true;
++ INetURLObject aURLObject(rMed.GetURLObject());
++ OUString sExt = aURLObject.CutExtension();
++ OUString sBaseName = aURLObject.GetLastName();
++ aURLObject.CutLastName();
+
+- if (m_aDocument.GetTableCount() > 1)
+- if (!rMed.GetError())
+- rMed.SetError(SCWARN_EXPORT_ASCII);
++ for (SCTAB i = nStartTab; i < nCount; ++i)
++ {
++ OUString sTabName;
++ if (!m_aDocument.GetName(i, sTabName))
++ sTabName = OUString::number(i);
++ INetURLObject aSheetURLObject(aURLObject);
++ OUString sFileName = sBaseName + "-" + sTabName;
++ if (!sExt.isEmpty())
++ sFileName = sFileName + "." + sExt;
++ aSheetURLObject.Append(sFileName);
++
++ // log similar to DispatchWatcher::executeDispatchRequests
++ OUString aOutFile = aSheetURLObject.GetMainURL(INetURLObject::DecodeMechanism::NONE);
++ if (bVerbose)
++ {
++ OUString aDisplayedName;
++ if (osl::FileBase::E_None != osl::FileBase::getSystemPathFromFileURL(aOutFile, aDisplayedName))
++ aDisplayedName = aOutFile;
++ std::cout << "Writing sheet " << OUStringToOString(sTabName, osl_getThreadTextEncoding()) << " -> "
++ << OUStringToOString(aDisplayedName, osl_getThreadTextEncoding())
++ << std::endl;
++
++ if (FStatHelper::IsDocument(aOutFile))
++ std::cout << "Overwriting: " << OUStringToOString(aDisplayedName, osl_getThreadTextEncoding())
++ << std::endl ;
++ }
++
++ std::unique_ptr<SvStream> xStm = ::utl::UcbStreamHelper::CreateStream(aOutFile, StreamMode::TRUNC | StreamMode::WRITE);
++ if (!xStm)
++ {
++ SetError(ERRCODE_IO_CANTCREATE);
++ bRet = false;
++ break;
++ }
++ AsciiSave(*xStm, aOptions, i);
++ }
++ }
++ else
++ {
++ SvStream* pStream = rMed.GetOutStream();
++ if (pStream)
++ {
++ AsciiSave(*pStream, aOptions, GetSaveTab());
++ bRet = true;
++
++ if (m_aDocument.GetTableCount() > 1)
++ if (!rMed.GetError())
++ rMed.SetError(SCWARN_EXPORT_ASCII);
++ }
+ }
+ }
+ else if (aFltName == pFilterDBase)
+diff --git a/sc/source/ui/inc/docsh.hxx b/sc/source/ui/inc/docsh.hxx
+index 41c0b30a42a8..3aa5f6caf311 100644
+--- a/sc/source/ui/inc/docsh.hxx
++++ b/sc/source/ui/inc/docsh.hxx
+@@ -227,7 +227,7 @@ public:
+
+ ScDrawLayer* MakeDrawLayer();
+
+- void AsciiSave( SvStream& rStream, const ScImportOptions& rOpt );
++ void AsciiSave( SvStream& rStream, const ScImportOptions& rOpt, SCTAB nTab );
+
+ void Execute( SfxRequest& rReq );
+ void GetState( SfxItemSet &rSet );
+diff --git a/sc/source/ui/inc/imoptdlg.hxx b/sc/source/ui/inc/imoptdlg.hxx
+index bac941c2a377..382067d67813 100644
+--- a/sc/source/ui/inc/imoptdlg.hxx
++++ b/sc/source/ui/inc/imoptdlg.hxx
+@@ -32,7 +32,8 @@ public:
+ ScImportOptions( sal_Unicode nFieldSep, sal_Unicode nTextSep, rtl_TextEncoding nEnc )
+ : nFieldSepCode(nFieldSep), nTextSepCode(nTextSep),
+ bFixedWidth(false), bSaveAsShown(false), bQuoteAllText(false),
+- bSaveNumberAsSuch(true), bSaveFormulas(false), bRemoveSpace(false)
++ bSaveNumberAsSuch(true), bSaveFormulas(false), bRemoveSpace(false),
++ nSheetToExport(0)
+ { SetTextEncoding( nEnc ); }
+
+ ScImportOptions& operator=( const ScImportOptions& rCpy ) = default;
+@@ -51,6 +52,9 @@ public:
+ bool bSaveNumberAsSuch;
+ bool bSaveFormulas;
+ bool bRemoveSpace;
++ // "0" for 'current sheet', "-1" for all sheets (each to a separate file),
++ // or 1-based specific sheet number (to a separate file).
++ sal_Int32 nSheetToExport;
+ };
+
+ #endif // INCLUDED_SC_SOURCE_UI_INC_IMOPTDLG_HXX
+--
+2.31.1
+
diff --git a/0001-tdf-121546-sw-don-t-use-undo-array-s-m_pOutlineNodes.patch b/0001-tdf-121546-sw-don-t-use-undo-array-s-m_pOutlineNodes.patch
new file mode 100644
index 0000000..8840208
--- /dev/null
+++ b/0001-tdf-121546-sw-don-t-use-undo-array-s-m_pOutlineNodes.patch
@@ -0,0 +1,72 @@
+From bced744fea67d50242701ed55271d40e803ac14e Mon Sep 17 00:00:00 2001
+From: Michael Stahl <michael.stahl@allotropia.de>
+Date: Mon, 15 Nov 2021 17:29:59 +0100
+Subject: [PATCH] tdf#121546 sw: don't use undo array's m_pOutlineNodes
+
+It's pointless.
+
+Change-Id: I304c123bffc16e6133d2953bc9a4f7a3afad14ef
+---
+ sw/source/core/docnode/ndnum.cxx | 2 ++
+ sw/source/core/docnode/nodes.cxx | 18 ++++++++++++------
+ 2 files changed, 14 insertions(+), 6 deletions(-)
+
+diff --git a/sw/source/core/docnode/ndnum.cxx b/sw/source/core/docnode/ndnum.cxx
+index b3d66affa66e..a7b898ee5f0a 100644
+--- a/sw/source/core/docnode/ndnum.cxx
++++ b/sw/source/core/docnode/ndnum.cxx
+@@ -38,6 +38,8 @@ bool SwOutlineNodes::Seek_Entry(SwNode* rP, size_type* pnPos) const
+
+ void SwNodes::UpdateOutlineNode(SwNode & rNd)
+ {
++ assert(IsDocNodes()); // no point in m_pOutlineNodes for undo nodes
++
+ SwTextNode * pTextNd = rNd.GetTextNode();
+
+ if (!(pTextNd && pTextNd->IsOutlineStateChanged()))
+diff --git a/sw/source/core/docnode/nodes.cxx b/sw/source/core/docnode/nodes.cxx
+index a7a2078b2091..ab3eb62ac9f2 100644
+--- a/sw/source/core/docnode/nodes.cxx
++++ b/sw/source/core/docnode/nodes.cxx
+@@ -109,6 +109,16 @@ SwNodes::~SwNodes()
+ m_pEndOfContent.reset();
+ }
+
++static bool IsInsertOutline(SwNodes const& rNodes, sal_uLong const nIndex)
++{
++ if (!rNodes.IsDocNodes())
++ {
++ return false;
++ }
++ return nIndex < rNodes.GetEndOfRedlines().StartOfSectionNode()->GetIndex()
++ || rNodes.GetEndOfRedlines().GetIndex() < nIndex;
++}
++
+ void SwNodes::ChgNode( SwNodeIndex const & rDelPos, sal_uLong nSz,
+ SwNodeIndex& rInsPos, bool bNewFrames )
+ {
+@@ -124,9 +134,7 @@ void SwNodes::ChgNode( SwNodeIndex const & rDelPos, sal_uLong nSz,
+
+ // NEVER include nodes from the RedLineArea
+ sal_uLong nNd = rInsPos.GetIndex();
+- bool bInsOutlineIdx = (
+- rNds.GetEndOfRedlines().StartOfSectionNode()->GetIndex() >= nNd ||
+- nNd >= rNds.GetEndOfRedlines().GetIndex() );
++ bool const bInsOutlineIdx = IsInsertOutline(rNds, nNd);
+
+ if( &rNds == this ) // if in the same node array -> move
+ {
+@@ -478,9 +486,7 @@ bool SwNodes::MoveNodes( const SwNodeRange& aRange, SwNodes & rNodes,
+
+ // NEVER include nodes from the RedLineArea
+ sal_uLong nNd = aIdx.GetIndex();
+- bool bInsOutlineIdx = ( rNodes.GetEndOfRedlines().
+- StartOfSectionNode()->GetIndex() >= nNd ||
+- nNd >= rNodes.GetEndOfRedlines().GetIndex() );
++ bool const bInsOutlineIdx = IsInsertOutline(rNodes, nNd);
+
+ if( bNewFrames )
+ // delete all frames
+--
+2.33.1
+
diff --git a/0002-CVE-2022-26307-make-hash-encoding-match-decoding.patch b/0002-CVE-2022-26307-make-hash-encoding-match-decoding.patch
new file mode 100644
index 0000000..e2c5eb8
--- /dev/null
+++ b/0002-CVE-2022-26307-make-hash-encoding-match-decoding.patch
@@ -0,0 +1,183 @@
+From 780c42cdd8006dc60e281be2fe6566f101e909bc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Mon, 21 Mar 2022 20:58:34 +0000
+Subject: [PATCH 2/5] CVE-2022-26307 make hash encoding match decoding
+
+Seeing as old versions of the hash may be in the users config, add a
+StorageVersion field to the office config Passwords section which
+defaults to 0 to indicate the old hash is in use.
+
+Try the old varient when StorageVersion is 0. When a new encoded master
+password it set write StorageVersion of 1 to indicate a new hash is in
+use and use the new style when StorageVersion is 1.
+
+Change-Id: I3174c37a5891bfc849984e0ec5c2c392b9c6e7b1
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132080
+Tested-by: Jenkins
+Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
+(cherry picked from commit e890f54dbac57f3ab5acf4fbd31222095d3e8ab6)
+---
+ .../schema/org/openoffice/Office/Common.xcs | 6 +++
+ .../passwordcontainer/passwordcontainer.cxx | 45 +++++++++++++++++--
+ .../passwordcontainer/passwordcontainer.hxx | 6 +++
+ uui/source/iahndl-authentication.cxx | 5 ++-
+ 4 files changed, 57 insertions(+), 5 deletions(-)
+
+diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+index 9097c23c3c6a..922efc33cca7 100644
+--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
++++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+@@ -942,6 +942,12 @@
+ </info>
+ <value>false</value>
+ </prop>
++ <prop oor:name="StorageVersion" oor:type="xs:int" oor:nillable="false">
++ <info>
++ <desc>Specifies what version of encoding scheme the password container uses.</desc>
++ </info>
++ <value>0</value>
++ </prop>
+ <prop oor:name="HasMaster" oor:type="xs:boolean" oor:nillable="false">
+ <info>
+ <desc>Specifies if there is a valid master password.</desc>
+diff --git a/svl/source/passwordcontainer/passwordcontainer.cxx b/svl/source/passwordcontainer/passwordcontainer.cxx
+index 51fb129cddb1..b674844f91d3 100644
+--- a/svl/source/passwordcontainer/passwordcontainer.cxx
++++ b/svl/source/passwordcontainer/passwordcontainer.cxx
+@@ -17,7 +17,6 @@
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+-
+ #include "passwordcontainer.hxx"
+
+ #include <cppuhelper/factory.hxx>
+@@ -259,6 +258,23 @@ bool StorageItem::useStorage()
+ return aResult;
+ }
+
++sal_Int32 StorageItem::getStorageVersion()
++{
++ Sequence<OUString> aNodeNames { "StorageVersion" };
++
++ Sequence< Any > aPropertyValues = ConfigItem::GetProperties( aNodeNames );
++
++ if( aPropertyValues.getLength() != aNodeNames.getLength() )
++ {
++ OSL_FAIL( "Problems during reading" );
++ return 0;
++ }
++
++ sal_Int32 nResult = 0;
++ aPropertyValues[0] >>= nResult;
++
++ return nResult;
++}
+
+ bool StorageItem::getEncodedMP( OUString& aResult )
+ {
+@@ -291,15 +307,17 @@ bool StorageItem::getEncodedMP( OUString& aResult )
+
+ void StorageItem::setEncodedMP( const OUString& aEncoded, bool bAcceptEmpty )
+ {
+- Sequence< OUString > sendNames(2);
+- Sequence< uno::Any > sendVals(2);
++ Sequence< OUString > sendNames(3);
++ Sequence< uno::Any > sendVals(3);
+
+ sendNames[0] = "HasMaster";
+ sendNames[1] = "Master";
++ sendNames[2] = "StorageVersion";
+
+ bool bHasMaster = ( !aEncoded.isEmpty() || bAcceptEmpty );
+ sendVals[0] <<= bHasMaster;
+ sendVals[1] <<= aEncoded;
++ sendVals[2] <<= nCurrentStorageVersion;
+
+ ConfigItem::SetModified();
+ ConfigItem::PutProperties( sendNames, sendVals );
+@@ -800,6 +818,18 @@ OUString PasswordContainer::RequestPasswordFromUser( PasswordRequestMode aRMode,
+ return aResult;
+ }
+
++// Mangle the key to match an old bug
++static OUString ReencodeAsOldHash(const OUString& rPass)
++{
++ OUStringBuffer aBuffer;
++ for (int ind = 0; ind < RTL_DIGEST_LENGTH_MD5; ++ind)
++ {
++ unsigned char i = static_cast<char>(rPass.copy(ind * 2, 2).toUInt32(16));
++ aBuffer.append(static_cast< sal_Unicode >('a' + (i >> 4)));
++ aBuffer.append(static_cast< sal_Unicode >('a' + (i & 15)));
++ }
++ return aBuffer.makeStringAndClear();
++}
+
+ OUString const & PasswordContainer::GetMasterPassword( const Reference< XInteractionHandler >& aHandler )
+ {
+@@ -838,6 +868,9 @@ OUString const & PasswordContainer::GetMasterPassword( const Reference< XInterac
+ }
+ else
+ {
++ if (m_pStorageFile->getStorageVersion() == 0)
++ aPass = ReencodeAsOldHash(aPass);
++
+ std::vector< OUString > aRM( DecodePasswords( aEncodedMP, aPass, aRMode ) );
+ if( aRM.empty() || aPass != aRM[0] )
+ {
+@@ -1042,6 +1075,12 @@ sal_Bool SAL_CALL PasswordContainer::authorizateWithMasterPassword( const uno::R
+
+ do {
+ aPass = RequestPasswordFromUser( aRMode, xTmpHandler );
++
++ if (!aPass.isEmpty() && m_pStorageFile->getStorageVersion() == 0)
++ {
++ aPass = ReencodeAsOldHash(aPass);
++ }
++
+ bResult = ( !aPass.isEmpty() && aPass == m_aMasterPasswd );
+ aRMode = PasswordRequestMode_PASSWORD_REENTER; // further questions with error notification
+ } while( !bResult && !aPass.isEmpty() );
+diff --git a/svl/source/passwordcontainer/passwordcontainer.hxx b/svl/source/passwordcontainer/passwordcontainer.hxx
+index 46ffec888602..bf43b5903602 100644
+--- a/svl/source/passwordcontainer/passwordcontainer.hxx
++++ b/svl/source/passwordcontainer/passwordcontainer.hxx
+@@ -168,6 +168,10 @@ public:
+ typedef ::std::pair< const OUString, ::std::vector< NamePassRecord > > PairUrlRecord;
+ typedef ::std::map< OUString, ::std::vector< NamePassRecord > > PassMap;
+
++// org.openoffice.Office.Common/Passwords/StorageVersion bump if details of
++// how password details are saved changes. Enables migration from previous
++// schemes.
++constexpr sal_Int32 nCurrentStorageVersion = 1;
+
+ class PasswordContainer;
+
+@@ -196,6 +200,8 @@ public:
+ void remove( const OUString& url, const OUString& rec );
+ void clear();
+
++ sal_Int32 getStorageVersion();
++
+ bool getEncodedMP( OUString& aResult );
+ void setEncodedMP( const OUString& aResult, bool bAcceptEmpty = false );
+ void setUseStorage( bool bUse );
+diff --git a/uui/source/iahndl-authentication.cxx b/uui/source/iahndl-authentication.cxx
+index ad975d3f9ae7..951f0b8a1c6b 100644
+--- a/uui/source/iahndl-authentication.cxx
++++ b/uui/source/iahndl-authentication.cxx
+@@ -436,8 +436,9 @@ executeMasterPasswordDialog(
+ OUStringBuffer aBuffer;
+ for (sal_uInt8 i : aKey)
+ {
+- aBuffer.append(static_cast< sal_Unicode >('a' + (i >> 4)));
+- aBuffer.append(static_cast< sal_Unicode >('a' + (i & 15)));
++ // match PasswordContainer::DecodePasswords aMasterPasswd.copy(index * 2, 2).toUInt32(16));
++ aBuffer.append(OUString::number(i >> 4, 16));
++ aBuffer.append(OUString::number(i & 15, 16));
+ }
+ rInfo.SetPassword(aBuffer.makeStringAndClear());
+ }
+--
+2.37.3
+
diff --git a/0003-CVE-2022-26306-add-Initialization-Vectors-to-passwor.patch b/0003-CVE-2022-26306-add-Initialization-Vectors-to-passwor.patch
new file mode 100644
index 0000000..be0c6e5
--- /dev/null
+++ b/0003-CVE-2022-26306-add-Initialization-Vectors-to-passwor.patch
@@ -0,0 +1,583 @@
+From e809625c2ca9f0c026aab9b5c2d13ced628c13e9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Tue, 22 Mar 2022 17:22:22 +0000
+Subject: [PATCH 3/5] CVE-2022-26306 add Initialization Vectors to password
+ storage
+
+old ones default to the current all zero case and continue to work
+as before
+
+Change-Id: I6fe3b02fafcce1b5e7133e77e76a5118177d77af
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131974
+Tested-by: Jenkins
+Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
+(cherry picked from commit 192fa1e3bfc6269f2ebb91716471485a56074aea)
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132306
+Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
+(cherry picked from commit ab77587ec300f5c30084471000663c46ddf25dad)
+---
+ .../schema/org/openoffice/Office/Common.xcs | 10 ++
+ .../passwordcontainer/passwordcontainer.cxx | 127 ++++++++++++------
+ .../passwordcontainer/passwordcontainer.hxx | 63 +++++++--
+ 3 files changed, 151 insertions(+), 49 deletions(-)
+
+diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+index 922efc33cca7..8d87d00d5369 100644
+--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
++++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+@@ -27,6 +27,11 @@
+ <info>
+ <desc>Contains a container for passwords.</desc>
+ </info>
++ <prop oor:name="InitializationVector" oor:type="xs:string">
++ <info>
++ <desc>Contains an initialization vector for the password encryption.</desc>
++ </info>
++ </prop>
+ <prop oor:name="Password" oor:type="xs:string" oor:localized="false">
+ <info>
+ <desc>Contains a password encoded with the master password.</desc>
+@@ -954,6 +959,11 @@
+ </info>
+ <value>false</value>
+ </prop>
++ <prop oor:name="MasterInitializationVector" oor:type="xs:string">
++ <info>
++ <desc>Contains an initialization vector for the master password encryption.</desc>
++ </info>
++ </prop>
+ <prop oor:name="Master" oor:type="xs:string" oor:nillable="false">
+ <info>
+ <desc>Contains the master password encrypted by itself.</desc>
+diff --git a/svl/source/passwordcontainer/passwordcontainer.cxx b/svl/source/passwordcontainer/passwordcontainer.cxx
+index b674844f91d3..ef79470a2cb6 100644
+--- a/svl/source/passwordcontainer/passwordcontainer.cxx
++++ b/svl/source/passwordcontainer/passwordcontainer.cxx
+@@ -181,15 +181,18 @@ PassMap StorageItem::getInfo()
+
+ Sequence< OUString > aNodeNames = ConfigItem::GetNodeNames( "Store" );
+ sal_Int32 aNodeCount = aNodeNames.getLength();
+- Sequence< OUString > aPropNames( aNodeCount );
++ Sequence< OUString > aPropNames( aNodeCount * 2);
+
+ std::transform(aNodeNames.begin(), aNodeNames.end(), aPropNames.begin(),
+ [](const OUString& rName) -> OUString {
+ return "Store/Passwordstorage['" + rName + "']/Password"; });
++ std::transform(aNodeNames.begin(), aNodeNames.end(), aPropNames.getArray() + aNodeCount,
++ [](const OUString& rName) -> OUString {
++ return "Store/Passwordstorage['" + rName + "']/InitializationVector"; });
+
+ Sequence< Any > aPropertyValues = ConfigItem::GetProperties( aPropNames );
+
+- if( aPropertyValues.getLength() != aNodeCount )
++ if( aPropertyValues.getLength() != aNodeCount * 2)
+ {
+ OSL_FAIL( "Problems during reading" );
+ return aResult;
+@@ -205,14 +208,16 @@ PassMap StorageItem::getInfo()
+ OUString aName = aUrlUsr[1];
+
+ OUString aEPasswd;
++ OUString aIV;
+ aPropertyValues[aNodeInd] >>= aEPasswd;
++ aPropertyValues[aNodeInd + aNodeCount] >>= aIV;
+
+ PassMap::iterator aIter = aResult.find( aUrl );
+ if( aIter != aResult.end() )
+- aIter->second.emplace_back( aName, aEPasswd );
++ aIter->second.emplace_back( aName, aEPasswd, aIV );
+ else
+ {
+- NamePassRecord aNewRecord( aName, aEPasswd );
++ NamePassRecord aNewRecord( aName, aEPasswd, aIV );
+ std::vector< NamePassRecord > listToAdd( 1, aNewRecord );
+
+ aResult.insert( PairUrlRecord( aUrl, listToAdd ) );
+@@ -276,17 +281,19 @@ sal_Int32 StorageItem::getStorageVersion()
+ return nResult;
+ }
+
+-bool StorageItem::getEncodedMP( OUString& aResult )
++bool StorageItem::getEncodedMP( OUString& aResult, OUString& aResultIV )
+ {
+ if( hasEncoded )
+ {
+ aResult = mEncoded;
++ aResultIV = mEncodedIV;
+ return true;
+ }
+
+- Sequence< OUString > aNodeNames( 2 );
++ Sequence< OUString > aNodeNames( 3 );
+ aNodeNames[0] = "HasMaster";
+ aNodeNames[1] = "Master";
++ aNodeNames[2] = "MasterInitializationVector";
+
+ Sequence< Any > aPropertyValues = ConfigItem::GetProperties( aNodeNames );
+
+@@ -298,32 +305,37 @@ bool StorageItem::getEncodedMP( OUString& aResult )
+
+ aPropertyValues[0] >>= hasEncoded;
+ aPropertyValues[1] >>= mEncoded;
++ aPropertyValues[2] >>= mEncodedIV;
+
+ aResult = mEncoded;
++ aResultIV = mEncodedIV;
+
+ return hasEncoded;
+ }
+
+
+-void StorageItem::setEncodedMP( const OUString& aEncoded, bool bAcceptEmpty )
++void StorageItem::setEncodedMP( const OUString& aEncoded, const OUString& aEncodedIV, bool bAcceptEmpty )
+ {
+- Sequence< OUString > sendNames(3);
+- Sequence< uno::Any > sendVals(3);
++ Sequence< OUString > sendNames(4);
++ Sequence< uno::Any > sendVals(4);
+
+ sendNames[0] = "HasMaster";
+ sendNames[1] = "Master";
+- sendNames[2] = "StorageVersion";
++ sendNames[2] = "MasterInitializationVector";
++ sendNames[3] = "StorageVersion";
+
+ bool bHasMaster = ( !aEncoded.isEmpty() || bAcceptEmpty );
+ sendVals[0] <<= bHasMaster;
+ sendVals[1] <<= aEncoded;
+- sendVals[2] <<= nCurrentStorageVersion;
++ sendVals[2] <<= aEncodedIV;
++ sendVals[3] <<= nCurrentStorageVersion;
+
+ ConfigItem::SetModified();
+ ConfigItem::PutProperties( sendNames, sendVals );
+
+ hasEncoded = bHasMaster;
+ mEncoded = aEncoded;
++ mEncodedIV = aEncodedIV;
+ }
+
+
+@@ -359,11 +371,13 @@ void StorageItem::update( const OUString& aURL, const NamePassRecord& aRecord )
+ forIndex.push_back( aURL );
+ forIndex.push_back( aRecord.GetUserName() );
+
+- Sequence< beans::PropertyValue > sendSeq(1);
++ Sequence< beans::PropertyValue > sendSeq(2);
+
+- sendSeq[0].Name = "Store/Passwordstorage['" + createIndex( forIndex ) + "']/Password";
++ sendSeq[0].Name = "Store/Passwordstorage['" + createIndex( forIndex ) + "']/InitializationVector";
++ sendSeq[0].Value <<= aRecord.GetPersistentIV();
+
+- sendSeq[0].Value <<= aRecord.GetPersPasswords();
++ sendSeq[1].Name = "Store/Passwordstorage['" + createIndex( forIndex ) + "']/Password";
++ sendSeq[1].Value <<= aRecord.GetPersPasswords();
+
+ ConfigItem::SetModified();
+ ConfigItem::SetSetProperties( "Store", sendSeq );
+@@ -424,7 +438,7 @@ void SAL_CALL PasswordContainer::disposing( const EventObject& )
+ }
+ }
+
+-std::vector< OUString > PasswordContainer::DecodePasswords( const OUString& aLine, const OUString& aMasterPasswd, css::task::PasswordRequestMode mode )
++std::vector< OUString > PasswordContainer::DecodePasswords( const OUString& aLine, const OUString& aIV, const OUString& aMasterPasswd, css::task::PasswordRequestMode mode )
+ {
+ if( !aMasterPasswd.isEmpty() )
+ {
+@@ -439,9 +453,16 @@ std::vector< OUString > PasswordContainer::DecodePasswords( const OUString& aLin
+ for( int ind = 0; ind < RTL_DIGEST_LENGTH_MD5; ind++ )
+ code[ ind ] = static_cast<char>(aMasterPasswd.copy( ind*2, 2 ).toUInt32(16));
+
++ unsigned char iv[RTL_DIGEST_LENGTH_MD5] = {0};
++ if (!aIV.isEmpty())
++ {
++ for( int ind = 0; ind < RTL_DIGEST_LENGTH_MD5; ind++ )
++ iv[ ind ] = static_cast<char>(aIV.copy( ind*2, 2 ).toUInt32(16));
++ }
++
+ rtlCipherError result = rtl_cipher_init (
+ aDecoder, rtl_Cipher_DirectionDecode,
+- code, RTL_DIGEST_LENGTH_MD5, nullptr, 0 );
++ code, RTL_DIGEST_LENGTH_MD5, iv, RTL_DIGEST_LENGTH_MD5 );
+
+ if( result == rtl_Cipher_E_None )
+ {
+@@ -474,7 +495,7 @@ std::vector< OUString > PasswordContainer::DecodePasswords( const OUString& aLin
+ "Can't decode!", css::uno::Reference<css::uno::XInterface>(), mode);
+ }
+
+-OUString PasswordContainer::EncodePasswords(const std::vector< OUString >& lines, const OUString& aMasterPasswd )
++OUString PasswordContainer::EncodePasswords(const std::vector< OUString >& lines, const OUString& aIV, const OUString& aMasterPasswd)
+ {
+ if( !aMasterPasswd.isEmpty() )
+ {
+@@ -491,9 +512,16 @@ OUString PasswordContainer::EncodePasswords(const std::vector< OUString >& lines
+ for( int ind = 0; ind < RTL_DIGEST_LENGTH_MD5; ind++ )
+ code[ ind ] = static_cast<char>(aMasterPasswd.copy( ind*2, 2 ).toUInt32(16));
+
++ unsigned char iv[RTL_DIGEST_LENGTH_MD5] = {0};
++ if (!aIV.isEmpty())
++ {
++ for( int ind = 0; ind < RTL_DIGEST_LENGTH_MD5; ind++ )
++ iv[ ind ] = static_cast<char>(aIV.copy( ind*2, 2 ).toUInt32(16));
++ }
++
+ rtlCipherError result = rtl_cipher_init (
+ aEncoder, rtl_Cipher_DirectionEncode,
+- code, RTL_DIGEST_LENGTH_MD5, nullptr, 0 );
++ code, RTL_DIGEST_LENGTH_MD5, iv, RTL_DIGEST_LENGTH_MD5 );
+
+ if( result == rtl_Cipher_E_None )
+ {
+@@ -561,7 +589,7 @@ void PasswordContainer::UpdateVector( const OUString& aURL, std::vector< NamePas
+
+ if( aRecord.HasPasswords( PERSISTENT_RECORD ) )
+ {
+- aNPIter.SetPersPasswords( aRecord.GetPersPasswords() );
++ aNPIter.SetPersPasswords( aRecord.GetPersPasswords(), aRecord.GetPersistentIV() );
+
+ if( writeFile )
+ {
+@@ -594,7 +622,8 @@ UserRecord PasswordContainer::CopyToUserRecord( const NamePassRecord& aRecord, b
+ {
+ try
+ {
+- ::std::vector< OUString > aDecodedPasswords = DecodePasswords( aRecord.GetPersPasswords(), GetMasterPassword( aHandler ), css::task::PasswordRequestMode_PASSWORD_ENTER );
++ ::std::vector< OUString > aDecodedPasswords = DecodePasswords( aRecord.GetPersPasswords(), aRecord.GetPersistentIV(),
++ GetMasterPassword( aHandler ), css::task::PasswordRequestMode_PASSWORD_ENTER );
+ aPasswords.insert( aPasswords.end(), aDecodedPasswords.begin(), aDecodedPasswords.end() );
+ }
+ catch( NoMasterException& )
+@@ -639,6 +668,19 @@ void SAL_CALL PasswordContainer::addPersistent( const OUString& Url, const OUStr
+ PrivateAdd( Url, UserName, Passwords, PERSISTENT_RECORD, aHandler );
+ }
+
++OUString PasswordContainer::createIV()
++{
++ rtlRandomPool randomPool = mRandomPool.get();
++ unsigned char iv[RTL_DIGEST_LENGTH_MD5];
++ rtl_random_getBytes(randomPool, iv, RTL_DIGEST_LENGTH_MD5);
++ OUStringBuffer aBuffer;
++ for (sal_uInt8 i : iv)
++ {
++ aBuffer.append(OUString::number(i >> 4, 16));
++ aBuffer.append(OUString::number(i & 15, 16));
++ }
++ return aBuffer.makeStringAndClear();
++}
+
+ void PasswordContainer::PrivateAdd( const OUString& Url, const OUString& UserName, const Sequence< OUString >& Passwords, char Mode, const Reference< XInteractionHandler >& aHandler )
+ {
+@@ -646,7 +688,11 @@ void PasswordContainer::PrivateAdd( const OUString& Url, const OUString& UserNam
+ ::std::vector< OUString > aStorePass = comphelper::sequenceToContainer< std::vector<OUString> >( Passwords );
+
+ if( Mode == PERSISTENT_RECORD )
+- aRecord.SetPersPasswords( EncodePasswords( aStorePass, GetMasterPassword( aHandler ) ) );
++ {
++ OUString sIV = createIV();
++ OUString sEncodedPasswords = EncodePasswords( aStorePass, sIV, GetMasterPassword( aHandler ) );
++ aRecord.SetPersPasswords( sEncodedPasswords, sIV );
++ }
+ else if( Mode == MEMORY_RECORD )
+ aRecord.SetMemPasswords( aStorePass );
+ else
+@@ -839,10 +885,10 @@ OUString const & PasswordContainer::GetMasterPassword( const Reference< XInterac
+
+ if( m_aMasterPasswd.isEmpty() && aHandler.is() )
+ {
+- OUString aEncodedMP;
++ OUString aEncodedMP, aEncodedMPIV;
+ bool bDefaultPassword = false;
+
+- if( !m_pStorageFile->getEncodedMP( aEncodedMP ) )
++ if( !m_pStorageFile->getEncodedMP( aEncodedMP, aEncodedMPIV ) )
+ aRMode = PasswordRequestMode_PASSWORD_CREATE;
+ else if ( aEncodedMP.isEmpty() )
+ {
+@@ -864,14 +910,15 @@ OUString const & PasswordContainer::GetMasterPassword( const Reference< XInterac
+ m_aMasterPasswd = aPass;
+ std::vector< OUString > aMaster( 1, m_aMasterPasswd );
+
+- m_pStorageFile->setEncodedMP( EncodePasswords( aMaster, m_aMasterPasswd ) );
++ OUString sIV = createIV();
++ m_pStorageFile->setEncodedMP( EncodePasswords( aMaster, sIV, m_aMasterPasswd ), sIV );
+ }
+ else
+ {
+ if (m_pStorageFile->getStorageVersion() == 0)
+ aPass = ReencodeAsOldHash(aPass);
+
+- std::vector< OUString > aRM( DecodePasswords( aEncodedMP, aPass, aRMode ) );
++ std::vector< OUString > aRM( DecodePasswords( aEncodedMP, aEncodedMPIV, aPass, aRMode ) );
+ if( aRM.empty() || aPass != aRM[0] )
+ {
+ bAskAgain = true;
+@@ -1028,7 +1075,8 @@ Sequence< UrlRecord > SAL_CALL PasswordContainer::getAllPersistent( const Refere
+ {
+ sal_Int32 oldLen = aUsers.getLength();
+ aUsers.realloc( oldLen + 1 );
+- aUsers[ oldLen ] = UserRecord( aNP.GetUserName(), comphelper::containerToSequence( DecodePasswords( aNP.GetPersPasswords(), GetMasterPassword( xHandler ), css::task::PasswordRequestMode_PASSWORD_ENTER ) ) );
++ aUsers[ oldLen ] = UserRecord( aNP.GetUserName(), comphelper::containerToSequence( DecodePasswords( aNP.GetPersPasswords(), aNP.GetPersistentIV(),
++ GetMasterPassword( xHandler ), css::task::PasswordRequestMode_PASSWORD_ENTER ) ) );
+ }
+
+ if( aUsers.hasElements() )
+@@ -1045,12 +1093,12 @@ Sequence< UrlRecord > SAL_CALL PasswordContainer::getAllPersistent( const Refere
+ sal_Bool SAL_CALL PasswordContainer::authorizateWithMasterPassword( const uno::Reference< task::XInteractionHandler >& xHandler )
+ {
+ bool bResult = false;
+- OUString aEncodedMP;
++ OUString aEncodedMP, aEncodedMPIV;
+ uno::Reference< task::XInteractionHandler > xTmpHandler = xHandler;
+ ::osl::MutexGuard aGuard( mMutex );
+
+ // the method should fail if there is no master password
+- if( m_pStorageFile && m_pStorageFile->useStorage() && m_pStorageFile->getEncodedMP( aEncodedMP ) )
++ if( m_pStorageFile && m_pStorageFile->useStorage() && m_pStorageFile->getEncodedMP( aEncodedMP, aEncodedMPIV ) )
+ {
+ if ( aEncodedMP.isEmpty() )
+ {
+@@ -1118,8 +1166,8 @@ sal_Bool SAL_CALL PasswordContainer::changeMasterPassword( const uno::Reference<
+
+ bool bCanChangePassword = true;
+ // if there is already a stored master password it should be entered by the user before the change happen
+- OUString aEncodedMP;
+- if( !m_aMasterPasswd.isEmpty() || m_pStorageFile->getEncodedMP( aEncodedMP ) )
++ OUString aEncodedMP, aEncodedMPIV;
++ if( !m_aMasterPasswd.isEmpty() || m_pStorageFile->getEncodedMP( aEncodedMP, aEncodedMPIV ) )
+ bCanChangePassword = authorizateWithMasterPassword( xTmpHandler );
+
+ if ( bCanChangePassword )
+@@ -1138,7 +1186,8 @@ sal_Bool SAL_CALL PasswordContainer::changeMasterPassword( const uno::Reference<
+ // store the new master password
+ m_aMasterPasswd = aPass;
+ std::vector< OUString > aMaster( 1, m_aMasterPasswd );
+- m_pStorageFile->setEncodedMP( EncodePasswords( aMaster, m_aMasterPasswd ) );
++ OUString aIV = createIV();
++ m_pStorageFile->setEncodedMP( EncodePasswords( aMaster, aIV, m_aMasterPasswd ), aIV );
+
+ // store all the entries with the new password
+ for ( const auto& rURL : aPersistent )
+@@ -1163,7 +1212,7 @@ void SAL_CALL PasswordContainer::removeMasterPassword()
+ if ( m_pStorageFile )
+ {
+ m_aMasterPasswd.clear();
+- m_pStorageFile->setEncodedMP( OUString() ); // let the master password be removed from configuration
++ m_pStorageFile->setEncodedMP( OUString(), OUString() ); // let the master password be removed from configuration
+ }
+ }
+
+@@ -1174,8 +1223,8 @@ sal_Bool SAL_CALL PasswordContainer::hasMasterPassword( )
+ if ( !m_pStorageFile )
+ throw uno::RuntimeException();
+
+- OUString aEncodedMP;
+- return ( m_pStorageFile->useStorage() && m_pStorageFile->getEncodedMP( aEncodedMP ) );
++ OUString aEncodedMP, aEncodedMPIV;
++ return ( m_pStorageFile->useStorage() && m_pStorageFile->getEncodedMP( aEncodedMP, aEncodedMPIV ) );
+ }
+
+ sal_Bool SAL_CALL PasswordContainer::allowPersistentStoring( sal_Bool bAllow )
+@@ -1222,8 +1271,8 @@ sal_Bool SAL_CALL PasswordContainer::useDefaultMasterPassword( const uno::Refere
+
+ bool bCanChangePassword = true;
+ // if there is already a stored nondefault master password it should be entered by the user before the change happen
+- OUString aEncodedMP;
+- if( m_pStorageFile->getEncodedMP( aEncodedMP ) && !aEncodedMP.isEmpty() )
++ OUString aEncodedMP, aEncodedMPIV;
++ if( m_pStorageFile->getEncodedMP( aEncodedMP, aEncodedMPIV ) && !aEncodedMP.isEmpty() )
+ bCanChangePassword = authorizateWithMasterPassword( xTmpHandler );
+
+ if ( bCanChangePassword )
+@@ -1240,7 +1289,7 @@ sal_Bool SAL_CALL PasswordContainer::useDefaultMasterPassword( const uno::Refere
+
+ // store the empty string to flag the default master password
+ m_aMasterPasswd = aPass;
+- m_pStorageFile->setEncodedMP( OUString(), true );
++ m_pStorageFile->setEncodedMP( OUString(), OUString(), true );
+
+ // store all the entries with the new password
+ for ( const auto& rURL : aPersistent )
+@@ -1264,8 +1313,8 @@ sal_Bool SAL_CALL PasswordContainer::isDefaultMasterPasswordUsed()
+ if ( !m_pStorageFile )
+ throw uno::RuntimeException();
+
+- OUString aEncodedMP;
+- return ( m_pStorageFile->useStorage() && m_pStorageFile->getEncodedMP( aEncodedMP ) && aEncodedMP.isEmpty() );
++ OUString aEncodedMP, aEncodedMPIV;
++ return ( m_pStorageFile->useStorage() && m_pStorageFile->getEncodedMP( aEncodedMP, aEncodedMPIV ) && aEncodedMP.isEmpty() );
+ }
+
+
+diff --git a/svl/source/passwordcontainer/passwordcontainer.hxx b/svl/source/passwordcontainer/passwordcontainer.hxx
+index bf43b5903602..0454437b9dc2 100644
+--- a/svl/source/passwordcontainer/passwordcontainer.hxx
++++ b/svl/source/passwordcontainer/passwordcontainer.hxx
+@@ -34,6 +34,7 @@
+ #include <unotools/configitem.hxx>
+ #include <ucbhelper/interactionrequest.hxx>
+
++#include <rtl/random.h>
+ #include <rtl/ref.hxx>
+ #include <osl/mutex.hxx>
+
+@@ -52,11 +53,12 @@ class NamePassRecord
+ ::std::vector< OUString > m_aMemPass;
+
+ // persistent passwords are encrypted in one string
+- bool m_bHasPersPass;
++ bool m_bHasPersPass;
+ OUString m_aPersPass;
++ OUString m_aPersistentIV;
+
+ void InitArrays( bool bHasMemoryList, const ::std::vector< OUString >& aMemoryList,
+- bool bHasPersistentList, const OUString& aPersistentList )
++ bool bHasPersistentList, const OUString& aPersistentList, const OUString& aPersistentIV )
+ {
+ m_bHasMemPass = bHasMemoryList;
+ if ( bHasMemoryList )
+@@ -64,7 +66,10 @@ class NamePassRecord
+
+ m_bHasPersPass = bHasPersistentList;
+ if ( bHasPersistentList )
++ {
+ m_aPersPass = aPersistentList;
++ m_aPersistentIV = aPersistentIV;
++ }
+ }
+
+ public:
+@@ -76,11 +81,12 @@ public:
+ {
+ }
+
+- NamePassRecord( const OUString& aName, const OUString& aPersistentList )
++ NamePassRecord( const OUString& aName, const OUString& aPersistentList, const OUString& aPersistentIV )
+ : m_aName( aName )
+ , m_bHasMemPass( false )
+ , m_bHasPersPass( true )
+ , m_aPersPass( aPersistentList )
++ , m_aPersistentIV( aPersistentIV )
+ {
+ }
+
+@@ -89,7 +95,8 @@ public:
+ , m_bHasMemPass( false )
+ , m_bHasPersPass( false )
+ {
+- InitArrays( aRecord.m_bHasMemPass, aRecord.m_aMemPass, aRecord.m_bHasPersPass, aRecord.m_aPersPass );
++ InitArrays( aRecord.m_bHasMemPass, aRecord.m_aMemPass,
++ aRecord.m_bHasPersPass, aRecord.m_aPersPass, aRecord.m_aPersistentIV );
+ }
+
+ NamePassRecord& operator=( const NamePassRecord& aRecord )
+@@ -100,7 +107,9 @@ public:
+
+ m_aMemPass.clear();
+ m_aPersPass.clear();
+- InitArrays( aRecord.m_bHasMemPass, aRecord.m_aMemPass, aRecord.m_bHasPersPass, aRecord.m_aPersPass );
++ m_aPersistentIV.clear();
++ InitArrays( aRecord.m_bHasMemPass, aRecord.m_aMemPass,
++ aRecord.m_bHasPersPass, aRecord.m_aPersPass, aRecord.m_aPersistentIV );
+ }
+ return *this;
+ }
+@@ -136,15 +145,24 @@ public:
+ return OUString();
+ }
+
++ OUString GetPersistentIV() const
++ {
++ if ( m_bHasPersPass )
++ return m_aPersistentIV;
++
++ return OUString();
++ }
++
+ void SetMemPasswords( const ::std::vector< OUString >& aMemList )
+ {
+ m_aMemPass = aMemList;
+ m_bHasMemPass = true;
+ }
+
+- void SetPersPasswords( const OUString& aPersList )
++ void SetPersPasswords( const OUString& aPersList, const OUString& aPersIV )
+ {
+ m_aPersPass = aPersList;
++ m_aPersistentIV = aPersIV;
+ m_bHasPersPass = true;
+ }
+
+@@ -159,6 +177,7 @@ public:
+ {
+ m_bHasPersPass = false;
+ m_aPersPass.clear();
++ m_aPersistentIV.clear();
+ }
+ }
+
+@@ -182,6 +201,7 @@ private:
+ PasswordContainer* mainCont;
+ bool hasEncoded;
+ OUString mEncoded;
++ OUString mEncodedIV;
+
+ virtual void ImplCommit() override;
+
+@@ -202,8 +222,8 @@ public:
+
+ sal_Int32 getStorageVersion();
+
+- bool getEncodedMP( OUString& aResult );
+- void setEncodedMP( const OUString& aResult, bool bAcceptEmpty = false );
++ bool getEncodedMP( OUString& aResult, OUString& aResultIV );
++ void setEncodedMP( const OUString& aResult, const OUString& aResultIV, bool bAcceptEmpty = false );
+ void setUseStorage( bool bUse );
+ bool useStorage();
+
+@@ -224,6 +244,29 @@ private:
+ css::uno::Reference< css::lang::XComponent > mComponent;
+ SysCredentialsConfig mUrlContainer;
+
++ class RandomPool
++ {
++ private:
++ rtlRandomPool m_aRandomPool;
++ public:
++ RandomPool() : m_aRandomPool(rtl_random_createPool())
++ {
++ }
++ rtlRandomPool get()
++ {
++ return m_aRandomPool;
++ }
++ ~RandomPool()
++ {
++ // Clean up random pool memory
++ rtl_random_destroyPool(m_aRandomPool);
++ }
++ };
++
++ RandomPool mRandomPool;
++
++ OUString createIV();
++
+ /// @throws css::uno::RuntimeException
+ css::uno::Sequence< css::task::UserRecord > CopyToUserRecordSequence(
+ const ::std::vector< NamePassRecord >& original,
+@@ -274,10 +317,10 @@ css::task::UrlRecord find(
+ const css::uno::Reference< css::task::XInteractionHandler >& Handler );
+
+ /// @throws css::uno::RuntimeException
+- static ::std::vector< OUString > DecodePasswords( const OUString& aLine, const OUString& aMasterPassword, css::task::PasswordRequestMode mode );
++ static ::std::vector< OUString > DecodePasswords( const OUString& aLine, const OUString& aIV, const OUString& aMasterPassword, css::task::PasswordRequestMode mode );
+
+ /// @throws css::uno::RuntimeException
+- static OUString EncodePasswords(const std::vector< OUString >& lines, const OUString& aMasterPassword );
++ static OUString EncodePasswords(const std::vector< OUString >& lines, const OUString& aIV, const OUString& aMasterPassword );
+
+ public:
+ PasswordContainer( const css::uno::Reference< css::uno::XComponentContext >& );
+--
+2.37.3
+
diff --git a/0004-CVE-2022-2630-6-7-add-infobar-to-prompt-to-refresh-t.patch b/0004-CVE-2022-2630-6-7-add-infobar-to-prompt-to-refresh-t.patch
new file mode 100644
index 0000000..4e4a905
--- /dev/null
+++ b/0004-CVE-2022-2630-6-7-add-infobar-to-prompt-to-refresh-t.patch
@@ -0,0 +1,113 @@
+From 0aac66b96fcfa7f8c2c265afec59eb4b3f51c131 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Wed, 23 Mar 2022 13:03:30 +0000
+Subject: [PATCH 4/5] CVE-2022-2630[6|7] add infobar to prompt to refresh to
+ replace old format
+
+Change-Id: Id99cbf2b50a4ebf289dae6fc67e22e20afcda35b
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131976
+Tested-by: Jenkins
+Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
+(cherry picked from commit bbd196ff82bda9f66b4ba32a412f10cefe6da60e)
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132307
+Reviewed-by: Sophie Gautier <sophi@libreoffice.org>
+Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
+(cherry picked from commit c5d01b11db3c83cb4a89d3b388d78e20dd3990b5)
+---
+ include/sfx2/strings.hrc | 2 ++
+ include/sfx2/viewfrm.hxx | 1 +
+ sfx2/source/view/viewfrm.cxx | 39 +++++++++++++++++++++++++++++++++++-
+ 3 files changed, 41 insertions(+), 1 deletion(-)
+
+diff --git a/include/sfx2/strings.hrc b/include/sfx2/strings.hrc
+index cb627807d8c8..317dd88061df 100644
+--- a/include/sfx2/strings.hrc
++++ b/include/sfx2/strings.hrc
+@@ -292,6 +292,8 @@
+ #define STR_SIGNATURE_NOTVALIDATED_PARTIAL_OK NC_("STR_SIGNATURE_NOTVALIDATED_PARTIAL_OK", "The certificate could not be validated and the document is only partially signed.")
+ #define STR_SIGNATURE_OK NC_("STR_SIGNATURE_OK", "This document is digitally signed and the signature is valid.")
+ #define STR_SIGNATURE_SHOW NC_("STR_SIGNATURE_SHOW", "Show Signatures")
++#define STR_REFRESH_MASTER_PASSWORD NC_("STR_REFRESH_MASTER_PASSWORD", "The master password is stored in an outdated format, you should refresh it")
++#define STR_REFRESH_PASSWORD NC_("STR_REFRESH_PASSWORD", "Refresh Password")
+
+ #define STR_CLOSE_PANE NC_("STR_CLOSE_PANE", "Close Pane")
+
+diff --git a/include/sfx2/viewfrm.hxx b/include/sfx2/viewfrm.hxx
+index aedd362f8781..dc01c088f1f7 100644
+--- a/include/sfx2/viewfrm.hxx
++++ b/include/sfx2/viewfrm.hxx
+@@ -64,6 +64,7 @@ protected:
+ DECL_LINK(WhatsNewHandler, weld::Button&, void);
+ DECL_LINK(SwitchReadOnlyHandler, weld::Button&, void);
+ DECL_LINK(SignDocumentHandler, weld::Button&, void);
++ DECL_DLLPRIVATE_LINK(RefreshMasterPasswordHdl, weld::Button&, void);
+ SAL_DLLPRIVATE void KillDispatcher_Impl();
+
+ virtual ~SfxViewFrame() override;
+diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx
+index 46a7c4d9dc42..0f90af8bfb34 100644
+--- a/sfx2/source/view/viewfrm.cxx
++++ b/sfx2/source/view/viewfrm.cxx
+@@ -32,7 +32,7 @@
+ #include <com/sun/star/frame/XLoadable.hpp>
+ #include <com/sun/star/frame/XLayoutManager.hpp>
+ #include <com/sun/star/frame/XComponentLoader.hpp>
+-#include <com/sun/star/drawing/XShapes.hpp>
++#include <com/sun/star/task/PasswordContainer.hpp>
+ #include <officecfg/Office/Common.hxx>
+ #include <officecfg/Setup.hxx>
+ #include <toolkit/helper/vclunohelper.hxx>
+@@ -1413,6 +1413,22 @@ void SfxViewFrame::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
+ batch->commit();
+ }
+
++ if (officecfg::Office::Common::Passwords::HasMaster::get() &&
++ officecfg::Office::Common::Passwords::StorageVersion::get() == 0)
++ {
++ // master password stored in deprecated format
++ VclPtr<SfxInfoBarWindow> pOldMasterPasswordInfoBar =
++ AppendInfoBar("oldmasterpassword", "",
++ SfxResId(STR_REFRESH_MASTER_PASSWORD), InfobarType::DANGER, false);
++ if (pOldMasterPasswordInfoBar)
++ {
++ weld::Button& rButton = pOldMasterPasswordInfoBar->addButton();
++ rButton.set_label(SfxResId(STR_REFRESH_PASSWORD));
++ rButton.connect_clicked(LINK(this,
++ SfxViewFrame, RefreshMasterPasswordHdl));
++ }
++ }
++
+ // read-only infobar if necessary
+ const SfxViewShell *pVSh;
+ const SfxShell *pFSh;
+@@ -1561,6 +1577,27 @@ IMPL_LINK_NOARG(SfxViewFrame, SignDocumentHandler, weld::Button&, void)
+ GetDispatcher()->Execute(SID_SIGNATURE);
+ }
+
++IMPL_LINK_NOARG(SfxViewFrame, RefreshMasterPasswordHdl, weld::Button&, void)
++{
++ bool bChanged = false;
++ try
++ {
++ Reference< task::XPasswordContainer2 > xMasterPasswd(
++ task::PasswordContainer::create(comphelper::getProcessComponentContext()));
++
++ css::uno::Reference<css::frame::XFrame> xFrame = GetFrame().GetFrameInterface();
++ css::uno::Reference<css::awt::XWindow> xContainerWindow = xFrame->getContainerWindow();
++
++ uno::Reference<task::XInteractionHandler> xTmpHandler(task::InteractionHandler::createWithParent(comphelper::getProcessComponentContext(),
++ xContainerWindow));
++ bChanged = xMasterPasswd->changeMasterPassword(xTmpHandler);
++ }
++ catch (const Exception&)
++ {}
++ if (bChanged)
++ RemoveInfoBar(u"oldmasterpassword");
++}
++
+ void SfxViewFrame::Construct_Impl( SfxObjectShell *pObjSh )
+ {
+ m_pImpl->bResizeInToOut = true;
+--
+2.37.3
+
diff --git a/gpgkey-C2839ECAD9408FBE9531C3E9F434A1EFAFEEAEA3.gpg.asc b/gpgkey-C2839ECAD9408FBE9531C3E9F434A1EFAFEEAEA3.gpg.asc
new file mode 100644
index 0000000..5f4f64d
--- /dev/null
+++ b/gpgkey-C2839ECAD9408FBE9531C3E9F434A1EFAFEEAEA3.gpg.asc
@@ -0,0 +1,51 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBEyzEr0BEADT441wUITsTwDA2nM3kmUhGrzTdxZB5xv/E1ZJCw63qWdmdTdW
+NZDfNDuLs4r2VjlEoA3xGK6jgnQvyAoNj0yiEbW/JedHHgOiVdXDlkgkY58myafT
+FXqDLzTXVrsNnay0GS8XrNjptZJPhEPBvNUdkqpA9B7RTkfaXj779Pf/AeFMZVLl
+UAci5RA0NNF910GHwoXT6SEv2PGoawsphnfmMVdKh9wz7asbtKXEmotCwX3k045x
+LsIVK5ANOi+BI9C3LkrrFJWw2XHqDW2ulwCJ0L5QNSjOuY/v8REODwIXamvvdZOz
+XBKSIzDOalJqFCHls3YlGyFw1knr6BAOmVOm32YtNTCLbVA/iK55fZWnUCjD3a4G
+xz4qpQYWfpxhOmlHpk5JkraSNHzCc7SB43DwcHF5ecXHttMhO8MoN/bAZBgCuLGF
+EwNvwFbDwIWo07mlv7wD8i1rtUCvLywJc5YL2PbjCLfB1Q4YzDX1EWnjKdnAsxxK
+ftrx1DFlxzUF+TaHbLTPttUcsWQaL8wITznoWIwdIWlo2woPgWIpUXMOYwYV31Oo
+fgmroHa3V4NOvkke09uhaZawg5yZCoRFohhfKPqT1ZrJ9SnRbW/WR3VTVY76ht5k
+RuV3eb2VWBmPU9zn56Tbe6dvFkBuzHH1JdECAqy1BzFcmQQFBebFzf1XAQARAQAB
+tEhMaWJyZU9mZmljZSBCdWlsZCBUZWFtIChDT0RFIFNJR05JTkcgS0VZKSA8YnVp
+bGRAZG9jdW1lbnRmb3VuZGF0aW9uLm9yZz6JAjcEEwEKACEFAkyzEr0CGwMFCwkI
+BwMFFQoJCAsFFgIDAQACHgECF4AACgkQ9DSh76/urqOc4w//X+74QlyRalcuLNw3
+oJKB1+1z6xxhhpwg1kw5cMMrGu0w0YoPvLDKaiS02DdkIaXDECcQTOoEh7/bYbZq
+6OtE1WyxqHYYOPK5yul5FRwZ5k5HZ7pDFcKCQ72UgWhz+QznRhgZ0jwEWl5Ln3rw
+JpSynIvTXHmQogId0xmcrNQPyckzzugGx4qZFinSOmDGwTgG14NU3vat2iek37Ph
+BLh5V8ohlEoccwwPejtKEWQudg0Q8K7uBuqLUhnJoZodEytqpOvtysuPtGxGXnmD
+7oXtBVEF3X6eFRXDIp81cx2isHK4Krf4z4T9KUimNLHjWRa+ZQtp2pZLHQlblfsn
+CUf6TYZ0Yi909EhcM/hxAgBZXellOCQ/8U2cJsTUyN5Dp1wbf6X0uK4uaed1/037
+EGLAO6PP6WQz6jWd1/hhsQ5oAmdjkzlMFEfKNeIIDuKMOjXcTvM8/KRXhufwICvS
+FBlSIveHfDFWCvOVgq0VjAY7NFMFKRUnRHB58qBamtyhOyscRIvT5QH8HYfUA/YN
+l9FguczYUIQi3t+H1hoHIywdtmRuhYx5WlIUe8FO9QD5RMPbBjVbkCYgdHdxgnJD
+KCoRGsoKlLB7UZc4Ak9j6plZbYtFRonm2MjU4zxblCFNuEqVQ0V/y6/OIGpBYF9Y
+aEAtTgEJd9OmmDCM3d8O0zZHYma5Ag0ETLMSvQEQAMDp0HxSDWd+2Od/aJutCMFe
+8tfw7+nP9gfHOCUqesb88QvRMJgVY6z1aNdMllxTKlsxUiuA6uNcrUAkzDp/qRWR
+58rWIO642PLifng3urJ1cDbSKC+K4RHpQC+hXllMKLqq8dwNy1LO4fPo9SdtUF4B
+ev6enKmo4yCiOGv2tvztPh9gMGYoDncaOsS0t2UPr2MMQIVUmmIzfJBkdOxbZiWO
+doeNbWsYJHQaO+Ahal6SjPHKzhdjeXhZzHl1vqeDkV4MXHprrOwXNXwPiEpkZe2O
+dc7yaMkQc0k8WRrfKHApbnwDx6Mi8HYaf+LvRq7P0eMO9osD1q44wQQvVzk199zp
+MMHS5/kAv7RBNmDOSJQIZ4zT4lzRDODjMf01Ljn02zon12GfJo0WbbpmLulta7uj
+HgMrUU54by8WPFGW0fljXiDX0EpkHhxUsUsfaNfBsFnE+sRxQjNF/ljvofkyApI2
+1OjtEa9krwvgDqaXsL+a2076OsoFpORlTZ30REb0eRS6rEt8M+7s4xTaA7GFxlY/
+N+bnaM8m+ItygfFHHW4H0wLbbgajDeooSTgaheVNF5V9HS0EkN4MNVvtJH7J6drd
+iR1QVhX87n7+JtQzTtCOyfeKjaB+kcbAm/2VOFOeHdig5+BygpXt3IixVq72xmGz
+h0jhY565MjXrqg5O3pvLABEBAAGJAh8EGAEKAAkFAkyzEr0CGwwACgkQ9DSh76/u
+rqPaeg//avI2/a94XlSYtSZb2hVdW3qa9AEypQurqtVrKJfEKFV+ZQBPXbPRy8Mz
+5LMEH1sfD6B4SVGIGJ8opSyieJkcKIke+GMekTWvSqDpFOgY2rw7eHNn/33ZJs3O
+zQOyWz8smE/AIM/5lyiVGuSlU7RjYncf1V9bIBc91q9Edqk4IYUo/7W+yafC0VW/
+8oHUFYjHNaujiOsEoLiXsh9Y0R/6Jxs6fvE4XbCANV/ecN5UX+9BBrNZNN/9GbNr
+6CYGZ57M2f1Pgywy/XvOnEPnJ8aWXUyGLqq34KvMPFPSOeAmFbkFEsB4mdDMFaDw
+rzziiZE/zS8/nKiH4X2JgmLgFsadEihdfYxeDcGbhREK/qA1f3bGnr1j05V07yko
+2FFZdiOr4OgiT5ymgwVUXQ2Aiz+J/C8URjfpcPxetmuDQT9AYfgmMKPNVXPFWuNQ
+dzN5GZbI+E1/cb5+uLNknvjngw2G4PR/4uPHX1HCSftlNawBqWzyun1k+B7/u3Oe
+FebWXcdqSmZuLQ7l0Pkuz/Nlp6M6cKpceL+9zCgaiR5+v9h94VvtXKd/mw9ZLACc
+VcOANiwCtsJP3lt7jRSHtkuUe6vUm5tLS582RfXxoI1BlPjNtG9xAQ3JKBHIXbal
+T18pAFO3t74cxg3h0iI1G51F3oL0DwILP2MBBmardVEp5CMnB/M=
+=1iQB
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/libreoffice-7.1.8.1.tar.xz.asc b/libreoffice-7.1.8.1.tar.xz.asc
new file mode 100644
index 0000000..a2b0514
--- /dev/null
+++ b/libreoffice-7.1.8.1.tar.xz.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmGqk2oACgkQ9DSh76/u
+rqPr6A//ViToQECHwnSk30IjrjyAP516Cgad9cONe+vz1bSLAo7urIAOwLSFot+T
+CjRFvKIvMRt4m2pPiBQTfEAIqq4rWur4jP/5SDRz4oAdrZUNGztJp+MKeLtH3yxR
+DyWbGxtr+XoC2c5wbWmL8SPSRXoZQAdnxqb/ie4Em3DVmSohCLkMeTBMxd5vagDz
+jJsCv31SyGhMEkZy8TD903u9CDlwTc5heD4LL7iIX6XIozzhvywPhj8qF+8F0mj3
+KJQBhJFoWJRYjb0Vi8pnnXpE/1USzaHtcLB3jkg5SwbrC0EzDxWBsLZiAbNA6jAk
+RUch2zhzXoI/hyMKEG/pw2FdcvndDtnClYnszcx/hVBlS+35ZkLSp9SklUydj2Hg
+/Xed86J+BY+IOIgiMHi2Vr8CDgzK3ZTYhqiFeKGqtf8Vxf6PcpJy2OYus56nCD9j
+pyLyczwRPvlsXxiWY0kPLvOE4h7zYCw+vLlwH6VSSxEsD7G+vzFS2xt9l0z6SdhX
+xDZF9V08TLpcWJ8/IkUdRutoOMazghOrfL97YjUjnWOVIxAAXA1EPietDLQPdcbB
++tCOqSqXaEkrM5dvZo07p3mEZjv1KxhWqtjE3DsyqKBfHt6d5j/q61+9/87uJxNT
+Rgh1MLAxbeo6E2iwp3kmOS5NLfxXkRjTIKzqnxr02nXXOMXSOo0=
+=I1bc
+-----END PGP SIGNATURE-----
diff --git a/libreoffice-base-symbolic.svg b/libreoffice-base-symbolic.svg
new file mode 100644
index 0000000..16f3cef
--- /dev/null
+++ b/libreoffice-base-symbolic.svg
@@ -0,0 +1,27 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='libreoffice-base-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.2 r9819' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
+ <metadata id='metadata90'>
+ <rdf:RDF>
+ <cc:Work rdf:about=''>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
+ <dc:title>Gnome Symbolic Icon Theme</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer9' inkscape:cx='-65.007495' inkscape:cy='2.627089' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#555753' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='false' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='true' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1381' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='1600' inkscape:window-y='27' inkscape:zoom='22.627417'>
+ <inkscape:grid empspacing='2' enabled='true' id='grid4866' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
+ </sodipodi:namedview>
+ <title id='title9167'>Gnome Symbolic Icon Theme</title>
+ <defs id='defs7386'/>
+ <g inkscape:groupmode='layer' id='layer9' inkscape:label='apps' style='display:inline' transform='translate(-143.00018,-195)'>
+
+ <path inkscape:connector-curvature='0' d='m 154.28125,195.00525 c -0.27821,0.0752 -0.37465,0.49932 -0.15625,0.68727 l 3.1875,3.18646 c 0.21982,0.23021 0.69212,0.0371 0.6875,-0.28116 l 0,-3.21769 c -0.0122,-0.20318 -0.20269,-0.37897 -0.40625,-0.37488 l -3.1875,0 c -0.0413,-0.007 -0.0837,-0.007 -0.125,0 z' id='path18821' sodipodi:nodetypes='cccccccc' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.79782361px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans'/>
+ <path inkscape:connector-curvature='0' d='m 144.84395,195.00525 c -0.4813,0.0874 -0.85238,0.53322 -0.84375,0.99967 l 0,13.99541 c 6e-5,0.52341 0.51276,0.99962 1.0625,0.99967 l 11.875,0 c 0.54975,-5e-5 1.06245,-0.47626 1.0625,-0.99967 l -0.0312,-7.59126 c 0.006,-0.26397 -0.0884,-0.52879 -0.28125,-0.71852 l -6.40625,-6.40414 c -0.19927,-0.18364 -0.47275,-0.28728 -0.75,-0.28116 l -5.46875,0 c -0.0654,-0.006 -0.15331,-0.006 -0.21875,0 z m 1.15625,1.99934 4,0 3.5,3.49885 2.5,2.49918 0,5.99804 -10,0 0,-11.99607 z' id='path18823' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono'/>
+ <path inkscape:connector-curvature='0' d='m 148.03145,203.7172 c 0,0.951 0,0 0,0.951 2.10295,1.09462 4,0 4,0 l 0,-0.951 c 0,0 -2.05961,1.05726 -4,0 z' id='path18853' sodipodi:nodetypes='ccccc' style='fill:#bebebe;fill-opacity:1;stroke:none'/>
+ <path sodipodi:cx='29.633902' sodipodi:cy='5.3320975' d='m 31.999999,5.3320975 a 2.3660977,0.66790265 0 1 1 -4.732195,0 2.3660977,0.66790265 0 1 1 4.732195,0 z' id='path18855' sodipodi:rx='2.3660977' sodipodi:ry='0.66790265' style='fill:#bebebe;fill-opacity:1;stroke:none' transform='matrix(0.84527458,0,0,1.4972236,124.98267,194.01666)' sodipodi:type='arc'/>
+ <path inkscape:connector-curvature='0' d='m 148.03145,205.7172 c 0,0.951 0,0 0,0.951 2.10295,1.09462 4,0 4,0 l 0,-0.951 c 0,0 -2.05961,1.05726 -4,0 z' id='path18864' sodipodi:nodetypes='ccccc' style='fill:#bebebe;fill-opacity:1;stroke:none'/>
+ </g>
+</svg>
diff --git a/libreoffice-calc-symbolic.svg b/libreoffice-calc-symbolic.svg
new file mode 100644
index 0000000..bf56588
--- /dev/null
+++ b/libreoffice-calc-symbolic.svg
@@ -0,0 +1,27 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='libreoffice-calc-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.2 r9819' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
+ <metadata id='metadata90'>
+ <rdf:RDF>
+ <cc:Work rdf:about=''>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
+ <dc:title>Gnome Symbolic Icon Theme</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer9' inkscape:cx='19.52026' inkscape:cy='1.7874' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#555753' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='false' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='true' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1381' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='1600' inkscape:window-y='27' inkscape:zoom='22.627417'>
+ <inkscape:grid empspacing='2' enabled='true' id='grid4866' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
+ </sodipodi:namedview>
+ <title id='title9167'>Gnome Symbolic Icon Theme</title>
+ <defs id='defs7386'/>
+ <g inkscape:groupmode='layer' id='layer9' inkscape:label='apps' style='display:inline' transform='translate(-83.000198,-195)'>
+
+ <path inkscape:connector-curvature='0' d='m 94.28125,195.00525 c -0.27821,0.0752 -0.37465,0.49932 -0.15625,0.68727 l 3.1875,3.18646 c 0.21982,0.23021 0.69212,0.0371 0.6875,-0.28116 l 0,-3.21769 c -0.0122,-0.20318 -0.20269,-0.37897 -0.40625,-0.37488 l -3.1875,0 c -0.0413,-0.007 -0.0837,-0.007 -0.125,0 z' id='path12998' sodipodi:nodetypes='cccccccc' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.79782361px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans'/>
+ <path inkscape:connector-curvature='0' d='m 84.84395,195.00525 c -0.4813,0.0874 -0.85238,0.53322 -0.84375,0.99967 l 0,13.99541 c 6e-5,0.52341 0.51276,0.99962 1.0625,0.99967 l 11.875,0 c 0.54975,-5e-5 1.06245,-0.47626 1.0625,-0.99967 l -0.0312,-7.59126 c 0.006,-0.26397 -0.0884,-0.52879 -0.28125,-0.71852 l -6.40625,-6.40414 c -0.19927,-0.18364 -0.47275,-0.28728 -0.75,-0.28116 l -5.46875,0 c -0.0654,-0.006 -0.15331,-0.006 -0.21875,0 z m 1.15625,1.99934 4,0 3.5,3.49885 2.5,2.49918 0,5.99804 -10,0 0,-11.99607 z' id='path13000' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono'/>
+ <rect height='3' id='rect18593' style='fill:#bebebe;fill-opacity:1;stroke:none' transform='scale(-1,1)' width='1.9999983' x='-89.000198' y='204'/>
+ <rect height='2' id='rect18595' style='fill:#bebebe;fill-opacity:1;stroke:none' width='2.0000017' x='93.000198' y='205'/>
+ <rect height='5' id='rect18597' style='fill:#bebebe;fill-opacity:1;stroke:none' transform='scale(-1,1)' width='2' x='-92.000198' y='202'/>
+ </g>
+</svg>
diff --git a/libreoffice-draw-symbolic.svg b/libreoffice-draw-symbolic.svg
new file mode 100644
index 0000000..7ca94ee
--- /dev/null
+++ b/libreoffice-draw-symbolic.svg
@@ -0,0 +1,26 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='libreoffice-draw-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.2 r9819' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
+ <metadata id='metadata90'>
+ <rdf:RDF>
+ <cc:Work rdf:about=''>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
+ <dc:title>Gnome Symbolic Icon Theme</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer9' inkscape:cx='-45.00751' inkscape:cy='2.627089' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#555753' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='false' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='true' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1381' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='1600' inkscape:window-y='27' inkscape:zoom='22.627417'>
+ <inkscape:grid empspacing='2' enabled='true' id='grid4866' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
+ </sodipodi:namedview>
+ <title id='title9167'>Gnome Symbolic Icon Theme</title>
+ <defs id='defs7386'/>
+ <g inkscape:groupmode='layer' id='layer9' inkscape:label='apps' style='display:inline' transform='translate(-123.0002,-195)'>
+
+ <path inkscape:connector-curvature='0' d='m 134.28125,195.00525 c -0.27821,0.0752 -0.37465,0.49932 -0.15625,0.68727 l 3.1875,3.18646 c 0.21982,0.23021 0.69212,0.0371 0.6875,-0.28116 l 0,-3.21769 c -0.0122,-0.20318 -0.20269,-0.37897 -0.40625,-0.37488 l -3.1875,0 c -0.0413,-0.007 -0.0837,-0.007 -0.125,0 z' id='path18767' sodipodi:nodetypes='cccccccc' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.79782361px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans'/>
+ <path inkscape:connector-curvature='0' d='m 124.84395,195.00525 c -0.4813,0.0874 -0.85238,0.53322 -0.84375,0.99967 l 0,13.99541 c 6e-5,0.52341 0.51276,0.99962 1.0625,0.99967 l 11.875,0 c 0.54975,-5e-5 1.06245,-0.47626 1.0625,-0.99967 l -0.0312,-7.59126 c 0.006,-0.26397 -0.0884,-0.52879 -0.28125,-0.71852 l -6.40625,-6.40414 c -0.19927,-0.18364 -0.47275,-0.28728 -0.75,-0.28116 l -5.46875,0 c -0.0654,-0.006 -0.15331,-0.006 -0.21875,0 z m 1.15625,1.99934 4,0 3.5,3.49885 2.5,2.49918 0,5.99804 -10,0 0,-11.99607 z' id='path18769' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono'/>
+ <path inkscape:connector-curvature='0' d='m 132.0002,203 -3,4 6,0 z' id='path18798' sodipodi:nodetypes='cccc' style='fill:#bebebe;fill-opacity:1;stroke:none'/>
+ <path sodipodi:cx='8.203125' sodipodi:cy='4' d='M 10,4 A 1.7968751,2 0 1 1 6.4062499,4 1.7968751,2 0 1 1 10,4 z' id='path18805' sodipodi:rx='1.7968751' sodipodi:ry='2' style='fill:#bebebe;fill-opacity:1;stroke:none' transform='matrix(1.1130434,0,0,1,119.86977,197)' sodipodi:type='arc'/>
+ </g>
+</svg>
diff --git a/libreoffice-help-7.1.8.1.tar.xz.asc b/libreoffice-help-7.1.8.1.tar.xz.asc
new file mode 100644
index 0000000..54936b8
--- /dev/null
+++ b/libreoffice-help-7.1.8.1.tar.xz.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmGqk3AACgkQ9DSh76/u
+rqPfLA//T1a1rqVsDz3Ozx+EDtqslPvXN4RNHtn6kQOR+0d9JkuA/habErjHzpv3
+pH1OwKo8f+iOE9tWjZpUOIfDUcFSfX/5EyEGTWKqg51H8Eu8rD1OTs11+i/VDoqs
+oSi7I2SrUu0nNfAMcgYK1omYXs5euN/9VySujAMo0n0CHz6bGwyGkObBZSkYYJUa
+oSAxxkrLQRQcYWrPloDxJgsvySZ3gMnrxesZp0WQl2eCBZXEzKf/GJyjdZqrDPzV
+3ClJ952tzqNcrSFzzXK+UduM5heQcXvglL951StimzLgefrR1uDfQ6KD7dnysVdz
+N88EfsLpDMufBoQK8lf5COYiR4Mi4DE81/vqSr/dmZemtZDD49jrrpZGol47nILg
+BkAHqfEmfYXScUIU4w6YYD4ZBmdw+9WctSbXHOuX5z9m6/52LLVuZ62caEW4ZoNg
+W9hv+Okfd6S4MGavZzwMoYuEQXUPhxbFXCDx58G3zO3RrJDpjAeZouqrKjGNTu9G
+bVZPGjiABAcnYVYHFZgJiwO5b93DGDco3+2LvgaodmaBCBBqjLuEekNOqZaKnH7a
+ufcIkDHfZyBvHV8b6ISImmx4xuPSeln8K5RQV+Bz4s2CZapt8lryPZwOvNjLA9EP
+lOy8+Dk3afwaGrwRUcpu16eCRZT6QvHE+bLd7TJd0OWusVBX7Mg=
+=iDHZ
+-----END PGP SIGNATURE-----
diff --git a/libreoffice-impress-symbolic.svg b/libreoffice-impress-symbolic.svg
new file mode 100644
index 0000000..9a16f76
--- /dev/null
+++ b/libreoffice-impress-symbolic.svg
@@ -0,0 +1,25 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='libreoffice-impress-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.2 r9819' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
+ <metadata id='metadata90'>
+ <rdf:RDF>
+ <cc:Work rdf:about=''>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
+ <dc:title>Gnome Symbolic Icon Theme</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer9' inkscape:cx='-25.00751' inkscape:cy='2.627089' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#555753' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='false' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='true' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1381' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='1600' inkscape:window-y='27' inkscape:zoom='22.627417'>
+ <inkscape:grid empspacing='2' enabled='true' id='grid4866' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
+ </sodipodi:namedview>
+ <title id='title9167'>Gnome Symbolic Icon Theme</title>
+ <defs id='defs7386'/>
+ <g inkscape:groupmode='layer' id='layer9' inkscape:label='apps' style='display:inline' transform='translate(-103.0002,-195)'>
+
+ <path inkscape:connector-curvature='0' d='m 114.28125,195.00525 c -0.27821,0.0752 -0.37465,0.49932 -0.15625,0.68727 l 3.1875,3.18646 c 0.21982,0.23021 0.69212,0.0371 0.6875,-0.28116 l 0,-3.21769 c -0.0122,-0.20318 -0.20269,-0.37897 -0.40625,-0.37488 l -3.1875,0 c -0.0413,-0.007 -0.0837,-0.007 -0.125,0 z' id='path18661' sodipodi:nodetypes='cccccccc' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.79782361px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans'/>
+ <path inkscape:connector-curvature='0' d='m 104.84395,195.00525 c -0.4813,0.0874 -0.85238,0.53322 -0.84375,0.99967 l 0,13.99541 c 6e-5,0.52341 0.51276,0.99962 1.0625,0.99967 l 11.875,0 c 0.54975,-5e-5 1.06245,-0.47626 1.0625,-0.99967 l -0.0312,-7.59126 c 0.006,-0.26397 -0.0884,-0.52879 -0.28125,-0.71852 l -6.40625,-6.40414 c -0.19927,-0.18364 -0.47275,-0.28728 -0.75,-0.28116 l -5.46875,0 c -0.0654,-0.006 -0.15331,-0.006 -0.21875,0 z m 1.15625,1.99934 4,0 3.5,3.49885 2.5,2.49918 0,5.99804 -10,0 0,-11.99607 z' id='path18663' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono'/>
+ <path inkscape:connector-curvature='0' d='m 107.5002,203 c -0.277,0 -0.5,0.223 -0.5,0.5 l 0,4 c 0,0.277 0.223,0.5 0.5,0.5 l 7,0 c 0.277,0 0.5,-0.223 0.5,-0.5 l 0,-4 c 0,-0.277 -0.223,-0.5 -0.5,-0.5 l -7,0 z m 1,1 c 0.27614,0 0.5,0.22386 0.5,0.5 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 z m 2,0 3,0 c 0.277,0 0.5,0.223 0.5,0.5 0,0.277 -0.223,0.5 -0.5,0.5 l -3,0 c -0.277,0 -0.5,-0.223 -0.5,-0.5 0,-0.277 0.223,-0.5 0.5,-0.5 z m -2,2 c 0.27614,0 0.5,0.22386 0.5,0.5 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 z m 2,0 3,0 c 0.277,0 0.5,0.223 0.5,0.5 0,0.277 -0.223,0.5 -0.5,0.5 l -3,0 c -0.277,0 -0.5,-0.223 -0.5,-0.5 0,-0.277 0.223,-0.5 0.5,-0.5 z' id='rect18746' style='fill:#bebebe;fill-opacity:1;stroke:none'/>
+ </g>
+</svg>
diff --git a/libreoffice-main-symbolic.svg b/libreoffice-main-symbolic.svg
new file mode 100644
index 0000000..6bd3103
--- /dev/null
+++ b/libreoffice-main-symbolic.svg
@@ -0,0 +1,24 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='libreoffice-main-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.2 r9819' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
+ <metadata id='metadata90'>
+ <rdf:RDF>
+ <cc:Work rdf:about=''>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
+ <dc:title>Gnome Symbolic Icon Theme</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer9' inkscape:cx='34.99249' inkscape:cy='2.627089' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#555753' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='false' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='true' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1381' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='1600' inkscape:window-y='27' inkscape:zoom='22.627417'>
+ <inkscape:grid empspacing='2' enabled='true' id='grid4866' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
+ </sodipodi:namedview>
+ <title id='title9167'>Gnome Symbolic Icon Theme</title>
+ <defs id='defs7386'/>
+ <g inkscape:groupmode='layer' id='layer9' inkscape:label='apps' style='display:inline' transform='translate(-43.000198,-195)'>
+
+ <path inkscape:connector-curvature='0' d='m 54.28125,195.00525 c -0.27821,0.0752 -0.37465,0.49932 -0.15625,0.68727 l 3.1875,3.18646 c 0.21982,0.23021 0.69212,0.0371 0.6875,-0.28116 l 0,-3.21769 c -0.0122,-0.20318 -0.20269,-0.37897 -0.40625,-0.37488 l -3.1875,0 c -0.0413,-0.007 -0.0837,-0.007 -0.125,0 z' id='path6692' sodipodi:nodetypes='cccccccc' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.79782361px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans'/>
+ <path inkscape:connector-curvature='0' d='m 44.84395,195.00525 c -0.4813,0.0874 -0.85238,0.53322 -0.84375,0.99967 l 0,13.99541 c 6e-5,0.52341 0.51276,0.99962 1.0625,0.99967 l 11.875,0 c 0.54975,-5e-5 1.06245,-0.47626 1.0625,-0.99967 l -0.0312,-7.59126 c 0.006,-0.26397 -0.0884,-0.52879 -0.28125,-0.71852 l -6.40625,-6.40414 c -0.19927,-0.18364 -0.47275,-0.28728 -0.75,-0.28116 l -5.46875,0 c -0.0654,-0.006 -0.15331,-0.006 -0.21875,0 z m 1.15625,1.99934 4,0 3.5,3.49885 2.5,2.49918 0,5.99804 -10,0 0,-11.99607 z' id='path14007' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono'/>
+ </g>
+</svg>
diff --git a/libreoffice-math-symbolic.svg b/libreoffice-math-symbolic.svg
new file mode 100644
index 0000000..66cd9e7
--- /dev/null
+++ b/libreoffice-math-symbolic.svg
@@ -0,0 +1,25 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='libreoffice-math-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.2 r9819' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
+ <metadata id='metadata90'>
+ <rdf:RDF>
+ <cc:Work rdf:about=''>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
+ <dc:title>Gnome Symbolic Icon Theme</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer9' inkscape:cx='-85.00751' inkscape:cy='2.627089' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#555753' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='false' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='true' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1381' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='1600' inkscape:window-y='27' inkscape:zoom='22.627417'>
+ <inkscape:grid empspacing='2' enabled='true' id='grid4866' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
+ </sodipodi:namedview>
+ <title id='title9167'>Gnome Symbolic Icon Theme</title>
+ <defs id='defs7386'/>
+ <g inkscape:groupmode='layer' id='layer9' inkscape:label='apps' style='display:inline' transform='translate(-163.0002,-195)'>
+
+ <path inkscape:connector-curvature='0' d='m 174.28125,195.00525 c -0.27821,0.0752 -0.37465,0.49932 -0.15625,0.68727 l 3.1875,3.18646 c 0.21982,0.23021 0.69212,0.0371 0.6875,-0.28116 l 0,-3.21769 c -0.0122,-0.20318 -0.20269,-0.37897 -0.40625,-0.37488 l -3.1875,0 c -0.0413,-0.007 -0.0837,-0.007 -0.125,0 z' id='path18879' sodipodi:nodetypes='cccccccc' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.79782361px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans'/>
+ <path inkscape:connector-curvature='0' d='m 164.84395,195.00525 c -0.4813,0.0874 -0.85238,0.53322 -0.84375,0.99967 l 0,13.99541 c 6e-5,0.52341 0.51276,0.99962 1.0625,0.99967 l 11.875,0 c 0.54975,-5e-5 1.06245,-0.47626 1.0625,-0.99967 l -0.0312,-7.59126 c 0.006,-0.26397 -0.0884,-0.52879 -0.28125,-0.71852 l -6.40625,-6.40414 c -0.19927,-0.18364 -0.47275,-0.28728 -0.75,-0.28116 l -5.46875,0 c -0.0654,-0.006 -0.15331,-0.006 -0.21875,0 z m 1.15625,1.99934 4,0 3.5,3.49885 2.5,2.49918 0,5.99804 -10,0 0,-11.99607 z' id='path18881' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono'/>
+ <path inkscape:connector-curvature='0' d='m 174.0002,201 -2,0 -2,4 -1,-2 -2,0 0,2 1.45956,0 1.54044,3 2.6029,-5 1.3971,0 z' id='rect13006-2' sodipodi:nodetypes='ccccccccccc' style='fill:#bebebe;fill-opacity:1;stroke:none'/>
+ </g>
+</svg>
diff --git a/libreoffice-multiliblauncher.sh b/libreoffice-multiliblauncher.sh
new file mode 100644
index 0000000..05c9d3f
--- /dev/null
+++ b/libreoffice-multiliblauncher.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+OOO_ARCH=$(uname -m)
+case $OOO_ARCH in
+ x86_64 | s390x | sparc64 | aarch64)
+ OOO_LIB_DIR="/usr/lib64"
+ SECONDARY_LIB_DIR="/usr/lib"
+ ;;
+ * )
+ OOO_LIB_DIR="/usr/lib"
+ SECONDARY_LIB_DIR="/usr/lib64"
+ ;;
+esac
+if [ ! -x $OOO_LIB_DIR/BRAND/program/LAUNCHER ]; then
+ OOO_LIB_DIR="$SECONDARY_LIB_DIR"
+fi
+exec $OOO_LIB_DIR/BRAND/program/LAUNCHER "$@"
diff --git a/libreoffice-translations-7.1.8.1.tar.xz.asc b/libreoffice-translations-7.1.8.1.tar.xz.asc
new file mode 100644
index 0000000..089eb26
--- /dev/null
+++ b/libreoffice-translations-7.1.8.1.tar.xz.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmGqk3EACgkQ9DSh76/u
+rqPU8g/8DwKupld+tKgdYYTjrbxn0eKRU8Rj9J94Z6MTr/hgxC+lewywg/ks+D0J
+YFn2Stc95Z52bm9k7dg/sGqJYYXTACiAnvtTWe6jnk9Ze4k/4iMbIoTivnI5C2dU
+M96crGxkFbpEJAEOaMTClckt3cJ0Cfm3s+IHZS6ydjjOnYDv8PaRcOZbbRnzQtuh
+8/vit3Xlp3RN2dxCilgv3JnL4woTCKnWIuL/nBHk606DcFlHYBLsgAQdA/Nbt0hs
+KG2S3PiAgB2hfuoduNV33IfEkCn/nzA1GxGhkv6WLYh/PuCxG0KULsNndrTOD2gU
+Vxyiun+eMk9X/Rh6Pqd7Vn75bttsHEiorScejXRkcZcaM+vyKapHgf2N+ynXDU4k
+amzhaimwroTwt1jFX046NsuFIUY8Ck4xlbWkPv34u/EgZRaKHAX0PhNCZJigTsTM
+vagEyHYvo+WLDk+IxNRVBx5ceTbB8PzNXQc+cyvnoy/RuswqsjaijSrbautiyM2m
+jStUAiOxBKanye8IztJuCSUPNczfi85bZ2PDxuAxytAgfwKpiEvMCJR4lpoOpeW4
+EXuFWzNnpH6j28aro2fQQhZcp4XSxQuxkrjJ5+gtsIxyiCSizVfPzrAYNGAtwrHI
+f9q+sKdmywywUZ6W2LXYL8f3excZddjum9aVm2cmpezy1mXLX/k=
+=a6IV
+-----END PGP SIGNATURE-----
diff --git a/libreoffice-writer-symbolic.svg b/libreoffice-writer-symbolic.svg
new file mode 100644
index 0000000..e97b545
--- /dev/null
+++ b/libreoffice-writer-symbolic.svg
@@ -0,0 +1,28 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='libreoffice-writer-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.2 r9819' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
+ <metadata id='metadata90'>
+ <rdf:RDF>
+ <cc:Work rdf:about=''>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
+ <dc:title>Gnome Symbolic Icon Theme</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer9' inkscape:cx='14.99249' inkscape:cy='2.627089' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#555753' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='false' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='true' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1381' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='1600' inkscape:window-y='27' inkscape:zoom='22.627417'>
+ <inkscape:grid empspacing='2' enabled='true' id='grid4866' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
+ </sodipodi:namedview>
+ <title id='title9167'>Gnome Symbolic Icon Theme</title>
+ <defs id='defs7386'/>
+ <g inkscape:groupmode='layer' id='layer9' inkscape:label='apps' style='display:inline' transform='translate(-63.000198,-195)'>
+
+ <path inkscape:connector-curvature='0' d='m 74.28125,195.00525 c -0.27821,0.0752 -0.37465,0.49932 -0.15625,0.68727 l 3.1875,3.18646 c 0.21982,0.23021 0.69212,0.0371 0.6875,-0.28116 l 0,-3.21769 c -0.0122,-0.20318 -0.20269,-0.37897 -0.40625,-0.37488 l -3.1875,0 c -0.0413,-0.007 -0.0837,-0.007 -0.125,0 z' id='path6699' sodipodi:nodetypes='cccccccc' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.79782361px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans'/>
+ <path inkscape:connector-curvature='0' d='m 64.84395,195.00525 c -0.4813,0.0874 -0.85238,0.53322 -0.84375,0.99967 l 0,13.99541 c 6e-5,0.52341 0.51276,0.99962 1.0625,0.99967 l 11.875,0 c 0.54975,-5e-5 1.06245,-0.47626 1.0625,-0.99967 l -0.0312,-7.59126 c 0.006,-0.26397 -0.0884,-0.52879 -0.28125,-0.71852 l -6.40625,-6.40414 c -0.19927,-0.18364 -0.47275,-0.28728 -0.75,-0.28116 l -5.46875,0 c -0.0654,-0.006 -0.15331,-0.006 -0.21875,0 z m 1.15625,1.99934 4,0 3.5,3.49885 2.5,2.49918 0,5.99804 -10,0 0,-11.99607 z' id='path6701' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono'/>
+ <rect height='0.96875' id='rect12972' style='fill:#bebebe;fill-opacity:1;stroke:none' width='2.9999998' x='68.000198' y='206'/>
+ <rect height='1.0625' id='rect12974' style='fill:#bebebe;fill-opacity:1;stroke:none' width='6' x='68.000198' y='203.96875'/>
+ <rect height='0.96875' id='rect12976' style='fill:#bebebe;fill-opacity:1;stroke:none' width='5' x='68.000198' y='202.03125'/>
+ <rect height='0.96875' id='rect12980' style='fill:#bebebe;fill-opacity:1;stroke:none' width='2.9999983' x='68.000198' y='200.03125'/>
+ </g>
+</svg>
diff --git a/libreoffice.spec b/libreoffice.spec
new file mode 100644
index 0000000..c35834b
--- /dev/null
+++ b/libreoffice.spec
@@ -0,0 +1,4816 @@
+# download path contains version without the last (fourth) digit
+%global libo_version 7.1.8
+# Should contain .alphaX / .betaX, if this is pre-release (actually
+# pre-RC) version. The pre-release string is part of tarball file names,
+# so we need a way to define it easily at one place.
+%global libo_prerelease %{nil}
+# Should contain any suffix of release tarball name, e.g., -buildfix1.
+%global libo_buildfix %{nil}
+# rhbz#715152 state vendor
+%if 0%{?rhel}
+%global vendoroption --with-vendor="Red Hat, Inc."
+%endif
+%if 0%{?fedora}
+%global vendoroption --with-vendor="The Fedora Project"
+%endif
+%global libo_python python3
+%global libo_python_executable %{__python3}
+%global libo_python_sitearch %{python3_sitearch}
+# rhbz#465664 jar-repacking breaks help by reordering META-INF/MANIFEST.MF
+%global __jar_repack %{nil}
+# make it easier to download sources from pre-release site
+%if 0%{?prerelease}
+%global source_url http://dev-builds.libreoffice.org/pre-releases/src
+%else
+%global source_url http://download.documentfoundation.org/libreoffice/src/%{libo_version}
+%endif
+# URL for external projects' tarballs
+%global external_url http://dev-www.libreoffice.org/src
+%global girapiversion 0.1
+
+# get english only and no-langpacks for a faster smoketest build
+# fedpkg compile/install/local/mockbuild does not handle --without ATM,
+# so it is necessary to change this to bcond_with to achieve the same
+# effect
+%bcond_without langpacks
+
+# remove workdir at the end of %%build, to allow build on space-constrained machines
+%ifarch s390 s390x
+%bcond_without smallbuild
+%else
+%bcond_with smallbuild
+%endif
+
+# 'serverconfig' is tuned for non-interactive installs
+%ifarch s390 s390x aarch64
+%bcond_without serverconfig
+%else
+%bcond_with serverconfig
+%endif
+
+# generated by %%langpack definitions
+%global langpack_langs %{nil}
+
+%global bundling_options %{nil}
+
+Summary: Free Software Productivity Suite
+Name: libreoffice
+Epoch: 1
+Version: %{libo_version}.1
+Release: 8%{?libo_prerelease}%{?dist}
+License: (MPLv1.1 or LGPLv3+) and LGPLv3 and LGPLv2+ and BSD and (MPLv1.1 or GPLv2 or LGPLv2 or Netscape) and Public Domain and ASL 2.0 and MPLv2.0 and CC0
+URL: http://www.libreoffice.org/
+
+Source0: %{source_url}/libreoffice-%{version}%{?libo_prerelease}%{?libo_buildfix}.tar.xz
+Source1: %{source_url}/libreoffice-%{version}%{?libo_prerelease}%{?libo_buildfix}.tar.xz.asc
+Source2: %{source_url}/libreoffice-help-%{version}%{?libo_prerelease}%{?libo_buildfix}.tar.xz
+Source3: %{source_url}/libreoffice-help-%{version}%{?libo_prerelease}%{?libo_buildfix}.tar.xz.asc
+Source4: %{source_url}/libreoffice-translations-%{version}%{?libo_prerelease}%{?libo_buildfix}.tar.xz
+Source5: %{source_url}/libreoffice-translations-%{version}%{?libo_prerelease}%{?libo_buildfix}.tar.xz.asc
+Source6: gpgkey-C2839ECAD9408FBE9531C3E9F434A1EFAFEEAEA3.gpg.asc
+Source7: http://dev-www.libreoffice.org/extern/185d60944ea767075d27247c3162b3bc-unowinreg.dll
+Source8: libreoffice-multiliblauncher.sh
+
+Source9: %{external_url}/dtoa-20180411.tgz
+Source10: %{external_url}/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip
+%if 0%{?fedora}
+Source11: %{external_url}/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip
+Source12: %{external_url}/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip
+%endif
+#Unfortunately later versions of hsqldb changed the file format, so if we use a later version we loose
+#backwards compatability.
+Source13: %{external_url}/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
+Source14: %{external_url}/../extern/f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
+%global bundling_options %{?bundling_options} --without-system-hsqldb
+
+Provides: bundled(hsqldb) = 1.8.0
+%if 0%{?fedora}
+Provides: bundled(rhino) = 1.5
+%endif
+Provides: bundled(xsltml) = 2.1.2
+
+# symbolic icons
+Source42: https://raw.githubusercontent.com/gnome-design-team/gnome-icons/master/apps-symbolic/Adwaita/scalable/apps/libreoffice-base-symbolic.svg
+Source43: https://raw.githubusercontent.com/gnome-design-team/gnome-icons/master/apps-symbolic/Adwaita/scalable/apps/libreoffice-calc-symbolic.svg
+Source44: https://raw.githubusercontent.com/gnome-design-team/gnome-icons/master/apps-symbolic/Adwaita/scalable/apps/libreoffice-draw-symbolic.svg
+Source45: https://raw.githubusercontent.com/gnome-design-team/gnome-icons/master/apps-symbolic/Adwaita/scalable/apps/libreoffice-impress-symbolic.svg
+Source46: https://raw.githubusercontent.com/gnome-design-team/gnome-icons/master/apps-symbolic/Adwaita/scalable/apps/libreoffice-main-symbolic.svg
+Source47: https://raw.githubusercontent.com/gnome-design-team/gnome-icons/master/apps-symbolic/Adwaita/scalable/apps/libreoffice-math-symbolic.svg
+Source48: https://raw.githubusercontent.com/gnome-design-team/gnome-icons/master/apps-symbolic/Adwaita/scalable/apps/libreoffice-writer-symbolic.svg
+
+# build tools
+BuildRequires: autoconf
+BuildRequires: automake
+BuildRequires: bc
+BuildRequires: binutils
+BuildRequires: bison
+BuildRequires: desktop-file-utils
+BuildRequires: doxygen
+BuildRequires: findutils
+BuildRequires: flex
+BuildRequires: gcc-c++
+BuildRequires: gettext
+BuildRequires: git
+BuildRequires: gnupg2
+BuildRequires: gperf
+BuildRequires: icu
+BuildRequires: libtool-ltdl-devel
+BuildRequires: make
+BuildRequires: mariadb-connector-c-devel
+BuildRequires: perl(Digest::MD5)
+BuildRequires: perl(base)
+%if 0%{?fedora}
+BuildRequires: glibc-all-langpacks
+BuildRequires: libappstream-glib
+%endif
+BuildRequires: zip
+
+# libs / headers - common
+BuildRequires: %{libo_python}-devel
+BuildRequires: %{libo_python}-setuptools
+BuildRequires: Box2D-devel
+BuildRequires: boost-devel
+BuildRequires: cups-devel
+BuildRequires: fontpackages-devel
+%if 0%{?fedora}
+BuildRequires: firebird-devel
+BuildRequires: libqrcodegencpp-devel
+%endif
+BuildRequires: glm-devel
+BuildRequires: hyphen-devel
+BuildRequires: libjpeg-turbo-devel
+BuildRequires: lpsolve-devel
+BuildRequires: openldap-devel
+BuildRequires: pam-devel
+BuildRequires: pkgconfig(bluez)
+BuildRequires: pkgconfig(dbus-glib-1)
+BuildRequires: pkgconfig(dconf)
+BuildRequires: pkgconfig(epoxy)
+BuildRequires: pkgconfig(evolution-data-server-1.2)
+BuildRequires: pkgconfig(expat)
+BuildRequires: pkgconfig(freetype2)
+BuildRequires: pkgconfig(gobject-introspection-1.0)
+BuildRequires: pkgconfig(gstreamer-1.0)
+BuildRequires: pkgconfig(gstreamer-plugins-base-1.0)
+BuildRequires: pkgconfig(gtk+-3.0)
+BuildRequires: pkgconfig(hunspell)
+BuildRequires: pkgconfig(ice)
+BuildRequires: pkgconfig(icu-i18n)
+BuildRequires: pkgconfig(lcms2)
+BuildRequires: pkgconfig(libabw-0.1)
+BuildRequires: pkgconfig(libcdr-0.1)
+BuildRequires: pkgconfig(libclucene-core)
+BuildRequires: pkgconfig(libcmis-0.5)
+BuildRequires: pkgconfig(libcurl)
+BuildRequires: pkgconfig(libetonyek-0.1)
+BuildRequires: pkgconfig(libexttextcat)
+BuildRequires: pkgconfig(libfreehand-0.1)
+BuildRequires: pkgconfig(liblangtag)
+BuildRequires: pkgconfig(libmspub-0.1)
+BuildRequires: pkgconfig(libmwaw-0.3)
+BuildRequires: pkgconfig(libodfgen-0.1)
+BuildRequires: pkgconfig(libpagemaker-0.0)
+BuildRequires: pkgconfig(libpq)
+BuildRequires: pkgconfig(librevenge-0.0)
+BuildRequires: pkgconfig(libstaroffice-0.0)
+BuildRequires: pkgconfig(libvisio-0.1)
+BuildRequires: pkgconfig(libwpd-0.10)
+BuildRequires: pkgconfig(libwpg-0.3)
+BuildRequires: pkgconfig(libwps-0.4)
+BuildRequires: pkgconfig(libxml-2.0)
+BuildRequires: pkgconfig(libxslt)
+BuildRequires: pkgconfig(libzmf-0.0)
+BuildRequires: pkgconfig(mythes)
+BuildRequires: pkgconfig(neon)
+BuildRequires: pkgconfig(nss)
+BuildRequires: pkgconfig(poppler)
+BuildRequires: pkgconfig(poppler-cpp)
+BuildRequires: pkgconfig(redland)
+BuildRequires: pkgconfig(sane-backends)
+BuildRequires: pkgconfig(xext)
+BuildRequires: pkgconfig(xinerama)
+BuildRequires: pkgconfig(xmlsec1-nss)
+BuildRequires: pkgconfig(xt)
+BuildRequires: pkgconfig(zlib)
+BuildRequires: unixODBC-devel
+BuildRequires: %{libo_python_executable}
+
+# libs / headers - conditional
+%if 0%{?fedora}
+BuildRequires: pkgconfig(libe-book-0.1)
+BuildRequires: qt5-qtbase-devel
+BuildRequires: qt5-qtx11extras-devel
+BuildRequires: kf5-kconfig-devel
+BuildRequires: kf5-kcoreaddons-devel
+BuildRequires: kf5-kdelibs4support-devel
+BuildRequires: kf5-ki18n-devel
+BuildRequires: kf5-kio-devel
+BuildRequires: kf5-kwindowsystem-devel
+%endif
+
+BuildRequires: gpgmepp-devel
+BuildRequires: pkgconfig(cppunit) >= 1.14.0
+BuildRequires: pkgconfig(graphite2)
+BuildRequires: pkgconfig(harfbuzz)
+BuildRequires: pkgconfig(libeot)
+BuildRequires: pkgconfig(libepubgen-0.1)
+BuildRequires: pkgconfig(libqxp-0.0)
+%if 0%{?fedora} > 33 || 0%{?rhel} > 8
+BuildRequires: pkgconfig(liborcus-0.16)
+%else
+BuildRequires: pkgconfig(liborcus-0.15)
+%endif
+BuildRequires: pkgconfig(mdds-1.5)
+BuildRequires: libnumbertext-devel
+
+# java stuff
+BuildRequires: ant
+%if 0%{?fedora}
+BuildRequires: bsh
+%endif
+BuildRequires: java-devel
+BuildRequires: junit
+BuildRequires: pentaho-reporting-flow-engine
+
+# fonts needed for tests
+BuildRequires: dejavu-sans-fonts
+BuildRequires: google-crosextra-carlito-fonts
+BuildRequires: liberation-mono-fonts
+BuildRequires: liberation-sans-fonts
+BuildRequires: liberation-serif-fonts
+
+Requires: %{name}-writer%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-calc%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-impress%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-draw%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-math%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-base%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-emailmerge%{?_isa} = %{epoch}:%{version}-%{release}
+
+# not upstreamed: upstream wants an automatic restart after a crash; we
+# want a nice abrt report
+Patch0: 0001-don-t-suppress-crashes.patch
+# disable tip-of-the-day dialog by default
+Patch1: 0001-disble-tip-of-the-day-dialog-by-default.patch
+# rhbz#1736810 disable opencl by default again
+Patch2: 0001-Resolves-rhbz-1432468-disable-opencl-by-default.patch
+# backported
+Patch3: 0001-fix-detecting-qrcodegen.patch
+Patch4: 0001-rhbz-1918152-fix-FTBFS.patch
+Patch5: 0001-Get-rid-of-apache-commons-logging.patch
+Patch6: 0001-gtk3-workaround-missing-gdk_threads_enter-calls-in-e.patch
+Patch7: 0001-Replace-inet_ntoa-with-inet_ntop.patch
+Patch8: 0001-Simplify-construction-of-a-hardcoded-IPv4-address.patch
+Patch9: 0001-math.desktop-include-Spreadsheet-category.patch
+Patch10: 0001-rhbz-1980800-allow-convert-to-csv-to-write-each-shee.patch
+Patch11: 0001-make-with-idlc-cpp-cpp-work-for-gcc-cpp-as-a-ucpp-re.patch
+Patch12: 0001-Revert-tdf-101630-gdrive-support-w-oAuth-and-Drive-A.patch
+Patch13: 0001-document-new-shouldn-t-get-prefixed-to-become-libreo.patch
+Patch14: 0001-Resolves-tdf-145567-restore-focus-to-the-usual-frame.patch
+Patch15: 0001-Resolves-tdf-140250-don-t-share-adjustments-between-.patch
+Patch16: 0001-fix-comparison-when-searching-cache.patch
+Patch17: 0001-tdf-121546-sw-don-t-use-undo-array-s-m_pOutlineNodes.patch
+Patch18: 0001-annocheck-warning-about-missing-.note.gnu.property-s.patch
+Patch19: 0001-EditTextObjectImpl-copy-ctor-doesn-t-exactly-copy-Ed.patch
+Patch20: 0001-CVE-2021-25636.patch
+Patch21: 0001-Resolves-rhbz-2081661-gtk-critical-gtk_tree_view_scr.patch
+Patch22: 0001-CVE-2022-26305-compare-authors-using-Thumbprint.patch
+Patch23: 0002-CVE-2022-26307-make-hash-encoding-match-decoding.patch
+Patch24: 0003-CVE-2022-26306-add-Initialization-Vectors-to-passwor.patch
+Patch25: 0004-CVE-2022-2630-6-7-add-infobar-to-prompt-to-refresh-t.patch
+
+# not upstreamed
+Patch500: 0001-disable-libe-book-support.patch
+
+%global instdir %{_libdir}
+%global baseinstdir %{instdir}/libreoffice
+%global sdkinstdir %{baseinstdir}/sdk
+%global datadir %{_datadir}/%{name}
+%global fontname opensymbol
+# HACK: Get the data dir for -data subpackage. I haven't found any better
+# way to do this...
+%global oldname %{name}
+%global name %{name}-data
+%global lodatadocdir %{_pkgdocdir}
+%global name %{oldname}
+
+%if 0%{?__isa_bits} == 64
+%global mark64 ()(64bit)
+%endif
+
+%description
+LibreOffice is an Open Source, community-developed, office productivity suite.
+It includes the key desktop applications, such as a word processor,
+spreadsheet, presentation manager, formula editor and drawing program, with a
+user interface and feature set similar to other office suites. Sophisticated
+and flexible, LibreOffice also works transparently with a variety of file
+formats, including Microsoft Office File Formats.
+
+%package filters
+Summary: All import / export filters
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-calc%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-graphicfilter%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-impress%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-writer%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-xsltfilter%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description filters
+Metapackage to pull in all subpackages that contain import or export
+filters.
+
+%package core
+Summary: Core modules for LibreOffice
+Requires: %{name}-%{fontname}-fonts = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-data = %{epoch}:%{version}-%{release}
+%if ! %{with serverconfig}
+Requires: %{name}-plugin%{?_isa} = %{epoch}:%{version}-%{release}
+%endif
+Requires: liberation-sans-fonts, liberation-serif-fonts, liberation-mono-fonts
+Requires: dejavu-sans-fonts, dejavu-serif-fonts, dejavu-sans-mono-fonts
+Requires: google-crosextra-caladea-fonts, google-crosextra-carlito-fonts
+Requires: %{name}-langpack-en = %{epoch}:%{version}-%{release}
+# rhbz#949106 libreoffice-core drags in both openjdk 1.7.0 and 1.8.0
+Requires: java-headless >= 1:1.6
+Obsoletes: libreoffice-headless < 1:4.4.0.0
+Obsoletes: libreoffice-math-debuginfo < 1:6.4.7.2
+Provides: libreoffice-headless = %{epoch}:%{version}-%{release}
+Provides: libreoffice-headless%{?_isa} = %{epoch}:%{version}-%{release}
+%if 0%{?rhel}
+Obsoletes: libreoffice-bsh < 1:6.2.2.3
+Obsoletes: libreoffice-rhino < 1:6.2.2.3
+%endif
+
+%description core
+The shared core libraries and support files for LibreOffice.
+
+%package pyuno
+Summary: Python support for LibreOffice
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{libo_python_executable}
+
+%description pyuno
+Python bindings for the LibreOffice UNO component model. Allows scripts both
+external to LibreOffice and within the internal LibreOffice scripting framework
+to be written in python.
+
+%package base
+Summary: Database front-end for LibreOffice
+%if 0%{?fedora}
+Requires: firebird
+%endif
+Requires: pentaho-reporting-flow-engine
+Requires: postgresql-jdbc
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-calc%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-data = %{epoch}:%{version}-%{release}
+Requires: %{name}-pyuno%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description base
+GUI database front-end for LibreOffice. Allows creation and management of
+databases through a GUI.
+
+%if 0%{?fedora}
+%package bsh
+Summary: BeanShell support for LibreOffice
+Requires: bsh
+Requires: java >= 1:1.6
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description bsh
+Support BeanShell scripts in LibreOffice.
+
+%package rhino
+Summary: JavaScript support for LibreOffice
+Requires: java >= 1:1.6
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description rhino
+Support JavaScript scripts in LibreOffice.
+%endif
+
+%package officebean
+Summary: JavaBean for LibreOffice Components
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-officebean-common = %{epoch}:%{version}-%{release}
+
+%description officebean
+Allows embedding of LibreOffice documents within the Java environment. It
+provides a Java AWT window into which the backend LibreOffice process draws
+its visual representation
+
+%package officebean-common
+Summary: Common JavaBean for LibreOffice Components
+Requires: %{name}-data = %{epoch}:%{version}-%{release}
+BuildArch: noarch
+
+%description officebean-common
+Arch-independent part of %{name}-officebean.
+
+%package wiki-publisher
+Summary: Create Wiki articles on MediaWiki servers with LibreOffice
+Requires: %{name}-writer%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description wiki-publisher
+The Wiki Publisher enables you to create Wiki articles on MediaWiki servers
+without having to know the syntax of the MediaWiki markup language. Publish
+your new and existing documents transparently with writer to a wiki page.
+
+%package nlpsolver
+Summary: Non-linear solver engine for LibreOffice Calc
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-calc%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description nlpsolver
+A non-linear solver engine for Calc as an alternative to the default linear
+programming model when more complex, nonlinear programming is required.
+
+%package ogltrans
+Summary: 3D OpenGL slide transitions for LibreOffice
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description ogltrans
+OpenGL Transitions enable 3D slide transitions to be used in LibreOffice.
+Requires good quality 3D support for your graphics card for best experience.
+
+%package pdfimport
+Summary: PDF Importer for LibreOffice Draw
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description pdfimport
+The PDF Importer imports PDF into drawing documents to preserve layout
+and enable basic editing of PDF documents.
+
+%package %{fontname}-fonts
+Summary: LibreOffice dingbats font
+Requires: fontpackages-filesystem
+BuildArch: noarch
+
+%description %{fontname}-fonts
+A dingbats font, OpenSymbol, suitable for use by LibreOffice for bullets and
+mathematical symbols.
+
+%package writer
+Summary: LibreOffice Word Processor Application
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-data = %{epoch}:%{version}-%{release}
+Requires: %{name}-pdfimport%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-pyuno%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description writer
+The LibreOffice Word Processor application.
+
+%package emailmerge
+Summary: Email mail-merge component for LibreOffice
+Requires: %{name}-writer%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-pyuno%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description emailmerge
+Enables the LibreOffice writer module to mail-merge to email.
+
+%package calc
+Summary: LibreOffice Spreadsheet Application
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-data = %{epoch}:%{version}-%{release}
+Requires: %{name}-pdfimport%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-pyuno%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description calc
+The LibreOffice Spreadsheet application.
+
+%package draw
+Summary: LibreOffice Drawing Application
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-data = %{epoch}:%{version}-%{release}
+Requires: %{name}-pdfimport%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-pyuno%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-graphicfilter%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description draw
+The LibreOffice Drawing Application.
+
+%package impress
+Summary: LibreOffice Presentation Application
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-data = %{epoch}:%{version}-%{release}
+Requires: %{name}-ogltrans%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-pdfimport%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-pyuno%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-graphicfilter%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description impress
+The LibreOffice Presentation Application.
+
+%package math
+Summary: LibreOffice Equation Editor Application
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-pdfimport%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-pyuno%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description math
+The LibreOffice Equation Editor Application.
+
+%package graphicfilter
+Summary: LibreOffice Extra Graphic filters
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-data = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description graphicfilter
+The graphicfilter module for LibreOffice provides graphic filters, e.g. svg.
+
+%package xsltfilter
+Summary: Optional xsltfilter module for LibreOffice
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description xsltfilter
+The xsltfilter module for LibreOffice, provides additional docbook and
+xhtml export transforms. Install this to enable docbook export.
+
+%package postgresql
+Summary: PostgreSQL connector for LibreOffice
+Requires: %{name}-base%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description postgresql
+A PostgreSQL connector for the database front-end for LibreOffice. Allows
+creation and management of PostgreSQL databases through a GUI.
+
+%package ure
+Summary: UNO Runtime Environment
+#rhbz#1164551 we want to ensure that a libjvm.so of this arch is available
+Requires: %{name}-ure-common = %{epoch}:%{version}-%{release}
+Requires: unzip%{?_isa}, libjvm.so%{?mark64}
+
+%description ure
+UNO is the component model of LibreOffice. UNO offers interoperability between
+programming languages, other components models and hardware architectures,
+either in process or over process boundaries, in the Intranet as well as in the
+Internet. UNO components may be implemented in and accessed from any
+programming language for which a UNO implementation (AKA language binding) and
+an appropriate bridge or adapter exists
+
+%package ure-common
+Summary: Common UNO Runtime Environment
+BuildArch: noarch
+
+%description ure-common
+Arch-independent part of %{name}-ure.
+
+%package sdk
+Summary: Software Development Kit for LibreOffice
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: unzip%{?_isa}, java-devel
+
+%description sdk
+The LibreOffice SDK is an add-on for the LibreOffice office suite. It provides
+the necessary tools for programming using the LibreOffice APIs and for creating
+extensions (UNO components) for LibreOffice. To set the build environment for
+building against the sdk use %{sdkinstdir}/setsdkenv_unix.sh.
+
+%package sdk-doc
+Summary: Software Development Kit documentation for LibreOffice
+
+%description sdk-doc
+This provides documentation for programming using the LibreOffice APIs
+and examples of creating extensions (UNO components) for LibreOffice.
+
+%package glade
+Summary: Support for creating LibreOffice dialogs in glade
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description glade
+%{name}-glade contains a catalog of LibreOffice-specific widgets for
+glade and ui-previewer tool to check the visual appearance of dialogs.
+
+%package librelogo
+Summary: LibreLogo scripting language
+Requires: %{name}-writer%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-pyuno%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description librelogo
+Enables LibreLogo scripting in Writer. LibreLogo is a Logo-like
+programming language with interactive vectorgraphics for education and
+DTP.
+
+%package data
+Summary: LibreOffice data files
+BuildArch: noarch
+
+%description data
+%{name}-data contains platform-independent data files.
+
+%package x11
+Summary: LibreOffice generic X11 support plug-in
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+Provides: %{name}-plugin = %{epoch}:%{version}-%{release}
+Provides: %{name}-plugin%{?_isa} = %{epoch}:%{version}-%{release}
+Supplements: (%{name}-core%{?_isa} and Xserver)
+
+%description x11
+A plug-in for LibreOffice that enables generic X11 support.
+
+%package gtk3
+Summary: LibreOffice GTK+ 3 integration plug-in
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: gstreamer1(element-gtksink)%{?mark64}
+Obsoletes: libreoffice-gtk2 < 1:6.2.0.0
+Obsoletes: libreoffice-gtk2-debuginfo < 1:6.2.0.0
+Supplements: (%{name}-core%{?_isa} and gtk3%{?_isa})
+
+%description gtk3
+A plug-in for LibreOffice that enables integration into GTK+ 3 environment.
+
+%if 0%{?fedora}
+
+%package kf5
+Summary: LibreOffice KDE Frameworks 5 integration plug-in
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
+Provides: %{name}-plugin = %{epoch}:%{version}-%{release}
+Provides: %{name}-plugin%{?_isa} = %{epoch}:%{version}-%{release}
+Obsoletes: libreoffice-kde4 < 1:6.3.0.0
+Obsoletes: libreoffice-kde5 < 1:6.4.7.3
+Obsoletes: libreoffice-kde4-debuginfo < 1:6.3.0.0
+Obsoletes: libreoffice-kde5-debuginfo < 1:6.4.7.3
+Supplements: (%{name}-core%{?_isa} and plasma-workspace)
+
+%description kf5
+A plug-in for LibreOffice that enables integration into the KDE Frameworks 5.
+
+%endif
+
+%package -n libreofficekit
+Summary: A library providing access to LibreOffice functionality
+License: MPLv2.0
+
+%description -n libreofficekit
+LibreOfficeKit can be used to access LibreOffice functionality
+through C/C++, without any need to use UNO.
+
+For now it only offers document conversion (in addition to an
+experimental tiled rendering API).
+
+%package -n libreofficekit-devel
+Summary: Development files for libreofficekit
+Requires: libreofficekit%{?_isa} = %{epoch}:%{version}-%{release}
+License: MPLv2.0
+
+%description -n libreofficekit-devel
+The libreofficekit-devel package contains libraries and header files for
+developing applications that use libreofficekit.
+
+%if 0%{?_enable_debug_packages}
+
+%package gdb-debug-support
+Summary: Additional support for debugging with gdb
+Requires: gdb%{?_isa}
+Requires: %{libo_python}-six
+Requires: libreoffice-core%{?_isa} = %{epoch}:%{version}-%{release}
+Supplements: libreoffice-debuginfo%{?_isa}
+
+%description gdb-debug-support
+This package provides gdb pretty printers for package %{name}.
+
+%files gdb-debug-support
+%{_datadir}/gdb/auto-load%{baseinstdir}
+%{_datadir}/libreoffice/gdb
+
+%endif
+
+%define _langpack_common(Eg:j:l:) \
+%{!-E: \
+%{baseinstdir}/program/resource/%{-g:%{-g*}}%{!-g:%{-l*}}/LC_MESSAGES/*.mo \
+%{baseinstdir}/share/registry/res/registry_%{-l*}.xcd \
+} \
+%{baseinstdir}/share/template/%{-l*} \
+%{baseinstdir}/share/registry/Langpack-%{-l*}.xcd \
+%{baseinstdir}/share/registry/res/fcfg_langpack_%{-l*}.xcd \
+%{baseinstdir}/share/wizards/resources_%{-j:%{-j*}}%{!-j:%{-l*}}.properties \
+%{nil}
+
+# Defines a language pack subpackage.
+#
+# It's necessary to define language code (-l) and language name (-n).
+# Additionally, it's possible
+# * to require autocorr, hunspell, hyphen or mythes package or font for
+# given language,
+# * to provide libreoffice-langpack-loc package, where loc is glibc
+# locale--this is necessary for yum to pick it automatically,
+# * to require other, unrelated, packages,
+# * to specify file serving as file list.
+# For these, lower case character argument takes an argument specifying
+# language, upper case character argument uses language from -l.
+#
+# All remaining arguments are considered to be files and added to the file
+# list.
+#
+# Aa: autocorr dependency
+# c: additional config file (just the name stem)
+# E: base (US English) langpack
+# Ff: font language dependency
+# g: glibc/java locale
+# Hh: hunspell dependency
+# i: additional language added to this package
+# j: java locale for the additional language
+# k: glibc locale for the additional language
+# L: internal (LibreOffice) language code, used in file names
+# l: language code, e.g., cs
+# Mm: mythes dependency
+# n: language name, e.g., Czech
+# p: Provides: of libreoffice-langpack
+# r: comma-separated list of additional requires
+# S:s: script classification (cjk, ctl). -S is only a marker, as it does
+# not add any .xcd into the package (the file does not exist for at
+# least one CTL-using locale, si)
+# T has help files
+# Xx: has autotext definitions
+# Yy: hyphen dependency
+#
+# Example:
+# libreoffice-langpack-cs: langpack for Czech lang. requiring hyphen-cs,
+# autocorr-cs, mythes-cs-CZ and suitable font:
+# %%langpack -l cs -n Czech -H -A -m cs-CZ
+# b de q tu z BCD G IJK N PQR U Z0123456789
+%define langpack(Aa:c:EFf:g:Hh:i:j:k:L:l:Mm:n:p:r:S:s:TXx:Yy:) \
+%define lang %{-l:%{-l*}}%{!-l:%{error:Language code not defined}} \
+%define _langpack_lang %{-L:%{-L*}}%{!-L:%{lang}} \
+%define pkgname langpack-%{lang} \
+%define langname %{-n:%{-n*}}%{!-n:%{error:Language name not defined}} \
+\
+%global langpack_langs %{langpack_langs} %{_langpack_lang} %{-i:%{-i*}} \
+\
+%package %{pkgname} \
+Summary: %{langname} language pack for LibreOffice \
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release} \
+%{-a:Requires: autocorr-%{-a*}}%{!-a:%{-A:Requires: autocorr-%{lang}}} \
+%if 0%{?rhel} && 0%{?rhel} < 9 \
+%{-f:Requires: font(:lang=%{-f*})}%{!-f:%{-F:Requires: font(:lang=%{lang})}} \
+%else \
+%{-f:Recommends: langpacks-%{-f*}}%{!-f:%{-F:Recommends: langpacks-%{lang}}} \
+%endif \
+%{-h:Requires: hunspell-%{-h*}}%{!-h:%{-H:Requires: hunspell-%{lang}}} \
+%{-m:Requires: mythes-%{-m*}}%{!-m:%{-M:Requires: mythes-%{lang}}} \
+%{-y:Requires: hyphen-%{-y*}}%{!-y:%{-Y:Requires: hyphen-%{lang}}} \
+%{-r:Requires: %{-r*}} \
+%{-p:Provides: %{name}-langpack-%{-p*} = %{epoch}:%{version}-%{release}} \
+%{-p:Provides: %{name}-langpack-%{-p*}%{?_isa} = %{epoch}:%{version}-%{release}} \
+%{-p:Supplements: (%{name}-core%{?_isa} and langpacks-%{-p*})} \
+%{!-p:Supplements: (%{name}-core%{?_isa} and langpacks-%{lang})} \
+%if 0%{?rhel} \
+%{-T:Requires: %{name}-help-%{lang}} \
+%else \
+%{-T:Recommends: %{name}-help-%{lang}} \
+%endif \
+\
+%description %{pkgname} \
+Provides additional %{langname} translations and resources for LibreOffice. \
+\
+%{-T: \
+%package help-%{lang} \
+Summary: %{langname} help for LibreOffice \
+Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release} \
+\
+%description help-%{lang} \
+Provides %{langname} help for LibreOffice. \
+\
+%files help-%{lang} \
+%docdir %{baseinstdir}/help/%{_langpack_lang} \
+%{baseinstdir}/help/%{_langpack_lang} \
+} \
+\
+%files %{pkgname} \
+%{expand:%%_langpack_common %{-E} -l %{_langpack_lang} %{-g:-g %{-g*} -j %{-g*}}} \
+%{-x:%{baseinstdir}/share/autotext/%{-x*}}%{!-x:%{-X:%{baseinstdir}/share/autotext/%{_langpack_lang}}} \
+%{-c:%{baseinstdir}/share/registry/%{-c*}.xcd} \
+%{-s:%{baseinstdir}/share/registry/%{-s*}_%{_langpack_lang}.xcd} \
+%{-i:%{expand:%%_langpack_common %{-E} -l %{-i*} %{-k:-g %{-k*}} %{-j:-j %{-j*}}}} \
+%{nil}
+
+# Defines an auto-correction subpackage.
+#
+# i: add autocorrections from additional language
+# l: language code
+# n: language name
+# L the filename does not contain country code
+#
+# All remaining arguments are considered to be files and added to the file
+# list.
+%define autocorr(i:Ll:n:) \
+%define lang %{-l:%{-l*}}%{!-l:%{error:Language code not defined}} \
+%define pkgname autocorr-%{lang} \
+%define langname %{-n:%{-n*}}%{!-n:%{error:Language name not defined}} \
+\
+%package -n %{pkgname} \
+Summary: %{langname} auto-correction rules \
+BuildArch: noarch \
+\
+%description -n %{pkgname} \
+Rules for auto-correcting common %{langname} typing errors. \
+\
+%files -n %{pkgname} \
+%doc instdir/LICENSE \
+%dir %{_datadir}/autocorr \
+%{-L:%{_datadir}/autocorr/acor_%{lang}.dat} \
+%{!-L:%{_datadir}/autocorr/acor_%{lang}-*.dat} \
+%{nil}
+
+%langpack -l en -n English -F -h en-US -Y -M -A -E -L en-US -T -X -g en_US
+
+%if %{with langpacks}
+
+%langpack -l af -n Afrikaans -F -H -Y -A -X
+%langpack -l ar -n Arabic -F -H -s ctl -T -X
+%langpack -l as -n Assamese -F -H -Y -X
+%langpack -l bg -n Bulgarian -F -H -Y -M -A -T -X
+%langpack -l bn -n Bengali -F -H -Y -T -X
+%langpack -l br -n Breton -F -H -X
+%langpack -l ca -n Catalan -F -H -Y -M -A -T -X
+%langpack -l cs -n Czech -F -H -Y -M -A -T -X
+%langpack -l cy -n Welsh -F -H -Y -X
+%langpack -l da -n Danish -F -H -Y -M -A -T -X
+%langpack -l de -n German -F -H -Y -M -A -T -X
+%langpack -l dz -n Dzongkha -F -s ctl -T -X
+%langpack -l el -n Greek -F -H -Y -M -A -T -X
+%langpack -l eo -n Esperanto -F -H -M -T -X
+%langpack -l es -n Spanish -F -H -Y -M -A -T -X
+%langpack -l et -n Estonian -F -H -Y -T -X
+%langpack -l eu -n Basque -F -H -Y -T -X
+%langpack -l fa -n Farsi -A -H -Y -s ctl -X
+%langpack -l fi -n Finnish -F -r libreoffice-voikko -A -T -X
+%langpack -l fr -n French -F -H -Y -M -A -T -X
+%langpack -l fy -n Frisian -F -H -X
+%langpack -l ga -n Irish -F -H -Y -M -A -X
+%langpack -l gl -n Galician -F -H -Y -T -X
+%langpack -l gu -n Gujarati -F -H -Y -s ctl -T -X
+%langpack -l he -n Hebrew -F -H -s ctl -T -X
+%langpack -l hi -n Hindi -F -H -Y -s ctl -T -X
+%langpack -l hr -n Croatian -F -H -Y -A -T -X
+%langpack -l hu -n Hungarian -F -H -Y -M -A -T -X
+%{baseinstdir}/share/wordbook/hu_AkH11.dic
+%langpack -l id -n Indonesian -F -H -Y -T -X
+%langpack -l it -n Italian -F -H -Y -M -A -T -X
+%langpack -l ja -n Japanese -F -A -s cjk -T -X
+%langpack -l kk -n Kazakh -F -H -X
+%langpack -l kn -n Kannada -F -H -Y -X
+%langpack -l ko -n Korean -F -H -A -s cjk -T -X
+%langpack -l lt -n Lithuanian -F -H -Y -A -T -X
+%langpack -l lv -n Latvian -F -H -Y -M -T -X
+%langpack -l mai -n Maithili -F -X
+%langpack -l ml -n Malayalam -F -H -Y -X
+%langpack -l mr -n Marathi -F -H -Y -X
+%langpack -l nb -n Bokmal -F -H -Y -M -T -X
+%langpack -l nl -n Dutch -F -H -Y -M -A -T -X -X
+%langpack -l nn -n Nynorsk -F -H -Y -M -T
+%define langpack_lang Southern Ndebele
+%langpack -l nr -n %{langpack_lang} -F -H -X
+%define langpack_lang Northern Sotho
+%langpack -l nso -n %{langpack_lang} -F -H -X
+%langpack -l or -n Odia -F -H -Y -s ctl -X
+%langpack -l pa -n Punjabi -F -H -Y -s ctl -L pa-IN -g pa_IN -X
+%langpack -l pl -n Polish -F -H -Y -M -A -T -X
+
+%if 0%{?rhel} && 0%{?rhel} < 9
+
+%define langpack_lang Brazilian Portuguese
+%langpack -l pt-BR -n %{langpack_lang} -f pt -h pt -y pt -m pt -a pt -p pt_BR -T -X -g pt_BR
+
+%else
+
+%define langpack_lang Brazilian Portuguese
+%langpack -l pt-BR -n %{langpack_lang} -f pt_BR -h pt -y pt -m pt -a pt -p pt_BR -T -X -g pt_BR
+
+%endif
+
+%langpack -l pt-PT -n Portuguese -f pt -h pt -y pt -m pt -a pt -p pt_PT -T -L pt -x pt
+%langpack -l ro -n Romanian -A -F -H -Y -M -T -X
+%langpack -l ru -n Russian -F -H -Y -M -A -T -X
+%langpack -l si -n Sinhalese -F -H -S ctl -T -X
+%langpack -l sk -n Slovak -F -H -Y -M -A -T -X
+%langpack -l sl -n Slovenian -F -H -Y -M -A -T -X
+%{baseinstdir}/share/wordbook/sl.dic
+
+#rhbz#452379 clump serbian translations together
+%langpack -l sr -n Serbian -F -H -Y -A -i sr-Latn -k sr@latin -j sr_Latn -x sr*
+%langpack -l ss -n Swati -F -H -X
+%define langpack_lang Southern Sotho
+# note that langpacks-st seems to be missing as of the time of writing, so no -F here
+%langpack -l st -n %{langpack_lang} -H -X
+%langpack -l sv -n Swedish -F -H -Y -M -A -T -X
+%langpack -l ta -n Tamil -F -H -Y -s ctl -T -X
+%langpack -l te -n Telugu -F -H -Y -X
+%langpack -l th -n Thai -F -H -s ctl -c ctlseqcheck_th -X
+%langpack -l tn -n Tswana -F -H -X
+%langpack -l tr -n Turkish -F -A -T -X
+%langpack -l ts -n Tsonga -F -H -X
+%langpack -l uk -n Ukrainian -F -H -Y -M -T -X
+%langpack -l ve -n Venda -F -H -X
+%langpack -l xh -n Xhosa -F -H -X
+
+%if 0%{?rhel} && 0%{?rhel} < 9
+
+%define langpack_lang Simplified Chinese
+%langpack -l zh-Hans -n %{langpack_lang} -f zh-cn -a zh -p zh_CN -s cjk -T -L zh-CN -x zh-CN -g zh_CN
+
+%define langpack_lang Traditional Chinese
+%langpack -l zh-Hant -n %{langpack_lang} -f zh-tw -a zh -p zh_TW -s cjk -T -L zh-TW -x zh-TW -g zh_TW
+
+%else
+
+%define langpack_lang Simplified Chinese
+%langpack -l zh-Hans -n %{langpack_lang} -f zh_CN -a zh -p zh_CN -s cjk -T -L zh-CN -x zh-CN -g zh_CN
+
+%define langpack_lang Traditional Chinese
+%langpack -l zh-Hant -n %{langpack_lang} -f zh_TW -a zh -p zh_TW -s cjk -T -L zh-TW -x zh-TW -g zh_TW
+
+%endif
+
+%langpack -l zu -n Zulu -F -H -Y -X
+%undefine langpack_lang
+
+%endif
+
+%autocorr -l en -n English
+
+%if %{with langpacks}
+
+%autocorr -l af -n Afrikaans
+%autocorr -l bg -n Bulgarian
+%autocorr -l ca -n Catalan
+%autocorr -l cs -n Czech
+%autocorr -l da -n Danish
+%autocorr -l de -n German -L
+%define autocorr_lang Lower Sorbian
+%autocorr -l dsb -n %{autocorr_lang} -L
+%autocorr -l el -n Greek
+%autocorr -l es -n Spanish -L
+%autocorr -l fa -n Farsi
+%autocorr -l fi -n Finnish
+%autocorr -l fr -n French -L
+%autocorr -l ga -n Irish
+%autocorr -l hr -n Croatian
+%define autocorr_lang Upper Sorbian
+%autocorr -l hsb -n %{autocorr_lang} -L
+%autocorr -l hu -n Hungarian
+%autocorr -l is -n Icelandic
+%autocorr -l it -n Italian -L
+%autocorr -l ja -n Japanese
+%autocorr -l ko -n Korean
+%autocorr -l lb -n Luxembourgish
+%autocorr -l lt -n Lithuanian
+%autocorr -l mn -n Mongolian
+%autocorr -l nl -n Dutch
+%autocorr -l pl -n Polish
+%autocorr -l pt -n Portuguese
+%autocorr -l ro -n Romanian
+%autocorr -l ru -n Russian
+%autocorr -l sk -n Slovak
+%autocorr -l sl -n Slovenian
+%autocorr -l sr -n Serbian
+%autocorr -l sv -n Swedish
+%autocorr -l tr -n Turkish
+%autocorr -l vi -n Vietnamese
+%autocorr -l vro -n Võro
+%autocorr -l zh -n Chinese
+
+%endif
+
+%define make_autocorr_aliases(l:) \
+%{?-l: \
+for lang in %{*}; do \
+ ln -sf acor_%{-l*}.dat acor_$lang.dat \
+done \
+} \
+%{!?-l:%{error:-l must be present}}
+
+%prep
+# verify tarballs
+gpg2 --dearmor < %{SOURCE6} > keyring.gpg
+gpgv2 --keyring ./keyring.gpg %{SOURCE1} %{SOURCE0}
+gpgv2 --keyring ./keyring.gpg %{SOURCE3} %{SOURCE2}
+gpgv2 --keyring ./keyring.gpg %{SOURCE5} %{SOURCE4}
+
+%setup -q -n %{name}-%{version}%{?libo_prerelease} -b 2 -b 4
+rm -rf git-hooks */git-hooks
+
+# This is normally done by %%autosetup -S git_am,
+# but that does not work with multiple -b options, so we use plain %%setup above
+%global __scm git_am
+%__scm_setup_git_am
+
+#Customize Palette to add Red Hat colours
+(head -n -1 extras/source/palettes/standard.soc && \
+ echo -e ' <draw:color draw:name="Red Hat 1" draw:color="#cc0000"/>
+ <draw:color draw:name="Red Hat 2" draw:color="#0093d9"/>
+ <draw:color draw:name="Red Hat 3" draw:color="#ff8d00"/>
+ <draw:color draw:name="Red Hat 4" draw:color="#abb400"/>
+ <draw:color draw:name="Red Hat 5" draw:color="#4e376b"/>' && \
+ tail -n 1 extras/source/palettes/standard.soc) > redhat.soc
+mv -f redhat.soc extras/source/palettes/standard.soc
+git commit -q -a -m 'add Red Hat colors to palette'
+
+# apply patches
+%autopatch -M 99
+%if 0%{?rhel}
+%apply_patch -q %{PATCH500}
+%endif
+
+sed -i -e /CppunitTest_sc_array_functions_test/d sc/Module_sc.mk # ppc64le
+sed -i -e /CppunitTest_sc_addin_functions_test/d sc/Module_sc.mk # aarch64/ppc64*/s390x
+sed -i -e /CppunitTest_sc_financial_functions_test/d sc/Module_sc.mk # ppc64*
+sed -i -e /CppunitTest_sc_statistical_functions_test/d sc/Module_sc.mk # aarch64/ppc64*
+sed -i -e /CppunitTest_dbaccess_hsqldb_test/d dbaccess/Module_dbaccess.mk # ppc64le
+sed -i -e s/CppunitTest_dbaccess_RowSetClones// dbaccess/Module_dbaccess.mk # ppc64le
+sed -i -e /CppunitTest_xmlsecurity_signing/d xmlsecurity/Module_xmlsecurity.mk
+sed -i -e /CppunitTest_xmlsecurity_pdfsigning/d xmlsecurity/Module_xmlsecurity.mk
+sed -i -e /CppunitTest_sal_osl/d sal/Module_sal.mk
+sed -i -e /CppunitTest_emfio_emf/d emfio/Module_emfio.mk
+%ifarch s390x
+sed -i -e /CppunitTest_dbaccess_hsqlbinary_import/d dbaccess/Module_dbaccess.mk
+sed -i -e /CppunitTest_vcl_svm_test/d vcl/Module_vcl.mk
+sed -i -e /CustomTarget_uno_test/d testtools/Module_testtools.mk
+%endif
+
+git commit -q -a -m 'temporarily disable failing tests'
+
+# Seeing .git dir makes some of the build tools change their behavior.
+# We do not want that. Note: it is still possible to use
+# git --git-dir=.git-rpm
+mv .git .git-rpm
+
+%build
+# path to external tarballs
+EXTSRCDIR=`dirname %{SOURCE0}`
+
+# On i686, CustomTarget_testtools/uno_test from the testsuite fails when LTO is
+# enabled:
+%ifarch i686
+%define _lto_cflags %{nil}
+%endif
+
+#use the RPM_OPT_FLAGS but remove the LibreOffice overridden ones
+for i in $RPM_OPT_FLAGS; do
+ case "$i" in
+ -pipe|-Wall|-Werror*|-fexceptions) continue;;
+ esac
+ ARCH_FLAGS="$ARCH_FLAGS $i"
+done
+%ifarch s390 aarch64
+# these builders typically do not have enough memory to link the big libs with -g2
+ARCH_FLAGS="$ARCH_FLAGS -g1"
+%endif
+export ARCH_FLAGS
+export CFLAGS=$ARCH_FLAGS
+export CXXFLAGS=$ARCH_FLAGS
+
+%if 0%{?rhel}
+%define distrooptions --disable-eot --disable-scripting-beanshell --disable-scripting-javascript --disable-firebird-sdbc --disable-qrcodegen
+%else
+# fedora
+%define distrooptions --enable-eot --enable-kf5
+%endif
+
+%if %{with langpacks}
+%define with_lang --with-lang='%{langpack_langs}'
+%endif
+
+aclocal -I m4
+autoconf
+
+SMP_MFLAGS=%{?_smp_mflags}
+SMP_MFLAGS=$[${SMP_MFLAGS/-j/}]
+
+%if 0%{?flatpak}
+%define flatpakoptions --with-beanshell-jar=/app/share/java/bsh.jar --with-boost-libdir=%{_libdir} --with-external-dict-dir=/app/share/myspell --with-external-hyph-dir=/app/share/hyphen --with-external-thes-dir=/app/share/mythes --with-flute-jar=/app/share/java/flute.jar --with-jdk-home=/app/lib/jvm/java --with-jfreereport-jar=/app/share/java/flow-engine.jar --with-libbase-jar=/app/share/java/libbase.jar --with-libfonts-jar=/app/share/java/libfonts.jar --with-libformula-jar=/app/share/java/libformula.jar --with-liblayout-jar=/app/share/java/liblayout.jar --with-libloader-jar=/app/share/java/libloader.jar --with-librepository-jar=/app/share/java/librepository.jar --with-libserializer-jar=/app/share/java/libserializer.jar --with-libxml-jar=/app/share/java/libxml.jar --with-sac-jar=/app/share/java/sac.jar FIREBIRDCONFIG=%{_libdir}/fb_config QT4INC=%{_includedir}
+%endif
+
+# TODO: enable coinmp?
+# avoid running autogen.sh on make
+touch autogen.lastrun
+%configure \
+ %vendoroption \
+ %{?with_lang} \
+ --with-parallelism=$SMP_MFLAGS \
+ --disable-coinmp \
+ --disable-community-flavor \
+ --disable-fetch-external \
+ --disable-openssl \
+ --disable-pdfium \
+ --disable-skia \
+ --enable-dconf \
+ --enable-evolution2 \
+ --enable-ext-nlpsolver \
+ --enable-ext-wiki-publisher \
+ --enable-gtk3 \
+ --enable-introspection \
+ --enable-release-build \
+ --enable-scripting-beanshell \
+ --enable-scripting-javascript \
+ --enable-symbols \
+ --with-build-version="%{version}-%{release}" \
+ --with-external-dict-dir=/usr/share/myspell \
+ --with-external-tar="$EXTSRCDIR" \
+ --with-help \
+ --with-system-dicts \
+ --with-system-libs \
+ --without-export-validation \
+ --without-fonts \
+ --without-lxml \
+ --with-gdrive-client-secret="GYWrDtzyZQZ0_g5YoBCC6F0I" \
+ --with-gdrive-client-id="457862564325.apps.googleusercontent.com" \
+ --enable-python=system \
+ --with-idlc-cpp=cpp \
+ %{distrooptions} \
+ %{?bundling_options} \
+ %{?archoptions} \
+ %{?flatpakoptions}
+
+make verbose=true build-nocheck
+
+#generate the icons and mime type stuff
+export DESTDIR=../output
+export KDEMAINDIR=/usr
+export GNOMEDIR=/usr
+export GNOME_MIME_THEME=hicolor
+export PREFIXDIR=/usr
+# TODO use empty variables? Should make the renaming hacks in %%install
+# unnecessary.
+. ./bin/get_config_variables PRODUCTVERSIONSHORT PRODUCTVERSION SRCDIR WORKDIR PKG_CONFIG INSTDIR
+pushd $WORKDIR/CustomTarget/sysui/share/libreoffice
+./create_tree.sh
+popd
+mkdir $WORKDIR/os-integration
+cp -pr $WORKDIR/CustomTarget/sysui/share/output/usr/share/* $WORKDIR/os-integration
+cp -pr $WORKDIR/CustomTarget/sysui/share/libreoffice/LOKDocView-%{girapiversion}.* $WORKDIR/os-integration
+
+%if %{with smallbuild}
+# remove the biggest offenders
+# NOTE: not removing complete LinkTarget, as some libs are needed for smoketest
+rm -rf $WORKDIR/CxxObject $WORKDIR/GenCxxObject $WORKDIR/HelpTarget $WORKDIR/LinkTarget/CppunitTest
+%endif
+
+
+%install
+# TODO investigate use of make distro-pack-install
+#figure out the icon version
+. ./bin/get_config_variables PRODUCTVERSIONSHORT PRODUCTVERSION SRCDIR WORKDIR
+export PRODUCTVERSIONSHORT PRODUCTVERSION
+
+# installation
+
+install -m 0755 -d %{buildroot}%{instdir}
+if ! make instsetoo_native PKGFORMAT=installed DISABLE_STRIP=1 EPM=not-used-but-must-be-set; then
+ echo - ---dump log start---
+ cat $WORKDIR/installation/LibreOffice/installed/logging/en-US/log_*_en-US.log
+ echo - ---dump log end---
+ echo - ---dump log start -- SDK---
+ cat $WORKDIR/installation/LibreOffice_SDK/installed/logging/en-US/log_*_en-US.log
+ echo - ---dump log end -- SDK---
+ echo - ---dump log start -- languagepacks---
+ cat $WORKDIR/installation/LibreOffice_languagepack/installed/logging/en-US/log_*_en-US.log
+ echo - ---dump log end -- languagepacks---
+ exit 1
+fi
+install -m 0755 -d %{buildroot}%{baseinstdir}
+mv $WORKDIR/installation/LibreOffice/installed/install/en-US/* %{buildroot}%{baseinstdir}
+%if %{with langpacks}
+for langpack in $WORKDIR/installation/LibreOffice_languagepack/installed/install/*; do
+ [ `basename $langpack` = log ] && continue
+ cp -rp $langpack/* %{buildroot}%{baseinstdir}
+ rm -rf $langpack
+done
+%endif
+mv $WORKDIR/installation/LibreOffice_SDK/installed/install/en-US/sdk %{buildroot}%{sdkinstdir}
+chmod -R +w %{buildroot}%{baseinstdir}
+
+# postprocessing and tweaks
+
+# The installer currently sets UserInstallation to
+# $ORIGIN/../libreoffice/4, which is of course total nonsense. Because I
+# have no inclination to crawl through mountains of perl code to figure out
+# where it comes from, I am just going to replace it by a sensible
+# value here.
+sed -i -e '/UserInstallation/s@\$ORIGIN/..@$SYSUSERCONFIG@' %{buildroot}%{baseinstdir}/program/bootstraprc
+
+#configure sdk
+pushd %{buildroot}%{sdkinstdir}
+ sed -e "s,@OO_SDK_NAME@,sdk," \
+ -e "s,@OO_SDK_HOME@,%{sdkinstdir}," \
+ -e "s,@OFFICE_HOME@,%{baseinstdir}," \
+ -e "s,@OO_SDK_MAKE_HOME@,/usr/bin," \
+ -e "s,@OO_SDK_ZIP_HOME@,/usr/bin," \
+ -e "s,@OO_SDK_CPP_HOME@,/usr/bin," \
+ -e "s,@OO_SDK_CAT_HOME@,/usr/bin," \
+ -e "s,@OO_SDK_SED_HOME@,/usr/bin," \
+ -e "s,@OO_SDK_CC_55_OR_HIGHER@,," \
+ -e "s,@OO_SDK_JAVA_HOME@,$JAVA_HOME," \
+ -e "s,@OO_SDK_OUTPUT_DIR@,\$HOME," \
+ -e "s,@SDK_AUTO_DEPLOYMENT@,NO," \
+ setsdkenv_unix.sh.in > setsdkenv_unix.sh
+ # ensure no unexpanded vars sneaked in
+ grep '@[A_Z0-9_]\+@' setsdkenv_unix.sh && exit 1
+ chmod 755 setsdkenv_unix.sh
+ # we don't want to install the input file
+ rm -f setsdkenv_unix.sh.in
+# TODO: is this still necessary?
+#fix permissions
+ find examples -type f -exec chmod -x {} \;
+popd
+
+#ensure a template dir for each lang
+pushd %{buildroot}%{baseinstdir}/share/template
+for I in %{langpack_langs}; do
+ mkdir -p $I
+done
+popd
+
+#Set some aliases to canonical autocorrect language files for locales with matching languages
+pushd %{buildroot}%{baseinstdir}/share/autocorr
+
+%make_autocorr_aliases -l en-GB en-AG en-AU en-BS en-BW en-BZ en-CA en-DK en-GH en-HK en-IE en-IN en-JM en-NG en-NZ en-SG en-TT
+%make_autocorr_aliases -l en-US en-PH
+#en-ZA exists and has a good autocorrect file with two or three extras that make sense for
+#neighbouring english speaking territories
+%make_autocorr_aliases -l en-ZA en-NA en-ZW
+%if %{with langpacks}
+%make_autocorr_aliases -l af-ZA af-NA
+%make_autocorr_aliases -l nl-NL nl-AW
+%make_autocorr_aliases -l sv-SE sv-FI
+%else
+rm -f acor_[a-df-z]*.dat acor_e[lsu]*.dat
+%endif
+popd
+#rhbz#484055 make these shared across multiple applications
+install -m 0755 -d %{buildroot}%{_datadir}
+mv -f %{buildroot}%{baseinstdir}/share/autocorr %{buildroot}%{_datadir}/autocorr
+chmod 755 %{buildroot}%{_datadir}/autocorr
+ln -s %{_datadir}/autocorr %{buildroot}%{baseinstdir}/share/autocorr
+
+#remove it in case we didn't build with gcj
+rm -f %{buildroot}%{baseinstdir}/program/classes/sandbox.jar
+# we don't need this in the install
+rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
+
+#remove dummy .dat files
+rm -f %{buildroot}%{baseinstdir}/program/root?.dat
+
+#set standard permissions for rpmlint
+find %{buildroot}%{baseinstdir} -exec chmod +w {} \;
+find %{buildroot}%{baseinstdir} -type d -exec chmod 0755 {} \;
+
+# move python bits into site-packages
+install -m 0755 -d %{buildroot}%{libo_python_sitearch}
+pushd %{buildroot}%{libo_python_sitearch}
+echo "import sys, os" > uno.py
+echo "sys.path.append('%{baseinstdir}/program')" >> uno.py
+echo "os.putenv('URE_BOOTSTRAP', 'vnd.sun.star.pathname:%{baseinstdir}/program/fundamentalrc')" >> uno.py
+cat %{buildroot}%{baseinstdir}/program/uno.py >> uno.py
+rm -f %{buildroot}%{baseinstdir}/program/uno.py*
+mv -f %{buildroot}%{baseinstdir}/program/unohelper.py* .
+mv -f %{buildroot}%{baseinstdir}/program/officehelper.py* .
+popd
+
+#https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompilation_phase_3
+%py_byte_compile %{libo_python_executable} %{buildroot}%{baseinstdir}/program
+rm -rf %{buildroot}%{baseinstdir}/program/__pycache__
+
+# rhbz#477435 package opensymbol separately
+pushd %{buildroot}%{baseinstdir}/program/resource/common/fonts
+install -d -m 0755 %{buildroot}%{_fontdir}
+install -p -m 0644 *.ttf %{buildroot}%{_fontdir}
+popd
+rm -rf %{buildroot}%{baseinstdir}/program/resource/common/fonts/*ttf
+rm -rf %{buildroot}%{baseinstdir}/share/fonts/truetype/*.ttf
+
+# move platform-independent data into shared dir
+install -m 0755 -d %{buildroot}%{datadir}
+rm -f %{buildroot}%{baseinstdir}/CREDITS.fodt %{buildroot}%{baseinstdir}/LICENSE* %{buildroot}%{baseinstdir}/NOTICE
+# rhbz#1473749 ensure display of files in license/about dialogs works
+ln -sr %{buildroot}%{lodatadocdir}/CREDITS.fodt %{buildroot}%{baseinstdir}/CREDITS.fodt
+ln -sr %{buildroot}%{lodatadocdir}/LICENSE.html %{buildroot}%{baseinstdir}/LICENSE.html
+
+#ensure that no sneaky un-prelinkable, un-fpic or non executable shared libs
+#have snuck through
+pic=0
+executable=0
+for foo in `find %{buildroot}%{instdir} -name "*" -exec file {} \;| grep ": ELF" | cut -d: -f 1` ; do
+ chmod +wx $foo
+ ls -asl $foo
+ result=`readelf -d $foo | grep TEXTREL` || true
+ if [ "$result" != "" ]; then
+ echo "TEXTREL Warning: $foo is b0rked (-fpic missing)"
+ pic=1
+ fi
+ result=`readelf -l $foo | grep GNU_STACK | grep RWE` || true
+ if [ "$result" != "" ]; then
+ echo "GNU_STACK Warning: $foo is b0rked (-noexecstack missing)"
+ executable=1
+ fi
+done
+if [ $pic == 1 ]; then false; fi
+if [ $executable == 1 ]; then false; fi
+
+#make up some /usr/bin scripts
+install -m 0755 -d %{buildroot}%{_bindir}
+
+pushd %{buildroot}%{_bindir}
+echo \#\!/bin/sh > ooffice
+echo exec libreoffice \"\$@\" >> ooffice
+chmod a+x ooffice
+
+echo \#\!/bin/sh > ooviewdoc
+echo exec libreoffice --view \"\$@\" >> ooviewdoc
+chmod a+x ooviewdoc
+
+for app in base calc draw impress math writer; do
+ echo \#\!/bin/sh > oo$app
+ echo exec libreoffice --$app \"\$@\" >> oo$app
+ chmod a+x oo$app
+done
+
+sed -e s/LAUNCHER/unopkg/g -e s/BRAND/libreoffice/g %{SOURCE8} > unopkg
+chmod a+x unopkg
+
+sed -e s/LAUNCHER/soffice/g -e s/BRAND/libreoffice/g %{SOURCE8} > libreoffice
+chmod a+x libreoffice
+
+%if 0%{?flatpak}
+sed -i -e 's|/usr/lib|/app/lib|g' unopkg libreoffice
+%endif
+
+# rhbz#499474 provide a /usr/bin/soffice for .recently-used.xbel
+ln -s %{baseinstdir}/program/soffice soffice
+# rhbz#499474 provide a /usr/bin/openoffice.org for backwards compat
+ln -s libreoffice openoffice.org
+popd
+
+pushd %{buildroot}%{baseinstdir}/share/xdg/
+chmod u+w *.desktop
+ICONVERSION=`echo $PRODUCTVERSION | sed -e 's/\.//'`
+for file in *.desktop; do
+ # rhbz#156677 remove the version from Name=
+ # rhbz#156067 don't version the icons
+ sed -i -e "s/ *$PRODUCTVERSION//g" \
+ -e "s/$ICONVERSION//g" \
+ -e "s/$PRODUCTVERSIONSHORT//g" \
+ $file
+done
+# rhbz#186515 do not show startcenter
+desktop-file-edit --set-key=NoDisplay --set-value=true startcenter.desktop
+%if %{with serverconfig}
+for app in base calc draw impress math startcenter writer xsltfilter; do
+ desktop-file-edit --set-key=NoDisplay --set-value=true $app.desktop
+done
+%endif
+# relocate the .desktop and icon files
+install -m 0755 -d %{buildroot}%{_datadir}/applications
+for app in base calc draw impress math startcenter writer xsltfilter; do
+ sed -i -e 's/\${UNIXBASISROOTNAME}/%{name}/' $app.desktop
+ desktop-file-validate $app.desktop
+ install -m 0644 -p $app.desktop %{buildroot}%{_datadir}/applications/libreoffice-$app.desktop
+done
+popd
+%if 0%{?flatpak}
+# Transform the libreoffice-*.desktop files into
+# org.libreoffice.LibreOffice.*.desktop ones:
+solenv/bin/assemble-flatpak-desktop.sh %{buildroot}%{_datadir}/applications/ \
+ %{buildroot}%{_datadir}/applications/
+rm %{buildroot}%{_datadir}/applications/libreoffice-*.desktop
+%endif
+
+pushd $WORKDIR/os-integration
+#get rid of the gnome icons and other unneeded files
+rm -rf icons/gnome applications application-registry
+
+#relocate the rest of them
+# rhbz#901346 512x512 icons are not used by anything
+for icon in `find icons -path '*/512x512' -prune -o -type f -print`; do
+ install -m 0755 -d %{buildroot}%{_datadir}/`dirname $icon`
+ install -m 0644 -p $icon %{buildroot}%{_datadir}/`echo $icon | sed -e s@libreoffice$ICONVERSION-@libreoffice-@ | sed -e s@libreoffice$PRODUCTVERSION-@libreoffice-@`
+done
+#add our mime-types, e.g. for .oxt extensions
+install -m 0755 -d %{buildroot}%{_datadir}/mime/packages
+install -m 0644 -p mime/packages/libreoffice$PRODUCTVERSION.xml %{buildroot}%{_datadir}/mime/packages/libreoffice.xml
+
+%if 0%{?fedora}
+# restrict abipkgdiff to shared objects that actually have a stable ABI
+for pkg in core base officebean ogltrans pdfimport calc writer impress graphicfilter postgresql ure pyuno x11 gtk3 kf5 libreofficekit; do
+ cat > %{buildroot}%{baseinstdir}/program/${pkg}.abignore << _EOF
+[suppress_file]
+file_name_not_regexp=.*\.so\.[0-9]+
+_EOF
+done
+%endif
+
+# install LibreOfficeKit
+install -m 0755 -d %{buildroot}%{_libdir}/girepository-1.0
+install -m 0644 -p LOKDocView-%{girapiversion}.typelib %{buildroot}%{_libdir}/girepository-1.0/LOKDocView-%{girapiversion}.typelib
+install -m 0755 -d %{buildroot}%{_libdir}/gir-1.0
+install -m 0644 -p LOKDocView-%{girapiversion}.gir %{buildroot}%{_libdir}/gir-1.0/LOKDocView-%{girapiversion}.gir
+mv %{buildroot}%{baseinstdir}/program/liblibreofficekitgtk.so %{buildroot}%{_libdir}
+popd
+
+# install LibreOfficeKit headers
+install -m 0755 -d %{buildroot}%{_includedir}/LibreOfficeKit
+install -m 0644 -p include/LibreOfficeKit/* %{buildroot}%{_includedir}/LibreOfficeKit
+
+rm -rf %{buildroot}%{baseinstdir}/readmes
+rm -rf %{buildroot}%{baseinstdir}/licenses
+rm -rf %{buildroot}%{baseinstdir}/share/theme_definitions
+
+# to-do, remove this in libreoffice 4.4 when --without-ppds is gone, it'll do the right thing on its own then
+install -m 0755 -d %{buildroot}%{baseinstdir}/share/psprint/driver
+install -m 0644 -p vcl/unx/generic/printer/configuration/ppds/SGENPRT.PS %{buildroot}%{baseinstdir}/share/psprint/driver/SGENPRT.PS
+
+# rhbz#452385 to auto have postgres in classpath if subsequently installed
+sed -i -e "s#URE_MORE_JAVA_CLASSPATH_URLS.*#& file:///usr/share/java/postgresql-jdbc.jar#" %{buildroot}%{baseinstdir}/program/fundamentalrc
+
+# move glade catalog to system glade dir
+install -m 0755 -d %{buildroot}%{_datadir}/glade/catalogs
+mv %{buildroot}%{baseinstdir}/share/glade/libreoffice-catalog.xml %{buildroot}%{_datadir}/glade/catalogs
+install -m 0755 -d %{buildroot}%{_datadir}/glade3/catalogs
+ln -sr %{buildroot}%{_datadir}/glade/catalogs/libreoffice-catalog.xml %{buildroot}%{_datadir}/glade3/catalogs
+
+# rhbz#1049543 install appdata
+install -m 0755 -d %{buildroot}%{_datadir}/metainfo
+install -m 0644 -p sysui/desktop/appstream-appdata/*.appdata.xml %{buildroot}%{_datadir}/metainfo
+
+# rhbz#1215800 install symbolic icons
+install -m 0755 -d %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+install -m 0644 -p %{SOURCE42} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+install -m 0644 -p %{SOURCE43} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+install -m 0644 -p %{SOURCE44} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+install -m 0644 -p %{SOURCE45} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+install -m 0644 -p %{SOURCE46} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+install -m 0644 -p %{SOURCE47} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+install -m 0644 -p %{SOURCE48} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+
+%if 0%{?flatpak}
+# Duplicate icons/*/*/apps/libreoffice-* as
+# icons/*/*/apps/org.libreoffice.LibreOffice.* (so they end up "with both their
+# original libreoffice-* name as well as the org.libreoffice name needed by
+# Flatpak, which fixes the window icons", see <https://github.com/flathub/
+# org.libreoffice.LibreOffice/commit/945f6caad87658b1df1e8918bd5f64939058ab7f>
+# "clean up desktop integration"):
+for i in %{buildroot}%{_datadir}/icons/*/*/apps/libreoffice-*; do
+ cp -a "$i" \
+ "$(dirname "$i")"/org.libreoffice.LibreOffice."${i##*/apps/libreoffice-}"
+done
+%endif
+
+# install man pages
+install -m 0755 -d %{buildroot}%{_mandir}/man1
+install -m 0644 -p sysui/desktop/man/*.1 %{buildroot}%{_mandir}/man1
+for app in oobase oocalc oodraw ooffice ooimpress oomath ooviewdoc oowriter openoffice.org soffice; do
+ echo '.so man1/libreoffice.1' > $app.1
+ install -m 0644 -p $app.1 %{buildroot}%{_mandir}/man1
+done
+
+export DESTDIR=%{buildroot}
+./solenv/bin/install-gdb-printers -a %{_datadir}/gdb/auto-load%{baseinstdir} -c -i %{baseinstdir} -p %{_datadir}/libreoffice/gdb
+
+%if 0%{?fedora}
+# Update the screenshot shown in the software center
+#
+# NOTE: It would be *awesome* if this file was pushed upstream.
+#
+# See http://people.freedesktop.org/~hughsient/appdata/#screenshots for more details.
+#
+appstream-util replace-screenshots %{buildroot}%{_datadir}/metainfo/libreoffice-writer.appdata.xml \
+ https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/libreoffice-writer/a.png \
+ https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/libreoffice-writer/b.png
+appstream-util replace-screenshots %{buildroot}%{_datadir}/metainfo/libreoffice-calc.appdata.xml \
+ https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/libreoffice-calc/a.png
+appstream-util replace-screenshots %{buildroot}%{_datadir}/metainfo/libreoffice-draw.appdata.xml \
+ https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/libreoffice-draw/a.png
+appstream-util replace-screenshots %{buildroot}%{_datadir}/metainfo/libreoffice-impress.appdata.xml \
+ https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/libreoffice-impress/a.png
+%endif
+%if 0%{?flatpak}
+# Assemble the libreoffice-*.appdata.xml files into a single
+# org.libreoffice.LibreOffice.appdata.xml; first create the single file:
+solenv/bin/assemble-flatpak-appdata-step1.sh \
+ %{buildroot}%{_datadir}/metainfo/ 0
+# ...then update the screenshots in the single file (see above):
+appstream-util replace-screenshots \
+ %{buildroot}%{_datadir}/metainfo/org.libreoffice.LibreOffice.appdata.xml \
+ https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/libreoffice-writer/a.png \
+ https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/libreoffice-writer/b.png \
+ https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/libreoffice-calc/a.png \
+ https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/libreoffice-draw/a.png \
+ https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/libreoffice-impress/a.png
+# ...then append the original files to the single file:
+solenv/bin/assemble-flatpak-appdata-step2.sh \
+ %{buildroot}%{_datadir}/metainfo/ %{buildroot}%{_datadir}/metainfo/
+rm %{buildroot}%{_datadir}/metainfo/libreoffice-*.appdata.xml
+%endif
+
+# rhbz#1247399 - move stable API jars to noarch java location
+install -m 0755 -d %{buildroot}%{_javadir}/%{name}
+for jar in %{buildroot}%{baseinstdir}/program/classes/*.jar; do
+ j=`basename $jar`
+ case ${j%.jar} in
+ juh|jurt|libreoffice|ridl|unoloader|unoil|officebean)
+ mv $jar %{buildroot}%{_javadir}/%{name}
+ ln -sr %{buildroot}%{_javadir}/%{name}/$j $jar
+ ;;
+ esac
+done
+
+%check
+make unitcheck slowcheck
+# we don't need this anymore
+rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
+
+%files
+
+%files filters
+
+%files core
+%dir %{baseinstdir}
+%{baseinstdir}/CREDITS.fodt
+%{baseinstdir}/LICENSE.html
+%dir %{baseinstdir}/help
+%{baseinstdir}/help/idxcaption.xsl
+%{baseinstdir}/help/idxcontent.xsl
+%{baseinstdir}/help/main_transform.xsl
+%{baseinstdir}/presets
+%dir %{baseinstdir}/program
+%if 0%{?fedora}
+%{baseinstdir}/program/core.abignore
+%endif
+%{baseinstdir}/program/libbasprovlo.so
+%{baseinstdir}/program/libcairocanvaslo.so
+%{baseinstdir}/program/libcanvasfactorylo.so
+%dir %{baseinstdir}/program/classes
+%{baseinstdir}/program/classes/commonwizards.jar
+%{baseinstdir}/program/classes/form.jar
+%{baseinstdir}/program/classes/query.jar
+%{baseinstdir}/program/classes/report.jar
+%{baseinstdir}/program/classes/ScriptFramework.jar
+%{baseinstdir}/program/classes/ScriptProviderForJava.jar
+%{baseinstdir}/program/classes/table.jar
+%{baseinstdir}/program/classes/unoil.jar
+%{baseinstdir}/program/classes/XMergeBridge.jar
+%{baseinstdir}/program/classes/xmerge.jar
+%{baseinstdir}/program/libcmdmaillo.so
+%{baseinstdir}/program/libdeployment.so
+%{baseinstdir}/program/libdeploymentgui.so
+%{baseinstdir}/program/libdlgprovlo.so
+%{baseinstdir}/program/libexpwraplo.so
+%{baseinstdir}/program/libfps_officelo.so
+%{baseinstdir}/program/gdbtrace
+%{baseinstdir}/program/gengal
+%{baseinstdir}/program/gengal.bin
+%{baseinstdir}/program/libi18nsearchlo.so
+%{baseinstdir}/program/libldapbe2lo.so
+%{baseinstdir}/program/libacclo.so
+%{baseinstdir}/program/libanimcorelo.so
+%{baseinstdir}/program/libavmedia*.so
+%{baseinstdir}/program/libbasctllo.so
+%{baseinstdir}/program/libbiblo.so
+%{baseinstdir}/program/libcached1.so
+%{baseinstdir}/program/libcanvastoolslo.so
+%{baseinstdir}/program/libchart*lo.so
+%{baseinstdir}/program/libclewlo.so
+%{baseinstdir}/program/libcollator_data.so
+%{baseinstdir}/program/libcppcanvaslo.so
+%{baseinstdir}/program/libctllo.so
+%{baseinstdir}/program/libcuilo.so
+%{baseinstdir}/program/libdbalo.so
+%{baseinstdir}/program/libdbahsqllo.so
+%{baseinstdir}/program/libdbaselo.so
+%{baseinstdir}/program/libdbaxmllo.so
+#{baseinstdir}/program/libdbmmlo.so
+%{baseinstdir}/program/libdbpool2.so
+%{baseinstdir}/program/libdbtoolslo.so
+%{baseinstdir}/program/libdbulo.so
+%{baseinstdir}/program/libdeploymentmisclo.so
+%{baseinstdir}/program/libdesktop_detectorlo.so
+%{baseinstdir}/program/libdict_ja.so
+%{baseinstdir}/program/libdict_zh.so
+%{baseinstdir}/program/libdrawinglayerlo.so
+%{baseinstdir}/program/libeditenglo.so
+%{baseinstdir}/program/libembobj.so
+%{baseinstdir}/program/libemboleobj.so
+%{baseinstdir}/program/libemfiolo.so
+%{baseinstdir}/program/libevoab*.so
+%{baseinstdir}/program/libevtattlo.so
+%{baseinstdir}/program/libgielo.so
+%{baseinstdir}/program/libicglo.so
+%{baseinstdir}/program/libindex_data.so
+%{baseinstdir}/program/libfilelo.so
+%{baseinstdir}/program/libfilterconfiglo.so
+%{baseinstdir}/program/libflatlo.so
+%{baseinstdir}/program/libfrmlo.so
+%{baseinstdir}/program/libguesslanglo.so
+%{baseinstdir}/program/libhelplinkerlo.so
+%{baseinstdir}/program/libhyphenlo.so
+%{baseinstdir}/program/libjdbclo.so
+%{baseinstdir}/program/liblnglo.so
+%{baseinstdir}/program/libloglo.so
+%{baseinstdir}/program/liblocaledata_en.so
+%{baseinstdir}/program/liblocaledata_es.so
+%{baseinstdir}/program/liblocaledata_euro.so
+%{baseinstdir}/program/liblocaledata_others.so
+%{baseinstdir}/program/libmorklo.so
+%{baseinstdir}/program/libmozbootstraplo.so
+%{baseinstdir}/program/libmsfilterlo.so
+%{baseinstdir}/program/libmtfrendererlo.so
+%{baseinstdir}/program/libmysql_jdbclo.so
+%{baseinstdir}/program/libmysqlclo.so
+%{baseinstdir}/program/libodbclo.so
+%{baseinstdir}/program/liboglcanvaslo.so
+%{baseinstdir}/program/liboffacclo.so
+%{baseinstdir}/program/libooxlo.so
+%{baseinstdir}/program/libopencllo.so
+%{baseinstdir}/program/libpcrlo.so
+%{baseinstdir}/program/libpdffilterlo.so
+%{baseinstdir}/program/libprotocolhandlerlo.so
+%{baseinstdir}/program/libsaxlo.so
+%{baseinstdir}/program/libscnlo.so
+%{baseinstdir}/program/libscriptframe.so
+%{baseinstdir}/program/libsdlo.so
+%{baseinstdir}/program/libsdfiltlo.so
+%{baseinstdir}/program/libsdbc2.so
+%{baseinstdir}/program/libsdbtlo.so
+%{baseinstdir}/program/libsddlo.so
+%{baseinstdir}/program/libsduilo.so
+%{baseinstdir}/program/libspelllo.so
+%{baseinstdir}/program/libsrtrs1.so
+%{baseinstdir}/program/libstoragefdlo.so
+%{baseinstdir}/program/libsvgiolo.so
+%{baseinstdir}/program/libsvxlo.so
+%{baseinstdir}/program/libsvxcorelo.so
+%{baseinstdir}/program/libswdlo.so
+%{baseinstdir}/program/libswlo.so
+%{baseinstdir}/program/libtextconv_dict.so
+%{baseinstdir}/program/libtextconversiondlgslo.so
+%{baseinstdir}/program/libtextfdlo.so
+%{baseinstdir}/program/libodfflatxmllo.so
+# TODO: shouldn't it have lo suffix?
+%{baseinstdir}/program/libucbhelper.so
+%{baseinstdir}/program/libucpchelp1.so
+%{baseinstdir}/program/libucpdav1.so
+%{baseinstdir}/program/libucpftp1.so
+%{baseinstdir}/program/libucphier1.so
+%{baseinstdir}/program/libucppkg1.so
+%{baseinstdir}/program/libunordflo.so
+%{baseinstdir}/program/libunopkgapp.so
+%{baseinstdir}/program/libunoxmllo.so
+%{baseinstdir}/program/libuuilo.so
+%{baseinstdir}/program/libvbahelperlo.so
+%{baseinstdir}/program/libxmlfalo.so
+%{baseinstdir}/program/libxmlfdlo.so
+%{baseinstdir}/program/libxoflo.so
+%{baseinstdir}/program/libxsec_xmlsec.so
+%{baseinstdir}/program/libxsltdlglo.so
+%{baseinstdir}/program/libxsltfilterlo.so
+%{baseinstdir}/program/libxstor.so
+# TODO how useful this is in Fedora?
+%{baseinstdir}/program/liblosessioninstalllo.so
+%{baseinstdir}/program/libmigrationoo2lo.so
+%{baseinstdir}/program/libmigrationoo3lo.so
+%{baseinstdir}/program/libmsformslo.so
+%{baseinstdir}/program/opencl
+%dir %{baseinstdir}/program/opengl
+%{baseinstdir}/program/opengl/*.glsl
+%{baseinstdir}/program/types/offapi.rdb
+%{baseinstdir}/program/libpasswordcontainerlo.so
+%{baseinstdir}/program/pagein-common
+%dir %{baseinstdir}/program/resource
+%dir %{baseinstdir}/program/resource/common
+%dir %{baseinstdir}/program/resource/common/fonts
+%{baseinstdir}/program/senddoc
+%dir %{baseinstdir}/program/services
+%{baseinstdir}/program/services/services.rdb
+%{baseinstdir}/program/libsimplecanvaslo.so
+%{baseinstdir}/program/libslideshowlo.so
+%{baseinstdir}/program/libsmlo.so
+%{baseinstdir}/program/libsmdlo.so
+%{baseinstdir}/program/libsofficeapp.so
+%{baseinstdir}/program/libstringresourcelo.so
+%{baseinstdir}/program/libsysshlo.so
+%{baseinstdir}/program/libucpcmis1lo.so
+%{baseinstdir}/program/libucpexpand1lo.so
+%{baseinstdir}/program/libucpextlo.so
+%{baseinstdir}/program/libucpimagelo.so
+%{baseinstdir}/program/libucptdoc1lo.so
+%{baseinstdir}/program/lounorc
+%{baseinstdir}/program/libupdatefeedlo.so
+%{baseinstdir}/program/uri-encode
+%{baseinstdir}/program/libvbaeventslo.so
+%{baseinstdir}/program/libvclcanvaslo.so
+%{baseinstdir}/program/versionrc
+%dir %{baseinstdir}/share
+%dir %{baseinstdir}/share/classification
+%{baseinstdir}/share/classification/example*.xml
+%dir %{baseinstdir}/share/fonts
+%dir %{baseinstdir}/share/fonts/truetype
+%{baseinstdir}/share/fonts/truetype/fc_local.conf
+%dir %{baseinstdir}/share/Scripts
+%{baseinstdir}/share/Scripts/java
+%dir %{baseinstdir}/share/autotext
+%dir %{_datadir}/autocorr
+%{baseinstdir}/share/autocorr
+%{baseinstdir}/share/basic
+%dir %{baseinstdir}/share/config
+%{baseinstdir}/share/config/images_breeze.zip
+%{baseinstdir}/share/config/images_breeze_svg.zip
+%{baseinstdir}/share/config/images_breeze_dark.zip
+%{baseinstdir}/share/config/images_breeze_dark_svg.zip
+%{baseinstdir}/share/config/images_colibre.zip
+%{baseinstdir}/share/config/images_colibre_svg.zip
+%{baseinstdir}/share/config/images_elementary.zip
+%{baseinstdir}/share/config/images_elementary_svg.zip
+%{baseinstdir}/share/config/images_helpimg.zip
+%{baseinstdir}/share/config/images_karasa_jaga.zip
+%{baseinstdir}/share/config/images_karasa_jaga_svg.zip
+%{baseinstdir}/share/config/images_sifr.zip
+%{baseinstdir}/share/config/images_sifr_dark.zip
+%{baseinstdir}/share/config/images_sifr_dark_svg.zip
+%{baseinstdir}/share/config/images_sifr_svg.zip
+%{baseinstdir}/share/config/images_sukapura.zip
+%{baseinstdir}/share/config/images_sukapura_svg.zip
+%dir %{baseinstdir}/share/tipoftheday
+%{baseinstdir}/share/tipoftheday/*
+%dir %{baseinstdir}/share/toolbarmode
+%{baseinstdir}/share/toolbarmode/*
+%dir %{baseinstdir}/share/config/soffice.cfg
+%{baseinstdir}/share/config/soffice.cfg/modules
+%{baseinstdir}/share/config/soffice.cfg/*/ui
+%dir %{baseinstdir}/share/emojiconfig
+%{baseinstdir}/share/emojiconfig/emoji.json
+%{baseinstdir}/share/palette
+%{baseinstdir}/share/config/webcast
+%{baseinstdir}/share/config/wizard
+%dir %{baseinstdir}/share/dtd
+%{baseinstdir}/share/dtd/officedocument
+%{baseinstdir}/share/gallery
+%dir %{baseinstdir}/share/labels
+%{baseinstdir}/share/labels/labels.xml
+%dir %{baseinstdir}/share/psprint
+%config %{baseinstdir}/share/psprint/psprint.conf
+%{baseinstdir}/share/psprint/driver
+%dir %{baseinstdir}/share/registry
+%{baseinstdir}/share/registry/draw.xcd
+%{baseinstdir}/share/registry/gnome.xcd
+%{baseinstdir}/share/registry/lingucomponent.xcd
+%{baseinstdir}/share/registry/main.xcd
+%{baseinstdir}/share/registry/math.xcd
+%{baseinstdir}/share/registry/oo-ad-ldap.xcd.sample
+%{baseinstdir}/share/registry/oo-ldap.xcd.sample
+%dir %{baseinstdir}/share/registry/res
+%dir %{baseinstdir}/share/template
+%dir %{baseinstdir}/share/template/common
+%{baseinstdir}/share/template/common/draw
+%{baseinstdir}/share/template/common/internal
+%{baseinstdir}/share/template/common/officorr
+%{baseinstdir}/share/template/common/offimisc
+%{baseinstdir}/share/template/common/personal
+%{baseinstdir}/share/template/common/presnt
+%{baseinstdir}/share/template/common/styles
+%{baseinstdir}/share/template/common/wizard
+%{baseinstdir}/share/template/wizard
+%dir %{baseinstdir}/share/wordbook
+%{baseinstdir}/share/wordbook/en-GB.dic
+%{baseinstdir}/share/wordbook/en-US.dic
+%{baseinstdir}/share/wordbook/technical.dic
+%{baseinstdir}/program/liblnthlo.so
+%{_bindir}/unopkg
+%{_mandir}/man1/unopkg.1*
+%{baseinstdir}/program/libxmlsecurity.so
+%{baseinstdir}/program/libconfigmgrlo.so
+%{baseinstdir}/program/libdesktopbe1lo.so
+%{baseinstdir}/program/libfsstoragelo.so
+%{baseinstdir}/program/libi18npoollo.so
+%{baseinstdir}/program/libbasegfxlo.so
+# TODO: shouldn't it have lo suffix?
+%{baseinstdir}/program/libcomphelper.so
+%{baseinstdir}/program/libfwklo.so
+# TODO: shouldn't it have lo suffix?
+%{baseinstdir}/program/libi18nutil.so
+%{baseinstdir}/program/libpackage2.so
+%{baseinstdir}/program/libsblo.so
+%{baseinstdir}/program/libsfxlo.so
+%{baseinstdir}/program/libsotlo.so
+%{baseinstdir}/program/libspllo.so
+%{baseinstdir}/program/libsvllo.so
+%{baseinstdir}/program/libsvtlo.so
+%{baseinstdir}/program/libtklo.so
+%{baseinstdir}/program/libtllo.so
+%{baseinstdir}/program/libucb1.so
+%{baseinstdir}/program/libucpfile1.so
+%{baseinstdir}/program/libutllo.so
+%{baseinstdir}/program/libvcllo.so
+%{baseinstdir}/program/libwriterperfectlo.so
+%{baseinstdir}/program/libxmlscriptlo.so
+%{baseinstdir}/program/libxolo.so
+%{baseinstdir}/program/liblocalebe1lo.so
+%{baseinstdir}/program/libucpgio1lo.so
+%{baseinstdir}/program/types/oovbaapi.rdb
+#share unopkg
+%dir %{baseinstdir}/share/extensions
+%{baseinstdir}/share/extensions/package.txt
+%{baseinstdir}/program/unopkg
+%{baseinstdir}/program/unopkg.bin
+%{baseinstdir}/program/bootstraprc
+%{baseinstdir}/program/fundamentalrc
+%{baseinstdir}/program/setuprc
+%{baseinstdir}/program/intro.png
+%{baseinstdir}/program/intro-highres.png
+%{baseinstdir}/program/opencltest
+%{baseinstdir}/program/soffice
+%{baseinstdir}/program/soffice.bin
+%{baseinstdir}/program/sofficerc
+%{baseinstdir}/program/unoinfo
+%{baseinstdir}/program/oosplash
+%{baseinstdir}/program/shell/
+%dir %{baseinstdir}/share/filter
+%{baseinstdir}/share/filter/oox-drawingml-adj-names
+%{baseinstdir}/share/filter/oox-drawingml-cs-presets
+%{baseinstdir}/share/filter/signature-line.svg
+%{baseinstdir}/share/filter/signature-line-draw.svg
+%{baseinstdir}/share/filter/vml-shape-types
+%{baseinstdir}/share/xdg/
+%{baseinstdir}/program/redirectrc
+%if 0%{?flatpak}
+%{_datadir}/metainfo/org.libreoffice.LibreOffice.appdata.xml
+%{_datadir}/applications/org.libreoffice.LibreOffice.desktop
+%else
+%{_datadir}/applications/libreoffice-startcenter.desktop
+%endif
+#launchers
+%{_bindir}/libreoffice
+%{_bindir}/openoffice.org
+%{_bindir}/soffice
+%{_bindir}/ooffice
+%{_bindir}/ooviewdoc
+%{_mandir}/man1/libreoffice.1*
+%{_mandir}/man1/openoffice.org.1*
+%{_mandir}/man1/soffice.1*
+%{_mandir}/man1/ooffice.1*
+%{_mandir}/man1/ooviewdoc.1*
+
+%files base
+%{baseinstdir}/program/classes/hsqldb.jar
+%{baseinstdir}/program/classes/reportbuilder.jar
+%{baseinstdir}/program/classes/reportbuilderwizard.jar
+%{baseinstdir}/program/classes/sdbc_hsqldb.jar
+%{baseinstdir}/program/access2base.py
+%if 0%{?fedora}
+%{baseinstdir}/program/base.abignore
+%endif
+%{baseinstdir}/program/libabplo.so
+%{baseinstdir}/program/libdbplo.so
+%if 0%{?fedora}
+%{baseinstdir}/program/libfirebird_sdbclo.so
+%endif
+%{baseinstdir}/program/libhsqldb.so
+%{baseinstdir}/program/librptlo.so
+%{baseinstdir}/program/librptuilo.so
+%{baseinstdir}/program/librptxmllo.so
+%{baseinstdir}/share/registry/base.xcd
+%{baseinstdir}/share/registry/reportbuilder.xcd
+%{baseinstdir}/program/sbase
+%if 0%{?flatpak}
+%{_datadir}/applications/org.libreoffice.LibreOffice.base.desktop
+%else
+%{_datadir}/metainfo/libreoffice-base.appdata.xml
+%{_datadir}/applications/libreoffice-base.desktop
+%endif
+%{_bindir}/oobase
+%{_mandir}/man1/oobase.1*
+
+%if 0%{?fedora}
+%files bsh
+%{baseinstdir}/program/classes/ScriptProviderForBeanShell.jar
+%{baseinstdir}/program/services/scriptproviderforbeanshell.rdb
+%{baseinstdir}/share/Scripts/beanshell
+
+%files rhino
+%{baseinstdir}/program/classes/js.jar
+%{baseinstdir}/program/classes/ScriptProviderForJavaScript.jar
+%{baseinstdir}/program/services/scriptproviderforjavascript.rdb
+%{baseinstdir}/share/Scripts/javascript
+%endif
+
+%files wiki-publisher
+%docdir %{baseinstdir}/share/extensions/wiki-publisher/license
+%{baseinstdir}/share/extensions/wiki-publisher
+
+%files nlpsolver
+%docdir %{baseinstdir}/share/extensions/nlpsolver/help
+%{baseinstdir}/share/extensions/nlpsolver
+
+%files officebean
+%{baseinstdir}/program/classes/officebean.jar
+%if 0%{?fedora}
+%{baseinstdir}/program/officebean.abignore
+%endif
+%{baseinstdir}/program/libofficebean.so
+
+%files officebean-common
+%{_javadir}/%{name}/officebean.jar
+
+%files ogltrans
+%if 0%{?fedora}
+%{baseinstdir}/program/ogltrans.abignore
+%endif
+%{baseinstdir}/program/libOGLTranslo.so
+%{baseinstdir}/program/opengl/basicFragmentShader.glsl
+%{baseinstdir}/program/opengl/basicVertexShader.glsl
+%{baseinstdir}/program/opengl/dissolveFragmentShader.glsl
+%{baseinstdir}/program/opengl/fadeBlackFragmentShader.glsl
+%{baseinstdir}/program/opengl/fadeFragmentShader.glsl
+%{baseinstdir}/program/opengl/glitterFragmentShader.glsl
+%{baseinstdir}/program/opengl/glitterVertexShader.glsl
+%{baseinstdir}/program/opengl/honeycombFragmentShader.glsl
+%{baseinstdir}/program/opengl/honeycombGeometryShader.glsl
+%{baseinstdir}/program/opengl/honeycombVertexShader.glsl
+%{baseinstdir}/program/opengl/rippleFragmentShader.glsl
+%{baseinstdir}/program/opengl/reflectionFragmentShader.glsl
+%{baseinstdir}/program/opengl/reflectionVertexShader.glsl
+%{baseinstdir}/program/opengl/staticFragmentShader.glsl
+%{baseinstdir}/program/opengl/vortexFragmentShader.glsl
+%{baseinstdir}/program/opengl/vortexGeometryShader.glsl
+%{baseinstdir}/program/opengl/vortexVertexShader.glsl
+%{baseinstdir}/share/config/soffice.cfg/simpress/transitions-ogl.xml
+%{baseinstdir}/share/registry/ogltrans.xcd
+
+%files pdfimport
+%if 0%{?fedora}
+%{baseinstdir}/program/pdfimport.abignore
+%endif
+%{baseinstdir}/program/libpdfimportlo.so
+%{baseinstdir}/program/xpdfimport
+%{baseinstdir}/share/registry/pdfimport.xcd
+%dir %{baseinstdir}/share/xpdfimport
+%{baseinstdir}/share/xpdfimport/xpdfimport_err.pdf
+
+%_font_pkg -n %{fontname} opens___.ttf
+%doc instdir/LICENSE
+
+%files calc
+%if 0%{?fedora}
+%{baseinstdir}/program/calc.abignore
+%endif
+%{baseinstdir}/program/libanalysislo.so
+%{baseinstdir}/program/libcalclo.so
+%{baseinstdir}/program/libdatelo.so
+%{baseinstdir}/program/libforlo.so
+%{baseinstdir}/program/libforuilo.so
+%{baseinstdir}/program/libnumbertextlo.so
+%{baseinstdir}/program/libpricinglo.so
+%{baseinstdir}/program/libsclo.so
+%{baseinstdir}/program/libscdlo.so
+%{baseinstdir}/program/libscfiltlo.so
+%{baseinstdir}/program/libscuilo.so
+%{baseinstdir}/program/libsolverlo.so
+%{baseinstdir}/program/libwpftcalclo.so
+%{baseinstdir}/program/libvbaobjlo.so
+%{baseinstdir}/share/calc/styles.xml
+%{baseinstdir}/share/registry/calc.xcd
+%{baseinstdir}/program/pagein-calc
+%{baseinstdir}/program/scalc
+%if 0%{?flatpak}
+%{_datadir}/applications/org.libreoffice.LibreOffice.calc.desktop
+%else
+%{_datadir}/metainfo/libreoffice-calc.appdata.xml
+%{_datadir}/applications/libreoffice-calc.desktop
+%endif
+%{_bindir}/oocalc
+%{_mandir}/man1/oocalc.1*
+
+%files draw
+%{baseinstdir}/program/pagein-draw
+%{baseinstdir}/program/sdraw
+%if 0%{?flatpak}
+%{_datadir}/applications/org.libreoffice.LibreOffice.draw.desktop
+%else
+%{_datadir}/metainfo/libreoffice-draw.appdata.xml
+%{_datadir}/applications/libreoffice-draw.desktop
+%endif
+%{_bindir}/oodraw
+%{_mandir}/man1/oodraw.1*
+
+%files emailmerge
+%{baseinstdir}/program/mailmerge.py*
+%{baseinstdir}/program/msgbox.py*
+
+%files writer
+%if 0%{?fedora}
+%{baseinstdir}/program/writer.abignore
+%endif
+%{baseinstdir}/program/libhwplo.so
+%{baseinstdir}/program/liblwpftlo.so
+%{baseinstdir}/program/libmswordlo.so
+%{baseinstdir}/program/libswuilo.so
+%{baseinstdir}/program/libt602filterlo.so
+%{baseinstdir}/program/libwpftwriterlo.so
+%{baseinstdir}/program/libwriterfilterlo.so
+%{baseinstdir}/program/libwriterlo.so
+%{baseinstdir}/program/libvbaswobjlo.so
+%{baseinstdir}/share/registry/writer.xcd
+%{baseinstdir}/program/pagein-writer
+%{baseinstdir}/program/swriter
+%if 0%{?flatpak}
+%{_datadir}/applications/org.libreoffice.LibreOffice.writer.desktop
+%else
+%{_datadir}/metainfo/libreoffice-writer.appdata.xml
+%{_datadir}/applications/libreoffice-writer.desktop
+%endif
+%{_bindir}/oowriter
+%{_mandir}/man1/oowriter.1*
+
+%files impress
+%if 0%{?fedora}
+%{baseinstdir}/program/impress.abignore
+%endif
+%{baseinstdir}/program/libPresentationMinimizerlo.so
+%{baseinstdir}/program/libPresenterScreenlo.so
+%{baseinstdir}/program/libwpftimpresslo.so
+%dir %{baseinstdir}/share/config/soffice.cfg/simpress
+%{baseinstdir}/share/config/soffice.cfg/simpress/effects.xml
+%{baseinstdir}/share/config/soffice.cfg/simpress/layoutlist.xml
+%{baseinstdir}/share/config/soffice.cfg/simpress/objectlist.xml
+%{baseinstdir}/share/config/soffice.cfg/simpress/transitions.xml
+%{baseinstdir}/share/registry/impress.xcd
+%{baseinstdir}/program/pagein-impress
+%{baseinstdir}/program/simpress
+%if 0%{?flatpak}
+%{_datadir}/applications/org.libreoffice.LibreOffice.impress.desktop
+%else
+%{_datadir}/metainfo/libreoffice-impress.appdata.xml
+%{_datadir}/applications/libreoffice-impress.desktop
+%endif
+%{_bindir}/ooimpress
+%{_mandir}/man1/ooimpress.1*
+
+%files math
+%{baseinstdir}/program/smath
+%if 0%{?flatpak}
+%{_datadir}/applications/org.libreoffice.LibreOffice.math.desktop
+%else
+%{_datadir}/applications/libreoffice-math.desktop
+%endif
+%{_bindir}/oomath
+%{_mandir}/man1/oomath.1*
+
+%files graphicfilter
+%if 0%{?fedora}
+%{baseinstdir}/program/graphicfilter.abignore
+%endif
+%{baseinstdir}/program/libgraphicfilterlo.so
+%{baseinstdir}/program/libsvgfilterlo.so
+%{baseinstdir}/program/libwpftdrawlo.so
+%{baseinstdir}/share/registry/graphicfilter.xcd
+
+%files xsltfilter
+%{baseinstdir}/share/xslt
+%{baseinstdir}/share/registry/xsltfilter.xcd
+%if 0%{?flatpak}
+%{_datadir}/applications/org.libreoffice.LibreOffice.xsltfilter.desktop
+%else
+%{_datadir}/applications/libreoffice-xsltfilter.desktop
+%endif
+
+%files postgresql
+%if 0%{?fedora}
+%{baseinstdir}/program/postgresql.abignore
+%endif
+%{baseinstdir}/program/libpostgresql-sdbclo.so
+%{baseinstdir}/program/libpostgresql-sdbc-impllo.so
+%{baseinstdir}/program/services/postgresql-sdbc.rdb
+%{baseinstdir}/share/registry/postgresql.xcd
+
+%files ure
+%{baseinstdir}/program/classes/java_uno.jar
+%{baseinstdir}/program/classes/juh.jar
+%{baseinstdir}/program/classes/jurt.jar
+%{baseinstdir}/program/classes/libreoffice.jar
+%{baseinstdir}/program/classes/ridl.jar
+%{baseinstdir}/program/classes/unoloader.jar
+%{baseinstdir}/program/javaldx
+%{baseinstdir}/program/javavendors.xml
+%{baseinstdir}/program/jvmfwk3rc
+%{baseinstdir}/program/JREProperties.class
+%if 0%{?fedora}
+%{baseinstdir}/program/ure.abignore
+%endif
+%{baseinstdir}/program/libaffine_uno_uno.so
+%{baseinstdir}/program/libbinaryurplo.so
+%{baseinstdir}/program/libbootstraplo.so
+%{baseinstdir}/program/libgcc3_uno.so
+%{baseinstdir}/program/libi18nlangtag.so
+%{baseinstdir}/program/libintrospectionlo.so
+%{baseinstdir}/program/libinvocadaptlo.so
+%{baseinstdir}/program/libinvocationlo.so
+%{baseinstdir}/program/libiolo.so
+%{baseinstdir}/program/libjava_uno.so
+%{baseinstdir}/program/libjavaloaderlo.so
+%{baseinstdir}/program/libjavavmlo.so
+%{baseinstdir}/program/libjpipe.so
+%{baseinstdir}/program/libjuh.so
+%{baseinstdir}/program/libjuhx.so
+%{baseinstdir}/program/libjvmaccesslo.so
+%{baseinstdir}/program/libjvmfwklo.so
+%{baseinstdir}/program/liblog_uno_uno.so
+%{baseinstdir}/program/libnamingservicelo.so
+%{baseinstdir}/program/libproxyfaclo.so
+%{baseinstdir}/program/libreflectionlo.so
+%{baseinstdir}/program/libreglo.so
+%{baseinstdir}/program/libsal_textenclo.so
+%{baseinstdir}/program/libstocserviceslo.so
+%{baseinstdir}/program/libstorelo.so
+%{baseinstdir}/program/libuno_cppu.so.3
+%{baseinstdir}/program/libuno_cppuhelpergcc3.so.3
+%{baseinstdir}/program/libuno_purpenvhelpergcc3.so.3
+%{baseinstdir}/program/libuno_sal.so.3
+%{baseinstdir}/program/libuno_salhelpergcc3.so.3
+%{baseinstdir}/program/libunoidllo.so
+%{baseinstdir}/program/libunsafe_uno_uno.so
+%{baseinstdir}/program/libuuresolverlo.so
+%{baseinstdir}/program/libxmlreaderlo.so
+%{baseinstdir}/program/regmerge
+%{baseinstdir}/program/regview
+%{baseinstdir}/program/services.rdb
+%{baseinstdir}/program/types.rdb
+%{baseinstdir}/program/uno
+%{baseinstdir}/program/uno.bin
+%{baseinstdir}/program/unorc
+
+%files ure-common
+%dir %{_javadir}/%{name}
+%{_javadir}/%{name}/juh.jar
+%{_javadir}/%{name}/jurt.jar
+%{_javadir}/%{name}/libreoffice.jar
+%{_javadir}/%{name}/ridl.jar
+%{_javadir}/%{name}/unoloader.jar
+%license instdir/LICENSE
+
+%files sdk
+%{sdkinstdir}/
+%exclude %{sdkinstdir}/docs/
+%exclude %{sdkinstdir}/examples/
+
+%files sdk-doc
+%docdir %{sdkinstdir}/docs
+%license instdir/LICENSE
+%{sdkinstdir}/docs/
+%{sdkinstdir}/examples/
+
+%files pyuno
+%if 0%{?fedora}
+%{baseinstdir}/program/pyuno.abignore
+%endif
+%{baseinstdir}/program/libpyuno.so
+%{baseinstdir}/program/pythonloader.py*
+%{baseinstdir}/program/libpythonloaderlo.so
+%{baseinstdir}/program/pythonloader.unorc
+%{baseinstdir}/program/pythonscript.py*
+%{baseinstdir}/program/pyuno.so
+%{baseinstdir}/program/services/pyuno.rdb
+%{baseinstdir}/program/services/scriptproviderforpython.rdb
+%{baseinstdir}/program/wizards
+%{baseinstdir}/share/Scripts/python
+%exclude %{baseinstdir}/share/Scripts/python/LibreLogo
+%{libo_python_sitearch}/uno.py*
+%{libo_python_sitearch}/unohelper.py*
+%{libo_python_sitearch}/officehelper.py*
+%{libo_python_sitearch}/__pycache__/uno.cpython-*
+%{libo_python_sitearch}/__pycache__/unohelper.cpython-*
+%{libo_python_sitearch}/__pycache__/officehelper.cpython-*
+%{baseinstdir}/share/registry/pyuno.xcd
+
+%files librelogo
+%{baseinstdir}/share/registry/librelogo.xcd
+%{baseinstdir}/share/Scripts/python/LibreLogo
+
+%files glade
+%{baseinstdir}/program/ui-previewer
+%{_datadir}/glade
+%{_datadir}/glade3
+
+%files data
+%{_datadir}/icons/hicolor/*/*/libreoffice*
+%if 0%{?flatpak}
+%{_datadir}/icons/hicolor/*/*/org.libreoffice.LibreOffice.*
+%endif
+%{_datadir}/mime/packages/libreoffice.xml
+# TODO: rename -data to -core-common?
+%dir %{_javadir}/%{name}
+%{_javadir}/%{name}/unoil.jar
+%dir %{datadir}
+%doc instdir/CREDITS.fodt
+%doc instdir/LICENSE.html
+%doc instdir/LICENSE
+%doc instdir/NOTICE
+%license instdir/LICENSE
+
+%post data
+touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+
+%postun data
+if [ $1 -eq 0 ] ; then
+ touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+ gtk-update-icon-cache -q %{_datadir}/icons/hicolor &>/dev/null || :
+fi
+
+%posttrans data
+gtk-update-icon-cache -q %{_datadir}/icons/hicolor &>/dev/null || :
+
+%files x11
+%if 0%{?fedora}
+%{baseinstdir}/program/x11.abignore
+%endif
+%{baseinstdir}/program/libvclplug_genlo.so
+
+%files gtk3
+%if 0%{?fedora}
+%{baseinstdir}/program/gtk3.abignore
+%endif
+%{baseinstdir}/program/libvclplug_gtk3lo.so
+
+%if 0%{?fedora}
+
+%files kf5
+%{baseinstdir}/program/kf5.abignore
+%{baseinstdir}/program/libkf5be1lo.so
+%{baseinstdir}/program/libvclplug_kf5lo.so
+%{baseinstdir}/program/libvclplug_qt5lo.so
+
+%endif
+
+%files -n libreofficekit
+%{baseinstdir}/share/libreofficekit
+%{_libdir}/girepository-1.0/LOKDocView-%{girapiversion}.typelib
+%if 0%{?fedora}
+%{baseinstdir}/program/libreofficekit.abignore
+%endif
+%{_libdir}/liblibreofficekitgtk.so
+
+%files -n libreofficekit-devel
+%{_libdir}/gir-1.0/LOKDocView-%{girapiversion}.gir
+%{_includedir}/LibreOfficeKit
+
+%changelog
+* Thu Oct 20 2022 Caolán McNamara <caolanm@redhat.com> - 1:7.1.8.1-8
+- Resolves: rhbz#2134759 Untrusted Macros
+- Resolves: rhbz#2134757 Weak Master Keys
+- Resolves: rhbz#2134755 Static Initialization Vector
+- Resolves: rhbz#2134761 Macro URL arbitrary script execution
+
+* Tue May 10 2022 Caolán McNamara <caolanm@redhat.com> - 1:7.1.8.1-7
+- Resolves: rhbz#2081661 fix gtk_tree_view_scroll_to_cell assert
+
+* Tue Feb 22 2022 Caolán McNamara <caolanm@redhat.com> - 1:7.1.8.1-6
+- Resolves: rhbz#2056412 merge in fedoa 34 changes
+
+* Thu Feb 10 2022 Caolán McNamara <caolanm@redhat.com> - 1:7.1.8.1-5
+- Related: rhbz#2042817 bump n-v-r
+
+* Wed Feb 02 2022 Caolán McNamara <caolanm@redhat.com> - 1:7.1.8.1-4
+- Resolves: rhbz#2042817 fix reversed conditional for non-interactive installs
+
+* Tue Feb 01 2022 Caolán McNamara <caolanm@redhat.com> - 1:7.1.8.1-3
+- Resolves: rhbz#2042817 tune s390x/aarch64 for non-interactive installs
+
+* Mon Jan 10 2022 Caolán McNamara <caolanm@redhat.com> - 1:7.1.8.1-2
+- fix annocheck warning about missing .note.gnu.property-stack
+
+* Tue Dec 14 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.8.1-1
+- upgrade to 7.1.8
+
+* Wed Dec 01 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.7.2-4
+- Resolves: rhbz#2027211 enable make check on s390x
+
+* Mon Nov 22 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.7.2-3
+- Resolves: rhbz2023185 merge in fedora 34 changes
+
+* Mon Nov 08 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.7.2-2
+- Resolves: tdf#145567 restore start center focus to the right widget
+
+* Fri Oct 29 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.7.2-1
+- Resolves: rhbz#2014990 upgrade to 7.1.7
+
+* Mon Oct 11 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.6.2-2
+- Resolves: rhbz#2001452 upgrade to 7.1.6
+
+* Thu Aug 12 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.5.2-5
+- replace use of ucpp with gcc cpp
+- Resolves: tdf#132739 two html style tags where there should be just one
+
+* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 1:7.1.5.2-4
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+ Related: rhbz#1991688
+
+* Thu Aug 05 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.5.2-3
+- Resolves: rhbz#1983557 upgrade to 7.1.5
+
+* Wed Jun 30 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.4.2-4
+- Resolves: rhbz#1979145 merge in rpminspect warning fixes
+
+* Wed Jun 30 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.4.2-3
+- rhbz#1977653 drop unneeded bsh build-dependency
+- Remove unused DOCTYPE from odk/examples xcu file
+- drop bsh buildrequires in rhel
+
+* Tue Jun 22 2021 Mohan Boddu <mboddu@redhat.com>
+- Rebuilt for RHEL 9 BETA for openssl 3.0
+ Related: rhbz#1971065
+
+* Wed Jun 09 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.4.2-1
+- latest version
+- replace 'badfuncs' of inet_addr and inet_ntoa
+
+* Thu May 20 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.3.2-1
+- Resolves: rhbz#1962262 Get rid of apache-commons-logging
+- Impress crashes on switch from commenting to slide sorter
+- fix assertion on avmedia volumne control
+- build libreoffice-langpack-fy for libreoffice
+- Adapt to "libstdc++: Implement LWG 1203 for rvalue iostreams"
+- Adapt to hamcrest-2.2-3.fc35.noarch.rpm
+- gtk3: workaround missing gdk_threads_enter calls in gio errordialog callback
+
+* Wed May 12 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.2.2-3
+- Resolves: rhbz#1958290 rebuild for poppler ABI Change
+
+* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1:7.1.2.2-2
+- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
+
+* Thu Apr 01 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.2.2-1
+- latest version
+
+* Wed Mar 24 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.1.2-2
+- tdf#141197 expose gtk-widgets inside vcl-containers to atk hierarchy
+
+* Thu Mar 04 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.1.2-1
+- latest version
+
+* Mon Feb 08 2021 Pavel Raiskup <praiskup@redhat.com> - 1:7.1.0.3-3
+- rebuild for libpq ABI fix rhbz#1908268
+
+* Fri Feb 05 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.0.3-2
+- use classic brand
+
+* Wed Feb 03 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.0.3-1
+- bump to 7.1.0 series
+- drop integrated 0001-rhbz-1870501-crash-on-reexport-of-odg.patch
+- drop integrated 0001-rhbz-1882616-move-cursor-one-step-at-a-time-in-the-d.patch
+- drop integrated 0001-export-HYPERLINK-target-in-html-clipboard-export.patch
+- drop integrated 0001-gcc11.patch
+- drop integrated 0001-disable-tests-that-don-t-work-without-pdfium.patch
+- drop integrated 0001-rhbz-1913828-SfxViewFrame-Current-can-return-null.patch
+- drop integrated 0001-Upgrade-liborcus-to-0.16.0.patch
+
+* Thu Jan 28 2021 Stephan Bergmann <sbergman@redhat.com> - 1:7.0.4.2-9
+- Make libreoffice-bsh, libreoffice-rhino depend on full java
+
+* Wed Jan 27 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.0.4.2-8
+- drop unneeded BuildRequires: gdb
+
+* Wed Jan 27 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.0.4.2-7
+- Resolves: rhbz#1916539 text not wrapping in right hand help brower pane
+
+* Mon Jan 25 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.0.4.2-6
+- really rebuild for Boost 1.75
+
+* Fri Jan 22 2021 Jonathan Wakely <jwakely@redhat.com> - 1:7.0.4.2-5
+- Rebuilt for Boost 1.75
+
+* Fri Jan 15 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.0.4.2-4
+- rebuild for poppler
+
+* Mon Jan 11 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.0.4.2-3
+- Resolves: rhbz#1913828 SfxViewFrame::Current() can return null
+
+* Sun Dec 20 2020 Caolán McNamara <caolanm@redhat.com> - 1:7.0.4.2-2
+- workaround for make check failure
+
+* Wed Dec 09 2020 Caolán McNamara <caolanm@redhat.com> - 1:7.0.4.2-1
+- latest version
+
+* Wed Dec 02 2020 Thierry Vignaud <tv@mageia.org> 1:7.0.4.1-1
+- Update to 7.0.4 RC1
+
+* Tue Nov 24 2020 Caolán McNamara <caolanm@redhat.com> - 1:7.0.3.1-4
+- Resolves: rhbz#1900937 fix null deref in non-pdfium build
+
+* Mon Nov 23 2020 Caolán McNamara <caolanm@redhat.com> - 1:7.0.3.1-3
+- Resolves: rhbz#1900428 don't crash on invalid index used in StarBasic macro
+
+* Tue Nov 03 2020 Jeff Law <law@redhat.com> - 1:7.0.3.1-2
+- Fix missing #include for gcc-11
+
+* Thu Oct 29 2020 Caolán McNamara <caolanm@redhat.com> - 1:7.0.3.1-1
+- latest version
+
+* Sun Oct 25 2020 Caolán McNamara <caolanm@redhat.com> - 1:7.0.2.2-3
+- Resolves: rhbz#1891326 suggest package install of the best pt-* langpack
+
+* Sat Oct 24 18:45:56 CEST 2020 David Tardon <dtardon@redhat.com> - 1:7.0.2.2-2
+- fix upgrade from Fedora 32
+
+* Sat Oct 10 2020 Caolán McNamara <caolanm@redhat.com> - 1:7.0.2.2-1
+- latest version
+
+* Tue Oct 06 2020 Rex Dieter <rdieter@fedoraproject.org> - 1:7.0.1.2-7
+- -kf5: enable Supplements: (%%name-core and plasma-workspace)
+
+* Tue Sep 29 2020 Caolán McNamara <caolanm@redhat.com> - 1:7.0.1.2-6
+- export HYPERLINK target in html clipboard export
+
+* Fri Sep 25 2020 Caolán McNamara <caolanm@redhat.com> - 1:7.0.1.2-5
+- Resolves: rhbz#1882616 IM cursor pos problem with emojis in writer
+
+* Thu Sep 24 2020 Caolán McNamara <caolanm@redhat.com> - 1:7.0.1.2-4
+- upgrade liborcus
+
+* Fri Sep 04 2020 Caolán McNamara <caolanm@redhat.com> - 1:7.0.1.2-3
+- rhbz#1875377 prefer Cantarell-Regular to Cantarell-VF
+
+* Thu Sep 03 2020 Merlin Mathesius <mmathesi@redhat.com> - 1:7.0.1.2-2
+- Rebase RHEL patch to disable libe-book support to libreoffice-7.0
+- Add BR perl(base)
+
+* Tue Sep 01 2020 Caolán McNamara <caolanm@redhat.com> - 1:7.0.1.2-1
+- 7.0.1 RC2
+
+* Fri Aug 21 2020 Caolán McNamara <caolanm@redhat.com> - 1:7.0.1.1-3
+- rhbz#1870501 crash on reexport of odg
+
+* Fri Aug 21 2020 Stephan Bergmann <sbergman@redhat.com> 1:7.0.1.1-2
+- Build the binary UNO bridge with -fno-lto
+
+* Thu Aug 20 2020 Thierry Vignaud <tvignaud@redhat.com> 1:7.0.1.1-1
+- 7.0.1 RC1
+
+* Thu Aug 06 2020 Caolán McNamara <caolanm@redhat.com> - 1:7.0.0.3-1
+- 7.0.0
+
+* Wed Aug 05 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.4.5.2-6
+- Resolves: rhbz#1745771
+ + drop the GTK3-KF5 VCL plugin (formerly subpackage kf5)
+ + rename the current -kde5 subpackage (the Qt5/KF5 VCL plugin) to -kf5
+
+* Wed Jul 29 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.4.5.2-5
+- Resolves: rhbz#1861794 missing csv fixed width handles
+
+* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1:6.4.5.2-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Sat Jul 25 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.4.5.2-3
+- Related: rhbz#1859588 workaround vcldemo ICE
+- add py_byte_compile call for
+ https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompilation_phase_3
+
+* Tue Jul 14 2020 Jiri Vanek <jvanek@redhat.com> - 1:6.4.5.2-2
+- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11
+
+* Sat Jul 11 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.4.5.2-1
+- latest stable
+
+* Sat Jul 11 2020 Jiri Vanek <jvanek@redhat.com> - 1:6.4.4.2-4
+- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11
+
+* Sat May 30 2020 Jonathan Wakely <jwakely@redhat.com> - 1:6.4.4.2-3
+- Rebuilt for Boost 1.73
+
+* Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 1:6.4.4.2-2
+- Rebuilt for Python 3.9
+
+* Thu May 21 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.4.4.2-1
+- latest stable
+
+* Sun May 17 2020 Pete Walter <pwalter@fedoraproject.org> - 1:6.4.3.2-2
+- Rebuild for ICU 67
+
+* Thu Apr 16 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.4.3.2-1
+- latest stable
+
+* Mon Mar 30 2020 Thierry Vignaud <tvgnaud@mredhat.com> 1:6.4.2.2-1
+- 6.4.2.2
+
+* Mon Mar 23 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.4.1.2-4
+- help->license->license doesn't do anything
+
+* Fri Mar 20 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.4.1.2-3
+- disable tip-of-the-day dialog by default
+
+* Wed Mar 18 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.4.1.2-2
+- rhbz#1776774 make math subpackage just a superficial package for
+ math launcher
+
+* Tue Feb 25 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.4.1.2-1
+- 6.4.1 beta 2
+
+* Mon Feb 10 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.4.0.3-2
+- rhbz#1793632 make draw subpackage just a superficial package for
+ draw launcher
+
+* Wed Jan 29 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.4.0.3-1
+- latest release
+
+* Wed Jan 22 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.3.4.2-1
+- latest stable release
+
+* Fri Jan 17 2020 Marek Kasik <mkasik@redhat.com> - 1:6.3.3.2-6
+- Rebuild for poppler-0.84.0
+
+* Fri Jan 17 2020 Marek Kasik <mkasik@redhat.com> - 1:6.3.3.2-5
+- Rebuild for poppler-0.84.0
+
+* Wed Nov 27 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.3.3.2-4
+- rhbz#1776774 undo rhbz#156677 and stop customizing math.desktop
+
+* Mon Nov 18 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.3.3.2-3
+- rhbz#1773525 fix find&replace search save limit
+
+* Sat Nov 02 2019 Pete Walter <pwalter@fedoraproject.org> - 1:6.3.3.2-2
+- Rebuild for ICU 65
+
+* Thu Oct 24 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.3.3.2-1
+- latest stable release
+
+* Thu Sep 26 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.3.2.2-1
+- latest stable release
+
+* Thu Sep 05 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.3.1.2-1
+- latest stable release
+
+* Sat Aug 31 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.3.0.4-6
+- Related: rhbz#1747596 see if a depend on firebird from just base is
+ sufficient
+
+* Thu Aug 29 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.3.0.4-5
+- Resolves: rhbz#1736810 disable opencl by default again
+
+* Sun Aug 25 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.3.0.4-4
+- Resolves: rhbz#1744876 firebird not an automatically dependency
+
+* Wed Aug 21 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.3.0.4-3
+- Resolves: rhbz#1743894 make build with mdds-1.5
+
+* Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 1:6.3.0.4-2
+- Rebuilt for Python 3.8
+
+* Thu Aug 08 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.3.0.4-1
+- upgrade to RC4
+
+* Tue Aug 06 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.3.0.3-1
+- upgrade to RC3
+
+* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1:6.3.0.1-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Fri Jul 19 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.3.0.1-2
+- missing ldap support
+- kde4 support is gone, replace with kde5
+
+* Tue Jul 16 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.3.0.1-1
+- move rawhide to 6.3.0
+
+* Tue Jul 16 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.5.2-1
+- latest stable
+
+* Fri Jun 14 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.4.2-5
+- Resolves: rhbz#1720483 make all app rpms depend on pdfimport
+
+* Tue Jun 11 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.4.2-4
+- Resolves: rhbz#1667039 drop Requires: font(:lang=XX) requires in
+ favor of langpacks
+
+* Mon Jun 10 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.4.2-3
+- Related: rhbz#1718063 look for pkg-config python-version-embed
+
+* Fri Jun 07 2019 Stephan Bergmann <sbergman@redhat.com> - 1:6.2.4.2-2
+- Resolves: rhbz#1718063 adapt to upcoming Python 3.8
+
+* Thu May 30 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.4.2-1
+- latest stable version
+
+* Sun May 26 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.3.2-5
+- Resolves: rhbz#1713827 protect against null ViewShell
+- Resolves: rhbz#1713908 stop disabling firebird-sdbc
+
+* Thu May 23 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.3.2-4
+- Resolves: rhbz#1712823 crash in extended tooltips over pattern editor
+- Resolves: rhbz#1711143 calc not rounding time calculation correctly
+
+* Tue May 21 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.3.2-3
+- rebuild for e-d-s
+
+* Thu May 02 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.3.2-2
+- add Esperanto
+
+* Tue Apr 30 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.3.2-1
+- latest stable release
+
+* Fri Apr 26 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.2.2-6
+- Related: rhbz#1703375 disable bsh and rhino for rhel
+
+* Thu Apr 25 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.2.2-5
+- Resolves: rhbz#1702810 Prepare for upcoming libebook
+
+* Sat Apr 13 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.2.2-4
+- tdf#119890 followup Forbid HOME to be the default dir for templates
+
+* Fri Apr 12 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.2.2-3
+- Resolves: rhbz#1699347 __glibcxx_requires_subscript-enabled enabled
+
+* Thu Apr 04 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.2.2-2
+- Related: rhbz#1692584 mythes-de is available again
+
+* Tue Apr 02 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.2.2-1
+- latest stable release
+
+* Wed Mar 27 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.1.2-6
+- Resolves: rhbz#1693388 mythes-de got retired so is unavailable
+
+* Thu Mar 21 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.1.2-5
+- Resolves: rhbz#1690732 basic font variation support
+
+* Wed Mar 20 2019 Stephan Bergmann <sbergman@redhat.com> - 1:6.2.1.2-4
+- Resolves: rhbz#1687589 KDE4 gpoll_wrapper can be called with SolarMutex locked
+
+* Tue Mar 12 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.1.2-3
+- currency menu too narrow
+
+* Thu Mar 07 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.1.2-2
+- bump n-v-r
+
+* Sat Mar 02 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.1.2-1
+- latest stable
+
+* Mon Feb 25 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.0.3-4
+- Related: rhbz#1678319 workaround weird compilation result
+
+* Thu Feb 21 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.0.3-3
+- menu of currency combobox is too wide
+
+* Thu Feb 21 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.0.3-2
+- Resolves: tdf#122623 theme unwanted tab into invisibilty
+
+* Thu Feb 07 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.2.0.3-1
+- latest version
+
+* Fri Feb 01 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.1.4.2-5
+- Resolves: rhbz#1671340 extended tooltips not working in impress navigator
+
+* Thu Jan 31 2019 Kalev Lember <klember@redhat.com> - 1:6.1.4.2-4
+- Rebuilt for Boost 1.69
+
+* Sat Jan 26 2019 Marek Kasik <mkasik@redhat.com> - 1:6.1.4.2-3
+- Additional fixes needed for rebuild
+
+* Fri Jan 25 2019 Marek Kasik <mkasik@redhat.com> - 1:6.1.4.2-2
+- Rebuild for poppler-0.73.0
+
+* Mon Jan 07 2019 Caolán McNamara <caolanm@redhat.com> - 1:6.1.4.2-1
+- latest version
+- Resolves: rhbz#1662616 crash in macro dialog editor
+- Resolves: rhbz#1662512 a11y freeze in calc
+
+* Tue Dec 04 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.1.2.1-8
+- Resolves: rhbz#1639174 desire to block en-help install
+
+* Tue Nov 20 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.1.2.1-7
+- Resolves: rhbz#1651469 improve obsoletes
+
+* Wed Nov 14 2018 Rex Dieter <rdieter@fedoraproject.org> - 1:6.1.2-6
+- -kf5 subpackage: include support for --enable-gtk3-kde5 (#1647233)
+- -kde4: adjust summary/description s/KDE/KDE4/
+
+* Tue Nov 13 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.1.2.1-5
+- Rebuild for hunspell 1.7.0
+
+* Thu Nov 08 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.1.2.1-4
+- drop gtk2 support and obsolete it
+
+* Wed Nov 07 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.1.2.1-3
+- drop rhel 7 conditionals
+
+* Tue Oct 30 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.1.2.1-2
+- Related: rhbz#1644128 gtk tooltip problems
+
+* Wed Oct 10 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.1.2.1-1
+- latest version
+- rhbz#1637848 keep Supplements but not Recommends
+
+* Fri Sep 14 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.1.1.2-1
+- latest version
+
+* Sun Sep 02 2018 David Tardon <dtardon@redhat.com> - 1:6.1.0.3-2
+- rebuild for liborcus 0.14.0
+
+* Thu Aug 16 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.1.0.3-1
+- 6.1.X series
+
+* Tue Aug 14 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.6.2-1
+- latest version
+
+* Tue Jul 31 2018 Florian Weimer <fweimer@redhat.com> - 1:6.0.6.1-7
+- Rebuild with fixed binutils
+
+* Thu Jul 26 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.6.1-6
+- Related: rhbz#1602589 fix/silence more covscan warnings
+
+* Fri Jul 20 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.6.1-5
+- implement export of underline in outlined font for simple case
+
+* Wed Jul 18 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.6.1-4
+- Resolves: rhbz#1602589 fix covscan issues
+
+* Tue Jul 17 2018 Eike Rathke <erack@redhat.com> - 1:6.0.6.1-3
+- Upgrade to ICU 61.1
+- Upgrade to ICU 62.1
+
+* Tue Jul 17 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.6.1-2
+- Resolves: rhbz#1601882 fails to build with --nocheck
+
+* Tue Jul 17 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.6.1-1
+- latest 6.0 release
+
+* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1:6.0.5.2-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Tue Jul 10 2018 Pete Walter <pwalter@fedoraproject.org> - 1:6.0.5.2-2
+- Rebuild for ICU 62
+
+* Fri Jun 22 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.5.2-1
+- latest 6.0 release
+- fix for ICU 61
+- fix for Python 3.7
+
+* Tue Jun 19 2018 Miro Hrončok <mhroncok@redhat.com> - 1:6.0.4.2-5
+- Rebuilt for Python 3.7
+
+* Tue Jun 05 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.4.2-4
+- Resolves: rhbz#1581028 endless font widget update
+
+* Tue Jun 05 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.4.2-3
+- use weak deps for fedora only
+
+* Mon May 28 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.4.2-2
+- Resolves: rhbz#1582324 crash after merging writer table cells
+
+* Fri May 25 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.4.2-1
+- latest 6.0 release
+
+* Wed May 9 2018 Stephan Bergmann <sbergman@redhat.com> - 1:6.0.3.2-10
+- Fix a potential crash when using the dconf configuration backend
+
+* Sat May 5 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.3.2-9
+- tdf#117413 char doubling in calc under X
+
+* Fri May 4 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.3.2-8
+- rhbz#1575000 CVE-2018-10583 allow embedded links to smb resources
+ to be blocked
+
+* Thu May 3 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.3.2-7
+- rhbz#1573845 won't start without at least Langpack-en-US.xcd
+
+* Mon Apr 30 2018 Pete Walter <pwalter@fedoraproject.org> - 1:6.0.3.2-6
+- Rebuild for ICU 61.1
+
+* Tue Apr 24 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.3.2-5
+- Resolves: tdf#116951 rhbz#1569331 start is G_MAXINT
+
+* Thu Apr 19 2018 Stephan Bergmann <sbergman@redhat.com> - 1:6.0.3.2-4
+- Resolves: rhbz#1568579 LibreOffice --headless zombie process
+- Related: rhbz#1569331 end should be in terms of unicode chars, not bytes
+
+* Tue Apr 17 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.3.2-3
+- Related: rhbz#1396729 use cairo_surface_create_similar
+
+* Tue Apr 10 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.3.2-2
+- finally drop bundled xmlsec1
+
+* Thu Mar 29 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.3.2-1
+- latest version
+
+* Thu Mar 29 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.3.1-3
+- Related: rhbz#1066844 drop libreofficekit requires
+
+* Fri Mar 23 2018 Marek Kasik <mkasik@redhat.com> - 1:6.0.3.1-2
+- Rebuild for poppler-0.63.0
+
+* Thu Mar 22 2018 David Tardon <dtardon@redhat.com> - 1:6.0.3.1-1
+- update to 6.0.3 rc1
+
+* Fri Mar 16 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.2.1-3
+- Resolves: rhbz#1392145 ensure titlebar close button matches 'outside' direction
+
+* Fri Mar 16 2018 Stephan Bergmann <sbergman@redhat.com> - 1:6.0.2.1-2
+- lib dir missing from libreoffice-sdk
+
+* Fri Feb 23 2018 David Tardon <dtardon@redhat.com> - 1:6.0.2.1-1
+- update to 6.0.2 rc1
+
+* Wed Feb 14 2018 David Tardon <dtardon@redhat.com> - 1:6.0.1.1-2
+- rebuild for poppler 0.62.0
+
+* Fri Feb 09 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.1.1-1
+- latest stable
+
+* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1:6.0.0.3-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Tue Feb 06 2018 Stephan Bergmann <sbergman@redhat.com> - 1:6.0.0.3-2-UNBUILT
+- Resolves: rhbz#1541486 Base table dialog title shown in wrong language
+
+* Sun Feb 04 2018 David Tardon <dtardon@redhat.com> - 1:6.0.0.3-1
+- update to 6.0.0 rc3
+
+* Wed Jan 31 2018 Michael Stahl <mstahl@fedoraproject.org> - 1:6.0.0.2-3
+- add lots of .abignore files to restrict abipkgdiff to shared objects
+ that actually have a stable ABI
+
+* Tue Jan 30 2018 Björn Esser <besser82@fedoraproject.org> - 1:6.0.0.2-2
+- Rebuilt for Boost 1.66.0
+
+* Fri Jan 12 2018 David Tardon <dtardon@redhat.com> - 1:6.0.0.2-1
+- update to 6.0.0 rc2
+
+* Tue Jan 09 2018 Caolán McNamara <caolanm@redhat.com> - 1:6.0.0.1-3
+- bump to Modify2 for app_id so install hint says 'LibreOffice wants to install'
+
+* Thu Dec 21 2017 Caolán McNamara <caolanm@redhat.com> - 1:6.0.0.1-2
+- request langpack for autodetected desired ui locale via packagekit
+
+* Wed Dec 20 2017 David Tardon <dtardon@redhat.com> - 1:6.0.0.1-1
+- update to 6.0.0 rc1
+
+* Thu Dec 14 2017 David Tardon <dtardon@redhat.com> - 1:6.0.0.0-8.beta2
+- update to 6.0.0 beta2
+
+* Mon Dec 04 2017 Caolán McNamara <caolanm@redhat.com> - 1:6.0.0.0-7.beta1
+- Rebuild for hunspell 1.6.2
+
+* Thu Nov 30 2017 Pete Walter <pwalter@fedoraproject.org> - 1:6.0.0.0-6.beta1
+- Rebuild for ICU 60.1
+
+* Sat Nov 25 2017 David Tardon <dtardon@redhat.com> - 1:6.0.0.0-5.beta1
+- update to 6.0.0 beta1
+
+* Wed Nov 22 2017 Eike Rathke <erack@redhat.com> - 1:6.0.0.0-4.alpha1
+- prepare for build with ICU 60.1
+
+* Mon Nov 20 2017 David Tardon <dtardon@redhat.com> - 1:6.0.0.0-3.alpha1
+- rebuild for liborcus 0.13.1
+
+* Wed Nov 08 2017 David Tardon <dtardon@redhat.com> - 1:6.0.0.0-2.alpha1
+- rebuild for poppler 0.61.0
+
+* Thu Nov 02 2017 David Tardon <dtardon@redhat.com> - 1:6.0.0.0-1.alpha1
+- update to 6.0.0 alpha1
+- update location of appdata files
+- use weak dependencies
+- mark bundled packages
+
+* Tue Oct 17 2017 David Tardon <dtardon@redhat.com> - 1:5.4.3.1-1
+- update to 5.4.3 rc1
+
+* Fri Oct 06 2017 David Tardon <dtardon@redhat.com> - 1:5.4.2.2-3
+- rebuild for poppler 0.60.1
+
+* Sun Oct 01 2017 Thierry Vignaud <tvignaud@redhat.com> - 1:5.4.2.2-2
+- fix libreoffice wrapper
+
+* Wed Sep 27 2017 David Tardon <dtardon@redhat.com> - 1:5.4.2.2-1
+- update to 5.4.2 rc2
+
+* Mon Sep 18 2017 David Tardon <dtardon@redhat.com> - 1:5.4.2.1-1
+- update to 5.4.2 rc1
+
+* Tue Sep 12 2017 David Tardon <dtardon@redhat.com> - 1:5.4.1.2-3
+- Resolves: rhbz#1490318 do not use versioned Supplements
+
+* Fri Sep 08 2017 David Tardon <dtardon@redhat.com> - 1:5.4.1.2-2
+- rebuild for poppler 0.59.0
+
+* Sun Aug 27 2017 David Tardon <dtardon@redhat.com> - 1:5.4.1.2-1
+- update to 5.4.1 rc2
+
+* Fri Aug 11 2017 Caolán McNamara <caolanm@redhat.com> - 1:5.4.0.3-5
+- implement char highlighting ui for graphics styles
+
+* Thu Aug 03 2017 David Tardon <dtardon@redhat.com> - 1:5.4.0.3-4
+- rebuild for poppler 0.57.0
+
+* Mon Jul 31 2017 Kalev Lember <klember@redhat.com> - 1:5.4.0.3-3
+- Enable the s390x build again
+
+* Mon Jul 31 2017 Kalev Lember <klember@redhat.com> - 1:5.4.0.3-2
+- Temporarily disable the build on s390x
+
+* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1:5.4.0.3-1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Fri Jul 21 2017 Kalev Lember <klember@redhat.com> - 1:5.4.0.2-2
+- Rebuilt for Boost 1.64
+
+* Fri Jul 07 2017 David Tardon <dtardon@redhat.com> - 1:5.4.0.2-1
+- update to 5.4.0 rc2
+
+* Fri Jun 23 2017 David Tardon <dtardon@redhat.com> - 1:5.4.0.1-1
+- update to 5.4.0 rc1
+
+* Wed Jun 07 2017 David Tardon <dtardon@redhat.com> - 1:5.4.0.0-3.beta2
+- update to 5.4.0 beta2
+
+* Sun May 21 2017 David Tardon <dtardon@redhat.com> - 1:5.4.0.0-2.beta1
+- update to 5.4.0 beta1
+
+* Tue May 02 2017 David Tardon <dtardon@redhat.com> - 1:5.4.0.0-1.alpha1
+- update to 5.4.0 alpha1
+
+* Wed Apr 19 2017 David Tardon <dtardon@redhat.com> - 1:5.3.3.1-1
+- update to 5.3.3 rc1
+
+* Wed Mar 29 2017 David Tardon <dtardon@redhat.com> - 1:5.3.2.2-1
+- update to 5.3.2 rc2
+
+* Tue Mar 28 2017 David Tardon <dtardon@redhat.com> - 1:5.3.2.1-3
+- rebuild for poppler 0.53.0
+
+* Mon Mar 27 2017 Caolán McNamara <caolanm@redhat.com> - 1:5.3.2.1-2
+- Resolves: rhbz#1432468 disable opencl by default
+
+* Sun Mar 19 2017 David Tardon <dtardon@redhat.com> - 1:5.3.2.1-1
+- update to 5.3.2 rc1
+
+* Mon Mar 13 2017 Caolán McNamara <caolanm@redhat.com> - 1:5.3.1.2-2
+- Resolves: rhbz#1431189 add Indonesian langpack
+
+* Thu Mar 09 2017 David Tardon <dtardon@redhat.com> - 1:5.3.1.2-1
+- update to 5.3.1 rc2
+
+* Thu Feb 23 2017 David Tardon <dtardon@redhat.com> - 1:5.3.1.1-1
+- update to 5.3.1 rc1
+
+* Tue Feb 07 2017 Björn Esser <besser82@fedoraproject.org> - 1:5.3.0.3-3
+- Rebuilt for Boost 1.63
+
+* Thu Feb 02 2017 Caolán McNamara <caolanm@redhat.com> - 1:5.3.0.3-2
+- Resolves: rhbz#1409401 add depend on gtksink gstreamer1 element
+
+* Fri Jan 27 2017 David Tardon <dtardon@redhat.com> - 1:5.3.0.3-1
+- update to 5.3.0 rc3
+
+* Wed Jan 18 2017 David Tardon <dtardon@redhat.com> - 1:5.3.0.2-1
+- update to 5.3.0 rc2
+- temp. disable building of help on ARM to fix build
+
+* Tue Jan 10 2017 David Tardon <dtardon@redhat.com> - 1:5.3.0.1-1
+- update to 5.3.0 rc1
+
+* Tue Dec 27 2016 Caolán McNamara <caolanm@redhat.com> - 1:5.3.0.0-8.beta1
+- try arm build
+
+* Thu Dec 22 2016 Miro Hrončok <mhroncok@redhat.com> - 1:5.3.0.0-7.beta2
+- Rebuild for Python 3.6
+
+* Mon Dec 19 2016 Miro Hrončok <mhroncok@redhat.com> - 1:5.3.0.0-6.beta2
+- Rebuild for Python 3.6
+
+* Thu Dec 15 2016 David Tardon <dtardon@redhat.com> - 1:5.3.0.0-5.beta2
+- update to 5.3.0 beta2
+
+* Tue Dec 13 2016 Caolán McNamara <caolanm@redhat.com> - 1:5.3.0.0-4.beta1
+- rebuild for hunspell-1.5.4
+
+* Wed Nov 23 2016 David Tardon <dtardon@redhat.com> - 1:5.3.0.0-3.beta1
+- update to 5.3.0 beta1
+
+* Tue Nov 08 2016 David Tardon <dtardon@redhat.com> - 1:5.3.0.0-2.alpha1
+- allow abrt to work again
+
+* Sat Oct 22 2016 David Tardon <dtardon@redhat.com> - 1:5.3.0.0-1.alpha1
+- update to 5.3.0 alpha1
+
+* Fri Oct 21 2016 Marek Kasik <mkasik@redhat.com> - 1:5.2.3.1-2
+- Rebuild for poppler-0.48.0
+
+* Sat Oct 15 2016 David Tardon <dtardon@redhat.com> - 1:5.2.3.1-1
+- update to 5.2.3 rc1
+
+* Fri Oct 07 2016 Stephan Bergmann <sbergman@redhat.com> - 1:5.2.2.2-3
+- Resolves: rhbz#1382401 broken export of emojis to HTML
+
+* Thu Sep 29 2016 David Tardon <dtardon@redhat.com> - 1:5.2.2.2-2
+- rebuild for liborcus 0.12
+
+* Wed Sep 21 2016 David Tardon <dtardon@redhat.com> - 1:5.2.2.2-1
+- update to 5.2.2 rc2
+
+* Wed Sep 21 2016 Caolán McNamara <caolanm@redhat.com> - 1:5.2.2.1-5
+- Related: rhbz#1362451 apply patch
+
+* Tue Sep 20 2016 Caolán McNamara <caolanm@redhat.com> - 1:5.2.2.1-4
+- Related: rhbz#1362451 avoid recursive ownerchanged signal during ownerchange
+
+* Mon Sep 19 2016 Caolán McNamara <caolanm@redhat.com> - 1:5.2.2.1-3
+- Related: rhbz#1373933 do less on style-updated
+- Related: rhbz#1353069 don't clear XATTR_FILL from in use styles
+
+* Fri Sep 16 2016 Caolán McNamara <caolanm@redhat.com> - 1:5.2.2.1-2
+- Resolves: rhbz#1373933 gtk 3.21 emits way too many "style-set" signals
+
+* Wed Sep 14 2016 David Tardon <dtardon@redhat.com> - 1:5.2.2.1-1
+- update to 5.2.2 rc1
+
+* Tue Sep 13 2016 Stephan Bergmann <sbergman@redhat.com> - 1:5.2.1.2-3
+- enable dconf support for Fleet Commander
+
+* Mon Sep 05 2016 David Tardon <dtardon@redhat.com> - 1:5.2.1.2-2
+- Resolves: rhbz#1247399 install public jars according to packaging guidelines
+- Resolves: rhbz#1363874 install LibreOfficeKit headers
+
+* Fri Aug 26 2016 David Tardon <dtardon@redhat.com> - 1:5.2.1.2-1
+- update to 5.2.1 rc2
+
+* Thu Aug 11 2016 David Tardon <dtardon@redhat.com> - 1:5.2.1.1-1
+- update to 5.2.1 rc1
+
+* Fri Jul 29 2016 David Tardon <dtardon@redhat.com> - 1:5.2.0.4-1
+- update to 5.2.0 rc4
+
+* Thu Jul 21 2016 David Tardon <dtardon@redhat.com> - 1:5.2.0.3-1
+- update to 5.2.0 rc3
+
+* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:5.2.0.2-4
+- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
+
+* Mon Jul 18 2016 Marek Kasik <mkasik@redhat.com> - 1:5.2.0.2-3
+- Rebuild for poppler-0.45.0
+
+* Thu Jul 07 2016 David Tardon <dtardon@redhat.com> - 1:5.2.0.2-2
+- remove obsolete wiki-publisher requires apache-commons-*
+
+* Thu Jul 07 2016 David Tardon <dtardon@redhat.com> - 1:5.2.0.2-1
+- update to 5.2.0 rc2
+- Resolves: rhbz#1351292 fix switching of modes in Impress
+
+* Tue Jun 28 2016 David Tardon <dtardon@redhat.com> - 1:5.2.0.1-2
+- Resolves: rhbz#1341064 fix test on big endian systems
+
+* Wed Jun 22 2016 David Tardon <dtardon@redhat.com> - 1:5.2.0.1-1
+- update to 5.1.0 rc1
+- Resolves: rhbz#1343752 wrong radiobutton and checkbutton behavior in
+ "view" menu
+- Resolves: rhbz#1349261 do not pull in all variants of english dicts
+
+* Thu Jun 09 2016 David Tardon <dtardon@redhat.com> - 1:5.2.0.0-8.beta2
+- update to 5.2.0 beta2
+
+* Thu May 26 2016 David Tardon <dtardon@redhat.com> - 1:5.2.0.0-7.beta1
+- update to 5.2.0 beta1
+
+* Mon May 16 2016 David Tardon <dtardon@redhat.com> - 1:5.2.0.0-6.alpha1
+- Resolves: rhbz#1327847 remove multilib conflicts in .desktop files
+
+* Fri May 13 2016 David Tardon <dtardon@redhat.com> - 1:5.2.0.0-5.alpha1
+- rebuild for mdds 1.2.0
+- Resolves: rhbz#1325858 fix build on 64-bit secondary arches
+
+* Tue May 10 2016 David Tardon <dtardon@redhat.com> - 1:5.2.0.0-4.alpha1
+- Resolves: rhbz#1333899 recommended pkgs are omitted from default
+ installation
+
+* Tue May 3 2016 Marek Kasik <mkasik@redhat.com> - 1:5.2.0.0-3.alpha1
+- Rebuild for poppler-0.43.0
+
+* Mon May 02 2016 David Tardon <dtardon@redhat.com> - 1:5.2.0.0-2.alpha1
+- Resolves: rhbz#1326602 leakage of removed background image set in master slide
+
+* Fri Apr 22 2016 David Tardon <dtardon@redhat.com> - 1:5.2.0.0-1.alpha1
+- update to 5.2.0 alpha1
+
+* Thu Apr 21 2016 David Tardon <dtardon@redhat.com> - 1:5.1.3.1-1
+- update to 5.1.3 rc1
+- Resolves: tdf#91778 drawing the background over an active cursor
+
+* Mon Apr 18 2016 Caolán McNamara <caolanm@redhat.com> - 1:5.1.2.1-6
+- rebuild for hunspell 1.4.0
+
+* Fri Apr 15 2016 David Tardon <dtardon@redhat.com> - 1:5.1.2.1-5
+- rebuild for ICU 57.1
+
+* Thu Apr 07 2016 Caolán McNamara <caolanm@redhat.com> - 1:5.1.2.1-4
+- gtk3: fix combobox and listbox
+
+* Wed Mar 30 2016 David Tardon <dtardon@redhat.com> - 1:5.1.2.1-3
+- support both glade and glade3
+
+* Mon Mar 21 2016 David Tardon <dtardon@redhat.com> - 1:5.1.2.1-2
+- Resolves: rhbz#1319458 avoid rich deps in Requires
+
+* Wed Mar 16 2016 David Tardon <dtardon@redhat.com> - 1:5.1.2.1-1
+- update to 5.1.2 rc1
+- split VCL plugins into subpackages
+- rename libreoffice-kde to libreoffice-kde4
+- only recommend fonts
+- remove hard dependency on English spell checker and auto-correction
+ rules
+- disable quickstarter
+- move icons and other system-integration stuff to a noarch subpackage
+- disable browser plugin in preparation for its removal in 5.2
+
+* Wed Mar 09 2016 David Tardon <dtardon@redhat.com> - 1:5.1.1.3-2
+- update for liborcus 0.11.0
+
+* Thu Mar 03 2016 David Tardon <dtardon@redhat.com> - 1:5.1.1.3-1
+- update to 5.1.1 rc3
+
+* Fri Feb 26 2016 David Tardon <dtardon@redhat.com> - 1:5.1.1.2-1
+- update to 5.1.1 rc2
+
+* Mon Feb 22 2016 David Tardon <dtardon@redhat.com> - 1:5.1.1.1-5
+- Resolves: rhbz#1310527 add langpack deps
+
+* Tue Feb 16 2016 Caolán McNamara <caolanm@redhat.com> - 1:5.1.1.1-4
+- video playback under wayland with gstreamer gtksink
+
+* Mon Feb 15 2016 David Tardon <dtardon@redhat.com> - 1:5.1.1.1-3
+- rebuild for openCOLLADA soname change
+
+* Sun Feb 14 2016 David Tardon <dtardon@redhat.com> - 1:5.1.1.1-2
+- switch to mdds 1.x
+
+* Thu Feb 11 2016 David Tardon <dtardon@redhat.com> - 1:5.1.1.1-1
+- update to 5.1.1 rc1
+- Resolves: rhbz#1303007 add noarch Provides too
+
+* Thu Feb 11 2016 Caolán McNamara <caolanm@redhat.com> - 1:5.1.0.3-3
+- rework gtk3 themeing to work with latest gtk
+
+* Tue Feb 02 2016 Caolán McNamara <caolanm@redhat.com> - 1:5.1.0.3-2
+- Resolves: rhbz#1303619 nothing provides java-devel(x86_64)
+
+* Wed Jan 27 2016 David Tardon <dtardon@redhat.com> - 1:5.1.0.3-1
+- update to 5.1.0 rc3
+- Resolves: rhbz#1168757 Selecting multiple slides is not reflected in Print
+ dialog
+
+* Fri Jan 22 2016 Marek Kasik <mkasik@redhat.com> - 1:5.1.0.2-5
+- Rebuild for poppler-0.40.0
+
+* Mon Jan 18 2016 Jonathan Wakely <jwakely@redhat.com> - 1:5.1.0.2-4
+- Rebuilt for Boost 1.60
+
+* Sat Jan 16 2016 Mamoru TASAKA <mtasaka@fedoraproject.org> - 1:5.1.0.2-3
+- Remove arch-specific dependency for font subpackage as it is noarch
+
+* Thu Jan 14 2016 Adam Jackson <ajax@redhat.com> - 1:5.1.0.2-2
+- Rebuild for glew 1.13
+
+* Thu Jan 14 2016 David Tardon <dtardon@redhat.com> - 1:5.1.0.2-1
+- update to 5.1.0 rc2
+
+* Thu Dec 17 2015 Bastien Nocera <bnocera@redhat.com> 1:5.1.0.1-2
+- Add GLSL files missing from the package
+- Split up inclusion of latin Serbian files to avoid duplicate listing
+
+* Wed Dec 16 2015 David Tardon <dtardon@redhat.com> - 1:5.1.0.1-1
+- update to 5.1.0 rc1
+
+* Mon Dec 14 2015 David Tardon <dtardon@redhat.com> - 1:5.1.0.0-11.beta2
+- backport more upstream fixes for libreofficekit
+- fix unit test on i686
+
+* Wed Dec 09 2015 David Tardon <dtardon@redhat.com> - 1:5.1.0.0-10.beta2
+- backport upstream fixes for libreofficekit
+
+* Fri Dec 04 2015 David Tardon <dtardon@redhat.com> - 1:5.1.0.0-9.beta2
+- update to 5.1.0 beta2
+
+* Thu Dec 03 2015 Caolán McNamara <caolanm@redhat.com> - 1:5.1.0.0-8.beta1
+- enable and bundle libreofficekit introspection
+
+* Thu Nov 26 2015 David Tardon <dtardon@redhat.com> - 1:5.1.0.0-7.beta1
+- update to 5.1.0 beta1
+
+* Tue Nov 10 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:5.1.0.0-6.alpha1
+- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5
+
+* Thu Nov 05 2015 David Tardon <dtardon@redhat.com> - 1:5.1.0.0-5.alpha1
+- Related: rhbz#1276061 build failure on ppc64
+
+* Tue Nov 03 2015 David Tardon <dtardon@redhat.com> - 1:5.1.0.0-4.alpha1
+- Resolves: rhbz#1276061 build failure on ppc64
+
+* Wed Oct 28 2015 David Tardon <dtardon@redhat.com> - 1:5.1.0.0-3.alpha1
+- rebuild for ICU 56.1
+
+* Tue Oct 27 2015 Eike Rathke <erack@redhat.com> - 1:5.1.0.0-2.alpha1
+- prepare to enable build with ICU 56
+
+* Mon Oct 19 2015 David Tardon <dtardon@redhat.com> - 1:5.1.0.0-1.alpha1
+- update to 5.1.0 alpha1
+
+* Mon Oct 12 2015 David Tardon <dtardon@redhat.com> - 1:5.0.3.1-1
+- update to 5.0.3 rc1
+
+* Thu Oct 08 2015 Caolán McNamara <caolanm@redhat.com> - 1:5.0.2.2-4
+- Resolves: rhbz#1269593 declare support for vnd.libreoffice.cmis:// URLs
+
+* Wed Sep 30 2015 Caolán McNamara <caolanm@redhat.com> - 1:5.0.2.2-3
+- implement save slide background for impress
+
+* Mon Sep 28 2015 Caolán McNamara <caolanm@redhat.com> - 1:5.0.2.2-2
+- Resolves: tdf#93461 captions laid out behind images
+
+* Thu Sep 17 2015 David Tardon <dtardon@redhat.com> - 1:5.0.2.2-1
+- update to 5.0.2 rc2
+
+* Sat Sep 05 2015 David Tardon <dtardon@redhat.com> - 1:5.0.2.1-1
+- update to 5.0.2 rc1
+
+* Sat Aug 22 2015 David Tardon <dtardon@redhat.com> - 1:5.0.1.2-1
+- update to 5.0.1 rc2
+
+* Tue Aug 11 2015 David Tardon <dtardon@redhat.com> - 1:5.0.1.1-1
+- update to 5.0.1 rc1
+
+* Wed Aug 05 2015 Jonathan Wakely <jwakely@redhat.com> 5.0.0.5-2
+- Rebuilt for Boost 1.58
+
+* Mon Aug 03 2015 David Tardon <dtardon@redhat.com> - 1:5.0.0.5-1
+- update to 5.0.0 rc5
+
+* Wed Jul 29 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:5.0.0.4-2
+- Rebuilt for https://fedoraproject.org/wiki/Changes/F23Boost159
+
+* Sat Jul 25 2015 David Tardon <dtardon@redhat.com> - 1:5.0.0.4-1
+- update to 5.0.0 rc4
+
+* Fri Jul 24 2015 Adam Williamson <awilliam@redhat.com> - 1:5.0.0.3-3
+- rebuild for Boost 1.58 (for real this time)
+
+* Wed Jul 22 2015 David Tardon <dtardon@redhat.com> - 1:5.0.0.3-2
+- rebuild for Boost 1.58
+
+* Fri Jul 10 2015 David Tardon <dtardon@redhat.com> - 1:5.0.0.3-1
+- update to 5.0.0 rc3
+
+* Sun Jun 28 2015 David Tardon <dtardon@redhat.com> - 1:5.0.0.2-1
+- update to 5.0.0 rc2
+
+* Sun Jun 21 2015 David Tardon <dtardon@redhat.com> - 1:5.0.0.1-1
+- update to 5.0.0 rc1
+
+* Fri Jun 19 2015 David Tardon <dtardon@redhat.com> - 1:5.0.0.0-8.beta3
+- Resolves: rhbz#1233420 crash on auto-fill
+
+* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:5.0.0.0-7.beta3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Wed Jun 10 2015 David Tardon <dtardon@redhat.com> - 1:5.0.0.0-6.beta3
+- update to 5.0.0 beta3
+
+* Tue Jun 09 2015 David Tardon <dtardon@redhat.com> - 1:5.0.0.0-5.beta2
+- update to 5.0.0 beta2
+
+* Mon Jun 08 2015 David Tardon <dtardon@redhat.com> - 1:5.0.0.0-4.beta1
+- rebuild for poppler 0.33
+
+* Wed May 20 2015 David Tardon <dtardon@redhat.com> - 1:5.0.0.0-3.beta1
+- update to 5.0.0 beta1
+
+* Sat May 16 2015 Kalev Lember <kalevlember@gmail.com> - 1:5.0.0.0-2.alpha1
+- Resolves: rhbz#1215800 install symbolic icons
+
+* Sun Apr 19 2015 David Tardon <dtardon@redhat.com> - 1:5.0.0.0-1.alpha1
+- update to 5.0.0 alpha1
+
+* Tue Apr 14 2015 Stephan Bergmann <sbergman@redhat.com> - 1:4.4.2.2-3
+- Resolves: rhbz#1197614 crash when updating extension
+- Resolves: rhbz#1134285 redundant user/password request for WebDAV access
+
+* Mon Mar 30 2015 Richard Hughes <rhughes@redhat.com> - 1:4.4.2.2-2
+- Use better AppData screenshots
+
+* Thu Mar 26 2015 David Tardon <dtardon@redhat.com> - 1:4.4.2.2-1
+- update to 4.4.2 rc2
+
+* Thu Mar 12 2015 David Tardon <dtardon@redhat.com> - 1:4.4.2.1-1
+- update to 4.2.2 rc1
+
+* Mon Feb 23 2015 David Tardon <dtardon@redhat.com> - 1:4.4.1.2-1
+- update to 4.4.1 rc2
+
+* Tue Feb 10 2015 David Tardon <dtardon@redhat.com> - 1:4.4.1.1-1
+- update to 4.4.1 rc1
+
+* Thu Jan 29 2015 David Tardon <dtardon@redhat.com> - 1:4.4.0.3-5
+- fix build on s390
+
+* Wed Jan 28 2015 Petr Machata <pmachata@redhat.com> - 1:4.4.0.3-4
+- Rebuild for boost 1.57.0
+
+* Wed Jan 28 2015 Petr Machata <pmachata@redhat.com> - 1:4.4.0.3-3
+- Rebuild for boost 1.57.0
+
+* Fri Jan 23 2015 Stephan Bergmann <sbergman@redhat.com> - 1:4.4.0.3-2
+- Related: rhbz#1185307 get search for Hamcrest unstuck
+
+* Fri Jan 23 2015 David Tardon <dtardon@redhat.com> - 1:4.4.0.3-1
+- update to 4.4.0 rc3
+
+* Fri Jan 23 2015 Marek Kasik <mkasik@redhat.com> - 1:4.4.0.2-4
+- Rebuild (poppler-0.30.0)
+
+* Thu Jan 22 2015 Stephan Bergmann <sbergman@redhat.com> - 1:4.4.0.2-3
+- Resolves: rhbz#1184582 crash in grammar checking thread
+
+* Mon Jan 19 2015 David Tardon <dtardon@redhat.com> - 1:4.4.0.2-2
+- Resolves: rhbz#1180114 writerfilter: don't crash on w:customXmlDelRangeStart
+ etc.
+- Resolves: rhbz#1175027 fix life cycle of SwConnectionDisposedListener_Impl
+
+* Fri Jan 09 2015 David Tardon <dtardon@redhat.com> - 1:4.4.0.2-1
+- update to 4.4.0 rc2
+
+* Wed Jan 07 2015 Caolán McNamara <caolanm@redhat.com> - 1:4.4.0.1-2
+- Resolves: rhbz#1177547 system autocorr files not detected
+
+* Sun Dec 21 2014 David Tardon <dtardon@redhat.com> - 1:4.4.0.1-1
+- update to 4.4.0 rc1
+
+* Fri Dec 12 2014 David Tardon <dtardon@redhat.com> - 1:4.4.0.0-6.beta2
+- Resolves: rhbz#1116534 crash when pasting over a formula
+
+* Sat Dec 06 2014 David Tardon <dtardon@redhat.com> - 1:4.4.0.0-5.beta2
+- update to 4.4.0 beta2
+- move officehelper.py to pyuno package so it can be imported from python
+
+* Tue Dec 02 2014 David Tardon <dtardon@redhat.com> - 1:4.4.0.0-4.beta1
+- add Provides: libreoffice-headless; packages are depending on it
+
+* Thu Nov 27 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.4.0.0-3.beta1
+- Resolves: rhbz#1165444 abrt crash with NULL pView
+
+* Thu Nov 27 2014 Marek Kasik <mkasik@redhat.com> - 1:4.4.0.0-2.beta1
+- Rebuild (poppler-0.28.1)
+
+* Sat Nov 22 2014 David Tardon <dtardon@redhat.com> - 1:4.4.0.0-1.beta1
+- update to 4.4.0 beta1
+
+* Fri Nov 21 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.4.1-6
+- Resolves: fdo#86466 Wrong background color shown in impress table
+
+* Thu Nov 20 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.4.1-5
+- Resolves: rhbz#1164551 we want to ensure that a libjvm.so is available
+ but we have no firm interest in which one that is
+
+* Wed Nov 19 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.4.1-4
+- Resolves: rhbz#1165740 arbitrarily backport some rtf crash fixes
+
+* Mon Nov 17 2014 Michael Stahl <mstahl@redhat.com>- 1:4.3.4.1-3
+- set VCL.WM.ShouldSwitchWorkspace to false to avoid virtual desktop switching
+
+* Thu Nov 13 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.4.1-2
+- fix impress table layout cache wrt wrong table selection border
+
+* Tue Nov 11 2014 David Tardon <dtardon@redhat.com> - 1:4.3.4.1-1
+- update to 4.3.4 rc1
+
+* Tue Nov 11 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.3.2-6
+- strip hard coded numbering off outline master previews
+
+* Mon Nov 10 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.3.2-5
+- Resolves: rhbz#1161238 sync PRESOBJ_OUTLINE para depth on load
+
+* Thu Nov 06 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.3.2-4
+- Resolves: fdo#60712 Inherits cell styles in inserting rows/columns
+- implement toggling off removeable master elements with delete
+- Resolves: fdo#78151 change underlying style on toggling bullets on/off in master view
+
+* Thu Nov 06 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.3.2-3
+- Resolves: fdo#76581 copy-and-paste -> slideshow crash in presenter console
+
+* Wed Nov 05 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.3.2-2
+- Resolves: fdo#37559 revert adding extra dummy polygons
+
+* Tue Oct 28 2014 David Tardon <dtardon@redhat.com> - 1:4.3.3.2-1
+- update to 4.3.3 rc2
+
+* Sun Oct 19 2014 David Tardon <dtardon@redhat.com> - 1:4.3.3.1-2
+- enable support for 3-D models
+
+* Thu Oct 09 2014 David Tardon <dtardon@redhat.com> - 1:4.3.3.1-1
+- update to 4.3.3 rc1
+
+* Wed Oct 08 2014 Stephan Bergmann <sbergman@redhat.com> - 1:4.3.2.2-5
+- Resolves: rhbz#1054952 bad access of smb URLs on KDE
+
+* Tue Sep 23 2014 Richard Hughes <richard@hughsie.com> - 1:4.3.2.2-4
+- move appdata files to desktop files, where the belong
+
+* Tue Sep 23 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.2.2-3
+- Resolves: rhbz#1054952 cannot access smb URLs on KDE
+
+* Tue Sep 23 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.2.2-2
+- make brochure printing of impress/draw work out of the box
+- Resolves: rhbz#1133863 fix looping layout
+
+* Mon Sep 22 2014 David Tardon <dtardon@redhat.com> - 1:4.3.2.2-1
+- update to 4.3.2 rc2
+
+* Wed Sep 17 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.2.1-3
+- make n-up printing of impress notes work out of the box
+
+* Wed Sep 17 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.2.1-2
+- Resolves: fdo#80911 don't swap notes page width height
+
+* Fri Sep 12 2014 David Tardon <dtardon@redhat.com> - 1:4.3.2.1-1
+- update to 4.3.2 rc1
+
+* Wed Sep 10 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.1.2-5
+- create a master document template type
+
+* Tue Sep 09 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.1.2-4
+- Resolves: fdo#82496 Change picture option with right click in writer
+
+* Fri Sep 05 2014 David Tardon <dtardon@redhat.com> - 1:4.3.1.2-3
+- build for aarch64
+
+* Fri Aug 29 2014 Stephan Bergmann <sbergman@redhat.com> - 1:4.3.1.2-2
+- Resolves: rhbz#1098693 AArch64 port
+
+* Wed Aug 27 2014 David Tardon <dtardon@redhat.com> - 1:4.3.1.2-1
+- update to 4.3.1 rc2
+
+* Tue Aug 26 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.1.1-8
+- Related: rhbz#1131425 ure only needs jre-headless
+
+* Tue Aug 26 2014 David Tardon <dtardon@redhat.com> - 1:4.3.1.1-7
+- rebuild for ICU 53.1
+
+* Fri Aug 22 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.1.1-6
+- Resolves: rhbz#1131425 move libjawt-using office bean into a subpackage
+- Resolves: rhbz#1125588 port LibreOffice to ppc64le
+
+* Tue Aug 19 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.1.1-5
+- Resolves: rhbz#1131425 try java-headless instead of java
+
+* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:4.3.1.1-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Sat Aug 16 2014 Rex Dieter <rdieter@fedoraproject.org> 1:4.3.1.1-3
+- update mime scriptlets
+
+* Fri Aug 15 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.1.1-2
+- Related: rhbz#1130264 crash in media playback on s390x
+
+* Sun Aug 10 2014 David Tardon <dtardon@redhat.com> - 1:4.3.1.1-1
+- update to 4.3.1 rc1
+
+* Mon Jul 28 2014 David Tardon <dtardon@redhat.com> - 1:4.3.0.4-1
+- update to 4.3.0 rc4
+
+* Fri Jul 25 2014 David Tardon <dtardon@redhat.com> - 1:4.3.0.3-4
+- Resolves: rhbz#1121254 crash when using font selector after adding new font
+
+* Fri Jul 25 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.3.0.3-3
+- Resolves: rhbz#1122868 landscape printing is broken
+
+* Thu Jul 24 2014 David Tardon <dtardon@redhat.com> - 1:4.3.0.3-2
+- avoid image loss in Impress after auto-save
+
+* Wed Jul 16 2014 David Tardon <dtardon@redhat.com> - 1:4.3.0.1-1
+- update to 4.3.0 rc3
+
+* Tue Jul 08 2014 David Tardon <dtardon@redhat.com> - 1:4.3.0.2-2
+- avoid problems detecting HTML files with xls extension
+
+* Wed Jul 02 2014 David Tardon <dtardon@redhat.com> - 1:4.3.0.2-1
+- update to 4.3.0 rc2
+
+* Tue Jun 17 2014 David Tardon <dtardon@redhat.com> - 1:4.3.0.1-1
+- update to 4.3.0 rc1
+
+* Mon Jun 09 2014 David Tardon <dtardon@redhat.com> - 1:4.3.0.0-9.beta2
+- Resolves: rhbz#1105376 FlatODF import/export does not work unless
+ libreoffice-xsltfilter is installed
+
+* Wed Jun 04 2014 David Tardon <dtardon@redhat.com> - 1:4.3.0.0-8.beta2
+- update to 4.3.0 beta2
+
+* Thu May 29 2014 David Tardon <dtardon@redhat.com> - 1:4.3.0.0-7.beta1
+- fix some fallout from the import libs rebase
+
+* Wed May 28 2014 David Tardon <dtardon@redhat.com> - 1:4.3.0.0-6.beta1
+- switch to librevenge-based import libs
+
+* Tue May 27 2014 Kalev Lember <kalevlember@gmail.com> - 1:4.3.0.0-5.beta1
+- Rebuild for boost 1.55.0
+
+* Mon May 26 2014 David Tardon <dtardon@redhat.com> - 1:4.3.0.0-4.beta1
+- unblock build on ARM
+
+* Fri May 23 2014 Petr Machata <pmachata@redhat.com> - 1:4.3.0.0-3.beta1
+- Rebuild for boost 1.55.0
+
+* Fri May 23 2014 David Tardon <dtardon@redhat.com> - 1:4.3.0.0-2.beta1
+- rebuild for boost 1.55.0
+
+* Wed May 21 2014 David Tardon <dtardon@redhat.com> - 1:4.3.0.0-1.beta1
+- update to 4.3.0 beta1
+
+* Fri May 16 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.4.2-14
+- render smart-art with a vector format so it can be scaled nicely
+- fix leak on pasting metafiles into office
+- fix leak on pasting draw items into office
+- fix another leak on scaling metric items
+
+* Thu May 15 2014 David Tardon <dtardon@redhat.com> - 1:4.2.4.2-13
+- fix SDK doc generation with doxygen 1.8.7
+
+* Wed May 14 2014 David Tardon <dtardon@redhat.com> - 1:4.2.4.2-12
+- rebuild for new poppler
+
+* Mon May 12 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.4.2-11
+- Resolves: rhbz#1096747 format->page crash on html doc
+
+* Mon May 12 2014 David Tardon <dtardon@redhat.com> - 1:4.2.4.2-10
+- Resolves: fdo#78119 bad july (červenec) month name support in czech
+ localization
+
+* Mon May 12 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.4.2-9
+- Resolves: rhbz#1096486 avoid access to nonexisting parent
+- Resolves: rhbz#1096295 hard to distinguish slides in slide pane
+
+* Fri May 09 2014 David Tardon <dtardon@redhat.com> - 1:4.2.4.2-8
+- Resolves: rhbz#1071604 Draw depends on files from libreoffice-impress, crashes
+ without them
+
+* Fri May 09 2014 Eike Rathke <erack@redhat.com> - 1:4.2.4.2-7
+- Resolves: fdo#77509 memory corruption / crash in Consolidate
+
+* Thu May 08 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.4.2-6
+- center current slide after changing zoom
+- add a status bar icon to fit slide to window
+- Related: fdo#50697 reset the cache timeout on GetGraphic
+
+* Thu May 08 2014 Stephan Bergmann <sbergman@redhat.com> - 1:4.2.4.2-5
+- Resolves: rhbz#1092589 Thoroughly check whether JRE is still present
+
+* Tue May 06 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.4.2-4
+- clip over-long comments
+
+* Thu May 01 2014 Eike Rathke <erack@redhat.com> - 1:4.2.4.2-3
+- Resolves: fdo#78294 default null-date for document import is 1899-12-30
+
+* Thu May 01 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.4.2-2
+- better scaling of notes-using pages
+
+* Wed Apr 30 2014 David Tardon <dtardon@redhat.com> - 1:4.2.4.2-1
+- update to 4.2.4 rc2
+
+* Fri Apr 25 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.4.1-7
+- Related: rhbz#1032774 disable autoexit when switching monitors
+
+* Thu Apr 24 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.4.1-6
+- Resolves: fdo#37130 use 10pt Default style font for comments
+- Resolves: fdo#60040 crash after undoing master page
+- vertically center printout when including comments
+
+* Wed Apr 23 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.4.1-5
+- add a 'format all comments' feature
+
+* Tue Apr 22 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.4.1-4
+- Resolves: rhbz#1089377 crash on loading a specific rtf
+
+* Tue Apr 22 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.4.1-3
+- sometimes tables in impress don't resize when adding rows
+- Resolves: fdo#71423 crash while editing Impress tables
+
+* Fri Apr 18 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.4.1-2
+- every 2nd print job is incorrectly flagged as failed
+- Related: rhbz#1088625 PresenterPaintManager seen as NULL
+
+* Thu Apr 17 2014 David Tardon <dtardon@redhat.com> - 1:4.2.4.1-1
+- update to 4.2.4 rc1
+
+* Wed Apr 16 2014 David Tardon <dtardon@redhat.com> - 1:4.2.3.3-6
+- install man pages
+- Resolves: rhbz#1086714 overlarge pixmap
+
+* Wed Apr 16 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.3.3-5
+- Resolves: fdo#36815 enable printing WYSIWYG sidewindow comments
+
+* Sat Apr 12 2014 David Tardon <dtardon@redhat.com> - 1:4.2.3.3-4
+- drop filtering of provides again
+
+* Sat Apr 12 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.3.3-3
+- Related: rhbz#1081176 don't jump to cursor pos when we don't want to
+
+* Fri Apr 11 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.3.3-2
+- Resolves: rhbz#1081176 don't jump to cursor pos when we don't want to
+- Related: rhbz#1085916 kde startup woes
+
+* Sat Apr 05 2014 David Tardon <dtardon@redhat.com> - 1:4.2.3.3-1
+- update to 4.2.3 rc3
+
+* Tue Apr 01 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.3.2-3
+- Related: rhbz#1075951 abrt crash in MSWordExportBase
+
+* Mon Mar 31 2014 David Tardon <dtardon@redhat.com> - 1:4.2.3.2-2
+- Resolves: rhbz#1080196 mdds/multi_type_vector_itr.hpp update_node():
+ soffice.bin killed by SIGSEGV
+
+* Wed Mar 26 2014 David Tardon <dtardon@redhat.com> - 1:4.2.3.2-1
+- update to 4.2.3 rc2
+
+* Tue Mar 25 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.3.1-2
+- Resolves: rhbz#1077780 crash on loading a specific docx
+
+* Mon Mar 17 2014 David Tardon <dtardon@redhat.com> - 1:4.2.3.1-1
+- update to 4.2.3 rc1
+
+* Fri Mar 14 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.2.1-7
+- Related: rhbz#1076264 intermittent a11y crash in calc
+
+* Mon Mar 10 2014 Michael Stahl <mstahl@redhat.com> - 1:4.2.2.1-6
+- Resolves: rhbz#988516: DOCX import: fix context stack when importing header
+- Resolves: rhbz#1072553: Fix deselection problems of template view
+- Resolves: rhbz#1072607: fix crash in SvxRuler::MouseMove()
+- Resolves: rhbz#1043551: sw: avoid division-by-0 in Text Grid painting code
+- RTF import: import field parameters
+- RTF import: fix spurious page breaks at doc end
+
+* Tue Mar 04 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.2.1-5
+- Related: rhbz#1065807 wizards should find the right wizards subdir
+ of Template_internal, who knew this stuff was so fragile
+
+* Mon Mar 03 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.2.1-4
+- Related: rhbz#1065807 wizards should look in Template_internal
+
+* Fri Feb 28 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.2.1-3
+- Resolves: rhbz#1007697 Update on a Window deletes itself
+
+* Fri Feb 28 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.2.1-2
+- Related: rhbz#1065807 don't throw with no "Templates" dir under KDE
+
+* Thu Feb 27 2014 David Tardon <dtardon@redhat.com> - 1:4.2.2.1-1
+- update to 4.2.2 rc1
+
+* Thu Feb 27 2014 Stephan Bergmann <sbergman@redhat.com> - 1:4.2.1.1-4
+- Resolves: fdo#75540 spadmin does not start
+
+* Thu Feb 27 2014 David Tardon <dtardon@redhat.com> - 1:4.2.1.1-3
+- Resolves: rhbz#1057977 do not crash when fonts are updated
+
+* Tue Feb 25 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.1.1-2
+- Resolves: rhbz#1065807 search XDG defined "Templates" dir
+
+* Thu Feb 13 2014 David Tardon <dtardon@redhat.com> - 1:4.2.1.1-1
+- update to 4.2.1 rc1
+
+* Thu Feb 13 2014 David Tardon <dtardon@redhat.com> - 1:4.2.0.4-4
+- rebuild for new ICU
+
+* Thu Feb 06 2014 David Tardon <dtardon@redhat.com> - 1:4.2.0.4-3
+- Resolves: rhbz#1017379 libreoffice impress imports animated motion paths
+ incorrectly from powerpoint
+- Resolves: fdo#33852 Custom animation (Motionpath Left) isn't being
+ imported correctly from .ppt
+
+* Thu Jan 30 2014 David Tardon <dtardon@redhat.com> - 1:4.2.0.4-2
+- split LibreLogo into a separate subpackage
+- create a metapackage depending on all subpackages containing filters,
+ for use of packages like unoconv
+
+* Tue Jan 28 2014 David Tardon <dtardon@redhat.com> - 1:4.2.0.4-1
+- update to 4.2.0 rc4
+
+* Fri Jan 24 2014 David Tardon <dtardon@redhat.com> - 1:4.2.0.3-3
+- enable EOT support
+- fix PPC build
+
+* Thu Jan 23 2014 David Tardon <dtardon@redhat.com> - 1:4.2.0.3-2
+- stop showing math and startcenter in menu (again)
+
+* Wed Jan 22 2014 David Tardon <dtardon@redhat.com> - 1:4.2.0.3-1
+- update to 4.2.0 rc3
+
+* Mon Jan 13 2014 Caolán McNamara <caolanm@redhat.com> - 1:4.2.0.2-2
+- Related: rhbz#1047871 conditional formatting doesn't fit on screen
+
+* Thu Jan 09 2014 David Tardon <dtardon@redhat.com> - 1:4.2.0.2-1
+- update to 4.2.0 rc2
+- Resolves: rhbz#1049543 Include AppData files in packages
+
+* Tue Jan 07 2014 David Tardon <dtardon@redhat.com> - 1:4.2.0.1-1
+- 4.2.0 rc1
+
+* Wed Dec 11 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.2.0.0-3.beta2
+- Resolves: rhbz#1040291 Change language name from "Oriya" to "Odia"
+
+* Wed Dec 04 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.2.0.0-2.beta2
+- update to 4.2.0 beta2
+- Related: rhbz#1032774 bodge around reported NULL
+- Resolves: rhbz#1035092 no shortcut key for Italian 'Tools' menu
+- Resolves: rhbz#912529 Kerkis SmallCaps shown instead of Kerkis Regular
+- Resolves: rhbz#1038189 refresh printer list when print dialog launched
+- openssl no longer required to build
+
+* Thu Nov 21 2013 David Tardon <dtardon@redhat.com> - 1:4.2.0.0-1.beta1
+- switch to 4.2.0
+
+* Wed Nov 20 2013 Stephan Bergmann <sbergman@redhat.com> - 1:4.1.3.2-5
+- Resolves: rhbz#1031989 Accept --pt in addition to deprecated -pt
+- Related: rhbz#1014990 valgrind reports uninitialized variables
+
+* Sun Nov 03 2013 David Tardon <dtardon@redhat.com> - 1:4.1.3.2-4
+- adapt for libmwaw 0.2
+
+* Thu Oct 31 2013 David Tardon <dtardon@redhat.com> - 1:4.1.3.2-3
+- Resolves: fdo#56209 reviving FilterFormulaParser
+
+* Thu Oct 31 2013 Stephan Bergmann <sbergman@redhat.com> - 1:4.1.3.2-2
+- Resolves: fdo#67725 unoidl::AggregatingCursor must wrap modules for aggregation
+- Resolves: rhbz#1021915 force menubar menus to be up/down only
+- Resolves: rhbz#1025201 Incorrect rendering of Devanagari short i
+
+* Wed Oct 23 2013 David Tardon <dtardon@redhat.com> - 1:4.1.3.2-1
+- 4.1.3 rc2
+- Resolves: rhbz#1022094 libreoffice-4.1.3.1-1 was built without
+ langpacks
+
+* Mon Oct 21 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.1.3.1-2
+- Resolves: rhbz#1020712 wrong default CTL font shown in editengine
+- Resolves: rhbz#919070 display -1 means span all screens
+
+
+* Wed Oct 16 2013 David Tardon <dtardon@redhat.com> - 1:4.1.3.1-1
+- 4.1.3 rc1
+
+* Mon Oct 07 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.1.2.3-4
+- Resolves: rhbz#1001768: fix various a11y deadlocks and crashes
+- Resolves: rhbz#1016022 fix cut from impress and paste to writer
+- Resolves: rhbz#1003179 fix AUTOFMT related crashes in Writer Undo
+
+* Mon Oct 07 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.1.2.3-3
+- Resolves: rhbz#1015281 crash on clicking custom animation
+- Resolves: rhbz#996162 crash with no bullet font
+
+* Wed Oct 02 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.1.2.3-2
+- Resolves: rhbz#1013480 crash in EditLineList::operator[]
+- Resolves: rhbz#1014010 crash on start up
+- Resolves: rhbz#1013844 encrypted OOo 1.0 files don't reopen
+
+* Mon Sep 30 2013 David Tardon <dtardon@redhat.com> - 1:4.1.2.3-1
+- 4.1.2 rc3
+
+* Fri Sep 20 2013 David Tardon <dtardon@redhat.com> - 1:4.1.2.2-1
+- 4.1.2 rc2
+
+* Tue Sep 17 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.1.2.1-3
+- add select sheet menu to calc prev/next area
+- Resolves: rhbz#988104 crash on certain pptx
+
+* Thu Sep 12 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.1.2.1-2
+- Resolves: rhbz#1006850 crash in SwCommentRuler
+
+* Thu Sep 05 2013 David Tardon <dtardon@redhat.com> - 1:4.1.2.1-1
+- 4.1.2 rc1
+
+* Tue Sep 03 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.1.1.2-3
+- Resolves: rhbz#993963 NULL m_pWindow on firefox close plugin window
+
+* Fri Aug 23 2013 Stephan Bergmann <sbergman@redhat.com> - 1:4.1.1.2-2
+- Resolves: rhbz#1000150, Do not call exit upon XIOError
+
+* Thu Aug 22 2013 David Tardon <dtardon@redhat.com> - 1:4.1.1.2-1
+- 4.1.1 rc2
+- Related: rhbz#895690 Always try to do a mount when opening a file via GIO
+- Resolves: rhbz#998136 wrong index to gWidgetData
+- Resolves: rhbz#998046 store last size/position of the base windows
+
+* Mon Aug 19 2013 Marek Kasik <mkasik@redhat.com> - 1:4.1.1.1-2
+- Rebuild (poppler-0.24.0)
+
+* Fri Aug 09 2013 David Tardon <dtardon@redhat.com> - 1:4.1.1.1-1
+- 4.1.1 rc1
+
+* Fri Aug 09 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.1.0.4-6
+- Resolves: fdo#67743 user autocorr file not written
+
+* Tue Jul 30 2013 Stephan Bergmann <sbergman@redhat.com> - 1:4.1.0.4-5
+- Resolves: rhbz#989246 Honor user's JavaDriverClass override in mysql driver
+- Resolves: fdo#67045 fix several nasty screen selection issues
+
+* Tue Jul 30 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.1.0.4-4
+- Resolves: rhbz#989686 Fix crash with stripping whitespace from toc entries
+
+* Mon Jul 29 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.4-3
+- make libwpd-based filters work correctly with newest libwpd
+
+* Sun Jul 28 2013 Petr Machata <pmachata@redhat.com> - 1:4.1.0.4-2
+- Rebuild for boost 1.54.0
+
+* Wed Jul 24 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.4-1
+- 4.1.0 rc4
+
+* Mon Jul 22 2013 Eike Rathke <erack@redhat.com> - 1:4.1.0.3-2
+- force rebuild with icu-50.1.2-7
+
+* Thu Jul 18 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.3-1
+- 4.1.0 rc3
+- Resolves: fdo#48835 GNOME3 app menu
+
+* Thu Jul 18 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.1.0.2-5
+- silence scary gcc warning
+- fdo#66924 switching to master view is broken
+
+* Tue Jul 16 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.2-4
+- bump release
+
+* Fri Jul 12 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.2-3
+- Resolves: rhbz#983809 libreoffice-base misses deps on needed java packages
+
+* Thu Jul 11 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.2-2
+- Resolves: rhbz#980387 Exporting a odg to jpg or tiff generates error
+
+* Thu Jul 04 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.2-1
+- 4.1.0 rc2
+
+* Mon Jul 01 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.1.0.1-8
+- Resolves: rhbz#979758 crash on Diagrammen in LibreOffice help page
+
+* Thu Jun 27 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.1-7
+- bump revision
+
+* Mon Jun 24 2013 Marek Kasik <mkasik@redhat.com> - 1:4.1.0.1-6
+- Rebuild (poppler-0.22.5)
+
+* Mon Jun 24 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.1-5
+- fix build on big endian archs
+
+* Mon Jun 24 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.1-4
+- put glade catalog into an extra packgae
+
+* Sun Jun 23 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.1.0.1-3
+- Resolves: rhbz#976304 gallery elements may not insert
+
+* Wed Jun 19 2013 Dennis Gilmore <dennis@ausil.us> - 1:4.1.0.1-2
+- fix _smp_mflags macro useage
+
+* Wed Jun 19 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.1-1
+- 4.1.0 rc1
+- Related: rhbz#971321 failing tests on ppc and s390
+
+* Sun Jun 16 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.0-9.beta2
+- Resolves: rhbz#971321 failing tests on ppc and s390
+- Resolves: rhbz#974062 incorrect rendering of text in outline blocks in
+ Impress
+
+* Fri Jun 07 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.0-8.beta2
+- Related: rhbz#971795 go back to BR: harfbuzz-devel
+
+* Fri Jun 07 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.0-7.beta2
+- Resolves: rhbz#971230 Use BR: harfbuzz-icu-devel
+
+* Wed Jun 05 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.0-7.beta1
+- 4.1.0 beta2
+
+* Wed Jun 05 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.1.0.0-6.beta1
+- Related: rhbz#968892 discard impossible languages for Oriya script
+
+* Tue Jun 04 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.1.0.0-5.beta1
+- Resolves: rhbz#968892 block entire grapheme together for glyph fallback
+- Related: rhbz#968892 discard impossible languages for glyph fallback
+
+* Fri May 31 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.1.0.0-4.beta1
+- Resolves: rhbz#968976 fix dropdown list autosizing
+
+* Thu May 30 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.0-3.beta1
+- build fix for s390
+
+* Fri May 24 2013 David Tardon <dtardon@redhat.com> - 1:4.1.0.0-2.beta1
+- 4.1.0 beta1
+
+* Fri May 24 2013 Stephan Bergmann <sbergman@redhat.com> - 1:4.0.3.3-3
+- Resolves: rhbz#961460 can't save WebDAV (davs) files
+
+* Thu May 16 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.0.3.3-2
+- Resolves: rhbz#963276 font options cache crash
+
+* Fri May 03 2013 David Tardon <dtardon@redhat.com> - 1:4.0.3.3-1
+- 4.0.3 rc3
+
+* Tue Apr 30 2013 David Tardon <dtardon@redhat.com> - 1:4.0.3.2-1
+- 4.0.3 rc2
+
+* Mon Apr 22 2013 Stephan Bergmann <sbergman@redhat.com> - 1:4.0.3.1-2
+- Resolves: rhbz#954991 Avoid static data (causing trouble at exit)
+
+* Thu Apr 18 2013 David Tardon <dtardon@redhat.com> - 1:4.0.3.1-1
+- 4.0.3 rc1
+- Resolves: rhbz#867808 do not throw UNO exceptions by pointer in C++
+
+* Tue Apr 16 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.0.2.2-4
+- Resolves: rhbz#927223 syntax highlighting crash
+
+* Mon Apr 08 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.0.2.2-3
+- Resolves: rhbz#949238 div by zero on pagedown in 0 width panel
+
+* Fri Apr 05 2013 Kalev Lember <kalevlember@gmail.com> - 1:4.0.2.2-2
+- Resolves: rhbz#949106 libreoffice drags in both openjdk 1.7.0 and 1.8.0
+
+* Thu Mar 28 2013 David Tardon <dtardon@redhat.com> - 1:4.0.2.2-1
+- 4.0.2 rc2
+- Resolves: rhbz#876742 manipulation with larger tables in impress is
+ very slow
+
+* Fri Mar 15 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.0.2.1-2
+- Resolves: rhbz#906137 slide show inverts outputs
+
+* Fri Mar 15 2013 David Tardon <dtardon@redhat.com> - 1:4.0.2.1-1
+- 4.0.2 rc1
+- Resolves: rhbz#921716 Build Breton language pack
+
+* Wed Mar 13 2013 Stephan Bergmann <sbergman@redhat.com> - 1:4.0.1.2-4
+- Resolves: rhbz#895690 failure saving to gvfs mounts
+
+* Tue Mar 12 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.0.1.2-3
+- Resolves: rhbz#920697 presentation not always full-screen
+
+* Thu Mar 07 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.0.1.2-2
+- Related: rhbz#902884 check for NULL GetSelectedMasterPage
+- Resolves: fdo#61241 force area page to size itself
+- Resolves: fdo#61656 use order and orientation combobox
+- Resolves: fdo#56031 RSID attr changes drop content changes
+
+* Thu Feb 28 2013 David Tardon <dtardon@redhat.com> - 1:4.0.1.2-1
+- 4.0.1 rc2
+
+* Tue Feb 26 2013 Eike Rathke <erack@redhat.com> - 1:4.0.0.3-8
+- do not access vector elements beyond size, rhbz#847519 related
+- Resolves: rhbz#742780 let make OPT_FLAGS=... override SDK flags
+- Resolves: rhbz#907933 crash on removing second last para
+
+* Tue Feb 19 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.0.0.3-7
+- Resolves: rhbz#895196 sc filter float a11y parent of itself
+
+* Tue Feb 19 2013 David Tardon <dtardon@redhat.com> - 1:4.0.0.3-6
+- Resolves: rhbz#911896 add Kazakh localization
+
+* Fri Feb 15 2013 Caolán McNamara <caolanm@redhat.com> - 1:4.0.0.3-5
+- make evolution 3.6 work with address book
+- Resolves: rhbz#910176 cannot select directory with gtk folder picker
+- fixes for building against Boost 1.53.0
+
+* Fri Feb 15 2013 Stephan Bergmann <sbergman@redhat.com> - 1:4.0.0.3-4
+- Resolves: fdo#60491 missing libemboleobj.so
+- Resolves: rhbz#908674 crash on start
+
+* Sat Feb 09 2013 Denis Arnaud <denis.arnaud_fedora@m4x.org> - 1:4.0.0.3-3
+- Rebuild for Boost-1.53.0
+
+* Wed Feb 06 2013 David Tardon <dtardon@redhat.com> - 1:4.0.0.3-2
+- fix parsing errors in translated help
+
+* Fri Feb 01 2013 David Tardon <dtardon@redhat.com> - 1:4.0.0.3-1
+- 4.0.0 rc3
+
+* Wed Jan 23 2013 David Tardon <dtardon@redhat.com> - 1:4.0.0.2-1
+- 4.0.0 rc2
+- use ucpp again
+
+* Tue Jan 22 2013 David Tardon <dtardon@redhat.com> - 1:4.0.0.1-3
+- Resolves: rhbz#760765 Impress doesn't copy custom styles from one file
+ to another
+
+* Mon Jan 21 2013 David Tardon <dtardon@redhat.com> - 1:4.0.0.1-2
+- Resolves: rhbz#901346 do not install 512x512 icons
+
+* Tue Jan 15 2013 David Tardon <dtardon@redhat.com> - 1:4.0.0.1-1
+- 4.0.0 rc1
+
+* Sat Dec 22 2012 David Tardon <dtardon@redhat.com> - 1:4.0.0.0-4.beta2
+- use system cpp instead of ucpp
+
+* Wed Dec 19 2012 David Tardon <dtardon@redhat.com> - 1:4.0.0.0-3.beta2
+- 4.0.0 beta2
+
+* Thu Dec 06 2012 David Tardon <dtardon@redhat.com> - 1:4.0.0.0-2.beta1
+- 4.0.0 beta1
+
+* Thu Nov 29 2012 David Tardon <dtardon@redhat.com> - 1:3.6.4.3-1
+- 3.6.4 rc3
+
+* Wed Nov 28 2012 Caolán McNamara <caolanm@redhat.com> - 1:3.6.4.1-2
+- fix docx import on big endian
+
+* Sun Nov 18 2012 David Tardon <dtardon@redhat.com> - 1:3.6.4.1-1
+- 3.6.4 rc1
+
+* Wed Nov 14 2012 Caolán McNamara <caolanm@redhat.com> - 1:3.6.3.2-8
+- Resolves: rhbz#872815 ogltrans effects still suboptimal
+
+* Tue Nov 13 2012 Caolán McNamara <caolanm@redhat.com> - 1:3.6.3.2-7
+- big endian test failure
+
+* Thu Nov 08 2012 Caolán McNamara <caolanm@redhat.com> - 1:3.6.3.2-6
+- Resolves: fdo#56198/rhbz#868002 honour gtk-scrollbar-warp-preference
+
+* Tue Nov 06 2012 Caolán McNamara <caolanm@redhat.com> - 1:3.6.3.2-5
+- bump for libexttextcat
+
+* Fri Nov 02 2012 David Tardon <dtardon@redhat.com> - 1:3.6.3.2-4
+- Resolves: rhbz#871929 add keywords to desktop files
+- fix debuginfo
+
+* Wed Oct 31 2012 Eike Rathke <erack@redhat.com> - 1:3.6.3.2-3
+- Resolves: rhbz#865058 increase number of user-defined format codes
+
+* Fri Oct 26 2012 David Tardon <dtardon@redhat.com> - 1:3.6.3.2-2
+- Resolves: rhbz#824035 do not bundle saxon
+
+* Wed Oct 24 2012 David Tardon <dtardon@redhat.com> - 1:3.6.3.2-1
+- 3.6.3 rc2
+- drop integrated 0001-Resolves-rhbz-868479-fdo-56281-doubled-in-German-ok-.patch
+
+* Mon Oct 22 2012 Caolán McNamara <caolanm@redhat.com> - 1:3.6.3.1-3
+- Resolves: rhbz#868479 guard against duplicated ~ in OK/Cancel
+
+* Thu Oct 11 2012 David Tardon <dtardon@redhat.com> - 1:3.6.3.1-2
+- Resolves: rhbz#858641 backport gstreamer 1.0 support to F-18
+
+* Thu Oct 11 2012 Caolán McNamara <caolanm@redhat.com> - 1:3.6.3.1-1
+- 3.6.3 rc1
+- drop integrated 0001-Resolves-rhbz-855972-crash-on-switching-to-outline-v.patch
+- drop integrated 0001-fdo-52022-Simple-LargeControlPoints-actually-can-hav.patch
+- drop integrated 0001-fdo-46071-Do-not-hide-windows-based-on-nil-Visible-p.patch
+
+* Fri Oct 05 2012 Stephan Bergmann <sbergman@redhat.com> - 1:3.6.2.2-3
+- Resolves: fdo#46071 Do not hide windows based on nil Visible property
+
+* Fri Oct 05 2012 Stephan Bergmann <sbergman@redhat.com> - 1:3.6.2.2-2
+- Resolves: fdo#52022 Part of data in userdir is lost on upgrade
+
+* Wed Sep 26 2012 David Tardon <dtardon@redhat.com> - 1:3.6.2.2-1
+- 3.6.2 rc2
+
+* Wed Sep 12 2012 Caolán McNamara <caolanm@redhat.com> - 1:3.6.2.1-2
+- Resolves: rhbz#855541 XIOError handler multithread woes
+
+* Wed Sep 12 2012 David Tardon <dtardon@redhat.com> - 1:3.6.2.1-1
+- 3.6.2 rc1
+
+* Tue Sep 11 2012 Caolán McNamara <caolanm@redhat.com> - 1:3.6.1.2-4
+- Resolves: rhbz#855507 large ole2 compound files fail to load
+
+* Mon Sep 10 2012 Caolán McNamara <caolanm@redhat.com> - 1:3.6.1.2-3
+- Resolves: rhbz#855972 crash on switching to outline view
+
+* Wed Aug 29 2012 Caolán McNamara <caolanm@redhat.com> - 1:3.6.1.2-2
+- Related: rhbz#850709 hunspell en-US available standalone so
+ make English langpack require hunspell-en and core just
+ bare bones hunspell-en-US
+
+* Sun Aug 26 2012 David Tardon <dtardon@redhat.com> - 1:3.6.1.2-1
+- 3.6.1 rc2
+
+* Wed Aug 22 2012 Caolán McNamara <caolanm@redhat.com> - 1:3.6.1.1-2
+- Resolves: rhbz#846775 Clipboard must be disposed before selection
+- Resolves: rhbz#842292 crash in scrolling multiselection in draw
+
+* Wed Aug 15 2012 David Tardon <dtardon@redhat.com> - 1:3.6.1.1-1
+- 3.6.1 rc1
+
+* Sun Aug 12 2012 Kevin Fenzi <kevin@scrye.com> - 1:3.6.0.4-3
+- Rebuild for new boost
+
+* Sat Jul 28 2012 David Tardon <dtardon@redhat.com> - 1:3.6.0.4-2
+- rebuilt for boost 1.50
+
+* Fri Jul 27 2012 David Tardon <dtardon@redhat.com> - 1:3.6.0.4-1
+- 3.6.0 rc4
+
+* Thu Jul 26 2012 David Tardon <dtardon@redhat.com> - 1:3.6.0.3-2
+- Resolves: rhbz#842552 crash in pptx import
+
+* Wed Jul 25 2012 David Tardon <dtardon@redhat.com> - 1:3.6.0.3-1
+- 3.6.0 rc3
+
+* Tue Jul 17 2012 David Tardon <dtardon@redhat.com> - 1:3.6.0.2-1
+- 3.6.0 rc2
+
+* Mon Jul 16 2012 Caolán McNamara <caolanm@redhat.com> - 1:3.6.0.1-3
+- Resolves: rhbz#836937 insanely slow with Zemberek
+
+* Mon Jul 16 2012 David Tardon <dtardon@redhat.com> - 1:3.6.0.1-2
+- rebuild for new libexttextcat
+
+* Thu Jul 12 2012 David Tardon <dtardon@redhat.com> - 3.6.0.1-1
+- 3.6.0 rc1
+
+* Mon Jul 09 2012 Caolán McNamara <caolanm@redhat.com> - 3.6.0.0-4
+- Resolves: rhbz#838368 --view ignored while -view accepted
+
+* Thu Jul 05 2012 David Tardon <dtardon@redhat.com> - 3.6.0.0-3
+- 3.6.0 beta3
+
+* Mon Jul 2 2012 Marek Kasik <mkasik@redhat.com> - 3.6.0.0-2
+- Rebuild (poppler-0.20.1)
+
+* Wed Jun 27 2012 David Tardon <dtardon@redhat.com> - 3.6.0.0-1
+- 3.6.0 beta2
+- drop integrated 0001-move-binfilter-mime-types-into-extra-.desktop-file.patch
+- drop integrated 0001-Resolves-rhbz-788042-skip-splashscreen-with-quicksta.patch
+- drop integrated libreoffice-ensure-non-broken-xml-tree.patch
+- drop integrated 0001-preserve-timestamps-for-.py-files.patch
+- drop integrated 0001-Resolves-rhbz-788045-swriter-help-etc-doesn-t-show-h.patch
+- drop integrated 0001-Resolves-rhbz-799525-put-flat-odf-mimetypes-in-xsltf.patch
+- drop integrated 0001-Resolves-rhbz-800272-complain-about-unknown-command-.patch
+- drop integrated 0001-Resolves-rhbz-806663-SlideshowImpl-can-outlive-SdMod.patch
+- drop integrated 0001-desktop-do-not-complain-about-soffice-command-line-o.patch
+- drop integrated 0001-Resolves-fdo-48096-torn-off-popups-trigger-keyboard-.patch
+- drop integrated 0001-fdo-38088-better-CSV-import-default-separators.patch
+- drop integrated 0001-save-register-arguments-first.patch
+- drop integrated 0001-do-not-let-gcc-use-registers-we-are-setting-ourselve.patch
+- drop integrated 0001-wrong-types-used-here-breaks-64bit-bigendian.patch
+- drop integrated 0001-Resolves-rhbz-805743-a11y-call-doShow-after-we-have-.patch
+- drop integrated 0001-Resolves-fdo-49849-implement-Unicode-6.1-hebrew-line.patch
+- drop integrated 0001-use-ure-instead-of-ure-link.patch
+- drop broken 0001-fix-setting-of-paper-tray-from-print-dialog-fdo-4393.patch
+
+* Mon Jun 18 2012 Caolán McNamara <caolanm@redhat.com> - 3.5.5.1-2
+- Resolves: rhbz#830810 missing dependency on lucene-contrib
+
+* Thu Jun 14 2012 David Tardon <dtardon@redhat.com> - 3.5.5.1-1
+- 3.5.5 rc1
+- drop integrated 0001-make-hsqldb-build-with-java-1.7.patch
+- drop integrated 0001-Related-rhbz-799628-crash-with-chewing-IM-with-g3g.patch
+- drop integrated 0001-silence-SolarMutex-not-locked-spew.patch
+- drop integrated 0001-gcc-trunk-fix-unable-to-find-string-literal-operator.patch
+- drop integrated 0001-ppc-yyinput-returns-a-int-truncating-to-unsigned-cha.patch
+- drop integrated 0001-Resolves-rhbz-826609-rhbz-820554-fix-smoketest-on-pp.patch
+
+* Mon Jun 11 2012 David Tardon <dtardon@redhat.com> - 3.5.4.2-3
+- make gdb pretty printers for URE libs usable again
+
+* Fri Jun 08 2012 Caolán McNamara <caolanm@redhat.com> - 3.5.4.2-2
+- Resolves: rhbz#826609, rhbz#820554 fix smoketest on ppc[64] and s390[x]
+
+* Wed May 23 2012 David Tardon <dtardon@redhat.com> - 3.5.4.2-1
+- 3.5.4 rc2
+
+* Thu May 17 2012 Caolán McNamara <caolanm@redhat.com> - 3.5.4.1-2
+- Resolves: rhbz#811226 ARM FTBFS
+
+* Wed May 16 2012 David Tardon <dtardon@redhat.com> - 3.5.4.1-1
+- 3.5.4 rc1
+- drop integrated 0001-do-not-prepend-n-twice-it-confuses-KFileDialog-rhbz-.patch
+- drop integrated 0001-incrementing-index-twice-in-one-run-seems-wrong.patch
+- drop integrated 0001-fdo-49365-correctly-map-monitor-index-back-to-screen.patch
+- drop integrated 0001-rhbz-809019-count-mirrored-monitors-as-one.patch
+
+* Sun May 13 2012 Caolán McNamara <caolanm@redhat.com> - 3.5.3.2-5
+- Resolves: fdo#49849 line breaking fixes for Hebrew
+
+* Fri May 11 2012 David Tardon <dtardon@redhat.com> - 3.5.3.2-4
+- Resolves: rhbz#820439 KDE export dialog broken for most formats
+- Resolves: fdo#49365 Libreoffice fails to start on second screen with
+ gtk vcl plugin
+- Resolves: rhbz#809019 Impress thinks a machine with 2 monitors in
+ clone mode is multihead
+
+* Wed May 09 2012 Caolán McNamara <caolanm@redhat.com> - 3.5.3.2-3
+- Resolves: rhbz#805743 a11y crash in impress/draw
+- Resolves: rhbz#813202 opengl slide transitions still a bit
+ problematic in Fedora 17
+
+* Thu May 03 2012 David Tardon <dtardon@redhat.com> - 3.5.3.2-2
+- rebuild for changed dependencies
+
+* Wed Apr 25 2012 David Tardon <dtardon@redhat.com> - 3.5.3.2-1
+- 3.5.3 rc2
+- fix broken test on 64bit big endian
+
+* Mon Apr 23 2012 David Tardon <dtardon@redhat.com> - 3.5.3.1-2
+- rebuild for icu
+- fix UNO bridges for ppc and ppc64
+
+* Thu Apr 19 2012 David Tardon <dtardon@redhat.com> - 3.5.3.1-1
+- 3.5.3 rc1
+- drop integrated 0001-Introduced-SystemShellExecuteFlags-URIS_ONLY.patch
+- drop integrated 0001-Simplify-code-and-use-proper-register-names-for-linu.patch
+- drop integrated 0001-resolved-rhbz-813280-the-current-document-is-not-alw.patch
+
+* Wed Apr 18 2012 Eike Rathke <erack@redhat.com> - 3.5.2.1-7
+- Resolves: rhbz#813280 sheets cannot be moved in Calc
+
+* Wed Apr 11 2012 Eike Rathke <erack@redhat.com> - 3.5.2.1-6
+- Resolves: fdo#38088 rhbz#810267 better CSV import default separators
+
+* Tue Apr 10 2012 Caolán McNamara <caolanm@redhat.com> - 3.5.2.1-5
+- Resolves: rhbz#811226 FTBFS ARM
+
+* Thu Apr 05 2012 Stephan Bergmann <sbergman@redhat.com> - 3.5.2.1-4
+- Fix URIS_ONLY flag issue
+- rebuild for db4
+
+* Mon Apr 02 2012 Caolán McNamara <caolanm@redhat.com> - 3.5.2.1-3
+- Resolves: rhbz#708041 focus problems with tearable menus
+
+* Mon Mar 26 2012 Caolán McNamara <caolanm@redhat.com> - 3.5.2.1-2
+- Resolves: rhbz#806663 SlideshowImpl can outlive SdModule
+
+* Sun Mar 25 2012 David Tardon <dtardon@redhat.com> - 3.5.2.1-1
+- 3.5.2 rc1
+-drop integrated 0001-yet-another-clash-with-macro-name.patch
+
+* Wed Mar 14 2012 David Tardon <dtardon@redhat.com> - 3.5.1.2-2
+- Resolves: rhbz#770209 can't change paper tray setting while printing
+
+* Thu Mar 08 2012 David Tardon <dtardon@redhat.com> - 3.5.1.2-1
+- 3.5.1 rc2
+
+* Tue Mar 06 2012 Caolán McNamara <caolanm@redhat.com> - 3.5.1.1-3
+- Resolves: rhbz#799628 crash with chewing IM with g3g
+- Resolves: rhbz#799525 put flat odf mimetypes into xsltfilter.desktop
+- Resolves: rhbz#800272 complain about unknown commandline options
+
+* Wed Feb 29 2012 Caolán McNamara <caolanm@redhat.com> - 3.5.1.1-2
+- Resolves: rhbz#788045 swriter --help doesn't show help
+- Resolves: rhbz#798667 missing .desktop icons
+
+* Sun Feb 26 2012 David Tardon <dtardon@redhat.com> - 3.5.1.1-1
+- 3.5.1 rc1
+- drop 0001-Resolves-fdo-43644-survive-registered-but-unavailabl.patch
+- drop 0001-Resolves-rhbz-789622-Adapt-SDK-to-changed-paths-in-L.patch
+- drop 0001-Fix-fdo-45177-avoid-linked-undo-for-the-while.patch
+- drop 0001-Fix-some-apparent-misuses-of-RTL_CONSTASCII_USTRINGP.patch
+- drop binfilter-Fix-some-apparent-misuses-of-RTL_CONSTASCII_USTRINGP.patch
+- Resolves: fdo#45177 avoid linked undo crash
+- Fix some apparent misuses of RTL_CONSTASCII_USTRINGPARAM (cherry-picked from
+ upstream libreoffice-3-5 branch)
+
+* Tue Feb 14 2012 Stephan Bergmann <sbergman@redhat.com> - 3.5.0.3-5
+- Resolves rhbz#789622: Adapt SDK to changed paths in LO installation
+
+* Mon Feb 13 2012 Caolán McNamara <caolanm@redhat.com> - 3.5.0.3-4
+- ensure gdb .py files have the same timstamps so that multilib
+ .pyc's and .pyo's have the same content (timestamp in binary cache)
+
+* Sat Feb 11 2012 Caolán McNamara <caolanm@redhat.com> - 3.5.0.3-3
+- make sure .tree files don't get busted again
+
+* Tue Feb 07 2012 Stephan Bergmann <sbergman@redhat.com> - 3.5.0.3-2
+- junit4 -> junit
+- Resolves: rhbz#788042 skip splashscreen with quickstarter
+- with split binfilter we need fix for fdo#43644
+
+* Thu Feb 02 2012 David Tardon <dtardon@redhat.com> - 3.5.0.3-1
+- 3.5.0 rc3
+- Resolves: rhbz#786328 add nlpsolver subpackage
+- split legacy binary filters into subpackage
+
+* Thu Jan 26 2012 Stephan Bergmann <sbergman@redhat.com> - 3.5.0.2-2
+- add libreoffice-postgresql subpackage
+
+* Wed Jan 25 2012 David Tardon <dtardon@redhat.com> - 3.5.0.2-1
+- 3.5.0 rc2
+
+* Thu Jan 19 2012 David Tardon <dtardon@redhat.com> - 3.5.0.1-1
+- 3.5.0 rc1
+- drop integrated 0001-workaround-internal-compiler-error-with-gcc-4.7.patch
+- drop integrated 0001-fix-for-gcc-4.7-C-11-these-are-not-string-literal-op.patch
+- drop integrated 0001-fix-for-gcc-4.7-C-11-this-is-not-string-literal-oper.patch
+- drop integrated 0001-Revert-fast_merge-fix-mis-merge-of-first-module-s-st.patch
+- drop integrated 0001-fix-writing-of-strings-from-the-first-module.patch
+- drop integrated 0001-refactor-slightly-to-avoid-link-problems-with-gcc-4..patch
+
+* Fri Jan 13 2012 David Tardon <dtardon@redhat.com> - 3.4.99.3-1
+- 3.5.0 beta3
+- drop integrated 0001-fix-syntactic-error.patch
+- drop integrated 0001-gcc-trunk-fix-error-unable-to-find-string-literal-op.patch
+- drop integrated 0001-gcc-trunk-avoid-confusion.patch
+- drop integrated 0001-workaround-for-LO-namespace-pollution-breaking-KDE4-.patch
+- drop integrated 0001-smath-does-not-handle-accents-in-MathML.patch
+- Resolves: rhbz#533318 smath does not handle accents in MathML
+- Resolves: rhbz#771108 English menu in writer despite installation of
+ libreoffice-langpack-de
+
+* Fri Jan 06 2012 David Tardon <dtardon@redhat.com> - 3.4.99.2-2
+- rebuild with gcc 4.7
+
+* Wed Dec 21 2011 David Tardon <dtardon@redhat.com> - 3.4.99.2-1
+- 3.5.0 beta2
+- drop integrated 0001-Resolves-rhbz-761009-IFSD_Equal-is-asymmetrical.patch
+- drop integrated 0001-Resolves-rhbz-767708-avoid-SIGBUS-writing-to-overcom.patch
+- drop integrated 0001-force-gbuild-stage-for-CustomTargets.patch
+- drop integrated 0001-these-translations-do-already-exist-in-translations-.patch
+- drop integrated 0001-Fix-typo-and-clean-up.patch
+- use system mysql-connector-c++
+
+* Sun Dec 18 2011 David Tardon <dtardon@redhat.com> - 3.4.99.1-1
+- 3.5.0 beta1
+- drop integrated 0001-Related-fdo-37195-migrationoo3-not-registered.patch
+- drop integrated 0001-Related-i58612-don-t-crash-anyway.patch
+- drop integrated 0001-Related-rhbz-652604-better-survive-exceptions-thrown.patch
+- drop integrated 0001-Related-rhbz-702833-addEventListener-without-removeE.patch
+- drop integrated 0001-Related-rhbz-711087-band-aid.patch
+- drop integrated 0001-Related-rhbz-718976-crash-in-SwTxtSizeInfo-GetMultiC.patch
+- drop integrated 0001-Related-rhbz-730225-avoid-segv-in-ld-this-was-set-to.patch
+- drop integrated 0001-Related-rhbz-753201-fedora-ant-java-1.5.0-gcj-won-t-.patch
+- drop integrated 0001-Resolves-fdo-32665-handle-that-FreeSerif-lacks-some-.patch
+- drop integrated 0001-Resolves-rhbz-693265-fix-crash-from-unhandled-except.patch
+- drop integrated 0001-Resolves-rhbz-695509-crash-in-RefreshDocumentLB.patch
+- drop integrated 0001-Resolves-rhbz-713154-pdf-export-dialog-too-tall-to-f.patch
+- drop integrated 0001-Resolves-rhbz-715549-use-fontconfig-s-detected-forma.patch
+- drop integrated 0001-Resolves-rhbz-738255-avoid-crash-on-NULL-pointer.patch
+- drop integrated 0001-Resolves-rhbz-751290-KDE-black-on-dark-tooltips.patch
+- drop integrated 0001-add-Oracle-Java-1.7.0-recognition.patch
+- drop integrated 0001-avoid-using-com.sun.org-apis.patch
+- drop integrated 0001-bubble-down-configure-test-findings-on-visibility.patch
+- drop integrated 0001-fix-horizontal-scrollbars-with-KDE-oxygen-style-bnc-.patch
+- drop integrated 0001-gtk3-fix-cairo-canvas-crash-for-non-X-or-svp-backend.patch
+- drop integrated 0001-helgrind-Related-rhbz-655686-get-order-of-shutdown-c.patch
+- drop integrated 0001-rhbz-667082-do-not-crash-importing-section-containin.patch
+- drop integrated 0001-rhbz-702635-set-correct-page-number-when-exporting-s.patch
+- drop integrated Backport-reading-AES-encrypted-ODF-1.2-documents.patch
+- drop integrated gdb-pretty-printers.patch
+- drop integrated kde4configure.patch
+- drop integrated libreoffice-ppc64.patch
+- drop integrated openoffice.org-3.3.0.ooo108637.sfx2.uisavedir.patch
+- drop integrated openoffice.org-3.3.0.ooo113273.desktop.resolvelinks.patch
+- drop integrated vbahelper.visibility.patch
+- drop libreoffice-testtools subpackage, because testtool has been
+ removed by upstream
+
+* Thu Dec 15 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.4.2-6
+- Resolves: rhbz#761009 IFSD_Equal is asymmetrical
+- Resolves: rhbz#767708 write to mmap'ed file w/o disk space: SIGBUS
+
+* Tue Nov 29 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.4.2-5
+- Resolves: rhbz#757653 fix headless crash with cairo canvas
+
+* Tue Nov 22 2011 Lukas Tinkl <ltinkl@redhat.com> - 3.4.4.2-4
+- Resolves: rhbz#751290 - [kde] LibreOffice has black on dark-grey tooltip-texts
+
+* Fri Nov 11 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.4.2-3
+- Related: fdo#42534 0001-Related-i58612-don-t-crash-anyway.patch
+- Resolves: fdo#42749 KDE oxygen theme and scrollbars
+
+* Thu Nov 10 2011 Stephan Bergmann <sbergman@redhat.com> - 3.4.4.2-2
+- Patch to backport reading AES-encrypted ODF 1.2 documents
+
+* Thu Nov 03 2011 David Tardon <dtardon@redhat.com> - 3.4.4.2-1
+- 3.4.4 rc2
+
+* Fri Oct 28 2011 Rex Dieter <rdieter@fedoraproject.org> - 1:3.4.4.1-4
+- rebuild(poppler)
+
+* Thu Oct 27 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.4.1-3
+- Resolves: rhbz#665800 missing glyph symbol shown when toggling bold/italic
+ for Sinhala text
+
+* Thu Oct 27 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.4.1-2
+- possible fix for java 1.7.0 detection
+
+
+* Wed Oct 26 2011 David Tardon <dtardon@redhat.com> - 3.4.4.1-1
+- 3.4.4 rc1
+
+* Tue Oct 25 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.3.2-16
+- allow building with gcj
+
+* Fri Oct 21 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.3.2-15
+- Resolves: rhbz#747356 let Qt call XInitThreads
+- fix .sdw import
+
+* Wed Oct 19 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.3.2-14
+- Related: rhbz#743750 addXineramaScreenUnique issue
+
+* Fri Oct 07 2011 Stephan Bergmann <sbergman@redhat.com> - 3.4.3.2-13
+- Patches to build with GCC 6.4.1
+
+* Fri Sep 30 2011 Marek Kasik <mkasik@redhat.com> - 3.4.3.2-12
+- Rebuild (poppler-0.18.0)
+
+* Tue Sep 20 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.3.2-11
+- Resolves: rhbz#738133 fix bn discard string
+- Resolves: fdo#35513 avoid crash while processing incorrect print range
+
+* Mon Sep 19 2011 Marek Kasik <mkasik@redhat.com> - 3.4.3.2-10
+- Rebuild (poppler-0.17.3)
+
+* Thu Sep 15 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.3.2-9
+- Resolves: rhbz#738255 avoid crash on sc inputhdl
+
+* Tue Sep 13 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.3.2-8
+- Resolves: rhbz#274631 remove NoDisplay from -math.desktop
+
+* Thu Sep 08 2011 David Tardon <dtardon@redhat.com> - 3.4.3.2-7
+- rebuild for new icu
+
+* Tue Sep 06 2011 David Tardon <dtardon@redhat.com> - 3.4.3.2-6
+- Resolves: rhbz#734976 libreoffice-langpack-*-* not pulled in by
+ yum install libreoffice
+
+* Fri Sep 02 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.3.2-5
+- Resolves: rhbz#735182 be able to rebuild against poppler 0.17.3
+
+* Tue Aug 30 2011 David Tardon <dtardon@redhat.com> - 3.4.3.2-4
+- Resolves: rhbz#734432 openoffice.org symlink broken
+
+* Mon Aug 29 2011 David Tardon <dtardon@redhat.com> - 3.4.3.2-3
+- add Latvian langpack
+
+* Fri Aug 26 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.3.2-2
+- Resolves: rhbz#733564 graphite2 now packaged into fedora
+- Related: fdo#37195 migrationoo3 not registered
+
+* Thu Aug 25 2011 David Tardon <dtardon@redhat.com> - 3.4.3.2-1
+- 3.4.3 rc2
+
+* Mon Aug 22 2011 David Tardon <dtardon@redhat.com> - 3.4.3.1-2
+- add gdb pretty printers
+
+* Tue Aug 16 2011 David Tardon <dtardon@redhat.com> - 3.4.3.1-1
+- 3.4.3 rc1
+- drop integrated 0001-Resolves-rhbz-725144-wrong-csh-syntax.patch
+
+* Fri Aug 12 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.2.3-3
+- Related: rhbz#730225 avoid segv in ld
+
+* Tue Aug 02 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.2.3-2
+- Resolves: rhbz#693265 fix crash from unhandled exception
+
+* Fri Jul 29 2011 David Tardon <dtardon@redhat.com> - 3.4.2.3-1
+- 3.4.2 rc3
+
+* Mon Jul 25 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.2.2-2
+- Resolves: rhbz#725144 wrong csh syntax
+
+* Wed Jul 20 2011 David Tardon <dtardon@redhat.com> - 3.4.2.2-1
+- 3.4.2 rc2
+- fix breakage in KDE4 plugin
+
+* Tue Jul 19 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.2.1-3
+- Resolves: rhbz#715549 use fontconfig's detected format
+
+* Mon Jul 18 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.2.1-2
+- Rebuild (poppler-0.17.0), add libreoffice-poppler-0.17.0.patch
+ seeing as the API changed for some reason or other
+
+* Wed Jul 13 2011 David Tardon <dtardon@redhat.com> - 3.4.2.1-1
+- 3.4.2 rc1
+- drop 0001-bad-merge-fix-to-enable-extensions-to-build-again.patch
+- drop 0001-fix-regression-in-SvGlobalName-operator.patch
+
+* Tue Jul 12 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.1.3-3
+- fix regression in SvGlobalName operator
+
+* Tue Jul 05 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.1.3-2
+- Related: rhbz#718976 crash in SwTxtSizeInfo::GetMultiCreator
+
+* Fri Jul 01 2011 David Tardon <dtardon@redhat.com> - 3.4.1.3-1
+- 3.4.1 rc3
+
+* Thu Jun 23 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.1.2-1
+- 3.4.1 rc2
+- drop integrated 0001-correctly-build-GTK-systray-icon.patch
+
+* Tue Jun 21 2011 David Tardon <dtardon@redhat.com> - 3.4.1.1-5
+- Resolves: rhbz#714781 add Persian langpack
+- Resolves: rhbz#667082 do not crash importing section containing just
+ an empty paragraph
+
+* Mon Jun 20 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.1.1-4
+- Related: rhbz#711087 band aid for crash in sc undo
+- Resolves: rhbz#714338 add a metapackage to install standard bits
+
+* Fri Jun 17 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.1.1-3
+- Related: rhbz#702833 addEventListener without removeEventListener
+
+* Thu Jun 16 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.1.1-2
+- Resolves: rhbz#713154 pdf export dialog too tall to fit
+
+* Wed Jun 15 2011 David Tardon <dtardon@redhat.com> - 3.4.1.1-1
+- 3.4.1 RC1
+- drop integrated 0001-Resolves-rhbz-707317-avoid-crash-in-getRowSpan.patch
+- drop integrated 0001-Resolves-rhbz-710004-band-aid-for-immediate-crash-in.patch
+- drop integrated 0001-Resolves-rhbz-710556-don-t-crash-on-missing-graphics.patch
+- drop integrated 0001-Resolves-rhbz-699909-crash-in-export-of-.doc-in-lcl_.patch
+- drop integrated 0001-fdo-37584-Make-a-real-copy-of-the-text-where-to-coun.patch
+- drop integrated 0001-Resolves-fdo-37668-bitwise-operations-on-signed-numb.patch
+
+* Thu Jun 09 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.0.2-5
+- Resolves: rhbz#699909 crash in export of .doc in lcl_getField
+- Resolves: fdo#37584 Make a real copy of the text
+- Resolves: rhbz#709503/fdo#37668 bitwise operations on signed values
+
+* Tue Jun 07 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.0.2-4
+- Resolves: rhbz#710556 't crash on missing graphics .pptx export
+- Resolves: rhbz#652604 better survive exceptions in autorecovery
+
+* Thu Jun 02 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.0.2-3
+- Resolves: rhbz#710004 band aid for crash
+
+* Mon May 30 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.0.2-2
+- Resolves: rhbz#707317 avoid crash in getRowSpan
+
+* Fri May 27 2011 David Tardon <dtardon@redhat.com> - 3.4.0.2-1
+- 3.4.0 RC2
+- drop integrated 0001-fix-build-with-system-bsh.patch
+
+* Wed May 25 2011 Caolán McNamara <caolanm@redhat.com> - 3.4.0.1-3
+- rebuild for new hunspell
+
+* Tue May 24 2011 David Tardon <dtardon@redhat.com> - 3.4.0.1-2
+- Resolves: rhbz#706110 oosplash.bin segfault on every login
+
+* Fri May 20 2011 David Tardon <dtardon@redhat.com> - 3.4.0.1-1
+- 3.4 RC1
+- Resolves: rhbz#702635 set correct page number when exporting selected
+ pages
+
+* Sat May 07 2011 Christopher Aillon <caillon@redhat.com> - 3.3.99.4-2
+- Update icon cache scriptlet
+
+* Sat May 07 2011 David Tardon <dtardon@redhat.com> 3.3.99.4-1
+- 3.4 beta4
+- drop integrated 0001-Removed-duplicate-code-block-mis-merge-prolly.patch
+- drop integrated 7de0b88ce2dd932915894385b54be1897d5ee053.zip
+
+* Mon Apr 18 2011 Caolán McNamara <caolanm@redhat.com> 3.3.99.1-2
+- Resolves: rhbz#695509 crash in RefreshDocumentLB
+- bubble down configure test findings on visibility
+
+* Mon Apr 11 2011 Caolán McNamara <caolanm@redhat.com> 3.3.99.1-1
+- 3.4 beta1
+- drop openoffice.org-1.9.123.ooo53397.prelinkoptimize.desktop.patch
+ in favour of ooosplash
+- drop openoffice.org-2.2.0.gccXXXXX.solenv.javaregistration.patch
+ because components are passively registered now
+- drop integrated openoffice.org-3.1.0.ooo102061.sc.cellanchoring.patch
+- drop integrated turn-script-providers-into-extensions.patch
+- drop integrated 0001-tidy-this-up-and-don-t-bail-out-on-mislength-records.patch
+- drop integrated 0001-free-ctxt-after-taking-lastError-details.patch
+- drop integrated 0001-Removed-suspect-hack.-Cursor-on-post-it-now-scrolls-.patch
+- drop integrated libreoffice-gcc4.6.0.patch
+- drop integrated 0001-fexceptions-fexceptions.patch
+- drop integrated 0001-Related-rhbz-672872-cancel-gtk-file-dialog-on-deskto.patch
+- drop vbahelper.visibility.patch
+- drop integrated 0001-Resolves-fdo-33509-i62414-out-by-one-breaks-CTL-spel.patch
+- drop integrated 0001-Resolves-rhbz-670020-crash-in-slidesorting.patch
+- drop integrated 0001-Resolves-rhbz-676539-handle-missing-pWindows-from-xW.patch
+- drop integrated 0001-Resolves-fdo-33750-i94623-use-optimal-border-width-w.patch
+- drop integrated 0001-rhbz-649310-don-t-crash-deregistering-diff.-platform.patch
+- drop integrated 0001-Resolves-rhbz-674330-dereference-of-NULL-mpBase.patch
+- drop integrated 0001-rhbz-678284-Get-correct-current-position-when-shift-page-up-and-.patch
+- drop integrated 0001-Resolves-rhbz-681159-bandaid-for-crash.patch
+- drop integrated 0001-Resolves-rhbz-672818-bandaid-for-crash-in-SwTxtNode-.patch
+- drop integrated 0001-install-high-resolution-icons.patch
+- drop integrated 0001-Resolves-rhbz-682716-pa-IN-isn-t-handled-by-fontconf.patch
+- drop integrated 0001-Related-rhbz-684477-make-sure-this-is-thread-safe.patch
+- drop integrated 0001-Resolves-rhbz-682621-better-resizing-of-overtall-gly.patch
+- drop integrated 0001-Resolves-rhbz-684620-crash-with-NULL-pTableBox.patch
+- drop integrated libreoffice-fdo33947.sd.print.crash.patch
+- drop integrated 0001-add-cairo_ft_font_face_create_for_pattern-wrapper.patch
+- drop integrated 0001-Related-rhbz-680460-reorganize-this-to-make-it-inher.patch
+- drop integrated 0001-Related-rhbz-680460-don-t-bother-with-an-interim-Fon.patch
+- drop integrated 0001-Resolves-rhbz-680460-honour-lcdfilter-subpixeling-et.patch
+- drop integrated 0001-Cut-Gordian-Knot-of-who-owns-the-font-options.patch
+- drop integrated 0001-beware-of-invalidated-iterator.patch
+- drop integrated rhbz680766.fix-mdds-crash.patch
+- drop integrated 0001-Resolves-rhbz-684580-X-and-strike-through-escapes-ra.patch
+- drop integrated 0001-set-mime-types-on-flat-xml-filters.patch
+- drop integrated 0001-add-flat-xml-types-to-.desktop-files-etc.patch
+- drop integrated libreoffice-fdo31271.icu.patch
+
+* Tue Apr 05 2011 Caolán McNamara <caolanm@redhat.com> 3.3.2.2-6
+- Resolves: rhbz#655686 get order of shutdown correct
+
+* Wed Mar 30 2011 Caolán McNamara <caolanm@redhat.com> 3.3.2.2-5
+- Add application/vnd.oasis.opendocument.text-flat-xml, etc. to
+ .desktop files for mcepl
+
+* Tue Mar 29 2011 Caolán McNamara <caolanm@redhat.com> 3.3.2.2-4
+- Resolves: rhbz#684580 improve X and / strike-through
+
+* Thu Mar 24 2011 David Tardon <dtardon@redhat.com> 3.3.2.2-3
+- Resolves: rhbz#680766 crash in mdds
+
+* Wed Mar 23 2011 David Tardon <dtardon@redhat.com> 3.3.2.2-2
+- Related: rhbz#689268 versioned deps need to contain epoch
+
+* Tue Mar 22 2011 Caolán McNamara <caolanm@redhat.com> 3.3.2.2-1
+- latest version
+- drop integrated 0001-Resolves-fdo-33701-ensure-node-outlives-path.patch
+- drop integrated 0001-valgrind-don-t-leave-an-evil-thread-running-after-ma.patch
+
+* Tue Mar 22 2011 Caolán McNamara <caolanm@redhat.com> 3.3.1.2-12
+- Fix fontoptions cache
+- avoid crash in calc on changing size of rows (dtardon)
+
+* Mon Mar 21 2011 Caolán McNamara <caolanm@redhat.com> 3.3.1.2-11
+- Resolves: rhbz#689268 autocorrs from OOo F14 not upgraded
+
+* Wed Mar 16 2011 Caolán McNamara <caolanm@redhat.com> 3.3.1.2-10
+- Resolves: rhbz#680460 honour lcdfilter and subpixeling
+
+* Tue Mar 15 2011 Caolán McNamara <caolanm@redhat.com> 3.3.1.2-9
+- Resolves: fdo#33947 sd print crash
+
+* Mon Mar 14 2011 Caolán McNamara <caolanm@redhat.com> 3.3.1.2-8
+- Related: rhbz#684477 make sure this is thread safe
+- Resolves: rhbz#684620 crash with NULL pTableBox
+
+* Sun Mar 13 2011 Marek Kasik <mkasik@redhat.com> 3.3.1.2-7
+- Rebuild (poppler-0.16.3)
+
+* Wed Mar 09 2011 Caolán McNamara <caolanm@redhat.com> 3.3.1.2-6
+- Resolves: rhbz#682621 better resizing of overtall glyphsubs
+
+* Tue Mar 08 2011 Caolán McNamara <caolanm@redhat.com> 3.3.1.2-5
+- Resolves: rhbz#682716 pa-IN isn't handled well by fontconfig
+
+* Tue Mar 08 2011 David Tardon <dtardon@redhat.com> 3.3.1.2-4
+- install 128x128 px icons
+
+* Wed Mar 02 2011 Caolán McNamara <caolanm@redhat.com> 3.3.1.2-3
+- Resolves: rhbz#681159 crash in writer
+- Resolves: rhbz#672818 crash in writer
+- Resolves: fdo#33701 ensure node outlives path
+- Resolves: rhbz#681738 crash on writing config post-main
+
+* Thu Feb 17 2011 Caolán McNamara <caolanm@redhat.com> 3.3.1.2-2
+- Resolves: rhbz#678284 Calc crashes during cell select with keys
+ (dtardon)
+
+* Thu Feb 17 2011 Caolán McNamara <caolanm@redhat.com> 3.3.1.2-1
+- RC2
+
+* Wed Feb 16 2011 Caolán McNamara <caolanm@redhat.com> 3.3.1.1-2
+- Resolves: rhbz#674330 dereference of NULL mpBase
+
+* Fri Feb 11 2011 Caolán McNamara <caolanm@redhat.com> 3.3.1.1-1
+- 3.3.1 rc1
+- drop integrated 0001-don-t-pushback-and-process-a-corrupt-extension.patch
+- drop integrated libreoffice-fdo32561.comphelper.patch
+- drop integrated 0001-Related-rhbz-610103-more-woes-on-rpm-upgrade-vs-rpm-.patch
+- drop integrated 0001-Resolves-rhbz-673819-crash-on-changing-position-of-d.patch
+- drop integrated 0001-rhbz-666440-don-t-pushback-and-process-a-corrupt-extension.patch
+
+* Thu Feb 10 2011 Caolán McNamara <caolanm@redhat.com> 3.3.0.4-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+- Related: rhbz#610103 make this even more robust
+- Related: rhbz#672872 cancel gtk file dialog on terminate
+- Resolves: fdo#33509/ooo#62414 fix CTL spelling popup
+- Resolves: rhbz#673819 crash on changing position of header/footer object
+- Resolves: rhbz#670020 crash in slidesorting
+- Resolves: rhbz#676539 handle missing pWindows from xWindows
+- Resolves: rhbz#649310 don't crash deregistering diff. platform ext.
+ (dtardon)
+- Resolves: rhbz#666440 don't pushback and process a corrupt extension
+
+* Mon Jan 24 2011 Caolán McNamara <caolanm@redhat.com> 3.3.0.4-2
+- Resolves: rhbz#671540 fix lonely )
+
+* Thu Jan 20 2011 Caolán McNamara <caolanm@redhat.com> 3.3.0.4-1
+- next release candidate
+- drop integrated 0001-fix-presenter-screens-description.xml-build.patch
+
+* Tue Jan 18 2011 Caolán McNamara <caolanm@redhat.com> 3.3.0.3-2
+- backport fix to get presenter screen working
+- make handling busted extensions more robust
+
+* Wed Jan 12 2011 Caolán McNamara <caolanm@redhat.com> 3.3.0.3-1
+- latest version
+- drop integrated 0001-Resoves-rhbz-663857-font-color-missing-C-FAQ-10.3-do.patch
+- drop integrated 0001-Avoid-double-paste-when-pasting-text-into-cell-comme.patch
+- drop integrated 0001-Resolves-rhbz-660342-Undo-Redo-crash-with-postits.patch
+- drop integrated 0001-Resolves-rhbz-666088-clean-up-search-cache-singleton.patch
+
+* Thu Jan 06 2011 Caolán McNamara <caolanm@redhat.com> 3.3.0.2-5
+- Resolves: rhbz#666088 don't crash on clean up of search cache
+
+* Wed Jan 05 2011 Lukas Tinkl <ltinkl@redhat.com> 3.3.0.2-4
+- create a KDE integration subpackage
+
+* Mon Jan 03 2011 David Tardon <dtardon@redhat.com> 3.3.0.2-3
+- rebuild with new poppler
+
+* Wed Dec 22 2010 Caolán McNamara <caolanm@redhat.com> 3.3.0.2-2
+- Resolves: rhbz#663724 fdo32572-sc-dont-double-paste.patch
+- Resolves: rhbz#660342 Undo/Redo crash with postits
+
+* Tue Dec 21 2010 Caolán McNamara <caolanm@redhat.com> 3.3.0.2-1
+- latest version
+
+* Sat Dec 18 2010 Caolán McNamara <caolanm@redhat.com> 3.3.0.1-4
+- Resolves: rhbz#663857 font color missing in transitions
+
+* Wed Dec 15 2010 Rex Dieter <rdieter@fedoraproject.org> - 3.3.0.1-3
+- rebuild (poppler)
+
+* Wed Dec 15 2010 Caolán McNamara <caolanm@redhat.com> 3.3.0.1-2
+- Fix up some doc imports
+
+* Sun Dec 05 2010 Caolán McNamara <caolanm@redhat.com> 3.3.0.1-1
+- release candidate 1
+- drop integrated qstart.dont-forceenabled-on-post-reg-restart.patch
+- drop integrated exit.quickstarter.when.deleted.patch
+- drop integrated 0001-destroydesktop.in.timeout.patch
+- drop integrated openoffice.org-3.3.0.rhbz657541.join-paragraphs.patch
+
+* Sat Nov 27 2010 Caolán McNamara <caolanm@redhat.com> 3.2.99.3-2
+- Resolves: rhbz#610103 exit quickstarter when libs deleted
+- Resolves: rhbz#652695 release desktop in timeout
+- Resolves: rhbz#657541 don't crash during processing of auto. styles
+ when joining paragraphs (dtardon)
+
+* Thu Nov 18 2010 Caolán McNamara <caolanm@redhat.com 3.2.99.3-1
+- next Libreoffice milestone
+- drop integrated openoffice.org-2.0.1.rhXXXXXX.extensions.defaulttoevo2.patch
+- drop integrated openoffice.org-2.2.1.ooo7065.sw.titlepagedialog.patch
+- drop integrated openoffice.org-3.2.0.ooo108846.sfx2.qstartfixes.patch
+- drop integrated openoffice.org-3.3.0.ooo107490.cppu.lifecycle.patch
+- drop integrated libreoffice-buildfix.patch
+- drop integrated libreoffice-xdg632229.gnomeshell.patch
+- drop integrated 0001-strcpy-cannot-be-used-with-overlapping-src-and-dest.patch
+- drop integrated 0001-abort-doesn-t-gain-us-anything-here.patch
+- drop integrated 0001-latest-libX11-changed-header-guards.patch
+
+* Sat Nov 06 2010 David Tardon <dtardon@redhat.com 3.2.99.2-6
+- turn script providers into extensions
+
+* Wed Nov 03 2010 Caolán McNamara <caolanm@redhat.com> 3.2.99.2-5
+- Resolves: rhbz#649210 add Sinhalese langpack
+
+* Sat Oct 30 2010 Caolán McNamara <caolanm@redhat.com> 3.2.99.2-4
+- langpack macro hard-coded version number
+
+* Fri Oct 22 2010 Caolán McNamara <caolanm@redhat.com> 3.2.99.2-3
+- Resolves: xdg632229 gnomeshell app tracking
+
+* Tue Oct 12 2010 David Tardon <dtardon@redhat.com> 3.2.99.2-2
+- use macros to define auto-correction and language pack subpackages
+
+* Mon Oct 11 2010 Caolán McNamara <caolanm@redhat.com> 3.2.99.2-1
+- next LibreOffice milestone
+- drop integrated openoffice.org-2.3.0.ooo76649.httpencoding.patch
+- drop integrated workspace.dtardon03.patch
+- drop integrated openoffice.org-3.1.0.ooo61927.sw.ww6.unicodefontencoding.patch
+- drop integrated workspace.impress195.patch
+- drop integrated workspace.srb1.patch
+- drop integrated openoffice.org-3.2.0.ooo106502.svx.fixspelltimer.patch
+- drop integrated openoffice.org-3.3.0.ooo108246.svx.hide-sql-group-when-inactive.patch
+- drop integrated openoffice.org-3.2.0.ooo95369.sw.sortedobjs.patch
+- drop integrated openoffice.org-3.2.0.ooo110142.svx.safercolornames.patch
+- drop integrated openoffice.org-3.3.0.ooo111758.sd.xerror.patch
+- drop integrated openoffice.org-3.2.0.ooo111741.extras.malformed-xml-file.patch
+- drop integrated openoffice.org-3.3.0.ooo112059.sw.avoid-null-ptr-deref.patch
+- drop integrated openoffice.org-3.3.0.ooo100686.wizards.types.not.mediatypes.patch
+- drop integrated workspace.vcl113.patch
+- drop integrated openoffice.org-3.3.0.ooo112384.sw.export.doc.styledoesntexist.patch
+- drop integrated workspace.cmcfixes77.patch
+- drop integrated workspace.vcl114.patch
+- drop integrated openoffice.org-3.3.0.ooo106591.sal.tradcopy.patch
+- drop integrated workspace.vcl115.patch
+- drop integrated workspace.cmcfixes78.patch
+- drop integrated openoffice.org-3.3.0.ooo114012.sd.bada11ychain.patch
+- drop integrated workspace.cmcfixes79.patch
+- drop integrated openoffice.org-3.3.0.ooo114703.vcl.betterlocalize.font.patch
+- drop integrated openoffice.org-3.3.0.rh638185.editeng.cjkctlhtmlsizes.patch
+- drop integrated openoffice.org-3.3.0.rh637738.libgcrypt.addmutex.patch
+- drop integrated openoffice.org-3.2.0.rh632236.writerfilter.cleanup-cell-props.patch
+- drop workspace.gtk3.patch
+
+* Wed Oct 06 2010 Caolán McNamara <caolanm@redhat.com> 3.2.99.1-2
+- Related: rhbz#639945 pull in review changes
+ + redland build-fix
+ + replace awk script
+ + validate .destop files
+
+* Wed Sep 29 2010 Caolán McNamara <caolanm@redhat.com> 3.2.99.1-1
+- initial import of the leviathan
diff --git a/sources b/sources
new file mode 100644
index 0000000..067da24
--- /dev/null
+++ b/sources
@@ -0,0 +1,8 @@
+17410483b5b5f267aa18b7e00b65e6e0 17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
+185d60944ea767075d27247c3162b3bc 185d60944ea767075d27247c3162b3bc-unowinreg.dll
+a7983f859eafb2677d7ff386a023bc40 a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip
+4295bad62b2524793d8a7ba3e7385501 dtoa-20180411.tgz
+09c7414a011363c72248c7bf3a23d758 f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
+f80ae08177ffbf1404ecf57cb534d94e libreoffice-7.1.8.1.tar.xz
+d66ae64561a9bccc27c8d0b9b3c691fd libreoffice-help-7.1.8.1.tar.xz
+566cabebe62d53a2a62e73a413b3daeb libreoffice-translations-7.1.8.1.tar.xz