From 3a9a6b03fe2e098d803f3db020a884a266f1b059 Mon Sep 17 00:00:00 2001 From: Eric Hameleers Date: Fri, 27 Jan 2017 10:44:40 +0100 Subject: deps: support the new and changed requirements for KDE 5_17.01 New: - libdmtx - libwacom - qrencode Upgraded: - PyQt - libinput - qt5 - qt5-webkit - sip --- deps/qt5/.url | 2 +- deps/qt5/patches/qt5.qtbug-49061.patch | 80 ++++++++++++++++++++++++++++++++++ deps/qt5/patches/qt5.qtbug-55583.patch | 41 +++++++++++++++++ deps/qt5/qt5.SlackBuild | 28 +++++------- 4 files changed, 134 insertions(+), 17 deletions(-) create mode 100644 deps/qt5/patches/qt5.qtbug-49061.patch create mode 100644 deps/qt5/patches/qt5.qtbug-55583.patch (limited to 'deps/qt5') diff --git a/deps/qt5/.url b/deps/qt5/.url index 34da870..350e58d 100644 --- a/deps/qt5/.url +++ b/deps/qt5/.url @@ -1 +1 @@ -http://download.qt.io/official_releases/qt/5.7/5.7.0/single/qt-everywhere-opensource-src-5.7.0.tar.gz +http://download.qt.io/official_releases/qt/5.7/5.7.1/single/qt-everywhere-opensource-src-5.7.1.tar.xz diff --git a/deps/qt5/patches/qt5.qtbug-49061.patch b/deps/qt5/patches/qt5.qtbug-49061.patch new file mode 100644 index 0000000..d006edb --- /dev/null +++ b/deps/qt5/patches/qt5.qtbug-49061.patch @@ -0,0 +1,80 @@ +# +# https://github.com/qt/qtbase/commit/494376f9.patch +# +From 494376f980e96339b6f1eff7c41336ca4d853065 Mon Sep 17 00:00:00 2001 +From: Thiago Macieira +Date: Thu, 12 Nov 2015 10:14:51 -0800 +Subject: [PATCH] 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 +Reviewed-by: Simon Hausmann +Reviewed-by: Lars Knoll +--- + 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 53b38c3..c820d53 100644 +--- a/src/corelib/plugin/qfactoryloader.cpp ++++ b/src/corelib/plugin/qfactoryloader.cpp +@@ -203,10 +203,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 62067c7..4752f69 100644 +--- a/src/corelib/plugin/qpluginloader.cpp ++++ b/src/corelib/plugin/qpluginloader.cpp +@@ -154,6 +154,7 @@ QPluginLoader::QPluginLoader(const QString &fileName, QObject *parent) + : QObject(parent), d(0), did_load(false) + { + setFileName(fileName); ++ setLoadHints(QLibrary::PreventUnloadHint); + } + + /*! +@@ -348,7 +349,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(); +@@ -394,7 +395,7 @@ QString QPluginLoader::errorString() const + \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. diff --git a/deps/qt5/patches/qt5.qtbug-55583.patch b/deps/qt5/patches/qt5.qtbug-55583.patch new file mode 100644 index 0000000..804f538 --- /dev/null +++ b/deps/qt5/patches/qt5.qtbug-55583.patch @@ -0,0 +1,41 @@ +# +# https://github.com/qt/qtbase/commit/84ea00d4.patch +# +From 84ea00d47049d882f2fabf1446ec6c6eb5fe3038 Mon Sep 17 00:00:00 2001 +From: J-P Nurmi +Date: Tue, 6 Dec 2016 16:30:31 +0100 +Subject: [PATCH] QGtk3Dialog: don't crash on Wayland + +Check if it's an X11 window before calling XSetTransientForHint(). +No transient parent will be set for GTK+ dialogs on Wayland. That +has to be implemented separately. + +Task-number: QTBUG-55583 +Change-Id: Iabc2a72681c8157bb2f2fe500892853aa397106b +Reviewed-by: Dmitry Shachnev +Reviewed-by: Shawn Rutledge +--- + src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp +index ba5089a..699b058 100644 +--- a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp ++++ b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp +@@ -135,10 +135,12 @@ bool QGtk3Dialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWind + + GdkWindow *gdkWindow = gtk_widget_get_window(gtkWidget); + if (parent) { +- GdkDisplay *gdkDisplay = gdk_window_get_display(gdkWindow); +- XSetTransientForHint(gdk_x11_display_get_xdisplay(gdkDisplay), +- gdk_x11_window_get_xid(gdkWindow), +- parent->winId()); ++ if (GDK_IS_X11_WINDOW(gdkWindow)) { ++ GdkDisplay *gdkDisplay = gdk_window_get_display(gdkWindow); ++ XSetTransientForHint(gdk_x11_display_get_xdisplay(gdkDisplay), ++ gdk_x11_window_get_xid(gdkWindow), ++ parent->winId()); ++ } + } + + if (modality != Qt::NonModal) { diff --git a/deps/qt5/qt5.SlackBuild b/deps/qt5/qt5.SlackBuild index 089c09e..7326328 100755 --- a/deps/qt5/qt5.SlackBuild +++ b/deps/qt5/qt5.SlackBuild @@ -48,12 +48,13 @@ # Modifications for qt 5.6.0 2016 by Eric Hameleers, Eindhoven, NL # Modifications for qt 5.6.1 2016 by Eric Hameleers, Eindhoven, NL # Modifications for qt 5.7.0 2016 by Eric Hameleers, Eindhoven, NL +# Modifications for qt 5.7.1 2017 by Eric Hameleers, Eindhoven, NL PKGNAM=qt5 -VERSION=${VERSION:-5.7.0} +VERSION=${VERSION:-5.7.1} PKGSRC=$(echo $VERSION |cut -d- -f1) PKGVER=$(echo $VERSION |tr - _) -BUILD=${BUILD:-3} +BUILD=${BUILD:-1} NUMJOBS=${NUMJOBS:--j7} @@ -135,24 +136,19 @@ fi # Fix path to mysql header: cat $CWD/patches/qt5.mysql.h.diff | patch -p1 --verbose || exit 1 -# Fix UNSIGNED values in QMYSQL: -cd qtbase - cat $CWD/patches/qt5.qtbug-53237.patch | patch -p1 --verbose || exit 1 -cd - +## Don't depend on features that were only added in linux 4.5: +#cd qtwebengine +# cat $CWD/patches/qt5.glibc224.patch | patch -p1 --verbose || exit 1 +#cd - -# Fix freetype engine performance: +# Don't unload plugins in QPluginLoader (segfault in LXQT): cd qtbase - cat $CWD/patches/qt5.qtbug-49452.patch | patch -p1 --verbose || exit 1 + cat $CWD/patches/qt5.qtbug-49061.patch | patch -p1 --verbose || exit 1 cd - -# Don't depend on features that were only added in linux 4.5: -cd qtwebengine - cat $CWD/patches/qt5.glibc224.patch | patch -p1 --verbose || exit 1 -cd - - -# Fix crash on exit when using default property aliases with layouts: -cd qtdeclarative - cat $CWD/patches/qt5.qtbug-51927.patch | patch -p1 --verbose || exit 1 +# Fix file chooser segfault on Gnome/Wayland: +cd qtbase + cat $CWD/patches/qt5.qtbug-55583.patch | patch -p1 --verbose || exit 1 cd - if ! pkg-config --exists libpulse 2>/dev/null ; then -- cgit v1.2.3