Accepting request 694222 from LibreOffice:Factory

- Update to 6.2.3.2:
  * Bugfix release 6.2.3
- Remove merged patches:
  * old-boost.patch
  * libreoffice-postgresql.patch
  * 0001-Fix-LTO-segfault-in-libtest_sw_uwriter-test.patch
  * boost_169.patch
  * kde5.patch
  * old-icu.patch

OBS-URL: https://build.opensuse.org/request/show/694222
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libreoffice?expand=0&rev=178
This commit is contained in:
Dominique Leuenberger 2019-04-17 09:22:23 +00:00 committed by Git OBS Bridge
commit 0e37f13a43
20 changed files with 71 additions and 604 deletions

View File

@ -1,42 +0,0 @@
From a1cd2b69ed7af0b9a07a099c38f7854b4b43d6be Mon Sep 17 00:00:00 2001
From: marxin <mliska@suse.cz>
Date: Thu, 7 Mar 2019 09:28:14 +0100
Subject: [PATCH] Fix LTO segfault in libtest_sw_uwriter test.
The problem was seen here:
https://bugzilla.suse.com/show_bug.cgi?id=1127857.
One needs to call SwGlobals::ensure in order to initialize
SfxApplication via SfxApplication::SetModule(SfxToolsModule::Writer.
Change-Id: I3add24b56dc44a93ad81c1b52539da821f6244fc
---
sw/qa/core/test_ToxTextGenerator.cxx | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/sw/qa/core/test_ToxTextGenerator.cxx b/sw/qa/core/test_ToxTextGenerator.cxx
index 25304a382ed3..ffe76233282e 100644
--- a/sw/qa/core/test_ToxTextGenerator.cxx
+++ b/sw/qa/core/test_ToxTextGenerator.cxx
@@ -22,10 +22,17 @@
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/plugin/TestPlugIn.h>
+#include <swdll.hxx>
+
using namespace sw;
class ToxTextGeneratorTest : public CppUnit::TestFixture {
public:
+ virtual void setUp() override
+ {
+ SwGlobals::ensure();
+ }
+
void EmptyStringIsReturnedForPageNumberPlaceholderOfZeroItems();
void OneAtSignIsReturnedForPageNumberPlaceholderOfOneItem();
void TwoAtSignsAreReturnedForPageNumberPlaceholderOfOneItem();
--
2.21.0

View File

@ -1,13 +0,0 @@
Index: libreoffice-6.2.1.2/sfx2/source/appl/shutdownicon.cxx
===================================================================
--- libreoffice-6.2.1.2.orig/sfx2/source/appl/shutdownicon.cxx
+++ libreoffice-6.2.1.2/sfx2/source/appl/shutdownicon.cxx
@@ -143,7 +143,7 @@ bool LoadModule()
#endif // ENABLE_QUICKSTART_APPLET
}
assert(!boost::logic::indeterminate(loaded));
- return loaded;
+ return (bool)loaded;
}
}

View File

@ -1,350 +0,0 @@
From 265caa4381c048c346c907b017561ab0fe0367ff Mon Sep 17 00:00:00 2001
From: Michael Stahl <Michael.Stahl@cib.de>
Date: Fri, 22 Feb 2019 19:19:27 +0100
Subject: [PATCH] tdf#119856 vcl: Qt5/KDE5 RunInMainThread
The problem with the current approach of transferring calls to the main
thread with Q_EMIT signals is that if the code that should run in the
main thread needs SolarMutex, then the non-main-thread must use
SolarMutexReleaser - but then the main thread will run not only the call
that is needed right now, but will potentially process all pending
events, and the other thread hasn't prepared for that.
We need the inter-thread feature of Qt::BlockingQueuedConnection and the
non-queued feature of Qt::DirectConnection, but this combination doesn't
appear to exist.
So the SolarMutexReleaser needs to go - but then the main thread does
need SolarMutex for some things, and hence we need to trick it into
believing it has SolarMutex with the m_bNoYieldLock hack.
Then it becomes apparent that the main thread may be blocked on either
Qt events, which is fine, or on the SalYieldMutex's m_aMutex, which will
never be released now.
So the main thread must never block on m_aMutex; the alternative is to
use the same approach as the osx code (and, in a somewhat different
form, the svp code), and add some condition variables on which the main
thread can block if it fails to acquire the m_aMutex immediately.
It's even possible to do this in a somewhat generic way with lambdas.
This does appear to work, but it makes the Q_EMIT approach entirely
untenable, because now the main thread will be blocked on the condition
variable and the non-main-thread will be blocked until the Qt event is
processed.
Change-Id: I6480a6b909d5ec8814b2ff10dbefb0f3686a83c7
Reviewed-on: https://gerrit.libreoffice.org/68232
Tested-by: Jenkins
Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
---
vcl/inc/qt5/Qt5Instance.hxx | 7 +-
vcl/qt5/Qt5Instance.cxx | 175 ++++++++++++++++++++++++++++---
vcl/unx/kde5/KDE5SalInstance.cxx | 23 ++--
vcl/unx/kde5/KDE5SalInstance.hxx | 8 +-
4 files changed, 181 insertions(+), 32 deletions(-)
Index: libreoffice-6.2.2.1/vcl/inc/qt5/Qt5Instance.hxx
===================================================================
--- libreoffice-6.2.2.1.orig/vcl/inc/qt5/Qt5Instance.hxx
+++ libreoffice-6.2.2.1/vcl/inc/qt5/Qt5Instance.hxx
@@ -27,6 +27,8 @@
#include <QtCore/QObject>
+#include <functional>
+
class QApplication;
class SalYieldMutex;
class SalFrame;
@@ -50,15 +52,18 @@ public:
private Q_SLOTS:
bool ImplYield(bool bWait, bool bHandleAllCurrentEvents);
+ void ImplRunInMain();
Q_SIGNALS:
bool ImplYieldSignal(bool bWait, bool bHandleAllCurrentEvents);
- std::unique_ptr<SalMenu> createMenuSignal(bool, Menu*);
+ void ImplRunInMainSignal();
public:
explicit Qt5Instance(bool bUseCairo = false);
virtual ~Qt5Instance() override;
+ void RunInMainThread(std::function<void()> func);
+
virtual SalFrame* CreateFrame(SalFrame* pParent, SalFrameStyleFlags nStyle) override;
virtual SalFrame* CreateChildFrame(SystemParentData* pParent,
SalFrameStyleFlags nStyle) override;
Index: libreoffice-6.2.2.1/vcl/qt5/Qt5Instance.cxx
===================================================================
--- libreoffice-6.2.2.1.orig/vcl/qt5/Qt5Instance.cxx
+++ libreoffice-6.2.2.1/vcl/qt5/Qt5Instance.cxx
@@ -43,13 +43,165 @@
#include <QtWidgets/QWidget>
#include <vclpluginapi.h>
+#include <tools/debug.hxx>
+#include <comphelper/flagguard.hxx>
#include <sal/log.hxx>
#include <osl/process.h>
#include <headless/svpbmp.hxx>
+#include <mutex>
+#include <condition_variable>
+
+/// TODO: not much Qt5 specific here? could be generalised, esp. for OSX...
+/// this subclass allows for the transfer of a closure for running on the main
+/// thread, to handle all the thread affine stuff in Qt5; the SolarMutex is
+/// "loaned" to the main thread for the execution of the closure.
+/// @note it doesn't work to just use "emit" and signals/slots to move calls to
+/// the main thread, because the other thread has the SolarMutex; the other
+/// thread (typically) cannot release SolarMutex, because then the main thread
+/// will handle all sorts of events and whatnot; this design ensures that the
+/// main thread only runs the passed closure (unless the closure releases
+/// SolarMutex itself, which should probably be avoided).
+class Qt5YieldMutex : public SalYieldMutex
+{
+public:
+ /// flag only accessed on main thread:
+ /// main thread has "borrowed" SolarMutex from another thread
+ bool m_bNoYieldLock = false;
+ /// members for communication from non-main thread to main thread
+ std::mutex m_RunInMainMutex;
+ std::condition_variable m_InMainCondition;
+ bool m_isWakeUpMain = false;
+ std::function<void()> m_Closure; ///< code for main thread to run
+ /// members for communication from main thread to non-main thread
+ std::condition_variable m_ResultCondition;
+ bool m_isResultReady = false;
+
+ virtual bool IsCurrentThread() const override;
+ virtual void doAcquire(sal_uInt32 nLockCount) override;
+ virtual sal_uInt32 doRelease(bool const bUnlockAll) override;
+};
+
+bool Qt5YieldMutex::IsCurrentThread() const
+{
+ auto const* pSalInst(static_cast<Qt5Instance const*>(GetSalData()->m_pInstance));
+ assert(pSalInst);
+ if (pSalInst->IsMainThread() && m_bNoYieldLock)
+ {
+ return true; // main thread has borrowed SolarMutex
+ }
+ return SalYieldMutex::IsCurrentThread();
+}
+
+void Qt5YieldMutex::doAcquire(sal_uInt32 nLockCount)
+{
+ auto const* pSalInst(static_cast<Qt5Instance const*>(GetSalData()->m_pInstance));
+ assert(pSalInst);
+ if (!pSalInst->IsMainThread())
+ {
+ SalYieldMutex::doAcquire(nLockCount);
+ return;
+ }
+ if (m_bNoYieldLock)
+ {
+ return; // special case for main thread: borrowed from other thread
+ }
+ do // main thread acquire...
+ {
+ std::function<void()> func; // copy of closure on thread stack
+ {
+ std::unique_lock<std::mutex> g(m_RunInMainMutex);
+ if (m_aMutex.tryToAcquire())
+ {
+ // if there's a closure, the other thread holds m_aMutex
+ assert(!m_Closure);
+ m_isWakeUpMain = false;
+ --nLockCount; // have acquired once!
+ ++m_nCount;
+ break;
+ }
+ m_InMainCondition.wait(g, [this]() { return m_isWakeUpMain; });
+ m_isWakeUpMain = false;
+ std::swap(func, m_Closure);
+ }
+ if (func)
+ {
+ assert(!m_bNoYieldLock);
+ m_bNoYieldLock = true; // execute closure with borrowed SolarMutex
+ func();
+ m_bNoYieldLock = false;
+ std::unique_lock<std::mutex> g(m_RunInMainMutex);
+ assert(!m_isResultReady);
+ m_isResultReady = true;
+ m_ResultCondition.notify_all(); // unblock other thread
+ }
+ } while (true);
+ SalYieldMutex::doAcquire(nLockCount);
+}
+
+sal_uInt32 Qt5YieldMutex::doRelease(bool const bUnlockAll)
+{
+ auto const* pSalInst(static_cast<Qt5Instance const*>(GetSalData()->m_pInstance));
+ assert(pSalInst);
+ if (pSalInst->IsMainThread() && m_bNoYieldLock)
+ {
+ return 1; // dummy value
+ }
+
+ std::unique_lock<std::mutex> g(m_RunInMainMutex);
+ // read m_nCount before doRelease (it's guarded by m_aMutex)
+ bool const isReleased(bUnlockAll || m_nCount == 1);
+ sal_uInt32 nCount = SalYieldMutex::doRelease(bUnlockAll);
+ if (isReleased && !pSalInst->IsMainThread())
+ {
+ m_isWakeUpMain = true;
+ m_InMainCondition.notify_all(); // unblock main thread
+ }
+ return nCount;
+}
+
+// this could be abstracted to be independent of Qt5 by passing in the
+// event-trigger as another function parameter...
+// it could also be a template of the return type, then it could return the
+// result of func... but then how to handle the result in doAcquire?
+void Qt5Instance::RunInMainThread(std::function<void()> func)
+{
+ DBG_TESTSOLARMUTEX();
+ if (IsMainThread())
+ {
+ func();
+ return;
+ }
+
+ Qt5YieldMutex* const pMutex(static_cast<Qt5YieldMutex*>(GetYieldMutex()));
+ {
+ std::unique_lock<std::mutex> g(pMutex->m_RunInMainMutex);
+ assert(!pMutex->m_Closure);
+ pMutex->m_Closure = func;
+ // unblock main thread in case it is blocked on condition
+ pMutex->m_isWakeUpMain = true;
+ pMutex->m_InMainCondition.notify_all();
+ }
+ // wake up main thread in case it is blocked on event queue
+ // TriggerUserEventProcessing() appears to be insufficient in case the
+ // main thread does QEventLoop::WaitForMoreEvents
+ Q_EMIT ImplRunInMainSignal();
+ {
+ std::unique_lock<std::mutex> g(pMutex->m_RunInMainMutex);
+ pMutex->m_ResultCondition.wait(g, [pMutex]() { return pMutex->m_isResultReady; });
+ pMutex->m_isResultReady = false;
+ }
+}
+
+void Qt5Instance::ImplRunInMain()
+{
+ SolarMutexGuard g; // trigger the dispatch code in Qt5YieldMutex::doAcquire
+ (void)this; // suppress unhelpful [loplugin:staticmethods]; can't be static
+}
+
Qt5Instance::Qt5Instance(bool bUseCairo)
- : SalGenericInstance(o3tl::make_unique<SalYieldMutex>())
+ : SalGenericInstance(o3tl::make_unique<Qt5YieldMutex>())
, m_postUserEventId(-1)
, m_bUseCairo(bUseCairo)
{
@@ -65,8 +217,8 @@ Qt5Instance::Qt5Instance(bool bUseCairo)
// is processed before the thread emitting the signal continues
connect(this, SIGNAL(ImplYieldSignal(bool, bool)), this, SLOT(ImplYield(bool, bool)),
Qt::BlockingQueuedConnection);
- connect(this, &Qt5Instance::createMenuSignal, this, &Qt5Instance::CreateMenu,
- Qt::BlockingQueuedConnection);
+ connect(this, &Qt5Instance::ImplRunInMainSignal, this, &Qt5Instance::ImplRunInMain,
+ Qt::QueuedConnection); // no Blocking!
}
Qt5Instance::~Qt5Instance()
@@ -136,15 +288,14 @@ Qt5Instance::CreateVirtualDevice(SalGrap
std::unique_ptr<SalMenu> Qt5Instance::CreateMenu(bool bMenuBar, Menu* pVCLMenu)
{
- if (qApp->thread() != QThread::currentThread())
- {
- SolarMutexReleaser aReleaser;
- return Q_EMIT createMenuSignal(bMenuBar, pVCLMenu);
- }
-
- Qt5Menu* pSalMenu = new Qt5Menu(bMenuBar);
- pSalMenu->SetMenu(pVCLMenu);
- return std::unique_ptr<SalMenu>(pSalMenu);
+ std::unique_ptr<SalMenu> pRet;
+ RunInMainThread([&pRet, bMenuBar, pVCLMenu]() {
+ Qt5Menu* pSalMenu = new Qt5Menu(bMenuBar);
+ pRet.reset(pSalMenu);
+ pSalMenu->SetMenu(pVCLMenu);
+ });
+ assert(pRet);
+ return pRet;
}
std::unique_ptr<SalMenuItem> Qt5Instance::CreateMenuItem(const SalItemParams& rItemData)
Index: libreoffice-6.2.2.1/vcl/unx/kde5/KDE5SalInstance.cxx
===================================================================
--- libreoffice-6.2.2.1.orig/vcl/unx/kde5/KDE5SalInstance.cxx
+++ libreoffice-6.2.2.1/vcl/unx/kde5/KDE5SalInstance.cxx
@@ -46,21 +46,16 @@ KDE5SalInstance::KDE5SalInstance()
pSVData->maAppData.mxToolkitName = OUString("kde5");
KDE5SalData::initNWF();
-
- connect(this, &KDE5SalInstance::createFrameSignal, this, &KDE5SalInstance::CreateFrame,
- Qt::BlockingQueuedConnection);
- connect(this, &KDE5SalInstance::createFilePickerSignal, this,
- &KDE5SalInstance::createFilePicker, Qt::BlockingQueuedConnection);
}
SalFrame* KDE5SalInstance::CreateFrame(SalFrame* pParent, SalFrameStyleFlags nState)
{
- if (!IsMainThread())
- {
- SolarMutexReleaser aReleaser;
- return Q_EMIT createFrameSignal(pParent, nState);
- }
- return new KDE5SalFrame(static_cast<KDE5SalFrame*>(pParent), nState, true);
+ SalFrame* pRet(nullptr);
+ RunInMainThread([&pRet, pParent, nState]() {
+ pRet = new KDE5SalFrame(static_cast<KDE5SalFrame*>(pParent), nState, true);
+ });
+ assert(pRet);
+ return pRet;
}
uno::Reference<ui::dialogs::XFilePicker2>
@@ -68,7 +63,11 @@ KDE5SalInstance::createFilePicker(const
{
if (!IsMainThread())
{
- return Q_EMIT createFilePickerSignal(xMSF);
+ uno::Reference<ui::dialogs::XFilePicker2> xRet;
+ RunInMainThread(
+ [&xRet, this, xMSF]() { xRet = this->createFilePicker(xMSF); });
+ assert(xRet);
+ return xRet;
}
// In order to insert custom controls, KDE5FilePicker currently relies on KFileWidget
Index: libreoffice-6.2.2.1/vcl/unx/kde5/KDE5SalInstance.hxx
===================================================================
--- libreoffice-6.2.2.1.orig/vcl/unx/kde5/KDE5SalInstance.hxx
+++ libreoffice-6.2.2.1/vcl/unx/kde5/KDE5SalInstance.hxx
@@ -42,13 +42,7 @@ public:
virtual bool IsMainThread() const override;
-Q_SIGNALS:
- SalFrame* createFrameSignal(SalFrame* pParent, SalFrameStyleFlags nStyle);
-
- css::uno::Reference<css::ui::dialogs::XFilePicker2>
- createFilePickerSignal(const css::uno::Reference<css::uno::XComponentContext>&);
-
-private Q_SLOTS:
+private:
virtual SalFrame* CreateFrame(SalFrame* pParent, SalFrameStyleFlags nStyle) override;
virtual css::uno::Reference<css::ui::dialogs::XFilePicker2>

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b83ad3a8aa7bebf34db9e984d518a8f2248ed685e04be8373cfa87bb04e31f69
size 214029032

View File

@ -1,16 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAlyMCLQACgkQ9DSh76/u
rqPa6w//fQXFAkUgOqDprN/wO07NIpDj5o3dONHdUk1o7cVZ9jV9SDxaKJ/+CDdW
+d7e5fkVZXo6JRul3sG9ovszpF7D09Af8C4RKGaarEj0oK4TurKaW58J+0jnOGRG
IRZITZwN68hSu1pwINOso6aSctCd6RYEkUZjb7ZA25c00kQpNhFr/pIDl2hG6tm6
V9KH/j1Cc/gYEWKt8cag8ByVCeUwNfFRhjvmBS6f2ms26D/mMVMypKyI2UcgMZE3
kcd5Q0C5JIf9AQhzWrPTrFoZq5CH9Axlfb9r5EFhj1vt0aw0gqQmNXfi/iZIPbyC
KrGh8GRiJmu0aOinEF1TXDuzBX9VX93yBUCcxF1vEniF+esGeq+Mqb5rPyvD047e
uK67/GEnG86j2ewDJHgHr/rteQCP09kbkICHQwKuEmc+hi8H2GBVB0YihFETBh3l
WXHnPVMGDcihrXGiggaGVXFv7Br4SFZCia9C3Hj1RNBD4HO4VXnhCJgXuC2HFga8
oetINLa2WqKl6MJEfp0lIsjSBn9byv9VlodaQRy103tm3OGKviKsrlfqqYl2vFUn
cVEWyHZx2nLOPS6kjnlf0OtxZnqhyh0VeojDOAcpv+hbV84BprGEcyrx3OWGnMfg
yXdvHTBWhSJUDOXM0vxirrZTI4JgrcPJOzWJZCYJXCyyNqMKdB8=
=uRnL
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f1ddb94fb2bab615ec446da83e62f2bcf963bddc7b9fe600e326701926dc6daf
size 214234080

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAlyt0mAACgkQ9DSh76/u
rqNMEQ//baoCPlnLh0+yJzpGFwRGtnQYtXwkv1si/2y43H9tB/uyCB5bhxSKW+oG
ZfqFUD5z58qawEVjzA9rv5SiPVx+QJgFyEOj4WHhOhlQhqI69tqeg0EIAdmYmlzM
D+13tF1j0O1pg9+Kj62xEk0qunZaO0x1yiKZ7VKpbyvyjSKCZ8Qgx84dF4L29TKX
zx7C+oUN+uSioLLg7kps7h9hfRk50ya6wihSxOZTFJNHLHbCeEV2pjMtkddLcDkD
LFB6ol31KYxgn+oAIasO2+rsdUsDDKx+DQVXStm9mWPWMV0jO5lDpHGsUxUWMJLK
Lnb+RYqnfZzAQ1f/Cta0LK/HnclOxx/YHXLF9WeYjLxm6gjbesuLjmbTZMIyfoxH
/FvPwdyU4V6JuO1DQc7Bk4ieGqmU+92tO96kUGugUIEOezCSJQJ0YK6kQJCFQ9Dz
RgxpJK0Uam/A6qBht3cTsaNgBolCw/7Eck9iMYdND4TkQ/K6RPrc0W+e/rnsPOl0
zL/ZdSesjyCc7+x37qDkS+akeQq2BVET/+p6t2DgzMXAg4xvmE091WRMaR8O53xk
U+scM6YkF908CJdxYOtqQg6f3B2OcE/YKSKhuApwt+P6Wbbh858gkwN5EDc8TxLn
bgDuF4u78zF/vMnCO7YRJGKkZS+MAwSKuBgU8e74nMyfIRg8kmA=
=qO+T
-----END PGP SIGNATURE-----

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:619f92db787dc8cb4aa81f203b3eefbd02a4affd382bf8d1b9268c846d360d92
size 15267780

View File

@ -1,16 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAlyMCLgACgkQ9DSh76/u
rqOx1Q/9EEm+O4ly/+Sf79Hmhgi4nD3OmZOpN9s+Z0zxbEq/7P9UtBxQiD21yqwW
XQN0w77dJwFflVVF8yb2rvsdfs9LFs4XzbnSEMmlCNq3OAKYazRbK9XYz2pnazB6
mEHi3mE0z2jdvbbO9xbRjrIc90bg3T2dEFKX27FjpL19JpSQDpEILJyi9VHqyupJ
GsQnIdPK8Z9bKX6tcftu4ldh1601UNoRBNprj/0Ay+j4XPpYoWhdDaOA9sI+CP6L
irWZTCObulzrFObpkCzZm/fx9qegGLZ1f/X9B64aBDGPPOACc3smmjhAFSwpOsvT
JrvHb46Xgd3gM4fs64uZ/BOSkw5NCEM/kRZoCTrwVMezi4np/0mZEeN0wYa+jJaH
n+fWYiraAHibnIfvypWveUyXYRkeUaqJfthg7ajewbfvA4e4Fsx5TMgIz9/WQafm
NlznBHAoCWo8jXrub1RDk32zU1ubLnroZxFvdDmGZZSNIuom9wIc2pv/YAsc6ISC
EnwRMu8WEyQWu4yKNcLQaVqZnTX+6Xks7aCmEUBy4uLRiAOMPK2kzPeJsq68Jwpp
7yuZoi8GbpQo08Y8yQ6V5MdjSFwjSK9Vv1SiOONF/MFxNqYrVRQEQwgfs0Mk2aem
goVHu6jGvNV+Z3RTbCsTS/7mqrJUKlZPXzwr75BFrUcZ7894W24=
=2T6D
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c1b6923eb66610abeecde79fcc28c9c61353e5b1f2772a37c7aa7a018dbe1132
size 13024476

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAlyt0mUACgkQ9DSh76/u
rqNSrw/+PUp9c3ZqAMCRgUQVWCIXPw8mOqEof30cqO94hbYwea7nVu2KREGkXggq
yLydZO0L+V9ArGaQLBnnUtR5W+XtI8TMOEfk8nJV+TAhAF7qc5VYMZ61ZYfAEUex
f8jkSXx9MPHV3Baq/cqv3aRHjAk7Jg8V85rj8L3tz1q5J1dVrya9PXjMGzLpqidK
UNVVW9C7IGdSOBMa/VgncFV9XLqKELhxsi667Zg6fEXyoG7/hMWkxehpiMZkf9NE
UeuS8kuAwCPYDp8gyErwRDMsDr4imtbFUtRkvmlwLUKhte4K2N7Gm4VS5WMGp87g
7VxGUnF8eawHD8J5yydfzctnOFKkUYIcxz5vfc+sp+LRNIxeyn7AA3zW/0ZBtAYn
4kg09XzZX2bmU590SddSno2k4GkTqwZjXaaRkPoyZyuAjTFHTcV95hWEEoiIoh1P
ty7B1NviRgumRgFR/cgNKS7SBHETPXNF3vgRmjrlTti9qRtfLP5O+RGkLSsRMAxh
lXvWfE2t8x3iG017WYBnKKDzke+3mYLQ/B4WLsfaKUyZ9yU7oskvS0qE6r4aOFIK
uj0BOZlb0Hfc3+DclZIa80iS+F9eF+NDlkeuavJLcDeQ60KHGXkWG5Eo1CPkUZ0Y
ExJKtb2RdTKQUMXKTCCc8EGu/JeguMzaIwpiVWYI+tyhzZPKq7U=
=aaIC
-----END PGP SIGNATURE-----

View File

@ -1,24 +0,0 @@
--- configure.ac.orig
+++ configure.ac
@@ -8669,11 +8669,17 @@ if test "x$enable_postgresql_sdbc" != "x
done
fi
AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
- if test -z "$PGCONFIG"; then
- AC_MSG_ERROR([pg_config needed; set PGCONFIG if not in PATH])
+ if test -n "$PGCONFIG"; then
+ POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
+ POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
+ else
+ PKG_CHECK_MODULES(POSTGRESQL, libpq, [
+ POSTGRESQL_INC=$POSTGRESQL_CFLAGS
+ POSTGRESQL_LIB=$POSTGRESQL_LIBS
+ ],[
+ AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
+ ])
fi
- POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
- POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
FilterLibs "${POSTGRESQL_LIB}"
POSTGRESQL_LIB="${filteredlibs}"
else

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:37e86f2675003a43379658ca5ad65e9093df5353dc0e6dc0a2d34450dbab1745
size 141946920

View File

@ -1,16 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAlyMCLgACgkQ9DSh76/u
rqPn+g/+PpdUeW8Mx8/whNCsIt04ONGc1/e+3506krbFJmd38a4n/MoHQuljQjID
tWODxMjXp7perwaR6wGVzHEkRv8YXZq7CiSwhuxa+e+dwWunkc99/4ICHLXMdkaR
uDgDQRHaoT6bYpU1vkzXglrJl+Vs+N+LBJQq7kjNbHztzb1MJkOkn6EmJKutUaQP
ijDpRAnrJ2G8HpcPQjgSCyzBdJ54whm7FGCTasaTk/RtKIweFiopBZQ9l8gJIFyg
yivdEG1VugAIwVBZy9OtWy9vuIF47BfIa02OmnHkq3P5ZQa24OFrAf9N+JohnPwN
zV5DfHxluBi3BRsS/UtVgQPk+LCmnfCdscM+XULHcJUAXUey8C6oKPltgNRq6kcK
V10rm7npmUpDkM16RQ7JN/PbSMnDBPXp5ImE3wCgRLbZJk2uzR/+1hZ5UO9BeZnK
EQVWWLXx1Tf2d8oRyRIl5DJ4ncOATOW+R0e04qYtgI2ckiYACNnkUteRzsaKIcgn
d7U/hAlUpXmwCad4uZMfUF4xSd0iiql/YBxLkfEh2WB46cDmX96qU4FQV0htBHbi
VfQX2nNLWUxgv58Gi15VUlzMj3JDQWfr5TzgMgc9wQtg5MhhyMu0uhsPSGjxKmbV
88J95raPPqRXXL+OBVHRakoQUOSwoh+49aMpstCn7rLfcXEvTO0=
=OAxv
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:77bfeac5cefb96210a09557ad7f5c40ae399b0658f879fddb02891ac4d2add3e
size 141965408

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAlyt0mYACgkQ9DSh76/u
rqOb5xAAzLO/8MvPk2JdL0xO4/+/jMyXkuNWMppvQ4LtD1veioTRzETA1JSkhsih
DxTG/zF2OviUpjtuvtGINpgPgIxzj44ZLjWfrOmixad3KDqdTOeN1dd8n+A0T+qP
0+9kcULqvnENc+c/SFJHRtl0wMU1ZQa+cH5mIP1YIZFk/HUSkKJECOQmhSDWVj5k
pquydJIjTAeEg8cvJyeSX8D4uxmjTYdV3pkT4KMckbu14CMRAurVqOFXlzyo3FiT
sv7wat5iBq3B1dS1ggusfHqWwkY/cjI+dwyZP9n68Ueb2ydwim5nyOaiQBh8GDQa
hLX4NILIOG5jQRXpkDf7HgzA05JfANGdFg3q96z0P4cooHQGKxarIJKElvr1V30a
hEfgwjM2q4I/8RK4FV04XsIYYwXvPinGeg5oaTIFjvYHmJqoNrCRTnEfU9NMj2P0
sina23xA86bwJuDP3wjLLfMIaIXI9MvBRIRvNyhva/OBxciaaa1vmv4ijIfyK2tA
3RMwLrPwPg40a4FEuhHLAtSK71AUDpwdHu5vO5ccAvpUZ/yL1PqBUN2x92Qr1nuA
SGpguqNzEqQgghZAlm4QqFUm0/ka01uBT417Wa3VzejNzTDy57+ChXvNy7IxGQI5
39keTTNzu8yg3KQ5lyTc72JkCSTOrX1hTReHghqYR44bzrJpHzY=
=JxYO
-----END PGP SIGNATURE-----

View File

@ -1,3 +1,16 @@
-------------------------------------------------------------------
Mon Apr 15 09:14:47 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>
- Update to 6.2.3.2:
* Bugfix release 6.2.3
- Remove merged patches:
* old-boost.patch
* libreoffice-postgresql.patch
* 0001-Fix-LTO-segfault-in-libtest_sw_uwriter-test.patch
* boost_169.patch
* kde5.patch
* old-icu.patch
-------------------------------------------------------------------
Thu Apr 4 11:34:54 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>

View File

@ -52,7 +52,7 @@
%bcond_with gtk3
%endif
Name: libreoffice
Version: 6.2.2.2
Version: 6.2.3.2
Release: 0
Summary: A Free Office Suite (Framework)
License: LGPL-3.0-or-later AND MPL-2.0+
@ -99,12 +99,6 @@ Patch1: scp2-user-config-suse.diff
# FIXME: the right fix is to compile the help and produce the .db_, .ht_, and other files
Patch2: nlpsolver-no-broken-help.diff
Patch3: mediawiki-no-broken-help.diff
Patch5: old-boost.patch
Patch7: libreoffice-postgresql.patch
Patch8: 0001-Fix-LTO-segfault-in-libtest_sw_uwriter-test.patch
Patch9: boost_169.patch
Patch10: kde5.patch
Patch11: old-icu.patch
Patch12: 0001-Use-sort-on-finds-to-improve-deterministic-build.patch
# try to save space by using hardlinks
Patch990: install-with-hardlinks.diff
@ -968,12 +962,6 @@ Provides %{langname} translations and additional resources (help files, etc.) fo
%endif # Leap 42/SLE-12
%patch2
%patch3
%patch5 -p1
%patch7
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch990 -p1
%patch991 -p1

View File

@ -1,56 +0,0 @@
Index: libreoffice-6.2.2.1/vcl/unx/gtk3_kde5/gtk3_kde5_filepicker_ipc.cxx
===================================================================
--- libreoffice-6.2.2.1.orig/vcl/unx/gtk3_kde5/gtk3_kde5_filepicker_ipc.cxx
+++ libreoffice-6.2.2.1/vcl/unx/gtk3_kde5/gtk3_kde5_filepicker_ipc.cxx
@@ -58,7 +58,7 @@ OUString applicationDirPath()
const auto utf8Path = applicationSystemPath.toUtf8();
auto ret = boost::filesystem::path(utf8Path.getStr(), utf8Path.getStr() + utf8Path.getLength());
ret.remove_filename();
- return OUString::fromUtf8(OString(ret.c_str(), ret.size()));
+ return OUString::fromUtf8(OString(ret.c_str(), strlen(ret.c_str())));
}
OUString findPickerExecutable()
Index: libreoffice-6.2.2.1/sw/source/core/crsr/findtxt.cxx
===================================================================
--- libreoffice-6.2.2.1.orig/sw/source/core/crsr/findtxt.cxx
+++ libreoffice-6.2.2.1/sw/source/core/crsr/findtxt.cxx
@@ -152,7 +152,11 @@ public:
{
if (pFrame)
{
+#if BOOST_VERSION < 105600
+ m_oMergedIter.reset(*pFrame);
+#else
m_oMergedIter.emplace(*pFrame);
+#endif
}
}
Index: libreoffice-6.2.2.1/sw/source/core/inc/txtfrm.hxx
===================================================================
--- libreoffice-6.2.2.1.orig/sw/source/core/inc/txtfrm.hxx
+++ libreoffice-6.2.2.1/sw/source/core/inc/txtfrm.hxx
@@ -24,6 +24,8 @@
#include <ndtxt.hxx>
#include "TextFrameIndex.hxx"
+#include <boost/version.hpp>
+
namespace com { namespace sun { namespace star { namespace linguistic2 { class XHyphenatedWord; } } } }
namespace sw { namespace mark { class IMark; } }
@@ -980,8 +982,13 @@ struct MergedPara
class MergedAttrIterBase
{
protected:
+#if BOOST_VERSION < 105600
+ sw::MergedPara const* m_pMerged;
+ SwTextNode const* m_pNode;
+#else
sw::MergedPara const*const m_pMerged;
SwTextNode const*const m_pNode;
+#endif
size_t m_CurrentExtent;
size_t m_CurrentHint;
MergedAttrIterBase(SwTextFrame const& rFrame);

View File

@ -1,49 +0,0 @@
From 8e264d64093e11fbabdd13e0f86bec8b7c989796 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Chv=C3=A1tal?= <tchvatal@suse.com>
Date: Fri, 15 Mar 2019 16:43:31 +0100
Subject: [PATCH] Use RegexMatcher.find(pos, status) call on old ICU
The RegexMatcher.find(status) is new since icu 55 and this works even
on the old releases thus revert there to the available albeit slower
call.
Change-Id: I964c10efd15515b04ac9037cda3b5b309910baf5
---
sc/source/core/tool/interpr1.cxx | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index 75fd8f82b874..0281ab3f4cbf 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -9408,7 +9408,12 @@ void ScInterpreter::ScRegex()
{
// Find n-th occurrence.
sal_Int32 nCount = 0;
- while (aRegexMatcher.find( status) && U_SUCCESS(status) && ++nCount < nOccurrence)
+#if (U_ICU_VERSION_MAJOR_NUM < 55)
+ int32_t nStartPos = 0;
+ while (aRegexMatcher.find(nStartPos, status) && U_SUCCESS(status) && ++nCount < nOccurrence)
+#else
+ while (aRegexMatcher.find(status) && U_SUCCESS(status) && ++nCount < nOccurrence)
+#endif
;
if (U_FAILURE(status))
{
@@ -9448,7 +9453,12 @@ void ScInterpreter::ScRegex()
{
// Replace n-th occurrence of match with replacement.
sal_Int32 nCount = 0;
- while (aRegexMatcher.find( status) && U_SUCCESS(status))
+#if (U_ICU_VERSION_MAJOR_NUM < 55)
+ int32_t nStartPos = 0;
+ while (aRegexMatcher.find(nStartPos, status) && U_SUCCESS(status))
+#else
+ while (aRegexMatcher.find(status) && U_SUCCESS(status))
+#endif
{
// XXX NOTE: After several RegexMatcher::find() the
// RegexMatcher::appendReplacement() still starts at the
--
2.21.0