aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAric Belsito <lluixhi@gmail.com>2018-05-14 09:21:24 -0700
committerAric Belsito <lluixhi@gmail.com>2018-05-14 09:21:24 -0700
commit36ad4ec6dc30a2cd5dd45bcb931233ca6d7f8c8a (patch)
tree2f373cd5ed0dd4310d04ca7adfd28fcf54786307
parentwww-client/firefox: make cmsghdr patch conditional (diff)
downloadmusl-36ad4ec6dc30a2cd5dd45bcb931233ca6d7f8c8a.tar.gz
musl-36ad4ec6dc30a2cd5dd45bcb931233ca6d7f8c8a.tar.bz2
musl-36ad4ec6dc30a2cd5dd45bcb931233ca6d7f8c8a.zip
dev-qt/qtcore: remove 5.7.1-r3
-rw-r--r--dev-qt/qtcore/Manifest1
-rw-r--r--dev-qt/qtcore/files/qtcore-4.8.6-QNAM-corruptions-fix.patch431
-rw-r--r--dev-qt/qtcore/files/qtcore-4.8.6-moc-boost-1.60.patch16
-rw-r--r--dev-qt/qtcore/files/qtcore-5.5.1-musl-iconv.patch12
-rw-r--r--dev-qt/qtcore/files/qtcore-5.6.2-plugins.patch81
-rw-r--r--dev-qt/qtcore/files/qtcore-5.7.1-qipm.patch152
-rw-r--r--dev-qt/qtcore/files/qtcore-5.7.1-qsfpm-1.patch252
-rw-r--r--dev-qt/qtcore/files/qtcore-5.7.1-qsfpm-2.patch195
-rw-r--r--dev-qt/qtcore/files/qtcore-5.9.3-avx.patch69
-rw-r--r--dev-qt/qtcore/files/qtcore-5.9.3-musl-iconv.patch12
-rw-r--r--dev-qt/qtcore/files/qtcore-clang-libc++abi.patch12
-rw-r--r--dev-qt/qtcore/metadata.xml2
-rw-r--r--dev-qt/qtcore/qtcore-4.8.7-r4.ebuild (renamed from dev-qt/qtcore/qtcore-4.8.7-r3.ebuild)4
-rw-r--r--dev-qt/qtcore/qtcore-5.7.1-r3.ebuild49
14 files changed, 3 insertions, 1285 deletions
diff --git a/dev-qt/qtcore/Manifest b/dev-qt/qtcore/Manifest
index 9eb30238..0dfe1cd5 100644
--- a/dev-qt/qtcore/Manifest
+++ b/dev-qt/qtcore/Manifest
@@ -1,2 +1 @@
DIST qt-everywhere-opensource-src-4.8.7.tar.gz 241075567 SHA256 e2882295097e47fe089f8ac741a95fef47e0a73a3f3cdf21b56990638f626ea0 SHA512 f9f81a2e7205e1fd05c8d923dc73244f29aa33f951fa6b7c5c8193449328b37084796b9b71ad0c317e4e6fd00017c10ea5d67b1b2032551cde00548522218125 WHIRLPOOL ad8f01172f5bdb3a3a69fe7b03862c4c411bc8d95211053ad66ed1d60a3c0577d073d1075a1e0a80b25d9b2721addda55a2967e6ccf5e194cec8d08770ac5fc2
-DIST qtbase-opensource-src-5.7.1.tar.xz 44992616 BLAKE2B d845ff8316f6f91089e23b74c025ad8e6160eb7ba75017cba34c2ad2f7b475fc4e36d337b945935bc2850bd140d743b9a5e3d23399b6d3151b85109da9f56ba8 SHA512 0506a3a856f76e5ba182e3382a515282b6096f3900fbdc14cd5aec425105ab61922e0ada0361234387335ceb80b3c69e39cd34d75476c2946c4371e7b8c0827f
diff --git a/dev-qt/qtcore/files/qtcore-4.8.6-QNAM-corruptions-fix.patch b/dev-qt/qtcore/files/qtcore-4.8.6-QNAM-corruptions-fix.patch
deleted file mode 100644
index 1d83caa3..00000000
--- a/dev-qt/qtcore/files/qtcore-4.8.6-QNAM-corruptions-fix.patch
+++ /dev/null
@@ -1,431 +0,0 @@
-From fa81aa6d027049e855b76f5408586a288f160575 Mon Sep 17 00:00:00 2001
-From: Markus Goetz <markus@woboq.com>
-Date: Tue, 28 Apr 2015 11:57:36 +0200
-Subject: QNAM: Fix upload corruptions when server closes connection
-
-This patch fixes several upload corruptions if the server closes the connection
-while/before we send data into it. They happen inside multiple places in the HTTP
-layer and are explained in the comments.
-Corruptions are:
-* The upload byte device has an in-flight signal with pending upload data, if
-it gets reset (because server closes the connection) then the re-send of the
-request was sometimes taking this stale in-flight pending upload data.
-* Because some signals were DirectConnection and some were QueuedConnection, there
-was a chance that a direct signal overtakes a queued signal. The state machine
-then sent data down the socket which was buffered there (and sent later) although
-it did not match the current state of the state machine when it was actually sent.
-* A socket was seen as being able to have requests sent even though it was not
-encrypted yet. This relates to the previous corruption where data is stored inside
-the socket's buffer and then sent later.
-
-The included auto test produces all fixed corruptions, I detected no regressions
-via the other tests.
-This code also adds a bit of sanity checking to protect from possible further
-problems.
-
-[ChangeLog][QtNetwork] Fix HTTP(s) upload corruption when server closes connection
-
-(cherry picked from commit qtbase/cff39fba10ffc10ee4dcfdc66ff6528eb26462d3)
-Change-Id: I9793297be6cf3edfb75b65ba03b65f7a133ef194
-Reviewed-by: Richard J. Moore <rich@kde.org>
----
- src/corelib/io/qnoncontiguousbytedevice.cpp | 19 +++
- src/corelib/io/qnoncontiguousbytedevice_p.h | 4 +
- .../access/qhttpnetworkconnectionchannel.cpp | 47 +++++-
- src/network/access/qhttpthreaddelegate_p.h | 36 ++++-
- src/network/access/qnetworkaccesshttpbackend.cpp | 24 ++-
- src/network/access/qnetworkaccesshttpbackend_p.h | 5 +-
- tests/auto/qnetworkreply/tst_qnetworkreply.cpp | 174 ++++++++++++++++++++-
- 7 files changed, 280 insertions(+), 29 deletions(-)
-
-diff --git a/src/corelib/io/qnoncontiguousbytedevice.cpp b/src/corelib/io/qnoncontiguousbytedevice.cpp
-index bf58eee..1a0591e 100644
---- a/src/corelib/io/qnoncontiguousbytedevice.cpp
-+++ b/src/corelib/io/qnoncontiguousbytedevice.cpp
-@@ -245,6 +245,12 @@ qint64 QNonContiguousByteDeviceByteArrayImpl::size()
- return byteArray->size();
- }
-
-+qint64 QNonContiguousByteDeviceByteArrayImpl::pos()
-+{
-+ return currentPosition;
-+}
-+
-+
- QNonContiguousByteDeviceRingBufferImpl::QNonContiguousByteDeviceRingBufferImpl(QSharedPointer<QRingBuffer> rb)
- : QNonContiguousByteDevice(), currentPosition(0)
- {
-@@ -296,6 +302,11 @@ qint64 QNonContiguousByteDeviceRingBufferImpl::size()
- return ringBuffer->size();
- }
-
-+qint64 QNonContiguousByteDeviceRingBufferImpl::pos()
-+{
-+ return currentPosition;
-+}
-+
- QNonContiguousByteDeviceIoDeviceImpl::QNonContiguousByteDeviceIoDeviceImpl(QIODevice *d)
- : QNonContiguousByteDevice(),
- currentReadBuffer(0), currentReadBufferSize(16*1024),
-@@ -415,6 +426,14 @@ qint64 QNonContiguousByteDeviceIoDeviceImpl::size()
- return device->size() - initialPosition;
- }
-
-+qint64 QNonContiguousByteDeviceIoDeviceImpl::pos()
-+{
-+ if (device->isSequential())
-+ return -1;
-+
-+ return device->pos();
-+}
-+
- QByteDeviceWrappingIoDevice::QByteDeviceWrappingIoDevice(QNonContiguousByteDevice *bd) : QIODevice((QObject*)0)
- {
- byteDevice = bd;
-diff --git a/src/corelib/io/qnoncontiguousbytedevice_p.h b/src/corelib/io/qnoncontiguousbytedevice_p.h
-index b6966eb..d1a99a1 100644
---- a/src/corelib/io/qnoncontiguousbytedevice_p.h
-+++ b/src/corelib/io/qnoncontiguousbytedevice_p.h
-@@ -69,6 +69,7 @@ public:
- virtual const char* readPointer(qint64 maximumLength, qint64 &len) = 0;
- virtual bool advanceReadPointer(qint64 amount) = 0;
- virtual bool atEnd() = 0;
-+ virtual qint64 pos() { return -1; }
- virtual bool reset() = 0;
- void disableReset();
- bool isResetDisabled() { return resetDisabled; }
-@@ -108,6 +109,7 @@ public:
- bool atEnd();
- bool reset();
- qint64 size();
-+ qint64 pos();
- protected:
- QByteArray* byteArray;
- qint64 currentPosition;
-@@ -123,6 +125,7 @@ public:
- bool atEnd();
- bool reset();
- qint64 size();
-+ qint64 pos();
- protected:
- QSharedPointer<QRingBuffer> ringBuffer;
- qint64 currentPosition;
-@@ -140,6 +143,7 @@ public:
- bool atEnd();
- bool reset();
- qint64 size();
-+ qint64 pos();
- protected:
- QIODevice* device;
- QByteArray* currentReadBuffer;
-diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
-index 550e090..db2f712 100644
---- a/src/network/access/qhttpnetworkconnectionchannel.cpp
-+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
-@@ -107,15 +107,19 @@ void QHttpNetworkConnectionChannel::init()
- socket->setProxy(QNetworkProxy::NoProxy);
- #endif
-
-+ // We want all signals (except the interactive ones) be connected as QueuedConnection
-+ // because else we're falling into cases where we recurse back into the socket code
-+ // and mess up the state. Always going to the event loop (and expecting that when reading/writing)
-+ // is safer.
- QObject::connect(socket, SIGNAL(bytesWritten(qint64)),
- this, SLOT(_q_bytesWritten(qint64)),
-- Qt::DirectConnection);
-+ Qt::QueuedConnection);
- QObject::connect(socket, SIGNAL(connected()),
- this, SLOT(_q_connected()),
-- Qt::DirectConnection);
-+ Qt::QueuedConnection);
- QObject::connect(socket, SIGNAL(readyRead()),
- this, SLOT(_q_readyRead()),
-- Qt::DirectConnection);
-+ Qt::QueuedConnection);
-
- // The disconnected() and error() signals may already come
- // while calling connectToHost().
-@@ -144,13 +148,13 @@ void QHttpNetworkConnectionChannel::init()
- // won't be a sslSocket if encrypt is false
- QObject::connect(sslSocket, SIGNAL(encrypted()),
- this, SLOT(_q_encrypted()),
-- Qt::DirectConnection);
-+ Qt::QueuedConnection);
- QObject::connect(sslSocket, SIGNAL(sslErrors(QList<QSslError>)),
- this, SLOT(_q_sslErrors(QList<QSslError>)),
- Qt::DirectConnection);
- QObject::connect(sslSocket, SIGNAL(encryptedBytesWritten(qint64)),
- this, SLOT(_q_encryptedBytesWritten(qint64)),
-- Qt::DirectConnection);
-+ Qt::QueuedConnection);
- }
- #endif
- }
-@@ -163,7 +167,8 @@ void QHttpNetworkConnectionChannel::close()
- else
- state = QHttpNetworkConnectionChannel::ClosingState;
-
-- socket->close();
-+ if (socket)
-+ socket->close();
- }
-
-
-@@ -280,6 +285,14 @@ bool QHttpNetworkConnectionChannel::sendRequest()
- // nothing to read currently, break the loop
- break;
- } else {
-+ if (written != uploadByteDevice->pos()) {
-+ // Sanity check. This was useful in tracking down an upload corruption.
-+ qWarning() << "QHttpProtocolHandler: Internal error in sendRequest. Expected to write at position" << written << "but read device is at" << uploadByteDevice->pos();
-+ Q_ASSERT(written == uploadByteDevice->pos());
-+ connection->d_func()->emitReplyError(socket, reply, QNetworkReply::ProtocolFailure);
-+ return false;
-+ }
-+
- qint64 currentWriteSize = socket->write(readPointer, currentReadSize);
- if (currentWriteSize == -1 || currentWriteSize != currentReadSize) {
- // socket broke down
-@@ -639,6 +652,14 @@ bool QHttpNetworkConnectionChannel::ensureConnection()
- }
- return false;
- }
-+
-+ // This code path for ConnectedState
-+ if (pendingEncrypt) {
-+ // Let's only be really connected when we have received the encrypted() signal. Else the state machine seems to mess up
-+ // and corrupt the things sent to the server.
-+ return false;
-+ }
-+
- return true;
- }
-
-@@ -980,6 +1001,13 @@ void QHttpNetworkConnectionChannel::_q_readyRead()
- void QHttpNetworkConnectionChannel::_q_bytesWritten(qint64 bytes)
- {
- Q_UNUSED(bytes);
-+
-+ if (ssl) {
-+ // In the SSL case we want to send data from encryptedBytesWritten signal since that one
-+ // is the one going down to the actual network, not only into some SSL buffer.
-+ return;
-+ }
-+
- // bytes have been written to the socket. write even more of them :)
- if (isSocketWriting())
- sendRequest();
-@@ -1029,7 +1057,7 @@ void QHttpNetworkConnectionChannel::_q_connected()
-
- // ### FIXME: if the server closes the connection unexpectedly, we shouldn't send the same broken request again!
- //channels[i].reconnectAttempts = 2;
-- if (!pendingEncrypt) {
-+ if (!pendingEncrypt && !ssl) { // FIXME: Didn't work properly with pendingEncrypt only, we should refactor this into an EncrypingState
- state = QHttpNetworkConnectionChannel::IdleState;
- if (!reply)
- connection->d_func()->dequeueRequest(socket);
-@@ -1157,7 +1185,10 @@ void QHttpNetworkConnectionChannel::_q_proxyAuthenticationRequired(const QNetwor
-
- void QHttpNetworkConnectionChannel::_q_uploadDataReadyRead()
- {
-- sendRequest();
-+ if (reply && state == QHttpNetworkConnectionChannel::WritingState) {
-+ // There might be timing issues, make sure to only send upload data if really in that state
-+ sendRequest();
-+ }
- }
-
- #ifndef QT_NO_OPENSSL
-diff --git a/src/network/access/qhttpthreaddelegate_p.h b/src/network/access/qhttpthreaddelegate_p.h
-index 7648325..9dd0deb 100644
---- a/src/network/access/qhttpthreaddelegate_p.h
-+++ b/src/network/access/qhttpthreaddelegate_p.h
-@@ -190,6 +190,7 @@ protected:
- QByteArray m_dataArray;
- bool m_atEnd;
- qint64 m_size;
-+ qint64 m_pos; // to match calls of haveDataSlot with the expected position
- public:
- QNonContiguousByteDeviceThreadForwardImpl(bool aE, qint64 s)
- : QNonContiguousByteDevice(),
-@@ -197,7 +198,8 @@ public:
- m_amount(0),
- m_data(0),
- m_atEnd(aE),
-- m_size(s)
-+ m_size(s),
-+ m_pos(0)
- {
- }
-
-@@ -205,6 +207,11 @@ public:
- {
- }
-
-+ qint64 pos()
-+ {
-+ return m_pos;
-+ }
-+
- const char* readPointer(qint64 maximumLength, qint64 &len)
- {
- if (m_amount > 0) {
-@@ -232,11 +239,10 @@ public:
-
- m_amount -= a;
- m_data += a;
-+ m_pos += a;
-
-- // To main thread to inform about our state
-- emit processedData(a);
--
-- // FIXME possible optimization, already ask user thread for some data
-+ // To main thread to inform about our state. The m_pos will be sent as a sanity check.
-+ emit processedData(m_pos, a);
-
- return true;
- }
-@@ -253,10 +259,21 @@ public:
- {
- m_amount = 0;
- m_data = 0;
-+ m_dataArray.clear();
-+
-+ if (wantDataPending) {
-+ // had requested the user thread to send some data (only 1 in-flight at any moment)
-+ wantDataPending = false;
-+ }
-
- // Communicate as BlockingQueuedConnection
- bool b = false;
- emit resetData(&b);
-+ if (b) {
-+ // the reset succeeded, we're at pos 0 again
-+ m_pos = 0;
-+ // the HTTP code will anyway abort the request if !b.
-+ }
- return b;
- }
-
-@@ -267,8 +284,13 @@ public:
-
- public slots:
- // From user thread:
-- void haveDataSlot(QByteArray dataArray, bool dataAtEnd, qint64 dataSize)
-+ void haveDataSlot(qint64 pos, QByteArray dataArray, bool dataAtEnd, qint64 dataSize)
- {
-+ if (pos != m_pos) {
-+ // Sometimes when re-sending a request in the qhttpnetwork* layer there is a pending haveData from the
-+ // user thread on the way to us. We need to ignore it since it is the data for the wrong(later) chunk.
-+ return;
-+ }
- wantDataPending = false;
-
- m_dataArray = dataArray;
-@@ -288,7 +310,7 @@ signals:
-
- // to main thread:
- void wantData(qint64);
-- void processedData(qint64);
-+ void processedData(qint64 pos, qint64 amount);
- void resetData(bool *b);
- };
-
-diff --git a/src/network/access/qnetworkaccesshttpbackend.cpp b/src/network/access/qnetworkaccesshttpbackend.cpp
-index cc67258..fe2f627 100644
---- a/src/network/access/qnetworkaccesshttpbackend.cpp
-+++ b/src/network/access/qnetworkaccesshttpbackend.cpp
-@@ -193,6 +193,7 @@ QNetworkAccessHttpBackendFactory::create(QNetworkAccessManager::Operation op,
- QNetworkAccessHttpBackend::QNetworkAccessHttpBackend()
- : QNetworkAccessBackend()
- , statusCode(0)
-+ , uploadByteDevicePosition(false)
- , pendingDownloadDataEmissions(new QAtomicInt())
- , pendingDownloadProgressEmissions(new QAtomicInt())
- , loadingFromCache(false)
-@@ -610,9 +611,9 @@ void QNetworkAccessHttpBackend::postRequest()
- forwardUploadDevice->setParent(delegate); // needed to make sure it is moved on moveToThread()
- delegate->httpRequest.setUploadByteDevice(forwardUploadDevice);
-
-- // From main thread to user thread:
-- QObject::connect(this, SIGNAL(haveUploadData(QByteArray, bool, qint64)),
-- forwardUploadDevice, SLOT(haveDataSlot(QByteArray, bool, qint64)), Qt::QueuedConnection);
-+ // From user thread to http thread:
-+ QObject::connect(this, SIGNAL(haveUploadData(qint64,QByteArray,bool,qint64)),
-+ forwardUploadDevice, SLOT(haveDataSlot(qint64,QByteArray,bool,qint64)), Qt::QueuedConnection);
- QObject::connect(uploadByteDevice.data(), SIGNAL(readyRead()),
- forwardUploadDevice, SIGNAL(readyRead()),
- Qt::QueuedConnection);
-@@ -620,8 +621,8 @@ void QNetworkAccessHttpBackend::postRequest()
- // From http thread to user thread:
- QObject::connect(forwardUploadDevice, SIGNAL(wantData(qint64)),
- this, SLOT(wantUploadDataSlot(qint64)));
-- QObject::connect(forwardUploadDevice, SIGNAL(processedData(qint64)),
-- this, SLOT(sentUploadDataSlot(qint64)));
-+ QObject::connect(forwardUploadDevice,SIGNAL(processedData(qint64, qint64)),
-+ this, SLOT(sentUploadDataSlot(qint64,qint64)));
- connect(forwardUploadDevice, SIGNAL(resetData(bool*)),
- this, SLOT(resetUploadDataSlot(bool*)),
- Qt::BlockingQueuedConnection); // this is the only one with BlockingQueued!
-@@ -915,12 +916,21 @@ void QNetworkAccessHttpBackend::replySslConfigurationChanged(const QSslConfigura
- void QNetworkAccessHttpBackend::resetUploadDataSlot(bool *r)
- {
- *r = uploadByteDevice->reset();
-+ if (*r) {
-+ // reset our own position which is used for the inter-thread communication
-+ uploadByteDevicePosition = 0;
-+ }
- }
-
- // Coming from QNonContiguousByteDeviceThreadForwardImpl in HTTP thread
--void QNetworkAccessHttpBackend::sentUploadDataSlot(qint64 amount)
-+void QNetworkAccessHttpBackend::sentUploadDataSlot(qint64 pos, qint64 amount)
- {
-+ if (uploadByteDevicePosition + amount != pos) {
-+ // Sanity check, should not happen.
-+ error(QNetworkReply::UnknownNetworkError, "");
-+ }
- uploadByteDevice->advanceReadPointer(amount);
-+ uploadByteDevicePosition += amount;
- }
-
- // Coming from QNonContiguousByteDeviceThreadForwardImpl in HTTP thread
-@@ -933,7 +943,7 @@ void QNetworkAccessHttpBackend::wantUploadDataSlot(qint64 maxSize)
- QByteArray dataArray(data, currentUploadDataLength);
-
- // Communicate back to HTTP thread
-- emit haveUploadData(dataArray, uploadByteDevice->atEnd(), uploadByteDevice->size());
-+ emit haveUploadData(uploadByteDevicePosition, dataArray, uploadByteDevice->atEnd(), uploadByteDevice->size());
- }
-
- /*
-diff --git a/src/network/access/qnetworkaccesshttpbackend_p.h b/src/network/access/qnetworkaccesshttpbackend_p.h
-index 13519c6..b4ed67c 100644
---- a/src/network/access/qnetworkaccesshttpbackend_p.h
-+++ b/src/network/access/qnetworkaccesshttpbackend_p.h
-@@ -112,7 +112,7 @@ signals:
-
- void startHttpRequestSynchronously();
-
-- void haveUploadData(QByteArray dataArray, bool dataAtEnd, qint64 dataSize);
-+ void haveUploadData(const qint64 pos, QByteArray dataArray, bool dataAtEnd, qint64 dataSize);
- private slots:
- // From HTTP thread:
- void replyDownloadData(QByteArray);
-@@ -129,13 +129,14 @@ private slots:
- // From QNonContiguousByteDeviceThreadForwardImpl in HTTP thread:
- void resetUploadDataSlot(bool *r);
- void wantUploadDataSlot(qint64);
-- void sentUploadDataSlot(qint64);
-+ void sentUploadDataSlot(qint64, qint64);
-
- bool sendCacheContents(const QNetworkCacheMetaData &metaData);
-
- private:
- QHttpNetworkRequest httpRequest; // There is also a copy in the HTTP thread
- int statusCode;
-+ qint64 uploadByteDevicePosition;
- QString reasonPhrase;
- // Will be increased by HTTP thread:
- QSharedPointer<QAtomicInt> pendingDownloadDataEmissions;
-
diff --git a/dev-qt/qtcore/files/qtcore-4.8.6-moc-boost-1.60.patch b/dev-qt/qtcore/files/qtcore-4.8.6-moc-boost-1.60.patch
deleted file mode 100644
index 91a5526a..00000000
--- a/dev-qt/qtcore/files/qtcore-4.8.6-moc-boost-1.60.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -up qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp.QTBUG-22829 qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp
---- qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp.QTBUG-22829 2015-05-07 09:14:44.000000000 -0500
-+++ qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp 2016-03-16 13:20:43.145899869 -0500
-@@ -188,8 +188,11 @@ int runMoc(int _argc, char **_argv)
- pp.macros["Q_MOC_RUN"];
- pp.macros["__cplusplus"];
-
-- // Workaround a bug while parsing the boost/type_traits/has_operator.hpp header. See QTBUG-22829
-+ // Workaround a bug while parsing some boost headers. See QTBUG-22829
- pp.macros["BOOST_TT_HAS_OPERATOR_HPP_INCLUDED"];
-+ pp.macros["BOOST_LEXICAL_CAST_INCLUDED"];
-+ pp.macros["BOOST_NEXT_PRIOR_HPP_INCLUDED"];
-+ pp.macros["BOOST_TYPE_TRAITS_HPP"];
-
- QByteArray filename;
- QByteArray output;
diff --git a/dev-qt/qtcore/files/qtcore-5.5.1-musl-iconv.patch b/dev-qt/qtcore/files/qtcore-5.5.1-musl-iconv.patch
deleted file mode 100644
index fe11d1d6..00000000
--- a/dev-qt/qtcore/files/qtcore-5.5.1-musl-iconv.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naurw qtbase-opensource-src-5.5.1.orig/src/corelib/codecs/qiconvcodec.cpp qtbase-opensource-src-5.5.1/src/corelib/codecs/qiconvcodec.cpp
---- qtbase-opensource-src-5.5.1.orig/src/corelib/codecs/qiconvcodec.cpp 2016-01-25 14:23:16.960351969 -0800
-+++ qtbase-opensource-src-5.5.1/src/corelib/codecs/qiconvcodec.cpp 2016-01-25 14:24:52.743350254 -0800
-@@ -56,7 +56,7 @@
- #elif defined(Q_OS_AIX)
- # define NO_BOM
- # define UTF16 "UCS-2"
--#elif defined(Q_OS_FREEBSD) || defined(Q_OS_MAC)
-+#elif defined(Q_OS_FREEBSD) || defined(Q_OS_MAC) || (defined(Q_OS_LINUX) && !defined(__GLIBC__))
- # define NO_BOM
- # if Q_BYTE_ORDER == Q_BIG_ENDIAN
- # define UTF16 "UTF-16BE"
diff --git a/dev-qt/qtcore/files/qtcore-5.6.2-plugins.patch b/dev-qt/qtcore/files/qtcore-5.6.2-plugins.patch
deleted file mode 100644
index d969869c..00000000
--- a/dev-qt/qtcore/files/qtcore-5.6.2-plugins.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From ca4d93d85ee446c5e30ec8e7814651e45cbf1218 Mon Sep 17 00:00:00 2001
-From: Thiago Macieira <thiago.macieira@intel.com>
-Date: Thu, 12 Nov 2015 10:14:51 -0800
-Subject: Stop unloading plugins in QPluginLoader and QFactoryLoader
-
-QPluginLoader hasn't unloaded in its destructor since Qt 5.0, but we
-missed the equivalent code in QFactoryLoader (which bypasses
-QPluginLoader). Besides, QPluginLoader::unload() was still doing
-unloading, which it won't anymore.
-
-Not unloading plugins is Qt's policy, as decided during the 5.0
-development process and reaffirmed now in 5.6. This is due to static
-data in plugins leaking out and remaining in use past the unloading of
-the plugin, causing crashes.
-
-This does not affect QLibrary and QLibrary::unload(). Those are meant
-for non-Qt loadable modules, so unloading them may be safe.
-
-Task-number: QTBUG-49061
-Discussed-on: http://lists.qt-project.org/pipermail/development/2015-November/023681.html
-Change-Id: I461e9fc7199748faa187ffff1416070f138df8db
-(cherry picked from commit 494376f980e96339b6f1eff7c41336ca4d853065)
-Discussed-again-on: http://lists.qt-project.org/pipermail/development/2016-October/027476.html
-Reviewed-by: Lars Knoll <lars.knoll@qt.io>
----
- src/corelib/plugin/qfactoryloader.cpp | 6 ++++--
- src/corelib/plugin/qpluginloader.cpp | 5 +++--
- 2 files changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/src/corelib/plugin/qfactoryloader.cpp b/src/corelib/plugin/qfactoryloader.cpp
-index dcf1b1a..b6558f5 100644
---- a/src/corelib/plugin/qfactoryloader.cpp
-+++ b/src/corelib/plugin/qfactoryloader.cpp
-@@ -208,10 +208,12 @@ void QFactoryLoader::update()
- ++keyUsageCount;
- }
- }
-- if (keyUsageCount || keys.isEmpty())
-+ if (keyUsageCount || keys.isEmpty()) {
-+ library->setLoadHints(QLibrary::PreventUnloadHint); // once loaded, don't unload
- d->libraryList += library;
-- else
-+ } else {
- library->release();
-+ }
- }
- }
- #else
-diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp
-index 37f2368..0ea8280 100644
---- a/src/corelib/plugin/qpluginloader.cpp
-+++ b/src/corelib/plugin/qpluginloader.cpp
-@@ -148,6 +148,7 @@ QPluginLoader::QPluginLoader(const QString &fileName, QObject *parent)
- : QObject(parent), d(0), did_load(false)
- {
- setFileName(fileName);
-+ setLoadHints(QLibrary::PreventUnloadHint);
- }
-
- /*!
-@@ -342,7 +343,7 @@ static QString locatePlugin(const QString& fileName)
- void QPluginLoader::setFileName(const QString &fileName)
- {
- #if defined(QT_SHARED)
-- QLibrary::LoadHints lh;
-+ QLibrary::LoadHints lh = QLibrary::PreventUnloadHint;
- if (d) {
- lh = d->loadHints();
- d->release();
-@@ -391,7 +392,7 @@ Q_GLOBAL_STATIC(StaticPluginList, staticPluginList)
- \brief Give the load() function some hints on how it should behave.
-
- You can give hints on how the symbols in the plugin are
-- resolved. By default, none of the hints are set.
-+ resolved. By default since Qt 5.7, QLibrary::PreventUnloadHint is set.
-
- See the documentation of QLibrary::loadHints for a complete
- description of how this property works.
---
-cgit v1.0-4-g1e03
-
diff --git a/dev-qt/qtcore/files/qtcore-5.7.1-qipm.patch b/dev-qt/qtcore/files/qtcore-5.7.1-qipm.patch
deleted file mode 100644
index abea1458..00000000
--- a/dev-qt/qtcore/files/qtcore-5.7.1-qipm.patch
+++ /dev/null
@@ -1,152 +0,0 @@
-From baad82d242a4d8c1af6c87faaa7f25584183fd53 Mon Sep 17 00:00:00 2001
-From: Stephen Kelly <steveire@gmail.com>
-Date: Tue, 20 Dec 2016 00:44:12 +0000
-Subject: [PATCH] QIPM: Persist model indexes after emitting layoutChange, not
- before
-
-Callers can persist a QModelIndex which was not persisted before in a
-slot connected to the signal, and such a persisted index must be updated
-in the course of the layoutChange.
-
-Store the indexes to persist after emitting the signal.
-
-Task-number: QTBUG-32981
-Change-Id: Ibee4c0d84817d72603a03fe5b22fdeefeac0695e
-Reviewed-by: David Faure <david.faure@kdab.com>
----
- src/corelib/itemmodels/qidentityproxymodel.cpp | 18 ++---
- .../tst_qidentityproxymodel.cpp | 76 ++++++++++++++++++++++
- 2 files changed, 85 insertions(+), 9 deletions(-)
-
-diff --git a/src/corelib/itemmodels/qidentityproxymodel.cpp b/src/corelib/itemmodels/qidentityproxymodel.cpp
-index e537793..7c30679 100644
---- a/src/corelib/itemmodels/qidentityproxymodel.cpp
-+++ b/src/corelib/itemmodels/qidentityproxymodel.cpp
-@@ -496,15 +496,6 @@ void QIdentityProxyModelPrivate::_q_sourceLayoutAboutToBeChanged(const QList<QPe
- {
- Q_Q(QIdentityProxyModel);
-
-- const auto proxyPersistentIndexes = q->persistentIndexList();
-- for (const QPersistentModelIndex &proxyPersistentIndex : proxyPersistentIndexes) {
-- proxyIndexes << proxyPersistentIndex;
-- Q_ASSERT(proxyPersistentIndex.isValid());
-- const QPersistentModelIndex srcPersistentIndex = q->mapToSource(proxyPersistentIndex);
-- Q_ASSERT(srcPersistentIndex.isValid());
-- layoutChangePersistentIndexes << srcPersistentIndex;
-- }
--
- QList<QPersistentModelIndex> parents;
- parents.reserve(sourceParents.size());
- for (const QPersistentModelIndex &parent : sourceParents) {
-@@ -518,6 +509,15 @@ void QIdentityProxyModelPrivate::_q_sourceLayoutAboutToBeChanged(const QList<QPe
- }
-
- q->layoutAboutToBeChanged(parents, hint);
-+
-+ const auto proxyPersistentIndexes = q->persistentIndexList();
-+ for (const QPersistentModelIndex &proxyPersistentIndex : proxyPersistentIndexes) {
-+ proxyIndexes << proxyPersistentIndex;
-+ Q_ASSERT(proxyPersistentIndex.isValid());
-+ const QPersistentModelIndex srcPersistentIndex = q->mapToSource(proxyPersistentIndex);
-+ Q_ASSERT(srcPersistentIndex.isValid());
-+ layoutChangePersistentIndexes << srcPersistentIndex;
-+ }
- }
-
- void QIdentityProxyModelPrivate::_q_sourceLayoutChanged(const QList<QPersistentModelIndex> &sourceParents, QAbstractItemModel::LayoutChangeHint hint)
-diff --git a/tests/auto/corelib/itemmodels/qidentityproxymodel/tst_qidentityproxymodel.cpp b/tests/auto/corelib/itemmodels/qidentityproxymodel/tst_qidentityproxymodel.cpp
-index e946f31..564b854 100644
---- a/tests/auto/corelib/itemmodels/qidentityproxymodel/tst_qidentityproxymodel.cpp
-+++ b/tests/auto/corelib/itemmodels/qidentityproxymodel/tst_qidentityproxymodel.cpp
-@@ -68,6 +68,8 @@ private slots:
-
- void itemData();
-
-+ void persistIndexOnLayoutChange();
-+
- protected:
- void verifyIdentity(QAbstractItemModel *model, const QModelIndex &parent = QModelIndex());
-
-@@ -377,5 +379,79 @@ void tst_QIdentityProxyModel::itemData()
- QCOMPARE(proxy.itemData(topIndex).value(Qt::DisplayRole).toString(), QStringLiteral("Monday_appended"));
- }
-
-+void dump(QAbstractItemModel* model, QString const& indent = " - ", QModelIndex const& parent = {})
-+{
-+ for (auto row = 0; row < model->rowCount(parent); ++row)
-+ {
-+ auto idx = model->index(row, 0, parent);
-+ qDebug() << (indent + idx.data().toString());
-+ dump(model, indent + "- ", idx);
-+ }
-+}
-+
-+void tst_QIdentityProxyModel::persistIndexOnLayoutChange()
-+{
-+ DynamicTreeModel model;
-+
-+ QList<int> ancestors;
-+ for (auto i = 0; i < 3; ++i)
-+ {
-+ Q_UNUSED(i);
-+ ModelInsertCommand insertCommand(&model);
-+ insertCommand.setAncestorRowNumbers(ancestors);
-+ insertCommand.setStartRow(0);
-+ insertCommand.setEndRow(0);
-+ insertCommand.doCommand();
-+ ancestors.push_back(0);
-+ }
-+ ModelInsertCommand insertCommand(&model);
-+ insertCommand.setAncestorRowNumbers(ancestors);
-+ insertCommand.setStartRow(0);
-+ insertCommand.setEndRow(1);
-+ insertCommand.doCommand();
-+
-+ // dump(&model);
-+ // " - 1"
-+ // " - - 2"
-+ // " - - - 3"
-+ // " - - - - 4"
-+ // " - - - - 5"
-+
-+ QIdentityProxyModel proxy;
-+ proxy.setSourceModel(&model);
-+
-+ QPersistentModelIndex persistentIndex;
-+
-+ QPersistentModelIndex sourcePersistentIndex = model.match(model.index(0, 0), Qt::DisplayRole, "5", 1, Qt::MatchRecursive).first();
-+
-+ QCOMPARE(sourcePersistentIndex.data().toString(), QStringLiteral("5"));
-+
-+ bool gotLayoutAboutToBeChanged = false;
-+ bool gotLayoutChanged = false;
-+
-+ QObject::connect(&proxy, &QAbstractItemModel::layoutAboutToBeChanged, &proxy, [&proxy, &persistentIndex, &gotLayoutAboutToBeChanged]
-+ {
-+ gotLayoutAboutToBeChanged = true;
-+ persistentIndex = proxy.match(proxy.index(0, 0), Qt::DisplayRole, "5", 1, Qt::MatchRecursive).first();
-+ });
-+
-+ QObject::connect(&proxy, &QAbstractItemModel::layoutChanged, &proxy, [&proxy, &persistentIndex, &sourcePersistentIndex, &gotLayoutChanged]
-+ {
-+ gotLayoutChanged = true;
-+ QCOMPARE(QModelIndex(persistentIndex), proxy.mapFromSource(sourcePersistentIndex));
-+ });
-+
-+ ModelChangeChildrenLayoutsCommand layoutChangeCommand(&model, 0);
-+
-+ layoutChangeCommand.setAncestorRowNumbers(QList<int>{0, 0, 0});
-+ layoutChangeCommand.setSecondAncestorRowNumbers(QList<int>{0, 0});
-+
-+ layoutChangeCommand.doCommand();
-+
-+ QVERIFY(gotLayoutAboutToBeChanged);
-+ QVERIFY(gotLayoutChanged);
-+ QVERIFY(persistentIndex.isValid());
-+}
-+
- QTEST_MAIN(tst_QIdentityProxyModel)
- #include "tst_qidentityproxymodel.moc"
---
-2.7.4
-
diff --git a/dev-qt/qtcore/files/qtcore-5.7.1-qsfpm-1.patch b/dev-qt/qtcore/files/qtcore-5.7.1-qsfpm-1.patch
deleted file mode 100644
index 9edbe186..00000000
--- a/dev-qt/qtcore/files/qtcore-5.7.1-qsfpm-1.patch
+++ /dev/null
@@ -1,252 +0,0 @@
-From 3bd0fd8f97e7a33a874929a383a42e6c710bfff3 Mon Sep 17 00:00:00 2001
-From: Stephen Kelly <steveire@gmail.com>
-Date: Sat, 17 Dec 2016 06:20:06 +0000
-Subject: [PATCH] QSFPM: Fix handling of source model layout change
-
-In sourceLayoutAboutToBeChanged the source model update is ignored if
-the affected parents are filtered out anyway. The same logic is
-attempted in the sourceLayoutChanged slot, but there the early-return
-logic is applied too late - the mapping is cleared before performing the
-early-return. Because pointers into the mapping are used in the
-internalPointer of QModelIndexes in this class, persistent indexes used
-later will segfault when attempting to dereference it.
-
-Additionally, if a parent becomes invalid as a result of the
-layoutChange, it would be filtered out by the condition in the loop,
-resulting in a different result in the comparison of emptiness of the
-parents container.
-
-Fix that by persisting the parent's container, and performing the test
-for early-return before clearing the mapping.
-
-Task-number: QTBUG-47711
-Task-number: QTBUG-32981
-Change-Id: If45e8a1c97d39454160f52041bc9ae7e337dce97
-Reviewed-by: David Faure <david.faure@kdab.com>
----
- src/corelib/itemmodels/qsortfilterproxymodel.cpp | 31 ++---
- .../tst_qsortfilterproxymodel.cpp | 126 +++++++++++++++++++++
- 2 files changed, 137 insertions(+), 20 deletions(-)
-
-diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
-index b0ddfa8..3331521 100644
---- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp
-+++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
-@@ -171,6 +171,7 @@ public:
- QRowsRemoval itemsBeingRemoved;
-
- QModelIndexPairList saved_persistent_indexes;
-+ QList<QPersistentModelIndex> saved_layoutChange_parents;
-
- QHash<QModelIndex, Mapping *>::const_iterator create_mapping(
- const QModelIndex &source_parent) const;
-@@ -1331,23 +1332,23 @@ void QSortFilterProxyModelPrivate::_q_sourceLayoutAboutToBeChanged(const QList<Q
- Q_UNUSED(hint); // We can't forward Hint because we might filter additional rows or columns
- saved_persistent_indexes.clear();
-
-- QList<QPersistentModelIndex> parents;
-+ saved_layoutChange_parents.clear();
- for (const QPersistentModelIndex &parent : sourceParents) {
- if (!parent.isValid()) {
-- parents << QPersistentModelIndex();
-+ saved_layoutChange_parents << QPersistentModelIndex();
- continue;
- }
- const QModelIndex mappedParent = q->mapFromSource(parent);
- // Might be filtered out.
- if (mappedParent.isValid())
-- parents << mappedParent;
-+ saved_layoutChange_parents << mappedParent;
- }
-
- // All parents filtered out.
-- if (!sourceParents.isEmpty() && parents.isEmpty())
-+ if (!sourceParents.isEmpty() && saved_layoutChange_parents.isEmpty())
- return;
-
-- emit q->layoutAboutToBeChanged(parents);
-+ emit q->layoutAboutToBeChanged(saved_layoutChange_parents);
- if (persistent.indexes.isEmpty())
- return;
-
-@@ -1359,6 +1360,9 @@ void QSortFilterProxyModelPrivate::_q_sourceLayoutChanged(const QList<QPersisten
- Q_Q(QSortFilterProxyModel);
- Q_UNUSED(hint); // We can't forward Hint because we might filter additional rows or columns
-
-+ if (!sourceParents.isEmpty() && saved_layoutChange_parents.isEmpty())
-+ return;
-+
- // Optimize: We only actually have to clear the mapping related to the contents of
- // sourceParents, not everything.
- qDeleteAll(source_index_mapping);
-@@ -1373,21 +1377,8 @@ void QSortFilterProxyModelPrivate::_q_sourceLayoutChanged(const QList<QPersisten
- source_index_mapping.clear();
- }
-
-- QList<QPersistentModelIndex> parents;
-- for (const QPersistentModelIndex &parent : sourceParents) {
-- if (!parent.isValid()) {
-- parents << QPersistentModelIndex();
-- continue;
-- }
-- const QModelIndex mappedParent = q->mapFromSource(parent);
-- if (mappedParent.isValid())
-- parents << mappedParent;
-- }
--
-- if (!sourceParents.isEmpty() && parents.isEmpty())
-- return;
--
-- emit q->layoutChanged(parents);
-+ emit q->layoutChanged(saved_layoutChange_parents);
-+ saved_layoutChange_parents.clear();
- }
-
- void QSortFilterProxyModelPrivate::_q_sourceRowsAboutToBeInserted(
-diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
-index 38e3c68..6b98d9f 100644
---- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
-+++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
-@@ -145,6 +145,8 @@ private slots:
- void canDropMimeData();
- void filterHint();
-
-+ void sourceLayoutChangeLeavesValidPersistentIndexes();
-+
- protected:
- void buildHierarchy(const QStringList &data, QAbstractItemModel *model);
- void checkHierarchy(const QStringList &data, const QAbstractItemModel *model);
-@@ -4181,5 +4183,129 @@ void tst_QSortFilterProxyModel::filterHint()
- QAbstractItemModel::NoLayoutChangeHint);
- }
-
-+/**
-+
-+ Creates a model where each item has one child, to a set depth,
-+ and the last item has no children. For a model created with
-+ setDepth(4):
-+
-+ - 1
-+ - - 2
-+ - - - 3
-+ - - - - 4
-+*/
-+class StepTreeModel : public QAbstractItemModel
-+{
-+ Q_OBJECT
-+public:
-+ StepTreeModel(QObject * parent = 0)
-+ : QAbstractItemModel(parent), m_depth(0) {}
-+
-+ int columnCount(const QModelIndex& = QModelIndex()) const override { return 1; }
-+
-+ int rowCount(const QModelIndex& parent = QModelIndex()) const override
-+ {
-+ quintptr parentId = (parent.isValid()) ? parent.internalId() : 0;
-+ return (parentId < m_depth) ? 1 : 0;
-+ }
-+
-+ QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const override
-+ {
-+ if (role != Qt::DisplayRole)
-+ return QVariant();
-+
-+ return QString::number(index.internalId());
-+ }
-+
-+ QModelIndex index(int, int, const QModelIndex& parent = QModelIndex()) const override
-+ {
-+ quintptr parentId = (parent.isValid()) ? parent.internalId() : 0;
-+ if (parentId >= m_depth)
-+ return QModelIndex();
-+
-+ return createIndex(0, 0, parentId + 1);
-+ }
-+
-+ QModelIndex parent(const QModelIndex& index) const override
-+ {
-+ if (index.internalId() == 0)
-+ return QModelIndex();
-+
-+ return createIndex(0, 0, index.internalId() - 1);
-+ }
-+
-+ void setDepth(quintptr depth)
-+ {
-+ int parentIdWithLayoutChange = (m_depth < depth) ? m_depth : depth;
-+
-+ QList<QPersistentModelIndex> parentsOfLayoutChange;
-+ parentsOfLayoutChange.push_back(createIndex(0, 0, parentIdWithLayoutChange));
-+
-+ layoutAboutToBeChanged(parentsOfLayoutChange);
-+
-+ auto existing = persistentIndexList();
-+
-+ QList<QModelIndex> updated;
-+
-+ for (auto idx : existing) {
-+ if (indexDepth(idx) <= depth)
-+ updated.push_back(idx);
-+ else
-+ updated.push_back({});
-+ }
-+
-+ m_depth = depth;
-+
-+ changePersistentIndexList(existing, updated);
-+
-+ layoutChanged(parentsOfLayoutChange);
-+ }
-+
-+private:
-+ static quintptr indexDepth(QModelIndex const& index)
-+ {
-+ return (index.isValid()) ? 1 + indexDepth(index.parent()) : 0;
-+ }
-+
-+private:
-+ quintptr m_depth;
-+};
-+
-+void tst_QSortFilterProxyModel::sourceLayoutChangeLeavesValidPersistentIndexes()
-+{
-+ StepTreeModel model;
-+ Q_SET_OBJECT_NAME(model);
-+ model.setDepth(4);
-+
-+ QSortFilterProxyModel proxy1;
-+ proxy1.setSourceModel(&model);
-+ Q_SET_OBJECT_NAME(proxy1);
-+
-+ proxy1.setFilterRegExp("1|2");
-+
-+ // The current state of things:
-+ // model proxy
-+ // - 1 - 1
-+ // - - 2 - - 2
-+ // - - - 3
-+ // - - - - 4
-+
-+ // The setDepth call below removes '4' with a layoutChanged call.
-+ // Because the proxy filters that out anyway, the proxy doesn't need
-+ // to emit any signals or update persistent indexes.
-+
-+ QPersistentModelIndex persistentIndex = proxy1.index(0, 0, proxy1.index(0, 0));
-+
-+ model.setDepth(3);
-+
-+ // Calling parent() causes the internalPointer to be used.
-+ // Before fixing QTBUG-47711, that could be a dangling pointer.
-+ // The use of qDebug here makes sufficient use of the heap to
-+ // cause corruption at runtime with normal use on linux (before
-+ // the fix). valgrind confirms the fix.
-+ qDebug() << persistentIndex.parent();
-+ QVERIFY(persistentIndex.parent().isValid());
-+}
-+
- QTEST_MAIN(tst_QSortFilterProxyModel)
- #include "tst_qsortfilterproxymodel.moc"
---
-2.7.4
-
-
diff --git a/dev-qt/qtcore/files/qtcore-5.7.1-qsfpm-2.patch b/dev-qt/qtcore/files/qtcore-5.7.1-qsfpm-2.patch
deleted file mode 100644
index 97364963..00000000
--- a/dev-qt/qtcore/files/qtcore-5.7.1-qsfpm-2.patch
+++ /dev/null
@@ -1,195 +0,0 @@
-From 0874861bcc70313c343aba5e5566ed30b69eed1c Mon Sep 17 00:00:00 2001
-From: Stephen Kelly <steveire@gmail.com>
-Date: Mon, 19 Dec 2016 21:13:57 +0000
-Subject: [PATCH] QSFPM: Remove data manipulation from move handlers
-
-Similar to the fix in the parent commit, incorrect updating of the
-internal data structures during layout changes can lead to dangling
-pointers being dereferenced later. Moves are treated as layoutChanges
-by this proxy by forwarding to the appropriate method. However, data is
-incorrectly cleared prior to that forwarding. Remove that, and let the
-layoutChange handling take appropriate action.
-
-Change-Id: Iee951e37152328a4e6a5fb8e5385c32a2fe4c0bd
-Reviewed-by: David Faure <david.faure@kdab.com>
----
- src/corelib/itemmodels/qsortfilterproxymodel.cpp | 67 ++++------------------
- .../tst_qsortfilterproxymodel.cpp | 46 +++++++++++++++
- 2 files changed, 58 insertions(+), 55 deletions(-)
-
-diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
-index 3331521..226a240 100644
---- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp
-+++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
-@@ -1418,49 +1418,27 @@ void QSortFilterProxyModelPrivate::_q_sourceRowsRemoved(
- void QSortFilterProxyModelPrivate::_q_sourceRowsAboutToBeMoved(
- const QModelIndex &sourceParent, int /* sourceStart */, int /* sourceEnd */, const QModelIndex &destParent, int /* dest */)
- {
-- Q_Q(QSortFilterProxyModel);
- // Because rows which are contiguous in the source model might not be contiguous
- // in the proxy due to sorting, the best thing we can do here is be specific about what
- // parents are having their children changed.
- // Optimize: Emit move signals if the proxy is not sorted. Will need to account for rows
- // being filtered out though.
-
-- saved_persistent_indexes.clear();
--
- QList<QPersistentModelIndex> parents;
-- parents << q->mapFromSource(sourceParent);
-+ parents << sourceParent;
- if (sourceParent != destParent)
-- parents << q->mapFromSource(destParent);
-- emit q->layoutAboutToBeChanged(parents);
-- if (persistent.indexes.isEmpty())
-- return;
-- saved_persistent_indexes = store_persistent_indexes();
-+ parents << destParent;
-+ _q_sourceLayoutAboutToBeChanged(parents, QAbstractItemModel::NoLayoutChangeHint);
- }
-
- void QSortFilterProxyModelPrivate::_q_sourceRowsMoved(
- const QModelIndex &sourceParent, int /* sourceStart */, int /* sourceEnd */, const QModelIndex &destParent, int /* dest */)
- {
-- Q_Q(QSortFilterProxyModel);
--
-- // Optimize: We only need to clear and update the persistent indexes which are children of
-- // sourceParent or destParent
-- qDeleteAll(source_index_mapping);
-- source_index_mapping.clear();
--
-- update_persistent_indexes(saved_persistent_indexes);
-- saved_persistent_indexes.clear();
--
-- if (dynamic_sortfilter && update_source_sort_column()) {
-- //update_source_sort_column might have created wrong mapping so we have to clear it again
-- qDeleteAll(source_index_mapping);
-- source_index_mapping.clear();
-- }
--
- QList<QPersistentModelIndex> parents;
-- parents << q->mapFromSource(sourceParent);
-+ parents << sourceParent;
- if (sourceParent != destParent)
-- parents << q->mapFromSource(destParent);
-- emit q->layoutChanged(parents);
-+ parents << destParent;
-+ _q_sourceLayoutChanged(parents, QAbstractItemModel::NoLayoutChangeHint);
- }
-
- void QSortFilterProxyModelPrivate::_q_sourceColumnsAboutToBeInserted(
-@@ -1522,42 +1500,21 @@ void QSortFilterProxyModelPrivate::_q_sourceColumnsRemoved(
- void QSortFilterProxyModelPrivate::_q_sourceColumnsAboutToBeMoved(
- const QModelIndex &sourceParent, int /* sourceStart */, int /* sourceEnd */, const QModelIndex &destParent, int /* dest */)
- {
-- Q_Q(QSortFilterProxyModel);
--
-- saved_persistent_indexes.clear();
--
- QList<QPersistentModelIndex> parents;
-- parents << q->mapFromSource(sourceParent);
-+ parents << sourceParent;
- if (sourceParent != destParent)
-- parents << q->mapFromSource(destParent);
-- emit q->layoutAboutToBeChanged(parents);
--
-- if (persistent.indexes.isEmpty())
-- return;
-- saved_persistent_indexes = store_persistent_indexes();
-+ parents << destParent;
-+ _q_sourceLayoutAboutToBeChanged(parents, QAbstractItemModel::NoLayoutChangeHint);
- }
-
- void QSortFilterProxyModelPrivate::_q_sourceColumnsMoved(
- const QModelIndex &sourceParent, int /* sourceStart */, int /* sourceEnd */, const QModelIndex &destParent, int /* dest */)
- {
-- Q_Q(QSortFilterProxyModel);
--
-- qDeleteAll(source_index_mapping);
-- source_index_mapping.clear();
--
-- update_persistent_indexes(saved_persistent_indexes);
-- saved_persistent_indexes.clear();
--
-- if (dynamic_sortfilter && update_source_sort_column()) {
-- qDeleteAll(source_index_mapping);
-- source_index_mapping.clear();
-- }
--
- QList<QPersistentModelIndex> parents;
-- parents << q->mapFromSource(sourceParent);
-+ parents << sourceParent;
- if (sourceParent != destParent)
-- parents << q->mapFromSource(destParent);
-- emit q->layoutChanged(parents);
-+ parents << destParent;
-+ _q_sourceLayoutChanged(parents, QAbstractItemModel::NoLayoutChangeHint);
- }
-
- /*!
-diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
-index 6b98d9f..7b6c470 100644
---- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
-+++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
-@@ -146,6 +146,7 @@ private slots:
- void filterHint();
-
- void sourceLayoutChangeLeavesValidPersistentIndexes();
-+ void rowMoveLeavesValidPersistentIndexes();
-
- protected:
- void buildHierarchy(const QStringList &data, QAbstractItemModel *model);
-@@ -4307,5 +4308,50 @@ void tst_QSortFilterProxyModel::sourceLayoutChangeLeavesValidPersistentIndexes()
- QVERIFY(persistentIndex.parent().isValid());
- }
-
-+void tst_QSortFilterProxyModel::rowMoveLeavesValidPersistentIndexes()
-+{
-+ DynamicTreeModel model;
-+ Q_SET_OBJECT_NAME(model);
-+
-+ QList<int> ancestors;
-+ for (auto i = 0; i < 5; ++i)
-+ {
-+ Q_UNUSED(i);
-+ ModelInsertCommand insertCommand(&model);
-+ insertCommand.setAncestorRowNumbers(ancestors);
-+ insertCommand.setStartRow(0);
-+ insertCommand.setEndRow(0);
-+ insertCommand.doCommand();
-+ ancestors.push_back(0);
-+ }
-+
-+ QSortFilterProxyModel proxy1;
-+ proxy1.setSourceModel(&model);
-+ Q_SET_OBJECT_NAME(proxy1);
-+
-+ proxy1.setFilterRegExp("1|2");
-+
-+ auto item5 = model.match(model.index(0, 0), Qt::DisplayRole, "5", 1, Qt::MatchRecursive).first();
-+ auto item3 = model.match(model.index(0, 0), Qt::DisplayRole, "3", 1, Qt::MatchRecursive).first();
-+
-+ Q_ASSERT(item5.isValid());
-+ Q_ASSERT(item3.isValid());
-+
-+ QPersistentModelIndex persistentIndex = proxy1.match(proxy1.index(0, 0), Qt::DisplayRole, "2", 1, Qt::MatchRecursive).first();
-+
-+ ModelMoveCommand moveCommand(&model, 0);
-+ moveCommand.setAncestorRowNumbers(QList<int>{0, 0, 0, 0});
-+ moveCommand.setStartRow(0);
-+ moveCommand.setEndRow(0);
-+ moveCommand.setDestRow(0);
-+ moveCommand.setDestAncestors(QList<int>{0, 0, 0});
-+ moveCommand.doCommand();
-+
-+ // Calling parent() causes the internalPointer to be used.
-+ // Before fixing QTBUG-47711 (moveRows case), that could be
-+ // a dangling pointer.
-+ QVERIFY(persistentIndex.parent().isValid());
-+}
-+
- QTEST_MAIN(tst_QSortFilterProxyModel)
- #include "tst_qsortfilterproxymodel.moc"
---
-2.7.4
-
-
diff --git a/dev-qt/qtcore/files/qtcore-5.9.3-avx.patch b/dev-qt/qtcore/files/qtcore-5.9.3-avx.patch
deleted file mode 100644
index be18433b..00000000
--- a/dev-qt/qtcore/files/qtcore-5.9.3-avx.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From d813c66bfcfac1837814ec4d174d0389172f0d4c Mon Sep 17 00:00:00 2001
-From: Thiago Macieira <thiago.macieira@intel.com>
-Date: Tue, 25 Apr 2017 12:02:09 -0300
-Subject: Fix the build when AVX2 is enabled but __F16C__ isn't defined
-
-If -mavx2 is used, __AVX2__ is defined, which enables the F16C code
-after commit 280e321e52fd4e86545f3f0d4bd4e047786a897e, but that was
-wrong since we aren't allowed to use the F16C intrinsics with either
-Clang or GCC (we can only do that with GCC 4.9 and Clang 4.8, and only
-with an __attribute__ decoration).
-
-With ICC and MSVC, we are allowed to use the intrinsics, but the
-#include was missing.
-
-[ChangeLog][QtCore] Fixed a compilation issue with qfloat16 if AVX2
-support is enabled in the compiler. Since all processors that support
-AVX2 also support F16C, for GCC and Clang it is recommended to either
-add -mf16c to your build or to use the corresponding -march= switch.
-
-Task-number: QTBUG-64529
-Change-Id: I84e363d735b443cb9beefffd14b8ac1fd4baa978
-Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
----
- src/corelib/global/qfloat16.h | 15 ++++++++++++---
- 1 file changed, 12 insertions(+), 3 deletions(-)
-
-diff --git a/src/corelib/global/qfloat16.h b/src/corelib/global/qfloat16.h
-index 89a62a93db..a0aa9496b4 100644
---- a/src/corelib/global/qfloat16.h
-+++ b/src/corelib/global/qfloat16.h
-@@ -44,7 +44,16 @@
- #include <QtCore/qmetatype.h>
- #include <string.h>
-
--#if defined __F16C__
-+#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__AVX2__) && !defined(__F16C__)
-+// All processors that support AVX2 do support F16C too. That doesn't mean
-+// we're allowed to use the intrinsics directly, so we'll do it only for
-+// the Intel and Microsoft's compilers.
-+# if defined(Q_CC_INTEL) || defined(Q_CC_MSVC)
-+# define __F16C__ 1
-+# endif
-+#endif
-+
-+#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__F16C__)
- #include <immintrin.h>
- #endif
-
-@@ -116,7 +125,7 @@ QT_WARNING_DISABLE_CLANG("-Wc99-extensions")
- QT_WARNING_DISABLE_GCC("-Wold-style-cast")
- inline qfloat16::qfloat16(float f) Q_DECL_NOTHROW
- {
--#if defined(QT_COMPILER_SUPPORTS_F16C) && (defined(__F16C__) || defined(__AVX2__))
-+#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__F16C__)
- __m128 packsingle = _mm_set_ss(f);
- __m128i packhalf = _mm_cvtps_ph(packsingle, 0);
- b16 = _mm_extract_epi16(packhalf, 0);
-@@ -134,7 +143,7 @@ QT_WARNING_POP
-
- inline qfloat16::operator float() const Q_DECL_NOTHROW
- {
--#if defined(QT_COMPILER_SUPPORTS_F16C) && (defined(__F16C__) || defined(__AVX2__))
-+#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__F16C__)
- __m128i packhalf = _mm_cvtsi32_si128(b16);
- __m128 packsingle = _mm_cvtph_ps(packhalf);
- return _mm_cvtss_f32(packsingle);
---
-cgit v1.1-6-g87c4
-
diff --git a/dev-qt/qtcore/files/qtcore-5.9.3-musl-iconv.patch b/dev-qt/qtcore/files/qtcore-5.9.3-musl-iconv.patch
deleted file mode 100644
index b738f739..00000000
--- a/dev-qt/qtcore/files/qtcore-5.9.3-musl-iconv.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur qtbase-opensource-src-5.9.3.orig/src/corelib/codecs/qiconvcodec.cpp qtbase-opensource-src-5.9.3/src/corelib/codecs/qiconvcodec.cpp
---- qtbase-opensource-src-5.9.3.orig/src/corelib/codecs/qiconvcodec.cpp 2017-11-15 21:15:28.000000000 -0800
-+++ qtbase-opensource-src-5.9.3/src/corelib/codecs/qiconvcodec.cpp 2017-11-28 22:24:13.734884247 -0800
-@@ -63,7 +63,7 @@
- #elif defined(Q_OS_AIX)
- # define NO_BOM
- # define UTF16 "UCS-2"
--#elif defined(Q_OS_FREEBSD)
-+#elif defined(Q_OS_FREEBSD) || (defined(Q_OS_LINUX) && !defined(__GLIBC__))
- # define NO_BOM
- # if Q_BYTE_ORDER == Q_BIG_ENDIAN
- # define UTF16 "UTF-16BE"
diff --git a/dev-qt/qtcore/files/qtcore-clang-libc++abi.patch b/dev-qt/qtcore/files/qtcore-clang-libc++abi.patch
deleted file mode 100644
index 832f08b6..00000000
--- a/dev-qt/qtcore/files/qtcore-clang-libc++abi.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/mkspecs/linux-clang-libc++/qmake.conf.orig b/mkspecs/linux-clang-libc++/qmake.conf
-index c5b0b57..97256f0 100644
---- a/mkspecs/linux-clang-libc++/qmake.conf.orig
-+++ b/mkspecs/linux-clang-libc++/qmake.conf
-@@ -5,6 +5,6 @@
- include(../linux-clang/qmake.conf)
-
- QMAKE_CXXFLAGS += -stdlib=libc++
--QMAKE_LFLAGS += -stdlib=libc++
-+QMAKE_LFLAGS += -stdlib=libc++ -lc++abi
-
- load(qt_config)
diff --git a/dev-qt/qtcore/metadata.xml b/dev-qt/qtcore/metadata.xml
index 34c01218..668f6ab4 100644
--- a/dev-qt/qtcore/metadata.xml
+++ b/dev-qt/qtcore/metadata.xml
@@ -15,7 +15,7 @@
</use>
<upstream>
<bugs-to>https://bugreports.qt.io/</bugs-to>
- <doc>http://doc.qt.io/</doc>
+ <doc>https://doc.qt.io/</doc>
</upstream>
<slots>
<subslots>
diff --git a/dev-qt/qtcore/qtcore-4.8.7-r3.ebuild b/dev-qt/qtcore/qtcore-4.8.7-r4.ebuild
index c590fe94..b537661b 100644
--- a/dev-qt/qtcore/qtcore-4.8.7-r3.ebuild
+++ b/dev-qt/qtcore/qtcore-4.8.7-r4.ebuild
@@ -7,7 +7,7 @@ inherit qt4-build-multilib
DESCRIPTION="Cross-platform application development framework"
if [[ ${QT4_BUILD_TYPE} == release ]]; then
- KEYWORDS="amd64 ~arm ia64 ~mips ppc sparc x86"
+ KEYWORDS="amd64 arm ia64 ~mips ppc sparc x86"
fi
IUSE="+glib iconv icu libressl qt3support ssl"
@@ -16,7 +16,7 @@ DEPEND="
>=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]
glib? ( dev-libs/glib:2[${MULTILIB_USEDEP}] )
iconv? ( >=virtual/libiconv-0-r2[${MULTILIB_USEDEP}] )
- icu? ( dev-libs/icu:=[${MULTILIB_USEDEP}] )
+ icu? ( <dev-libs/icu-59:=[${MULTILIB_USEDEP}] )
ssl? (
!libressl? ( >=dev-libs/openssl-1.0.1h-r2:0[${MULTILIB_USEDEP}] )
libressl? ( dev-libs/libressl:=[${MULTILIB_USEDEP}] )
diff --git a/dev-qt/qtcore/qtcore-5.7.1-r3.ebuild b/dev-qt/qtcore/qtcore-5.7.1-r3.ebuild
deleted file mode 100644
index b8f760e6..00000000
--- a/dev-qt/qtcore/qtcore-5.7.1-r3.ebuild
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-QT5_MODULE="qtbase"
-inherit qt5-build
-
-DESCRIPTION="Cross-platform application development framework"
-
-if [[ ${QT5_BUILD_TYPE} == release ]]; then
- KEYWORDS="amd64 arm ppc x86"
-fi
-
-IUSE="icu systemd"
-
-DEPEND="
- dev-libs/double-conversion:=
- dev-libs/glib:2
- >=dev-libs/libpcre-8.38[pcre16,unicode]
- >=sys-libs/zlib-1.2.5
- virtual/libiconv
- icu? ( dev-libs/icu:= )
- systemd? ( sys-apps/systemd:= )
-"
-RDEPEND="${DEPEND}"
-
-PATCHES=(
- "${FILESDIR}"/${PN}-5.6.2-plugins.patch
- "${FILESDIR}"/${P}-qipm.patch
- "${FILESDIR}"/${P}-qsfpm-{1,2}.patch
- "${FILESDIR}/${PN}-5.5.1-musl-iconv.patch"
-)
-
-QT5_TARGET_SUBDIRS=(
- src/tools/bootstrap
- src/tools/moc
- src/tools/rcc
- src/corelib
- src/tools/qlalr
- doc
-)
-
-src_configure() {
- local myconf=(
- $(qt_use icu)
- $(qt_use systemd journald)
- )
- qt5-build_src_configure
-}