package qtbase: rebased patches on upstream fixes

This commit is contained in:
Mark Brand 2013-10-24 23:07:21 +02:00
parent be3cab983b
commit af4b34bf16
2 changed files with 230 additions and 122 deletions

View File

@ -3,10 +3,234 @@ See index.html for further information.
Contains ad hoc patches for cross building.
From 4274f3853fb812a168965a5addfb5413d06eef05 Mon Sep 17 00:00:00 2001
From 99dd0c414f1eb7142993febca7b722f6f8b43b8f Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Thu, 19 Sep 2013 08:53:30 +0200
Subject: [PATCH 01/10] fix off-by-one error in NTLM proxy authentication
Change-Id: Icee3fc939d81c726f8e4ed484a0c8685cf1f271c
Task-number: QTBUG-27555
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit c97e369e70c9b17b3ac00f43ccdc191df2183da1)
diff --git a/src/network/kernel/qauthenticator.cpp b/src/network/kernel/qauthenticator.cpp
index 73991ab..0ea97f2 100644
--- a/src/network/kernel/qauthenticator.cpp
+++ b/src/network/kernel/qauthenticator.cpp
@@ -1392,7 +1392,7 @@ static bool qNtlmDecodePhase2(const QByteArray& data, QNtlmPhase2Block& ch)
ds >> ch.targetInfo;
if (ch.targetName.len > 0) {
- if (ch.targetName.len + ch.targetName.offset >= (unsigned)data.size())
+ if (ch.targetName.len + ch.targetName.offset > (unsigned)data.size())
return false;
ch.targetNameStr = qStringFromUcs2Le(data.mid(ch.targetName.offset, ch.targetName.len));
--
1.8.1.4
From 09609302a0e34b1185ce8456c99196a75a85d5a4 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@digia.com>
Date: Mon, 26 Aug 2013 11:52:47 +0200
Subject: [PATCH 02/10] Windows: Fix compilation with MinGW-64, gcc 4.8.1
A definition for FILE_ID_128 was added.
Change-Id: Ifdfe5da1b15a90afdf5cf09d92838a04b1cf5c19
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
(cherry picked from commit e59a5f9fdcec5df2f54e88d75a75fcb4a2fe577b)
diff --git a/src/corelib/io/qfilesystemengine_win.cpp b/src/corelib/io/qfilesystemengine_win.cpp
index e8904b0..57231b5 100644
--- a/src/corelib/io/qfilesystemengine_win.cpp
+++ b/src/corelib/io/qfilesystemengine_win.cpp
@@ -573,9 +573,12 @@ typedef enum { Q_FileIdInfo = 18 } Q_FILE_INFO_BY_HANDLE_CLASS;
# if defined(Q_CC_MINGW) || (defined(Q_CC_MSVC) && _MSC_VER < 1700)
+// MinGW-64 defines FILE_ID_128 as of gcc-4.8.1 along with FILE_SUPPORTS_INTEGRITY_STREAMS
+# if !(defined(Q_CC_MINGW) && defined(FILE_SUPPORTS_INTEGRITY_STREAMS))
typedef struct _FILE_ID_128 {
BYTE Identifier[16];
} FILE_ID_128, *PFILE_ID_128;
+# endif // !(Q_CC_MINGW && FILE_SUPPORTS_INTEGRITY_STREAMS)
typedef struct _FILE_ID_INFO {
ULONGLONG VolumeSerialNumber;
@@ -614,7 +617,8 @@ QByteArray fileIdWin8(HANDLE handle)
&infoEx, sizeof(FILE_ID_INFO))) {
result = QByteArray::number(infoEx.VolumeSerialNumber, 16);
result += ':';
- result += QByteArray((char *)infoEx.FileId.Identifier, sizeof(infoEx.FileId.Identifier)).toHex();
+ // Note: MinGW-64's definition of FILE_ID_128 differs from the MSVC one.
+ result += QByteArray((char *)&infoEx.FileId, sizeof(infoEx.FileId)).toHex();
}
}
return result;
--
1.8.1.4
From e82966dbb4222149a40da45ad8816d622a0a949c Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@digia.com>
Date: Mon, 2 Sep 2013 10:20:37 +0200
Subject: [PATCH 03/10] Fix compilation with latest Mingw-w64 headers
Fix compilation with e.g. mingw-builds 4.8.1-rev4 package. The Mingw-W64
headers define SHSTOCKICONINFO only for vista and newer.
Task-number: QTBUG-33225
Change-Id: I30a62c642ae017c7eafb99b1efb06578fd61a12e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
(cherry picked from commit 0ed30cbf09db591b46370888fa2f687310bf5cff)
diff --git a/src/plugins/platforms/windows/qwindowstheme.cpp b/src/plugins/platforms/windows/qwindowstheme.cpp
index 844e46e..d2bd0be 100644
--- a/src/plugins/platforms/windows/qwindowstheme.cpp
+++ b/src/plugins/platforms/windows/qwindowstheme.cpp
@@ -39,6 +39,12 @@
**
****************************************************************************/
+// SHSTOCKICONINFO is only available since Vista
+#if _WIN32_WINNT < 0x0600
+# undef _WIN32_WINNT
+# define _WIN32_WINNT 0x0600
+#endif
+
#include "qwindowstheme.h"
#include "qwindowsdialoghelpers.h"
#include "qwindowscontext.h"
--
1.8.1.4
From 562b005aaf1d6a1cd3f2ab4e1cae3a977b942c3f Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@digia.com>
Date: Thu, 19 Sep 2013 15:17:45 +0200
Subject: [PATCH 04/10] Fix typo in define guards
Needed to fix compilation with latest Mingw-w64 headers (version 3)
Change-Id: I70c7ff3d833e15e99a915a2df83f04d03a968300
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
(cherry picked from commit 409526b8a6addd7344d4efd5a1464aaf40cf260f)
diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
index 33bed61..b91e3ee 100644
--- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
+++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
@@ -232,7 +232,7 @@ DECLARE_INTERFACE_(IShellItemFilter, IUnknown)
};
#endif
-#ifndef __IShellEnumItems_INTERFACE_DEFINED__
+#ifndef __IEnumShellItems_INTERFACE_DEFINED__
DECLARE_INTERFACE_(IEnumShellItems, IUnknown)
{
STDMETHOD(Next)(THIS_ ULONG celt, IShellItem **rgelt, ULONG *pceltFetched) PURE;
--
1.8.1.4
From 28285c1c123f6673e433b5bc03ef2001f3bbbf0a Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@digia.com>
Date: Thu, 19 Sep 2013 15:18:41 +0200
Subject: [PATCH 05/10] Require Windows Vista
The structure FDAP is only available as Windows Vista, and MinGW-w64
do not actually define it if _WIN32_WINNT isn't set.
Needed to fix compilation with latest MinGW-w64 headers (version 3).
Change-Id: I566ea6bd4c3d8d5a495b644aedffb7de42a6d6e4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
(cherry picked from commit 8a383c585f337320a203e26c505b594c949d59e5)
Conflicts:
src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
index b91e3ee..4180b90 100644
--- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
+++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
@@ -39,6 +39,8 @@
**
****************************************************************************/
+#define _WIN32_WINNT 0x0600
+
#include "qwindowsdialoghelpers.h"
#include "qwindowscontext.h"
--
1.8.1.4
From e50ce8fe6bf48be165a51c2f5f5b7638d0528593 Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@digia.com>
Date: Mon, 21 Oct 2013 12:54:45 +0200
Subject: [PATCH 06/10] Fix compilation with latest MinGW-w64 (release 3)
Now that MinGW-w64 fixed the headers the old hack actually break stuff.
Change-Id: I1f60b9176982f6c07e01f3960bc1d7e70d7f9481
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
(cherry picked from commit 9b187bcd6a256b53cc2fb8550da64b30b0cc5760)
diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
index 4180b90..3b64edc 100644
--- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
+++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
@@ -1712,7 +1712,9 @@ static int CALLBACK xpFileDialogGetExistingDirCallbackProc(HWND hwnd, UINT uMsg,
return dialog->existingDirCallback(hwnd, uMsg, lParam);
}
-#ifdef Q_CC_MINGW
+/* The correct declaration of the SHGetPathFromIDList symbol is
+ * being used in mingw-w64 as of r6215, which is a v3 snapshot. */
+#if defined(Q_CC_MINGW) && (!defined(__MINGW64_VERSION_MAJOR) || _MINGW64_VERSION_MAJOR < 3)
typedef ITEMIDLIST *qt_LpItemIdList;
#else
typedef PIDLIST_ABSOLUTE qt_LpItemIdList;
--
1.8.1.4
From c730e0a1c9087fd1e0ae8c08e5f92d55eec79d25 Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@digia.com>
Date: Wed, 23 Oct 2013 15:25:11 +0200
Subject: [PATCH 07/10] Fix typo in check for MINGW_W64 version
Got introduced in 9b187bcd6a256b53cc2fb85500
Change-Id: I1d713f8309d3d8568ea836cc1d29f9dca685ac01
Reviewed-by: Jonathan Liu <net147@gmail.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
(cherry picked from commit 17809b41a6232220b1b19052cd9ebf48899c476a)
diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
index 3b64edc..246f67a 100644
--- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
+++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
@@ -1714,7 +1714,7 @@ static int CALLBACK xpFileDialogGetExistingDirCallbackProc(HWND hwnd, UINT uMsg,
/* The correct declaration of the SHGetPathFromIDList symbol is
* being used in mingw-w64 as of r6215, which is a v3 snapshot. */
-#if defined(Q_CC_MINGW) && (!defined(__MINGW64_VERSION_MAJOR) || _MINGW64_VERSION_MAJOR < 3)
+#if defined(Q_CC_MINGW) && (!defined(__MINGW64_VERSION_MAJOR) || __MINGW64_VERSION_MAJOR < 3)
typedef ITEMIDLIST *qt_LpItemIdList;
#else
typedef PIDLIST_ABSOLUTE qt_LpItemIdList;
--
1.8.1.4
From 5ac54731a9590161e7b00c38d100232a03ecf260 Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Tue, 26 Feb 2013 13:23:33 +0100
Subject: [PATCH 1/6] use pkg-config for freetype
Subject: [PATCH 08/10] use pkg-config for freetype
Change-Id: Id2f78ed9dbdcacd570eb25982cbd700d0437542a
@ -26,10 +250,10 @@ index 88be809..8fc19d2 100644
1.8.1.4
From e73795bab32ae951f673be654d44e4b69d731998 Mon Sep 17 00:00:00 2001
From 78af990867b4f6653839e59702f25a0d7871aaf0 Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Sat, 22 Dec 2012 17:45:34 +0100
Subject: [PATCH 2/6] WIP: qmake writeFile(): work around concurrent
Subject: [PATCH 09/10] WIP: qmake writeFile(): work around concurrent
QDir::mkpath() failure
This actually happened when building qtimageformats with make -j4.
@ -67,10 +291,10 @@ index be0d8ea..6306235 100644
1.8.1.4
From dbb51e399120e7c4023e8ac760d971050ff43f33 Mon Sep 17 00:00:00 2001
From 70a865104329d4c874d4fd287b5ccd5563c0098a Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Sat, 18 May 2013 23:07:46 +0200
Subject: [PATCH 3/6] use pkgconfig for icu detection (MXE specific)
Subject: [PATCH 10/10] use pkgconfig for icu detection (MXE specific)
Change-Id: I874171361fec812cb5a5a56e4d8d90a630be3bf3
@ -88,118 +312,3 @@ index 8e58334..1d66c16 100644
--
1.8.1.4
From ebb2503ccdcd9ab24216444b312d079b2c9cb298 Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Thu, 19 Sep 2013 08:53:30 +0200
Subject: [PATCH 4/6] fix off-by-one error in NTLM proxy authentication
Change-Id: Icee3fc939d81c726f8e4ed484a0c8685cf1f271c
Task-number: QTBUG-27555
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit c97e369e70c9b17b3ac00f43ccdc191df2183da1)
diff --git a/src/network/kernel/qauthenticator.cpp b/src/network/kernel/qauthenticator.cpp
index 73991ab..0ea97f2 100644
--- a/src/network/kernel/qauthenticator.cpp
+++ b/src/network/kernel/qauthenticator.cpp
@@ -1392,7 +1392,7 @@ static bool qNtlmDecodePhase2(const QByteArray& data, QNtlmPhase2Block& ch)
ds >> ch.targetInfo;
if (ch.targetName.len > 0) {
- if (ch.targetName.len + ch.targetName.offset >= (unsigned)data.size())
+ if (ch.targetName.len + ch.targetName.offset > (unsigned)data.size())
return false;
ch.targetNameStr = qStringFromUcs2Le(data.mid(ch.targetName.offset, ch.targetName.len));
--
1.8.1.4
From 8966a716ba09eba506c6d75201d86e5f3c51ff56 Mon Sep 17 00:00:00 2001
From: Tony Theodore <tonyt@logyst.com>
Date: Sat, 19 Oct 2013 22:12:13 +1100
Subject: [PATCH 5/6] Fix FTBFS against latest mingw-w64
https://codereview.qt-project.org/#change,63747
0001-Windows-Fix-compilation-with-MinGW-64-gcc-4.8.1.patch
taken from https://aur.archlinux.org/packages/mi/mingw-w64-qt5-base
diff --git a/src/corelib/io/qfilesystemengine_win.cpp b/src/corelib/io/qfilesystemengine_win.cpp
index e8904b0..57231b5 100644
--- a/src/corelib/io/qfilesystemengine_win.cpp
+++ b/src/corelib/io/qfilesystemengine_win.cpp
@@ -573,9 +573,12 @@ typedef enum { Q_FileIdInfo = 18 } Q_FILE_INFO_BY_HANDLE_CLASS;
# if defined(Q_CC_MINGW) || (defined(Q_CC_MSVC) && _MSC_VER < 1700)
+// MinGW-64 defines FILE_ID_128 as of gcc-4.8.1 along with FILE_SUPPORTS_INTEGRITY_STREAMS
+# if !(defined(Q_CC_MINGW) && defined(FILE_SUPPORTS_INTEGRITY_STREAMS))
typedef struct _FILE_ID_128 {
BYTE Identifier[16];
} FILE_ID_128, *PFILE_ID_128;
+# endif // !(Q_CC_MINGW && FILE_SUPPORTS_INTEGRITY_STREAMS)
typedef struct _FILE_ID_INFO {
ULONGLONG VolumeSerialNumber;
@@ -614,7 +617,8 @@ QByteArray fileIdWin8(HANDLE handle)
&infoEx, sizeof(FILE_ID_INFO))) {
result = QByteArray::number(infoEx.VolumeSerialNumber, 16);
result += ':';
- result += QByteArray((char *)infoEx.FileId.Identifier, sizeof(infoEx.FileId.Identifier)).toHex();
+ // Note: MinGW-64's definition of FILE_ID_128 differs from the MSVC one.
+ result += QByteArray((char *)&infoEx.FileId, sizeof(infoEx.FileId)).toHex();
}
}
return result;
--
1.8.1.4
From 2252f72f676c6cd4562f294561603e30661600b3 Mon Sep 17 00:00:00 2001
From: Tony Theodore <tonyt@logyst.com>
Date: Sat, 19 Oct 2013 22:16:50 +1100
Subject: [PATCH 6/6] Fix IEnumShellItems defined when
__IShellEnumItems_INTERFACE_DEFINED__ not defined
mingw-w64 FTBFS fix
qt5-mingw-w64-trunk-compatibility.patch
from https://aur.archlinux.org/packages/mi/mingw-w64-qt5-base/PKGBUILD
diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
index 33bed61..299de76 100644
--- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
+++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
@@ -39,6 +39,9 @@
**
****************************************************************************/
+/* The structure FDAP which is used in this file is only available as of Windows Vista */
+#define _WIN32_WINNT 0x0600
+
#include "qwindowsdialoghelpers.h"
#include "qwindowscontext.h"
@@ -232,7 +235,7 @@ DECLARE_INTERFACE_(IShellItemFilter, IUnknown)
};
#endif
-#ifndef __IShellEnumItems_INTERFACE_DEFINED__
+#if !defined(__IShellEnumItems_INTERFACE_DEFINED__) && !defined(__IEnumShellItems_INTERFACE_DEFINED__)
DECLARE_INTERFACE_(IEnumShellItems, IUnknown)
{
STDMETHOD(Next)(THIS_ ULONG celt, IShellItem **rgelt, ULONG *pceltFetched) PURE;
@@ -1710,7 +1713,9 @@ static int CALLBACK xpFileDialogGetExistingDirCallbackProc(HWND hwnd, UINT uMsg,
return dialog->existingDirCallback(hwnd, uMsg, lParam);
}
-#ifdef Q_CC_MINGW
+/* The correct declaration of the SHGetPathFromIDList symbol is
+ * being used in mingw-w64 as of r6215 (which is a v3 snapshot) */
+#if defined(Q_CC_MINGW) && __MINGW64_VERSION_MAJOR < 3
typedef ITEMIDLIST *qt_LpItemIdList;
#else
typedef PIDLIST_ABSOLUTE qt_LpItemIdList;
--
1.8.1.4

View File

@ -26,7 +26,6 @@ define $(PKG)_BUILD
-opensource \
-confirm-license \
-xplatform win32-g++ \
-D_WIN32_WINNT=0x0600 \
-device-option CROSS_COMPILE=${TARGET}- \
-device-option PKG_CONFIG='${TARGET}-pkg-config' \
-force-pkg-config \