diff options
-rw-r--r-- | .SRCINFO | 43 | ||||
-rw-r--r-- | PKGBUILD | 156 | ||||
-rw-r--r-- | glib-honor-ExcludeSocketNotifiers-flag.diff | 63 | ||||
-rw-r--r-- | improve-cups-support.patch | 84 | ||||
-rw-r--r-- | kde4-settings.patch | 11 | ||||
-rw-r--r-- | l-qclipboard_delay.patch | 12 | ||||
-rw-r--r-- | l-qclipboard_fix_recursive.patch | 94 | ||||
-rw-r--r-- | moc-boost-workaround.patch | 12 | ||||
-rw-r--r-- | qt4-detect-gcc6.patch | 11 | ||||
-rw-r--r-- | qt4-gcc6.patch (renamed from qt-everywhere-opensource-src-4.8.7-gcc6.patch) | 3 |
10 files changed, 398 insertions, 91 deletions
@@ -1,3 +1,5 @@ +# Generated by mksrcinfo v8 +# Sat Feb 18 19:21:55 UTC 2017 pkgbase = lib32-qt4 pkgdesc = A cross-platform application and UI framework (32-bit) pkgver = 4.8.7 @@ -6,43 +8,46 @@ pkgbase = lib32-qt4 arch = x86_64 license = GPL3 license = LGPL + license = FDL + license = custom makedepends = cups - makedepends = clang makedepends = gcc-multilib - makedepends = lib32-mesa + makedepends = lib32-gtk2 makedepends = lib32-libcups makedepends = lib32-libxfixes - makedepends = lib32-gtk2 - depends = lib32-fontconfig - depends = lib32-sqlite + makedepends = lib32-mesa + depends = qt4 depends = lib32-alsa-lib - depends = lib32-glib2 depends = lib32-dbus - depends = lib32-openssl - depends = lib32-libpng - depends = lib32-libtiff - depends = lib32-libmng + depends = lib32-fontconfig + depends = lib32-glib2 depends = lib32-libgl + depends = lib32-libmng + depends = lib32-libpng depends = lib32-libsm + depends = lib32-libtiff + depends = lib32-libxi depends = lib32-libxrandr depends = lib32-libxv - depends = lib32-libxi - depends = qt4 - optdepends = lib32-libxinerama: Xinerama support + depends = lib32-openssl + depends = lib32-sqlite optdepends = lib32-libxcursor: Xcursor support optdepends = lib32-libxfixes: Xfixes support + optdepends = lib32-libxinerama: Xinerama support optdepends = lib32-sni-qt: StatusNotifierItem (AppIndicators) support conflicts = lib32-qt replaces = lib32-qt<=4.8.4 options = staticlibs - source = http://download.qt-project.org/official_releases/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz + source = http://download.qt.io/official_releases/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz + source = improve-cups-support.patch + source = moc-boost-workaround.patch source = kubuntu_14_systemtrayicon.diff + source = kde4-settings.patch + source = glib-honor-ExcludeSocketNotifiers-flag.diff source = disable-sslv3.patch - source = qt-everywhere-opensource-src-4.8.7-gcc6.patch - md5sums = d990ee66bf7ab0c785589776f35ba6ad - md5sums = a523644faa8f98a73f55c4aa23c114a6 - md5sums = 1803ab6313df762d807678e58fc85f53 - md5sums = 8ba77cd8f325c38daca8eadc982395a4 + source = l-qclipboard_fix_recursive.patch + source = l-qclipboard_delay.patch + source = qt4-gcc6.patch pkgname = lib32-qt4 @@ -1,88 +1,113 @@ -# Maintainer: Michał Lisowski <lisu@riseup.net> -# Contributor: Florian Pritz <flo@xssn.at> -# Contributor: Andrea Scarpino <andrea@archlinux.org> -# Contributor: Pierre Schmitz <pierre@archlinux.de> +# Maintainer: Llewelyn Trahaearn <woefulderelict [at] gmail [dot] com> +# Contributor: Michał Lisowski <lisu [at] riseup [dot] net> +# Contributor: Florian Pritz <flo [at] xssn [dot] at> +# Contributor: Felix Yan <felixonmars [at] archlinux [dot] org> +# Contributor: Andrea Scarpino <andrea[at] archlinux [dot] org> +# Contributor: Pierre Schmitz <pierre [at] archlinux [dot] de> -_pkgbasename=qt4 -pkgname=lib32-$_pkgbasename +pkgname=lib32-qt4 pkgver=4.8.7 pkgrel=8 pkgdesc='A cross-platform application and UI framework (32-bit)' arch=('x86_64') url='http://qt-project.org/' -license=('GPL3' 'LGPL') -depends=('lib32-fontconfig' 'lib32-sqlite' 'lib32-alsa-lib' 'lib32-glib2' - 'lib32-dbus' 'lib32-openssl' 'lib32-libpng' 'lib32-libtiff' - 'lib32-libmng' 'lib32-libgl' 'lib32-libsm' 'lib32-libxrandr' - 'lib32-libxv' 'lib32-libxi' $_pkgbasename) -optdepends=('lib32-libxinerama: Xinerama support' - 'lib32-libxcursor: Xcursor support' +license=('GPL3' 'LGPL' 'FDL' 'custom') +depends=("${pkgname#lib32-}" 'lib32-alsa-lib' 'lib32-dbus' 'lib32-fontconfig' 'lib32-glib2' + 'lib32-libgl' 'lib32-libmng' 'lib32-libpng' 'lib32-libsm' 'lib32-libtiff' + 'lib32-libxi' 'lib32-libxrandr' 'lib32-libxv' 'lib32-openssl' 'lib32-sqlite') +makedepends=('cups' 'gcc-multilib' 'lib32-gtk2' 'lib32-libcups' 'lib32-libxfixes' 'lib32-mesa') +optdepends=('lib32-libxcursor: Xcursor support' 'lib32-libxfixes: Xfixes support' + 'lib32-libxinerama: Xinerama support' 'lib32-sni-qt: StatusNotifierItem (AppIndicators) support') -makedepends=('cups' 'clang' 'gcc-multilib' 'lib32-mesa' 'lib32-libcups' - 'lib32-libxfixes' 'lib32-gtk2') options=('staticlibs') # libQtUiTools builds as static only FS#36606 +conflicts=('lib32-qt') replaces=('lib32-qt<=4.8.4') -conflicts=(lib32-qt) _pkgfqn="qt-everywhere-opensource-src-${pkgver}" -source=("http://download.qt-project.org/official_releases/qt/4.8/${pkgver}/${_pkgfqn}.tar.gz" - "kubuntu_14_systemtrayicon.diff" - "disable-sslv3.patch" - "qt-everywhere-opensource-src-4.8.7-gcc6.patch") -md5sums=('d990ee66bf7ab0c785589776f35ba6ad' - 'a523644faa8f98a73f55c4aa23c114a6' - '1803ab6313df762d807678e58fc85f53' - '8ba77cd8f325c38daca8eadc982395a4') - -export CC='clang' -export CXX='clang++' +source=("http://download.qt.io/official_releases/qt/4.8/${pkgver}/${_pkgfqn}.tar.gz" + 'improve-cups-support.patch' + 'moc-boost-workaround.patch' + 'kubuntu_14_systemtrayicon.diff' + 'kde4-settings.patch' + 'glib-honor-ExcludeSocketNotifiers-flag.diff' + 'disable-sslv3.patch' + 'l-qclipboard_fix_recursive.patch' + 'l-qclipboard_delay.patch' + 'qt4-gcc6.patch') +sha515sums=('d990ee66bf7ab0c785589776f35ba6ad' + 'c439c7731c25387352d8453ca7574971' + 'da387bde22ae1c446f12525d2a31f070' + 'a523644faa8f98a73f55c4aa23c114a6' + '66dfea63916c8dbf47b23cb012ffdccc' + '85679531c8a7310317adfb7002d9f99a' + '1803ab6313df762d807678e58fc85f53' + '009de09b4e589a7770fba74405656c99' + 'addc5e88d538ee55e17bd49ba337ca67' + '98e00c5c7e5fee12e11ecbedd03f01ff') prepare() { - cd $srcdir/$_pkgfqn + cd $_pkgfqn - export QT4DIR=$srcdir/$_pkgfqn - export LD_LIBRARY_PATH=${QT4DIR}/lib:${LD_LIBRARY_PATH} - export PKG_CONFIG_PATH="/usr/lib32/pkgconfig" + # (FS#28381) (KDEBUG#180051) + patch -p1 -i "${srcdir}"/improve-cups-support.patch + + # QTBUG#22829 + patch -p1 -i "${srcdir}"/moc-boost-workaround.patch # http://blog.martin-graesslin.com/blog/2014/06/where-are-my-systray-icons/ patch -p1 -i "${srcdir}"/kubuntu_14_systemtrayicon.diff - # disable SSLv3 - patch -p1 -i "${srcdir}"/disable-sslv3.patch + # FS#45106 + patch -p0 -i "${srcdir}"/kde4-settings.patch - # patch from Fedora, otherwise webkit will not be built (FS#51523) - patch -p1 -i "${srcdir}"/qt-everywhere-opensource-src-4.8.7-gcc6.patch + # fixes for LibreOffice from the upstream Qt bug tracker FS#46436, FS#41648, FS#39819 + # https://bugreports.qt.io/browse/QTBUG-37380 + patch -p1 -i "${srcdir}"/glib-honor-ExcludeSocketNotifiers-flag.diff + # https://bugreports.qt.io/browse/QTBUG-34614 + patch -p0 -i "${srcdir}"/l-qclipboard_fix_recursive.patch + # https://bugreports.qt.io/browse/QTBUG-38585 + patch -p0 -i "${srcdir}"/l-qclipboard_delay.patch - # some of those are likely unnecessary, but I'm too lazy to find and remove them - sed -i "/^QMAKE_LINK\s/s|g++|g++ -m32|g" mkspecs/common/g++-base.conf - sed -i "s|-O2|${CXXFLAGS} -m32|" mkspecs/common/g++-base.conf - sed -i "s|-O2|${CXXFLAGS} -m32|" mkspecs/common/gcc-base.conf + # React to OpenSSL's OPENSSL_NO_SSL3 define + patch -p1 -i "${srcdir}"/disable-sslv3.patch + + sed -i "s|-O2|${CXXFLAGS} -m32|" mkspecs/common/{g++,gcc}-base.conf sed -i "/^QMAKE_LFLAGS_RPATH/s| -Wl,-rpath,||g" mkspecs/common/gcc-base-unix.conf sed -i "/^QMAKE_LFLAGS\s/s|+=|+= ${LDFLAGS} -m32|g" mkspecs/common/gcc-base.conf + + sed -i "/^QMAKE_LINK\s/s|g++|g++ -m32|g" mkspecs/common/g++-base.conf sed -i "s|-Wl,-O1|-m32 -Wl,-O1|" mkspecs/common/g++-unix.conf sed -e "s|-O2|$CXXFLAGS -m32|" \ -e "/^QMAKE_RPATH/s| -Wl,-rpath,||g" \ -e "/^QMAKE_LINK\s/s|g++|g++ -m32|g" \ -e "/^QMAKE_LFLAGS\s/s|+=|+= $LDFLAGS|g" \ -i mkspecs/common/g++.conf + + cp mkspecs/common/linux{,32}.conf + sed -i "/^QMAKE_LIBDIR\s/s|=|= /usr/lib32|g" mkspecs/common/linux32.conf + sed -i "s|common/linux.conf|common/linux32.conf|" mkspecs/linux-g++-32/qmake.conf + + # Fix build with GCC6 (Fedora) + patch -p1 -i "$srcdir"/qt4-gcc6.patch } build() { - cd $srcdir/$_pkgfqn - export QT4DIR=$srcdir/$_pkgfqn + cd $_pkgfqn + export QT4DIR=${srcdir}/${_pkgfqn} export LD_LIBRARY_PATH=${QT4DIR}/lib:${LD_LIBRARY_PATH} - export PKG_CONFIG_PATH="/usr/lib32/pkgconfig" - - ./configure -confirm-license -opensource -v -platform linux-g++-32 \ + export CXXFLAGS+=" -std=gnu++98" # Fix build with GCC 6 + export PKG_CONFIG_LIBDIR='/usr/lib32/pkgconfig' + + ./configure -confirm-license -opensource -platform linux-g++-32 \ -prefix /usr \ - -bindir /usr/lib32/qt4/bin \ + -bindir /usr/lib/qt4/bin \ + -headerdir /usr/include/qt4 \ -libdir /usr/lib32 \ -plugindir /usr/lib32/qt4/plugins \ - -headerdir /usr/include/qt4-32 \ -importdir /usr/lib32/qt4/imports \ - -datadir /usr/share/qt \ - -translationdir /usr/share/qt/translations \ - -sysconfdir /etc \ + -datadir /usr/share/qt4 \ + -translationdir /usr/share/qt4/translations \ + -sysconfdir /etc/xdg \ -system-sqlite \ -no-phonon \ -no-phonon-backend \ @@ -92,27 +117,38 @@ build() { -nomake demos \ -nomake examples \ -nomake docs \ - -optimized-qmake \ + -silent \ -no-rpath \ + -optimized-qmake \ + -no-reduce-relocations \ -dbus-linked \ - -reduce-relocations \ -no-openvg - make } package() { - cd $srcdir/$_pkgfqn - make INSTALL_ROOT=$pkgdir install + cd $_pkgfqn + make INSTALL_ROOT="${pkgdir}" install - # Fix wrong path in pkgconfig files - find ${pkgdir}/usr/lib32/pkgconfig -type f -name '*.pc' \ + # Remove conflicting files. + rm -rf "${pkgdir}"/usr/{bin,include,lib,share} + + # install license addition + install -D -m644 LGPL_EXCEPTION.txt \ + ${pkgdir}/usr/share/licenses/${pkgname}/LGPL_EXCEPTION + + # Fix wrong libs path in pkgconfig files + find "${pkgdir}/usr/lib32/pkgconfig" -type f -name '*.pc' \ -exec perl -pi -e "s, -L${srcdir}/?\S+,,g" {} \; + + # Fix wrong bins path in pkgconfig files + find "${pkgdir}/usr/lib32/pkgconfig" -type f -name '*.pc' \ + -exec sed -i 's|/usr/bin/|/usr/lib/qt4/bin/|g' {} \; + # Fix wrong path in prl files - find ${pkgdir}/usr/lib32 -type f -name '*.prl' \ + find "${pkgdir}/usr/lib32" -type f -name '*.prl' \ -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d;s/\(QMAKE_PRL_LIBS =\).*/\1/' {} \; - rm -rf "${pkgdir}"/usr/{share,bin,tests} - mkdir -p "$pkgdir/usr/share/licenses" - ln -s $_pkgbasename "$pkgdir/usr/share/licenses/$pkgname" + # The TGA plugin is broken (FS#33568) + rm "${pkgdir}"/usr/lib32/qt4/plugins/imageformats/libqtga.so } diff --git a/glib-honor-ExcludeSocketNotifiers-flag.diff b/glib-honor-ExcludeSocketNotifiers-flag.diff new file mode 100644 index 000000000000..6949bbfef31a --- /dev/null +++ b/glib-honor-ExcludeSocketNotifiers-flag.diff @@ -0,0 +1,63 @@ +Author: Jan-Marek Glogowski <glogow@fbihome.de> +Date: Thu Mar 06 18:44:43 2014 +0100 + + Honor QEventLoop::ExcludeSocketNotifiers in glib event loop. + + Implements QEventLoop::ExcludeSocketNotifiers in the same way + QEventLoop::X11ExcludeTimers is already implemented for the glib + event loop. + +--- qt4-x11-4.8.1.orig/src/corelib/kernel/qeventdispatcher_glib.cpp ++++ qt4-x11-4.8.1/src/corelib/kernel/qeventdispatcher_glib.cpp +@@ -65,6 +65,7 @@ struct GPollFDWithQSocketNotifier + struct GSocketNotifierSource + { + GSource source; ++ QEventLoop::ProcessEventsFlags processEventsFlags; + QList<GPollFDWithQSocketNotifier *> pollfds; + }; + +@@ -80,6 +81,9 @@ static gboolean socketNotifierSourceChec + GSocketNotifierSource *src = reinterpret_cast<GSocketNotifierSource *>(source); + + bool pending = false; ++ if (src->processEventsFlags & QEventLoop::ExcludeSocketNotifiers) ++ return pending; ++ + for (int i = 0; !pending && i < src->pollfds.count(); ++i) { + GPollFDWithQSocketNotifier *p = src->pollfds.at(i); + +@@ -103,6 +107,9 @@ static gboolean socketNotifierSourceDisp + QEvent event(QEvent::SockAct); + + GSocketNotifierSource *src = reinterpret_cast<GSocketNotifierSource *>(source); ++ if (src->processEventsFlags & QEventLoop::ExcludeSocketNotifiers) ++ return true; ++ + for (int i = 0; i < src->pollfds.count(); ++i) { + GPollFDWithQSocketNotifier *p = src->pollfds.at(i); + +@@ -330,6 +337,7 @@ QEventDispatcherGlibPrivate::QEventDispa + reinterpret_cast<GSocketNotifierSource *>(g_source_new(&socketNotifierSourceFuncs, + sizeof(GSocketNotifierSource))); + (void) new (&socketNotifierSource->pollfds) QList<GPollFDWithQSocketNotifier *>(); ++ socketNotifierSource->processEventsFlags = QEventLoop::AllEvents; + g_source_set_can_recurse(&socketNotifierSource->source, true); + g_source_attach(&socketNotifierSource->source, mainContext); + +@@ -415,6 +423,7 @@ bool QEventDispatcherGlib::processEvents + // tell postEventSourcePrepare() and timerSource about any new flags + QEventLoop::ProcessEventsFlags savedFlags = d->timerSource->processEventsFlags; + d->timerSource->processEventsFlags = flags; ++ d->socketNotifierSource->processEventsFlags = flags; + + if (!(flags & QEventLoop::EventLoopExec)) { + // force timers to be sent at normal priority +@@ -426,6 +435,7 @@ bool QEventDispatcherGlib::processEvents + result = g_main_context_iteration(d->mainContext, canWait); + + d->timerSource->processEventsFlags = savedFlags; ++ d->socketNotifierSource->processEventsFlags = savedFlags; + + if (canWait) + emit awake(); diff --git a/improve-cups-support.patch b/improve-cups-support.patch new file mode 100644 index 000000000000..e0305e11b89a --- /dev/null +++ b/improve-cups-support.patch @@ -0,0 +1,84 @@ +diff -ur qt-everywhere-opensource-src-4.6.2/src/gui/dialogs/qprintdialog_unix.cpp qt-everywhere-opensource-src-4.6.2-cups/src/gui/dialogs/qprintdialog_unix.cpp +--- qt-everywhere-opensource-src-4.6.2/src/gui/dialogs/qprintdialog_unix.cpp 2010-02-11 16:55:22.000000000 +0100 ++++ qt-everywhere-opensource-src-4.6.2-cups/src/gui/dialogs/qprintdialog_unix.cpp 2010-02-28 04:34:16.000000000 +0100 +@@ -569,6 +569,32 @@ + void QPrintDialogPrivate::selectPrinter(QCUPSSupport *cups) + { + options.duplex->setEnabled(cups && cups->ppdOption("Duplex")); ++ ++ if (cups) { ++ const ppd_option_t* duplex = cups->ppdOption("Duplex"); ++ if (duplex) { ++ // copy default ppd duplex to qt dialog ++ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0) ++ options.duplexShort->setChecked(true); ++ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0) ++ options.duplexLong->setChecked(true); ++ else ++ options.noDuplex->setChecked(true); ++ } ++ ++ if (cups->currentPPD()) { ++ // set default color ++ if (cups->currentPPD()->color_device) ++ options.color->setChecked(true); ++ else ++ options.grayscale->setChecked(true); ++ } ++ ++ // set collation ++ const ppd_option_t *collate = cups->ppdOption("Collate"); ++ if (collate) ++ options.collate->setChecked(qstrcmp(collate->defchoice, "True")==0); ++ } + } + #endif + +diff -ur qt-everywhere-opensource-src-4.6.2/src/gui/painting/qprinter.cpp qt-everywhere-opensource-src-4.6.2-cups/src/gui/painting/qprinter.cpp +--- qt-everywhere-opensource-src-4.6.2/src/gui/painting/qprinter.cpp 2010-02-11 16:55:22.000000000 +0100 ++++ qt-everywhere-opensource-src-4.6.2-cups/src/gui/painting/qprinter.cpp 2010-02-28 04:55:15.000000000 +0100 +@@ -627,6 +627,44 @@ + && d_ptr->paintEngine->type() != QPaintEngine::MacPrinter) { + setOutputFormat(QPrinter::PdfFormat); + } ++ ++#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) ++ // fill in defaults from ppd file ++ QCUPSSupport cups; ++ ++ int printernum = -1; ++ for (int i = 0; i < cups.availablePrintersCount(); i++) { ++ if (printerName().toLocal8Bit() == cups.availablePrinters()[i].name) ++ printernum = i; ++ } ++ if (printernum >= 0) { ++ cups.setCurrentPrinter(printernum); ++ ++ const ppd_option_t* duplex = cups.ppdOption("Duplex"); ++ if (duplex) { ++ // copy default ppd duplex to qt dialog ++ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0) ++ setDuplex(DuplexShortSide); ++ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0) ++ setDuplex(DuplexLongSide); ++ else ++ setDuplex(DuplexNone); ++ } ++ ++ if (cups.currentPPD()) { ++ // set default color ++ if (cups.currentPPD()->color_device) ++ setColorMode(Color); ++ else ++ setColorMode(GrayScale); ++ } ++ ++ // set collation ++ const ppd_option_t *collate = cups.ppdOption("Collate"); ++ if (collate) ++ setCollateCopies(qstrcmp(collate->defchoice, "True")==0); ++ } ++#endif + } + + /*! diff --git a/kde4-settings.patch b/kde4-settings.patch new file mode 100644 index 000000000000..4af5424c581a --- /dev/null +++ b/kde4-settings.patch @@ -0,0 +1,11 @@ +--- src/gui/kernel/qkde.cpp.orig 2015-05-27 11:42:02.507129332 +0200 ++++ src/gui/kernel/qkde.cpp 2015-05-27 11:43:26.182875729 +0200 +@@ -63,7 +63,7 @@ + kdeHomePath = QString::fromLocal8Bit(qgetenv("KDEHOME")); + if (kdeHomePath.isEmpty()) { + QDir homeDir(QDir::homePath()); +- QString kdeConfDir(QLatin1String("/.kde")); ++ QString kdeConfDir(QLatin1String("/.kde4")); + if (4 == X11->desktopVersion && homeDir.exists(QLatin1String(".kde4"))) + kdeConfDir = QLatin1String("/.kde4"); + kdeHomePath = QDir::homePath() + kdeConfDir; diff --git a/l-qclipboard_delay.patch b/l-qclipboard_delay.patch new file mode 100644 index 000000000000..22643e8d5a01 --- /dev/null +++ b/l-qclipboard_delay.patch @@ -0,0 +1,12 @@ +--- src/gui/kernel/qclipboard_x11.cpp.sav 2014-04-25 09:52:03.855693228 +0200 ++++ src/gui/kernel/qclipboard_x11.cpp 2014-04-25 09:51:58.038693777 +0200 +@@ -548,7 +548,8 @@ bool QX11Data::clipboardWaitForEvent(Win + return false; + + XSync(X11->display, false); +- usleep(50000); ++ if (!XPending(X11->display)) ++ usleep(5000); + + now.start(); + diff --git a/l-qclipboard_fix_recursive.patch b/l-qclipboard_fix_recursive.patch new file mode 100644 index 000000000000..6d3bf2f2cde2 --- /dev/null +++ b/l-qclipboard_fix_recursive.patch @@ -0,0 +1,94 @@ +--- src/corelib/kernel/qeventdispatcher_glib.cpp.sav 2014-03-28 15:26:37.000000000 +0100 ++++ src/corelib/kernel/qeventdispatcher_glib.cpp 2014-04-24 09:44:09.358659204 +0200 +@@ -255,22 +255,30 @@ struct GPostEventSource + GSource source; + QAtomicInt serialNumber; + int lastSerialNumber; ++ QEventLoop::ProcessEventsFlags processEventsFlags; + QEventDispatcherGlibPrivate *d; + }; + + static gboolean postEventSourcePrepare(GSource *s, gint *timeout) + { ++ GPostEventSource *source = reinterpret_cast<GPostEventSource *>(s); + QThreadData *data = QThreadData::current(); + if (!data) + return false; + ++ QEventLoop::ProcessEventsFlags excludeAllFlags ++ = QEventLoop::ExcludeUserInputEvents ++ | QEventLoop::ExcludeSocketNotifiers ++ | QEventLoop::X11ExcludeTimers; ++ if ((source->processEventsFlags & excludeAllFlags) == excludeAllFlags) ++ return false; ++ + gint dummy; + if (!timeout) + timeout = &dummy; + const bool canWait = data->canWaitLocked(); + *timeout = canWait ? -1 : 0; + +- GPostEventSource *source = reinterpret_cast<GPostEventSource *>(s); + return (!canWait + || (source->serialNumber != source->lastSerialNumber)); + } +@@ -284,8 +292,14 @@ static gboolean postEventSourceDispatch( + { + GPostEventSource *source = reinterpret_cast<GPostEventSource *>(s); + source->lastSerialNumber = source->serialNumber; +- QCoreApplication::sendPostedEvents(); +- source->d->runTimersOnceWithNormalPriority(); ++ QEventLoop::ProcessEventsFlags excludeAllFlags ++ = QEventLoop::ExcludeUserInputEvents ++ | QEventLoop::ExcludeSocketNotifiers ++ | QEventLoop::X11ExcludeTimers; ++ if ((source->processEventsFlags & excludeAllFlags) != excludeAllFlags) { ++ QCoreApplication::sendPostedEvents(); ++ source->d->runTimersOnceWithNormalPriority(); ++ } + return true; // i dunno, george... + } + +@@ -329,6 +343,7 @@ QEventDispatcherGlibPrivate::QEventDispa + postEventSource = reinterpret_cast<GPostEventSource *>(g_source_new(&postEventSourceFuncs, + sizeof(GPostEventSource))); + postEventSource->serialNumber = 1; ++ postEventSource->processEventsFlags = QEventLoop::AllEvents; + postEventSource->d = this; + g_source_set_can_recurse(&postEventSource->source, true); + g_source_attach(&postEventSource->source, mainContext); +@@ -423,6 +438,7 @@ bool QEventDispatcherGlib::processEvents + + // tell postEventSourcePrepare() and timerSource about any new flags + QEventLoop::ProcessEventsFlags savedFlags = d->timerSource->processEventsFlags; ++ d->postEventSource->processEventsFlags = flags; + d->timerSource->processEventsFlags = flags; + d->socketNotifierSource->processEventsFlags = flags; + +@@ -435,6 +451,7 @@ bool QEventDispatcherGlib::processEvents + while (!result && canWait) + result = g_main_context_iteration(d->mainContext, canWait); + ++ d->postEventSource->processEventsFlags = savedFlags; + d->timerSource->processEventsFlags = savedFlags; + d->socketNotifierSource->processEventsFlags = savedFlags; + +--- src/corelib/kernel/qeventdispatcher_unix.cpp.sav 2013-06-07 07:16:52.000000000 +0200 ++++ src/corelib/kernel/qeventdispatcher_unix.cpp 2014-04-24 09:43:06.927589535 +0200 +@@ -905,7 +905,15 @@ bool QEventDispatcherUNIX::processEvents + + // we are awake, broadcast it + emit awake(); +- QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData); ++ ++ QEventLoop::ProcessEventsFlags excludeAllFlags ++ = QEventLoop::ExcludeUserInputEvents ++ | QEventLoop::ExcludeSocketNotifiers ++ | QEventLoop::X11ExcludeTimers; ++ if ((flags & excludeAllFlags) == excludeAllFlags) ++ return false; ++ if(( flags & excludeAllFlags ) != excludeAllFlags ) ++ QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData); + + int nevents = 0; + const bool canWait = (d->threadData->canWaitLocked() diff --git a/moc-boost-workaround.patch b/moc-boost-workaround.patch new file mode 100644 index 000000000000..027f8064dcfc --- /dev/null +++ b/moc-boost-workaround.patch @@ -0,0 +1,12 @@ +diff -upr qt-everywhere-opensource-src-4.8.6.orig/src/tools/moc/main.cpp qt-everywhere-opensource-src-4.8.6/src/tools/moc/main.cpp +--- qt-everywhere-opensource-src-4.8.6.orig/src/tools/moc/main.cpp 2014-04-10 21:37:12.000000000 +0300 ++++ qt-everywhere-opensource-src-4.8.6/src/tools/moc/main.cpp 2014-11-06 02:24:44.287305916 +0200 +@@ -190,6 +190,8 @@ int runMoc(int _argc, char **_argv) + + // Workaround a bug while parsing the boost/type_traits/has_operator.hpp header. See QTBUG-22829 + pp.macros["BOOST_TT_HAS_OPERATOR_HPP_INCLUDED"]; ++ pp.macros["BOOST_LEXICAL_CAST_INCLUDED"]; ++ pp.macros["BOOST_NEXT_PRIOR_HPP_INCLUDED"]; + + QByteArray filename; + QByteArray output; diff --git a/qt4-detect-gcc6.patch b/qt4-detect-gcc6.patch deleted file mode 100644 index d96e68a00abc..000000000000 --- a/qt4-detect-gcc6.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/configure 2016-10-25 12:32:37.284859031 +0200 -+++ b/configure 2016-10-25 12:33:02.568191269 +0200 -@@ -7734,7 +7734,7 @@ - *-g++*) - # Check gcc's version - case "$(${QMAKE_CONF_COMPILER} -dumpversion)" in -- 5*|4*|3.4*) -+ 8*|7*|6*|5*|4*|3.4*) - ;; - 3.3*) - canBuildWebKit="no" diff --git a/qt-everywhere-opensource-src-4.8.7-gcc6.patch b/qt4-gcc6.patch index aaf1c497f2f6..d65cd2463c0c 100644 --- a/qt-everywhere-opensource-src-4.8.7-gcc6.patch +++ b/qt4-gcc6.patch @@ -19,7 +19,8 @@ diff -up qt-everywhere-opensource-src-4.8.7/configure.gcc6 qt-everywhere-opensou COMPILER_VERSION="4" ;; *) -diff -up qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h.gcc6 qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h +diff -up qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h.gcc6 +qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h --- qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h.gcc6 2015-05-07 09:14:48.000000000 -0500 +++ qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h 2016-04-15 07:04:19.431268227 -0500 @@ -70,8 +70,8 @@ namespace QPatternist |