summaryrefslogtreecommitdiff
path: root/user/qt5-qtbase
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2019-12-27 04:02:42 -0600
committerA. Wilcox <AWilcox@Wilcox-Tech.com>2019-12-27 04:02:42 -0600
commit47d18b13213ccd7c51894796760f97571c3eb424 (patch)
tree6e31cc5d066c199564a5c8f34a40d313a08c44aa /user/qt5-qtbase
parent9b07de55dfe6d50baeda3a8feda7f9fcade9c647 (diff)
downloadpackages-47d18b13213ccd7c51894796760f97571c3eb424.tar.gz
packages-47d18b13213ccd7c51894796760f97571c3eb424.tar.bz2
packages-47d18b13213ccd7c51894796760f97571c3eb424.tar.xz
packages-47d18b13213ccd7c51894796760f97571c3eb424.zip
user/qt5: Bump to 5.12.6 LTS
This updates Qt 5 to the latest LTS release available. Notable changes: * The infamous clipboard bug (upstream QTBUG-65145; Gerrit 254187) is fixed! * Qt Declarative's "V4 JIT" is disabled globally on pmmx. It is no longer (easily) possible to turn off the JIT selectively based on CPU capability. * Qt Script builds correctly on GCC 8 now. This does not include: * Build testing of Qt Multimedia (yet); this depends on the time64-isation of the alsa-lib package (at least). * Build testing of Qt Speech (yet); speech-dispatcher also deps on alsa-lib indirectly. * Qt WebKit 5.212. This will be committed later.
Diffstat (limited to 'user/qt5-qtbase')
-rw-r--r--user/qt5-qtbase/APKBUILD51
-rw-r--r--user/qt5-qtbase/big-endian-scroll-wheel.patch98
-rw-r--r--user/qt5-qtbase/qt-musl-iconv-no-bom.patch2
-rw-r--r--user/qt5-qtbase/time64.patch62
4 files changed, 143 insertions, 70 deletions
diff --git a/user/qt5-qtbase/APKBUILD b/user/qt5-qtbase/APKBUILD
index 95f461d64..18b5b88ad 100644
--- a/user/qt5-qtbase/APKBUILD
+++ b/user/qt5-qtbase/APKBUILD
@@ -1,14 +1,15 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtbase
-_pkgname=qtbase-opensource-src
-pkgver=5.9.7
-pkgrel=1
-pkgdesc="Qt 5.9 base components"
+_pkgname=qtbase-everywhere-src
+pkgver=5.12.6
+pkgrel=0
+pkgdesc="Cross-platform application and UI framework"
url="https://www.qt.io/"
arch="all"
-license="LGPL-2.0 with exceptions OR GPL-3.0 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
_sub="$pkgname-sqlite $pkgname-odbc $pkgname-postgresql
$pkgname-tds $pkgname-x11"
+depends=""
depends_dev="dbus-dev fontconfig-dev freetype-dev glib-dev libice-dev
libpng-dev libsm-dev libx11-dev libxext-dev mesa-dev openssl-dev perl
sqlite-dev zlib-dev $_sub"
@@ -25,15 +26,23 @@ source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodu
big-endian-scroll-wheel.patch
link-to-execinfo.patch
qt-musl-iconv-no-bom.patch
+ time64.patch
"
+# secfixes: qt
+# 5.9.7-r0:
+# - CVE-2018-15518
+# - CVE-2018-19869
+# - CVE-2018-19870
+# - CVE-2018-19871
+# - CVE-2018-19873
+
_qt5_prefix=/usr/lib/qt5
_qt5_datadir=/usr/share/qt5
builddir="$srcdir"/$_pkgname-$pkgver
prepare() {
default_prepare
- cd "$builddir"
sed -i -e "s|-O2|$CXXFLAGS|" \
-e "/^QMAKE_RPATH/s| -Wl,-rpath,||g" \
-e "/^QMAKE_LFLAGS\s/s|+=|+= $LDFLAGS|g" \
@@ -41,9 +50,7 @@ prepare() {
}
build() {
- cd "$builddir"
-
- local ARCH_OPTS=""
+ ARCH_OPTS=""
[ ${CTARGET_ARCH} != "pmmx" ] || ARCH_OPTS="-no-sse2"
./configure -confirm-license -opensource \
@@ -56,6 +63,7 @@ build() {
-glib \
-icu \
-importdir "$_qt5_prefix"/imports \
+ -kms \
-libexecdir "$_qt5_prefix"/libexec \
-no-pch \
-no-rpath \
@@ -87,15 +95,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make INSTALL_ROOT="$pkgdir" install
mkdir -p "$pkgdir"/usr/bin/
- local i
for i in "$pkgdir"/$_qt5_prefix/bin/*; do
ln -s ../lib/qt5/bin/"$(basename $i)" \
"$pkgdir"/usr/bin/"$(basename $i)"
@@ -103,15 +108,14 @@ package() {
}
_mv_files() {
- local i
- for i; do
+ for i in "$@"; do
mkdir -p "$subpkgdir"/${i%/*}
- mv "$pkgdir"/$i "$subpkgdir"/$i
+ mv "$pkgdir"/$i "$subpkgdir"/${i%/*}
done
}
dev() {
- cd "$pkgdir"
+ cd "$pkgdir" # Required for the 'find' command to work properly.
_mv_files usr/lib/qt5/mkspecs \
usr/lib/cmake \
usr/lib/qt5/bin \
@@ -122,38 +126,32 @@ dev() {
sqlite() {
pkgdesc="SQLite driver for Qt5's SQL classes"
- cd "$pkgdir"
_mv_files usr/lib/qt5/plugins/sqldrivers/libqsqlite*
}
odbc() {
pkgdesc="ODBC driver for Qt5's SQL classes"
- cd "$pkgdir"
_mv_files usr/lib/qt5/plugins/sqldrivers/libqsqlodbc*
}
postgresql() {
pkgdesc="PostgreSQL driver for Qt5's SQL classes"
- cd "$pkgdir"
_mv_files usr/lib/qt5/plugins/sqldrivers/libqsqlpsql*
}
mysql() {
pkgdesc="MySQL driver for Qt5's SQL classes"
- cd "$pkgdir"
_mv_files usr/lib/qt5/plugins/sqldrivers/libqsqlmysql*
}
tds() {
pkgdesc="TDS driver for Qt5's SQL classes"
- cd "$pkgdir"
_mv_files usr/lib/qt5/plugins/sqldrivers/libqsqltds*
}
x11() {
pkgdesc="Qt5 GUI-related libraries"
depends="hicolor-icon-theme"
- cd "$pkgdir"
_mv_files \
usr/lib/libQt5EglFSDeviceIntegration.so.* \
usr/lib/libQt5EglFsKmsSupport.so.* \
@@ -169,11 +167,12 @@ x11() {
usr/lib/qt5/plugins/printsupport* \
usr/lib/qt5/plugins/xcbglintegrations
- scanelf -Rn usr/ | egrep '(libX|libQt5Gui|libGL)' && return 1
+ scanelf -Rn "$pkgdir"/usr/ | egrep '(libX|libQt5Gui|libGL)' && return 1
return 0
}
-sha512sums="7121837501b810f31863fbb3a6ea7189d3e38789ff25eb49b639a69b73913761c8cba18b65046519693d2f5c8755c2197feff1df1ec3d88676d00c649a326e1e qtbase-opensource-src-5.9.7.tar.xz
-0f5b3d93bd1543f4e28e3dfe4a77db4759f2e3afbeb6f6b2c3aa76bf106ed585984ea228b2233bc53afeb3f51c557e3545b18a74096d2cf129364a1f6c4ef090 big-endian-scroll-wheel.patch
+sha512sums="5fb82d903b0db95c23c55785047722dea7979e7f94ecaaf374e0c73b4787aabd768a1c79482a091b8b11f61d7bd4fb891675a6842b90cdc9caaa3b393a3187c6 qtbase-everywhere-src-5.12.6.tar.xz
+d00dc607b71a93132f756b952871df9197cfd6d78cc3617544bfa11d7f0eea21ce5dd0d1aeb69dd2702a5694a63d3802accc76499dbf414c01eb56421698cb0c big-endian-scroll-wheel.patch
ee78a44e28ba5f728914bfc3d8d5b467896c7de11a02d54b0bce11e40a4338b1f776c1fcc30cbd436df4f548c1ab0b4fe801f01b162ddd5c0f892893e227acfd link-to-execinfo.patch
-dca65670df25a8e391d4c62b8967f4377cbd193a3053d8e8e288452ea197f418fe3f6d9d5e48dc333a44aeadec68e3d4380b3672a07ef6baf7aa3eed96ba96e3 qt-musl-iconv-no-bom.patch"
+e3982b2df2ab4ba53b7a1329a9eb928eb1fee813c61cf6ac03d3300a767ffb57f019ac0fd89f633cac2330549446ff3d43344871296bf362815e7ebffadefa6b qt-musl-iconv-no-bom.patch
+436f0bb7a89a88aa62c7b0398c4e91c325e78542e96f747c903f7e96dbf9d9b693d9688c722f2a74e287fb9ab31e861bd5ed8deb172ed28f56a1b8757663771c time64.patch"
diff --git a/user/qt5-qtbase/big-endian-scroll-wheel.patch b/user/qt5-qtbase/big-endian-scroll-wheel.patch
index 3fbb8aec7..4cfa4f7b8 100644
--- a/user/qt5-qtbase/big-endian-scroll-wheel.patch
+++ b/user/qt5-qtbase/big-endian-scroll-wheel.patch
@@ -1,43 +1,55 @@
---- qtbase-opensource-src-5.9.7/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp.old 2018-10-16 08:37:05.000000000 +0000
-+++ qtbase-opensource-src-5.9.7/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp 2019-08-03 03:58:05.875790720 +0000
-@@ -43,6 +43,7 @@
- #include "qxcbwindow.h"
- #include "qtouchdevice.h"
- #include "QtCore/qmetaobject.h"
-+#include "QtCore/qendian.h"
- #include <qpa/qwindowsysteminterface_p.h>
- #include <QDebug>
- #include <cmath>
-@@ -106,6 +107,7 @@
- XIEventMask xiEventMask;
- bitMask = XI_HierarchyChangedMask;
- bitMask |= XI_DeviceChangedMask;
-+ bitMask = qToLittleEndian(bitMask);
- xiEventMask.deviceid = XIAllDevices;
- xiEventMask.mask_len = sizeof(bitMask);
- xiEventMask.mask = xiBitMask;
-@@ -327,7 +329,8 @@
- }
- XIEventMask mask;
- mask.mask_len = sizeof(bitMask);
-+ bitMask = qToLittleEndian(bitMask);
- mask.mask = xiBitMask;
- // When xi2MouseEvents() is true (the default), pointer emulation for touch and tablet
- // events will get disabled. This is preferable, as Qt Quick handles touch events
- // directly, while for other applications QtGui synthesizes mouse events.
-@@ -353,6 +356,7 @@
- tabletBitMask = XI_PropertyEventMask;
- if (!pointerSelected)
- tabletBitMask |= XI_ButtonPressMask | XI_ButtonReleaseMask | XI_MotionMask;
-+ tabletBitMask = qToLittleEndian(tabletBitMask);
- for (int i = 0; i < m_tabletData.count(); ++i) {
- int deviceId = m_tabletData.at(i).deviceId;
- tabletDevices.insert(deviceId);
-@@ -374,6 +378,7 @@
-
- scrollBitMask = XI_MotionMask;
- scrollBitMask |= XI_ButtonReleaseMask;
-+ scrollBitMask = qToLittleEndian(scrollBitMask);
- int i=0;
- for (const ScrollingDevice& scrollingDevice : qAsConst(m_scrollingDevices)) {
- if (tabletDevices.contains(scrollingDevice.deviceId))
+--- qtbase-everywhere-src-5.12.3/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp.orig 2019-08-02 17:27:00.011197696 +0200
++++ qtbase-everywhere-src-5.12.3/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp 2019-08-02 17:29:36.336019411 +0200
+@@ -43,6 +43,7 @@
+ #include "qxcbwindow.h"
+ #include "qtouchdevice.h"
+ #include "QtCore/qmetaobject.h"
++#include "QtCore/qendian.h"
+ #include <qpa/qwindowsysteminterface_p.h>
+ #include <QDebug>
+ #include <cmath>
+@@ -66,6 +67,7 @@
+ xiEventMask.mask = XCB_INPUT_XI_EVENT_MASK_HIERARCHY;
+ xiEventMask.mask |= XCB_INPUT_XI_EVENT_MASK_DEVICE_CHANGED;
+ xiEventMask.mask |= XCB_INPUT_XI_EVENT_MASK_PROPERTY;
++ xiEventMask.mask = qToLittleEndian(xiEventMask.mask);
+ xcb_input_xi_select_events(xcb_connection(), rootWindow(), 1, &xiEventMask.header);
+ }
+
+@@ -90,7 +92,7 @@
+ qt_xcb_input_event_mask_t mask;
+ mask.header.deviceid = XCB_INPUT_DEVICE_ALL_MASTER;
+ mask.header.mask_len = 1;
+- mask.mask = bitMask;
++ mask.mask = qToLittleEndian(bitMask);
+ xcb_void_cookie_t cookie =
+ xcb_input_xi_select_events_checked(xcb_connection(), window, 1, &mask.header);
+ xcb_generic_error_t *error = xcb_request_check(xcb_connection(), cookie);
+@@ -363,7 +365,7 @@
+ qt_xcb_input_event_mask_t xiMask;
+ xiMask.header.deviceid = XCB_INPUT_DEVICE_ALL_MASTER;
+ xiMask.header.mask_len = 1;
+- xiMask.mask = mask;
++ xiMask.mask = qToLittleEndian(mask);
+
+ xcb_void_cookie_t cookie =
+ xcb_input_xi_select_events_checked(xcb_connection(), window, 1, &xiMask.header);
+@@ -390,7 +392,7 @@
+ tabletDevices.insert(deviceId);
+ xiEventMask[i].header.deviceid = deviceId;
+ xiEventMask[i].header.mask_len = 1;
+- xiEventMask[i].mask = mask;
++ xiEventMask[i].mask = qToLittleEndian(mask);
+ }
+ xcb_input_xi_select_events(xcb_connection(), window, nrTablets, &(xiEventMask.data()->header));
+ }
+@@ -406,7 +408,7 @@
+ #endif
+ xiEventMask[i].header.deviceid = scrollingDevice.deviceId;
+ xiEventMask[i].header.mask_len = 1;
+- xiEventMask[i].mask = mask;
++ xiEventMask[i].mask = qToLittleEndian(mask);
+ i++;
+ }
+ xcb_input_xi_select_events(xcb_connection(), window, i, &(xiEventMask.data()->header));
+
diff --git a/user/qt5-qtbase/qt-musl-iconv-no-bom.patch b/user/qt5-qtbase/qt-musl-iconv-no-bom.patch
index be2afc714..9df5d594d 100644
--- a/user/qt5-qtbase/qt-musl-iconv-no-bom.patch
+++ b/user/qt5-qtbase/qt-musl-iconv-no-bom.patch
@@ -1,6 +1,6 @@
--- qtbase/src/corelib/codecs/qiconvcodec.cpp 2017-01-18 15:20:58.000000000 +0100
+++ qtbase/src/corelib/codecs/qiconvcodec.cpp 2017-02-21 14:33:32.423808603 +0100
-@@ -63,7 +63,7 @@
+@@ -61,7 +61,7 @@
#elif defined(Q_OS_AIX)
# define NO_BOM
# define UTF16 "UCS-2"
diff --git a/user/qt5-qtbase/time64.patch b/user/qt5-qtbase/time64.patch
new file mode 100644
index 000000000..76b4671c6
--- /dev/null
+++ b/user/qt5-qtbase/time64.patch
@@ -0,0 +1,62 @@
+From e06ac2e26c8490a7b8702e9462d1f38244ac3f0f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Nov 2019 08:27:39 -0800
+Subject: [PATCH] input: Make use of timeval portable for 64bit time_t
+
+This patch avoids using time field of input_event structure which is not available
+on 32bit arches supporting 64bit time_t structs, Patch makes it compatible with new
+and keeps old input.h implementation functional as well.
+
+See https://sourceware.org/glibc/wiki/Y2038ProofnessDesign
+
+Upstream-Status: Submitted [https://codereview.qt-project.org/c/qt/qtbase/+/282610]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ .../input/evdevkeyboard/qevdevkeyboardhandler.cpp | 10 +++++++++-
+ .../input/evdevtouch/qevdevtouchhandler.cpp | 2 +-
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp b/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp
+index 666613f09d..0e3e0ea0de 100644
+--- a/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp
++++ b/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp
+@@ -58,6 +58,11 @@
+ #include <linux/input.h>
+ #endif
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ QT_BEGIN_NAMESPACE
+
+ Q_LOGGING_CATEGORY(qLcEvdevKey, "qt.qpa.input")
+@@ -149,7 +154,10 @@ void QEvdevKeyboardHandler::switchLed(int led, bool state)
+ qCDebug(qLcEvdevKey) << "switchLed" << led << state;
+
+ struct ::input_event led_ie;
+- ::gettimeofday(&led_ie.time, 0);
++ struct timeval tval;
++ ::gettimeofday(&tval, 0);
++ led_ie.input_event_sec = tval.tv_sec;
++ led_ie.input_event_usec = tval.tv_usec;
+ led_ie.type = EV_LED;
+ led_ie.code = led;
+ led_ie.value = state;
+diff --git a/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp b/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp
+index f86f80785e..3914698f2a 100644
+--- a/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp
++++ b/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp
+@@ -568,7 +568,7 @@ void QEvdevTouchScreenData::processInputEvent(input_event *data)
+
+ // update timestamps
+ m_lastTimeStamp = m_timeStamp;
+- m_timeStamp = data->time.tv_sec + data->time.tv_usec / 1000000.0;
++ m_timeStamp = data->input_event_sec + data->input_event_usec / 1000000.0;
+
+ m_lastTouchPoints = m_touchPoints;
+ m_touchPoints.clear();
+--
+2.24.0
+