From a733c671ae2cd0d41fb6542bf78be4ff1dbe2df2 Mon Sep 17 00:00:00 2001 From: Eric Hameleers Date: Tue, 1 Nov 2016 22:34:06 +0100 Subject: deps: updated for KDE 5_16.08 --- deps/qt5/.url | 2 +- deps/qt5/patches/qt5.glibc224.patch | 33 +++++++++++++ deps/qt5/patches/qt5.qtbug-49452.patch | 58 ++++++++++++++++++++++ deps/qt5/patches/qt5.qtbug-53237.patch | 90 ++++++++++++++++++++++++++++++++++ deps/qt5/qt5.SlackBuild | 39 +++++++-------- 5 files changed, 200 insertions(+), 22 deletions(-) create mode 100644 deps/qt5/patches/qt5.glibc224.patch create mode 100644 deps/qt5/patches/qt5.qtbug-49452.patch create mode 100644 deps/qt5/patches/qt5.qtbug-53237.patch (limited to 'deps/qt5') diff --git a/deps/qt5/.url b/deps/qt5/.url index c819030..34da870 100644 --- a/deps/qt5/.url +++ b/deps/qt5/.url @@ -1 +1 @@ -http://download.qt.io/official_releases/qt/5.6/5.6.1-1/single/qt-everywhere-opensource-src-5.6.1-1.tar.xz +http://download.qt.io/official_releases/qt/5.7/5.7.0/single/qt-everywhere-opensource-src-5.7.0.tar.gz diff --git a/deps/qt5/patches/qt5.glibc224.patch b/deps/qt5/patches/qt5.glibc224.patch new file mode 100644 index 0000000..773781a --- /dev/null +++ b/deps/qt5/patches/qt5.glibc224.patch @@ -0,0 +1,33 @@ +From b12ffcd411d4776f7120ccecb3be34344d930d2b Mon Sep 17 00:00:00 2001 +From: Allan Sandfeld Jensen +Date: Tue, 9 Aug 2016 16:21:29 +0200 +Subject: Do not depend on Linux 4.5 + +Avoid using MADV_FREE that was only recently added to Linux. It will fail when +run on older Linux kernels. + +Change-Id: I9b0369fb31402f088b2327c12f70dd39f5e4c8c0 +Reviewed-by: Peter Varga +--- + chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp b/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp +index 121b687..be7c3b9 100644 +--- a/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp ++++ b/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp +@@ -39,6 +39,11 @@ + + #include + ++#if OS(LINUX) && defined(MADV_FREE) ++// Added in Linux 4.5, but we don't want to depend on 4.5 at runtime ++#undef MADV_FREE ++#endif ++ + #ifndef MADV_FREE + #define MADV_FREE MADV_DONTNEED + #endif +-- +cgit v1.0-4-g1e03 + diff --git a/deps/qt5/patches/qt5.qtbug-49452.patch b/deps/qt5/patches/qt5.qtbug-49452.patch new file mode 100644 index 0000000..4549ff1 --- /dev/null +++ b/deps/qt5/patches/qt5.qtbug-49452.patch @@ -0,0 +1,58 @@ +From 6f423555eba55ccdf7287071e10576bc1b687fd2 Mon Sep 17 00:00:00 2001 +From: Eskil Abrahamsen Blomfeldt +Date: Mon, 1 Aug 2016 13:39:53 +0200 +Subject: [PATCH] REG: Fix unwanted cache flush in Freetype engine + +The Freetype cache was almost completely disabled by +134c6db8587a8ce156d4fa31ffa62605821851b2 because after that +change, the lockedAlphaMapForGlyph() function would no longer +cut off early for empty glyphs like spaces, but rather go +through all alpha map functions before it realized that there +was nothing to render. This would in turn invalidate the cache +for every empty glyph, causing all glyphs to be rerendered for +every isolated word. + +This change adds back a cut off. This is only needed in the +lockedAlphaMapForGlyph() function, since the superclass implementation +of the other alpha map functions already contains a cut off for +width/height == 0. + +[ChangeLog][Qt Gui][Text] Fixed a performance regression in Freetype +engine that was introduced in Qt 5.5. + +Change-Id: I381285939909e99cc5fb5f3497fecf9fa871f29a +Task-number: QTBUG-49452 +Reviewed-by: Simon Hausmann +--- + src/gui/text/qfontengine_ft.cpp | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp +index 4de41df..7c878da 100644 +--- a/src/gui/text/qfontengine_ft.cpp ++++ b/src/gui/text/qfontengine_ft.cpp +@@ -1716,7 +1716,7 @@ glyph_metrics_t QFontEngineFT::alphaMapBoundingBox(glyph_t glyph, QFixed subPixe + + static inline QImage alphaMapFromGlyphData(QFontEngineFT::Glyph *glyph, QFontEngine::GlyphFormat glyphFormat) + { +- if (glyph == Q_NULLPTR) ++ if (glyph == Q_NULLPTR || glyph->height == 0 || glyph->width == 0) + return QImage(); + + QImage::Format format = QImage::Format_Invalid; +@@ -1764,11 +1764,15 @@ QImage *QFontEngineFT::lockedAlphaMapForGlyph(glyph_t glyphIndex, QFixed subPixe + + currentlyLockedAlphaMap = alphaMapFromGlyphData(glyph, neededFormat); + ++ const bool glyphHasGeometry = glyph != Q_NULLPTR && glyph->height != 0 && glyph->width != 0; + if (!cacheEnabled && glyph != &emptyGlyph) { + currentlyLockedAlphaMap = currentlyLockedAlphaMap.copy(); + delete glyph; + } + ++ if (!glyphHasGeometry) ++ return Q_NULLPTR; ++ + if (currentlyLockedAlphaMap.isNull()) + return QFontEngine::lockedAlphaMapForGlyph(glyphIndex, subPixelPosition, neededFormat, t, offset); + diff --git a/deps/qt5/patches/qt5.qtbug-53237.patch b/deps/qt5/patches/qt5.qtbug-53237.patch new file mode 100644 index 0000000..c6d5739 --- /dev/null +++ b/deps/qt5/patches/qt5.qtbug-53237.patch @@ -0,0 +1,90 @@ +From 8e889378115c69508b050a511621ac8e30ec4158 Mon Sep 17 00:00:00 2001 +From: Jesus Fernandez +Date: Mon, 13 Jun 2016 19:09:15 +0200 +Subject: [PATCH] Fix UNSIGNED values in QMYSQL + +The unsigned flag in columns was ignored when creating the list of +bound values in a mysql table. So the result iteration with +QSqlQuery::next stops after the first wrong truncated value. + +[ChangeLog][QtSql] Fixed QSqlQuery::prepare value truncation error when +using UNSIGNED values in a MySQL database. + +Task-number: QTBUG-53969 +Task-number: QTBUG-53237 +Change-Id: I10d977993445f2794f1dd8c88b2e83517ef524f3 +Reviewed-by: Milian Wolff +--- + src/sql/drivers/mysql/qsql_mysql.cpp | 1 + + tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp | 39 +++++++++++++++++++++++ + 2 files changed, 40 insertions(+) + +diff --git a/src/sql/drivers/mysql/qsql_mysql.cpp b/src/sql/drivers/mysql/qsql_mysql.cpp +index 96bdcc4..55bf499 100644 +--- a/src/sql/drivers/mysql/qsql_mysql.cpp ++++ b/src/sql/drivers/mysql/qsql_mysql.cpp +@@ -387,6 +387,7 @@ bool QMYSQLResultPrivate::bindInValues() + bind->buffer_length = f.bufLength = fieldInfo->length + 1; + bind->is_null = &f.nullIndicator; + bind->length = &f.bufLength; ++ bind->is_unsigned = fieldInfo->flags & UNSIGNED_FLAG ? 1 : 0; + f.outField=field; + + ++i; +diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp +index bd553d5..f1c4333 100644 +--- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp ++++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp +@@ -233,6 +233,9 @@ private slots: + void QTBUG_36211_data() { generic_data("QPSQL"); } + void QTBUG_36211(); + ++ void QTBUG_53969_data() { generic_data("QMYSQL"); } ++ void QTBUG_53969(); ++ + void sqlite_constraint_data() { generic_data("QSQLITE"); } + void sqlite_constraint(); + +@@ -3652,6 +3655,42 @@ void tst_QSqlQuery::QTBUG_36211() + } + } + ++void tst_QSqlQuery::QTBUG_53969() ++{ ++ QFETCH( QString, dbName ); ++ QVector values = QVector() << 10 << 20 << 127 << 128 << 1, tableValues; ++ QSqlDatabase db = QSqlDatabase::database( dbName ); ++ CHECK_DATABASE( db ); ++ tableValues.reserve(values.size()); ++ if (tst_Databases::getDatabaseType(db) == QSqlDriver::MySqlServer) { ++ const QString tableName(qTableName("bug53969", __FILE__, db)); ++ tst_Databases::safeDropTable( db, tableName ); ++ ++ QSqlQuery q(db); ++ QVERIFY_SQL(q, exec(QString("CREATE TABLE %1 (id INT AUTO_INCREMENT PRIMARY KEY, " ++ "test_number TINYINT(3) UNSIGNED)") ++ .arg(tableName))); ++ ++ QVERIFY_SQL(q, prepare("INSERT INTO " + tableName + " (test_number) VALUES (:value)")); ++ ++ QVector::iterator begin = values.begin(), end = values.end(), it; ++ for (it = begin; it != end; ++it) { ++ q.bindValue(":value", *it); ++ QVERIFY_SQL(q, exec()); ++ } ++ ++ QVERIFY_SQL(q, prepare("SELECT test_number FROM " + tableName)); ++ QVERIFY_SQL(q, exec()); ++ ++ while (q.next()) { ++ bool ok; ++ tableValues.push_back(q.value(0).toUInt(&ok)); ++ QVERIFY(ok); ++ } ++ QCOMPARE(values, tableValues); ++ } ++} ++ + void tst_QSqlQuery::oraOCINumber() + { + QFETCH( QString, dbName ); diff --git a/deps/qt5/qt5.SlackBuild b/deps/qt5/qt5.SlackBuild index e7df254..0b5c52f 100755 --- a/deps/qt5/qt5.SlackBuild +++ b/deps/qt5/qt5.SlackBuild @@ -47,12 +47,13 @@ # Modifications for qt 5.5.1 2015,2016 by Eric Hameleers, Eindhoven, NL # 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 PKGNAM=qt5 -VERSION=${VERSION:-5.6.1-1} +VERSION=${VERSION:-5.7.0} PKGSRC=$(echo $VERSION |cut -d- -f1) PKGVER=$(echo $VERSION |tr - _) -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} NUMJOBS=${NUMJOBS:--j7} @@ -134,25 +135,20 @@ fi # Fix path to mysql header: cat $CWD/patches/qt5.mysql.h.diff | patch -p1 --verbose || exit 1 -## Properly detect ALSA version 1.1.0 as being newer than 1.0.10: -#cat $CWD/patches/qt5.alsa.patch | patch -p1 --verbose || exit 1 -# -## Build with explicitlib, preventing linker errors: -#cd qtbase -# cat $CWD/patches/qt5.qtbug-51621.patch | patch -p1 --verbose || exit 1 -#cd - -# -## Backport fixes for QtDBus deadlocks: -#cd qtbase -# cat $CWD/patches/qt5.qtbug-51648.patch | patch -p1 --verbose || exit 1 -# cat $CWD/patches/qt5.qtbug-51649.patch | patch -p1 --verbose || exit 1 -# cat $CWD/patches/qt5.qtbug-51676.patch | patch -p1 --verbose || exit 1 -#cd - -# -## qtwebengine fails to build with system nss 3.23: -#cd qtwebengine -# cat $CWD/patches/qt5.qtbug-51890.patch | patch -p1 --verbose || exit 1 -#cd - +# Fix UNSIGNED values in QMYSQL: +cd qtbase + cat $CWD/patches/qt5.qtbug-53237.patch | patch -p1 --verbose || exit 1 +cd - + +# Fix freetype engine performance: +cd qtbase + cat $CWD/patches/qt5.qtbug-49452.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 - if ! pkg-config --exists libpulse 2>/dev/null ; then # Forcibly disable pulseaudio in qtwebengine: @@ -197,6 +193,7 @@ export QT_PLUGIN_PATH="${QTDIR}/qtbase/plugins" -dbus \ -glib \ -icu \ + -opengl \ -openssl \ -optimized-qmake \ -qpa xcb \ -- cgit v1.2.3