From fdcba363c7e7e01790ba4b946e4f53f8600d8a20 Mon Sep 17 00:00:00 2001 From: Konstantin Tokarev Date: Sat, 4 Mar 2017 18:59:02 +0300 Subject: Import WebKit commit 3da312bb5ff3deccba0a495b6ad6d5cafba56597 Change-Id: Ifc702a2f8477e8a07e51cb0cd44161c1d9a84357 Reviewed-by: Konstantin Tokarev --- Tools/QtTestBrowser/launcherwindow.cpp | 2 +- Tools/qmake/mkspecs/features/functions.prf | 13 ++- Tools/qmake/projects/run_cmake.pro | 13 ++- Tools/qt/jhbuild-qt-5.4.modules | 2 + Tools/qt/jhbuild.modules | 14 +-- Tools/qt/make-snapshot.pl | 2 +- ...te-suppress-string-format-literal-warning.patch | 29 ++++++ Tools/qt/patches/glib-warning-fix.patch | 34 +++++++ Tools/qt/patches/qtbase-5.4-no-sslv2_3.patch | 89 ++++++++++++++++++ Tools/qt/patches/qtbase-5.4-no-sslv3.patch | 100 +++++++++++++++++++++ 10 files changed, 282 insertions(+), 16 deletions(-) create mode 100644 Tools/qt/patches/gdate-suppress-string-format-literal-warning.patch create mode 100644 Tools/qt/patches/glib-warning-fix.patch create mode 100644 Tools/qt/patches/qtbase-5.4-no-sslv2_3.patch create mode 100644 Tools/qt/patches/qtbase-5.4-no-sslv3.patch (limited to 'Tools') diff --git a/Tools/QtTestBrowser/launcherwindow.cpp b/Tools/QtTestBrowser/launcherwindow.cpp index c1974552e..1321760f8 100644 --- a/Tools/QtTestBrowser/launcherwindow.cpp +++ b/Tools/QtTestBrowser/launcherwindow.cpp @@ -1151,7 +1151,7 @@ void LauncherWindow::fileDownloadFinished() if (fileName.isEmpty()) return; if (m_reply->error() != QNetworkReply::NoError) - QMessageBox::critical(this, QString("Download"), QString("Download failed.")); + QMessageBox::critical(this, QStringLiteral("Download"), QStringLiteral("Download failed: ") + m_reply->errorString()); else { QFile file(fileName); file.open(QIODevice::WriteOnly); diff --git a/Tools/qmake/mkspecs/features/functions.prf b/Tools/qmake/mkspecs/features/functions.prf index 831e01a98..3a775dcfd 100644 --- a/Tools/qmake/mkspecs/features/functions.prf +++ b/Tools/qmake/mkspecs/features/functions.prf @@ -67,13 +67,6 @@ defineTest(isPlatformSupported) { qtConfig(opengles2):!qtConfig(dynamicgl) { skipBuild("QtWebKit supports only dynamic GL Qt builds on Windows at the moment.") } - - CONFIG(debug, debug|release):!contains(QMAKE_HOST.arch, x86_64) { - # debug_and_release is built as release, see Tools/qmake/projects/run_cmake.pro - !debug_and_release { - skipBuild("QtWebKit requires a 64-bit toolchain for debug build") - } - } winrt { skipBuild("WinRT is not supported.") } @@ -81,6 +74,12 @@ defineTest(isPlatformSupported) { !isVersionAtLeast($$MSVC_VER, "14.0") { skipBuild("QtWebKit on Windows requires MSVC 2015.") } + CONFIG(debug, debug|release):!contains(QMAKE_HOST.arch, x86_64) { + # debug_and_release is built as release, see Tools/qmake/projects/run_cmake.pro + !debug_and_release { + skipBuild("QtWebKit requires 64-bit MSVC toolchain for debug build") + } + } } else { isGCCVersionSupported() } diff --git a/Tools/qmake/projects/run_cmake.pro b/Tools/qmake/projects/run_cmake.pro index 1192197bd..1b8742c4a 100644 --- a/Tools/qmake/projects/run_cmake.pro +++ b/Tools/qmake/projects/run_cmake.pro @@ -4,7 +4,7 @@ ROOT_QT_BUILD_DIR = $$ROOT_BUILD_DIR/.. TEMPLATE = aux -win32:!contains(QMAKE_HOST.arch, x86_64) { +msvc:!contains(QMAKE_HOST.arch, x86_64) { debug_and_release { warning("Skipping debug build of QtWebKit because it requires a 64-bit toolchain") CONFIG -= debug_and_release debug @@ -62,6 +62,17 @@ build_pass|!debug_and_release { CMAKE_CONFIG += QT_CONAN_DIR=$$ROOT_BUILD_DIR } + macos { + # Reuse the cached sdk version value from mac/sdk.prf if available + # otherwise query for it. + QMAKE_MAC_SDK_PATH = $$eval(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.Path) + isEmpty(QMAKE_MAC_SDK_PATH) { + QMAKE_MAC_SDK_PATH = $$system("/usr/bin/xcodebuild -sdk $${QMAKE_MAC_SDK} -version Path 2>/dev/null") + } + exists($$QMAKE_MAC_SDK_PATH): CMAKE_CONFIG += CMAKE_OSX_SYSROOT=$$QMAKE_MAC_SDK_PATH + !isEmpty($$QMAKE_MACOSX_DEPLOYMENT_TARGET): CMAKE_CONFIG += CMAKE_OSX_DEPLOYMENT_TARGET=$$QMAKE_MACOSX_DEPLOYMENT_TARGET + } + equals(QMAKE_HOST.os, Windows) { if(equals(MAKEFILE_GENERATOR, MSVC.NET)|equals(MAKEFILE_GENERATOR, MSBUILD)) { cmake_generator = "NMake Makefiles JOM" diff --git a/Tools/qt/jhbuild-qt-5.4.modules b/Tools/qt/jhbuild-qt-5.4.modules index 924a19a6b..fc85f6ee0 100644 --- a/Tools/qt/jhbuild-qt-5.4.modules +++ b/Tools/qt/jhbuild-qt-5.4.modules @@ -62,6 +62,8 @@ repo="download.qt.io" hash="sha256:daea240ba5e77bc2d78ec21a2cb664eed83b3d4ad409b6277a6f7d4c0c8e91d1"> + + diff --git a/Tools/qt/jhbuild.modules b/Tools/qt/jhbuild.modules index 9a10e9f39..f59f198df 100644 --- a/Tools/qt/jhbuild.modules +++ b/Tools/qt/jhbuild.modules @@ -51,8 +51,8 @@ href="http://webkitgtk.org/jhbuild_mirror/"/> - + @@ -102,6 +102,8 @@ + + @@ -231,7 +233,7 @@ - + @@ -267,7 +269,7 @@ + autogenargs="--enable-optimized --disable-terminfo --disable-zlib --enable-targets=host --disable-backtraces --disable-crash-overrides --disable-expensive-checks --disable-debug-runtime --disable-assertions --enable-shared --enable-bindings=none"> @@ -276,9 +278,9 @@ - diff --git a/Tools/qt/make-snapshot.pl b/Tools/qt/make-snapshot.pl index 316fe7b35..667890de0 100755 --- a/Tools/qt/make-snapshot.pl +++ b/Tools/qt/make-snapshot.pl @@ -53,7 +53,7 @@ my @commands = ( "tar -xf $src_repo/snapshot.tar --strip-components=1", "git add -A", "rm $src_repo/snapshot.tar", - "git commit -m 'Imported WebKit commit $commit'" + "git commit -m 'Import WebKit commit $commit'" ); my $cmd = join " && ", @commands; diff --git a/Tools/qt/patches/gdate-suppress-string-format-literal-warning.patch b/Tools/qt/patches/gdate-suppress-string-format-literal-warning.patch new file mode 100644 index 000000000..90cb951a1 --- /dev/null +++ b/Tools/qt/patches/gdate-suppress-string-format-literal-warning.patch @@ -0,0 +1,29 @@ +From 3a7efd598d39366c2c9de0def2fdfb35e5e9f2a1 Mon Sep 17 00:00:00 2001 +From: coypu +Date: Mon, 8 Feb 2016 00:06:06 +0200 +Subject: [PATCH 1/1] gdate: Suppress string format literal warning + +Newer versions of GCC emit an error here, but we know it's safe. +https://bugzilla.gnome.org/761550 +--- + glib/gdate.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/glib/gdate.c b/glib/gdate.c +index 4aece02..cdc735c 100644 +--- a/glib/gdate.c ++++ b/glib/gdate.c +@@ -2494,7 +2494,10 @@ g_date_strftime (gchar *s, + * recognize whether strftime actually failed or just returned "". + */ + tmpbuf[0] = '\1'; ++ #pragma GCC diagnostic push ++ #pragma GCC diagnostic ignored "-Wformat-nonliteral" + tmplen = strftime (tmpbuf, tmpbufsize, locale_format, &tm); ++ #pragma GCC diagnostic pop + + if (tmplen == 0 && tmpbuf[0] != '\0') + { +-- +2.7.0 + diff --git a/Tools/qt/patches/glib-warning-fix.patch b/Tools/qt/patches/glib-warning-fix.patch new file mode 100644 index 000000000..f2c873be5 --- /dev/null +++ b/Tools/qt/patches/glib-warning-fix.patch @@ -0,0 +1,34 @@ +From 9f90ee5eeccd47f39c7a03dcd786b125a19c195d Mon Sep 17 00:00:00 2001 +From: Michael Catanzaro +Date: Sat, 13 Jun 2015 22:52:33 -0500 +Subject: [PATCH] genmarshal: silence register storage class warnings + +Using the register keyword triggers warnings on noteworthy compilers +(clang), since it's deprecated in C++ and at danger of being removed +from the language. There is no reason to use it since it isn't 1980 +anymore. + +https://bugzilla.gnome.org/show_bug.cgi?id=750918 +--- + gobject/glib-genmarshal.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/gobject/glib-genmarshal.c b/gobject/glib-genmarshal.c +index be4151a..ca78a6f 100644 +--- a/gobject/glib-genmarshal.c ++++ b/gobject/glib-genmarshal.c +@@ -412,9 +412,9 @@ generate_marshal (const gchar *signame, + g_fprintf (fout, "%s%s data2);\n", indent (ind), pad ("gpointer")); + + /* cfile marshal variables */ +- g_fprintf (fout, " register GMarshalFunc_%s callback;\n", signame); +- g_fprintf (fout, " register GCClosure *cc = (GCClosure*) closure;\n"); +- g_fprintf (fout, " register gpointer data1, data2;\n"); ++ g_fprintf (fout, " GMarshalFunc_%s callback;\n", signame); ++ g_fprintf (fout, " GCClosure *cc = (GCClosure*) closure;\n"); ++ g_fprintf (fout, " gpointer data1, data2;\n"); + if (sig->rarg->setter) + g_fprintf (fout, " %s v_return;\n", sig->rarg->ctype); + +-- +2.4.2 diff --git a/Tools/qt/patches/qtbase-5.4-no-sslv2_3.patch b/Tools/qt/patches/qtbase-5.4-no-sslv2_3.patch new file mode 100644 index 000000000..21cd1c787 --- /dev/null +++ b/Tools/qt/patches/qtbase-5.4-no-sslv2_3.patch @@ -0,0 +1,89 @@ +From 027571c8c3efe8b1451fb73b74be7e617db1899f Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Fri, 10 Apr 2015 09:57:29 +0200 +Subject: [PATCH 1/1] Also add support for linked OpenSSL without SSL v2 & v3 + support + +So far, this was only supported for dlopen mode. This adds symmetric +defines for the linking case. + +Change-Id: I9cbfa18e04d041dde0cbd833929782cada9eb812 +Reviewed-by: Richard J. Moore +--- + src/network/ssl/qsslsocket_openssl_symbols.cpp | 4 ++++ + src/network/ssl/qsslsocket_openssl_symbols_p.h | 16 ++++++++++++++++ + 2 files changed, 20 insertions(+) + +diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp +index 332b64264e..042c593e62 100644 +--- a/src/network/ssl/qsslsocket_openssl_symbols.cpp ++++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp +@@ -312,13 +312,17 @@ DEFINEFUNC(const SSL_METHOD *, TLSv1_1_server_method, DUMMYARG, DUMMYARG, return + DEFINEFUNC(const SSL_METHOD *, TLSv1_2_server_method, DUMMYARG, DUMMYARG, return 0, return) + #endif + #else ++#ifndef OPENSSL_NO_SSL2 + DEFINEFUNC(SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif + #ifndef OPENSSL_NO_SSL3_METHOD + DEFINEFUNC(SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return) + #endif + DEFINEFUNC(SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return 0, return) + DEFINEFUNC(SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return) ++#ifndef OPENSSL_NO_SSL2 + DEFINEFUNC(SSL_METHOD *, SSLv2_server_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif + #ifndef OPENSSL_NO_SSL3_METHOD + DEFINEFUNC(SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return) + #endif +diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h +index 626c049629..a15bf4b87d 100644 +--- a/src/network/ssl/qsslsocket_openssl_symbols_p.h ++++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h +@@ -363,27 +363,43 @@ typedef unsigned int (*q_psk_client_callback_t)(SSL *ssl, const char *hint, char + void q_SSL_set_psk_client_callback(SSL *ssl, q_psk_client_callback_t callback); + #endif // OPENSSL_NO_PSK + #if OPENSSL_VERSION_NUMBER >= 0x10000000L ++#ifndef OPENSSL_NO_SSL2 + const SSL_METHOD *q_SSLv2_client_method(); ++#endif ++#ifndef OPENSSL_NO_SSL3_METHOD + const SSL_METHOD *q_SSLv3_client_method(); ++#endif + const SSL_METHOD *q_SSLv23_client_method(); + const SSL_METHOD *q_TLSv1_client_method(); + const SSL_METHOD *q_TLSv1_1_client_method(); + const SSL_METHOD *q_TLSv1_2_client_method(); ++#ifndef OPENSSL_NO_SSL2 + const SSL_METHOD *q_SSLv2_server_method(); ++#endif ++#ifndef OPENSSL_NO_SSL3_METHOD + const SSL_METHOD *q_SSLv3_server_method(); ++#endif + const SSL_METHOD *q_SSLv23_server_method(); + const SSL_METHOD *q_TLSv1_server_method(); + const SSL_METHOD *q_TLSv1_1_server_method(); + const SSL_METHOD *q_TLSv1_2_server_method(); + #else ++#ifndef OPENSSL_NO_SSL2 + SSL_METHOD *q_SSLv2_client_method(); ++#endif ++#ifndef OPENSSL_NO_SSL3_METHOD + SSL_METHOD *q_SSLv3_client_method(); ++#endif + SSL_METHOD *q_SSLv23_client_method(); + SSL_METHOD *q_TLSv1_client_method(); + SSL_METHOD *q_TLSv1_1_client_method(); + SSL_METHOD *q_TLSv1_2_client_method(); ++#ifndef OPENSSL_NO_SSL2 + SSL_METHOD *q_SSLv2_server_method(); ++#endif ++#ifndef OPENSSL_NO_SSL3_METHOD + SSL_METHOD *q_SSLv3_server_method(); ++#endif + SSL_METHOD *q_SSLv23_server_method(); + SSL_METHOD *q_TLSv1_server_method(); + SSL_METHOD *q_TLSv1_1_server_method(); +-- +2.11.0 + diff --git a/Tools/qt/patches/qtbase-5.4-no-sslv3.patch b/Tools/qt/patches/qtbase-5.4-no-sslv3.patch new file mode 100644 index 000000000..6724d9564 --- /dev/null +++ b/Tools/qt/patches/qtbase-5.4-no-sslv3.patch @@ -0,0 +1,100 @@ +From 6839aead0430a9b07b60fa3a1a7d685fe5d2d1ef Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andr=C3=A9=20Klitzing?= +Date: Fri, 9 Jan 2015 11:53:17 +0100 +Subject: [PATCH 1/1] Fix compile error if openssl is built with no-ssl3-method + +Since openssl 1.0.1k with enabled option no-ssl3-method we need to +check for OPENSSL_NO_SSL3_METHOD to use following functions: + +- SSLv3_method +- SSLv3_server_method +- SSLv3_client_method + +Change-Id: Iee83a6f4bacbf5660baa6bdb89eb02ceb9f11614 +Reviewed-by: Thiago Macieira +--- + src/network/ssl/qsslcontext_openssl.cpp | 6 ++++++ + src/network/ssl/qsslsocket_openssl_symbols.cpp | 12 ++++++++++++ + 2 files changed, 18 insertions(+) + +diff --git a/src/network/ssl/qsslcontext_openssl.cpp b/src/network/ssl/qsslcontext_openssl.cpp +index 92e726bc01..18eef2fc60 100644 +--- a/src/network/ssl/qsslcontext_openssl.cpp ++++ b/src/network/ssl/qsslcontext_openssl.cpp +@@ -138,7 +138,13 @@ init_context: + #endif + break; + case QSsl::SslV3: ++#ifndef OPENSSL_NO_SSL3_METHOD + sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv3_client_method() : q_SSLv3_server_method()); ++#else ++ // SSL 3 not supported by the system, but chosen deliberately -> error ++ sslContext->ctx = 0; ++ unsupportedProtocol = true; ++#endif + break; + case QSsl::SecureProtocols: + // SSLv2 and SSLv3 will be disabled by SSL options +diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp +index ea6e84adef..c1fea930d0 100644 +--- a/src/network/ssl/qsslsocket_openssl_symbols.cpp ++++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp +@@ -270,7 +270,9 @@ DEFINEFUNC(SSL_SESSION*, SSL_get_session, const SSL *ssl, ssl, return 0, return) + #ifndef OPENSSL_NO_SSL2 + DEFINEFUNC(const SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return) + #endif ++#ifndef OPENSSL_NO_SSL3_METHOD + DEFINEFUNC(const SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif + DEFINEFUNC(const SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return 0, return) + DEFINEFUNC(const SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return) + #if OPENSSL_VERSION_NUMBER >= 0x10001000L +@@ -280,7 +282,9 @@ DEFINEFUNC(const SSL_METHOD *, TLSv1_2_client_method, DUMMYARG, DUMMYARG, return + #ifndef OPENSSL_NO_SSL2 + DEFINEFUNC(const SSL_METHOD *, SSLv2_server_method, DUMMYARG, DUMMYARG, return 0, return) + #endif ++#ifndef OPENSSL_NO_SSL3_METHOD + DEFINEFUNC(const SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif + DEFINEFUNC(const SSL_METHOD *, SSLv23_server_method, DUMMYARG, DUMMYARG, return 0, return) + DEFINEFUNC(const SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return) + #if OPENSSL_VERSION_NUMBER >= 0x10001000L +@@ -289,11 +293,15 @@ DEFINEFUNC(const SSL_METHOD *, TLSv1_2_server_method, DUMMYARG, DUMMYARG, return + #endif + #else + DEFINEFUNC(SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return) ++#ifndef OPENSSL_NO_SSL3_METHOD + DEFINEFUNC(SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif + DEFINEFUNC(SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return 0, return) + DEFINEFUNC(SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return) + DEFINEFUNC(SSL_METHOD *, SSLv2_server_method, DUMMYARG, DUMMYARG, return 0, return) ++#ifndef OPENSSL_NO_SSL3_METHOD + DEFINEFUNC(SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif + DEFINEFUNC(SSL_METHOD *, SSLv23_server_method, DUMMYARG, DUMMYARG, return 0, return) + DEFINEFUNC(SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return) + #endif +@@ -799,7 +807,9 @@ bool q_resolveOpenSslSymbols() + #ifndef OPENSSL_NO_SSL2 + RESOLVEFUNC(SSLv2_client_method) + #endif ++#ifndef OPENSSL_NO_SSL3_METHOD + RESOLVEFUNC(SSLv3_client_method) ++#endif + RESOLVEFUNC(SSLv23_client_method) + RESOLVEFUNC(TLSv1_client_method) + #if OPENSSL_VERSION_NUMBER >= 0x10001000L +@@ -809,7 +819,9 @@ bool q_resolveOpenSslSymbols() + #ifndef OPENSSL_NO_SSL2 + RESOLVEFUNC(SSLv2_server_method) + #endif ++#ifndef OPENSSL_NO_SSL3_METHOD + RESOLVEFUNC(SSLv3_server_method) ++#endif + RESOLVEFUNC(SSLv23_server_method) + RESOLVEFUNC(TLSv1_server_method) + #if OPENSSL_VERSION_NUMBER >= 0x10001000L +-- +2.11.0 + -- cgit v1.2.3