From 780a8bb7752241f169bbbc7b48129ee489574f10 Mon Sep 17 00:00:00 2001 From: Eric Hameleers Date: Sun, 25 Jun 2017 12:33:35 +0200 Subject: Updated deps for upcoming KDE 5_17.06 On slackware-current, we switch to Qt 5.9 which is going to be a LTS release (Long Term Support). --- deps/qt5/.url | 2 +- deps/qt5/patches/qt5.mysql.h.diff | 7 +-- deps/qt5/patches/qt5.qtbug-60558.patch | 32 +++++++++++ deps/qt5/patches/qt5.qtbug-61140.patch | 101 +++++++++++++++++++++++++++++++++ deps/qt5/qt5.SlackBuild | 49 +++++++--------- 5 files changed, 158 insertions(+), 33 deletions(-) create mode 100644 deps/qt5/patches/qt5.qtbug-60558.patch create mode 100644 deps/qt5/patches/qt5.qtbug-61140.patch (limited to 'deps/qt5') diff --git a/deps/qt5/.url b/deps/qt5/.url index 350e58d..79507a2 100644 --- a/deps/qt5/.url +++ b/deps/qt5/.url @@ -1 +1 @@ -http://download.qt.io/official_releases/qt/5.7/5.7.1/single/qt-everywhere-opensource-src-5.7.1.tar.xz +https://download.qt.io/archive/qt/5.9/5.9.0/single/qt-everywhere-opensource-src-5.9.0.tar.xz diff --git a/deps/qt5/patches/qt5.mysql.h.diff b/deps/qt5/patches/qt5.mysql.h.diff index 41dc9d3..f1cf11b 100644 --- a/deps/qt5/patches/qt5.mysql.h.diff +++ b/deps/qt5/patches/qt5.mysql.h.diff @@ -1,7 +1,6 @@ -diff -Naur qt-everywhere-opensource-src-5.1.0.orig/qtbase/src/sql/drivers/mysql/qsql_mysql_p.h qt-everywhere-opensource-src-5.1.0/qtbase/src/sql/drivers/mysql/qsql_mysql_p.h ---- qt-everywhere-opensource-src-5.1.0.orig/qtbase/src/sql/drivers/mysql/qsql_mysql_p.h 2013-07-02 07:09:52.000000000 +0000 -+++ qt-everywhere-opensource-src-5.1.0/qtbase/src/sql/drivers/mysql/qsql_mysql_p.h 2013-07-21 21:21:01.190172379 +0000 -@@ -60,7 +60,7 @@ +--- qt-everywhere-opensource-src-5.9.0/qtbase/src/plugins/sqldrivers/mysql/qsql_mysql_p.h.orig 2017-05-26 14:43:31.000000000 +0200 ++++ qt-everywhere-opensource-src-5.9.0/qtbase/src/plugins/sqldrivers/mysql/qsql_mysql_p.h 2017-06-17 22:11:34.211899826 +0200 +@@ -57,7 +57,7 @@ #include #endif diff --git a/deps/qt5/patches/qt5.qtbug-60558.patch b/deps/qt5/patches/qt5.qtbug-60558.patch new file mode 100644 index 0000000..2d03920 --- /dev/null +++ b/deps/qt5/patches/qt5.qtbug-60558.patch @@ -0,0 +1,32 @@ +https://github.com/qt/qtbase/commit/f45c6c18.patch + +From f45c6c180463ccb6620e1d273a264f14a1204a93 Mon Sep 17 00:00:00 2001 +From: Thiago Macieira +Date: Wed, 3 May 2017 14:08:50 -0700 +Subject: [PATCH] QInternal::unregisterCallback: don't crash on unregistering + during exit + +Task-number: QTBUG-60558 +Change-Id: Ica9894dc9b5e48278fd4fffd14bb34c6d98d2555 +Reviewed-by: Olivier Goffart (Woboq GmbH) +--- + src/corelib/global/qglobal.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp +index c37503f3db..22fc20d47e 100644 +--- a/src/corelib/global/qglobal.cpp ++++ b/src/corelib/global/qglobal.cpp +@@ -3988,8 +3988,10 @@ bool QInternal::registerCallback(Callback cb, qInternalCallback callback) + bool QInternal::unregisterCallback(Callback cb, qInternalCallback callback) + { + if (cb >= 0 && cb < QInternal::LastCallback) { +- QInternal_CallBackTable *cbt = global_callback_table(); +- return (bool) cbt->callbacks[cb].removeAll(callback); ++ if (global_callback_table.exists()) { ++ QInternal_CallBackTable *cbt = global_callback_table(); ++ return (bool) cbt->callbacks[cb].removeAll(callback); ++ } + } + return false; + } diff --git a/deps/qt5/patches/qt5.qtbug-61140.patch b/deps/qt5/patches/qt5.qtbug-61140.patch new file mode 100644 index 0000000..17468a9 --- /dev/null +++ b/deps/qt5/patches/qt5.qtbug-61140.patch @@ -0,0 +1,101 @@ +https://github.com/qt/qtbase/commit/744fd39e.patch + +From 744fd39e66b0b44e65a2505d674fa1cda8b205a4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= +Date: Fri, 2 Jun 2017 11:09:55 +0200 +Subject: [PATCH] xcb: Don't destroy foreign windows + +We can't rely on virtual dispatch in the destructor. + +Task-number: QTBUG-61140 +Change-Id: Ib1026caf126095778c24254775cb5a0bfecf3a38 +Reviewed-by: Fabian Vogt +Reviewed-by: Gatis Paeglis +--- + src/plugins/platforms/xcb/qxcbintegration.cpp | 18 +----------------- + src/plugins/platforms/xcb/qxcbwindow.cpp | 16 ++++++++++------ + src/plugins/platforms/xcb/qxcbwindow.h | 12 ++++++++++++ + 3 files changed, 23 insertions(+), 23 deletions(-) + +diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp +index b414bee204..8e3ee20329 100644 +--- a/src/plugins/platforms/xcb/qxcbintegration.cpp ++++ b/src/plugins/platforms/xcb/qxcbintegration.cpp +@@ -214,25 +214,9 @@ QPlatformWindow *QXcbIntegration::createPlatformWindow(QWindow *window) const + return xcbWindow; + } + +-class QXcbForeignWindow : public QXcbWindow +-{ +-public: +- QXcbForeignWindow(QWindow *window, WId nativeHandle) +- : QXcbWindow(window) { m_window = nativeHandle; } +- ~QXcbForeignWindow() {} +- bool isForeignWindow() const override { return true; } +- +-protected: +- // No-ops +- void create() override {} +- void destroy() override {} +-}; +- + QPlatformWindow *QXcbIntegration::createForeignWindow(QWindow *window, WId nativeHandle) const + { +- QXcbWindow *xcbWindow = new QXcbForeignWindow(window, nativeHandle); +- xcbWindow->create(); +- return xcbWindow; ++ return new QXcbForeignWindow(window, nativeHandle); + } + + #ifndef QT_NO_OPENGL +diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp +index 289d0720e7..d6c69d52ef 100644 +--- a/src/plugins/platforms/xcb/qxcbwindow.cpp ++++ b/src/plugins/platforms/xcb/qxcbwindow.cpp +@@ -597,13 +597,17 @@ QXcbWindow::~QXcbWindow() + } + + destroy(); ++} + +- if (isForeignWindow()) { +- if (connection()->mouseGrabber() == this) +- connection()->setMouseGrabber(Q_NULLPTR); +- if (connection()->mousePressWindow() == this) +- connection()->setMousePressWindow(Q_NULLPTR); +- } ++QXcbForeignWindow::~QXcbForeignWindow() ++{ ++ // Clear window so that destroy() does not affect it ++ m_window = 0; ++ ++ if (connection()->mouseGrabber() == this) ++ connection()->setMouseGrabber(nullptr); ++ if (connection()->mousePressWindow() == this) ++ connection()->setMousePressWindow(nullptr); + } + + void QXcbWindow::destroy() +diff --git a/src/plugins/platforms/xcb/qxcbwindow.h b/src/plugins/platforms/xcb/qxcbwindow.h +index 56628094ee..f38343b6c2 100644 +--- a/src/plugins/platforms/xcb/qxcbwindow.h ++++ b/src/plugins/platforms/xcb/qxcbwindow.h +@@ -278,6 +278,18 @@ public Q_SLOTS: + xcb_cursor_t m_currentBitmapCursor = XCB_CURSOR_NONE; + }; + ++class QXcbForeignWindow : public QXcbWindow ++{ ++public: ++ QXcbForeignWindow(QWindow *window, WId nativeHandle) ++ : QXcbWindow(window) { m_window = nativeHandle; } ++ ~QXcbForeignWindow(); ++ bool isForeignWindow() const override { return true; } ++ ++protected: ++ void create() override {} // No-op ++}; ++ + QT_END_NAMESPACE + + Q_DECLARE_METATYPE(QXcbWindow*) diff --git a/deps/qt5/qt5.SlackBuild b/deps/qt5/qt5.SlackBuild index 88908e1..34656dc 100755 --- a/deps/qt5/qt5.SlackBuild +++ b/deps/qt5/qt5.SlackBuild @@ -36,7 +36,7 @@ # Alternate method (we don't use this): # wget http://qt.gitorious.org/qt/kde-qt/archive-tarball/4.6.2-patched # -# Modifications 2010, 2011, 2012, 2013, 2014, 2015, 2016 Eric Hameleers, Eindhoven, NL +# Modifications 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Eric Hameleers, Eindhoven, NL # qt 4.7.3, 4.7.4, 4.8.0, 4.8.1, 4.8.2, 4.8.4, are built from original nokia sources. # # Modifications for qt 5.2.0 2013 by Michael James, AU @@ -49,19 +49,20 @@ # 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 +# Modifications for qt 5.9.0 2017 by Eric Hameleers, Eindhoven, NL PKGNAM=qt5 -VERSION=${VERSION:-5.7.1} +VERSION=${VERSION:-5.9.0} PKGSRC=$(echo $VERSION |cut -d- -f1) PKGVER=$(echo $VERSION |tr - _) -BUILD=${BUILD:-3} +BUILD=${BUILD:-1} NUMJOBS=${NUMJOBS:--j7} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then case "$(uname -m)" in - i?86) ARCH=i486 ;; + i?86) ARCH=i586 ;; arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;; # Unless $ARCH is already set, use uname -m for all other archs: *) ARCH=$(uname -m) ;; @@ -73,6 +74,10 @@ if [ "$ARCH" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mtune=i686" SLKLDFLAGS="" LIBDIRSUFFIX="" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + SLKLDFLAGS="" + LIBDIRSUFFIX="" elif [ "$ARCH" = "s390" ]; then SLKCFLAGS="-O2" SLKLDFLAGS="" @@ -119,12 +124,6 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; -# Fix dangling symlinks, thanks Larry Hajali: -rm -f qtwebengine/src/3rdparty/chromium/third_party/mesa/src/src/gallium/state_trackers/d3d1x/w32api -rm -f qtwebengine/src/3rdparty/chromium/third_party/webrtc/tools/e2e_quality/audio/perf -ln -s ../../../../../tools/perf \ - qtwebengine/src/3rdparty/chromium/third_party/webrtc/tools/e2e_quality/audio/ - # Use -reduce-relocations only on i?86 and x86_64 architextures. # https://bugreports.qt-project.org/browse/QTBUG-36129 if echo $ARCH | grep -q '\(i.86\|x86_64\)' 2>/dev/null; then @@ -136,19 +135,18 @@ fi # Fix path to mysql header: cat $CWD/patches/qt5.mysql.h.diff | patch -p1 --verbose || exit 1 -## 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 missing private includes: QTBUG-37417 +sed -e '/CMAKE_NO_PRIVATE_INCLUDES\ \=\ true/d' \ + -i qtbase/mkspecs/features/create_cmake.prf -# Don't unload plugins in QPluginLoader (segfault in LXQT): +# Don't destroy foreign windows, QTBUG-61140: cd qtbase - cat $CWD/patches/qt5.qtbug-49061.patch | patch -p1 --verbose || exit 1 + cat $CWD/patches/qt5.qtbug-61140.patch | patch -p1 --verbose || exit 1 cd - -# Fix file chooser segfault on Gnome/Wayland: +# Fix crashes with QtCurve, QTBUG-60558: cd qtbase - cat $CWD/patches/qt5.qtbug-55583.patch | patch -p1 --verbose || exit 1 + cat $CWD/patches/qt5.qtbug-60558.patch | patch -p1 --verbose || exit 1 cd - if ! pkg-config --exists libpulse 2>/dev/null ; then @@ -190,7 +188,6 @@ export QT_PLUGIN_PATH="${QTDIR}/qtbase/plugins" -examplesdir /usr/doc/qt5-$PKGVER/examples \ -system-libpng \ -system-libjpeg \ - -system-pcre \ -system-sqlite \ -system-zlib \ -plugin-sql-mysql \ @@ -226,16 +223,12 @@ make install INSTALL_ROOT=$PKG || exit 1 find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null -# Fix internal linking for Qt5WebKit.pc , thanks to Larry Hajali's SBo script: +# Fix internal linking for Qt5WebEngineCore.pc , +# thanks to Larry Hajali's SBo script: sed -i \ - -e "s|-Wl,-whole-archive -lWebKit1 -Wl,-no-whole-archive -L${PWD}/qtwebkit/Source/WebKit[^ ]* ||" \ - -e "s|-Wl,-whole-archive -lWebKit2 -Wl,-no-whole-archive -L${PWD}/qtwebkit/Source/WebKit2[^ ]* ||" \ - -e "s|-Wl,-whole-archive -lWebCore -Wl,-no-whole-archive -L${PWD}/qtwebkit/Source/WebCore[^ ]* ||" \ - -e "s|-Wl,-whole-archive -lANGLE -Wl,-no-whole-archive -L${PWD}/qtwebkit/Source/ThirdParty/ANGLE[^ ]* ||" \ - -e "s|-Wl,-whole-archive -lJavaScriptCore -Wl,-no-whole-archive -L${PWD}/qtwebkit/Source/JavaScriptCore[^ ]* ||" \ - -e "s|-Wl,-whole-archive -lWTF -Wl,-no-whole-archive -L${PWD}/qtwebkit/Source/WTF[^ ]* ||" \ - -e "s|-Wl,-whole-archive -lleveldb -Wl,-no-whole-archive -L${PWD}/qtwebkit/Source/ThirdParty/leveldb[^ ]* ||" \ - $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/Qt5WebKit.pc + -e 's|-Wl,--start-group.* -Wl,--end-group||' \ + -e "s|-L${PWD}/qtwebengine/src/core/api/Release||" \ + $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/Qt5WebEngineCore.pc # Fix the path in prl files: find "$PKG/usr/lib${LIBDIRSUFFIX}" -type f -name '*.prl' \ -- cgit v1.2.3