$ git diff --patch-with-stat --summary ef7e2a17f999db4141a47552751b87293ca9331d..b8c36848516c6dc2c46a079b66bf295694888252
.abf.yml | 4 +-
0004-Port-qsslkey.patch | 61 ++++-------
0009-Update-copyrights.patch | 63 +++--------
...efs-for-old-versions-from-the-dlopen-glue.patch | 10 +-
...us-crashes-during-application-destruction.patch | 120 ---------------------
qt5-qtbase-5.8-QTBUG-56140.patch | 48 +++++++++
qt5-qtbase.spec | 22 ++--
qtbase-opensource-src-5.9.6-QTBUG-68939.patch | 93 ++++++++++++++++
8 files changed, 195 insertions(+), 226 deletions(-)
delete mode 100644 Fix-some-QtDBus-crashes-during-application-destruction.patch
create mode 100644 qt5-qtbase-5.8-QTBUG-56140.patch
create mode 100644 qtbase-opensource-src-5.9.6-QTBUG-68939.patch
diff --git a/.abf.yml b/.abf.yml
index e818479..ba8654d 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -1,2 +1,4 @@
+removed_sources:
+ qtbase-opensource-src-5.9.2.tar.xz: 65332ea9fbeb31384a87fd22ff5ad2d6251bf893
sources:
- qtbase-opensource-src-5.8.0.tar.xz: eacdd022615734ccdba4e7a92f1f5f3366c0c415
+ qtbase-opensource-src-5.9.6.tar.xz: 2b191d464d8c795ba81e5b6871fc88559e6e75aa
diff --git a/0004-Port-qsslkey.patch b/0004-Port-qsslkey.patch
index 807733d..90263d9 100644
--- a/0004-Port-qsslkey.patch
+++ b/0004-Port-qsslkey.patch
@@ -1,19 +1,5 @@
-From 4e90ef83e0d418220b8a8410e6231db98b3c6021 Mon Sep 17 00:00:00 2001
-From: "Richard J. Moore" <rich@kde.org>
-Date: Sun, 24 Jul 2016 13:53:40 +0100
-Subject: [PATCH 04/23] Port qsslkey
-
-Change-Id: If9a798b5dd2f4a2b895d4e37b792a467fe6d63cb
----
- src/network/ssl/qsslkey_openssl.cpp | 42 +++++++++++++-------------
- src/network/ssl/qsslsocket_openssl_symbols.cpp | 7 +++++
- src/network/ssl/qsslsocket_openssl_symbols_p.h | 4 +++
- 3 files changed, 32 insertions(+), 21 deletions(-)
-
-diff --git a/src/network/ssl/qsslkey_openssl.cpp b/src/network/ssl/qsslkey_openssl.cpp
-index 79df33e..344a809 100644
---- a/src/network/ssl/qsslkey_openssl.cpp
-+++ b/src/network/ssl/qsslkey_openssl.cpp
+--- qtbase-opensource-src-5.9.2/src/network/ssl/qsslkey_openssl.cpp.0053~ 2017-10-02 10:43:38.000000000 +0200
++++ qtbase-opensource-src-5.9.2/src/network/ssl/qsslkey_openssl.cpp 2017-10-06 14:07:40.057013276 +0200
@@ -39,6 +39,7 @@
@@ -22,10 +8,10 @@ index 79df33e..344a809 100644
#include "qsslkey_p.h"
#include "qsslsocket_openssl_symbols_p.h"
#include "qsslsocket.h"
-@@ -84,32 +85,30 @@ void QSslKeyPrivate::clear(bool deep)
+@@ -87,32 +88,32 @@ bool QSslKeyPrivate::fromEVP_PKEY(EVP_PK
+ if (pkey == nullptr)
+ return false;
- bool QSslKeyPrivate::fromEVP_PKEY(EVP_PKEY *pkey)
- {
- if (pkey->type == EVP_PKEY_RSA) {
+ int keyType = q_EVP_PKEY_type(q_EVP_PKEY_base_id(pkey));
+
@@ -33,7 +19,7 @@ index 79df33e..344a809 100644
isNull = false;
algorithm = QSsl::Rsa;
type = QSsl::PrivateKey;
--
+
- rsa = q_RSA_new();
- memcpy(rsa, q_EVP_PKEY_get1_RSA(pkey), sizeof(RSA));
+ rsa = q_EVP_PKEY_get1_RSA(pkey);
@@ -45,7 +31,7 @@ index 79df33e..344a809 100644
isNull = false;
algorithm = QSsl::Dsa;
type = QSsl::PrivateKey;
--
+
- dsa = q_DSA_new();
- memcpy(dsa, q_EVP_PKEY_get1_DSA(pkey), sizeof(DSA));
+ dsa = q_EVP_PKEY_get1_DSA(pkey);
@@ -63,7 +49,7 @@ index 79df33e..344a809 100644
return true;
}
-@@ -178,8 +177,8 @@ int QSslKeyPrivate::length() const
+@@ -181,8 +182,8 @@ int QSslKeyPrivate::length() const
return -1;
switch (algorithm) {
@@ -74,7 +60,7 @@ index 79df33e..344a809 100644
#ifndef OPENSSL_NO_EC
case QSsl::Ec: return q_EC_GROUP_get_degree(q_EC_KEY_get0_group(ec));
#endif
-@@ -273,7 +272,7 @@ Qt::HANDLE QSslKeyPrivate::handle() const
+@@ -276,7 +277,7 @@ Qt::HANDLE QSslKeyPrivate::handle() cons
static QByteArray doCrypt(QSslKeyPrivate::Cipher cipher, const QByteArray &data, const QByteArray &key, const QByteArray &iv, int enc)
{
@@ -83,7 +69,7 @@ index 79df33e..344a809 100644
const EVP_CIPHER* type = 0;
int i = 0, len = 0;
-@@ -291,21 +290,22 @@ static QByteArray doCrypt(QSslKeyPrivate::Cipher cipher, const QByteArray &data,
+@@ -294,21 +295,22 @@ static QByteArray doCrypt(QSslKeyPrivate
QByteArray output;
output.resize(data.size() + EVP_MAX_BLOCK_LENGTH);
@@ -114,11 +100,9 @@ index 79df33e..344a809 100644
return output.left(len);
}
-diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp
-index b2c1c03..a764787 100644
---- a/src/network/ssl/qsslsocket_openssl_symbols.cpp
-+++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp
-@@ -165,10 +165,14 @@ DEFINEFUNC(void, CRYPTO_set_id_callback, unsigned long (*a)(), a, return, DUMMYA
+--- qtbase-opensource-src-5.9.2/src/network/ssl/qsslsocket_openssl_symbols.cpp.0053~ 2017-10-06 14:03:05.659812295 +0200
++++ qtbase-opensource-src-5.9.2/src/network/ssl/qsslsocket_openssl_symbols.cpp 2017-10-06 14:03:05.660812292 +0200
+@@ -165,10 +165,14 @@ DEFINEFUNC(void, CRYPTO_set_id_callback,
DEFINEFUNC(void, CRYPTO_free, void *a, a, return, DUMMYARG)
DEFINEFUNC(DSA *, DSA_new, DUMMYARG, DUMMYARG, return 0, return)
DEFINEFUNC(void, DSA_free, DSA *a, a, return, DUMMYARG)
@@ -133,7 +117,7 @@ index b2c1c03..a764787 100644
DEFINEFUNC(void, EVP_CIPHER_CTX_cleanup, EVP_CIPHER_CTX *a, a, return, DUMMYARG)
DEFINEFUNC(void, EVP_CIPHER_CTX_init, EVP_CIPHER_CTX *a, a, return, DUMMYARG)
DEFINEFUNC4(int, EVP_CIPHER_CTX_ctrl, EVP_CIPHER_CTX *ctx, ctx, int type, type, int arg, arg, void *ptr, ptr, return 0, return);
-@@ -234,6 +238,7 @@ DEFINEFUNC2(void, RAND_seed, const void *a, a, int b, b, return, DUMMYARG)
+@@ -236,6 +240,7 @@ DEFINEFUNC2(void, RAND_seed, const void
DEFINEFUNC(int, RAND_status, void, DUMMYARG, return -1, return)
DEFINEFUNC(RSA *, RSA_new, DUMMYARG, DUMMYARG, return 0, return)
DEFINEFUNC(void, RSA_free, RSA *a, a, return, DUMMYARG)
@@ -141,7 +125,7 @@ index b2c1c03..a764787 100644
DEFINEFUNC(int, sk_num, STACK *a, a, return -1, return)
DEFINEFUNC2(void, sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG)
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
-@@ -809,6 +814,7 @@ bool q_resolveOpenSslSymbols()
+@@ -810,6 +815,7 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(CRYPTO_set_locking_callback)
RESOLVEFUNC(DSA_new)
RESOLVEFUNC(DSA_free)
@@ -149,7 +133,7 @@ index b2c1c03..a764787 100644
RESOLVEFUNC(ERR_error_string)
RESOLVEFUNC(ERR_get_error)
RESOLVEFUNC(ERR_free_strings)
-@@ -874,6 +880,7 @@ bool q_resolveOpenSslSymbols()
+@@ -877,6 +883,7 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(RAND_status)
RESOLVEFUNC(RSA_new)
RESOLVEFUNC(RSA_free)
@@ -157,11 +141,9 @@ index b2c1c03..a764787 100644
RESOLVEFUNC(sk_new_null)
RESOLVEFUNC(sk_push)
RESOLVEFUNC(sk_free)
-diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h
-index 111e3d9..4e3f386 100644
---- a/src/network/ssl/qsslsocket_openssl_symbols_p.h
-+++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h
-@@ -253,10 +253,13 @@ void q_CRYPTO_set_id_callback(unsigned long (*a)());
+--- qtbase-opensource-src-5.9.2/src/network/ssl/qsslsocket_openssl_symbols_p.h.0053~ 2017-10-06 14:03:05.659812295 +0200
++++ qtbase-opensource-src-5.9.2/src/network/ssl/qsslsocket_openssl_symbols_p.h 2017-10-06 14:03:05.660812292 +0200
+@@ -253,10 +253,13 @@ void q_CRYPTO_set_id_callback(unsigned l
void q_CRYPTO_free(void *a);
DSA *q_DSA_new();
void q_DSA_free(DSA *a);
@@ -175,7 +157,7 @@ index 111e3d9..4e3f386 100644
void q_EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a);
void q_EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a);
int q_EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr);
-@@ -326,6 +329,7 @@ void q_RAND_seed(const void *a, int b);
+@@ -328,6 +331,7 @@ void q_RAND_seed(const void *a, int b);
int q_RAND_status();
RSA *q_RSA_new();
void q_RSA_free(RSA *a);
@@ -183,6 +165,3 @@ index 111e3d9..4e3f386 100644
int q_sk_num(STACK *a);
void q_sk_pop_free(STACK *a, void (*b)(void *));
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
---
-2.10.0
-
diff --git a/0009-Update-copyrights.patch b/0009-Update-copyrights.patch
index 6d73c82..c043b7a 100644
--- a/0009-Update-copyrights.patch
+++ b/0009-Update-copyrights.patch
@@ -1,23 +1,5 @@
-From 610cc2c676ad49640715b8001d384727638028af Mon Sep 17 00:00:00 2001
-From: "Richard J. Moore" <rich@kde.org>
-Date: Sun, 24 Jul 2016 20:32:55 +0100
-Subject: [PATCH 09/23] Update copyrights
-
-Change-Id: I4f1940d385c15552938986b6bf45c2b1b265d754
----
- src/network/ssl/qsslcertificate_openssl.cpp | 1 +
- src/network/ssl/qsslcontext_openssl.cpp | 1 +
- src/network/ssl/qssldiffiehellmanparameters_openssl.cpp | 1 +
- src/network/ssl/qsslkey_openssl.cpp | 1 +
- src/network/ssl/qsslsocket_openssl.cpp | 1 +
- src/network/ssl/qsslsocket_openssl_symbols.cpp | 1 +
- src/network/ssl/qsslsocket_openssl_symbols_p.h | 1 +
- 7 files changed, 7 insertions(+)
-
-diff --git a/src/network/ssl/qsslcertificate_openssl.cpp b/src/network/ssl/qsslcertificate_openssl.cpp
-index 284053e..72fa076 100644
---- a/src/network/ssl/qsslcertificate_openssl.cpp
-+++ b/src/network/ssl/qsslcertificate_openssl.cpp
+--- qtbase-opensource-src-5.9.0-beta/src/network/ssl/qsslcertificate_openssl.cpp.0058~ 2017-04-08 13:48:57.377091332 +0200
++++ qtbase-opensource-src-5.9.0-beta/src/network/ssl/qsslcertificate_openssl.cpp 2017-04-08 13:48:57.420091630 +0200
@@ -1,6 +1,7 @@
/****************************************************************************
**
@@ -26,10 +8,8 @@ index 284053e..72fa076 100644
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
-diff --git a/src/network/ssl/qsslcontext_openssl.cpp b/src/network/ssl/qsslcontext_openssl.cpp
-index 38bb86b..391fd08 100644
---- a/src/network/ssl/qsslcontext_openssl.cpp
-+++ b/src/network/ssl/qsslcontext_openssl.cpp
+--- qtbase-opensource-src-5.9.0-beta/src/network/ssl/qsslcontext_openssl.cpp.0058~ 2017-04-08 13:48:57.346091117 +0200
++++ qtbase-opensource-src-5.9.0-beta/src/network/ssl/qsslcontext_openssl.cpp 2017-04-08 13:48:57.420091630 +0200
@@ -3,6 +3,7 @@
** Copyright (C) 2016 The Qt Company Ltd.
** Copyright (C) 2014 BlackBerry Limited. All rights reserved.
@@ -38,22 +18,18 @@ index 38bb86b..391fd08 100644
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
-diff --git a/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp b/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp
-index b72af15..471c8f6 100644
---- a/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp
-+++ b/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp
+--- qtbase-opensource-src-5.9.0-beta/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp.0058~ 2017-04-08 13:48:57.420091630 +0200
++++ qtbase-opensource-src-5.9.0-beta/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp 2017-04-08 13:49:35.708358591 +0200
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2015 Mikkel Krautz <mikkel@krautz.dk>
+** Copyright (C) 2016 Richard J. Moore <rich@kde.org>
- ** Contact: http://www.qt.io/licensing/
+ ** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
-diff --git a/src/network/ssl/qsslkey_openssl.cpp b/src/network/ssl/qsslkey_openssl.cpp
-index c2ad022..77bc348 100644
---- a/src/network/ssl/qsslkey_openssl.cpp
-+++ b/src/network/ssl/qsslkey_openssl.cpp
+--- qtbase-opensource-src-5.9.0-beta/src/network/ssl/qsslkey_openssl.cpp.0058~ 2017-04-08 13:48:57.338091062 +0200
++++ qtbase-opensource-src-5.9.0-beta/src/network/ssl/qsslkey_openssl.cpp 2017-04-08 13:48:57.420091630 +0200
@@ -1,6 +1,7 @@
/****************************************************************************
**
@@ -62,10 +38,8 @@ index c2ad022..77bc348 100644
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
-diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp
-index ce1e12e..9dffabc 100644
---- a/src/network/ssl/qsslsocket_openssl.cpp
-+++ b/src/network/ssl/qsslsocket_openssl.cpp
+--- qtbase-opensource-src-5.9.0-beta/src/network/ssl/qsslsocket_openssl.cpp.0058~ 2017-04-08 13:48:57.378091339 +0200
++++ qtbase-opensource-src-5.9.0-beta/src/network/ssl/qsslsocket_openssl.cpp 2017-04-08 13:48:57.420091630 +0200
@@ -2,6 +2,7 @@
**
** Copyright (C) 2016 The Qt Company Ltd.
@@ -74,10 +48,8 @@ index ce1e12e..9dffabc 100644
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
-diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp
-index d922074..fc2220d 100644
---- a/src/network/ssl/qsslsocket_openssl_symbols.cpp
-+++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp
+--- qtbase-opensource-src-5.9.0-beta/src/network/ssl/qsslsocket_openssl_symbols.cpp.0058~ 2017-04-08 13:48:57.378091339 +0200
++++ qtbase-opensource-src-5.9.0-beta/src/network/ssl/qsslsocket_openssl_symbols.cpp 2017-04-08 13:48:57.421091637 +0200
@@ -2,6 +2,7 @@
**
** Copyright (C) 2016 The Qt Company Ltd.
@@ -86,10 +58,8 @@ index d922074..fc2220d 100644
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
-diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h
-index ccdeea2..04b904b 100644
---- a/src/network/ssl/qsslsocket_openssl_symbols_p.h
-+++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h
+--- qtbase-opensource-src-5.9.0-beta/src/network/ssl/qsslsocket_openssl_symbols_p.h.0058~ 2017-04-08 13:48:57.378091339 +0200
++++ qtbase-opensource-src-5.9.0-beta/src/network/ssl/qsslsocket_openssl_symbols_p.h 2017-04-08 13:48:57.421091637 +0200
@@ -2,6 +2,7 @@
**
** Copyright (C) 2016 The Qt Company Ltd.
@@ -98,6 +68,3 @@ index ccdeea2..04b904b 100644
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
---
-2.10.0
-
diff --git a/0010-Remove-ifdefs-for-old-versions-from-the-dlopen-glue.patch b/0010-Remove-ifdefs-for-old-versions-from-the-dlopen-glue.patch
index a0d729b..992427e 100644
--- a/0010-Remove-ifdefs-for-old-versions-from-the-dlopen-glue.patch
+++ b/0010-Remove-ifdefs-for-old-versions-from-the-dlopen-glue.patch
@@ -1,5 +1,5 @@
---- qtbase-opensource-src-5.8.0-beta/src/network/ssl/qsslsocket_openssl_symbols.cpp.0059~ 2016-11-07 16:25:56.415033637 +0100
-+++ qtbase-opensource-src-5.8.0-beta/src/network/ssl/qsslsocket_openssl_symbols.cpp 2016-11-07 16:25:56.417033593 +0100
+--- qtbase-opensource-src-5.9.0-alpha/src/network/ssl/qsslsocket_openssl_symbols.cpp.0059~ 2017-03-02 21:15:32.317012611 +0100
++++ qtbase-opensource-src-5.9.0-alpha/src/network/ssl/qsslsocket_openssl_symbols.cpp 2017-03-02 21:17:30.845632755 +0100
@@ -152,9 +152,7 @@ DEFINEFUNC3(int, BIO_read, BIO *a, a, vo
DEFINEFUNC(const BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return 0, return)
DEFINEFUNC3(int, BIO_write, BIO *a, a, const void *b, b, int c, c, return -1, return)
@@ -7,7 +7,7 @@
-#if OPENSSL_VERSION_NUMBER >= 0x10100000L
DEFINEFUNC2(int, BN_is_word, BIGNUM *a, a, BN_ULONG w, w, return 0, return)
-#endif
- DEFINEFUNC2(BN_ULONG, BN_mod_word, const BIGNUM *a, a, BN_ULONG w, w, return -1, return)
+ DEFINEFUNC2(BN_ULONG, BN_mod_word, const BIGNUM *a, a, BN_ULONG w, w, return static_cast<BN_ULONG>(-1), return)
#ifndef OPENSSL_NO_EC
DEFINEFUNC(const EC_GROUP*, EC_KEY_get0_group, const EC_KEY* k, k, return 0, return)
@@ -239,17 +237,10 @@ DEFINEFUNC(void, RSA_free, RSA *a, a, re
@@ -160,8 +160,8 @@
#endif // OPENSSL_NO_EC
RESOLVEFUNC(PKCS12_parse)
RESOLVEFUNC(d2i_PKCS12_bio)
---- qtbase-opensource-src-5.8.0-beta/src/network/ssl/qsslsocket_openssl_symbols_p.h.0059~ 2016-11-07 16:25:56.416033615 +0100
-+++ qtbase-opensource-src-5.8.0-beta/src/network/ssl/qsslsocket_openssl_symbols_p.h 2016-11-07 16:28:45.041226326 +0100
+--- qtbase-opensource-src-5.9.0-alpha/src/network/ssl/qsslsocket_openssl_symbols_p.h.0059~ 2017-03-02 21:15:32.317012611 +0100
++++ qtbase-opensource-src-5.9.0-alpha/src/network/ssl/qsslsocket_openssl_symbols_p.h 2017-03-02 21:15:32.319012621 +0100
@@ -229,20 +229,7 @@ int q_BIO_read(BIO *a, void *b, int c);
Q_AUTOTEST_EXPORT const BIO_METHOD *q_BIO_s_mem();
Q_AUTOTEST_EXPORT int q_BIO_write(BIO *a, const void *b, int c);
diff --git a/Fix-some-QtDBus-crashes-during-application-destruction.patch b/Fix-some-QtDBus-crashes-during-application-destruction.patch
deleted file mode 100644
index ce88f7d..0000000
--- a/Fix-some-QtDBus-crashes-during-application-destruction.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From d060b7aa5fc64902ea89416e58b57d6a90f5aea6 Mon Sep 17 00:00:00 2001
-From: Thiago Macieira <thiago.macieira@intel.com>
-Date: Tue, 31 May 2016 17:33:03 -0300
-Subject: [PATCH] Fix some QtDBus crashes during application destruction
-
-It's possible that some code executes after QDBusConnectionManager is
-destroyed and still tries to access QtDBus. Protect against such
-crashes.
-
-Change-Id: I87e17314d8b24ae983b1fffd1453c13fbd3cf48e
----
- src/dbus/qdbusconnection.cpp | 12 ++++++++----
- src/dbus/qdbusintegrator.cpp | 3 +++
- src/dbus/qdbusserver.cpp | 12 ++++++++++--
- 3 files changed, 21 insertions(+), 6 deletions(-)
-
-diff --git a/src/dbus/qdbusconnection.cpp b/src/dbus/qdbusconnection.cpp
-index 4db6396..c1c4f05 100644
---- a/src/dbus/qdbusconnection.cpp
-+++ b/src/dbus/qdbusconnection.cpp
-@@ -429,7 +429,7 @@ void QDBusConnectionManager::createServer(const QString &address, void *server)
- */
- QDBusConnection::QDBusConnection(const QString &name)
- {
-- if (name.isEmpty()) {
-+ if (name.isEmpty() || _q_manager.isDestroyed()) {
- d = 0;
- } else {
- QMutexLocker locker(&_q_manager()->mutex);
-@@ -494,7 +494,7 @@ QDBusConnection &QDBusConnection::operator=(const QDBusConnection &other)
- */
- QDBusConnection QDBusConnection::connectToBus(BusType type, const QString &name)
- {
-- if (!qdbus_loadLibDBus()) {
-+ if (_q_manager.isDestroyed() || !qdbus_loadLibDBus()) {
- QDBusConnectionPrivate *d = 0;
- return QDBusConnection(d);
- }
-@@ -508,7 +508,7 @@ QDBusConnection QDBusConnection::connectToBus(BusType type, const QString &name)
- QDBusConnection QDBusConnection::connectToBus(const QString &address,
- const QString &name)
- {
-- if (!qdbus_loadLibDBus()) {
-+ if (_q_manager.isDestroyed() || !qdbus_loadLibDBus()) {
- QDBusConnectionPrivate *d = 0;
- return QDBusConnection(d);
- }
-@@ -523,7 +523,7 @@ QDBusConnection QDBusConnection::connectToBus(const QString &address,
- QDBusConnection QDBusConnection::connectToPeer(const QString &address,
- const QString &name)
- {
-- if (!qdbus_loadLibDBus()) {
-+ if (_q_manager.isDestroyed() || !qdbus_loadLibDBus()) {
- QDBusConnectionPrivate *d = 0;
- return QDBusConnection(d);
- }
-@@ -1178,6 +1178,8 @@ bool QDBusConnection::unregisterService(const QString &serviceName)
- */
- QDBusConnection QDBusConnection::sessionBus()
- {
-+ if (_q_manager.isDestroyed())
-+ return QDBusConnection(Q_NULLPTR);
- return QDBusConnection(_q_manager()->busConnection(SessionBus));
- }
-
-@@ -1190,6 +1192,8 @@ QDBusConnection QDBusConnection::sessionBus()
- */
- QDBusConnection QDBusConnection::systemBus()
- {
-+ if (_q_manager.isDestroyed())
-+ return QDBusConnection(Q_NULLPTR);
- return QDBusConnection(_q_manager()->busConnection(SystemBus));
- }
-
-diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
-index 37d2ae1..9ea30d1 100644
---- a/src/dbus/qdbusintegrator.cpp
-+++ b/src/dbus/qdbusintegrator.cpp
-@@ -293,6 +293,9 @@ static void qDBusNewConnection(DBusServer *server, DBusConnection *connection, v
- Q_ASSERT(connection);
- Q_ASSERT(data);
-
-+ if (!QDBusConnectionManager::instance())
-+ return;
-+
- // keep the connection alive
- q_dbus_connection_ref(connection);
- QDBusConnectionPrivate *serverConnection = static_cast<QDBusConnectionPrivate *>(data);
-diff --git a/src/dbus/qdbusserver.cpp b/src/dbus/qdbusserver.cpp
-index babb270..ecb7d4f 100644
---- a/src/dbus/qdbusserver.cpp
-+++ b/src/dbus/qdbusserver.cpp
-@@ -62,7 +62,11 @@ QDBusServer::QDBusServer(const QString &address, QObject *parent)
- if (!qdbus_loadLibDBus())
- return;
-
-- emit QDBusConnectionManager::instance()->serverRequested(address, this);
-+ QDBusConnectionManager *instance = QDBusConnectionManager::instance();
-+ if (!instance)
-+ return;
-+
-+ emit instance->serverRequested(address, this);
- QObject::connect(d, SIGNAL(newServerConnection(QDBusConnectionPrivate*)),
- this, SLOT(_q_newConnection(QDBusConnectionPrivate*)), Qt::QueuedConnection);
- }
-@@ -87,7 +91,11 @@ QDBusServer::QDBusServer(QObject *parent)
- return;
- }
-
-- emit QDBusConnectionManager::instance()->serverRequested(address, this);
-+ QDBusConnectionManager *instance = QDBusConnectionManager::instance();
-+ if (!instance)
-+ return;
-+
-+ emit instance->serverRequested(address, this);
- QObject::connect(d, SIGNAL(newServerConnection(QDBusConnectionPrivate*)),
- this, SLOT(_q_newConnection(QDBusConnectionPrivate*)), Qt::QueuedConnection);
- }
---
-2.7.4
diff --git a/qt5-qtbase-5.8-QTBUG-56140.patch b/qt5-qtbase-5.8-QTBUG-56140.patch
new file mode 100644
index 0000000..e3024f7
--- /dev/null
+++ b/qt5-qtbase-5.8-QTBUG-56140.patch
@@ -0,0 +1,48 @@
+diff -up qtbase-opensource-src-5.7.1/src/plugins/platforms/eglfs/qeglfsdeviceintegration.cpp.0295 qtbase-opensource-src-5.7.1/src/plugins/platforms/eglfs/qeglfsdeviceintegration.cpp
+--- qtbase-opensource-src-5.7.1/src/plugins/platforms/eglfs/qeglfsdeviceintegration.cpp.0295 2017-02-09 07:41:56.976681266 -0600
++++ qtbase-opensource-src-5.7.1/src/plugins/platforms/eglfs/qeglfsdeviceintegration.cpp 2017-02-09 07:43:31.812667108 -0600
+@@ -222,7 +222,7 @@ QDpi QEGLDeviceIntegration::logicalDpi()
+
+ qreal QEGLDeviceIntegration::pixelDensity() const
+ {
+- return qRound(logicalDpi().first / qreal(100));
++ return qMax(1, qRound(logicalDpi().first / qreal(100)));
+ }
+
+ Qt::ScreenOrientation QEGLDeviceIntegration::nativeOrientation() const
+diff -up qtbase-opensource-src-5.7.1/src/plugins/platforms/windows/qwindowsscreen.cpp.0295 qtbase-opensource-src-5.7.1/src/plugins/platforms/windows/qwindowsscreen.cpp
+--- qtbase-opensource-src-5.7.1/src/plugins/platforms/windows/qwindowsscreen.cpp.0295 2016-12-01 02:17:04.000000000 -0600
++++ qtbase-opensource-src-5.7.1/src/plugins/platforms/windows/qwindowsscreen.cpp 2017-02-09 07:41:56.976681266 -0600
+@@ -264,7 +264,7 @@ qreal QWindowsScreen::pixelDensity() con
+ // the pixel density since it is reflects the Windows UI scaling.
+ // High DPI auto scaling should be disabled when the user chooses
+ // small fonts on a High DPI monitor, resulting in lower logical DPI.
+- return qRound(logicalDpi().first / 96);
++ return qMax(1, qRound(logicalDpi().first / 96));
+ }
+
+ /*!
+diff -up qtbase-opensource-src-5.7.1/src/plugins/platforms/winrt/qwinrtscreen.cpp.0295 qtbase-opensource-src-5.7.1/src/plugins/platforms/winrt/qwinrtscreen.cpp
+--- qtbase-opensource-src-5.7.1/src/plugins/platforms/winrt/qwinrtscreen.cpp.0295 2016-12-01 02:17:04.000000000 -0600
++++ qtbase-opensource-src-5.7.1/src/plugins/platforms/winrt/qwinrtscreen.cpp 2017-02-09 07:41:56.976681266 -0600
+@@ -644,7 +644,7 @@ QDpi QWinRTScreen::logicalDpi() const
+ qreal QWinRTScreen::pixelDensity() const
+ {
+ Q_D(const QWinRTScreen);
+- return qRound(d->logicalDpi / 96);
++ return qMax(1, qRound(d->logicalDpi / 96));
+ }
+
+ qreal QWinRTScreen::scaleFactor() const
+diff -up qtbase-opensource-src-5.7.1/src/plugins/platforms/xcb/qxcbscreen.cpp.0295 qtbase-opensource-src-5.7.1/src/plugins/platforms/xcb/qxcbscreen.cpp
+--- qtbase-opensource-src-5.7.1/src/plugins/platforms/xcb/qxcbscreen.cpp.0295 2016-12-01 02:17:04.000000000 -0600
++++ qtbase-opensource-src-5.7.1/src/plugins/platforms/xcb/qxcbscreen.cpp 2017-02-09 07:41:56.977681276 -0600
+@@ -633,7 +633,7 @@ void QXcbScreen::updateGeometry(const QR
+ m_sizeMillimeters = sizeInMillimeters(xGeometry.size(), virtualDpi());
+
+ qreal dpi = xGeometry.width() / physicalSize().width() * qreal(25.4);
+- m_pixelDensity = qRound(dpi/96);
++ m_pixelDensity = qMax(1, qRound(dpi/96));
+ m_geometry = QRect(xGeometry.topLeft(), xGeometry.size());
+ m_availableGeometry = xGeometry & m_virtualDesktop->workArea();
+ QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), m_geometry, m_availableGeometry);
diff --git a/qt5-qtbase.spec b/qt5-qtbase.spec
index 305a190..0c6f074 100644
--- a/qt5-qtbase.spec
+++ b/qt5-qtbase.spec
@@ -101,13 +101,13 @@
Summary: Version 5 of the Qt toolkit
Name: qt5-qtbase
-Version: 5.8.0
+Version: 5.9.6
%if "%{beta}" != ""
Release: 0.%{beta}.1
%define qttarballdir qtbase-opensource-src-%{version}-%{beta}
Source0: http://download.qt.io/development_releases/qt/%(echo %{version}|cut -d. -f1-2)/%{version}-%{beta}/submodules/%{qttarballdir}.tar.xz
%else
-Release: 5
+Release: 2
%define qttarballdir qtbase-opensource-src-%{version}
Source0: http://download.qt.io/official_releases/qt/%(echo %{version}|cut -d. -f1-2)/%{version}/submodules/%{qttarballdir}.tar.xz
%endif
@@ -165,14 +165,8 @@ Patch102: qtbase-opensource-src-5.6.0-moc_WORDSIZE.patch
### END OF FEDORA PATCHES
# (tpg) Upstream patches
-Patch1005: Merge-the-QDBusMetaTypes-custom-information-to-QDBusConnectionManager.patch
-Patch1006: Fix-some-QtDBus-crashes-during-application-destruction.patch
-# plasma crashes
-# https://bugs.kde.org/show_bug.cgi?id=342763
-Patch1008: 0c8f3229.patch
-Patch1009: 3bd0fd8f.patch
-Patch1007: 0874861b.patch
-Patch1010: baad82d2.patch
+#Patch1005: Merge-the-QDBusMetaTypes-custom-information-to-QDBusConnectionManager.patch
+Patch1006: qtbase-opensource-src-5.9.6-QTBUG-68939.patch
# FIXME this is broken -- but currently required because QtGui
# and friends prefer linking to system QtCore over linking to the
@@ -181,6 +175,8 @@ BuildConflicts: %{mklibname -d qt5core} < %{version}
BuildRequires: jpeg-devel
BuildRequires: double-conversion-devel
+# PCRE 2.x
+BuildRequires: pkgconfig(libpcre2-16)
# Build scripts
BuildRequires: python >= 3.0
BuildRequires: python2
@@ -637,6 +633,9 @@ Development files for the EGL fullscreen output driver for QtGui v5.
%files -n %{qtgui}-eglfs-devel
%{_qt_libdir}/libQt%{api}EglFsKmsSupport.so
%{_qt_libdir}/libQt%{api}EglFsKmsSupport.prl
+%{_qt_includedir}/QtKmsSupport
+%{_libdir}/libQt5KmsSupport.a
+%{_libdir}/libQt5KmsSupport.prl
#----------------------------------------------------------------------------
@@ -1593,7 +1592,8 @@ export PATH=`pwd`/pybin:$PATH
%if %{with mysql}
-I %{_includedir}/mysql \
%endif
- -I %{_includedir}/vg
+ -I %{_includedir}/vg \
+ -D PCRE2_CODE_UNIT_WIDTH=16
%make STRIP=/bin/true || make STRIP=/bin/true
diff --git a/qtbase-opensource-src-5.9.6-QTBUG-68939.patch b/qtbase-opensource-src-5.9.6-QTBUG-68939.patch
new file mode 100644
index 0000000..2268a64
--- /dev/null
+++ b/qtbase-opensource-src-5.9.6-QTBUG-68939.patch
@@ -0,0 +1,93 @@
+From 7706a3c307ebabc46564b3361c7e452b63cf0f61 Mon Sep 17 00:00:00 2001
+From: "R.J.V. Bertin" <rjvbertin@gmail.com>
+Date: Wed, 27 Jun 2018 16:47:48 +0200
+Subject: [PATCH] Use QDockArea cached sizehint appropriately
+
+The fix for QTBUG-16252 introduced a regression because it cached
+QDockArea sizehints and used this information regardless of whether
+the docks were expanded (showing widgets) or not. As a result, certain
+applications would no longer dimension views surrounded by QDocks to the
+full available space but instead act as if those docks were always
+expanded.
+
+This patch fixes that regression by checking whether the dock areas
+actually have visible widgets that are not floating before using the
+cached size hint.
+
+Task-number: QTBUG-68939
+Change-Id: I71732de739788337fcd46ed8ac4ecfef1ef6e239
+---
+ src/widgets/widgets/qdockarealayout.cpp | 33 +++++++++++++++++++++------------
+ 1 file changed, 21 insertions(+), 12 deletions(-)
+
+diff --git a/src/widgets/widgets/qdockarealayout.cpp b/src/widgets/widgets/qdockarealayout.cpp
+index bef7214c756..c3b386d7cc3 100644
+--- a/src/widgets/widgets/qdockarealayout.cpp
++++ b/src/widgets/widgets/qdockarealayout.cpp
+@@ -2652,6 +2652,23 @@ void QDockAreaLayout::removePlaceHolder(const QString &name)
+
+ static inline int qMax(int i1, int i2, int i3) { return qMax(i1, qMax(i2, i3)); }
+
++static QSize sizeHintForDock(QDockAreaLayoutInfo &dock)
++{
++ QSize size_hint = dock.size();
++ if (!dock.restoredSizeHint.isNull()) {
++ const auto item_list = dock.item_list;
++ for (int i = 0; i < item_list.size(); ++i) {
++ const QDockAreaLayoutItem &item = item_list.at(i);
++ const auto w = item.widgetItem;
++ if (!item.skip() && w != 0 && !w->widget()->isHidden() && !w->widget()->isWindow()) {
++ size_hint = dock.restoredSizeHint;
++ break;
++ }
++ }
++ }
++ return size_hint;
++}
++
+ void QDockAreaLayout::getGrid(QVector<QLayoutStruct> *_ver_struct_list,
+ QVector<QLayoutStruct> *_hor_struct_list)
+ {
+@@ -2677,36 +2694,28 @@ void QDockAreaLayout::getGrid(QVector<QLayoutStruct> *_ver_struct_list,
+ if (!docks[QInternal::BottomDock].isEmpty())
+ center_rect.setBottom(rect.bottom() - docks[QInternal::BottomDock].rect.height() - sep);
+
+- QSize left_hint = docks[QInternal::LeftDock].size();
+- if (!docks[QInternal::LeftDock].restoredSizeHint.isNull())
+- left_hint = docks[QInternal::LeftDock].restoredSizeHint;
++ QSize left_hint = sizeHintForDock(docks[QInternal::LeftDock]);
+ if (left_hint.isNull() || fallbackToSizeHints)
+ left_hint = docks[QInternal::LeftDock].sizeHint();
+ QSize left_min = docks[QInternal::LeftDock].minimumSize();
+ QSize left_max = docks[QInternal::LeftDock].maximumSize();
+ left_hint = left_hint.boundedTo(left_max).expandedTo(left_min);
+
+- QSize right_hint = docks[QInternal::RightDock].size();
+- if (!docks[QInternal::RightDock].restoredSizeHint.isNull())
+- right_hint = docks[QInternal::RightDock].restoredSizeHint;
++ QSize right_hint = sizeHintForDock(docks[QInternal::RightDock]);
+ if (right_hint.isNull() || fallbackToSizeHints)
+ right_hint = docks[QInternal::RightDock].sizeHint();
+ QSize right_min = docks[QInternal::RightDock].minimumSize();
+ QSize right_max = docks[QInternal::RightDock].maximumSize();
+ right_hint = right_hint.boundedTo(right_max).expandedTo(right_min);
+
+- QSize top_hint = docks[QInternal::TopDock].size();
+- if (!docks[QInternal::TopDock].restoredSizeHint.isNull())
+- top_hint = docks[QInternal::TopDock].restoredSizeHint;
++ QSize top_hint = sizeHintForDock(docks[QInternal::TopDock]);
+ if (top_hint.isNull() || fallbackToSizeHints)
+ top_hint = docks[QInternal::TopDock].sizeHint();
+ QSize top_min = docks[QInternal::TopDock].minimumSize();
+ QSize top_max = docks[QInternal::TopDock].maximumSize();
+ top_hint = top_hint.boundedTo(top_max).expandedTo(top_min);
+
+- QSize bottom_hint = docks[QInternal::BottomDock].size();
+- if (!docks[QInternal::BottomDock].restoredSizeHint.isNull())
+- bottom_hint = docks[QInternal::BottomDock].restoredSizeHint;
++ QSize bottom_hint = sizeHintForDock(docks[QInternal::BottomDock]);
+ if (bottom_hint.isNull() || fallbackToSizeHints)
+ bottom_hint = docks[QInternal::BottomDock].sizeHint();
+ QSize bottom_min = docks[QInternal::BottomDock].minimumSize();
+--
+2.16.3