From 4d72c83364ca9686e6a6110ec653b5701b971253 Mon Sep 17 00:00:00 2001 From: Helio Chissini de Castro Date: Fri, 15 Jul 2016 16:12:04 +0200 Subject: [PATCH] - Update to Qt 5.7.0 --- .gitignore | 1 + ...erpret-data.l-0-field-of-XdndStatus-.patch | 37 -- ...Auto-detect-xcb-glx-also-with-xcb-qt.patch | 31 -- ...-drop-of-text-uri-list-and-text-html.patch | 78 ---- ...b-Fix-dropping-URL-on-Firefox-window.patch | 58 --- ...le-GLX-pbuffers-with-Chromium-in-VMs.patch | 37 -- ...-transient-parent-and-Qt-Window-flag.patch | 64 --- macros.qt5 | 35 -- ...tem-defines-from-the-compiler-itself.patch | 368 ------------------ qt5-qtbase.spec | 142 +++---- sources | 2 +- 11 files changed, 46 insertions(+), 807 deletions(-) delete mode 100644 0001-xcb-Properly-interpret-data.l-0-field-of-XdndStatus-.patch delete mode 100644 0011-XCB-Auto-detect-xcb-glx-also-with-xcb-qt.patch delete mode 100644 0032-xcb-Fix-drop-of-text-uri-list-and-text-html.patch delete mode 100644 0033-xcb-Fix-dropping-URL-on-Firefox-window.patch delete mode 100644 0148-xcb-Disable-GLX-pbuffers-with-Chromium-in-VMs.patch delete mode 100644 0155-xcb-Fix-transient-parent-and-Qt-Window-flag.patch delete mode 100644 macros.qt5 delete mode 100644 moc-get-the-system-defines-from-the-compiler-itself.patch diff --git a/.gitignore b/.gitignore index 4fbb1c0..ab64a62 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /sources /qtbase-opensource-src-5.6.0.tar.xz /qtbase-opensource-src-5.6.1.tar.xz +/qtbase-opensource-src-5.7.0.tar.xz diff --git a/0001-xcb-Properly-interpret-data.l-0-field-of-XdndStatus-.patch b/0001-xcb-Properly-interpret-data.l-0-field-of-XdndStatus-.patch deleted file mode 100644 index c0c3bc1..0000000 --- a/0001-xcb-Properly-interpret-data.l-0-field-of-XdndStatus-.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 46f1c4c86bbfe7b6917907700bec998626ad4a8b Mon Sep 17 00:00:00 2001 -From: Alexander Volkov -Date: Wed, 11 May 2016 18:42:24 +0300 -Subject: [PATCH 001/178] xcb: Properly interpret data.l[0] field of XdndStatus - message - -The standard https://freedesktop.org/wiki/Specifications/XDND/ -states: "In order for the proxy window to behave correctly, the -appropriate field of the client messages, window or data.l[0], -must contain the ID of the window in which the mouse is located, -not the proxy window that is receiving the messages." - -So compare it with the current target window instead of the -current proxy window. - -Change-Id: Ie31fd3aeadebcf5a9be7b9a9194f35a4ec7bdebb -Reviewed-by: Lars Knoll ---- - src/plugins/platforms/xcb/qxcbdrag.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/plugins/platforms/xcb/qxcbdrag.cpp b/src/plugins/platforms/xcb/qxcbdrag.cpp -index 6fa5dfa..f93e420 100644 ---- a/src/plugins/platforms/xcb/qxcbdrag.cpp -+++ b/src/plugins/platforms/xcb/qxcbdrag.cpp -@@ -829,7 +829,7 @@ void QXcbDrag::handle_xdnd_status(const xcb_client_message_event_t *event) - DEBUG("xdndHandleStatus"); - waiting_for_status = false; - // ignore late status messages -- if (event->data.data32[0] && event->data.data32[0] != current_proxy_target) -+ if (event->data.data32[0] && event->data.data32[0] != current_target) - return; - - const bool dropPossible = event->data.data32[1]; --- -2.7.4 - diff --git a/0011-XCB-Auto-detect-xcb-glx-also-with-xcb-qt.patch b/0011-XCB-Auto-detect-xcb-glx-also-with-xcb-qt.patch deleted file mode 100644 index edaccef..0000000 --- a/0011-XCB-Auto-detect-xcb-glx-also-with-xcb-qt.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 2852a8b87e3a8ed95b72d26b0e180b7fd4491cf3 Mon Sep 17 00:00:00 2001 -From: Gabriel de Dietrich -Date: Fri, 26 Feb 2016 11:53:01 -0800 -Subject: [PATCH 011/178] XCB: Auto-detect xcb-glx also with xcb-qt - -Task-number: QTBUG-43784 -Change-Id: Iaa0388e34900f6241db8cd864caed4fb6fc32819 -Reviewed-by: Laszlo Agocs ---- - configure | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/configure b/configure -index ce5b9c2..a481981 100755 ---- a/configure -+++ b/configure -@@ -5555,6 +5555,11 @@ if [ "$CFG_XCB" != "no" ]; then - - if [ "$CFG_XCB" = "qt" ]; then - QT_CONFIG="$QT_CONFIG xcb-qt" -+ -+ if compileTest qpa/xcb-glx "xcb-glx" $QMAKE_CFLAGS_XCB $QMAKE_LIBS_XCB; then -+ CFG_XCB_GLX=yes -+ QT_CONFIG="$QT_CONFIG xcb-glx" -+ fi - else - CFG_XCB="system" - if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists "xcb >= 1.5" 2>/dev/null; then --- -2.7.4 - diff --git a/0032-xcb-Fix-drop-of-text-uri-list-and-text-html.patch b/0032-xcb-Fix-drop-of-text-uri-list-and-text-html.patch deleted file mode 100644 index db96ec5..0000000 --- a/0032-xcb-Fix-drop-of-text-uri-list-and-text-html.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 1108291e1a2e7de23440c2b36b2fd31010ae3f51 Mon Sep 17 00:00:00 2001 -From: Urs Fleisch -Date: Tue, 3 May 2016 20:01:01 +0200 -Subject: [PATCH 032/178] xcb: Fix drop of text/uri-list and text/html. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -When dropping URLs from Firefox or Chrome, the contents are encoded as -UTF16, but not correctly decoded. Moreover, the special handling of -"text/x-moz-url" drops does not work because this format is converted to -"text/uri-list" before. This fixes the handling for URL list and also -for UTF16 "text/html". - -Task-number: QTBUG-47981 -Change-Id: I1153f21ede07b2bfe4d104e0fe8bc8487ec5c165 -Reviewed-by: Błażej Szczygieł -Reviewed-by: Shawn Rutledge ---- - src/plugins/platforms/xcb/qxcbmime.cpp | 42 +++++++++++++++++++++++++--------- - 1 file changed, 31 insertions(+), 11 deletions(-) - -diff --git a/src/plugins/platforms/xcb/qxcbmime.cpp b/src/plugins/platforms/xcb/qxcbmime.cpp -index eeac561..cef2210 100644 ---- a/src/plugins/platforms/xcb/qxcbmime.cpp -+++ b/src/plugins/platforms/xcb/qxcbmime.cpp -@@ -182,17 +182,37 @@ QVariant QXcbMime::mimeConvertToFormat(QXcbConnection *connection, xcb_atom_t a, - a == connection->atom(QXcbAtom::TEXT)) - return QString::fromLatin1(data); - } -- -- // special case for uri types -- if (format == QLatin1String("text/uri-list")) { -- if (atomName == QLatin1String("text/x-moz-url")) { -- // we expect this as utf16 -- // the first part is a url that should only contain ascci char -- // so it should be safe to check that the second char is 0 -- // to verify that it is utf16 -- if (data.size() > 1 && data.at(1) == 0) -- return QString::fromRawData((const QChar *)data.constData(), -- data.size() / 2).split(QLatin1Char('\n')).first().toLatin1(); -+ // If data contains UTF16 text, convert it to a string. -+ // Firefox uses UTF16 without BOM for text/x-moz-url, "text/html", -+ // Google Chrome uses UTF16 without BOM for "text/x-moz-url", -+ // UTF16 with BOM for "text/html". -+ if ((format == QLatin1String("text/html") || format == QLatin1String("text/uri-list")) -+ && data.size() > 1) { -+ const quint8 byte0 = data.at(0); -+ const quint8 byte1 = data.at(1); -+ if ((byte0 == 0xff && byte1 == 0xfe) || (byte0 == 0xfe && byte1 == 0xff) -+ || (byte0 != 0 && byte1 == 0) || (byte0 == 0 && byte1 != 0)) { -+ const QString str = QString::fromUtf16( -+ reinterpret_cast<const ushort *>(data.constData()), data.size() / 2); -+ if (!str.isNull()) { -+ if (format == QLatin1String("text/uri-list")) { -+ const QStringList urls = str.split(QLatin1Char('\n')); -+ QList<QVariant> list; -+ foreach (const QString &s, urls) { -+ const QUrl url(s.trimmed()); -+ if (url.isValid()) -+ list.append(url); -+ } -+ // We expect "text/x-moz-url" as <url><space><title>. -+ // The atomName variable is not used because mimeAtomToString() -+ // converts "text/x-moz-url" to "text/uri-list". -+ if (!list.isEmpty() && connection->atomName(a) == "text/x-moz-url") -+ return list.first(); -+ return list; -+ } else { -+ return str; -+ } -+ } - } - } - --- -2.7.4 - diff --git a/0033-xcb-Fix-dropping-URL-on-Firefox-window.patch b/0033-xcb-Fix-dropping-URL-on-Firefox-window.patch deleted file mode 100644 index c48076a..0000000 --- a/0033-xcb-Fix-dropping-URL-on-Firefox-window.patch +++ /dev/null @@ -1,58 +0,0 @@ -From f162e29acca99aaab173fb323d112aad9ec6c2b5 Mon Sep 17 00:00:00 2001 -From: Urs Fleisch <ufleisch@users.sourceforge.net> -Date: Wed, 4 May 2016 19:47:16 +0200 -Subject: [PATCH 033/178] xcb: Fix dropping URL on Firefox window. - -When a URL is dropped on a Firefox window, the "text/x-moz-url" data -takes precedence over the "text/uri-list". The "text/x-moz-url" is -interpreted as UTF16, however, the data from Qt 5 applications is not -in the correct format. The code to create correct UTF16 data exists, -but it is not called for two reasons: The atomName will never be -"text/x-moz-url" because it is changed to "text/uri-list" by -mimeAtomToString() and the InternalMimeData::hasFormatHelper() case is -already handled above and the else part will never be considered. -This patch fixes the check and brings it into the right order. - -Task-number: QTBUG-49947 -Change-Id: I5ebd31914cc6c1417c513c1ff09e0e858a16915d -Reviewed-by: Dmitry Shachnev <mitya57@gmail.com> -Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com> ---- - src/plugins/platforms/xcb/qxcbmime.cpp | 19 ++++++++++--------- - 1 file changed, 10 insertions(+), 9 deletions(-) - -diff --git a/src/plugins/platforms/xcb/qxcbmime.cpp b/src/plugins/platforms/xcb/qxcbmime.cpp -index cef2210..7fea068 100644 ---- a/src/plugins/platforms/xcb/qxcbmime.cpp -+++ b/src/plugins/platforms/xcb/qxcbmime.cpp -@@ -111,17 +111,18 @@ bool QXcbMime::mimeDataForAtom(QXcbConnection *connection, xcb_atom_t a, QMimeDa - QString atomName = mimeAtomToString(connection, a); - if (QInternalMimeData::hasFormatHelper(atomName, mimeData)) { - *data = QInternalMimeData::renderDataHelper(atomName, mimeData); -- if (atomName == QLatin1String("application/x-color")) -+ // mimeAtomToString() converts "text/x-moz-url" to "text/uri-list", -+ // so QXcbConnection::atomName() has to be used. -+ if (atomName == QLatin1String("text/uri-list") -+ && connection->atomName(a) == "text/x-moz-url") { -+ const QByteArray uri = data->split('\n').first(); -+ QString mozUri = QString::fromLatin1(uri, uri.size()); -+ mozUri += QLatin1Char('\n'); -+ *data = QByteArray(reinterpret_cast<const char *>(mozUri.utf16()), -+ mozUri.length() * 2); -+ } else if (atomName == QLatin1String("application/x-color")) - *dataFormat = 16; - ret = true; -- } else if (atomName == QLatin1String("text/x-moz-url") && -- QInternalMimeData::hasFormatHelper(QLatin1String("text/uri-list"), mimeData)) { -- QByteArray uri = QInternalMimeData::renderDataHelper( -- QLatin1String("text/uri-list"), mimeData).split('\n').first(); -- QString mozUri = QString::fromLatin1(uri, uri.size()); -- mozUri += QLatin1Char('\n'); -- *data = QByteArray(reinterpret_cast<const char *>(mozUri.utf16()), mozUri.length() * 2); -- ret = true; - } else if ((a == XCB_ATOM_PIXMAP || a == XCB_ATOM_BITMAP) && mimeData->hasImage()) { - ret = true; - } --- -2.7.4 - diff --git a/0148-xcb-Disable-GLX-pbuffers-with-Chromium-in-VMs.patch b/0148-xcb-Disable-GLX-pbuffers-with-Chromium-in-VMs.patch deleted file mode 100644 index 3df92a5..0000000 --- a/0148-xcb-Disable-GLX-pbuffers-with-Chromium-in-VMs.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 76810e1495b65a09e9abd6164639e0caf34d61b8 Mon Sep 17 00:00:00 2001 -From: Laszlo Agocs <laszlo.agocs@theqtcompany.com> -Date: Fri, 20 May 2016 14:52:18 +0200 -Subject: [PATCH 148/178] xcb: Disable GLX pbuffers with Chromium in VMs -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Change-Id: I474e4a4ce424a92b46381eb26aeda811ed059819 -Task-number: QTCREATORBUG-16252 -Task-number: QTCREATORBUG-14937 -Reviewed-by: Błażej Szczygieł <spaz16@wp.pl> -Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io> ---- - .../platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp -index a3a8aa2..55d0ff3 100644 ---- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp -+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp -@@ -201,8 +201,10 @@ QPlatformOffscreenSurface *QXcbGlxIntegration::createPlatformOffscreenSurface(QO - display = static_cast<Display *>(m_connection->xlib_display()); - #endif - const char *glxvendor = glXGetClientString(display, GLX_VENDOR); -- if (glxvendor && !strcmp(glxvendor, "ATI")) -- glxPbufferUsable = false; -+ if (glxvendor) { -+ if (!strcmp(glxvendor, "ATI") || !strcmp(glxvendor, "Chromium")) -+ glxPbufferUsable = false; -+ } - } - if (glxPbufferUsable) - return new QGLXPbuffer(surface); --- -2.7.4 - diff --git a/0155-xcb-Fix-transient-parent-and-Qt-Window-flag.patch b/0155-xcb-Fix-transient-parent-and-Qt-Window-flag.patch deleted file mode 100644 index 3157aac..0000000 --- a/0155-xcb-Fix-transient-parent-and-Qt-Window-flag.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 4762fabce16c611f12542a48b0dd31b3cec8e530 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?B=C5=82a=C5=BCej=20Szczygie=C5=82?= <spaz16@wp.pl> -Date: Thu, 14 Apr 2016 13:20:23 +0200 -Subject: [PATCH 155/178] xcb: Fix transient parent and "Qt::Window" flag - -Don't set transient parent property when Qt::Window flag is set. -Delete transient parent property if a window doesn't have a transient parent. -Force setting standard window flags for Qt::Window only if there are no other -flags. - -Amends 98c10a02c5b77e023471ad6993dc66b013889cfb - -Task-number: QTBUG-52550 -Change-Id: I68ee715b632487e9dd0e7ffbbfc0c2cdd0f0e151 -Reviewed-by: Dmitry Shachnev <mitya57@gmail.com> -Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> ---- - src/plugins/platforms/xcb/qxcbwindow.cpp | 16 ++++++++++------ - 1 file changed, 10 insertions(+), 6 deletions(-) - -diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp -index 429ba8d..0c2f0d7 100644 ---- a/src/plugins/platforms/xcb/qxcbwindow.cpp -+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp -@@ -821,9 +821,9 @@ void QXcbWindow::show() - propagateSizeHints(); - - // update WM_TRANSIENT_FOR -- const QWindow *tp = window()->transientParent(); -- if (isTransient(window()) || tp != 0) { -- xcb_window_t transientXcbParent = 0; -+ xcb_window_t transientXcbParent = 0; -+ if (isTransient(window())) { -+ const QWindow *tp = window()->transientParent(); - if (tp && tp->handle()) - transientXcbParent = static_cast<const QXcbWindow *>(tp->handle())->winId(); - // Default to client leader if there is no transient parent, else modal dialogs can -@@ -836,6 +836,8 @@ void QXcbWindow::show() - 1, &transientXcbParent)); - } - } -+ if (!transientXcbParent) -+ Q_XCB_CALL(xcb_delete_property(xcb_connection(), m_window, XCB_ATOM_WM_TRANSIENT_FOR)); - - // update _MOTIF_WM_HINTS - updateMotifWmHintsBeforeMap(); -@@ -1195,9 +1197,11 @@ void QXcbWindow::setMotifWindowFlags(Qt::WindowFlags flags) - mwmhints.flags |= MWM_HINTS_DECORATIONS; - - bool customize = flags & Qt::CustomizeWindowHint; -- if (type == Qt::Window && !customize) -- flags |= Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint; -- -+ if (type == Qt::Window && !customize) { -+ const Qt::WindowFlags defaultFlags = Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint; -+ if (!(flags & defaultFlags)) -+ flags |= defaultFlags; -+ } - if (!(flags & Qt::FramelessWindowHint) && !(customize && !(flags & Qt::WindowTitleHint))) { - mwmhints.decorations |= MWM_DECOR_BORDER; - mwmhints.decorations |= MWM_DECOR_RESIZEH; --- -2.7.4 - diff --git a/macros.qt5 b/macros.qt5 deleted file mode 100644 index 9fb7807..0000000 --- a/macros.qt5 +++ /dev/null @@ -1,35 +0,0 @@ -%_qt5 @@NAME@@ -%_qt5_epoch @@EPOCH@@ -%_qt5_version @@VERSION@@ -%_qt5_evr @@EVR@@ -%_qt5_prefix %{_libdir}/qt5 -%_qt5_archdatadir %{_qt5_prefix} -%_qt5_bindir %{_qt5_prefix}/bin -%_qt5_datadir %{_datadir}/qt5 -%_qt5_docdir %{_docdir}/qt5 -%_qt5_examplesdir %{_qt5_prefix}/examples -%_qt5_headerdir %{_includedir}/qt5 -%_qt5_importdir %{_qt5_archdatadir}/imports -%_qt5_libdir %{_libdir} -%_qt5_libexecdir %{_qt5_archdatadir}/libexec -%_qt5_plugindir %{_qt5_archdatadir}/plugins -%_qt5_qmake %{_qt5_bindir}/qmake -%_qt5_settingsdir %{_sysconfdir}/xdg -%_qt5_sysconfdir %{_qt5_settingsdir} -%_qt5_translationdir %{_datadir}/qt5/translations - -%_qt5_cflags %{nil}@@QT5_CFLAGS@@ -%_qt5_cxxflags %{nil}@@QT5_CXXFLAGS@@ -%_qt5_ldflags %{nil}%{?__global_ldflags} @@QT5_RPM_LD_FLAGS@@ -%_qt5_optflags %{optflags} @@QT5_RPM_OPT_FLAGS@@ - -%_qt5_qmake_flags \\\ - QMAKE_CFLAGS_DEBUG="${CFLAGS:-%{_qt5_optflags} %{?_qt5_cflags}}" \\\ - QMAKE_CFLAGS_RELEASE="${CFLAGS:-%{_qt5_optflags} %{?_qt5_cflags}}" \\\ - QMAKE_CXXFLAGS_DEBUG="${CXXFLAGS:-%{_qt5_optflags} %{?_qt5_cxxflags}}" \\\ - QMAKE_CXXFLAGS_RELEASE="${CXXFLAGS:-%{_qt5_optflags} %{?_qt5_cxxflags}}" \\\ - QMAKE_LFLAGS_DEBUG="${LDFLAGS:-%{_qt5_ldflags}}" \\\ - QMAKE_LFLAGS_RELEASE="${LDFLAGS:-%{_qt5_ldflags}}" \\\ - QMAKE_STRIP= - -%qmake_qt5 %{_qt5_qmake} %{?_qt5_qmake_flags} diff --git a/moc-get-the-system-defines-from-the-compiler-itself.patch b/moc-get-the-system-defines-from-the-compiler-itself.patch deleted file mode 100644 index 3912cc7..0000000 --- a/moc-get-the-system-defines-from-the-compiler-itself.patch +++ /dev/null @@ -1,368 +0,0 @@ -From fa0d02eedcacc22db1026b902801b29176755362 Mon Sep 17 00:00:00 2001 -From: Thiago Macieira <thiago.macieira@intel.com> -Date: Fri, 21 Aug 2015 17:08:19 -0700 -Subject: [PATCH] moc: get the system #defines from the compiler itself - -In order for moc to properly parse #ifdefs and family, we've had -QMAKE_COMPILER_DEFINES as a list of pre-defined macros from the -compiler. That list is woefully incomplete. - -Instead, let's simply ask the compiler for the list. With GCC and -family, we use the -dM flag while preprocessing. With ICC on Windows, -the flag gains an extra "Q" but is otherwise the same. For MSVC, it -requires using some undocumented switches and parsing environment -variables (I've tested MSVC 2012, 2013 and 2015). - -The new moc option is called --include to be similar to GCC's -include -option. It does more than just parse a list of pre-defined macros and -can be used to insert any sort of code that moc needs to parse prior to -the main file. - -Change-Id: I7de033f80b0e4431b7f1ffff13fca02dbb60a0a6 ---- - mkspecs/features/moc.prf | 31 +++++++++++++-- - qmake/main.cpp | 38 +++++++++++++++++++ - src/tools/moc/main.cpp | 16 +++++++- - src/tools/moc/preprocessor.cpp | 60 +++++++++++++++++------------- - src/tools/moc/preprocessor.h | 1 + - tests/auto/tools/moc/subdir/extradefines.h | 1 + - tests/auto/tools/moc/tst_moc.cpp | 42 +++++++++++++++++++++ - 7 files changed, 158 insertions(+), 31 deletions(-) - create mode 100644 tests/auto/tools/moc/subdir/extradefines.h - -diff --git a/mkspecs/features/moc.prf b/mkspecs/features/moc.prf -index c0b5682..af885c3 100644 ---- a/mkspecs/features/moc.prf -+++ b/mkspecs/features/moc.prf -@@ -24,8 +24,25 @@ win32:count(MOC_INCLUDEPATH, 40, >) { - write_file($$absolute_path($$WIN_INCLUDETEMP, $$OUT_PWD), WIN_INCLUDETEMP_CONT)|error("Aborting.") - } - -+# QNX's compiler sets "gcc" config, but does not support the -dM option; -+# iOS builds are multi-arch, so this feature cannot possibly work. -+if(gcc|intel_icl|msvc):!rim_qcc:!ios { -+ moc_predefs.CONFIG = no_link -+ gcc: moc_predefs.commands = $$QMAKE_CXX $$QMAKE_CXXFLAGS -dM -E -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} -+ else:intel_icl: moc_predefs.commands = $$QMAKE_CXX $$QMAKE_CXXFLAGS -QdM -P -Fi${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} -+ else:msvc { -+ # make sure that our bin dir is first in path, so qmake is found -+ moc_predefs.commands = PATH $$shell_path($$[QT_INSTALL_BINS/src]);%PATH%& -+ moc_predefs.commands += $$QMAKE_CXX -Bxqmake $$QMAKE_CXXFLAGS -E ${QMAKE_FILE_IN} 2>NUL >${QMAKE_FILE_OUT} -+ } else: error("Oops, I messed up") -+ moc_predefs.output = $$MOC_DIR/moc_predefs.h -+ moc_predefs.input = MOC_PREDEF_FILE -+ silent: moc_predefs.commands = @echo generating $$moc_predefs.output$$escape_expand(\n\t)@$$moc_predefs.commands -+ QMAKE_EXTRA_COMPILERS += moc_predefs -+ MOC_PREDEF_FILE = $$[QT_HOST_DATA/src]/mkspecs/features/data/dummy.cpp -+} -+ - defineReplace(mocCmdBase) { -- RET = - !isEmpty(WIN_INCLUDETEMP) { - incvar = @$$WIN_INCLUDETEMP - } else { -@@ -34,7 +51,13 @@ defineReplace(mocCmdBase) { - incvar += -I$$shell_quote($$inc) - incvar += $$QMAKE_FRAMEWORKPATH_FLAGS - } -- RET += $$QMAKE_MOC $(DEFINES) $$join(QMAKE_COMPILER_DEFINES, " -D", -D) $$incvar $$QMAKE_MOC_OPTIONS -+ -+ RET = $$QMAKE_MOC $(DEFINES) -+ -+ isEmpty(MOC_PREDEF_FILE): RET += $$join(QMAKE_COMPILER_DEFINES, " -D", -D) -+ else: RET += --include $$moc_predefs.output -+ -+ RET += $$incvar $$QMAKE_MOC_OPTIONS - return($$RET) - } - -@@ -46,7 +69,7 @@ moc_header.output = $$MOC_DIR/$${QMAKE_H_MOD_MOC}${QMAKE_FILE_BASE}$${first(QMAK - moc_header.input = HEADERS - moc_header.variable_out = SOURCES - moc_header.name = MOC ${QMAKE_FILE_IN} --moc_header.depends += $$WIN_INCLUDETEMP -+moc_header.depends += $$WIN_INCLUDETEMP $$moc_predefs.output - silent:moc_header.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_header.commands - QMAKE_EXTRA_COMPILERS += moc_header - INCREDIBUILD_XGE += moc_header -@@ -58,7 +81,7 @@ moc_source.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_ - moc_source.output = $$MOC_DIR/$${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_EXT_CPP_MOC} - moc_source.input = SOURCES OBJECTIVE_SOURCES - moc_source.name = MOC ${QMAKE_FILE_IN} --moc_source.depends += $$WIN_INCLUDETEMP -+moc_source.depends += $$WIN_INCLUDETEMP $$moc_predefs.output - silent:moc_source.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_source.commands - QMAKE_EXTRA_COMPILERS += moc_source - INCREDIBUILD_XGE += moc_source -diff --git a/qmake/main.cpp b/qmake/main.cpp -index bde537d..e9b8bde 100644 ---- a/qmake/main.cpp -+++ b/qmake/main.cpp -@@ -1,6 +1,7 @@ - /**************************************************************************** - ** - ** Copyright (C) 2015 The Qt Company Ltd. -+** Copyright (C) 2015 Intel Corporation. - ** Contact: http://www.qt.io/licensing/ - ** - ** This file is part of the qmake application of the Qt Toolkit. -@@ -47,6 +48,10 @@ - #include <sys/types.h> - #include <sys/stat.h> - -+#ifdef Q_OS_WIN -+# include <qt_windows.h> -+#endif -+ - QT_BEGIN_NAMESPACE - - #ifdef Q_OS_WIN -@@ -246,6 +251,30 @@ static int doInstall(int argc, char **argv) - return 3; - } - -+static int dumpMacros(const wchar_t *cmdline) -+{ -+ // from http://stackoverflow.com/questions/3665537/how-to-find-out-cl-exes-built-in-macros -+ int argc; -+ wchar_t **argv = CommandLineToArgvW(cmdline, &argc); -+ if (!argv) -+ return 2; -+ for (int i = 0; i < argc; ++i) { -+ if (argv[i][0] != L'-' || argv[i][1] != 'D') -+ continue; -+ -+ wchar_t *value = wcschr(argv[i], L'='); -+ if (value) { -+ *value = 0; -+ ++value; -+ } else { -+ // point to the NUL at the end, so we don't print anything -+ value = argv[i] + wcslen(argv[i]); -+ } -+ wprintf(L"#define %Ls %Ls\n", argv[i] + 2, value); -+ } -+ return 0; -+} -+ - #endif // Q_OS_WIN - - /* This is to work around lame implementation on Darwin. It has been noted that the getpwd(3) function -@@ -280,6 +309,15 @@ int runQMake(int argc, char **argv) - // Workaround for inferior/missing command line tools on Windows: make our own! - if (argc >= 2 && !strcmp(argv[1], "-install")) - return doInstall(argc - 2, argv + 2); -+ -+ { -+ // Support running as Visual C++'s compiler -+ const wchar_t *cmdline = _wgetenv(L"MSC_CMD_FLAGS"); -+ if (!cmdline || !*cmdline) -+ cmdline = _wgetenv(L"MSC_IDE_FLAGS"); -+ if (cmdline && *cmdline) -+ return dumpMacros(cmdline); -+ } - #endif - - QMakeVfs vfs; -diff --git a/src/tools/moc/main.cpp b/src/tools/moc/main.cpp -index a5cbad7..d06335d 100644 ---- a/src/tools/moc/main.cpp -+++ b/src/tools/moc/main.cpp -@@ -259,6 +259,11 @@ int runMoc(int argc, char **argv) - prependIncludeOption.setValueName(QStringLiteral("file")); - parser.addOption(prependIncludeOption); - -+ QCommandLineOption includeOption(QStringLiteral("include")); -+ includeOption.setDescription(QStringLiteral("Parse <file> as an #include before the main source(s).")); -+ includeOption.setValueName(QStringLiteral("file")); -+ parser.addOption(includeOption); -+ - QCommandLineOption noNotesWarningsCompatOption(QStringLiteral("n")); - noNotesWarningsCompatOption.setDescription(QStringLiteral("Do not display notes (-nn) or warnings (-nw). Compatibility option.")); - noNotesWarningsCompatOption.setValueName(QStringLiteral("which")); -@@ -406,7 +411,16 @@ int runMoc(int argc, char **argv) - moc.includes = pp.includes; - - // 1. preprocess -- moc.symbols = pp.preprocessed(moc.filename, &in); -+ foreach (const QString &includeName, parser.values(includeOption)) { -+ QByteArray rawName = pp.resolveInclude(QFile::encodeName(includeName), moc.filename); -+ QFile f(QFile::decodeName(rawName)); -+ if (f.open(QIODevice::ReadOnly)) { -+ moc.symbols += Symbol(0, MOC_INCLUDE_BEGIN, rawName); -+ moc.symbols += pp.preprocessed(rawName, &f); -+ moc.symbols += Symbol(0, MOC_INCLUDE_END, rawName); -+ } -+ } -+ moc.symbols += pp.preprocessed(moc.filename, &in); - - if (!pp.preprocessOnly) { - // 2. parse -diff --git a/src/tools/moc/preprocessor.cpp b/src/tools/moc/preprocessor.cpp -index d036c40..70cf14a 100644 ---- a/src/tools/moc/preprocessor.cpp -+++ b/src/tools/moc/preprocessor.cpp -@@ -1001,6 +1001,37 @@ static void mergeStringLiterals(Symbols *_symbols) - } - } - -+QByteArray Preprocessor::resolveInclude(const QByteArray &include, const QByteArray &relativeTo) -+{ -+ // #### stringery -+ QFileInfo fi; -+ if (!relativeTo.isEmpty()) -+ fi.setFile(QFileInfo(QString::fromLocal8Bit(relativeTo.constData())).dir(), QString::fromLocal8Bit(include.constData())); -+ for (int j = 0; j < Preprocessor::includes.size() && !fi.exists(); ++j) { -+ const IncludePath &p = Preprocessor::includes.at(j); -+ if (p.isFrameworkPath) { -+ const int slashPos = include.indexOf('/'); -+ if (slashPos == -1) -+ continue; -+ QByteArray frameworkCandidate = include.left(slashPos); -+ frameworkCandidate.append(".framework/Headers/"); -+ fi.setFile(QString::fromLocal8Bit(QByteArray(p.path + '/' + frameworkCandidate).constData()), QString::fromLocal8Bit(include.mid(slashPos + 1).constData())); -+ } else { -+ fi.setFile(QString::fromLocal8Bit(p.path.constData()), QString::fromLocal8Bit(include.constData())); -+ } -+ // try again, maybe there's a file later in the include paths with the same name -+ // (186067) -+ if (fi.isDir()) { -+ fi = QFileInfo(); -+ continue; -+ } -+ } -+ -+ if (!fi.exists() || fi.isDir()) -+ return QByteArray(); -+ return fi.canonicalFilePath().toLocal8Bit(); -+} -+ - void Preprocessor::preprocess(const QByteArray &filename, Symbols &preprocessed) - { - currentFilenames.push(filename); -@@ -1021,33 +1052,9 @@ void Preprocessor::preprocess(const QByteArray &filename, Symbols &preprocessed) - continue; - until(PP_NEWLINE); - -- // #### stringery -- QFileInfo fi; -- if (local) -- fi.setFile(QFileInfo(QString::fromLocal8Bit(filename.constData())).dir(), QString::fromLocal8Bit(include.constData())); -- for (int j = 0; j < Preprocessor::includes.size() && !fi.exists(); ++j) { -- const IncludePath &p = Preprocessor::includes.at(j); -- if (p.isFrameworkPath) { -- const int slashPos = include.indexOf('/'); -- if (slashPos == -1) -- continue; -- QByteArray frameworkCandidate = include.left(slashPos); -- frameworkCandidate.append(".framework/Headers/"); -- fi.setFile(QString::fromLocal8Bit(QByteArray(p.path + '/' + frameworkCandidate).constData()), QString::fromLocal8Bit(include.mid(slashPos + 1).constData())); -- } else { -- fi.setFile(QString::fromLocal8Bit(p.path.constData()), QString::fromLocal8Bit(include.constData())); -- } -- // try again, maybe there's a file later in the include paths with the same name -- // (186067) -- if (fi.isDir()) { -- fi = QFileInfo(); -- continue; -- } -- } -- -- if (!fi.exists() || fi.isDir()) -+ include = resolveInclude(include, local ? filename : QByteArray()); -+ if (include.isNull()) - continue; -- include = fi.canonicalFilePath().toLocal8Bit(); - - if (Preprocessor::preprocessedIncludes.contains(include)) - continue; -@@ -1202,6 +1209,7 @@ Symbols Preprocessor::preprocessed(const QByteArray &filename, QFile *file) - input = cleaned(input); - - // phase 2: tokenize for the preprocessor -+ index = 0; - symbols = tokenize(input); - - #if 0 -diff --git a/src/tools/moc/preprocessor.h b/src/tools/moc/preprocessor.h -index 9c81f86..d876caf 100644 ---- a/src/tools/moc/preprocessor.h -+++ b/src/tools/moc/preprocessor.h -@@ -67,6 +67,7 @@ public: - QList<QByteArray> frameworks; - QSet<QByteArray> preprocessedIncludes; - Macros macros; -+ QByteArray resolveInclude(const QByteArray &filename, const QByteArray &relativeTo); - Symbols preprocessed(const QByteArray &filename, QFile *device); - - void parseDefineArguments(Macro *m); -diff --git a/tests/auto/tools/moc/subdir/extradefines.h b/tests/auto/tools/moc/subdir/extradefines.h -new file mode 100644 -index 0000000..e7888ce ---- /dev/null -+++ b/tests/auto/tools/moc/subdir/extradefines.h -@@ -0,0 +1 @@ -+#define FOO 1 -diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp -index fa1b68b..1d6a911 100644 ---- a/tests/auto/tools/moc/tst_moc.cpp -+++ b/tests/auto/tools/moc/tst_moc.cpp -@@ -552,6 +552,8 @@ private slots: - void frameworkSearchPath(); - void cstyleEnums(); - void defineMacroViaCmdline(); -+ void defineMacroViaForcedInclude(); -+ void defineMacroViaForcedIncludeRelative(); - void specifyMetaTagsFromCmdline(); - void invokable(); - void singleFunctionKeywordSignalAndSlot(); -@@ -1219,6 +1221,46 @@ void tst_Moc::defineMacroViaCmdline() - #endif - } - -+void tst_Moc::defineMacroViaForcedInclude() -+{ -+#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(QT_NO_PROCESS) -+ QProcess proc; -+ -+ QStringList args; -+ args << "--include" << m_sourceDirectory + QLatin1String("/subdir/extradefines.h"); -+ args << m_sourceDirectory + QStringLiteral("/macro-on-cmdline.h"); -+ -+ proc.start(m_moc, args); -+ QVERIFY(proc.waitForFinished()); -+ QCOMPARE(proc.exitCode(), 0); -+ QCOMPARE(proc.readAllStandardError(), QByteArray()); -+ QByteArray mocOut = proc.readAllStandardOutput(); -+ QVERIFY(!mocOut.isEmpty()); -+#else -+ QSKIP("Only tested on linux/gcc"); -+#endif -+} -+ -+void tst_Moc::defineMacroViaForcedIncludeRelative() -+{ -+#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(QT_NO_PROCESS) -+ QProcess proc; -+ -+ QStringList args; -+ args << "--include" << QStringLiteral("extradefines.h") << "-I" + m_sourceDirectory + "/subdir"; -+ args << m_sourceDirectory + QStringLiteral("/macro-on-cmdline.h"); -+ -+ proc.start(m_moc, args); -+ QVERIFY(proc.waitForFinished()); -+ QCOMPARE(proc.exitCode(), 0); -+ QCOMPARE(proc.readAllStandardError(), QByteArray()); -+ QByteArray mocOut = proc.readAllStandardOutput(); -+ QVERIFY(!mocOut.isEmpty()); -+#else -+ QSKIP("Only tested on linux/gcc"); -+#endif -+} -+ - // tst_Moc::specifyMetaTagsFromCmdline() - // plugin_metadata.h contains a plugin which we register here. Since we're not building this - // application as a plugin, we need top copy some of the initializer code found in qplugin.h: --- -1.9.3 - diff --git a/qt5-qtbase.spec b/qt5-qtbase.spec index ee2212b..07940f3 100644 --- a/qt5-qtbase.spec +++ b/qt5-qtbase.spec @@ -1,3 +1,5 @@ +#define prerelease rc + # See http://bugzilla.redhat.com/223663 %define multilib_archs x86_64 %{ix86} %{?mips} ppc64 ppc s390x s390 sparc64 sparcv9 %define multilib_basearchs x86_64 %{?mips64} ppc64 s390x sparc64 @@ -11,9 +13,13 @@ %endif %endif -%global qt_module qtbase +%define platform linux-g++ -%global rpm_macros_dir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d) +%if 0%{?use_clang} +%define platform linux-clang +%endif + +%global qt_module qtbase ## set to 1 to enable bootstrap %global bootstrap 0 @@ -30,7 +36,6 @@ %if 0%{?fedora} > 23 || 0%{?rhel} > 6 %global journald -journald -BuildRequires: perl-generators BuildRequires: pkgconfig(libsystemd) %endif @@ -52,12 +57,10 @@ BuildRequires: pkgconfig(libsystemd) %global tests 1 %endif -#define prerelease rc - -Summary: Qt5 - QtBase components Name: qt5-qtbase -Version: 5.6.1 -Release: 3%{?prerelease:.%{prerelease}}%{?dist} +Summary: Qt5 - QtBase components +Version: 5.7.0 +Release: 2%{?dist} # See LGPL_EXCEPTIONS.txt, for exception details License: LGPLv2 with exceptions or GPLv3 with exceptions @@ -94,47 +97,16 @@ Patch52: qtbase-opensource-src-5.6.0-moc_WORDSIZE.patch # arm patch Patch54: qtbase-opensource-src-5.6.0-arm.patch -# recently passed code review, not integrated yet -# https://codereview.qt-project.org/126102/ -Patch60: moc-get-the-system-defines-from-the-compiler-itself.patch - # drop -O3 and make -O2 by default Patch61: qt5-qtbase-cxxflag.patch ## upstream patches -Patch101: 0001-xcb-Properly-interpret-data.l-0-field-of-XdndStatus-.patch -Patch111: 0011-XCB-Auto-detect-xcb-glx-also-with-xcb-qt.patch -Patch132: 0032-xcb-Fix-drop-of-text-uri-list-and-text-html.patch -Patch133: 0033-xcb-Fix-dropping-URL-on-Firefox-window.patch -Patch148: 0148-xcb-Disable-GLX-pbuffers-with-Chromium-in-VMs.patch -Patch155: 0155-xcb-Fix-transient-parent-and-Qt-Window-flag.patch - -# macros, be mindful to keep sync'd with macros.qt5 -Source10: macros.qt5 -%define _qt5 %{name} -%define _qt5_prefix %{_libdir}/qt5 -%define _qt5_archdatadir %{_libdir}/qt5 -# -devel bindir items (still) conflict with qt4 -# at least until this is all implemented, -# http://lists.qt-project.org/pipermail/development/2012-November/007990.html -%define _qt5_bindir %{_qt5_prefix}/bin -%define _qt5_datadir %{_datadir}/qt5 -%define _qt5_docdir %{_docdir}/qt5 -%define _qt5_examplesdir %{_qt5_prefix}/examples -%define _qt5_headerdir %{_includedir}/qt5 -%define _qt5_importdir %{_qt5_archdatadir}/imports -%define _qt5_libdir %{_libdir} -%define _qt5_libexecdir %{_qt5_archdatadir}/libexec -%define _qt5_plugindir %{_qt5_archdatadir}/plugins -%define _qt5_settingsdir %{_sysconfdir}/xdg -%define _qt5_sysconfdir %{_qt5_settingsdir} -%define _qt5_translationdir %{_datadir}/qt5/translations # Do not check any files in %%{_qt5_plugindir}/platformthemes/ for requires. # Those themes are there for platform integration. If the required libraries are # not there, the platform to integrate with isn't either. Then Qt will just # silently ignore the plugin that fails to load. Thus, there is no need to let -# RPM drag in gtk2 as a dependency for the GTK+ 2 dialog support. +# RPM drag in gtk3 as a dependency for the GTK+3 dialog support. %global __requires_exclude_from ^%{_qt5_plugindir}/platformthemes/.*$ # for %%check @@ -146,6 +118,9 @@ BuildRequires: libjpeg-devel BuildRequires: libmng-devel BuildRequires: libtiff-devel BuildRequires: pkgconfig(alsa) +%if 0%{?use_clang} +BuildRequires: clang >= 3.7.0 +%endif # http://bugzilla.redhat.com/1196359 %if 0%{?fedora} || 0%{?rhel} > 6 %global dbus -dbus-linked @@ -155,7 +130,7 @@ BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(fontconfig) BuildRequires: pkgconfig(gl) BuildRequires: pkgconfig(glib-2.0) -BuildRequires: pkgconfig(gtk+-2.0) +BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(libproxy-1.0) # xcb-sm BuildRequires: pkgconfig(ice) pkgconfig(sm) @@ -200,6 +175,7 @@ BuildRequires: libicu-devel %endif BuildRequires: pkgconfig(xcb) pkgconfig(xcb-glx) pkgconfig(xcb-icccm) pkgconfig(xcb-image) pkgconfig(xcb-keysyms) pkgconfig(xcb-renderutil) BuildRequires: pkgconfig(zlib) +BuildRequires: qt5-rpm-macros >= %{version} %if 0%{?tests} BuildRequires: dbus-x11 @@ -249,6 +225,9 @@ Requires: pkgconfig(egl) %endif Requires: pkgconfig(gl) Requires: qt5-rpm-macros +%if 0%{?use_clang} +Requires: clang >= 3.7.0 +%endif %description devel %{summary}. @@ -260,6 +239,7 @@ Requires: %{name} = %{version}-%{release} BuildRequires: qt5-qhelpgenerator BuildRequires: qt5-qdoc BuildArch: noarch + %description doc %{summary}. %endif @@ -267,6 +247,7 @@ BuildArch: noarch %package examples Summary: Programming examples for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} + %description examples %{summary}. @@ -280,6 +261,7 @@ Requires: pkgconfig(libinput) Requires: pkgconfig(xkbcommon) %endif Requires: pkgconfig(zlib) + %description static %{summary}. @@ -337,18 +319,6 @@ Requires: glx-utils %description gui Qt5 libraries used for drawing widgets and OpenGL items. -%package -n qt5-rpm-macros -Summary: RPM macros for Qt5 -%if 0%{?fedora} > 22 && 0%{?inject_optflags} -# https://bugzilla.redhat.com/show_bug.cgi?id=1248174 -Requires: redhat-rpm-config -%endif -# when qt5-rpm-macros was split out -Conflicts: qt5-qtbase-devel < 5.6.0-0.23 -BuildArch: noarch -%description -n qt5-rpm-macros -RPM macros for building Qt5 packages. - %prep %setup -q -n %{qt_module}-opensource-src-%{version}%{?prerelease:-%{prerelease}} @@ -358,24 +328,10 @@ RPM macros for building Qt5 packages. %patch52 -p1 -b .moc_WORDSIZE %patch54 -p1 -b .arm -%patch60 -p1 -b .moc_system_defines %patch61 -p1 -b .qt5-qtbase-cxxflag -%patch101 -p1 -b .0001-xcb -%patch111 -p1 -b .0011 -%patch132 -p1 -b .0032 -%patch133 -p1 -b .0033 -%patch148 -p1 -b .0148 -%patch155 -p1 -b .0155 - -%define platform linux-g++ - %if 0%{?inject_optflags} ## adjust $RPM_OPT_FLAGS -# remove -fexceptions -RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed 's|-fexceptions||g'` -# these flags are for qtbase build only, no need to propogate elsewhere -#RPM_OPT_FLAGS="$RPM_OPT_FLAGS %{?qt5_deprecated_flag} %{?qt5_arm_flag}" %patch2 -p1 -b .multilib_optflags # drop backup file(s), else they get installed too, http://bugzilla.redhat.com/639463 @@ -391,10 +347,6 @@ sed -i -e "s|^\(QMAKE_LFLAGS_RELEASE.*\)|\1 $RPM_LD_FLAGS|" \ sed -i -e 's|^\(QMAKE_STRIP.*=\).*$|\1|g' mkspecs/common/linux.conf %endif -%if 0%{?prerelease} -bin/syncqt.pl -version %{version} -%endif - # move some bundled libs to ensure they're not accidentally used pushd src/3rdparty mkdir UNUSED @@ -423,6 +375,10 @@ test -x configure || chmod +x configure RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed 's|-fexceptions||g'` RPM_OPT_FLAGS="$RPM_OPT_FLAGS %{?qt5_arm_flag} %{?qt5_deprecated_flag} %{?qt5_null_flag}" +%if 0%{?use_clang} +RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed 's|-fno-delete-null-pointer-checks||g'` +%endif + export CFLAGS="$CFLAGS $RPM_OPT_FLAGS" export CXXFLAGS="$CXXFLAGS $RPM_OPT_FLAGS" export LDFLAGS="$LDFLAGS $RPM_LD_FLAGS" @@ -451,7 +407,7 @@ export MAKEFLAGS="%{?_smp_mflags}" %{?dbus}%{!?dbus:-dbus-runtime} \ -fontconfig \ -glib \ - -gtkstyle \ + -gtk \ %{?ibase} \ -iconv \ -icu \ @@ -531,23 +487,9 @@ translationdir=%{_qt5_translationdir} Name: Qt5 Description: Qt5 Configuration -Version: %{version} +Version: 5.6.0 EOF -# rpm macros -install -p -m644 -D %{SOURCE10} \ - %{buildroot}%{rpm_macros_dir}/macros.qt5 -sed -i \ - -e "s|@@NAME@@|%{name}|g" \ - -e "s|@@EPOCH@@|%{?epoch}%{!?epoch:0}|g" \ - -e "s|@@VERSION@@|%{version}|g" \ - -e "s|@@EVR@@|%{?epoch:%{epoch:}}%{version}-%{release}|g" \ - -e "s|@@QT5_CFLAGS@@|%{?qt5_cflags}|g" \ - -e "s|@@QT5_CXXFLAGS@@|%{?qt5_cxxflags}|g" \ - -e "s|@@QT5_RPM_LD_FLAGS@@|%{?qt5_rpm_ld_flags}|g" \ - -e "s|@@QT5_RPM_OPT_FLAGS@@|%{?qt5_rpm_opt_flags} %{?qt5_null_flag}|g" \ - %{buildroot}%{rpm_macros_dir}/macros.qt5 - # create/own dirs mkdir -p %{buildroot}{%{_qt5_archdatadir}/mkspecs/modules,%{_qt5_importdir},%{_qt5_libexecdir},%{_qt5_plugindir}/{designer,iconengines,script,styles},%{_qt5_translationdir}} mkdir -p %{buildroot}%{_sysconfdir}/xdg/QtProject @@ -844,6 +786,8 @@ fi %if 0%{?egl} %{_qt5_libdir}/libQt5EglDeviceIntegration.prl %{_qt5_libdir}/libQt5EglDeviceIntegration.so +%{_qt5_libdir}/libQt5EglFsKmsSupport.prl +%{_qt5_libdir}/libQt5EglFsKmsSupport.so %endif @@ -929,6 +873,7 @@ fi %{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QIbusPlatformInputContextPlugin.cmake %if 0%{?egl} %{_qt5_libdir}/libQt5EglDeviceIntegration.so.5* +%{_qt5_libdir}/libQt5EglFsKmsSupport.so.5* %{_qt5_plugindir}/platforms/libqeglfs.so %{_qt5_plugindir}/platforms/libqminimalegl.so %dir %{_qt5_plugindir}/egldeviceintegrations/ @@ -937,9 +882,10 @@ fi %{_qt5_plugindir}/xcbglintegrations/libqxcb-egl-integration.so %{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QMinimalEglIntegrationPlugin.cmake %{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QEglFSIntegrationPlugin.cmake -%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QEglFSKmsIntegrationPlugin.cmake %{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QEglFSX11IntegrationPlugin.cmake +%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QEglFSKmsGbmIntegrationPlugin.cmake %{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QXcbEglIntegrationPlugin.cmake +%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QGtk3ThemePlugin.cmake %endif %{_qt5_plugindir}/platforms/libqlinuxfb.so %{_qt5_plugindir}/platforms/libqminimal.so @@ -951,24 +897,24 @@ fi %{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QXcbIntegrationPlugin.cmake %{_qt5_plugindir}/xcbglintegrations/libqxcb-glx-integration.so %{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QXcbGlxIntegrationPlugin.cmake -%{_qt5_plugindir}/platformthemes/libqgtk2.so -%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QGtk2ThemePlugin.cmake +%{_qt5_plugindir}/platformthemes/libqgtk3.so +%{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QGtk3ThemePlugin.cmake %{_qt5_plugindir}/printsupport/libcupsprintersupport.so %{_qt5_libdir}/cmake/Qt5PrintSupport/Qt5PrintSupport_QCupsPrinterSupportPlugin.cmake -%files -n qt5-rpm-macros -%{rpm_macros_dir}/macros.qt5 + %changelog -* Tue Jun 14 2016 Rex Dieter <rdieter@fedoraproject.org> - 5.6.1-3 -- backport some xcb-plugin-related fixes +* Tue Jun 14 2016 Helio Chissini de Castro <helio@kde.org> - 5.7.0-2 +- Compiled with gcc -* Thu Jun 09 2016 Rex Dieter <rdieter@fedoraproject.org> - 5.6.1-2 -- fix Qt5.pc version +* Tue Jun 14 2016 Helio Chissini de Castro <helio@kde.org> - 5.7.0-1 +- Qt 5.7.0 release -* Thu Jun 09 2016 Jan Grulich <jgrulich@redhat.com> - 5.6.1-1 -- Update to 5.6.1 +* Thu Jun 09 2016 Helio Chissini de Castro <helio@kde.org> - 5.7.0-0.1 +- Prepare 5.7 +- Move macros package away from qtbase. Now is called qt5-rpm-macros * Thu Jun 02 2016 Than Ngo <than@redhat.com> - 5.6.0-21 - drop gcc6 workaround on arm diff --git a/sources b/sources index 06cee79..a074a72 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -b23232190a3df61fe1ba81636987b036 qtbase-opensource-src-5.6.1.tar.xz +184f9460b40752d71b15b827260580c2 qtbase-opensource-src-5.7.0.tar.xz