diff --git a/qt5.5/0001-Fix-QWidget-setWindowRole.patch b/qt5.5/0001-Fix-QWidget-setWindowRole.patch new file mode 100644 index 0000000000000000000000000000000000000000..f855a6cdf4223f97072f5d905274ce7f1c2c7753 --- /dev/null +++ b/qt5.5/0001-Fix-QWidget-setWindowRole.patch @@ -0,0 +1,165 @@ +From 5944a751857de997ee674a90c2e35ff3adaa655b Mon Sep 17 00:00:00 2001 +From: Alexander Volkov +Date: Mon, 8 Jun 2015 14:35:22 +0300 +Subject: [PATCH] Fix QWidget::setWindowRole() + +Introduce QXcbWindowFunctions::setWmWindowRole() and call it either from +the implementation of QWidget::setWindowRole() or after the creation of +the corresponding QWidgetWindow. + +Change-Id: I143450f4673dd707bb491c1d0f0e8b61d564283d +Task-number: QTBUG-45484 +--- + .../xcbfunctions/qxcbwindowfunctions.h | 10 ++++++++++ + src/plugins/platforms/xcb/qxcbnativeinterface.cpp | 3 +++ + src/plugins/platforms/xcb/qxcbwindow.cpp | 21 +++++++++++++++++++++ + src/plugins/platforms/xcb/qxcbwindow.h | 2 ++ + src/widgets/kernel/qwidget.cpp | 12 +++++++----- + 5 files changed, 43 insertions(+), 5 deletions(-) + +diff --git a/src/platformheaders/xcbfunctions/qxcbwindowfunctions.h b/src/platformheaders/xcbfunctions/qxcbwindowfunctions.h +index ae05cf5..a7fe8d9 100644 +--- a/src/platformheaders/xcbfunctions/qxcbwindowfunctions.h ++++ b/src/platformheaders/xcbfunctions/qxcbwindowfunctions.h +@@ -73,6 +73,16 @@ public: + func(window, type); + } + ++ typedef void (*SetWmWindowRole)(QWindow *window, const QByteArray &role); ++ static const QByteArray setWmWindowRoleIdentifier() { return QByteArrayLiteral("XcbSetWmWindowRole"); } ++ ++ static void setWmWindowRole(QWindow *window, const QByteArray &role) ++ { ++ SetWmWindowRole func = reinterpret_cast(QGuiApplication::platformFunction(setWmWindowRoleIdentifier())); ++ if (func) ++ func(window, role); ++ } ++ + typedef uint (*VisualId)(QWindow *window); + static const QByteArray visualIdIdentifier() { return QByteArrayLiteral("XcbVisualId"); } + +diff --git a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp +index 8bf9003..3cfdbde 100644 +--- a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp ++++ b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp +@@ -392,6 +392,9 @@ QFunctionPointer QXcbNativeInterface::platformFunction(const QByteArray &functio + if (function == QXcbWindowFunctions::setWmWindowTypeIdentifier()) { + return QFunctionPointer(QXcbWindow::setWmWindowTypeStatic); + } ++ if (function == QXcbWindowFunctions::setWmWindowRoleIdentifier()) { ++ return QFunctionPointer(QXcbWindow::setWmWindowRoleStatic); ++ } + if (function == QXcbWindowFunctions::visualIdIdentifier()) { + return QFunctionPointer(QXcbWindowFunctions::VisualId(QXcbWindow::visualIdStatic)); + } +diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp +index 6e021ce..edf68d4 100644 +--- a/src/plugins/platforms/xcb/qxcbwindow.cpp ++++ b/src/plugins/platforms/xcb/qxcbwindow.cpp +@@ -322,6 +322,7 @@ static inline XTextProperty* qstringToXTP(Display *dpy, const QString& s) + #endif // XCB_USE_XLIB + + static const char *wm_window_type_property_id = "_q_xcb_wm_window_type"; ++static const char *wm_window_role_property_id = "_q_xcb_wm_window_role"; + + QXcbWindow::QXcbWindow(QWindow *window) + : QPlatformWindow(window) +@@ -660,6 +661,11 @@ void QXcbWindow::create() + setOpacity(opacity); + if (window()->isTopLevel()) + setWindowIcon(window()->icon()); ++ ++ if (window()->dynamicPropertyNames().contains(wm_window_type_property_id)) { ++ QByteArray wmWindowRole = window()->property(wm_window_type_property_id).toByteArray(); ++ setWmWindowRole(wmWindowRole); ++ } + } + + QXcbWindow::~QXcbWindow() +@@ -1674,6 +1680,14 @@ void QXcbWindow::setWmWindowTypeStatic(QWindow *window, QXcbWindowFunctions::WmW + static_cast(window->handle())->setWmWindowType(windowTypes, window->flags()); + } + ++void QXcbWindow::setWmWindowRoleStatic(QWindow *window, const QByteArray &role) ++{ ++ if (window->handle()) ++ static_cast(window->handle())->setWmWindowRole(role); ++ else ++ window->setProperty(wm_window_role_property_id, role); ++} ++ + uint QXcbWindow::visualIdStatic(QWindow *window) + { + if (window && window->handle()) +@@ -1839,6 +1853,13 @@ void QXcbWindow::setWmWindowType(QXcbWindowFunctions::WmWindowTypes types, Qt::W + xcb_flush(xcb_connection()); + } + ++void QXcbWindow::setWmWindowRole(const QByteArray &role) ++{ ++ Q_XCB_CALL(xcb_change_property(xcb_connection(), XCB_PROP_MODE_REPLACE, m_window, ++ atom(QXcbAtom::WM_WINDOW_ROLE), XCB_ATOM_STRING, 8, ++ role.size(), role.constData())); ++} ++ + class ExposeCompressor + { + public: +diff --git a/src/plugins/platforms/xcb/qxcbwindow.h b/src/plugins/platforms/xcb/qxcbwindow.h +index a379a6f..15d5c1b 100644 +--- a/src/plugins/platforms/xcb/qxcbwindow.h ++++ b/src/plugins/platforms/xcb/qxcbwindow.h +@@ -140,10 +140,12 @@ public: + void updateNetWmUserTime(xcb_timestamp_t timestamp); + + static void setWmWindowTypeStatic(QWindow *window, QXcbWindowFunctions::WmWindowTypes windowTypes); ++ static void setWmWindowRoleStatic(QWindow *window, const QByteArray &role); + static uint visualIdStatic(QWindow *window); + + QXcbWindowFunctions::WmWindowTypes wmWindowTypes() const; + void setWmWindowType(QXcbWindowFunctions::WmWindowTypes types, Qt::WindowFlags flags); ++ void setWmWindowRole(const QByteArray &role); + + uint visualId() const; + +diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp +index bd77e7f..4b64490 100644 +--- a/src/widgets/kernel/qwidget.cpp ++++ b/src/widgets/kernel/qwidget.cpp +@@ -100,6 +100,7 @@ + + #include "qwindowcontainer_p.h" + ++#include "QtPlatformHeaders/qxcbwindowfunctions.h" + + // widget/widget data creation count + //#define QWIDGET_EXTRA_DEBUG +@@ -1451,6 +1452,9 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO + + data.window_flags = win->flags(); + ++ if (!topData()->role.isNull()) ++ QXcbWindowFunctions::setWmWindowRole(win, topData()->role.toLatin1()); ++ + QBackingStore *store = q->backingStore(); + + if (!store) { +@@ -6254,13 +6258,11 @@ QString QWidget::windowRole() const + */ + void QWidget::setWindowRole(const QString &role) + { +-#if defined(Q_DEAD_CODE_FROM_QT4_X11) + Q_D(QWidget); ++ d->createTLExtra(); + d->topData()->role = role; +- d->setWindowRole(); +-#else +- Q_UNUSED(role) +-#endif ++ if (windowHandle()) ++ QXcbWindowFunctions::setWmWindowRole(windowHandle(), role.toLatin1()); + } + + /*! +-- +2.3.5 diff --git a/qt5.5/0005-Restore-documented-behavior-for-the-WA_X11NetWmWindo.patch b/qt5.5/0005-Restore-documented-behavior-for-the-WA_X11NetWmWindo.patch new file mode 100644 index 0000000000000000000000000000000000000000..8351c7fb5879ed0c4ed930bc19a7ab05ce91dd32 --- /dev/null +++ b/qt5.5/0005-Restore-documented-behavior-for-the-WA_X11NetWmWindo.patch @@ -0,0 +1,116 @@ +From 5e5031527a3b443c93bf9e762c2f47e6786d7a31 Mon Sep 17 00:00:00 2001 +From: Alexander Volkov +Date: Thu, 7 May 2015 17:36:57 +0300 +Subject: [PATCH] Restore documented behavior for the WA_X11NetWmWindowType* + attributes + +Use QXcbWindowFunctions::setWmWindowType() to add the corresponding +types to the window's _NET_WM_WINDOW_TYPE X11 window property. + +Change-Id: Ia2413ad7a69ab8d49b448de11dd07c77101a564c +Task-number: QTBUG-39887 +--- + src/widgets/kernel/qwidget.cpp | 44 ++++++++++++++++++++++++++++++++++++++---- + src/widgets/kernel/qwidget_p.h | 3 ++- + 2 files changed, 42 insertions(+), 5 deletions(-) + +diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp +index 2c9cc5c..0f05280 100644 +--- a/src/widgets/kernel/qwidget.cpp ++++ b/src/widgets/kernel/qwidget.cpp +@@ -1414,6 +1414,7 @@ void QWidgetPrivate::create_sys(WId wind + win->setProperty("_q_showWithoutActivating", QVariant(true)); + if (q->testAttribute(Qt::WA_MacAlwaysShowToolWindow)) + win->setProperty("_q_macAlwaysShowToolWindow", QVariant::fromValue(QVariant(true))); ++ setNetWmWindowTypes(); + win->setFlags(data.window_flags); + fixPosIncludesFrame(); + if (q->testAttribute(Qt::WA_Moved) +@@ -11149,7 +11150,6 @@ void QWidget::setAttribute(Qt::WidgetAtt + break; + } + +-#ifdef Q_DEAD_CODE_FROM_QT4_X11 + case Qt::WA_X11NetWmWindowTypeDesktop: + case Qt::WA_X11NetWmWindowTypeDock: + case Qt::WA_X11NetWmWindowTypeToolBar: +@@ -11163,10 +11163,8 @@ void QWidget::setAttribute(Qt::WidgetAtt + case Qt::WA_X11NetWmWindowTypeNotification: + case Qt::WA_X11NetWmWindowTypeCombo: + case Qt::WA_X11NetWmWindowTypeDND: +- if (testAttribute(Qt::WA_WState_Created)) +- d->setNetWmWindowTypes(); ++ d->setNetWmWindowTypes(); + break; +-#endif + + case Qt::WA_StaticContents: + if (QWidgetBackingStore *bs = d->maybeBackingStore()) { +@@ -12823,6 +12821,44 @@ void QWidgetPrivate::setWidgetParentHelp + widget->setParent(static_cast(newParent)); + } + ++void QWidgetPrivate::setNetWmWindowTypes() ++{ ++ Q_Q(QWidget); ++ ++ if (!q->windowHandle()) ++ return; ++ ++ int wmWindowType = 0; ++ if (q->testAttribute(Qt::WA_X11NetWmWindowTypeDesktop)) ++ wmWindowType |= QXcbWindowFunctions::Desktop; ++ if (q->testAttribute(Qt::WA_X11NetWmWindowTypeDock)) ++ wmWindowType |= QXcbWindowFunctions::Dock; ++ if (q->testAttribute(Qt::WA_X11NetWmWindowTypeToolBar)) ++ wmWindowType |= QXcbWindowFunctions::Toolbar; ++ if (q->testAttribute(Qt::WA_X11NetWmWindowTypeMenu)) ++ wmWindowType |= QXcbWindowFunctions::Menu; ++ if (q->testAttribute(Qt::WA_X11NetWmWindowTypeUtility)) ++ wmWindowType |= QXcbWindowFunctions::Utility; ++ if (q->testAttribute(Qt::WA_X11NetWmWindowTypeSplash)) ++ wmWindowType |= QXcbWindowFunctions::Splash; ++ if (q->testAttribute(Qt::WA_X11NetWmWindowTypeDialog)) ++ wmWindowType |= QXcbWindowFunctions::Dialog; ++ if (q->testAttribute(Qt::WA_X11NetWmWindowTypeDropDownMenu)) ++ wmWindowType |= QXcbWindowFunctions::DropDownMenu; ++ if (q->testAttribute(Qt::WA_X11NetWmWindowTypePopupMenu)) ++ wmWindowType |= QXcbWindowFunctions::PopupMenu; ++ if (q->testAttribute(Qt::WA_X11NetWmWindowTypeToolTip)) ++ wmWindowType |= QXcbWindowFunctions::Tooltip; ++ if (q->testAttribute(Qt::WA_X11NetWmWindowTypeNotification)) ++ wmWindowType |= QXcbWindowFunctions::Notification; ++ if (q->testAttribute(Qt::WA_X11NetWmWindowTypeCombo)) ++ wmWindowType |= QXcbWindowFunctions::Combo; ++ if (q->testAttribute(Qt::WA_X11NetWmWindowTypeDND)) ++ wmWindowType |= QXcbWindowFunctions::Dnd; ++ ++ QXcbWindowFunctions::setWmWindowType(q->windowHandle(), static_cast(wmWindowType)); ++} ++ + /*! \fn Qt::HANDLE QWidget::macCGHandle() const + \internal + +diff --git a/src/widgets/kernel/qwidget_p.h b/src/widgets/kernel/qwidget_p.h +index fe65cb1..dc1c580 100644 +--- a/src/widgets/kernel/qwidget_p.h ++++ b/src/widgets/kernel/qwidget_p.h +@@ -752,7 +752,6 @@ public: + + void setWindowRole(); + void sendStartupMessage(const char *message) const; +- void setNetWmWindowTypes(); + void x11UpdateIsOpaque(); + bool isBackgroundInherited() const; + void updateX11AcceptFocus(); +@@ -849,6 +848,8 @@ public: + static bool qt_widget_rgn(QWidget *, short, RgnHandle, bool); + void registerTouchWindow(bool enable = true); + #endif ++ void setNetWmWindowTypes(); ++ + bool stealKeyboardGrab(bool grab); + bool stealMouseGrab(bool grab); + }; +-- +2.3.5 diff --git a/qt5.5/PKGBUILD b/qt5.5/PKGBUILD new file mode 100644 index 0000000000000000000000000000000000000000..089fda2a6dab5eeca7d01c063f958cec6b5e6d3b --- /dev/null +++ b/qt5.5/PKGBUILD @@ -0,0 +1,611 @@ +# +# QT Packages for Chakra, part of chakra-project.org +# +# maintainer: Fabian Kosmale +# heavily sto^H^H^H inspired by Andrea Scarpino' PKGBUILD from Arch + +pkgbase=qt5 +pkgname=('qt5-base' + 'qt5-3d' + 'qt5-canvas3d' + 'qt5-connectivity' + 'qt5-declarative' + 'qt5-doc' + 'qt5-enginio' + 'qt5-graphicaleffects' + 'qt5-imageformats' + 'qt5-location' + 'qt5-multimedia' + 'qt5-quick1' + 'qt5-quickcontrols' + 'qt5-script' + 'qt5-sensors' + 'qt5-serialport' + 'qt5-svg' + 'qt5-tools' + 'qt5-translations' + 'qt5-wayland' + 'qt5-webchannel' + 'qt5-webengine' + 'qt5-webkit' + 'qt5-websockets' + 'qt5-x11extras' + 'qt5-xmlpatterns') +pkgver=5.5.1 +pkgrel=5 +arch=('x86_64') +url='http://qt-project.org/' +license=('GPL3' 'LGPL' 'FDL' 'custom') +makedepends=('libxcb' 'xcb-proto' 'xcb-util' 'xcb-util-image' 'xcb-util-wm' 'xcb-util-keysyms' 'xcb-util-renderutil' + 'mesa' 'at-spi2-core' 'alsa-lib' + 'libjpeg-turbo' 'cups' 'libpulse' 'hicolor-icon-theme' 'desktop-file-utils' + 'postgresql-libs' 'libmariadbclient' 'sqlite3' 'unixodbc' 'libmng' + 'python2' 'ruby' 'gperf' 'libxslt' 'libxcomposite' 'fontconfig' 'bluez' + 'openal' 'libxkbcommon-x11' 'mtdev' 'harfbuzz' 'libwebp' 'leveldb' + 'libxcursor' 'libsm' 'libxrandr' 'libxv' 'libxi' + 'xdg-utils' 'desktop-file-utils' 'libxinerama' 'libxfixes' + 'geoclue' 'pciutils' 'nss' + 'gstreamer' 'gst-plugins-base' 'gst-plugins-good' + 'gst-plugins-bad' 'gst-plugins-ugly' 'harfbuzz' 'pkg-config' + 'libinput' 'yasm' 'git') +_pkgfqn="qt-everywhere-opensource-src-${pkgver}" +source=("http://download.qt-project.org/official_releases/qt/${pkgver%.*}/${pkgver}/single/${_pkgfqn}.tar.xz" + # qt 5.6 + 'vlc-qt5.patch::https://563458.bugs.gentoo.org/attachment.cgi?id=415738' # fixed in qt 5.6 + '0001-Fix-QWidget-setWindowRole.patch' + '0005-Restore-documented-behavior-for-the-WA_X11NetWmWindo.patch' + 'libqt5-do-not-use-shm-if-display-name-doesnt-look-local.patch' + 'xcb-dont-crash-in-mapToNativemapFromNative-if-the-screen-is-null.patch' + 'xcb-fix-yet-another-crash-when-screens-are-disconnected.patch' + 'xcb-glXGetCurrentDisplay-return-null-1.patch::https://github.com/qtproject/qtbase/commit/c8af3160d2514fb973a0d00d5bac324d4f7159f7.patch' + 'xcb-glXGetCurrentDisplay-return-null-2.patch::https://github.com/qtproject/qtbase/commit/e8ad49d6cba6521f20b1b08bf65d92fc81c158e4.patch' + # not yet upstream + 'libqt5-Fix-Gujarati-font.patch' + 'assistant-qt5.desktop' 'designer-qt5.desktop' 'linguist-qt5.desktop' 'qtconfig-qt5.desktop' + 'qmlviewer.desktop' + 'qdbusviewer-qt5.desktop') +sha1sums=('5933651d46691ff6e919a49f5a380b9a217d30fb' + 'c7403ec1c2a1189a661e087b2117d25759b9cc58' + 'f0f7287a1967cd9d0208517f4682c040e5ad25f5' + '4dabcdf77de5325eba5890f356157c006b095cc9' + 'eb1fa717a650e95276bcd9f29b97fdb576c90337' + '06e29fffec05e9eae0553a69cc0b8804c8fc537c' + '27af3d679b8bd9fbb98d994b01f270dfa8c475ff' + 'd67baddee28774ef4f2f1e2d14ef7a8c892139e4' + 'd87664b0d898c86c404e0c6e31ba31a82adb2f16' + 'd5dc1de05f00fa9eabce400ef11e7932ed8af550' + '0862a4a39b74d0e447181d7eca31580c9d580bc8' + 'b63cab2c86505b594e32b32ae43524090fcb7d29' + '303e0deab3ef3f1ca84856aa2e35b096bcb6b849' + '2e0b6245c40c91fbb0a965724450b6d6883f2927' + 'b0e6c61b8364eb3f7af4dae41fa7738c3181dd96' + '1295012599b5335f24b6945bc7ee312093339ec4') + +_prlfix() { + # Fix wrong path in prl files + find "${pkgdir}/usr/lib" -type f -name '*.prl' \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d;s/\(QMAKE_PRL_LIBS =\).*/\1/' {} \; +} + +prepare() { + cd ${_pkgfqn} + + pushd . + cd qtbase + patch -Np1 -i ../../vlc-qt5.patch # fixed in qt 5.6 + + patch -Np1 -i ../../0001-Fix-QWidget-setWindowRole.patch + patch -Np1 -i ../../0005-Restore-documented-behavior-for-the-WA_X11NetWmWindo.patch + patch -Np1 -i ../../libqt5-Fix-Gujarati-font.patch + patch -Np1 -i ../../libqt5-do-not-use-shm-if-display-name-doesnt-look-local.patch + patch -Np1 -i ../../xcb-dont-crash-in-mapToNativemapFromNative-if-the-screen-is-null.patch + patch -Np1 -i ../../xcb-fix-yet-another-crash-when-screens-are-disconnected.patch + patch -Np1 -i ../../xcb-glXGetCurrentDisplay-return-null-1.patch + patch -Np1 -i ../../xcb-glXGetCurrentDisplay-return-null-2.patch + popd + + sed -i "s|-O2|${CXXFLAGS}|" qtbase/mkspecs/common/{g++,gcc}-base.conf + sed -i "/^QMAKE_LFLAGS_RPATH/s| -Wl,-rpath,||g" qtbase/mkspecs/common/gcc-base-unix.conf + sed -i "/^QMAKE_LFLAGS\s/s|+=|+= ${LDFLAGS}|g" qtbase/mkspecs/common/gcc-base.conf + + # Use python2 for Python 2.x + find . -name '*.py' -exec sed -i \ + 's|#![ ]*/usr/bin/python$|&2|;s|#![ ]*/usr/bin/env python$|&2|' {} + + # in qtwebengine there are still a lot of relative calls which need a workaround + mkdir -p "${srcdir}"/python2-path + ln -sf /usr/bin/python2 "${srcdir}"/python2-path/python + + # Try to enable proprietary_codecs and use some system yasm + sed -e 's/contains(WEBENGINE_CONFIG, proprietary_codecs): //' \ + -e '/use_system_ffmpeg=0"/a GYP_ARGS += "-Duse_system_yasm=1"' \ + -i qtwebengine/src/core/gyp_run.pro +} + +build() { + cd $srcdir/$_pkgfqn + # reenable patch later + # patch -p1 -i "$srcdir/defaultbookmarks_new.diff" + + export QTDIR="${srcdir}"/${_pkgfqn} + export LD_LIBRARY_PATH="${QTDIR}"/qtbase/lib:"${QTDIR}"/qttools/lib:"${LD_LIBRARY_PATH}" + export QT_PLUGIN_PATH="${QTDIR}"/qtbase/plugins + + # python2 workaround + export PATH="${srcdir}/python2-path:$PATH" + export _xkbconfigroot=$(pkg-config --variable=xkb_base xkeyboard-config) + + PYTHON=/usr/bin/python2 ./configure -confirm-license -opensource \ + -prefix /usr \ + -bindir /usr/lib/qt5/bin \ + -docdir /usr/share/doc/qt5 \ + -force-debug-info \ + -headerdir /usr/include/qt5 \ + -archdatadir /usr/lib/qt5 \ + -datadir /usr/share/qt5 \ + -sysconfdir /etc/xdg \ + -examplesdir /usr/share/qt5/examples \ + -plugindir /usr/lib/qt5/plugins \ + -importdir /usr/lib/qt5/imports \ + -qmldir /usr/lib/qt5/qml \ + -testsdir /usr/share/qt5/tests \ + -translationdir /usr/share/qt5/translations \ + -plugin-sql-{psql,mysql,sqlite,odbc} \ + -system-sqlite \ + -openssl-linked \ + -nomake examples \ + -no-rpath \ + -optimized-qmake \ + -dbus-linked \ + -system-harfbuzz \ + -journald \ + -libinput \ + -reduce-relocations \ + -no-gtkstyle \ + -opengl desktop \ + -feature-menu \ + -feature-textdate \ + -xkb-config-root $_xkbconfigroot \ + -system-xkbcommon \ + -no-libproxy \ + -gstreamer 1.0 \ + -feature-ftp \ + -xcursor + + make + + # Fix docs build when qt is not installed + sed -i "s|/usr/lib/qt5/bin/qdoc|${QTDIR}/qtbase/bin/qdoc|g" \ + "${QTDIR}"/qtbase/qmake/Makefile.qmake-docs + find "${QTDIR}" -name Makefile \ + -exec sed -i "s|/usr/lib/qt5/bin/qdoc|${QTDIR}/qtbase/bin/qdoc|g" {} + + sed -i "s|/usr/lib/qt5/bin/qhelpgenerator|${QTDIR}/qttools/bin/qhelpgenerator|g" \ + "${QTDIR}"/qtbase/qmake/Makefile.qmake-docs + find "${QTDIR}" -name Makefile \ + -exec sed -i "s|/usr/lib/qt5/bin/qhelpgenerator|${QTDIR}/qttools/bin/qhelpgenerator|g" {} + + sed -i "s|/usr/lib/qt5/bin/qhelpgenerator|${QTDIR}/qttools/bin/qhelpgenerator|g" \ + qtwebkit/Source/Makefile.api + find "${QTDIR}" -name Makefile \ + -exec sed -i "s|/usr/lib/qt5/bin/qmlplugindump|${QTDIR}/qtdeclarative/bin/qmlplugindump|g" {} + + + make docs +} + +package_qt5-3d() { + pkgdesc='Provides functionality for near-realtime simulation systems with support for 2D and 3D rendering in both Qt C++ and Qt Quick applications' + depends=('qt5-base' 'qt5-declarative') + provides=("qt5-qt3d=${pkgver}") + options=("debug") + + cd ${_pkgfqn}/qt3d + make INSTALL_ROOT="${pkgdir}" install + + _prlfix +} + +package_qt5-base() { + pkgdesc='A cross-platform application and UI framework' + depends=('libtiff' 'libpng' 'libmng' 'sqlite3' 'ca-certificates' 'glib2' 'dbus' + 'fontconfig' 'libgl' 'libsm' 'libxrandr' 'libxv' 'libxi' 'alsa-lib' 'ruby' + 'xdg-utils' 'hicolor-icon-theme' 'desktop-file-utils' 'libxinerama' 'libxcursor' + 'pulseaudio' 'gstreamer' 'gst-plugins-base' 'gst-plugins-ugly' 'gst-plugins-good' + 'xcb-util-image' 'xcb-util-keysyms' + 'xcb-util-renderutil' 'xcb-util-wm' 'libxkbcommon-x11' 'libinput') + optdepends=('postgresql-libs: PostgreSQL driver' + 'libmariadbclient: MariaDB driver' + 'unixodbc: ODBC driver' + 'mtdev: evdev plugin' + 'libxfixes: Xfixes support') + conflicts=('qt5' 'qt5-private-headers') + replaces=('qt5-private-headers') + options=("staticlibs" "debug") + + cd ${_pkgfqn}/qtbase + make INSTALL_ROOT="${pkgdir}" install + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt + + _prlfix + + # Fix wrong qmake path in pri file + sed -i "s|${srcdir}/${_pkgfqn}/qtbase|/usr|" \ + "${pkgdir}"/usr/lib/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri + + # create some symlinks in /usr/bin, postfixed with -qt5 + mkdir -p ${pkgdir}/usr/bin + for i in $(ls ${pkgdir}/usr/lib/qt5/bin); do + ln -s /usr/lib/qt5/bin/${i} ${pkgdir}/usr/bin/${i}-qt5 + done +} + +package_qt5-canvas3d() { + pkgdesc='Provides a way to make OpenGL-like 3D drawing calls from Qt Quick JavaScript' + depends=('qt5-declarative' 'qt5-base') + options=("debug") + + cd ${_pkgfqn}/qtcanvas3d + make INSTALL_ROOT="${pkgdir}" install + + _prlfix +} + +package_qt5-connectivity() { + pkgdesc='Provides access to Bluetooth hardware' + depends=('qt5-declarative' 'bluez') + options=("debug") + + cd ${_pkgfqn}/qtconnectivity + make INSTALL_ROOT="${pkgdir}" install + + _prlfix + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + +package_qt5-declarative() { + pkgdesc='Classes for QML and JavaScript languages' + depends=('qt5-xmlpatterns' 'libxkbcommon-x11') + options=("debug") + conflicts=('qt5') + + cd ${_pkgfqn}/qtdeclarative + make INSTALL_ROOT="${pkgdir}" install + + _prlfix + + # create some symlinks in /usr/bin, postfixed with -qt5 + install -d "${pkgdir}"/usr/bin + for i in $(ls ${pkgdir}/usr/lib/qt5/bin); do + ln -s /usr/lib/qt5/bin/${i} ${pkgdir}/usr/bin/${i}-qt5 + done +} + +package_qt5-doc() { + pkgdesc='A cross-platform application and UI framework (Documentation)' + depends=('qt5-base') + arch=('any') + options=('docs' '!emptydirs') + + cd ${_pkgfqn} + make INSTALL_ROOT="${pkgdir}" install_docs + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + +package_qt5-enginio() { + pkgdesc='A Backend-as-a-Service solution to ease the backend development for connected and data-driven application' + depends=('qt5-declarative') + options=("debug") + + cd ${_pkgfqn}/qtenginio + make INSTALL_ROOT="${pkgdir}" install + + _prlfix + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + +package_qt5-xmlpatterns() { + pkgdesc='Support for XPath, XQuery, XSLT and XML schema validation' + depends=('qt5-base') + conflicts=('qt5') + options=("debug") + + cd ${_pkgfqn}/qtxmlpatterns + make INSTALL_ROOT="${pkgdir}" install + + _prlfix + + # create some symlinks in /usr/bin, postfixed with -qt5 + install -d "${pkgdir}"/usr/bin + for i in $(ls ${pkgdir}/usr/lib/qt5/bin); do + ln -s /usr/lib/qt5/bin/${i} ${pkgdir}/usr/bin/${i}-qt5 + done + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + +package_qt5-translations() { + pkgdesc='A cross-platform application and UI framework (Translations)' + depends=('qt5-base') + conflicts=('qt5') + options=("debug") + + cd ${_pkgfqn}/qttranslations + make INSTALL_ROOT="${pkgdir}" install + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + +package_qt5-multimedia() { + pkgdesc='A cross-platform application and UI framework (QtMultimedia)' + depends=('qt5-declarative' 'libpulse' 'gstreamer' 'openal') + conflicts=('qt5') + options=("debug") + + cd ${_pkgfqn}/qtmultimedia + make INSTALL_ROOT="${pkgdir}" install + + _prlfix +} + +package_qt5-graphicaleffects() { + pkgdesc='Graphical effects for use with Qt Quick 2' + depends=('qt5-declarative') + conflicts=('qt5') + options=("debug") + + cd ${_pkgfqn}/qtgraphicaleffects + make INSTALL_ROOT="${pkgdir}" install + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + +package_qt5-imageformats() { + pkgdesc='Plugins for additional image formats: TIFF, MNG, TGA, WBMP' + depends=('qt5-base' 'jasper' 'libmng' 'libwebp') + conflicts=('qt5') + options=("debug") + + cd ${_pkgfqn}/qtimageformats + make INSTALL_ROOT="${pkgdir}" install + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + +package_qt5-location() { + pkgdesc='Provides access to position, satellite and area monitoring classes' + depends=('qt5-declarative' 'geoclue') + options=("debug") + + cd ${_pkgfqn}/qtlocation + make INSTALL_ROOT="${pkgdir}" install + + _prlfix + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + +package_qt5-quick1() { + pkgdesc='Qt Declarative is provided for Qt 4 compatibility' + depends=('qt5-webkit' 'qt5-script') + conflicts=('qt5') + options=("debug") + + cd ${_pkgfqn}/qtquick1 + make INSTALL_ROOT="${pkgdir}" install + + _prlfix + + # create some symlinks in /usr/bin, postfixed with -qt5 + install -d "${pkgdir}"/usr/bin + for i in $(ls ${pkgdir}/usr/lib/qt5/bin); do + ln -s /usr/lib/qt5/bin/${i} ${pkgdir}/usr/bin/${i}-qt5 + done + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + +package_qt5-quickcontrols() { + pkgdesc='Reusable Qt Quick based UI controls to create classic desktop-style user interfaces' + depends=('qt5-declarative') + conflicts=('qt5') + options=("debug") + + cd ${_pkgfqn}/qtquickcontrols + make INSTALL_ROOT="${pkgdir}" install +} + +package_qt5-script() { + pkgdesc='Classes for making Qt applications scriptable. Provided for Qt 4.x compatibility' + depends=('qt5-base') + conflicts=('qt5') + options=("debug") + + cd ${_pkgfqn}/qtscript + make INSTALL_ROOT="${pkgdir}" install + + _prlfix + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + +package_qt5-sensors() { + pkgdesc='Provides access to sensor hardware and motion gesture recognition' + depends=('qt5-declarative') + conflicts=('qt5') + options=("debug") + + cd ${_pkgfqn}/qtsensors + make INSTALL_ROOT="${pkgdir}" install + + _prlfix + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + +package_qt5-serialport() { + pkgdesc='Provides access to hardware and virtual serial ports' + depends=('qt5-base') + conflicts=('qt5') + options=("debug") + + cd ${_pkgfqn}/qtserialport + make INSTALL_ROOT="${pkgdir}" install + + _prlfix + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + +package_qt5-svg() { + pkgdesc='Classes for displaying the contents of SVG files' + depends=('qt5-base') + conflicts=('qt5') + options=("debug") + + cd ${_pkgfqn}/qtsvg + make INSTALL_ROOT="${pkgdir}" install + + _prlfix + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + +package_qt5-tools() { + pkgdesc='A cross-platform application and UI framework (Development Tools, QtHelp)' + depends=('qt5-webkit' 'desktop-file-utils' 'qt5-translations' 'hicolor-icon-theme' + 'xdg-utils') + optdepends=('qt5-doc: documentation') + conflicts=('qt5') + options=("staticlibs" "debug") + + cd ${_pkgfqn}/qttools + make INSTALL_ROOT="${pkgdir}" install + + # install missing icons and desktop files + for icon in src/linguist/linguist/images/icons/linguist-*-32.png ; do + size=$(echo $(basename ${icon}) | cut -d- -f2) + install -p -D -m644 ${icon} \ + "${pkgdir}/usr/share/icons/hicolor/${size}x${size}/apps/linguist-qt5.png" + done + + install -D -m644 src/assistant/assistant/images/assistant.png \ + "${pkgdir}/usr/share/icons/hicolor/32x32/apps/assistant-qt5.png" + install -D -m644 src/assistant/assistant/images/assistant-128.png \ + "${pkgdir}/usr/share/icons/hicolor/128x128/apps/assistant-qt5.png" + install -D -m644 src/designer/src/designer/images/designer.png \ + "${pkgdir}/usr/share/icons/hicolor/128x128/apps/designer-qt5.png" + install -D -m644 src/qdbus/qdbusviewer/images/qdbusviewer.png \ + "${pkgdir}/usr/share/icons/hicolor/32x32/apps/qdbusviewer-qt5.png" + install -D -m644 src/qdbus/qdbusviewer/images/qdbusviewer-128.png \ + "${pkgdir}/usr/share/icons/hicolor/128x128/apps/qdbusviewer-qt5.png" + install -d "${pkgdir}/usr/share/applications" + install -m644 "${srcdir}"/{linguist-qt5,designer-qt5,assistant-qt5,qdbusviewer-qt5}.desktop \ + "${pkgdir}/usr/share/applications/" + + _prlfix + + # create some symlinks in /usr/bin, postfixed with -qt5 + mkdir -p ${pkgdir}/usr/bin + for i in $(ls ${pkgdir}/usr/lib/qt5/bin); do + ln -s /usr/lib/qt5/bin/${i} ${pkgdir}/usr/bin/${i}-qt5 + done + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + +package_qt5-webkit() { + pkgdesc='Classes for a WebKit2 based implementation and a new QML API' + depends=('qt5-sensors' 'qt5-location' 'qt5-webchannel' 'gst-plugins-base' 'libxslt' + 'libxcomposite' 'libwebp') + optdepends=('gst-plugins-good: Webm codec support') + options=("debug") + license=('GPL3' 'LGPL' 'FDL') + + cd ${_pkgfqn}/qtwebkit + make INSTALL_ROOT="${pkgdir}" install + + _prlfix + + # Fix wrong path in pc file + perl -pi -e "s, -L${srcdir}/?\S+,,g" "${pkgdir}"/usr/lib/pkgconfig/Qt5WebKit.pc +} + +package_qt5-wayland() { + pkgdesc='Provides APIs for Wayland' + depends=('qt5-base' 'libxcomposite' 'libxkbcommon') + options=("debug") + + cd ${_pkgfqn}/qtwayland + make INSTALL_ROOT="${pkgdir}" install + + _prlfix + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + +package_qt5-webchannel() { + pkgdesc='Provides access to QObject or QML objects from HTML clients for seamless integration of Qt applications with HTML/JavaScript clients' + depends=('qt5-declarative') + options=("debug") + + cd ${_pkgfqn}/qtwebchannel + make INSTALL_ROOT="${pkgdir}" install + + _prlfix + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + +package_qt5-webengine() { + pkgdesc='Provides support for web applications using the Chromium browser project' + depends=('qt5-declarative' 'nss' 'libxtst' 'libxcursor' 'libxrandr' 'alsa-lib' 'libxcomposite') + options=("debug") + license=('LGPL') + + cd ${_pkgfqn}/qtwebengine + make INSTALL_ROOT="${pkgdir}" install + + rm -rf "${pkgdir}"/usr/share/doc +} + +package_qt5-websockets() { + pkgdesc='Provides WebSocket communication compliant with RFC 6455' + depends=('qt5-declarative') + options=("debug") + license=('LGPL') + + cd ${_pkgfqn}/qtwebsockets + make INSTALL_ROOT="${pkgdir}" install + + _prlfix +} + +package_qt5-x11extras() { + pkgdesc='Provides platform-specific APIs for X11' + depends=('qt5-base') + conflicts=('qt5') + options=("debug") + + cd ${_pkgfqn}/qtx11extras + make INSTALL_ROOT="${pkgdir}" install + + _prlfix +} diff --git a/qt5.5/assistant-qt5.desktop b/qt5.5/assistant-qt5.desktop new file mode 100644 index 0000000000000000000000000000000000000000..f0db528f6b1153eb45b8a9c57e3850f6edf0a64b --- /dev/null +++ b/qt5.5/assistant-qt5.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Qt Assistant +Comment=Shows Qt documentation and examples +Exec=/usr/bin/assistant-qt5 +Icon=assistant +Terminal=false +Encoding=UTF-8 +Type=Application +Categories=Qt;Development;Documentation; diff --git a/qt5.5/browser.desktop b/qt5.5/browser.desktop new file mode 100644 index 0000000000000000000000000000000000000000..88707131d9fbb6535a7ba621243d211e45ed4fc5 --- /dev/null +++ b/qt5.5/browser.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Browser +Comment=Qt5 simple webbrowser +Exec=/opt/qt5/examples/webkitwidgets/browser/browser +Icon=qtlogo +Terminal=false +Encoding=UTF-8 +Type=Application +Categories=Qt;Network;WebBrowser; + diff --git a/qt5.5/defaultbookmarks_new.diff b/qt5.5/defaultbookmarks_new.diff new file mode 100644 index 0000000000000000000000000000000000000000..6b407030b6dd48c28dfcabea4100dedda90331bf --- /dev/null +++ b/qt5.5/defaultbookmarks_new.diff @@ -0,0 +1,47 @@ +--- a/qtwebkit-examples-and-demos/examples/webkitwidgets/browser/data/defaultbookmarks.xbel 2012-12-18 14:04:47.000000000 -0500 ++++ b/qtwebkit-examples-and-demos/examples/webkitwidgets/browser/data/defaultbookmarks.xbel 2012-12-30 12:56:20.837594558 -0500 +@@ -4,34 +4,25 @@ + + Bookmarks Bar + +- Qt Home Page ++ Qt Home + + + WebKit.org + + +- Qt Documentation +- +- +- Qt Quarterly +- +- +- Qt Blog +- +- +- Qt Centre ++ Qt Docs + +- +- Qt-Apps.org ++ ++ Chakra-Project + +- +- Online Communities ++ ++ Forum + +- +- xkcd ++ ++ IRC + +- +- Twitter ++ ++ YouTube/html5 + + + diff --git a/qt5.5/designer-qt5.desktop b/qt5.5/designer-qt5.desktop new file mode 100644 index 0000000000000000000000000000000000000000..b15d6b10045092c31b68ab6b3dff31157b3a7b33 --- /dev/null +++ b/qt5.5/designer-qt5.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Qt Designer +GenericName=Interface Designer +Comment=Design GUIs for Qt applications +Exec=/usr/bin/designer-qt5 +Icon=designer +MimeType=application/x-designer; +Terminal=false +Encoding=UTF-8 +Type=Application +Categories=Qt;Development; diff --git a/qt5.5/libqt5-Fix-Gujarati-font.patch b/qt5.5/libqt5-Fix-Gujarati-font.patch new file mode 100644 index 0000000000000000000000000000000000000000..09226696210ffa79bf736c60919c4ea61891dd89 --- /dev/null +++ b/qt5.5/libqt5-Fix-Gujarati-font.patch @@ -0,0 +1,14 @@ +--- + src/gui/text/qtextengine.cpp | 1 + + 1 file changed, 1 insertion(+) + +--- a/src/gui/text/qtextengine.cpp ++++ b/src/gui/text/qtextengine.cpp +@@ -1640,6 +1640,7 @@ void QTextEngine::itemize() const + case QChar::Script_Katakana: + case QChar::Script_Bopomofo: + case QChar::Script_Han: ++ case QChar::Script_Gujarati: + analysis[i].script = QChar::Script_Common; + break; + default: diff --git a/qt5.5/libqt5-do-not-use-shm-if-display-name-doesnt-look-local.patch b/qt5.5/libqt5-do-not-use-shm-if-display-name-doesnt-look-local.patch new file mode 100644 index 0000000000000000000000000000000000000000..dc49cd4db7ff916d533ca5e6667eae00f4f51096 --- /dev/null +++ b/qt5.5/libqt5-do-not-use-shm-if-display-name-doesnt-look-local.patch @@ -0,0 +1,39 @@ +Do not use SHM if display name doesn't look local. + +Verifying availability of SHM only by using response of SHM Attach is not +reliable. There is always small chance that when we are a remote client of X +server, we'll get shmid that is already in use by some local X client. In that +case X server can not recognize that it is not accessing our shared memory but +the one of the other client and will report success. + +This adds check for display name equivalent to one that was in Qt4. Determining +whether the connection is local/remote from display name is not 100% reliable, +but worked fine for years in Qt4. + +Signed-off-by: Michal Srb +diff --git a/src/plugins/platforms/xcb/qxcbbackingstore.cpp b/src/plugins/platforms/xcb/qxcbbackingstore.cpp +index dc677cd..4cd249e 100644 +--- a/src/plugins/platforms/xcb/qxcbbackingstore.cpp ++++ b/src/plugins/platforms/xcb/qxcbbackingstore.cpp +@@ -118,7 +118,8 @@ QXcbShmImage::QXcbShmImage(QXcbScreen *s + m_shm_info.shmseg = xcb_generate_id(xcb_connection()); + + const xcb_query_extension_reply_t *shm_reply = xcb_get_extension_data(xcb_connection(), &xcb_shm_id); +- bool shm_present = shm_reply != NULL && shm_reply->present; ++ bool is_local = (!displayName() || displayName()[0] == ':'); ++ bool shm_present = is_local && shm_reply != NULL && shm_reply->present; + xcb_generic_error_t *error = NULL; + if (shm_present) + error = xcb_request_check(xcb_connection(), xcb_shm_attach_checked(xcb_connection(), m_shm_info.shmseg, m_shm_info.shmid, false)); +diff --git a/src/plugins/platforms/xcb/qxcbobject.h b/src/plugins/platforms/xcb/qxcbobject.h +index 354984c..2ecb5e7 100644 +--- a/src/plugins/platforms/xcb/qxcbobject.h ++++ b/src/plugins/platforms/xcb/qxcbobject.h +@@ -48,6 +48,7 @@ public: + + xcb_atom_t atom(QXcbAtom::Atom atom) const { return m_connection->atom(atom); } + xcb_connection_t *xcb_connection() const { return m_connection->xcb_connection(); } ++ const char *displayName() const { return m_connection->displayName(); } + + private: + QXcbConnection *m_connection; diff --git a/qt5.5/linguist-qt5.desktop b/qt5.5/linguist-qt5.desktop new file mode 100644 index 0000000000000000000000000000000000000000..08cc5a385b152954c1382df543d88fc93322ef0a --- /dev/null +++ b/qt5.5/linguist-qt5.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Qt Linguist +Comment=Add translations to Qt applications +Exec=/usr/bin/linguist-qt5 +Icon=linguist +MimeType=text/vnd.trolltech.linguist;application/x-linguist; +Terminal=false +Encoding=UTF-8 +Type=Application +Categories=Qt;Development; diff --git a/qt5.5/qdbusviewer-qt5.desktop b/qt5.5/qdbusviewer-qt5.desktop new file mode 100644 index 0000000000000000000000000000000000000000..5cb3257943d6a8cdb4e7a1a071064642ccd21b33 --- /dev/null +++ b/qt5.5/qdbusviewer-qt5.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Qt QDbusViewer +GenericName=D-Bus Debugger +Comment=Debug D-Bus applications +Exec=/usr/lib/qt5/bin/qdbusviewer +Icon=qdbusviewer +Terminal=false +Type=Application +Categories=Qt;Development;Debugger; diff --git a/qt5.5/qmlviewer.desktop b/qt5.5/qmlviewer.desktop new file mode 100644 index 0000000000000000000000000000000000000000..9bbbef80ca227bf9856bc8638fd32395b26ef0f5 --- /dev/null +++ b/qt5.5/qmlviewer.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=QmlViewer +Comment=Qt5 qml viewer +Exec=/usr/lib/qt5/bin/qmlviewer +Icon=qtlogo +Terminal=false +Encoding=UTF-8 +Type=Application +Categories=Qt;AudioVideo;Player; + diff --git a/qt5.5/qt.install b/qt5.5/qt.install new file mode 100644 index 0000000000000000000000000000000000000000..20d655a1518464169a0d2cadd82740ae44cec4ca --- /dev/null +++ b/qt5.5/qt.install @@ -0,0 +1,33 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + update-desktop-database -q + + echo " " + echo " > Qt 4.8" + echo " " + echo " Prefix: /usr" + echo " " + echo " > ATTENTION " + echo " This version of qt is no longer a split package:" + echo " " + echo " qt-tools is integrated in qt" + echo " qt-doc, qt-demos and qt-examples are one new package" + echo " Please install with sudo pacman -S qt-docs" + echo " " + echo " > IMPORTANT " + echo " Be sure to install one of the Phonon backends:" + echo " " + echo " phonon-backend-gstreamer (default)" + echo " phonon-backend-mplayer" + echo " phonon-backend-vlc" + echo " phonon-backend-xine" + echo " " +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/qt5.5/qtconfig-qt5.desktop b/qt5.5/qtconfig-qt5.desktop new file mode 100644 index 0000000000000000000000000000000000000000..46dcf9e3d755abcb55169f67b74b5d3a9e78d718 --- /dev/null +++ b/qt5.5/qtconfig-qt5.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Qt Config +Comment=Configure Qt behavior, styles, fonts +Exec=/usr/bin/qtconfig +Icon=qtlogo +Terminal=false +Encoding=UTF-8 +Type=Application +Categories=Qt;Settings; +NoDisplay=true diff --git a/qt5.5/xcb-dont-crash-in-mapToNativemapFromNative-if-the-screen-is-null.patch b/qt5.5/xcb-dont-crash-in-mapToNativemapFromNative-if-the-screen-is-null.patch new file mode 100644 index 0000000000000000000000000000000000000000..1a05804f9b644507862babbffc9337e670cb0261 --- /dev/null +++ b/qt5.5/xcb-dont-crash-in-mapToNativemapFromNative-if-the-screen-is-null.patch @@ -0,0 +1,57 @@ +From c2dd0bb2c7a0468abefb9556dead85456daa851f Mon Sep 17 00:00:00 2001 +From: Shawn Rutledge +Date: Fri, 4 Sep 2015 14:25:15 +0200 +Subject: [PATCH] xcb: don't crash in mapToNative/mapFromNative if the screen + is null + +The results will be wrong, but it only happens in rare cases anyway. + +Task-number: QTBUG-42985 +Task-number: QTBUG-47385 +Change-Id: I6438f219f175af2b118e6b3af16b5b626136defa +--- + src/plugins/platforms/xcb/qxcbwindow.cpp | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp +index 4fdebe1..3b589d2 100644 +--- a/src/plugins/platforms/xcb/qxcbwindow.cpp ++++ b/src/plugins/platforms/xcb/qxcbwindow.cpp +@@ -179,6 +179,8 @@ QXcbScreen *QXcbWindow::parentScreen() + + QPoint QXcbWindow::mapToNative(const QPoint &pos, const QXcbScreen *screen) const + { ++ if (!screen) ++ return pos; + if (parent()) + return pos * int(screen->devicePixelRatio()); + else +@@ -186,6 +188,8 @@ QPoint QXcbWindow::mapToNative(const QPoint &pos, const QXcbScreen *screen) cons + } + QPoint QXcbWindow::mapFromNative(const QPoint &pos, const QXcbScreen *screen) const + { ++ if (!screen) ++ return pos; + if (parent()) + return pos / int(screen->devicePixelRatio()); + else +@@ -193,6 +197,8 @@ QPoint QXcbWindow::mapFromNative(const QPoint &pos, const QXcbScreen *screen) co + } + QRect QXcbWindow::mapToNative(const QRect &rect, const QXcbScreen *screen) const + { ++ if (!screen) ++ return rect; + if (parent()) + return mapLocalGeometryToNative(rect, int(screen->devicePixelRatio())); + else +@@ -200,6 +206,8 @@ QRect QXcbWindow::mapToNative(const QRect &rect, const QXcbScreen *screen) const + } + QRect QXcbWindow::mapFromNative(const QRect &rect, const QXcbScreen *screen) const + { ++ if (!screen) ++ return rect; + if (parent()) + return mapLocalGeometryFromNative(rect, int(screen->devicePixelRatio())); + else +-- +2.3.5 diff --git a/qt5.5/xcb-fix-yet-another-crash-when-screens-are-disconnected.patch b/qt5.5/xcb-fix-yet-another-crash-when-screens-are-disconnected.patch new file mode 100644 index 0000000000000000000000000000000000000000..14cf6e44f7bf5f925d7bbb9294468a34363b3465 --- /dev/null +++ b/qt5.5/xcb-fix-yet-another-crash-when-screens-are-disconnected.patch @@ -0,0 +1,36 @@ +From d72da0b4b2ee089156d1bd614523838b1635bbf5 Mon Sep 17 00:00:00 2001 +From: Shawn Rutledge +Date: Fri, 4 Sep 2015 13:27:48 +0200 +Subject: [PATCH] xcb: fix yet another crash when screens are disconnected + +Can't assume that m_screens is not an empty list. + +Task-number: QTBUG-42985 +Change-Id: I6f9422638c219123dc898813910d03c7afbd1450 +Reviewed-by: Uli Schlachter +Reviewed-by: Laszlo Agocs +--- + src/plugins/platforms/xcb/qxcbconnection.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp +index f65437f..c35b019 100644 +--- a/src/plugins/platforms/xcb/qxcbconnection.cpp ++++ b/src/plugins/platforms/xcb/qxcbconnection.cpp +@@ -1300,10 +1300,12 @@ void QXcbConnection::sendConnectionEvent(QXcbAtom::Atom a, uint id) + memset(&event, 0, sizeof(event)); + + const xcb_window_t eventListener = xcb_generate_id(m_connection); ++ xcb_screen_iterator_t it = xcb_setup_roots_iterator(m_setup); ++ xcb_screen_t *screen = it.data; + Q_XCB_CALL(xcb_create_window(m_connection, XCB_COPY_FROM_PARENT, +- eventListener, m_screens.at(0)->root(), ++ eventListener, screen->root, + 0, 0, 1, 1, 0, XCB_WINDOW_CLASS_INPUT_ONLY, +- m_screens.at(0)->screen()->root_visual, 0, 0)); ++ screen->root_visual, 0, 0)); + + event.response_type = XCB_CLIENT_MESSAGE; + event.format = 32; +-- +2.3.5