From 125048ad7d212c1f226b709697505b0ee6a079e4 Mon Sep 17 00:00:00 2001 From: Patrick J Volkerding Date: Sat, 4 May 2019 01:29:20 +0000 Subject: Sat May 4 01:29:20 UTC 2019 d/gcc-9.1.0-x86_64-1.txz: Upgraded. d/gcc-brig-9.1.0-x86_64-1.txz: Upgraded. d/gcc-g++-9.1.0-x86_64-1.txz: Upgraded. d/gcc-gfortran-9.1.0-x86_64-1.txz: Upgraded. d/gcc-gnat-9.1.0-x86_64-1.txz: Upgraded. d/gcc-go-9.1.0-x86_64-1.txz: Upgraded. Shared library .so-version bump. d/gcc-objc-9.1.0-x86_64-1.txz: Upgraded. d/libtool-2.4.6-x86_64-11.txz: Rebuilt. Recompiled to update embedded GCC version number. d/llvm-8.0.0-x86_64-2.txz: Rebuilt. Recompiled with -DLLVM_INSTALL_UTILS=ON. Thanks to Lockywolf. d/swig-4.0.0-x86_64-1.txz: Upgraded. l/glib2-2.60.2-x86_64-1.txz: Upgraded. l/qt-4.8.7-x86_64-13.txz: Rebuilt. Patched to fix FTBFS with gcc9 (also fixes FTBFS with qtscriptgenerator and possibly other projects that use qt4). --- ChangeLog.rss | 31 +- ChangeLog.txt | 19 + FILELIST.TXT | 315 +++-- recompress.sh | 73 +- source/d/gcc/gcc.SlackBuild | 12 +- .../1-8-asm-qualifiers-PR55681.patch | 351 ----- .../patches/revert-asm-inline/2-8-asm-inline.patch | 577 -------- .../3-8-c-Delete-a-stray-line-in-asm-inline.patch | 45 - ...e-asm-qualifier-loop-without-done-boolean.patch | 194 --- ...-nicer-error-for-duplicate-asm-qualifiers.patch | 269 ---- ...sm-Use-nicer-error-for-const-and-restrict.patch | 167 --- ...andle-any-asm-qualifiers-in-top-level-asm.patch | 103 -- ...or-for-const-or-restrict-as-asm-qualifier.patch | 58 - source/d/libtool/libtool.SlackBuild | 2 +- source/d/llvm/llvm.SlackBuild | 3 +- source/d/swig/swig.SlackBuild | 10 +- source/l/qt/patches/qt-4.8-poll.patch | 812 +++++++++++ source/l/qt/patches/qt-aarch64.patch | 514 +++++++ source/l/qt/patches/qt-cupsEnumDests.patch | 238 ++++ .../qt-everywhere-opensource-src-4.6.2-cups.patch | 84 ++ ...source-src-4.6.3-glib_eventloop_nullcheck.patch | 69 + ...erywhere-opensource-src-4.8.0-QTBUG-22037.patch | 41 + ...erywhere-opensource-src-4.8.0-s390-atomic.patch | 20 + ...opensource-src-4.8.0-tp-multilib-optflags.patch | 36 + ...-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch | 12 + ...e-opensource-src-4.8.1-linguist_qmake-qt4.patch | 27 + ...opensource-src-4.8.1-qt3support_debuginfo.patch | 10 + ...ere-opensource-src-4.8.2--assistant-crash.patch | 13 + ...rywhere-opensource-src-4.8.3-icu_no_debug.patch | 23 + ...everywhere-opensource-src-4.8.3-no_Werror.patch | 12 + ...source-src-4.8.3-qdbusconnection_no_debug.patch | 14 + ...rc-4.8.4-qmake_pkgconfig_requires_private.patch | 16 + ...erywhere-opensource-src-4.8.5-QTBUG-14467.patch | 24 + ...erywhere-opensource-src-4.8.5-QTBUG-21900.patch | 84 ++ ...erywhere-opensource-src-4.8.5-QTBUG-35459.patch | 12 + ...verywhere-opensource-src-4.8.5-QTBUG-4862.patch | 29 + ...rywhere-opensource-src-4.8.5-mysql_config.patch | 19 + ...c-4.8.5-qgtkstyle_disable_gtk_theme_check.patch | 22 + ...where-opensource-src-4.8.5-qt_plugin_path.patch | 19 + ...ensource-src-4.8.5-tds_no_strict_aliasing.patch | 12 + ...rywhere-opensource-src-4.8.5-uic_multilib.patch | 28 + ...re-opensource-src-4.8.5-webcore_debuginfo.patch | 16 + ...erywhere-opensource-src-4.8.6-QTBUG-22829.patch | 17 + ...erywhere-opensource-src-4.8.6-QTBUG-34614.patch | 94 ++ ...erywhere-opensource-src-4.8.6-QTBUG-37380.patch | 63 + ...erywhere-opensource-src-4.8.6-QTBUG-38585.patch | 12 + .../qt-everywhere-opensource-src-4.8.6-s390.patch | 31 + ...where-opensource-src-4.8.6-system-clucene.patch | 351 +++++ ...where-opensource-src-4.8.6-systemtrayicon.patch | 1456 +++++++++++++++++++ ...ere-opensource-src-4.8.7-QT_VERSION_CHECK.patch | 12 + ...-everywhere-opensource-src-4.8.7-alsa-1.1.patch | 137 ++ ...opensource-src-4.8.7-crash-in-qppmhandler.patch | 12 + ...-everywhere-opensource-src-4.8.7-firebird.patch | 45 + .../qt-everywhere-opensource-src-4.8.7-gcc6.patch | 35 + ...ywhere-opensource-src-4.8.7-gcc8_qtscript.patch | 13 + .../qt-everywhere-opensource-src-4.8.7-icu59.patch | 28 + ...t-everywhere-opensource-src-4.8.7-mariadb.patch | 28 + ...qt-everywhere-opensource-src-4.8.7-mips64.patch | 13 + ...erywhere-opensource-src-4.8.7-openssl-1.1.patch | 694 +++++++++ ...-everywhere-opensource-src-4.8.7-qforeach.patch | 40 + ...rywhere-opensource-src-4.8.7-qmake_LFLAGS.patch | 12 + .../l/qt/patches/qt-prefer_adwaita_on_gnome.patch | 17 + ...ensource-src-4.5.0-fix-qatomic-inline-asm.patch | 50 + ...-opensource-src-4.5.1-enable_ft_lcdfilter.patch | 12 + source/l/qt/qt-nowebkit.SlackBuild | 98 +- source/l/qt/qt.QTBUG-22829.diff | 17 - source/l/qt/qt.QTBUG-35459.diff | 12 - source/l/qt/qt.QT_VERSION_CHECK.diff | 12 - source/l/qt/qt.alsa-1.1.diff | 12 - source/l/qt/qt.fix.broken.gif.crash.diff | 16 - source/l/qt/qt.gcc6.diff | 35 - .../qt.glib-honor-ExcludeSocketNotifiers-flag.diff | 63 - source/l/qt/qt.icu4c.nodebug.diff | 23 - source/l/qt/qt.icu59.c++11.diff | 28 - source/l/qt/qt.icu59.patch | 11 - source/l/qt/qt.mysql.h.diff | 12 - source/l/qt/qt.qclipboard_delay.patch | 12 - source/l/qt/qt.qclipboard_fix_recursive.patch | 94 -- source/l/qt/qt.qsystemtrayicon-plugin-system.diff | 1466 -------------------- source/l/qt/qt.qtreeview.crash.diff | 12 - source/l/qt/qt.webkit-no_Werror.patch | 11 - source/l/qt/qt4.openssl-1.1.diff | 646 --------- 82 files changed, 5701 insertions(+), 4486 deletions(-) delete mode 100644 source/d/gcc/patches/revert-asm-inline/1-8-asm-qualifiers-PR55681.patch delete mode 100644 source/d/gcc/patches/revert-asm-inline/2-8-asm-inline.patch delete mode 100644 source/d/gcc/patches/revert-asm-inline/3-8-c-Delete-a-stray-line-in-asm-inline.patch delete mode 100644 source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch delete mode 100644 source/d/gcc/patches/revert-asm-inline/5-8-c-c-asm-Use-nicer-error-for-duplicate-asm-qualifiers.patch delete mode 100644 source/d/gcc/patches/revert-asm-inline/6-8-c-c-asm-Use-nicer-error-for-const-and-restrict.patch delete mode 100644 source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch delete mode 100644 source/d/gcc/patches/revert-asm-inline/8-8-c-Don-t-error-for-const-or-restrict-as-asm-qualifier.patch create mode 100644 source/l/qt/patches/qt-4.8-poll.patch create mode 100644 source/l/qt/patches/qt-aarch64.patch create mode 100644 source/l/qt/patches/qt-cupsEnumDests.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.6.2-cups.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-no_Werror.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-mysql_config.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-34614.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-38585.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-s390.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-system-clucene.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-crash-in-qppmhandler.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-firebird.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc6.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-icu59.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mariadb.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mips64.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qforeach.patch create mode 100644 source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch create mode 100644 source/l/qt/patches/qt-prefer_adwaita_on_gnome.patch create mode 100644 source/l/qt/patches/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch create mode 100644 source/l/qt/patches/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch delete mode 100644 source/l/qt/qt.QTBUG-22829.diff delete mode 100644 source/l/qt/qt.QTBUG-35459.diff delete mode 100644 source/l/qt/qt.QT_VERSION_CHECK.diff delete mode 100644 source/l/qt/qt.alsa-1.1.diff delete mode 100644 source/l/qt/qt.fix.broken.gif.crash.diff delete mode 100644 source/l/qt/qt.gcc6.diff delete mode 100644 source/l/qt/qt.glib-honor-ExcludeSocketNotifiers-flag.diff delete mode 100644 source/l/qt/qt.icu4c.nodebug.diff delete mode 100644 source/l/qt/qt.icu59.c++11.diff delete mode 100644 source/l/qt/qt.icu59.patch delete mode 100644 source/l/qt/qt.mysql.h.diff delete mode 100644 source/l/qt/qt.qclipboard_delay.patch delete mode 100644 source/l/qt/qt.qclipboard_fix_recursive.patch delete mode 100644 source/l/qt/qt.qsystemtrayicon-plugin-system.diff delete mode 100644 source/l/qt/qt.qtreeview.crash.diff delete mode 100644 source/l/qt/qt.webkit-no_Werror.patch delete mode 100644 source/l/qt/qt4.openssl-1.1.diff diff --git a/ChangeLog.rss b/ChangeLog.rss index 55750d135..81c6ba725 100644 --- a/ChangeLog.rss +++ b/ChangeLog.rss @@ -11,9 +11,36 @@ Tracking Slackware development in git. en-us urn:uuid:c964f45e-6732-11e8-bbe5-107b4450212f - Thu, 2 May 2019 21:37:38 GMT - Fri, 3 May 2019 06:59:42 GMT + Sat, 4 May 2019 01:29:20 GMT + Sat, 4 May 2019 06:59:43 GMT maintain_current_git.sh v 1.11 + + Sat, 4 May 2019 01:29:20 GMT + Sat, 4 May 2019 01:29:20 GMT + https://git.slackware.nl/current/tag/?h=20190504012920 + 20190504012920 + + +d/gcc-9.1.0-x86_64-1.txz: Upgraded. +d/gcc-brig-9.1.0-x86_64-1.txz: Upgraded. +d/gcc-g++-9.1.0-x86_64-1.txz: Upgraded. +d/gcc-gfortran-9.1.0-x86_64-1.txz: Upgraded. +d/gcc-gnat-9.1.0-x86_64-1.txz: Upgraded. +d/gcc-go-9.1.0-x86_64-1.txz: Upgraded. + Shared library .so-version bump. +d/gcc-objc-9.1.0-x86_64-1.txz: Upgraded. +d/libtool-2.4.6-x86_64-11.txz: Rebuilt. + Recompiled to update embedded GCC version number. +d/llvm-8.0.0-x86_64-2.txz: Rebuilt. + Recompiled with -DLLVM_INSTALL_UTILS=ON. Thanks to Lockywolf. +d/swig-4.0.0-x86_64-1.txz: Upgraded. +l/glib2-2.60.2-x86_64-1.txz: Upgraded. +l/qt-4.8.7-x86_64-13.txz: Rebuilt. + Patched to fix FTBFS with gcc9 (also fixes FTBFS with qtscriptgenerator and + possibly other projects that use qt4). + ]]> + + Thu, 2 May 2019 21:37:38 GMT Thu, 2 May 2019 21:37:38 GMT diff --git a/ChangeLog.txt b/ChangeLog.txt index a7f1aafad..904487d6b 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,3 +1,22 @@ +Sat May 4 01:29:20 UTC 2019 +d/gcc-9.1.0-x86_64-1.txz: Upgraded. +d/gcc-brig-9.1.0-x86_64-1.txz: Upgraded. +d/gcc-g++-9.1.0-x86_64-1.txz: Upgraded. +d/gcc-gfortran-9.1.0-x86_64-1.txz: Upgraded. +d/gcc-gnat-9.1.0-x86_64-1.txz: Upgraded. +d/gcc-go-9.1.0-x86_64-1.txz: Upgraded. + Shared library .so-version bump. +d/gcc-objc-9.1.0-x86_64-1.txz: Upgraded. +d/libtool-2.4.6-x86_64-11.txz: Rebuilt. + Recompiled to update embedded GCC version number. +d/llvm-8.0.0-x86_64-2.txz: Rebuilt. + Recompiled with -DLLVM_INSTALL_UTILS=ON. Thanks to Lockywolf. +d/swig-4.0.0-x86_64-1.txz: Upgraded. +l/glib2-2.60.2-x86_64-1.txz: Upgraded. +l/qt-4.8.7-x86_64-13.txz: Rebuilt. + Patched to fix FTBFS with gcc9 (also fixes FTBFS with qtscriptgenerator and + possibly other projects that use qt4). ++--------------------------+ Thu May 2 21:37:38 UTC 2019 a/kernel-firmware-20190502_92e17d0-noarch-1.txz: Upgraded. a/kernel-generic-4.19.38-x86_64-1.txz: Upgraded. diff --git a/FILELIST.TXT b/FILELIST.TXT index 1e9e2f375..cc62e8da0 100644 --- a/FILELIST.TXT +++ b/FILELIST.TXT @@ -1,20 +1,20 @@ -Thu May 2 21:50:06 UTC 2019 +Sat May 4 01:41:14 UTC 2019 Here is the file list for this directory. If you are using a mirror site and find missing or extra files in the disk subdirectories, please have the archive administrator refresh the mirror. -drwxr-xr-x 12 root root 4096 2019-05-02 21:37 . +drwxr-xr-x 12 root root 4096 2019-05-04 01:29 . -rw-r--r-- 1 root root 10064 2016-06-30 18:39 ./ANNOUNCE.14_2 -rw-r--r-- 1 root root 14341 2018-11-29 05:40 ./CHANGES_AND_HINTS.TXT --rw-r--r-- 1 root root 913678 2019-05-01 20:01 ./CHECKSUMS.md5 --rw-r--r-- 1 root root 163 2019-05-01 20:01 ./CHECKSUMS.md5.asc +-rw-r--r-- 1 root root 913680 2019-05-02 21:50 ./CHECKSUMS.md5 +-rw-r--r-- 1 root root 163 2019-05-02 21:50 ./CHECKSUMS.md5.asc -rw-r--r-- 1 root root 17976 1994-06-10 02:28 ./COPYING -rw-r--r-- 1 root root 35147 2007-06-30 04:21 ./COPYING3 -rw-r--r-- 1 root root 19573 2016-06-23 20:08 ./COPYRIGHT.TXT -rw-r--r-- 1 root root 616 2006-10-02 04:37 ./CRYPTO_NOTICE.TXT --rw-r--r-- 1 root root 620320 2019-05-02 21:37 ./ChangeLog.txt +-rw-r--r-- 1 root root 621130 2019-05-04 01:29 ./ChangeLog.txt drwxr-xr-x 3 root root 4096 2013-03-20 22:17 ./EFI drwxr-xr-x 2 root root 4096 2019-05-02 21:37 ./EFI/BOOT -rw-r--r-- 1 root root 1253376 2018-02-24 20:49 ./EFI/BOOT/bootx64.efi @@ -25,9 +25,9 @@ drwxr-xr-x 2 root root 4096 2019-05-02 21:37 ./EFI/BOOT -rwxr-xr-x 1 root root 2494 2018-02-24 20:49 ./EFI/BOOT/make-grub.sh -rw-r--r-- 1 root root 10722 2013-09-21 19:02 ./EFI/BOOT/osdetect.cfg -rw-r--r-- 1 root root 1273 2013-08-12 21:08 ./EFI/BOOT/tools.cfg --rw-r--r-- 1 root root 1201679 2019-05-01 20:00 ./FILELIST.TXT +-rw-r--r-- 1 root root 1201681 2019-05-02 21:50 ./FILELIST.TXT -rw-r--r-- 1 root root 1572 2012-08-29 18:27 ./GPG-KEY --rw-r--r-- 1 root root 732383 2019-05-02 21:47 ./PACKAGES.TXT +-rw-r--r-- 1 root root 732382 2019-05-04 01:39 ./PACKAGES.TXT -rw-r--r-- 1 root root 8564 2016-06-28 21:33 ./README.TXT -rw-r--r-- 1 root root 3635 2019-05-02 20:16 ./README.initrd -rw-r--r-- 1 root root 34412 2017-12-01 17:44 ./README_CRYPT.TXT @@ -786,11 +786,11 @@ drwxr-xr-x 2 root root 4096 2012-09-20 18:06 ./patches -rw-r--r-- 1 root root 575 2012-09-20 18:06 ./patches/FILE_LIST -rw-r--r-- 1 root root 14 2012-09-20 18:06 ./patches/MANIFEST.bz2 -rw-r--r-- 1 root root 224 2012-09-20 18:06 ./patches/PACKAGES.TXT -drwxr-xr-x 18 root root 4096 2019-05-02 21:48 ./slackware64 --rw-r--r-- 1 root root 290566 2019-05-02 21:48 ./slackware64/CHECKSUMS.md5 --rw-r--r-- 1 root root 163 2019-05-02 21:48 ./slackware64/CHECKSUMS.md5.asc --rw-r--r-- 1 root root 361941 2019-05-02 21:45 ./slackware64/FILE_LIST --rw-r--r-- 1 root root 3647716 2019-05-02 21:46 ./slackware64/MANIFEST.bz2 +drwxr-xr-x 18 root root 4096 2019-05-04 01:39 ./slackware64 +-rw-r--r-- 1 root root 290563 2019-05-04 01:39 ./slackware64/CHECKSUMS.md5 +-rw-r--r-- 1 root root 163 2019-05-04 01:39 ./slackware64/CHECKSUMS.md5.asc +-rw-r--r-- 1 root root 361940 2019-05-04 01:36 ./slackware64/FILE_LIST +-rw-r--r-- 1 root root 3654325 2019-05-04 01:37 ./slackware64/MANIFEST.bz2 lrwxrwxrwx 1 root root 15 2009-08-23 23:34 ./slackware64/PACKAGES.TXT -> ../PACKAGES.TXT drwxr-xr-x 2 root root 28672 2019-05-02 21:45 ./slackware64/a -rw-r--r-- 1 root root 327 2018-06-24 18:44 ./slackware64/a/aaa_base-14.2-x86_64-5.txt @@ -1389,7 +1389,7 @@ drwxr-xr-x 2 root root 20480 2019-05-01 19:56 ./slackware64/ap -rw-r--r-- 1 root root 506 2019-02-04 20:25 ./slackware64/ap/zsh-5.7.1-x86_64-1.txt -rw-r--r-- 1 root root 3008036 2019-02-04 20:25 ./slackware64/ap/zsh-5.7.1-x86_64-1.txz -rw-r--r-- 1 root root 163 2019-02-04 20:25 ./slackware64/ap/zsh-5.7.1-x86_64-1.txz.asc -drwxr-xr-x 2 root root 20480 2019-05-02 21:45 ./slackware64/d +drwxr-xr-x 2 root root 20480 2019-05-04 01:36 ./slackware64/d -rw-r--r-- 1 root root 360 2019-04-14 18:06 ./slackware64/d/Cython-0.29.7-x86_64-1.txt -rw-r--r-- 1 root root 3072512 2019-04-14 18:06 ./slackware64/d/Cython-0.29.7-x86_64-1.txz -rw-r--r-- 1 root root 163 2019-04-14 18:06 ./slackware64/d/Cython-0.29.7-x86_64-1.txz.asc @@ -1432,27 +1432,27 @@ drwxr-xr-x 2 root root 20480 2019-05-02 21:45 ./slackware64/d -rw-r--r-- 1 root root 371 2018-04-13 13:42 ./slackware64/d/flex-2.6.4-x86_64-3.txt -rw-r--r-- 1 root root 281556 2018-04-13 13:42 ./slackware64/d/flex-2.6.4-x86_64-3.txz -rw-r--r-- 1 root root 163 2018-04-13 13:42 ./slackware64/d/flex-2.6.4-x86_64-3.txz.asc --rw-r--r-- 1 root root 310 2019-03-04 19:48 ./slackware64/d/gcc-8.3.0-x86_64-2.txt --rw-r--r-- 1 root root 16669668 2019-03-04 19:48 ./slackware64/d/gcc-8.3.0-x86_64-2.txz --rw-r--r-- 1 root root 163 2019-03-04 19:48 ./slackware64/d/gcc-8.3.0-x86_64-2.txz.asc --rw-r--r-- 1 root root 512 2019-03-04 19:51 ./slackware64/d/gcc-brig-8.3.0-x86_64-2.txt --rw-r--r-- 1 root root 6924580 2019-03-04 19:51 ./slackware64/d/gcc-brig-8.3.0-x86_64-2.txz --rw-r--r-- 1 root root 163 2019-03-04 19:51 ./slackware64/d/gcc-brig-8.3.0-x86_64-2.txz.asc --rw-r--r-- 1 root root 255 2019-03-04 19:49 ./slackware64/d/gcc-g++-8.3.0-x86_64-2.txt --rw-r--r-- 1 root root 9545388 2019-03-04 19:49 ./slackware64/d/gcc-g++-8.3.0-x86_64-2.txz --rw-r--r-- 1 root root 163 2019-03-04 19:49 ./slackware64/d/gcc-g++-8.3.0-x86_64-2.txz.asc --rw-r--r-- 1 root root 584 2019-03-04 19:49 ./slackware64/d/gcc-gfortran-8.3.0-x86_64-2.txt --rw-r--r-- 1 root root 8295264 2019-03-04 19:49 ./slackware64/d/gcc-gfortran-8.3.0-x86_64-2.txz --rw-r--r-- 1 root root 163 2019-03-04 19:49 ./slackware64/d/gcc-gfortran-8.3.0-x86_64-2.txz.asc --rw-r--r-- 1 root root 414 2019-03-04 19:50 ./slackware64/d/gcc-gnat-8.3.0-x86_64-2.txt --rw-r--r-- 1 root root 14882592 2019-03-04 19:50 ./slackware64/d/gcc-gnat-8.3.0-x86_64-2.txz --rw-r--r-- 1 root root 163 2019-03-04 19:50 ./slackware64/d/gcc-gnat-8.3.0-x86_64-2.txz.asc --rw-r--r-- 1 root root 572 2019-03-04 19:51 ./slackware64/d/gcc-go-8.3.0-x86_64-2.txt --rw-r--r-- 1 root root 12448652 2019-03-04 19:51 ./slackware64/d/gcc-go-8.3.0-x86_64-2.txz --rw-r--r-- 1 root root 163 2019-03-04 19:51 ./slackware64/d/gcc-go-8.3.0-x86_64-2.txz.asc --rw-r--r-- 1 root root 463 2019-03-04 19:50 ./slackware64/d/gcc-objc-8.3.0-x86_64-2.txt --rw-r--r-- 1 root root 7043852 2019-03-04 19:50 ./slackware64/d/gcc-objc-8.3.0-x86_64-2.txz --rw-r--r-- 1 root root 163 2019-03-04 19:50 ./slackware64/d/gcc-objc-8.3.0-x86_64-2.txz.asc +-rw-r--r-- 1 root root 310 2019-05-03 18:31 ./slackware64/d/gcc-9.1.0-x86_64-1.txt +-rw-r--r-- 1 root root 17163092 2019-05-03 18:31 ./slackware64/d/gcc-9.1.0-x86_64-1.txz +-rw-r--r-- 1 root root 163 2019-05-03 18:31 ./slackware64/d/gcc-9.1.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 512 2019-05-03 18:33 ./slackware64/d/gcc-brig-9.1.0-x86_64-1.txt +-rw-r--r-- 1 root root 7146428 2019-05-03 18:33 ./slackware64/d/gcc-brig-9.1.0-x86_64-1.txz +-rw-r--r-- 1 root root 163 2019-05-03 18:33 ./slackware64/d/gcc-brig-9.1.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 255 2019-05-03 18:31 ./slackware64/d/gcc-g++-9.1.0-x86_64-1.txt +-rw-r--r-- 1 root root 9941572 2019-05-03 18:31 ./slackware64/d/gcc-g++-9.1.0-x86_64-1.txz +-rw-r--r-- 1 root root 163 2019-05-03 18:31 ./slackware64/d/gcc-g++-9.1.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 584 2019-05-03 18:31 ./slackware64/d/gcc-gfortran-9.1.0-x86_64-1.txt +-rw-r--r-- 1 root root 8543852 2019-05-03 18:31 ./slackware64/d/gcc-gfortran-9.1.0-x86_64-1.txz +-rw-r--r-- 1 root root 163 2019-05-03 18:31 ./slackware64/d/gcc-gfortran-9.1.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 414 2019-05-03 18:32 ./slackware64/d/gcc-gnat-9.1.0-x86_64-1.txt +-rw-r--r-- 1 root root 15270596 2019-05-03 18:32 ./slackware64/d/gcc-gnat-9.1.0-x86_64-1.txz +-rw-r--r-- 1 root root 163 2019-05-03 18:32 ./slackware64/d/gcc-gnat-9.1.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 572 2019-05-03 18:33 ./slackware64/d/gcc-go-9.1.0-x86_64-1.txt +-rw-r--r-- 1 root root 13098060 2019-05-03 18:33 ./slackware64/d/gcc-go-9.1.0-x86_64-1.txz +-rw-r--r-- 1 root root 163 2019-05-03 18:33 ./slackware64/d/gcc-go-9.1.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 463 2019-05-03 18:32 ./slackware64/d/gcc-objc-9.1.0-x86_64-1.txt +-rw-r--r-- 1 root root 7226736 2019-05-03 18:32 ./slackware64/d/gcc-objc-9.1.0-x86_64-1.txz +-rw-r--r-- 1 root root 163 2019-05-03 18:32 ./slackware64/d/gcc-objc-9.1.0-x86_64-1.txz.asc -rw-r--r-- 1 root root 749 2019-04-03 21:17 ./slackware64/d/gdb-8.2.1-x86_64-3.txt -rw-r--r-- 1 root root 4202232 2019-04-03 21:17 ./slackware64/d/gdb-8.2.1-x86_64-3.txz -rw-r--r-- 1 root root 163 2019-04-03 21:17 ./slackware64/d/gdb-8.2.1-x86_64-3.txz.asc @@ -1488,12 +1488,12 @@ drwxr-xr-x 2 root root 20480 2019-05-02 21:45 ./slackware64/d -rw-r--r-- 1 root root 332 2019-05-02 20:15 ./slackware64/d/kernel-headers-4.19.38-x86-1.txt -rw-r--r-- 1 root root 915264 2019-05-02 20:15 ./slackware64/d/kernel-headers-4.19.38-x86-1.txz -rw-r--r-- 1 root root 163 2019-05-02 20:15 ./slackware64/d/kernel-headers-4.19.38-x86-1.txz.asc --rw-r--r-- 1 root root 498 2019-02-23 18:00 ./slackware64/d/libtool-2.4.6-x86_64-10.txt --rw-r--r-- 1 root root 428564 2019-02-23 18:00 ./slackware64/d/libtool-2.4.6-x86_64-10.txz --rw-r--r-- 1 root root 163 2019-02-23 18:00 ./slackware64/d/libtool-2.4.6-x86_64-10.txz.asc --rw-r--r-- 1 root root 367 2019-03-20 18:55 ./slackware64/d/llvm-8.0.0-x86_64-1.txt --rw-r--r-- 1 root root 61203300 2019-03-20 18:55 ./slackware64/d/llvm-8.0.0-x86_64-1.txz --rw-r--r-- 1 root root 163 2019-03-20 18:55 ./slackware64/d/llvm-8.0.0-x86_64-1.txz.asc +-rw-r--r-- 1 root root 498 2019-05-04 01:27 ./slackware64/d/libtool-2.4.6-x86_64-11.txt +-rw-r--r-- 1 root root 428532 2019-05-04 01:27 ./slackware64/d/libtool-2.4.6-x86_64-11.txz +-rw-r--r-- 1 root root 163 2019-05-04 01:27 ./slackware64/d/libtool-2.4.6-x86_64-11.txz.asc +-rw-r--r-- 1 root root 367 2019-05-02 23:41 ./slackware64/d/llvm-8.0.0-x86_64-2.txt +-rw-r--r-- 1 root root 60938696 2019-05-02 23:41 ./slackware64/d/llvm-8.0.0-x86_64-2.txz +-rw-r--r-- 1 root root 163 2019-05-02 23:41 ./slackware64/d/llvm-8.0.0-x86_64-2.txz.asc -rw-r--r-- 1 root root 473 2018-04-13 13:54 ./slackware64/d/m4-1.4.18-x86_64-2.txt -rw-r--r-- 1 root root 211152 2018-04-13 13:54 ./slackware64/d/m4-1.4.18-x86_64-2.txz -rw-r--r-- 1 root root 163 2018-04-13 13:54 ./slackware64/d/m4-1.4.18-x86_64-2.txz.asc @@ -1574,9 +1574,9 @@ drwxr-xr-x 2 root root 20480 2019-05-02 21:45 ./slackware64/d -rw-r--r-- 1 root root 547 2019-04-25 18:14 ./slackware64/d/subversion-1.12.0-x86_64-1.txt -rw-r--r-- 1 root root 4850688 2019-04-25 18:14 ./slackware64/d/subversion-1.12.0-x86_64-1.txz -rw-r--r-- 1 root root 163 2019-04-25 18:14 ./slackware64/d/subversion-1.12.0-x86_64-1.txz.asc --rw-r--r-- 1 root root 559 2018-04-13 14:12 ./slackware64/d/swig-3.0.12-x86_64-2.txt --rw-r--r-- 1 root root 2604416 2018-04-13 14:12 ./slackware64/d/swig-3.0.12-x86_64-2.txz --rw-r--r-- 1 root root 163 2018-04-13 14:12 ./slackware64/d/swig-3.0.12-x86_64-2.txz.asc +-rw-r--r-- 1 root root 559 2019-05-03 18:08 ./slackware64/d/swig-4.0.0-x86_64-1.txt +-rw-r--r-- 1 root root 2653016 2019-05-03 18:08 ./slackware64/d/swig-4.0.0-x86_64-1.txz +-rw-r--r-- 1 root root 163 2019-05-03 18:08 ./slackware64/d/swig-4.0.0-x86_64-1.txz.asc -rw-r--r-- 1 root root 728 2018-11-21 20:59 ./slackware64/d/tagfile -rw-r--r-- 1 root root 394 2019-04-08 22:31 ./slackware64/d/vala-0.44.3-x86_64-1.txt -rw-r--r-- 1 root root 2129716 2019-04-08 22:31 ./slackware64/d/vala-0.44.3-x86_64-1.txz @@ -2454,7 +2454,7 @@ drwxr-xr-x 2 root root 20480 2016-03-10 03:11 ./slackware64/kdei -rw-r--r-- 1 root root 7544 2018-03-01 07:54 ./slackware64/kdei/maketag -rw-r--r-- 1 root root 7544 2018-03-01 07:54 ./slackware64/kdei/maketag.ez -rw-r--r-- 1 root root 1500 2018-03-01 07:54 ./slackware64/kdei/tagfile -drwxr-xr-x 2 root root 69632 2019-05-02 21:44 ./slackware64/l +drwxr-xr-x 2 root root 69632 2019-05-04 01:36 ./slackware64/l -rw-r--r-- 1 root root 338 2018-04-13 14:13 ./slackware64/l/ConsoleKit2-1.0.0-x86_64-4.txt -rw-r--r-- 1 root root 149752 2018-04-13 14:13 ./slackware64/l/ConsoleKit2-1.0.0-x86_64-4.txz -rw-r--r-- 1 root root 163 2018-04-13 14:13 ./slackware64/l/ConsoleKit2-1.0.0-x86_64-4.txz.asc @@ -2674,9 +2674,9 @@ drwxr-xr-x 2 root root 69632 2019-05-02 21:44 ./slackware64/l -rw-r--r-- 1 root root 300 2019-05-02 17:40 ./slackware64/l/glib-networking-2.60.2-x86_64-1.txt -rw-r--r-- 1 root root 110244 2019-05-02 17:40 ./slackware64/l/glib-networking-2.60.2-x86_64-1.txz -rw-r--r-- 1 root root 163 2019-05-02 17:40 ./slackware64/l/glib-networking-2.60.2-x86_64-1.txz.asc --rw-r--r-- 1 root root 407 2019-04-15 18:04 ./slackware64/l/glib2-2.60.1-x86_64-1.txt --rw-r--r-- 1 root root 3798900 2019-04-15 18:04 ./slackware64/l/glib2-2.60.1-x86_64-1.txz --rw-r--r-- 1 root root 163 2019-04-15 18:04 ./slackware64/l/glib2-2.60.1-x86_64-1.txz.asc +-rw-r--r-- 1 root root 407 2019-05-03 22:34 ./slackware64/l/glib2-2.60.2-x86_64-1.txt +-rw-r--r-- 1 root root 3803628 2019-05-03 22:34 ./slackware64/l/glib2-2.60.2-x86_64-1.txz +-rw-r--r-- 1 root root 163 2019-05-03 22:34 ./slackware64/l/glib2-2.60.2-x86_64-1.txz.asc -rw-r--r-- 1 root root 387 2019-02-16 20:39 ./slackware64/l/glibc-2.29-x86_64-3.txt -rw-r--r-- 1 root root 5417112 2019-02-16 20:39 ./slackware64/l/glibc-2.29-x86_64-3.txz -rw-r--r-- 1 root root 163 2019-02-16 20:39 ./slackware64/l/glibc-2.29-x86_64-3.txz.asc @@ -3296,9 +3296,9 @@ drwxr-xr-x 2 root root 69632 2019-05-02 21:44 ./slackware64/l -rw-r--r-- 1 root root 510 2019-02-28 19:27 ./slackware64/l/qjson-0.9.0-x86_64-1.txt -rw-r--r-- 1 root root 81152 2019-02-28 19:27 ./slackware64/l/qjson-0.9.0-x86_64-1.txz -rw-r--r-- 1 root root 163 2019-02-28 19:27 ./slackware64/l/qjson-0.9.0-x86_64-1.txz.asc --rw-r--r-- 1 root root 263 2019-03-29 00:13 ./slackware64/l/qt-4.8.7-x86_64-12.txt --rw-r--r-- 1 root root 32847256 2019-03-29 00:13 ./slackware64/l/qt-4.8.7-x86_64-12.txz --rw-r--r-- 1 root root 163 2019-03-29 00:13 ./slackware64/l/qt-4.8.7-x86_64-12.txz.asc +-rw-r--r-- 1 root root 263 2019-05-03 22:11 ./slackware64/l/qt-4.8.7-x86_64-13.txt +-rw-r--r-- 1 root root 32883680 2019-05-03 22:11 ./slackware64/l/qt-4.8.7-x86_64-13.txz +-rw-r--r-- 1 root root 163 2019-05-03 22:11 ./slackware64/l/qt-4.8.7-x86_64-13.txz.asc -rw-r--r-- 1 root root 545 2018-04-17 08:10 ./slackware64/l/qt-gstreamer-1.2.0-x86_64-2.txt -rw-r--r-- 1 root root 249828 2018-04-17 08:10 ./slackware64/l/qt-gstreamer-1.2.0-x86_64-2.txz -rw-r--r-- 1 root root 163 2018-04-17 08:10 ./slackware64/l/qt-gstreamer-1.2.0-x86_64-2.txz.asc @@ -5001,11 +5001,11 @@ drwxr-xr-x 2 root root 4096 2019-02-17 23:51 ./slackware64/y -rw-r--r-- 1 root root 1147 2018-03-01 07:55 ./slackware64/y/maketag -rw-r--r-- 1 root root 1147 2018-03-01 07:55 ./slackware64/y/maketag.ez -rw-r--r-- 1 root root 14 2018-03-01 07:55 ./slackware64/y/tagfile -drwxr-xr-x 19 root root 4096 2019-05-02 21:50 ./source --rw-r--r-- 1 root root 463020 2019-05-02 21:50 ./source/CHECKSUMS.md5 --rw-r--r-- 1 root root 163 2019-05-02 21:50 ./source/CHECKSUMS.md5.asc --rw-r--r-- 1 root root 654209 2019-05-02 21:49 ./source/FILE_LIST --rw-r--r-- 1 root root 16729052 2019-05-02 21:49 ./source/MANIFEST.bz2 +drwxr-xr-x 19 root root 4096 2019-05-04 01:41 ./source +-rw-r--r-- 1 root root 465913 2019-05-04 01:41 ./source/CHECKSUMS.md5 +-rw-r--r-- 1 root root 163 2019-05-04 01:41 ./source/CHECKSUMS.md5.asc +-rw-r--r-- 1 root root 657497 2019-05-04 01:40 ./source/FILE_LIST +-rw-r--r-- 1 root root 16785770 2019-05-04 01:40 ./source/MANIFEST.bz2 -rw-r--r-- 1 root root 1314 2006-10-02 04:40 ./source/README.TXT drwxr-xr-x 111 root root 4096 2019-03-16 20:25 ./source/a -rw-r--r-- 1 root root 877 2018-11-21 18:49 ./source/a/FTBFSlog @@ -6481,7 +6481,7 @@ drwxr-xr-x 2 root root 4096 2019-02-04 20:23 ./source/ap/zsh -rwxr-xr-x 1 root root 4342 2018-09-18 22:04 ./source/ap/zsh/zsh.SlackBuild -rw-r--r-- 1 root root 23 2018-09-14 17:50 ./source/ap/zsh/zsh.url -rwxr-xr-x 1 root root 11921 2018-04-23 19:29 ./source/buildlist-from-changelog.sh -drwxr-xr-x 57 root root 4096 2019-04-19 19:13 ./source/d +drwxr-xr-x 57 root root 4096 2019-05-03 22:23 ./source/d drwxr-xr-x 2 root root 4096 2019-04-14 18:02 ./source/d/Cython -rw-r--r-- 1 root root 1587999 2019-04-14 10:41 ./source/d/Cython/Cython-0.29.7.tar.lz -rwxr-xr-x 1 root root 2740 2019-02-28 19:24 ./source/d/Cython/Cython.SlackBuild @@ -6570,24 +6570,15 @@ drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./source/d/flex -rw-r--r-- 1 root root 473 2017-05-06 20:49 ./source/d/flex/flex-2.6.4.tar.lz.sig -rwxr-xr-x 1 root root 4301 2018-09-18 22:04 ./source/d/flex/flex.SlackBuild -rw-r--r-- 1 root root 823 2018-02-27 06:13 ./source/d/flex/slack-desc -drwxr-xr-x 3 root root 4096 2019-03-04 21:23 ./source/d/gcc +drwxr-xr-x 3 root root 4096 2019-05-03 18:35 ./source/d/gcc -rw-r--r-- 1 root root 224 2015-08-03 18:13 ./source/d/gcc/c89.sh -rw-r--r-- 1 root root 215 2015-08-03 18:13 ./source/d/gcc/c99.sh -rwxr-xr-x 1 root root 2966 2018-06-26 19:14 ./source/d/gcc/fetch-from-svn-and-prep-tarball.sh --rw-r--r-- 1 root root 63694700 2019-02-22 14:51 ./source/d/gcc/gcc-8.3.0.tar.xz --rw-r--r-- 1 root root 65 2019-02-22 14:51 ./source/d/gcc/gcc-8.3.0.tar.xz.sig +-rw-r--r-- 1 root root 70546856 2019-05-03 08:42 ./source/d/gcc/gcc-9.1.0.tar.xz +-rw-r--r-- 1 root root 65 2019-05-03 08:42 ./source/d/gcc/gcc-9.1.0.tar.xz.sig -rw-r--r-- 1 root root 535 2018-05-02 17:26 ./source/d/gcc/gcc-no_fixincludes.diff.gz --rwxr-xr-x 1 root root 21564 2019-03-04 18:52 ./source/d/gcc/gcc.SlackBuild -drwxr-xr-x 3 root root 4096 2019-03-04 18:46 ./source/d/gcc/patches -drwxr-xr-x 2 root root 4096 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline --rw-r--r-- 1 root root 3288 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline/1-8-asm-qualifiers-PR55681.patch.gz --rw-r--r-- 1 root root 6427 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline/2-8-asm-inline.patch.gz --rw-r--r-- 1 root root 774 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline/3-8-c-Delete-a-stray-line-in-asm-inline.patch.gz --rw-r--r-- 1 root root 1515 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch.gz --rw-r--r-- 1 root root 2658 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline/5-8-c-c-asm-Use-nicer-error-for-duplicate-asm-qualifiers.patch.gz --rw-r--r-- 1 root root 1659 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline/6-8-c-c-asm-Use-nicer-error-for-const-and-restrict.patch.gz --rw-r--r-- 1 root root 1396 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch.gz --rw-r--r-- 1 root root 886 2019-03-04 18:49 ./source/d/gcc/patches/revert-asm-inline/8-8-c-Don-t-error-for-const-or-restrict-as-asm-qualifier.patch.gz +-rwxr-xr-x 1 root root 20462 2019-05-03 17:28 ./source/d/gcc/gcc.SlackBuild +drwxr-xr-x 2 root root 4096 2019-05-03 17:28 ./source/d/gcc/patches -rw-r--r-- 1 root root 761 2018-06-26 01:39 ./source/d/gcc/slack-desc.gcc -rw-r--r-- 1 root root 968 2018-02-27 06:13 ./source/d/gcc/slack-desc.gcc-brig -rw-r--r-- 1 root root 710 2018-06-26 01:38 ./source/d/gcc/slack-desc.gcc-g++ @@ -6652,7 +6643,7 @@ drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./source/d/libtool -rw-r--r-- 1 root root 385 2009-05-30 01:28 ./source/d/libtool/doinst.sh.gz -rw-r--r-- 1 root root 973080 2015-02-16 10:16 ./source/d/libtool/libtool-2.4.6.tar.xz -rw-r--r-- 1 root root 181 2015-02-16 10:16 ./source/d/libtool/libtool-2.4.6.tar.xz.sig --rwxr-xr-x 1 root root 3668 2019-02-23 17:53 ./source/d/libtool/libtool.SlackBuild +-rwxr-xr-x 1 root root 3668 2019-05-03 23:09 ./source/d/libtool/libtool.SlackBuild -rw-r--r-- 1 root root 522 2014-10-28 16:01 ./source/d/libtool/libtool.no.moved.warning.diff.gz -rw-r--r-- 1 root root 953 2018-02-27 06:13 ./source/d/libtool/slack-desc drwxr-xr-x 2 root root 4096 2019-03-20 18:11 ./source/d/llvm @@ -6665,7 +6656,7 @@ drwxr-xr-x 2 root root 4096 2019-03-20 18:11 ./source/d/llvm -rw-r--r-- 1 root root 539040 2019-03-20 09:30 ./source/d/llvm/libcxxabi-8.0.0.src.tar.xz -rw-r--r-- 1 root root 19602332 2019-03-20 09:30 ./source/d/llvm/lldb-8.0.0.src.tar.xz -rw-r--r-- 1 root root 30503732 2019-03-20 09:30 ./source/d/llvm/llvm-8.0.0.src.tar.xz --rwxr-xr-x 1 root root 9837 2019-03-20 18:11 ./source/d/llvm/llvm.SlackBuild +-rwxr-xr-x 1 root root 9867 2019-05-02 22:40 ./source/d/llvm/llvm.SlackBuild -rw-r--r-- 1 root root 452 2019-03-20 18:09 ./source/d/llvm/llvm.url -rw-r--r-- 1 root root 415 2018-09-01 10:21 ./source/d/llvm/n_clang_allow_BUILD_SHARED_LIBRARY.patch.gz -rw-r--r-- 1 root root 934384 2019-03-20 09:30 ./source/d/llvm/openmp-8.0.0.src.tar.xz @@ -6833,10 +6824,10 @@ drwxr-xr-x 2 root root 4096 2019-04-25 18:08 ./source/d/subversion -rw-r--r-- 1 root root 6548688 2019-04-23 20:20 ./source/d/subversion/subversion-1.12.0.tar.lz -rwxr-xr-x 1 root root 6454 2019-04-25 18:09 ./source/d/subversion/subversion.SlackBuild -rw-r--r-- 1 root root 470715 2019-04-25 06:03 ./source/d/subversion/svn-book-html.tar.bz2 -drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./source/d/swig +drwxr-xr-x 2 root root 4096 2019-05-03 17:54 ./source/d/swig -rw-r--r-- 1 root root 1013 2018-02-27 06:13 ./source/d/swig/slack-desc --rw-r--r-- 1 root root 6002428 2017-01-27 23:54 ./source/d/swig/swig-3.0.12.tar.xz --rwxr-xr-x 1 root root 3993 2018-09-18 22:04 ./source/d/swig/swig.SlackBuild +-rw-r--r-- 1 root root 5833795 2019-04-28 18:54 ./source/d/swig/swig-4.0.0.tar.lz +-rwxr-xr-x 1 root root 4010 2019-05-03 18:03 ./source/d/swig/swig.SlackBuild -rw-r--r-- 1 root root 87 2013-06-05 09:05 ./source/d/swig/swig.url drwxr-xr-x 2 root root 4096 2019-04-08 22:29 ./source/d/vala -rw-r--r-- 1 root root 1718 2019-03-10 18:11 ./source/d/vala/disable-graphviz.patch.gz @@ -8070,7 +8061,7 @@ drwxr-xr-x 2 root root 4096 2018-02-27 06:35 ./source/kdei/kde-l10n/slack -rw-r--r-- 1 root root 648 2018-02-27 06:35 ./source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-wa -rw-r--r-- 1 root root 698 2018-02-27 06:37 ./source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-zh_CN -rw-r--r-- 1 root root 687 2018-02-27 06:37 ./source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-zh_TW -drwxr-xr-x 318 root root 12288 2019-04-27 19:35 ./source/l +drwxr-xr-x 318 root root 12288 2019-05-03 22:25 ./source/l drwxr-xr-x 3 root root 4096 2018-09-18 22:04 ./source/l/ConsoleKit2 -rw-r--r-- 1 root root 705880 2015-08-10 06:49 ./source/l/ConsoleKit2/ConsoleKit2-1.0.0.tar.xz -rwxr-xr-x 1 root root 5326 2018-09-18 22:04 ./source/l/ConsoleKit2/ConsoleKit2.SlackBuild @@ -8464,9 +8455,9 @@ drwxr-xr-x 2 root root 4096 2019-05-02 17:39 ./source/l/glib-networking -rw-r--r-- 1 root root 346080 2001-03-15 14:59 ./source/l/glib/glib-1.2.10.tar.bz2 -rwxr-xr-x 1 root root 5427 2018-04-23 17:20 ./source/l/glib/glib.SlackBuild -rw-r--r-- 1 root root 754 2018-02-27 06:12 ./source/l/glib/slack-desc -drwxr-xr-x 2 root root 4096 2019-04-15 17:58 ./source/l/glib2 +drwxr-xr-x 2 root root 4096 2019-05-03 22:29 ./source/l/glib2 -rw-r--r-- 1 root root 516 2011-11-06 22:03 ./source/l/glib2/doinst.sh.gz --rw-r--r-- 1 root root 4586668 2019-04-15 13:01 ./source/l/glib2/glib-2.60.1.tar.xz +-rw-r--r-- 1 root root 4587388 2019-05-03 15:51 ./source/l/glib2/glib-2.60.2.tar.xz -rwxr-xr-x 1 root root 5404 2019-03-04 22:08 ./source/l/glib2/glib2.SlackBuild -rw-r--r-- 1 root root 898 2018-11-20 19:30 ./source/l/glib2/glib2.slackware.localtime.diff.gz -rw-r--r-- 1 root root 999 2011-03-27 21:04 ./source/l/glib2/libglib2.csh @@ -9553,7 +9544,7 @@ drwxr-xr-x 2 root root 4096 2019-02-28 19:27 ./source/l/qjson -rw-r--r-- 1 root root 78461 2016-11-29 15:44 ./source/l/qjson/qjson-0.9.0.tar.lz -rwxr-xr-x 1 root root 3480 2019-02-28 19:27 ./source/l/qjson/qjson.SlackBuild -rw-r--r-- 1 root root 963 2018-11-29 19:17 ./source/l/qjson/slack-desc -drwxr-xr-x 4 root root 4096 2019-03-28 21:45 ./source/l/qt +drwxr-xr-x 5 root root 4096 2019-05-03 19:16 ./source/l/qt drwxr-xr-x 2 root root 4096 2019-04-22 01:39 ./source/l/qt-gstreamer -rw-r--r-- 1 root root 110 2009-08-31 04:24 ./source/l/qt-gstreamer/doinst.sh.gz -rw-r--r-- 1 root root 313632 2014-07-08 18:41 ./source/l/qt-gstreamer/qt-gstreamer-1.2.0.tar.xz @@ -9563,29 +9554,61 @@ drwxr-xr-x 2 root root 4096 2019-04-22 01:39 ./source/l/qt-gstreamer -rw-r--r-- 1 root root 348 2014-04-25 19:03 ./source/l/qt/Qt.pc -rw-r--r-- 1 root root 327 2010-11-21 00:00 ./source/l/qt/README -rw-r--r-- 1 root root 150 2011-12-16 11:41 ./source/l/qt/doinst.sh.gz +drwxr-xr-x 2 root root 4096 2019-05-03 19:13 ./source/l/qt/patches +-rw-r--r-- 1 root root 5820 2019-04-20 13:03 ./source/l/qt/patches/qt-4.8-poll.patch.gz +-rw-r--r-- 1 root root 6444 2019-04-20 13:03 ./source/l/qt/patches/qt-aarch64.patch.gz +-rw-r--r-- 1 root root 2358 2019-04-20 13:03 ./source/l/qt/patches/qt-cupsEnumDests.patch.gz +-rw-r--r-- 1 root root 951 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.6.2-cups.patch.gz +-rw-r--r-- 1 root root 853 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch.gz +-rw-r--r-- 1 root root 589 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch.gz +-rw-r--r-- 1 root root 440 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch.gz +-rw-r--r-- 1 root root 479 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch.gz +-rw-r--r-- 1 root root 395 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch.gz +-rw-r--r-- 1 root root 598 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch.gz +-rw-r--r-- 1 root root 319 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch.gz +-rw-r--r-- 1 root root 373 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch.gz +-rw-r--r-- 1 root root 507 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch.gz +-rw-r--r-- 1 root root 454 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-no_Werror.patch.gz +-rw-r--r-- 1 root root 514 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch.gz +-rw-r--r-- 1 root root 448 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch.gz +-rw-r--r-- 1 root root 568 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch.gz +-rw-r--r-- 1 root root 1359 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch.gz +-rw-r--r-- 1 root root 400 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch.gz +-rw-r--r-- 1 root root 641 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch.gz +-rw-r--r-- 1 root root 520 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-mysql_config.patch.gz +-rw-r--r-- 1 root root 622 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch.gz +-rw-r--r-- 1 root root 535 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch.gz +-rw-r--r-- 1 root root 382 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch.gz +-rw-r--r-- 1 root root 717 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch.gz +-rw-r--r-- 1 root root 480 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch.gz +-rw-r--r-- 1 root root 502 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch.gz +-rw-r--r-- 1 root root 1180 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-34614.patch.gz +-rw-r--r-- 1 root root 969 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch.gz +-rw-r--r-- 1 root root 304 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-38585.patch.gz +-rw-r--r-- 1 root root 552 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-s390.patch.gz +-rw-r--r-- 1 root root 3023 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-system-clucene.patch.gz +-rw-r--r-- 1 root root 9758 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch.gz +-rw-r--r-- 1 root root 401 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch.gz +-rw-r--r-- 1 root root 1224 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch.gz +-rw-r--r-- 1 root root 387 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-crash-in-qppmhandler.patch.gz +-rw-r--r-- 1 root root 653 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-firebird.patch.gz +-rw-r--r-- 1 root root 599 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc6.patch.gz +-rw-r--r-- 1 root root 367 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch.gz +-rw-r--r-- 1 root root 616 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-icu59.patch.gz +-rw-r--r-- 1 root root 503 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mariadb.patch.gz +-rw-r--r-- 1 root root 300 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mips64.patch.gz +-rw-r--r-- 1 root root 6083 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch.gz +-rw-r--r-- 1 root root 823 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qforeach.patch.gz +-rw-r--r-- 1 root root 357 2019-04-20 13:03 ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch.gz +-rw-r--r-- 1 root root 394 2019-04-20 13:03 ./source/l/qt/patches/qt-prefer_adwaita_on_gnome.patch.gz +-rw-r--r-- 1 root root 401 2019-04-20 13:03 ./source/l/qt/patches/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch.gz +-rw-r--r-- 1 root root 344 2019-04-20 13:03 ./source/l/qt/patches/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch.gz drwxr-xr-x 2 root root 4096 2008-10-03 13:21 ./source/l/qt/profile.d -rw-r--r-- 1 root root 661 2008-10-03 20:23 ./source/l/qt/profile.d/qt4.csh -rw-r--r-- 1 root root 561 2008-10-03 20:23 ./source/l/qt/profile.d/qt4.sh -rw-r--r-- 1 root root 194364792 2015-05-25 14:57 ./source/l/qt/qt-everywhere-opensource-src-4.8.7.tar.xz --rwxr-xr-x 1 root root 12967 2019-03-28 21:45 ./source/l/qt/qt-nowebkit.SlackBuild --rw-r--r-- 1 root root 469 2017-03-21 13:24 ./source/l/qt/qt.QTBUG-22829.diff.gz --rw-r--r-- 1 root root 368 2017-03-21 13:24 ./source/l/qt/qt.QTBUG-35459.diff.gz --rw-r--r-- 1 root root 368 2017-03-21 13:24 ./source/l/qt/qt.QT_VERSION_CHECK.diff.gz +-rwxr-xr-x 1 root root 16133 2019-05-03 21:03 ./source/l/qt/qt-nowebkit.SlackBuild -rwxr-xr-x 1 root root 4340 2018-04-23 17:20 ./source/l/qt/qt.SlackBuild --rw-r--r-- 1 root root 329 2017-03-21 13:24 ./source/l/qt/qt.alsa-1.1.diff.gz --rw-r--r-- 1 root root 328 2014-04-25 18:43 ./source/l/qt/qt.fix.broken.gif.crash.diff.gz --rw-r--r-- 1 root root 565 2017-03-21 13:24 ./source/l/qt/qt.gcc6.diff.gz --rw-r--r-- 1 root root 963 2015-01-24 13:32 ./source/l/qt/qt.glib-honor-ExcludeSocketNotifiers-flag.diff.gz --rw-r--r-- 1 root root 475 2017-10-26 15:06 ./source/l/qt/qt.icu4c.nodebug.diff.gz --rw-r--r-- 1 root root 589 2018-01-31 19:29 ./source/l/qt/qt.icu59.c++11.diff.gz --rw-r--r-- 1 root root 252 2017-08-12 13:51 ./source/l/qt/qt.icu59.patch.gz --rw-r--r-- 1 root root 277 2008-04-03 01:53 ./source/l/qt/qt.mysql.h.diff.gz --rw-r--r-- 1 root root 279 2015-01-24 14:30 ./source/l/qt/qt.qclipboard_delay.patch.gz --rw-r--r-- 1 root root 1164 2015-01-24 14:29 ./source/l/qt/qt.qclipboard_fix_recursive.patch.gz --rw-r--r-- 1 root root 9652 2015-01-24 14:21 ./source/l/qt/qt.qsystemtrayicon-plugin-system.diff.gz --rw-r--r-- 1 root root 347 2017-03-21 13:24 ./source/l/qt/qt.qtreeview.crash.diff.gz --rw-r--r-- 1 root root 479 2012-12-02 15:54 ./source/l/qt/qt.webkit-no_Werror.patch.gz --rw-r--r-- 1 root root 5459 2018-05-06 19:48 ./source/l/qt/qt4.openssl-1.1.diff.gz drwxr-xr-x 2 root root 4096 2018-02-27 06:12 ./source/l/qt/qtwebkit -rw-r--r-- 1 root root 92 2015-04-27 09:54 ./source/l/qt/qtwebkit/doinst.sh.gz -rw-r--r-- 1 root root 34279420 2015-04-25 12:14 ./source/l/qt/qtwebkit/qtwebkit-2.3.4.tar.xz @@ -12398,55 +12421,55 @@ drwxr-xr-x 2 root root 4096 2016-07-03 18:05 ./source/xap/mozilla-firefox -rw-r--r-- 1 root root 462 2009-07-01 06:05 ./source/xap/mozilla-firefox/mimeTypes.rdf.gz -rw-r--r-- 1 root root 680 2009-07-01 13:28 ./source/xap/mozilla-firefox/mozilla-firefox-mimeTypes-fix.diff.gz -rwxr-xr-x 1 root root 13818 2019-03-26 19:45 ./source/xap/mozilla-firefox/mozilla-firefox.SlackBuild --rw-r--r-- 1 root root 2748 2017-12-04 21:30 ./source/xap/mozilla-firefox/mozilla-firefox.desktop --rw-r--r-- 1 root root 946 2018-11-03 19:51 ./source/xap/mozilla-firefox/slack-desc --rw-r--r-- 1 root root 588 2019-03-26 18:57 ./source/xap/mozilla-firefox/unbreakdocs.diff.gz -drwxr-xr-x 4 root root 4096 2019-03-26 23:02 ./source/xap/mozilla-thunderbird -drwxr-xr-x 2 root root 4096 2016-07-03 18:05 ./source/xap/mozilla-thunderbird/autoconf --rw-r--r-- 1 root root 5869 2016-07-03 18:04 ./source/xap/mozilla-thunderbird/autoconf/autoconf-2.13-consolidated_fixes-1.patch.gz --rw-r--r-- 1 root root 300116 1999-01-15 21:03 ./source/xap/mozilla-thunderbird/autoconf/autoconf-2.13.tar.xz --rwxr-xr-x 1 root root 2632 2016-07-03 18:50 ./source/xap/mozilla-thunderbird/autoconf/autoconf.build -drwxr-xr-x 2 root root 4096 2013-11-14 21:24 ./source/xap/mozilla-thunderbird/gold --rwxr-xr-x 1 root root 34 2013-11-14 21:15 ./source/xap/mozilla-thunderbird/gold/gold -lrwxrwxrwx 1 root root 4 2013-11-14 21:24 ./source/xap/mozilla-thunderbird/gold/ld -> gold --rw-r--r-- 1 root root 312 2012-03-28 18:01 ./source/xap/mozilla-thunderbird/mozilla-firefox.xpcom_arm.patch.gz --rwxr-xr-x 1 root root 11782 2019-03-26 21:42 ./source/xap/mozilla-thunderbird/mozilla-thunderbird.SlackBuild --rw-r--r-- 1 root root 3378 2005-03-08 05:13 ./source/xap/mozilla-thunderbird/mozilla-thunderbird.desktop --rw-r--r-- 1 root root 1130 2018-02-27 06:47 ./source/xap/mozilla-thunderbird/slack-desc --rw-r--r-- 1 root root 343 2017-06-14 23:43 ./source/xap/mozilla-thunderbird/tb.ui.scrollToClick.diff.gz --rw-r--r-- 1 root root 288706632 2019-03-25 13:53 ./source/xap/mozilla-thunderbird/thunderbird-60.6.1.source.tar.xz --rw-r--r-- 1 root root 836 2019-03-25 13:53 ./source/xap/mozilla-thunderbird/thunderbird-60.6.1.source.tar.xz.asc --rw-r--r-- 1 root root 588 2019-03-26 18:57 ./source/xap/mozilla-thunderbird/unbreakdocs.diff.gz -drwxr-xr-x 2 root root 4096 2019-02-07 21:33 ./source/xap/network-manager-applet --rw-r--r-- 1 root root 207 2012-08-10 23:59 ./source/xap/network-manager-applet/doinst.sh.gz --rw-r--r-- 1 root root 1551392 2019-02-07 09:25 ./source/xap/network-manager-applet/network-manager-applet-1.8.20.tar.xz --rwxr-xr-x 1 root root 4192 2018-09-18 22:04 ./source/xap/network-manager-applet/network-manager-applet.SlackBuild --rw-r--r-- 1 root root 829 2018-02-27 06:13 ./source/xap/network-manager-applet/slack-desc -drwxr-xr-x 2 root root 4096 2018-10-24 20:33 ./source/xap/pan --rw-r--r-- 1 root root 1659450 2018-05-20 20:41 ./source/xap/pan/pan-0.145.tar.lz --rwxr-xr-x 1 root root 4431 2018-10-24 20:33 ./source/xap/pan/pan.SlackBuild --rw-r--r-- 1 root root 752 2018-02-27 06:13 ./source/xap/pan/slack-desc -drwxr-xr-x 2 root root 4096 2019-03-06 19:15 ./source/xap/pavucontrol --rw-r--r-- 1 root root 120 2013-11-05 03:45 ./source/xap/pavucontrol/doinst.sh.gz --rw-r--r-- 1 root root 164485 2019-03-05 15:50 ./source/xap/pavucontrol/pavucontrol-4.0.tar.lz --rwxr-xr-x 1 root root 3343 2019-03-06 19:15 ./source/xap/pavucontrol/pavucontrol.SlackBuild --rw-r--r-- 1 root root 969 2019-03-06 19:09 ./source/xap/pavucontrol/slack-desc -drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./source/xap/pidgin --rw-r--r-- 1 root root 172 2016-01-04 03:06 ./source/xap/pidgin/doinst.sh.gz --rw-r--r-- 1 root root 355 2012-05-02 03:59 ./source/xap/pidgin/fix-gmain_h-compile-error.diff.gz --rw-r--r-- 1 root root 6641203 2018-03-09 02:25 ./source/xap/pidgin/pidgin-2.13.0.tar.lz --rw-r--r-- 1 root root 604129 2010-05-18 16:51 ./source/xap/pidgin/pidgin-encryption-3.1.tar.gz --rwxr-xr-x 1 root root 7550 2018-09-18 22:04 ./source/xap/pidgin/pidgin.SlackBuild --rw-r--r-- 1 root root 920 2018-02-27 06:13 ./source/xap/pidgin/slack-desc -drwxr-xr-x 2 root root 4096 2019-01-02 22:46 ./source/xap/rdesktop --rw-r--r-- 1 root root 250484 2019-01-02 14:21 ./source/xap/rdesktop/rdesktop-1.8.4.tar.xz --rwxr-xr-x 1 root root 3809 2019-01-02 22:46 ./source/xap/rdesktop/rdesktop.SlackBuild --rw-r--r-- 1 root root 850 2018-02-27 06:13 ./source/xap/rdesktop/slack-desc -drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./source/xap/rxvt-unicode --rw-r--r-- 1 root root 222 2018-03-31 17:18 ./source/xap/rxvt-unicode/rxvt-unicode-256color.desktop --rw-r--r-- 1 root root 712702 2016-01-23 20:09 ./source/xap/rxvt-unicode/rxvt-unicode-9.22.tar.lz --rwxr-xr-x 1 root root 5651 2018-11-30 21:13 ./source/xap/rxvt-unicode/rxvt-unicode.SlackBuild --rw-r--r-- 1 root root 207 2018-03-31 17:17 ./source/xap/rxvt-unicode/rxvt-unicode.desktop +-rw-r--r-- 1 root root 2748 2017-12-04 21:30 ./source/xap/mozilla-firefox/mozilla-firefox.desktop +-rw-r--r-- 1 root root 946 2018-11-03 19:51 ./source/xap/mozilla-firefox/slack-desc +-rw-r--r-- 1 root root 588 2019-03-26 18:57 ./source/xap/mozilla-firefox/unbreakdocs.diff.gz +drwxr-xr-x 4 root root 4096 2019-03-26 23:02 ./source/xap/mozilla-thunderbird +drwxr-xr-x 2 root root 4096 2016-07-03 18:05 ./source/xap/mozilla-thunderbird/autoconf +-rw-r--r-- 1 root root 5869 2016-07-03 18:04 ./source/xap/mozilla-thunderbird/autoconf/autoconf-2.13-consolidated_fixes-1.patch.gz +-rw-r--r-- 1 root root 300116 1999-01-15 21:03 ./source/xap/mozilla-thunderbird/autoconf/autoconf-2.13.tar.xz +-rwxr-xr-x 1 root root 2632 2016-07-03 18:50 ./source/xap/mozilla-thunderbird/autoconf/autoconf.build +drwxr-xr-x 2 root root 4096 2013-11-14 21:24 ./source/xap/mozilla-thunderbird/gold +-rwxr-xr-x 1 root root 34 2013-11-14 21:15 ./source/xap/mozilla-thunderbird/gold/gold +lrwxrwxrwx 1 root root 4 2013-11-14 21:24 ./source/xap/mozilla-thunderbird/gold/ld -> gold +-rw-r--r-- 1 root root 312 2012-03-28 18:01 ./source/xap/mozilla-thunderbird/mozilla-firefox.xpcom_arm.patch.gz +-rwxr-xr-x 1 root root 11782 2019-03-26 21:42 ./source/xap/mozilla-thunderbird/mozilla-thunderbird.SlackBuild +-rw-r--r-- 1 root root 3378 2005-03-08 05:13 ./source/xap/mozilla-thunderbird/mozilla-thunderbird.desktop +-rw-r--r-- 1 root root 1130 2018-02-27 06:47 ./source/xap/mozilla-thunderbird/slack-desc +-rw-r--r-- 1 root root 343 2017-06-14 23:43 ./source/xap/mozilla-thunderbird/tb.ui.scrollToClick.diff.gz +-rw-r--r-- 1 root root 288706632 2019-03-25 13:53 ./source/xap/mozilla-thunderbird/thunderbird-60.6.1.source.tar.xz +-rw-r--r-- 1 root root 836 2019-03-25 13:53 ./source/xap/mozilla-thunderbird/thunderbird-60.6.1.source.tar.xz.asc +-rw-r--r-- 1 root root 588 2019-03-26 18:57 ./source/xap/mozilla-thunderbird/unbreakdocs.diff.gz +drwxr-xr-x 2 root root 4096 2019-02-07 21:33 ./source/xap/network-manager-applet +-rw-r--r-- 1 root root 207 2012-08-10 23:59 ./source/xap/network-manager-applet/doinst.sh.gz +-rw-r--r-- 1 root root 1551392 2019-02-07 09:25 ./source/xap/network-manager-applet/network-manager-applet-1.8.20.tar.xz +-rwxr-xr-x 1 root root 4192 2018-09-18 22:04 ./source/xap/network-manager-applet/network-manager-applet.SlackBuild +-rw-r--r-- 1 root root 829 2018-02-27 06:13 ./source/xap/network-manager-applet/slack-desc +drwxr-xr-x 2 root root 4096 2018-10-24 20:33 ./source/xap/pan +-rw-r--r-- 1 root root 1659450 2018-05-20 20:41 ./source/xap/pan/pan-0.145.tar.lz +-rwxr-xr-x 1 root root 4431 2018-10-24 20:33 ./source/xap/pan/pan.SlackBuild +-rw-r--r-- 1 root root 752 2018-02-27 06:13 ./source/xap/pan/slack-desc +drwxr-xr-x 2 root root 4096 2019-03-06 19:15 ./source/xap/pavucontrol +-rw-r--r-- 1 root root 120 2013-11-05 03:45 ./source/xap/pavucontrol/doinst.sh.gz +-rw-r--r-- 1 root root 164485 2019-03-05 15:50 ./source/xap/pavucontrol/pavucontrol-4.0.tar.lz +-rwxr-xr-x 1 root root 3343 2019-03-06 19:15 ./source/xap/pavucontrol/pavucontrol.SlackBuild +-rw-r--r-- 1 root root 969 2019-03-06 19:09 ./source/xap/pavucontrol/slack-desc +drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./source/xap/pidgin +-rw-r--r-- 1 root root 172 2016-01-04 03:06 ./source/xap/pidgin/doinst.sh.gz +-rw-r--r-- 1 root root 355 2012-05-02 03:59 ./source/xap/pidgin/fix-gmain_h-compile-error.diff.gz +-rw-r--r-- 1 root root 6641203 2018-03-09 02:25 ./source/xap/pidgin/pidgin-2.13.0.tar.lz +-rw-r--r-- 1 root root 604129 2010-05-18 16:51 ./source/xap/pidgin/pidgin-encryption-3.1.tar.gz +-rwxr-xr-x 1 root root 7550 2018-09-18 22:04 ./source/xap/pidgin/pidgin.SlackBuild +-rw-r--r-- 1 root root 920 2018-02-27 06:13 ./source/xap/pidgin/slack-desc +drwxr-xr-x 2 root root 4096 2019-01-02 22:46 ./source/xap/rdesktop +-rw-r--r-- 1 root root 250484 2019-01-02 14:21 ./source/xap/rdesktop/rdesktop-1.8.4.tar.xz +-rwxr-xr-x 1 root root 3809 2019-01-02 22:46 ./source/xap/rdesktop/rdesktop.SlackBuild +-rw-r--r-- 1 root root 850 2018-02-27 06:13 ./source/xap/rdesktop/slack-desc +drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./source/xap/rxvt-unicode +-rw-r--r-- 1 root root 222 2018-03-31 17:18 ./source/xap/rxvt-unicode/rxvt-unicode-256color.desktop +-rw-r--r-- 1 root root 712702 2016-01-23 20:09 ./source/xap/rxvt-unicode/rxvt-unicode-9.22.tar.lz +-rwxr-xr-x 1 root root 5651 2018-11-30 21:13 ./source/xap/rxvt-unicode/rxvt-unicode.SlackBuild +-rw-r--r-- 1 root root 207 2018-03-31 17:17 ./source/xap/rxvt-unicode/rxvt-unicode.desktop -rw-r--r-- 1 root root 7758 2018-03-31 16:26 ./source/xap/rxvt-unicode/rxvt-unicode.utempter.diff.gz -rw-r--r-- 1 root root 940 2018-03-31 16:58 ./source/xap/rxvt-unicode/slack-desc drwxr-xr-x 2 root root 4096 2018-11-09 20:41 ./source/xap/sane diff --git a/recompress.sh b/recompress.sh index 78a6bfa7c..e854c3d49 100755 --- a/recompress.sh +++ b/recompress.sh @@ -45,14 +45,6 @@ gzip ./source/d/rust/link_libffi.diff gzip ./source/d/vala/disable-graphviz.patch gzip ./source/d/vala/no.gvc-compat.c.diff gzip ./source/d/mercurial/doinst.sh -gzip ./source/d/gcc/patches/revert-asm-inline/3-8-c-Delete-a-stray-line-in-asm-inline.patch -gzip ./source/d/gcc/patches/revert-asm-inline/6-8-c-c-asm-Use-nicer-error-for-const-and-restrict.patch -gzip ./source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch -gzip ./source/d/gcc/patches/revert-asm-inline/5-8-c-c-asm-Use-nicer-error-for-duplicate-asm-qualifiers.patch -gzip ./source/d/gcc/patches/revert-asm-inline/8-8-c-Don-t-error-for-const-or-restrict-as-asm-qualifier.patch -gzip ./source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch -gzip ./source/d/gcc/patches/revert-asm-inline/2-8-asm-inline.patch -gzip ./source/d/gcc/patches/revert-asm-inline/1-8-asm-qualifiers-PR55681.patch gzip ./source/d/gcc/gcc-no_fixincludes.diff gzip ./source/d/doxygen/doxygen.9468ede.diff gzip ./source/d/binutils/patches/binutils-2.20.51.0.10-sec-merge-emit.patch @@ -819,26 +811,57 @@ gzip ./source/l/netpbm/netpbm-CVE-2017-2587.patch gzip ./source/l/netpbm/netpbm-security-scripts.patch gzip ./source/l/netpbm/netpbm-gcc4.patch gzip ./source/l/netpbm/netpbm-noppmtompeg.patch -gzip ./source/l/qt/qt.qtreeview.crash.diff -gzip ./source/l/qt/qt.gcc6.diff gzip ./source/l/qt/qtwebkit/qtwebkit.putByIndexBeyondVectorLengthWithArrayStorage.diff gzip ./source/l/qt/qtwebkit/doinst.sh -gzip ./source/l/qt/qt.qsystemtrayicon-plugin-system.diff -gzip ./source/l/qt/qt.mysql.h.diff -gzip ./source/l/qt/qt.icu59.patch -gzip ./source/l/qt/qt.icu4c.nodebug.diff -gzip ./source/l/qt/qt.glib-honor-ExcludeSocketNotifiers-flag.diff -gzip ./source/l/qt/qt.webkit-no_Werror.patch -gzip ./source/l/qt/qt.alsa-1.1.diff -gzip ./source/l/qt/qt.icu59.c++11.diff -gzip ./source/l/qt/qt.fix.broken.gif.crash.diff -gzip ./source/l/qt/qt4.openssl-1.1.diff -gzip ./source/l/qt/qt.QT_VERSION_CHECK.diff +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-mysql_config.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc6.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch +gzip ./source/l/qt/patches/qt-aarch64.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-no_Werror.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch +gzip ./source/l/qt/patches/qt-4.8-poll.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-icu59.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mips64.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qforeach.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-34614.patch +gzip ./source/l/qt/patches/qt-cupsEnumDests.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch +gzip ./source/l/qt/patches/qt-prefer_adwaita_on_gnome.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-system-clucene.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-crash-in-qppmhandler.patch +gzip ./source/l/qt/patches/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mariadb.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-firebird.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.6.2-cups.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-s390.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch +gzip ./source/l/qt/patches/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch +gzip ./source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-38585.patch gzip ./source/l/qt/doinst.sh -gzip ./source/l/qt/qt.qclipboard_delay.patch -gzip ./source/l/qt/qt.QTBUG-22829.diff -gzip ./source/l/qt/qt.QTBUG-35459.diff -gzip ./source/l/qt/qt.qclipboard_fix_recursive.patch gzip ./source/l/hicolor-icon-theme/doinst.sh gzip ./source/l/glib2/glib2.slackware.localtime.diff gzip ./source/l/glib2/doinst.sh diff --git a/source/d/gcc/gcc.SlackBuild b/source/d/gcc/gcc.SlackBuild index d7443e819..6f93f767a 100755 --- a/source/d/gcc/gcc.SlackBuild +++ b/source/d/gcc/gcc.SlackBuild @@ -57,7 +57,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=gcc SRCVER=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} VERSION=$(echo $SRCVER | cut -f 1 -d _) -BUILD=${BUILD:-2} +BUILD=${BUILD:-1} # How many jobs to run in parallel: NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} @@ -166,16 +166,6 @@ cat $CWD/slack-desc.gcc-brig > $PKG9/install/slack-desc # Smite the fixincludes: zcat $CWD/gcc-no_fixincludes.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1 - # Revert inline asm backport causing compile failures for "asm volatile": - zcat $CWD/patches/revert-asm-inline/8-8-c-Don-t-error-for-const-or-restrict-as-asm-qualifier.patch.gz | patch -p1 -R --verbose || exit 1 - zcat $CWD/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch.gz | patch -p1 -R --verbose || exit 1 - zcat $CWD/patches/revert-asm-inline/6-8-c-c-asm-Use-nicer-error-for-const-and-restrict.patch.gz | patch -p1 -R --verbose || exit 1 - zcat $CWD/patches/revert-asm-inline/5-8-c-c-asm-Use-nicer-error-for-duplicate-asm-qualifiers.patch.gz | patch -p1 -R --verbose || exit 1 - zcat $CWD/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch.gz | patch -p1 -R --verbose || exit 1 - zcat $CWD/patches/revert-asm-inline/3-8-c-Delete-a-stray-line-in-asm-inline.patch.gz | patch -p1 -R --verbose || exit 1 - zcat $CWD/patches/revert-asm-inline/2-8-asm-inline.patch.gz | patch -p1 -R --verbose || exit 1 - zcat $CWD/patches/revert-asm-inline/1-8-asm-qualifiers-PR55681.patch.gz | patch -p1 -R --verbose || exit 1 - # Fix perms/owners: chown -R root:root . find . -perm 777 -exec chmod 755 {} \; diff --git a/source/d/gcc/patches/revert-asm-inline/1-8-asm-qualifiers-PR55681.patch b/source/d/gcc/patches/revert-asm-inline/1-8-asm-qualifiers-PR55681.patch deleted file mode 100644 index 1870b6ef2..000000000 --- a/source/d/gcc/patches/revert-asm-inline/1-8-asm-qualifiers-PR55681.patch +++ /dev/null @@ -1,351 +0,0 @@ -From patchwork Thu Dec 27 14:59:06 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [1/8] asm qualifiers (PR55681) -X-Patchwork-Submitter: Segher Boessenkool -X-Patchwork-Id: 13818 -Message-Id: <2ea395426865aeb7b02f16facf70908a852e7fbc.1545922222.git.segher@kernel.crashing.org> -To: gcc-patches@gcc.gnu.org -Cc: Segher Boessenkool -Date: Thu, 27 Dec 2018 14:59:06 +0000 -From: Segher Boessenkool -List-Id: - -PR55681 observes that currently only one qualifier is allowed for -inline asm, so that e.g. "volatile asm" is allowed, "const asm" is also -okay (with a warning), but "const volatile asm" gives an error. Also -"goto" has to be last. - -This patch changes things so that only "asm-qualifiers" are allowed, -that is "volatile" and "goto", in any combination, in any order, but -without repetitions. - -2018-12-06 Segher Boessenkool - - PR inline-asm/55681 - * doc/extend.texi (Basic Asm): Update grammar. - (Extended Asm): Update grammar. - -gcc/c/ - PR inline-asm/55681 - * c-parser.c (c_parser_asm_statement): Update grammar. Allow any - combination of volatile and goto, in any order, without repetitions. - -gcc/cp/ - PR inline-asm/55681 - * parser.c (cp_parser_asm_definition): Update grammar. Allow any - combination of volatile and goto, in any order, without repetitions. - -gcc/testsuite/ - PR inline-asm/55681 - * gcc.dg/asm-qual-1.c: Test that "const" and "restrict" are refused. - * gcc.dg/asm-qual-2.c: New test, test that asm-qualifiers are allowed - in any order, but that duplicates are not allowed. ---- - gcc/c/c-parser.c | 74 +++++++++++++++++++++---------------- - gcc/cp/parser.c | 77 ++++++++++++++++++++++++++------------- - gcc/doc/extend.texi | 8 ++-- - gcc/testsuite/gcc.dg/asm-qual-1.c | 10 +++-- - gcc/testsuite/gcc.dg/asm-qual-2.c | 21 +++++++++++ - 5 files changed, 127 insertions(+), 63 deletions(-) - create mode 100644 gcc/testsuite/gcc.dg/asm-qual-2.c - --- -1.8.3.1 - -diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c -index 4772086..7ec53b3 100644 ---- a/gcc/c/c-parser.c -+++ b/gcc/c/c-parser.c -@@ -6261,60 +6261,72 @@ c_parser_for_statement (c_parser *parser, bool ivdep, unsigned short unroll, - } - - /* Parse an asm statement, a GNU extension. This is a full-blown asm -- statement with inputs, outputs, clobbers, and volatile tag -+ statement with inputs, outputs, clobbers, and volatile and goto tag - allowed. - -+ asm-qualifier: -+ volatile -+ goto -+ -+ asm-qualifier-list: -+ asm-qualifier-list asm-qualifier -+ asm-qualifier -+ - asm-statement: -- asm type-qualifier[opt] ( asm-argument ) ; -- asm type-qualifier[opt] goto ( asm-goto-argument ) ; -+ asm asm-qualifier-list[opt] ( asm-argument ) ; - - asm-argument: - asm-string-literal - asm-string-literal : asm-operands[opt] - asm-string-literal : asm-operands[opt] : asm-operands[opt] -- asm-string-literal : asm-operands[opt] : asm-operands[opt] : asm-clobbers[opt] -- -- asm-goto-argument: -+ asm-string-literal : asm-operands[opt] : asm-operands[opt] \ -+ : asm-clobbers[opt] - asm-string-literal : : asm-operands[opt] : asm-clobbers[opt] \ - : asm-goto-operands - -- Qualifiers other than volatile are accepted in the syntax but -- warned for. */ -+ The form with asm-goto-operands is valid if and only if the -+ asm-qualifier-list contains goto, and is the only allowed form in that case. -+ Duplicate asm-qualifiers are not allowed. */ - - static tree - c_parser_asm_statement (c_parser *parser) - { - tree quals, str, outputs, inputs, clobbers, labels, ret; -- bool simple, is_goto; -+ bool simple, is_volatile, is_goto; - location_t asm_loc = c_parser_peek_token (parser)->location; - int section, nsections; - - gcc_assert (c_parser_next_token_is_keyword (parser, RID_ASM)); - c_parser_consume_token (parser); -- if (c_parser_next_token_is_keyword (parser, RID_VOLATILE)) -- { -- quals = c_parser_peek_token (parser)->value; -- c_parser_consume_token (parser); -- } -- else if (c_parser_next_token_is_keyword (parser, RID_CONST) -- || c_parser_next_token_is_keyword (parser, RID_RESTRICT)) -- { -- warning_at (c_parser_peek_token (parser)->location, -- 0, -- "%E qualifier ignored on asm", -- c_parser_peek_token (parser)->value); -- quals = NULL_TREE; -- c_parser_consume_token (parser); -- } -- else -- quals = NULL_TREE; - -+ quals = NULL_TREE; -+ is_volatile = false; - is_goto = false; -- if (c_parser_next_token_is_keyword (parser, RID_GOTO)) -- { -- c_parser_consume_token (parser); -- is_goto = true; -- } -+ for (bool done = false; !done; ) -+ switch (c_parser_peek_token (parser)->keyword) -+ { -+ case RID_VOLATILE: -+ if (!is_volatile) -+ { -+ is_volatile = true; -+ quals = c_parser_peek_token (parser)->value; -+ c_parser_consume_token (parser); -+ } -+ else -+ done = true; -+ break; -+ case RID_GOTO: -+ if (!is_goto) -+ { -+ is_goto = true; -+ c_parser_consume_token (parser); -+ } -+ else -+ done = true; -+ break; -+ default: -+ done = true; -+ } - - /* ??? Follow the C++ parser rather than using the - lex_untranslated_string kludge. */ -diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c -index 9907180..3bc5795 100644 ---- a/gcc/cp/parser.c -+++ b/gcc/cp/parser.c -@@ -19067,22 +19067,34 @@ cp_parser_using_directive (cp_parser* parser) - - /* Parse an asm-definition. - -+ asm-qualifier: -+ volatile -+ goto -+ -+ asm-qualifier-list: -+ asm-qualifier -+ asm-qualifier-list asm-qualifier -+ - asm-definition: - asm ( string-literal ) ; - - GNU Extension: - - asm-definition: -- asm volatile [opt] ( string-literal ) ; -- asm volatile [opt] ( string-literal : asm-operand-list [opt] ) ; -- asm volatile [opt] ( string-literal : asm-operand-list [opt] -- : asm-operand-list [opt] ) ; -- asm volatile [opt] ( string-literal : asm-operand-list [opt] -- : asm-operand-list [opt] -+ asm asm-qualifier-list [opt] ( string-literal ) ; -+ asm asm-qualifier-list [opt] ( string-literal : asm-operand-list [opt] ) ; -+ asm asm-qualifier-list [opt] ( string-literal : asm-operand-list [opt] -+ : asm-operand-list [opt] ) ; -+ asm asm-qualifier-list [opt] ( string-literal : asm-operand-list [opt] -+ : asm-operand-list [opt] - : asm-clobber-list [opt] ) ; -- asm volatile [opt] goto ( string-literal : : asm-operand-list [opt] -- : asm-clobber-list [opt] -- : asm-goto-list ) ; */ -+ asm asm-qualifier-list [opt] ( string-literal : : asm-operand-list [opt] -+ : asm-clobber-list [opt] -+ : asm-goto-list ) ; -+ -+ The form with asm-goto-list is valid if and only if the asm-qualifier-list -+ contains goto, and is the only allowed form in that case. No duplicates are -+ allowed in an asm-qualifier-list. */ - - static void - cp_parser_asm_definition (cp_parser* parser) -@@ -19111,23 +19123,36 @@ cp_parser_asm_definition (cp_parser* parser) - } - - /* See if the next token is `volatile'. */ -- if (cp_parser_allow_gnu_extensions_p (parser) -- && cp_lexer_next_token_is_keyword (parser->lexer, RID_VOLATILE)) -- { -- /* Remember that we saw the `volatile' keyword. */ -- volatile_p = true; -- /* Consume the token. */ -- cp_lexer_consume_token (parser->lexer); -- } -- if (cp_parser_allow_gnu_extensions_p (parser) -- && parser->in_function_body -- && cp_lexer_next_token_is_keyword (parser->lexer, RID_GOTO)) -- { -- /* Remember that we saw the `goto' keyword. */ -- goto_p = true; -- /* Consume the token. */ -- cp_lexer_consume_token (parser->lexer); -- } -+ if (cp_parser_allow_gnu_extensions_p (parser)) -+ for (bool done = false; !done ; ) -+ switch (cp_lexer_peek_token (parser->lexer)->keyword) -+ { -+ case RID_VOLATILE: -+ if (!volatile_p) -+ { -+ /* Remember that we saw the `volatile' keyword. */ -+ volatile_p = true; -+ /* Consume the token. */ -+ cp_lexer_consume_token (parser->lexer); -+ } -+ else -+ done = true; -+ break; -+ case RID_GOTO: -+ if (!goto_p && parser->in_function_body) -+ { -+ /* Remember that we saw the `goto' keyword. */ -+ goto_p = true; -+ /* Consume the token. */ -+ cp_lexer_consume_token (parser->lexer); -+ } -+ else -+ done = true; -+ break; -+ default: -+ done = true; -+ } -+ - /* Look for the opening `('. */ - if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) - return; -diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi -index afde889..40b1989 100644 ---- a/gcc/doc/extend.texi -+++ b/gcc/doc/extend.texi -@@ -8147,7 +8147,7 @@ for a C symbol, or to place a C variable in a specific register. - A basic @code{asm} statement has the following syntax: - - @example --asm @r{[} volatile @r{]} ( @var{AssemblerInstructions} ) -+asm @var{asm-qualifiers} ( @var{AssemblerInstructions} ) - @end example - - The @code{asm} keyword is a GNU extension. -@@ -8275,17 +8275,19 @@ Extended @code{asm} syntax uses colons (@samp{:}) to delimit - the operand parameters after the assembler template: - - @example --asm @r{[}volatile@r{]} ( @var{AssemblerTemplate} -+asm @var{asm-qualifiers} ( @var{AssemblerTemplate} - : @var{OutputOperands} - @r{[} : @var{InputOperands} - @r{[} : @var{Clobbers} @r{]} @r{]}) - --asm @r{[}volatile@r{]} goto ( @var{AssemblerTemplate} -+asm @var{asm-qualifiers} ( @var{AssemblerTemplate} - : - : @var{InputOperands} - : @var{Clobbers} - : @var{GotoLabels}) - @end example -+where in the last form, @var{asm-qualifiers} contains @code{goto} (and in the -+first form, not). - - The @code{asm} keyword is a GNU extension. - When writing code that can be compiled with @option{-ansi} and the -diff --git a/gcc/testsuite/gcc.dg/asm-qual-1.c b/gcc/testsuite/gcc.dg/asm-qual-1.c -index 5ec9a29..cb37283 100644 ---- a/gcc/testsuite/gcc.dg/asm-qual-1.c -+++ b/gcc/testsuite/gcc.dg/asm-qual-1.c -@@ -1,4 +1,4 @@ --/* Test that qualifiers other than volatile are ignored on asm. */ -+/* Test that qualifiers other than volatile are disallowed on asm. */ - /* Origin: Joseph Myers */ - /* { dg-do compile } */ - /* { dg-options "-std=gnu99" } */ -@@ -7,6 +7,10 @@ void - f (void) - { - asm volatile (""); -- asm const (""); /* { dg-warning "const qualifier ignored on asm" } */ -- asm restrict (""); /* { dg-warning "restrict qualifier ignored on asm" } */ -+ -+ asm const (""); /* { dg-error {expected '\(' before 'const'} } */ -+ /* { dg-error {expected identifier} {} {target *-*-*} .-1 } */ -+ -+ asm restrict (""); /* { dg-error {expected '\(' before 'restrict'} } */ -+ /* { dg-error {expected identifier} {} {target *-*-*} .-1 } */ - } -diff --git a/gcc/testsuite/gcc.dg/asm-qual-2.c b/gcc/testsuite/gcc.dg/asm-qual-2.c -new file mode 100644 -index 0000000..37df2ad ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/asm-qual-2.c -@@ -0,0 +1,21 @@ -+/* Test that qualifiers on asm are allowed in any order. */ -+/* { dg-do compile } */ -+/* { dg-options "-std=gnu99" } */ -+ -+void -+f (void) -+{ -+ asm volatile goto ("" :::: lab); -+ asm goto volatile ("" :::: lab); -+ -+ /* Duplicates are not allowed. */ -+ asm goto volatile volatile ("" :::: lab); /* { dg-error "" } */ -+ asm volatile goto volatile ("" :::: lab); /* { dg-error "" } */ -+ asm volatile volatile goto ("" :::: lab); /* { dg-error "" } */ -+ asm goto goto volatile ("" :::: lab); /* { dg-error "" } */ -+ asm goto volatile goto ("" :::: lab); /* { dg-error "" } */ -+ asm volatile goto goto ("" :::: lab); /* { dg-error "" } */ -+ -+lab: -+ ; -+} diff --git a/source/d/gcc/patches/revert-asm-inline/2-8-asm-inline.patch b/source/d/gcc/patches/revert-asm-inline/2-8-asm-inline.patch deleted file mode 100644 index 9ffb77a89..000000000 --- a/source/d/gcc/patches/revert-asm-inline/2-8-asm-inline.patch +++ /dev/null @@ -1,577 +0,0 @@ -From patchwork Thu Dec 27 14:59:07 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [2/8] asm inline -X-Patchwork-Submitter: Segher Boessenkool -X-Patchwork-Id: 13820 -Message-Id: <420ded3dc643d9e1ee6239ca5a8d1942c69bfe76.1545922222.git.segher@kernel.crashing.org> -To: gcc-patches@gcc.gnu.org -Cc: Segher Boessenkool -Date: Thu, 27 Dec 2018 14:59:07 +0000 -From: Segher Boessenkool -List-Id: - -The Linux kernel people want a feature that makes GCC pretend some -inline assembler code is tiny (while it would think it is huge), so -that such code will be inlined essentially always instead of -essentially never. - -This patch lets you say "asm inline" instead of just "asm", with the -result that that inline assembler is always counted as minimum cost -for inlining. It implements this for C and C++, making "inline" -another asm-qualifier (supplementing "volatile" and "goto"). - -2018-12-06 Segher Boessenkool - - * doc/extend.texi (Using Assembly Language with C): Document asm inline. - (Size of an asm): Fix typo. Document asm inline. - * gimple-pretty-print.c (dump_gimple_asm): Handle asm inline. - * gimple.h (enum gf_mask): Add GF_ASM_INLINE. - (gimple_asm_set_volatile): Fix typo. - (gimple_asm_inline_p): New. - (gimple_asm_set_inline): New. - * gimplify.c (gimplify_asm_expr): Propagate the asm inline flag from - tree to gimple. - * ipa-icf-gimple.c (func_checker::compare_gimple_asm): Compare the - gimple_asm_inline_p flag, too. - * tree-core.h (tree_base): Document that protected_flag is ASM_INLINE_P - in an ASM_EXPR. - * tree-inline.c (estimate_num_insns): If gimple_asm_inline_p return - a minimum size for an asm. - * tree.h (ASM_INLINE_P): New. - -gcc/c/ - * c-parser.c (c_parser_asm_statement): Detect the inline keyword - after asm. Pass a flag for it to build_asm_expr. - * c-tree.h (build_asm_expr): Update declaration. - * c-typeck.c (build_asm_stmt): Add is_inline parameter. Use it to - set ASM_INLINE_P. - -gcc/cp/ - * cp-tree.h (finish_asm_stmt): Update declaration. - * parser.c (cp_parser_asm_definition): Detect the inline keyword - after asm. Pass a flag for it to finish_asm_stmt. - * pt.c (tsubst_expr): Pass the ASM_INLINE_P flag to finish_asm_stmt. - * semantics.c (finish_asm_stmt): Add inline_p parameter. Use it to - set ASM_INLINE_P. - -gcc/testsuite/ - * c-c++-common/torture/asm-inline.c: New testcase. - * gcc.dg/asm-qual-2.c: Test asm inline, too. ---- - gcc/c/c-parser.c | 21 ++++++++-- - gcc/c/c-tree.h | 3 +- - gcc/c/c-typeck.c | 7 +++- - gcc/cp/cp-tree.h | 2 +- - gcc/cp/parser.c | 15 ++++++- - gcc/cp/pt.c | 2 +- - gcc/cp/semantics.c | 5 ++- - gcc/doc/extend.texi | 15 ++++++- - gcc/gimple-pretty-print.c | 2 + - gcc/gimple.h | 26 +++++++++++- - gcc/gimplify.c | 1 + - gcc/ipa-icf-gimple.c | 3 ++ - gcc/testsuite/c-c++-common/torture/asm-inline.c | 53 +++++++++++++++++++++++++ - gcc/testsuite/gcc.dg/asm-qual-2.c | 25 ++++++++++++ - gcc/tree-core.h | 3 ++ - gcc/tree-inline.c | 3 ++ - gcc/tree.h | 3 ++ - 17 files changed, 174 insertions(+), 15 deletions(-) - create mode 100644 gcc/testsuite/c-c++-common/torture/asm-inline.c - --- -1.8.3.1 - -diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c -index 7ec53b3..51cc2be 100644 ---- a/gcc/c/c-parser.c -+++ b/gcc/c/c-parser.c -@@ -6261,11 +6261,12 @@ c_parser_for_statement (c_parser *parser, bool ivdep, unsigned short unroll, - } - - /* Parse an asm statement, a GNU extension. This is a full-blown asm -- statement with inputs, outputs, clobbers, and volatile and goto tag -- allowed. -+ statement with inputs, outputs, clobbers, and volatile, inline, and goto -+ tags allowed. - - asm-qualifier: - volatile -+ inline - goto - - asm-qualifier-list: -@@ -6292,7 +6293,7 @@ static tree - c_parser_asm_statement (c_parser *parser) - { - tree quals, str, outputs, inputs, clobbers, labels, ret; -- bool simple, is_volatile, is_goto; -+ bool simple, is_volatile, is_inline, is_goto; - location_t asm_loc = c_parser_peek_token (parser)->location; - int section, nsections; - -@@ -6301,6 +6302,7 @@ c_parser_asm_statement (c_parser *parser) - - quals = NULL_TREE; - is_volatile = false; -+ is_inline = false; - is_goto = false; - for (bool done = false; !done; ) - switch (c_parser_peek_token (parser)->keyword) -@@ -6315,6 +6317,16 @@ c_parser_asm_statement (c_parser *parser) - else - done = true; - break; -+ case RID_INLINE: -+ if (!is_inline) -+ { -+ is_inline = true; -+ quals = c_parser_peek_token (parser)->value; -+ c_parser_consume_token (parser); -+ } -+ else -+ done = true; -+ break; - case RID_GOTO: - if (!is_goto) - { -@@ -6403,7 +6415,8 @@ c_parser_asm_statement (c_parser *parser) - c_parser_skip_to_end_of_block_or_statement (parser); - - ret = build_asm_stmt (quals, build_asm_expr (asm_loc, str, outputs, inputs, -- clobbers, labels, simple)); -+ clobbers, labels, simple, -+ is_inline)); - - error: - parser->lex_untranslated_string = false; -diff --git a/gcc/c/c-tree.h b/gcc/c/c-tree.h -index ae1a1e6..7f34bdc 100644 ---- a/gcc/c/c-tree.h -+++ b/gcc/c/c-tree.h -@@ -677,7 +677,8 @@ extern tree build_compound_literal (location_t, tree, tree, bool, - extern void check_compound_literal_type (location_t, struct c_type_name *); - extern tree c_start_case (location_t, location_t, tree, bool); - extern void c_finish_case (tree, tree); --extern tree build_asm_expr (location_t, tree, tree, tree, tree, tree, bool); -+extern tree build_asm_expr (location_t, tree, tree, tree, tree, tree, bool, -+ bool); - extern tree build_asm_stmt (tree, tree); - extern int c_types_compatible_p (tree, tree); - extern tree c_begin_compound_stmt (bool); -diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c -index 8205916..3ebb28e 100644 ---- a/gcc/c/c-typeck.c -+++ b/gcc/c/c-typeck.c -@@ -9990,10 +9990,12 @@ build_asm_stmt (tree cv_qualifier, tree args) - some INPUTS, and some CLOBBERS. The latter three may be NULL. - SIMPLE indicates whether there was anything at all after the - string in the asm expression -- asm("blah") and asm("blah" : ) -- are subtly different. We use a ASM_EXPR node to represent this. */ -+ are subtly different. We use a ASM_EXPR node to represent this. -+ LOC is the location of the asm, and IS_INLINE says whether this -+ is asm inline. */ - tree - build_asm_expr (location_t loc, tree string, tree outputs, tree inputs, -- tree clobbers, tree labels, bool simple) -+ tree clobbers, tree labels, bool simple, bool is_inline) - { - tree tail; - tree args; -@@ -10111,6 +10113,7 @@ build_asm_expr (location_t loc, tree string, tree outputs, tree inputs, - as volatile. */ - ASM_INPUT_P (args) = simple; - ASM_VOLATILE_P (args) = (noutputs == 0); -+ ASM_INLINE_P (args) = is_inline; - - return args; - } -diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h -index 85ba5b8..0f24b4f 100644 ---- a/gcc/cp/cp-tree.h -+++ b/gcc/cp/cp-tree.h -@@ -6897,7 +6897,7 @@ extern tree begin_compound_stmt (unsigned int); - - extern void finish_compound_stmt (tree); - extern tree finish_asm_stmt (int, tree, tree, tree, tree, -- tree); -+ tree, bool); - extern tree finish_label_stmt (tree); - extern void finish_label_decl (tree); - extern cp_expr finish_parenthesized_expr (cp_expr); -diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c -index 3bc5795..3fd9a02 100644 ---- a/gcc/cp/parser.c -+++ b/gcc/cp/parser.c -@@ -19069,6 +19069,7 @@ cp_parser_using_directive (cp_parser* parser) - - asm-qualifier: - volatile -+ inline - goto - - asm-qualifier-list: -@@ -19109,6 +19110,7 @@ cp_parser_asm_definition (cp_parser* parser) - bool extended_p = false; - bool invalid_inputs_p = false; - bool invalid_outputs_p = false; -+ bool inline_p = false; - bool goto_p = false; - required_token missing = RT_NONE; - -@@ -19138,6 +19140,17 @@ cp_parser_asm_definition (cp_parser* parser) - else - done = true; - break; -+ case RID_INLINE: -+ if (!inline_p && parser->in_function_body) -+ { -+ /* Remember that we saw the `inline' keyword. */ -+ inline_p = true; -+ /* Consume the token. */ -+ cp_lexer_consume_token (parser->lexer); -+ } -+ else -+ done = true; -+ break; - case RID_GOTO: - if (!goto_p && parser->in_function_body) - { -@@ -19279,7 +19292,7 @@ cp_parser_asm_definition (cp_parser* parser) - if (parser->in_function_body) - { - asm_stmt = finish_asm_stmt (volatile_p, string, outputs, -- inputs, clobbers, labels); -+ inputs, clobbers, labels, inline_p); - /* If the extended syntax was not used, mark the ASM_EXPR. */ - if (!extended_p) - { -diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c -index e9a9ac9..446f4fb 100644 ---- a/gcc/cp/pt.c -+++ b/gcc/cp/pt.c -@@ -16990,7 +16990,7 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl, - tree labels = tsubst_copy_asm_operands (ASM_LABELS (t), args, - complain, in_decl); - tmp = finish_asm_stmt (ASM_VOLATILE_P (t), string, outputs, inputs, -- clobbers, labels); -+ clobbers, labels, ASM_INLINE_P (t)); - tree asm_expr = tmp; - if (TREE_CODE (asm_expr) == CLEANUP_POINT_EXPR) - asm_expr = TREE_OPERAND (asm_expr, 0); -diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c -index 1744ec0..1f6c9be 100644 ---- a/gcc/cp/semantics.c -+++ b/gcc/cp/semantics.c -@@ -1461,11 +1461,11 @@ finish_compound_stmt (tree stmt) - /* Finish an asm-statement, whose components are a STRING, some - OUTPUT_OPERANDS, some INPUT_OPERANDS, some CLOBBERS and some - LABELS. Also note whether the asm-statement should be -- considered volatile. */ -+ considered volatile, and whether it is asm inline. */ - - tree - finish_asm_stmt (int volatile_p, tree string, tree output_operands, -- tree input_operands, tree clobbers, tree labels) -+ tree input_operands, tree clobbers, tree labels, bool inline_p) - { - tree r; - tree t; -@@ -1619,6 +1619,7 @@ finish_asm_stmt (int volatile_p, tree string, tree output_operands, - output_operands, input_operands, - clobbers, labels); - ASM_VOLATILE_P (r) = volatile_p || noutputs == 0; -+ ASM_INLINE_P (r) = inline_p; - r = maybe_cleanup_point_expr_void (r); - return add_stmt (r); - } -diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi -index 40b1989..4ff37c4 100644 ---- a/gcc/doc/extend.texi -+++ b/gcc/doc/extend.texi -@@ -8160,6 +8160,10 @@ various @option{-std} options, use @code{__asm__} instead of - @item volatile - The optional @code{volatile} qualifier has no effect. - All basic @code{asm} blocks are implicitly volatile. -+ -+@item inline -+If you use the @code{inline} qualifier, then for inlining purposes the size -+of the asm is taken as the smallest size possible (@pxref{Size of an asm}). - @end table - - @subsubheading Parameters -@@ -8303,6 +8307,10 @@ values to produce output values. However, your @code{asm} statements may - also produce side effects. If so, you may need to use the @code{volatile} - qualifier to disable certain optimizations. @xref{Volatile}. - -+@item inline -+If you use the @code{inline} qualifier, then for inlining purposes the size -+of the asm is taken as the smallest size possible (@pxref{Size of an asm}). -+ - @item goto - This qualifier informs the compiler that the @code{asm} statement may - perform a jump to one of the labels listed in the @var{GotoLabels}. -@@ -9714,7 +9722,7 @@ does this by counting the number of instructions in the pattern of the - @code{asm} and multiplying that by the length of the longest - instruction supported by that processor. (When working out the number - of instructions, it assumes that any occurrence of a newline or of --whatever statement separator character is supported by the assembler -- -+whatever statement separator character is supported by the assembler --- - typically @samp{;} --- indicates the end of an instruction.) - - Normally, GCC's estimate is adequate to ensure that correct -@@ -9725,6 +9733,11 @@ space in the object file than is needed for a single instruction. - If this happens then the assembler may produce a diagnostic saying that - a label is unreachable. - -+@cindex @code{asm inline} -+This size is also used for inlining decisions. If you use @code{asm inline} -+instead of just @code{asm}, then for inlining purposes the size of the asm -+is taken as the minimum size, ignoring how many instructions GCC thinks it is. -+ - @node Alternate Keywords - @section Alternate Keywords - @cindex alternate keywords -diff --git a/gcc/gimple-pretty-print.c b/gcc/gimple-pretty-print.c -index 6695526..487770f 100644 ---- a/gcc/gimple-pretty-print.c -+++ b/gcc/gimple-pretty-print.c -@@ -2040,6 +2040,8 @@ dump_gimple_asm (pretty_printer *buffer, gasm *gs, int spc, dump_flags_t flags) - pp_string (buffer, "__asm__"); - if (gimple_asm_volatile_p (gs)) - pp_string (buffer, " __volatile__"); -+ if (gimple_asm_inline_p (gs)) -+ pp_string (buffer, " __inline__"); - if (gimple_asm_nlabels (gs)) - pp_string (buffer, " goto"); - pp_string (buffer, "(\""); -diff --git a/gcc/gimple.h b/gcc/gimple.h -index 265e3e2..224463b 100644 ---- a/gcc/gimple.h -+++ b/gcc/gimple.h -@@ -137,6 +137,7 @@ enum gimple_rhs_class - enum gf_mask { - GF_ASM_INPUT = 1 << 0, - GF_ASM_VOLATILE = 1 << 1, -+ GF_ASM_INLINE = 1 << 2, - GF_CALL_FROM_THUNK = 1 << 0, - GF_CALL_RETURN_SLOT_OPT = 1 << 1, - GF_CALL_TAILCALL = 1 << 2, -@@ -3925,7 +3926,7 @@ gimple_asm_string (const gasm *asm_stmt) - } - - --/* Return true ASM_STMT ASM_STMT is an asm statement marked volatile. */ -+/* Return true if ASM_STMT is marked volatile. */ - - static inline bool - gimple_asm_volatile_p (const gasm *asm_stmt) -@@ -3934,7 +3935,7 @@ gimple_asm_volatile_p (const gasm *asm_stmt) - } - - --/* If VOLATLE_P is true, mark asm statement ASM_STMT as volatile. */ -+/* If VOLATILE_P is true, mark asm statement ASM_STMT as volatile. */ - - static inline void - gimple_asm_set_volatile (gasm *asm_stmt, bool volatile_p) -@@ -3946,6 +3947,27 @@ gimple_asm_set_volatile (gasm *asm_stmt, bool volatile_p) - } - - -+/* Return true if ASM_STMT is marked inline. */ -+ -+static inline bool -+gimple_asm_inline_p (const gasm *asm_stmt) -+{ -+ return (asm_stmt->subcode & GF_ASM_INLINE) != 0; -+} -+ -+ -+/* If INLINE_P is true, mark asm statement ASM_STMT as inline. */ -+ -+static inline void -+gimple_asm_set_inline (gasm *asm_stmt, bool inline_p) -+{ -+ if (inline_p) -+ asm_stmt->subcode |= GF_ASM_INLINE; -+ else -+ asm_stmt->subcode &= ~GF_ASM_INLINE; -+} -+ -+ - /* If INPUT_P is true, mark asm ASM_STMT as an ASM_INPUT. */ - - static inline void -diff --git a/gcc/gimplify.c b/gcc/gimplify.c -index 43cb891..fce0ce9 100644 ---- a/gcc/gimplify.c -+++ b/gcc/gimplify.c -@@ -6360,6 +6360,7 @@ gimplify_asm_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p) - - gimple_asm_set_volatile (stmt, ASM_VOLATILE_P (expr) || noutputs == 0); - gimple_asm_set_input (stmt, ASM_INPUT_P (expr)); -+ gimple_asm_set_inline (stmt, ASM_INLINE_P (expr)); - - gimplify_seq_add_stmt (pre_p, stmt); - } -diff --git a/gcc/ipa-icf-gimple.c b/gcc/ipa-icf-gimple.c -index 161080c..37b9fe7 100644 ---- a/gcc/ipa-icf-gimple.c -+++ b/gcc/ipa-icf-gimple.c -@@ -994,6 +994,9 @@ func_checker::compare_gimple_asm (const gasm *g1, const gasm *g2) - if (gimple_asm_input_p (g1) != gimple_asm_input_p (g2)) - return false; - -+ if (gimple_asm_inline_p (g1) != gimple_asm_inline_p (g2)) -+ return false; -+ - if (gimple_asm_ninputs (g1) != gimple_asm_ninputs (g2)) - return false; - -diff --git a/gcc/testsuite/c-c++-common/torture/asm-inline.c b/gcc/testsuite/c-c++-common/torture/asm-inline.c -new file mode 100644 -index 0000000..dea8965 ---- /dev/null -+++ b/gcc/testsuite/c-c++-common/torture/asm-inline.c -@@ -0,0 +1,53 @@ -+/* { dg-do compile } */ -+/* -O0 does no inlining, and -O3 does it too aggressively for this test: */ -+/* { dg-skip-if "" { *-*-* } { "-O0" "-O3" } { "" } } -+/* The normal asm is not inlined: */ -+/* { dg-final { scan-assembler-times "w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w" 2 } } */ -+/* But the asm inline is inlined: */ -+/* { dg-final { scan-assembler-times "x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x" 8 } } */ -+ -+static void f(void) -+{ -+ asm ("w\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\n" -+ "w\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw"); -+} -+ -+int f0(void) { f(); return 0; } -+int f1(void) { f(); return 1; } -+int f2(void) { f(); return 2; } -+int f3(void) { f(); return 3; } -+ -+static void fg(void) -+{ -+ asm goto("w\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\n" -+ "w\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw" :::: q); -+ q: ; -+} -+ -+int fg0(void) { fg(); return 0; } -+int fg1(void) { fg(); return 1; } -+int fg2(void) { fg(); return 2; } -+int fg3(void) { fg(); return 3; } -+ -+static void g(void) -+{ -+ asm inline("x\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\n" -+ "x\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx"); -+} -+ -+int g0(void) { g(); return 0; } -+int g1(void) { g(); return 1; } -+int g2(void) { g(); return 2; } -+int g3(void) { g(); return 3; } -+ -+static void gg(void) -+{ -+ asm inline goto("x\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\n" -+ "x\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx" :::: q); -+ q: ; -+} -+ -+int gg0(void) { gg(); return 0; } -+int gg1(void) { gg(); return 1; } -+int gg2(void) { gg(); return 2; } -+int gg3(void) { gg(); return 3; } -diff --git a/gcc/testsuite/gcc.dg/asm-qual-2.c b/gcc/testsuite/gcc.dg/asm-qual-2.c -index 37df2ad..79135c3 100644 ---- a/gcc/testsuite/gcc.dg/asm-qual-2.c -+++ b/gcc/testsuite/gcc.dg/asm-qual-2.c -@@ -6,7 +6,18 @@ void - f (void) - { - asm volatile goto ("" :::: lab); -+ asm volatile inline ("" :::); -+ asm inline volatile ("" :::); -+ asm inline goto ("" :::: lab); - asm goto volatile ("" :::: lab); -+ asm goto inline ("" :::: lab); -+ -+ asm volatile inline goto ("" :::: lab); -+ asm volatile goto inline ("" :::: lab); -+ asm inline volatile goto ("" :::: lab); -+ asm inline goto volatile ("" :::: lab); -+ asm goto volatile inline ("" :::: lab); -+ asm goto inline volatile ("" :::: lab); - - /* Duplicates are not allowed. */ - asm goto volatile volatile ("" :::: lab); /* { dg-error "" } */ -@@ -16,6 +27,20 @@ f (void) - asm goto volatile goto ("" :::: lab); /* { dg-error "" } */ - asm volatile goto goto ("" :::: lab); /* { dg-error "" } */ - -+ asm inline volatile volatile ("" :::); /* { dg-error "" } */ -+ asm volatile inline volatile ("" :::); /* { dg-error "" } */ -+ asm volatile volatile inline ("" :::); /* { dg-error "" } */ -+ asm inline inline volatile ("" :::); /* { dg-error "" } */ -+ asm inline volatile inline ("" :::); /* { dg-error "" } */ -+ asm volatile inline inline ("" :::); /* { dg-error "" } */ -+ -+ asm goto inline inline ("" :::: lab); /* { dg-error "" } */ -+ asm inline goto inline ("" :::: lab); /* { dg-error "" } */ -+ asm inline inline goto ("" :::: lab); /* { dg-error "" } */ -+ asm goto goto inline ("" :::: lab); /* { dg-error "" } */ -+ asm goto inline goto ("" :::: lab); /* { dg-error "" } */ -+ asm inline goto goto ("" :::: lab); /* { dg-error "" } */ -+ - lab: - ; - } -diff --git a/gcc/tree-core.h b/gcc/tree-core.h -index 356330a..84f75e6 100644 ---- a/gcc/tree-core.h -+++ b/gcc/tree-core.h -@@ -1161,6 +1161,9 @@ struct GTY(()) tree_base { - OMP_CLAUSE_LINEAR_VARIABLE_STRIDE in - OMP_CLAUSE_LINEAR - -+ ASM_INLINE_P in -+ ASM_EXPR -+ - side_effects_flag: - - TREE_SIDE_EFFECTS in -diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c -index 7555dce..324c168 100644 ---- a/gcc/tree-inline.c -+++ b/gcc/tree-inline.c -@@ -4149,6 +4149,9 @@ estimate_num_insns (gimple *stmt, eni_weights *weights) - with very long asm statements. */ - if (count > 1000) - count = 1000; -+ /* If this asm is asm inline, count anything as minimum size. */ -+ if (gimple_asm_inline_p (as_a (stmt))) -+ count = MIN (1, count); - return MAX (1, count); - } - -diff --git a/gcc/tree.h b/gcc/tree.h -index 8e70314..324ef5b 100644 ---- a/gcc/tree.h -+++ b/gcc/tree.h -@@ -1263,6 +1263,9 @@ extern tree maybe_wrap_with_location (tree, location_t); - ASM_OPERAND with no operands. */ - #define ASM_INPUT_P(NODE) (ASM_EXPR_CHECK (NODE)->base.static_flag) - #define ASM_VOLATILE_P(NODE) (ASM_EXPR_CHECK (NODE)->base.public_flag) -+/* Nonzero if we want to consider this asm as minimum length and cost -+ for inlining decisions. */ -+#define ASM_INLINE_P(NODE) (ASM_EXPR_CHECK (NODE)->base.protected_flag) - - /* COND_EXPR accessors. */ - #define COND_EXPR_COND(NODE) (TREE_OPERAND (COND_EXPR_CHECK (NODE), 0)) diff --git a/source/d/gcc/patches/revert-asm-inline/3-8-c-Delete-a-stray-line-in-asm-inline.patch b/source/d/gcc/patches/revert-asm-inline/3-8-c-Delete-a-stray-line-in-asm-inline.patch deleted file mode 100644 index 043df1466..000000000 --- a/source/d/gcc/patches/revert-asm-inline/3-8-c-Delete-a-stray-line-in-asm-inline.patch +++ /dev/null @@ -1,45 +0,0 @@ -From patchwork Thu Dec 27 14:59:08 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [3/8] c: Delete a stray line in asm inline -X-Patchwork-Submitter: Segher Boessenkool -X-Patchwork-Id: 13819 -Message-Id: <35014fbfa36ce89dd26fdf43387416a907be4782.1545922222.git.segher@kernel.crashing.org> -To: gcc-patches@gcc.gnu.org -Cc: Segher Boessenkool -Date: Thu, 27 Dec 2018 14:59:08 +0000 -From: Segher Boessenkool -List-Id: - -I noticed I accidentally copied a line too many from the "volatile" -handling to the "inline" handling. This fixes it. - -Tested on powerpc64-linux {-m32,-m64}; committing as trivial and obvious. - -Segher - -2018-12-08 Segher Boessenkool - -gcc/c/ - * c-parser (c_parser_asm_statement) [RID_INLINE]: Delete stray line - setting "quals". ---- - gcc/c/c-parser.c | 1 - - 1 file changed, 1 deletion(-) - --- -1.8.3.1 - -diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c -index 51cc2be..e45f70b 100644 ---- a/gcc/c/c-parser.c -+++ b/gcc/c/c-parser.c -@@ -6321,7 +6321,6 @@ c_parser_asm_statement (c_parser *parser) - if (!is_inline) - { - is_inline = true; -- quals = c_parser_peek_token (parser)->value; - c_parser_consume_token (parser); - } - else diff --git a/source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch b/source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch deleted file mode 100644 index 0c73f5386..000000000 --- a/source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch +++ /dev/null @@ -1,194 +0,0 @@ -From patchwork Thu Dec 27 14:59:09 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [4/8] c/c++, asm: Write the asm-qualifier loop without "done" boolean -X-Patchwork-Submitter: Segher Boessenkool -X-Patchwork-Id: 13821 -Message-Id: <5bbbd04162b8546d9c72da11cf33e6e61d1128d7.1545922222.git.segher@kernel.crashing.org> -To: gcc-patches@gcc.gnu.org -Cc: Segher Boessenkool -Date: Thu, 27 Dec 2018 14:59:09 +0000 -From: Segher Boessenkool -List-Id: - -As suggested by Jason. - -Segher - -2018-12-10 Segher Boessenkool - -c/ - * c-parser.c (c_parser_asm_statement): Rewrite the loop to work without - "done" boolean variable. - -cp/ - * parser.c (cp_parser_asm_definition): Rewrite the loop to work without - "done" boolean variable. ---- - gcc/c/c-parser.c | 65 +++++++++++++++++++++++++-------------------------- - gcc/cp/parser.c | 71 +++++++++++++++++++++++++------------------------------- - 2 files changed, 62 insertions(+), 74 deletions(-) - --- -1.8.3.1 - -diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c -index e45f70b..b632f68 100644 ---- a/gcc/c/c-parser.c -+++ b/gcc/c/c-parser.c -@@ -6304,40 +6304,37 @@ c_parser_asm_statement (c_parser *parser) - is_volatile = false; - is_inline = false; - is_goto = false; -- for (bool done = false; !done; ) -- switch (c_parser_peek_token (parser)->keyword) -- { -- case RID_VOLATILE: -- if (!is_volatile) -- { -- is_volatile = true; -- quals = c_parser_peek_token (parser)->value; -- c_parser_consume_token (parser); -- } -- else -- done = true; -- break; -- case RID_INLINE: -- if (!is_inline) -- { -- is_inline = true; -- c_parser_consume_token (parser); -- } -- else -- done = true; -- break; -- case RID_GOTO: -- if (!is_goto) -- { -- is_goto = true; -- c_parser_consume_token (parser); -- } -- else -- done = true; -- break; -- default: -- done = true; -- } -+ for (;;) -+ { -+ switch (c_parser_peek_token (parser)->keyword) -+ { -+ case RID_VOLATILE: -+ if (is_volatile) -+ break; -+ is_volatile = true; -+ quals = c_parser_peek_token (parser)->value; -+ c_parser_consume_token (parser); -+ continue; -+ -+ case RID_INLINE: -+ if (is_inline) -+ break; -+ is_inline = true; -+ c_parser_consume_token (parser); -+ continue; -+ -+ case RID_GOTO: -+ if (is_goto) -+ break; -+ is_goto = true; -+ c_parser_consume_token (parser); -+ continue; -+ -+ default: -+ break; -+ } -+ break; -+ } - - /* ??? Follow the C++ parser rather than using the - lex_untranslated_string kludge. */ -diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c -index 3fd9a02..7660565 100644 ---- a/gcc/cp/parser.c -+++ b/gcc/cp/parser.c -@@ -19124,47 +19124,38 @@ cp_parser_asm_definition (cp_parser* parser) - cp_function_chain->invalid_constexpr = true; - } - -- /* See if the next token is `volatile'. */ -+ /* Handle the asm-qualifier-list. */ - if (cp_parser_allow_gnu_extensions_p (parser)) -- for (bool done = false; !done ; ) -- switch (cp_lexer_peek_token (parser->lexer)->keyword) -- { -- case RID_VOLATILE: -- if (!volatile_p) -- { -- /* Remember that we saw the `volatile' keyword. */ -- volatile_p = true; -- /* Consume the token. */ -- cp_lexer_consume_token (parser->lexer); -- } -- else -- done = true; -- break; -- case RID_INLINE: -- if (!inline_p && parser->in_function_body) -- { -- /* Remember that we saw the `inline' keyword. */ -- inline_p = true; -- /* Consume the token. */ -- cp_lexer_consume_token (parser->lexer); -- } -- else -- done = true; -- break; -- case RID_GOTO: -- if (!goto_p && parser->in_function_body) -- { -- /* Remember that we saw the `goto' keyword. */ -- goto_p = true; -- /* Consume the token. */ -- cp_lexer_consume_token (parser->lexer); -- } -- else -- done = true; -- break; -- default: -- done = true; -- } -+ for (;;) -+ { -+ switch (cp_lexer_peek_token (parser->lexer)->keyword) -+ { -+ case RID_VOLATILE: -+ if (volatile_p) -+ break; -+ volatile_p = true; -+ cp_lexer_consume_token (parser->lexer); -+ continue; -+ -+ case RID_INLINE: -+ if (inline_p || !parser->in_function_body) -+ break; -+ inline_p = true; -+ cp_lexer_consume_token (parser->lexer); -+ continue; -+ -+ case RID_GOTO: -+ if (goto_p || !parser->in_function_body) -+ break; -+ goto_p = true; -+ cp_lexer_consume_token (parser->lexer); -+ continue; -+ -+ default: -+ break; -+ } -+ break; -+ } - - /* Look for the opening `('. */ - if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) diff --git a/source/d/gcc/patches/revert-asm-inline/5-8-c-c-asm-Use-nicer-error-for-duplicate-asm-qualifiers.patch b/source/d/gcc/patches/revert-asm-inline/5-8-c-c-asm-Use-nicer-error-for-duplicate-asm-qualifiers.patch deleted file mode 100644 index 6f8175c89..000000000 --- a/source/d/gcc/patches/revert-asm-inline/5-8-c-c-asm-Use-nicer-error-for-duplicate-asm-qualifiers.patch +++ /dev/null @@ -1,269 +0,0 @@ -From patchwork Thu Dec 27 14:59:10 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [5/8] c/c++, asm: Use nicer error for duplicate asm qualifiers -X-Patchwork-Submitter: Segher Boessenkool -X-Patchwork-Id: 13822 -Message-Id: <30a12d359164450406601e125d128fc43af4d605.1545922222.git.segher@kernel.crashing.org> -To: gcc-patches@gcc.gnu.org -Cc: Segher Boessenkool -Date: Thu, 27 Dec 2018 14:59:10 +0000 -From: Segher Boessenkool -List-Id: - -Also as suggested by Jason. - -Segher - -2018-12-10 Segher Boessenkool - -c/ - * c-parser.c (c_parser_asm_statement): Keep track of the location each - asm qualifier is first seen; use that to give nicer "duplicate asm - qualifier" messages. Delete 'quals" variable, instead pass the - "is_volatile_ flag to build_asm_stmt directly. - * c-tree.h (build_asm_stmt): Make the first arg bool instead of tree. - * c-typeck.c (build_asm_stmt): Ditto; adjust. - -cp/ - * parser.c (cp_parser_asm_definition): Rewrite the loop to work without - "done" boolean variable. - * parser.c (cp_parser_asm_definition): Keep track of the location each - asm qualifier is first seen; use that to give nicer "duplicate asm - qualifier" messages. ---- - gcc/c/c-parser.c | 57 ++++++++++++++++++++++++++++++++++++-------------------- - gcc/c/c-tree.h | 2 +- - gcc/c/c-typeck.c | 4 ++-- - gcc/cp/parser.c | 45 ++++++++++++++++++++++++++++++++------------ - 4 files changed, 73 insertions(+), 35 deletions(-) - --- -1.8.3.1 - -diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c -index b632f68..ca04910 100644 ---- a/gcc/c/c-parser.c -+++ b/gcc/c/c-parser.c -@@ -6292,41 +6292,54 @@ c_parser_for_statement (c_parser *parser, bool ivdep, unsigned short unroll, - static tree - c_parser_asm_statement (c_parser *parser) - { -- tree quals, str, outputs, inputs, clobbers, labels, ret; -- bool simple, is_volatile, is_inline, is_goto; -+ tree str, outputs, inputs, clobbers, labels, ret; -+ bool simple; - location_t asm_loc = c_parser_peek_token (parser)->location; - int section, nsections; - - gcc_assert (c_parser_next_token_is_keyword (parser, RID_ASM)); - c_parser_consume_token (parser); - -- quals = NULL_TREE; -- is_volatile = false; -- is_inline = false; -- is_goto = false; -+ /* Handle the asm-qualifier-list. */ -+ location_t volatile_loc = UNKNOWN_LOCATION; -+ location_t inline_loc = UNKNOWN_LOCATION; -+ location_t goto_loc = UNKNOWN_LOCATION; - for (;;) - { -- switch (c_parser_peek_token (parser)->keyword) -+ c_token *token = c_parser_peek_token (parser); -+ location_t loc = token->location; -+ switch (token->keyword) - { - case RID_VOLATILE: -- if (is_volatile) -- break; -- is_volatile = true; -- quals = c_parser_peek_token (parser)->value; -+ if (volatile_loc) -+ { -+ error_at (loc, "duplicate asm qualifier %qE", token->value); -+ inform (volatile_loc, "first seen here"); -+ } -+ else -+ volatile_loc = loc; - c_parser_consume_token (parser); - continue; - - case RID_INLINE: -- if (is_inline) -- break; -- is_inline = true; -+ if (inline_loc) -+ { -+ error_at (loc, "duplicate asm qualifier %qE", token->value); -+ inform (inline_loc, "first seen here"); -+ } -+ else -+ inline_loc = loc; - c_parser_consume_token (parser); - continue; - - case RID_GOTO: -- if (is_goto) -- break; -- is_goto = true; -+ if (goto_loc) -+ { -+ error_at (loc, "duplicate asm qualifier %qE", token->value); -+ inform (goto_loc, "first seen here"); -+ } -+ else -+ goto_loc = loc; - c_parser_consume_token (parser); - continue; - -@@ -6336,6 +6349,10 @@ c_parser_asm_statement (c_parser *parser) - break; - } - -+ bool is_volatile = (volatile_loc != UNKNOWN_LOCATION); -+ bool is_inline = (inline_loc != UNKNOWN_LOCATION); -+ bool is_goto = (goto_loc != UNKNOWN_LOCATION); -+ - /* ??? Follow the C++ parser rather than using the - lex_untranslated_string kludge. */ - parser->lex_untranslated_string = true; -@@ -6410,9 +6427,9 @@ c_parser_asm_statement (c_parser *parser) - if (!c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>")) - c_parser_skip_to_end_of_block_or_statement (parser); - -- ret = build_asm_stmt (quals, build_asm_expr (asm_loc, str, outputs, inputs, -- clobbers, labels, simple, -- is_inline)); -+ ret = build_asm_stmt (is_volatile, -+ build_asm_expr (asm_loc, str, outputs, inputs, -+ clobbers, labels, simple, is_inline)); - - error: - parser->lex_untranslated_string = false; -diff --git a/gcc/c/c-tree.h b/gcc/c/c-tree.h -index 7f34bdc..aa66aa2 100644 ---- a/gcc/c/c-tree.h -+++ b/gcc/c/c-tree.h -@@ -679,7 +679,7 @@ extern tree c_start_case (location_t, location_t, tree, bool); - extern void c_finish_case (tree, tree); - extern tree build_asm_expr (location_t, tree, tree, tree, tree, tree, bool, - bool); --extern tree build_asm_stmt (tree, tree); -+extern tree build_asm_stmt (bool, tree); - extern int c_types_compatible_p (tree, tree); - extern tree c_begin_compound_stmt (bool); - extern tree c_end_compound_stmt (location_t, tree, bool); -diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c -index 3ebb28e..7b90b5c 100644 ---- a/gcc/c/c-typeck.c -+++ b/gcc/c/c-typeck.c -@@ -9979,9 +9979,9 @@ process_init_element (location_t loc, struct c_expr value, bool implicit, - (guaranteed to be 'volatile' or null) and ARGS (represented using - an ASM_EXPR node). */ - tree --build_asm_stmt (tree cv_qualifier, tree args) -+build_asm_stmt (bool is_volatile, tree args) - { -- if (!ASM_VOLATILE_P (args) && cv_qualifier) -+ if (is_volatile) - ASM_VOLATILE_P (args) = 1; - return add_stmt (args); - } -diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c -index 7660565..44fdace 100644 ---- a/gcc/cp/parser.c -+++ b/gcc/cp/parser.c -@@ -19106,12 +19106,9 @@ cp_parser_asm_definition (cp_parser* parser) - tree clobbers = NULL_TREE; - tree labels = NULL_TREE; - tree asm_stmt; -- bool volatile_p = false; - bool extended_p = false; - bool invalid_inputs_p = false; - bool invalid_outputs_p = false; -- bool inline_p = false; -- bool goto_p = false; - required_token missing = RT_NONE; - - /* Look for the `asm' keyword. */ -@@ -19125,29 +19122,50 @@ cp_parser_asm_definition (cp_parser* parser) - } - - /* Handle the asm-qualifier-list. */ -+ location_t volatile_loc = UNKNOWN_LOCATION; -+ location_t inline_loc = UNKNOWN_LOCATION; -+ location_t goto_loc = UNKNOWN_LOCATION; - if (cp_parser_allow_gnu_extensions_p (parser)) - for (;;) - { -+ cp_token *token = cp_lexer_peek_token (parser->lexer); -+ location_t loc = token->location; - switch (cp_lexer_peek_token (parser->lexer)->keyword) - { - case RID_VOLATILE: -- if (volatile_p) -- break; -- volatile_p = true; -+ if (volatile_loc) -+ { -+ error_at (loc, "duplicate asm qualifier %qT", token->u.value); -+ inform (volatile_loc, "first seen here"); -+ } -+ else -+ volatile_loc = loc; - cp_lexer_consume_token (parser->lexer); - continue; - - case RID_INLINE: -- if (inline_p || !parser->in_function_body) -+ if (!parser->in_function_body) - break; -- inline_p = true; -+ if (inline_loc) -+ { -+ error_at (loc, "duplicate asm qualifier %qT", token->u.value); -+ inform (inline_loc, "first seen here"); -+ } -+ else -+ inline_loc = loc; - cp_lexer_consume_token (parser->lexer); - continue; - - case RID_GOTO: -- if (goto_p || !parser->in_function_body) -+ if (!parser->in_function_body) - break; -- goto_p = true; -+ if (goto_loc) -+ { -+ error_at (loc, "duplicate asm qualifier %qT", token->u.value); -+ inform (goto_loc, "first seen here"); -+ } -+ else -+ goto_loc = loc; - cp_lexer_consume_token (parser->lexer); - continue; - -@@ -19157,6 +19175,10 @@ cp_parser_asm_definition (cp_parser* parser) - break; - } - -+ bool volatile_p = (volatile_loc != UNKNOWN_LOCATION); -+ bool inline_p = (inline_loc != UNKNOWN_LOCATION); -+ bool goto_p = (goto_loc != UNKNOWN_LOCATION); -+ - /* Look for the opening `('. */ - if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) - return; -@@ -19248,8 +19270,7 @@ cp_parser_asm_definition (cp_parser* parser) - CPP_CLOSE_PAREN)) - clobbers = cp_parser_asm_clobber_list (parser); - } -- else if (goto_p -- && cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)) -+ else if (goto_p && cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)) - /* The labels are coming next. */ - labels_p = true; - diff --git a/source/d/gcc/patches/revert-asm-inline/6-8-c-c-asm-Use-nicer-error-for-const-and-restrict.patch b/source/d/gcc/patches/revert-asm-inline/6-8-c-c-asm-Use-nicer-error-for-const-and-restrict.patch deleted file mode 100644 index 0ee1c6b0d..000000000 --- a/source/d/gcc/patches/revert-asm-inline/6-8-c-c-asm-Use-nicer-error-for-const-and-restrict.patch +++ /dev/null @@ -1,167 +0,0 @@ -From patchwork Thu Dec 27 14:59:11 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [6/8] c/c++, asm: Use nicer error for const and restrict -X-Patchwork-Submitter: Segher Boessenkool -X-Patchwork-Id: 13823 -Message-Id: -To: gcc-patches@gcc.gnu.org -Cc: Segher Boessenkool -Date: Thu, 27 Dec 2018 14:59:11 +0000 -From: Segher Boessenkool -List-Id: - -Not all qualifiers are asm qualifiers. We can talk about that in a -nicer way than just giving a generic parser error. - -This also adds two testcases for C++, that previously were for C only. - -2018-12-10 Segher Boessenkool - -c/ - * c-parser.c (c_parser_asm_statement) : Give - a more specific error message (instead of just falling through). - -cp/ - * parser.c (cp_parser_asm_definition) : Give - a more specific error message (instead of just falling through). - -testsuite/ - * g++.dg/asm-qual-1.C: New testcase. - * g++.dg/asm-qual-2.C: New testcase. - * gcc.dg/asm-qual-1.c: Update. ---- - gcc/c/c-parser.c | 6 +++++ - gcc/cp/parser.c | 6 +++++ - gcc/testsuite/g++.dg/asm-qual-1.C | 13 +++++++++++ - gcc/testsuite/g++.dg/asm-qual-2.C | 46 +++++++++++++++++++++++++++++++++++++++ - gcc/testsuite/gcc.dg/asm-qual-1.c | 6 ++--- - 5 files changed, 73 insertions(+), 4 deletions(-) - create mode 100644 gcc/testsuite/g++.dg/asm-qual-1.C - create mode 100644 gcc/testsuite/g++.dg/asm-qual-2.C - --- -1.8.3.1 - -diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c -index ca04910..4baad62 100644 ---- a/gcc/c/c-parser.c -+++ b/gcc/c/c-parser.c -@@ -6343,6 +6343,12 @@ c_parser_asm_statement (c_parser *parser) - c_parser_consume_token (parser); - continue; - -+ case RID_CONST: -+ case RID_RESTRICT: -+ error_at (loc, "%qE is not an asm qualifier", token->value); -+ c_parser_consume_token (parser); -+ continue; -+ - default: - break; - } -diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c -index 44fdace..36d82b8 100644 ---- a/gcc/cp/parser.c -+++ b/gcc/cp/parser.c -@@ -19169,6 +19169,12 @@ cp_parser_asm_definition (cp_parser* parser) - cp_lexer_consume_token (parser->lexer); - continue; - -+ case RID_CONST: -+ case RID_RESTRICT: -+ error_at (loc, "%qT is not an asm qualifier", token->u.value); -+ cp_lexer_consume_token (parser->lexer); -+ continue; -+ - default: - break; - } -diff --git a/gcc/testsuite/g++.dg/asm-qual-1.C b/gcc/testsuite/g++.dg/asm-qual-1.C -new file mode 100644 -index 0000000..3fba592 ---- /dev/null -+++ b/gcc/testsuite/g++.dg/asm-qual-1.C -@@ -0,0 +1,13 @@ -+// Test that qualifiers other than volatile are disallowed on asm. -+// { dg-do compile } -+// { dg-options "-std=gnu++98" } -+ -+void -+f () -+{ -+ asm volatile (""); -+ -+ asm const (""); // { dg-error {'const' is not an asm qualifier} } -+ -+ asm __restrict (""); // { dg-error {'__restrict' is not an asm qualifier} } -+} -diff --git a/gcc/testsuite/g++.dg/asm-qual-2.C b/gcc/testsuite/g++.dg/asm-qual-2.C -new file mode 100644 -index 0000000..52968bd ---- /dev/null -+++ b/gcc/testsuite/g++.dg/asm-qual-2.C -@@ -0,0 +1,46 @@ -+// Test that qualifiers on asm are allowed in any order. -+// { dg-do compile } -+// { dg-options "-std=c++98" } -+ -+void -+f () -+{ -+ asm volatile goto ("" :::: lab); -+ asm volatile inline ("" :::); -+ asm inline volatile ("" :::); -+ asm inline goto ("" :::: lab); -+ asm goto volatile ("" :::: lab); -+ asm goto inline ("" :::: lab); -+ -+ asm volatile inline goto ("" :::: lab); -+ asm volatile goto inline ("" :::: lab); -+ asm inline volatile goto ("" :::: lab); -+ asm inline goto volatile ("" :::: lab); -+ asm goto volatile inline ("" :::: lab); -+ asm goto inline volatile ("" :::: lab); -+ -+ /* Duplicates are not allowed. */ -+ asm goto volatile volatile ("" :::: lab); /* { dg-error "" } */ -+ asm volatile goto volatile ("" :::: lab); /* { dg-error "" } */ -+ asm volatile volatile goto ("" :::: lab); /* { dg-error "" } */ -+ asm goto goto volatile ("" :::: lab); /* { dg-error "" } */ -+ asm goto volatile goto ("" :::: lab); /* { dg-error "" } */ -+ asm volatile goto goto ("" :::: lab); /* { dg-error "" } */ -+ -+ asm inline volatile volatile ("" :::); /* { dg-error "" } */ -+ asm volatile inline volatile ("" :::); /* { dg-error "" } */ -+ asm volatile volatile inline ("" :::); /* { dg-error "" } */ -+ asm inline inline volatile ("" :::); /* { dg-error "" } */ -+ asm inline volatile inline ("" :::); /* { dg-error "" } */ -+ asm volatile inline inline ("" :::); /* { dg-error "" } */ -+ -+ asm goto inline inline ("" :::: lab); /* { dg-error "" } */ -+ asm inline goto inline ("" :::: lab); /* { dg-error "" } */ -+ asm inline inline goto ("" :::: lab); /* { dg-error "" } */ -+ asm goto goto inline ("" :::: lab); /* { dg-error "" } */ -+ asm goto inline goto ("" :::: lab); /* { dg-error "" } */ -+ asm inline goto goto ("" :::: lab); /* { dg-error "" } */ -+ -+lab: -+ ; -+} -diff --git a/gcc/testsuite/gcc.dg/asm-qual-1.c b/gcc/testsuite/gcc.dg/asm-qual-1.c -index cb37283..eff6b45 100644 ---- a/gcc/testsuite/gcc.dg/asm-qual-1.c -+++ b/gcc/testsuite/gcc.dg/asm-qual-1.c -@@ -8,9 +8,7 @@ f (void) - { - asm volatile (""); - -- asm const (""); /* { dg-error {expected '\(' before 'const'} } */ -- /* { dg-error {expected identifier} {} {target *-*-*} .-1 } */ -+ asm const (""); /* { dg-error {'const' is not an asm qualifier} } */ - -- asm restrict (""); /* { dg-error {expected '\(' before 'restrict'} } */ -- /* { dg-error {expected identifier} {} {target *-*-*} .-1 } */ -+ asm restrict (""); /* { dg-error {'restrict' is not an asm qualifier} } */ - } diff --git a/source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch b/source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch deleted file mode 100644 index e124f7c2b..000000000 --- a/source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch +++ /dev/null @@ -1,103 +0,0 @@ -From patchwork Thu Dec 27 14:59:12 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [7/8] c++, asm: Do not handle any asm-qualifiers in top-level asm -X-Patchwork-Submitter: Segher Boessenkool -X-Patchwork-Id: 13824 -Message-Id: <7d103b408f9dda95b9d9f5182281ae6bb3947716.1545922222.git.segher@kernel.crashing.org> -To: gcc-patches@gcc.gnu.org -Cc: Segher Boessenkool -Date: Thu, 27 Dec 2018 14:59:12 +0000 -From: Segher Boessenkool -List-Id: - -Previously, "volatile" was allowed. Changing this simplifies the code, -makes things more regular, and makes the C and C++ frontends handle -this the same way. - -2018-12-10 Segher Boessenkool - -cp/ - * parser.c (cp_parser_asm_definition): Do not allow any asm qualifiers - on top-level asm. - -testsuite/ - * g++.dg/asm-qual-3.C: New testcase. - * gcc.dg/asm-qual-3.c: New testcase. ---- - gcc/cp/parser.c | 7 ++----- - gcc/testsuite/g++.dg/asm-qual-3.C | 12 ++++++++++++ - gcc/testsuite/gcc.dg/asm-qual-3.c | 9 +++++++++ - 3 files changed, 23 insertions(+), 5 deletions(-) - create mode 100644 gcc/testsuite/g++.dg/asm-qual-3.C - create mode 100644 gcc/testsuite/gcc.dg/asm-qual-3.c - --- -1.8.3.1 - -diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c -index 36d82b8..afc7b96 100644 ---- a/gcc/cp/parser.c -+++ b/gcc/cp/parser.c -@@ -19125,7 +19125,8 @@ cp_parser_asm_definition (cp_parser* parser) - location_t volatile_loc = UNKNOWN_LOCATION; - location_t inline_loc = UNKNOWN_LOCATION; - location_t goto_loc = UNKNOWN_LOCATION; -- if (cp_parser_allow_gnu_extensions_p (parser)) -+ -+ if (cp_parser_allow_gnu_extensions_p (parser) && parser->in_function_body) - for (;;) - { - cp_token *token = cp_lexer_peek_token (parser->lexer); -@@ -19144,8 +19145,6 @@ cp_parser_asm_definition (cp_parser* parser) - continue; - - case RID_INLINE: -- if (!parser->in_function_body) -- break; - if (inline_loc) - { - error_at (loc, "duplicate asm qualifier %qT", token->u.value); -@@ -19157,8 +19156,6 @@ cp_parser_asm_definition (cp_parser* parser) - continue; - - case RID_GOTO: -- if (!parser->in_function_body) -- break; - if (goto_loc) - { - error_at (loc, "duplicate asm qualifier %qT", token->u.value); -diff --git a/gcc/testsuite/g++.dg/asm-qual-3.C b/gcc/testsuite/g++.dg/asm-qual-3.C -new file mode 100644 -index 0000000..95c9b57 ---- /dev/null -+++ b/gcc/testsuite/g++.dg/asm-qual-3.C -@@ -0,0 +1,12 @@ -+// Test that asm-qualifiers are not allowed on toplevel asm. -+// { dg-do compile } -+// { dg-options "-std=gnu++98" } -+ -+asm const (""); // { dg-error {expected '\(' before 'const'} } -+asm volatile (""); // { dg-error {expected '\(' before 'volatile'} } -+asm restrict (""); // { dg-error {expected '\(' before 'restrict'} } -+asm inline (""); // { dg-error {expected '\(' before 'inline'} } -+asm goto (""); // { dg-error {expected '\(' before 'goto'} } -+ -+// There are many other things wrong with this code, so: -+// { dg-excess-errors "" } -diff --git a/gcc/testsuite/gcc.dg/asm-qual-3.c b/gcc/testsuite/gcc.dg/asm-qual-3.c -new file mode 100644 -index 0000000..f85d8bf ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/asm-qual-3.c -@@ -0,0 +1,9 @@ -+/* Test that asm-qualifiers are not allowed on toplevel asm. */ -+/* { dg-do compile } */ -+/* { dg-options "-std=gnu99" } */ -+ -+asm const (""); /* { dg-error {expected '\(' before 'const'} } */ -+asm volatile (""); /* { dg-error {expected '\(' before 'volatile'} } */ -+asm restrict (""); /* { dg-error {expected '\(' before 'restrict'} } */ -+asm inline (""); /* { dg-error {expected '\(' before 'inline'} } */ -+asm goto (""); /* { dg-error {expected '\(' before 'goto'} } */ diff --git a/source/d/gcc/patches/revert-asm-inline/8-8-c-Don-t-error-for-const-or-restrict-as-asm-qualifier.patch b/source/d/gcc/patches/revert-asm-inline/8-8-c-Don-t-error-for-const-or-restrict-as-asm-qualifier.patch deleted file mode 100644 index 2b75e3f1c..000000000 --- a/source/d/gcc/patches/revert-asm-inline/8-8-c-Don-t-error-for-const-or-restrict-as-asm-qualifier.patch +++ /dev/null @@ -1,58 +0,0 @@ -From patchwork Thu Dec 27 14:59:13 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [8/8] c: Don't error for const or restrict as asm-qualifier -X-Patchwork-Submitter: Segher Boessenkool -X-Patchwork-Id: 13825 -Message-Id: -To: gcc-patches@gcc.gnu.org -Cc: Segher Boessenkool -Date: Thu, 27 Dec 2018 14:59:13 +0000 -From: Segher Boessenkool -List-Id: - -2018-12-27 Segher Boessenkool - -c/ - * c-parser.c (c_parser_asm_statement): Output a warning instead of an - error for const and restrict. - -testsuite/ - * gcc.dg/asm-qual-1.c: Adjust. - ---- - gcc/c/c-parser.c | 2 +- - gcc/testsuite/gcc.dg/asm-qual-1.c | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - --- -1.8.3.1 - -diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c -index 4baad62..a960169 100644 ---- a/gcc/c/c-parser.c -+++ b/gcc/c/c-parser.c -@@ -6345,7 +6345,7 @@ c_parser_asm_statement (c_parser *parser) - - case RID_CONST: - case RID_RESTRICT: -- error_at (loc, "%qE is not an asm qualifier", token->value); -+ warning_at (loc, 0, "%qE is not an asm qualifier", token->value); - c_parser_consume_token (parser); - continue; - -diff --git a/gcc/testsuite/gcc.dg/asm-qual-1.c b/gcc/testsuite/gcc.dg/asm-qual-1.c -index eff6b45..4982a6b 100644 ---- a/gcc/testsuite/gcc.dg/asm-qual-1.c -+++ b/gcc/testsuite/gcc.dg/asm-qual-1.c -@@ -8,7 +8,7 @@ f (void) - { - asm volatile (""); - -- asm const (""); /* { dg-error {'const' is not an asm qualifier} } */ -+ asm const (""); /* { dg-warning {'const' is not an asm qualifier} } */ - -- asm restrict (""); /* { dg-error {'restrict' is not an asm qualifier} } */ -+ asm restrict (""); /* { dg-warning {'restrict' is not an asm qualifier} } */ - } diff --git a/source/d/libtool/libtool.SlackBuild b/source/d/libtool/libtool.SlackBuild index 5a011fdb9..419a0d59e 100755 --- a/source/d/libtool/libtool.SlackBuild +++ b/source/d/libtool/libtool.SlackBuild @@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=libtool VERSION=${VERSION:-$(echo libtool-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-10} +BUILD=${BUILD:-11} NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} diff --git a/source/d/llvm/llvm.SlackBuild b/source/d/llvm/llvm.SlackBuild index 22b55993c..c103a2cf6 100755 --- a/source/d/llvm/llvm.SlackBuild +++ b/source/d/llvm/llvm.SlackBuild @@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=llvm VERSION=${VERSION:-$(echo llvm-*.tar.xz | rev | cut -f 4- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} @@ -148,6 +148,7 @@ cd build -DLLVM_ENABLE_FFI=ON \ -DLLVM_ENABLE_ASSERTIONS=OFF \ -DLLVM_USE_OPROFILE=ON \ + -DLLVM_INSTALL_UTILS=ON \ -DLLVM_BINUTILS_INCDIR=/usr/include \ -DCLANG_RESOURCE_DIR="../lib${LIBDIRSUFFIX}/clang/${VERSION}" \ .. || exit 1 diff --git a/source/d/swig/swig.SlackBuild b/source/d/swig/swig.SlackBuild index e3b4982c1..2afe26d31 100755 --- a/source/d/swig/swig.SlackBuild +++ b/source/d/swig/swig.SlackBuild @@ -1,7 +1,7 @@ #!/bin/bash # Copyright 2009 Robby Workman, Northport, Alabama, USA -# Copyright 2009, 2010, 2011, 2018 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2009, 2010, 2011, 2018, 2019 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -24,8 +24,8 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=swig -VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-2} +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -64,7 +64,7 @@ rm -rf $PKG mkdir -p $TMP $PKG cd $TMP rm -rf swig-$VERSION -tar xvf $CWD/swig-$VERSION.tar.?z* || exit 1 +tar xvf $CWD/swig-$VERSION.tar.?z || exit 1 cd swig-$VERSION chown -R root:root . find . \ @@ -110,7 +110,7 @@ fi mkdir -p $PKG/usr/doc/swig-$VERSION cp -a \ - ANNOUNCE CHANGES* COPYING* FUTURE INSTALL LICENSE NEW README TODO \ + ANNOUNCE CHANGES* COPY* FUTURE INSTALL LICENSE* NEW* README* RELEASENOTES TODO \ Examples Doc/Manual Doc/Devel \ $PKG/usr/doc/swig-$VERSION # Fix permissions and wipe the pdf bloat diff --git a/source/l/qt/patches/qt-4.8-poll.patch b/source/l/qt/patches/qt-4.8-poll.patch new file mode 100644 index 000000000..aed363c66 --- /dev/null +++ b/source/l/qt/patches/qt-4.8-poll.patch @@ -0,0 +1,812 @@ +diff -up qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp +--- qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp.poll 2014-03-30 15:36:48.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp 2014-03-31 18:04:05.958260978 -0500 +@@ -158,13 +158,6 @@ static void qt_sa_sigchld_sigaction(int + } + } + +-static inline void add_fd(int &nfds, int fd, fd_set *fdset) +-{ +- FD_SET(fd, fdset); +- if ((fd) > nfds) +- nfds = fd; +-} +- + struct QProcessInfo { + QProcess *process; + int deathPipe; +@@ -256,9 +249,9 @@ QProcessManager::~QProcessManager() + void QProcessManager::run() + { + forever { +- fd_set readset; +- FD_ZERO(&readset); +- FD_SET(qt_qprocess_deadChild_pipe[0], &readset); ++ pollfd fd; ++ fd.fd = qt_qprocess_deadChild_pipe[0]; ++ fd.events = POLLIN; + + #if defined (QPROCESS_DEBUG) + qDebug() << "QProcessManager::run() waiting for children to die"; +@@ -267,8 +260,8 @@ void QProcessManager::run() + // block forever, or until activity is detected on the dead child + // pipe. the only other peers are the SIGCHLD signal handler, and the + // QProcessManager destructor. +- int nselect = select(qt_qprocess_deadChild_pipe[0] + 1, &readset, 0, 0, 0); +- if (nselect < 0) { ++ int ret = qt_safe_poll(&fd, 1, -1, /* retry_eintr */ false); ++ if (ret < 0) { + if (errno == EINTR) + continue; + break; +@@ -1027,17 +1020,6 @@ void QProcessPrivate::killProcess() + ::kill(pid_t(pid), SIGKILL); + } + +-static int select_msecs(int nfds, fd_set *fdread, fd_set *fdwrite, int timeout) +-{ +- if (timeout < 0) +- return qt_safe_select(nfds, fdread, fdwrite, 0, 0); +- +- struct timeval tv; +- tv.tv_sec = timeout / 1000; +- tv.tv_usec = (timeout % 1000) * 1000; +- return qt_safe_select(nfds, fdread, fdwrite, 0, &tv); +-} +- + /* + Returns the difference between msecs and elapsed. If msecs is -1, + however, -1 is returned. +@@ -1060,10 +1042,10 @@ bool QProcessPrivate::waitForStarted(int + childStartedPipe[0]); + #endif + +- fd_set fds; +- FD_ZERO(&fds); +- FD_SET(childStartedPipe[0], &fds); +- if (select_msecs(childStartedPipe[0] + 1, &fds, 0, msecs) == 0) { ++ pollfd fd; ++ fd.fd = childStartedPipe[0]; ++ fd.events = POLLIN; ++ if (qt_safe_poll(&fd, 1, msecs) == 0) { + processError = QProcess::Timedout; + q->setErrorString(QProcess::tr("Process operation timed out")); + #if defined (QPROCESS_DEBUG) +@@ -1079,6 +1061,47 @@ bool QProcessPrivate::waitForStarted(int + return startedEmitted; + } + ++class QProcessFDSet { ++ pollfd fds[5]; ++ ++ static size_t size() ++ { ++ return sizeof(fds)/sizeof(fds[0]); ++ } ++ ++public: ++ QProcessFDSet(QProcessPrivate &proc) ++ { ++ for (size_t i = 0; i < size(); ++i) { ++ fds[i].fd = -1; ++ fds[i].events = POLLIN; ++ } ++ death().fd = proc.deathPipe[0]; ++ ++ if (proc.processState == QProcess::Starting) ++ started().fd = proc.childStartedPipe[0]; ++ ++ stdout().fd = proc.stdoutChannel.pipe[0]; ++ stderr().fd = proc.stderrChannel.pipe[0]; ++ ++ if (!proc.writeBuffer.isEmpty()) { ++ stdin().fd = proc.stdinChannel.pipe[1]; ++ stdin().events = POLLOUT; ++ } ++ } ++ ++ int poll(int timeout) ++ { ++ return qt_safe_poll(fds, size(), timeout); ++ } ++ ++ pollfd &death() { return fds[0]; } ++ pollfd &started() { return fds[1]; } ++ pollfd &stdout() { return fds[2]; } ++ pollfd &stderr() { return fds[3]; } ++ pollfd &stdin() { return fds[4]; } ++}; ++ + bool QProcessPrivate::waitForReadyRead(int msecs) + { + Q_Q(QProcess); +@@ -1090,28 +1113,9 @@ bool QProcessPrivate::waitForReadyRead(i + stopWatch.start(); + + forever { +- fd_set fdread; +- fd_set fdwrite; +- +- FD_ZERO(&fdread); +- FD_ZERO(&fdwrite); +- +- int nfds = deathPipe[0]; +- FD_SET(deathPipe[0], &fdread); +- +- if (processState == QProcess::Starting) +- add_fd(nfds, childStartedPipe[0], &fdread); +- +- if (stdoutChannel.pipe[0] != -1) +- add_fd(nfds, stdoutChannel.pipe[0], &fdread); +- if (stderrChannel.pipe[0] != -1) +- add_fd(nfds, stderrChannel.pipe[0], &fdread); +- +- if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1) +- add_fd(nfds, stdinChannel.pipe[1], &fdwrite); +- ++ QProcessFDSet fdset(*this); + int timeout = qt_timeout_value(msecs, stopWatch.elapsed()); +- int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout); ++ int ret = fdset.poll(timeout); + if (ret < 0) { + break; + } +@@ -1121,18 +1125,18 @@ bool QProcessPrivate::waitForReadyRead(i + return false; + } + +- if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) { ++ if (qt_readable(fdset.started())) { + if (!_q_startupNotification()) + return false; + } + + bool readyReadEmitted = false; +- if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread)) { ++ if (qt_readable(fdset.stdout())) { + bool canRead = _q_canReadStandardOutput(); + if (processChannel == QProcess::StandardOutput && canRead) + readyReadEmitted = true; + } +- if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread)) { ++ if (qt_readable(fdset.stderr())) { + bool canRead = _q_canReadStandardError(); + if (processChannel == QProcess::StandardError && canRead) + readyReadEmitted = true; +@@ -1140,13 +1144,13 @@ bool QProcessPrivate::waitForReadyRead(i + if (readyReadEmitted) + return true; + +- if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite)) ++ if (qt_writable(fdset.stdin())) + _q_canWrite(); + +- if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) { ++ if (qt_readable(fdset.death())) { + if (_q_processDied()) + return false; +- } ++ } + } + return false; + } +@@ -1162,29 +1166,9 @@ bool QProcessPrivate::waitForBytesWritte + stopWatch.start(); + + while (!writeBuffer.isEmpty()) { +- fd_set fdread; +- fd_set fdwrite; +- +- FD_ZERO(&fdread); +- FD_ZERO(&fdwrite); +- +- int nfds = deathPipe[0]; +- FD_SET(deathPipe[0], &fdread); +- +- if (processState == QProcess::Starting) +- add_fd(nfds, childStartedPipe[0], &fdread); +- +- if (stdoutChannel.pipe[0] != -1) +- add_fd(nfds, stdoutChannel.pipe[0], &fdread); +- if (stderrChannel.pipe[0] != -1) +- add_fd(nfds, stderrChannel.pipe[0], &fdread); +- +- +- if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1) +- add_fd(nfds, stdinChannel.pipe[1], &fdwrite); +- ++ QProcessFDSet fdset(*this); + int timeout = qt_timeout_value(msecs, stopWatch.elapsed()); +- int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout); ++ int ret = fdset.poll(timeout); + if (ret < 0) { + break; + } +@@ -1195,24 +1179,24 @@ bool QProcessPrivate::waitForBytesWritte + return false; + } + +- if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) { ++ if (qt_readable(fdset.started())) { + if (!_q_startupNotification()) + return false; + } + +- if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite)) ++ if (qt_writable(fdset.stdin())) + return _q_canWrite(); + +- if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread)) ++ if (qt_readable(fdset.stdout())) + _q_canReadStandardOutput(); + +- if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread)) ++ if (qt_readable(fdset.stderr())) + _q_canReadStandardError(); + +- if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) { +- if (_q_processDied()) +- return false; +- } ++ if (qt_readable(fdset.death())) { ++ if (_q_processDied()) ++ return false; ++ } + } + + return false; +@@ -1229,29 +1213,9 @@ bool QProcessPrivate::waitForFinished(in + stopWatch.start(); + + forever { +- fd_set fdread; +- fd_set fdwrite; +- int nfds = -1; +- +- FD_ZERO(&fdread); +- FD_ZERO(&fdwrite); +- +- if (processState == QProcess::Starting) +- add_fd(nfds, childStartedPipe[0], &fdread); +- +- if (stdoutChannel.pipe[0] != -1) +- add_fd(nfds, stdoutChannel.pipe[0], &fdread); +- if (stderrChannel.pipe[0] != -1) +- add_fd(nfds, stderrChannel.pipe[0], &fdread); +- +- if (processState == QProcess::Running) +- add_fd(nfds, deathPipe[0], &fdread); +- +- if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1) +- add_fd(nfds, stdinChannel.pipe[1], &fdwrite); +- ++ QProcessFDSet fdset(*this); + int timeout = qt_timeout_value(msecs, stopWatch.elapsed()); +- int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout); ++ int ret = fdset.poll(timeout); + if (ret < 0) { + break; + } +@@ -1261,20 +1225,20 @@ bool QProcessPrivate::waitForFinished(in + return false; + } + +- if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) { ++ if (qt_readable(fdset.started())) { + if (!_q_startupNotification()) + return false; + } +- if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite)) ++ if (qt_writable(fdset.stdin())) + _q_canWrite(); + +- if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread)) ++ if (qt_readable(fdset.stdout())) + _q_canReadStandardOutput(); + +- if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread)) ++ if (qt_readable(fdset.stderr())) + _q_canReadStandardError(); + +- if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) { ++ if (qt_readable(fdset.death())) { + if (_q_processDied()) + return true; + } +@@ -1284,10 +1248,10 @@ bool QProcessPrivate::waitForFinished(in + + bool QProcessPrivate::waitForWrite(int msecs) + { +- fd_set fdwrite; +- FD_ZERO(&fdwrite); +- FD_SET(stdinChannel.pipe[1], &fdwrite); +- return select_msecs(stdinChannel.pipe[1] + 1, 0, &fdwrite, msecs < 0 ? 0 : msecs) == 1; ++ pollfd fd; ++ fd.fd = stdinChannel.pipe[1]; ++ fd.events = POLLIN; ++ return qt_safe_poll(&fd, 1, msecs); + } + + void QProcessPrivate::findExitCode() +diff -up qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp +--- qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp.poll 2014-03-30 15:36:48.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp 2014-03-31 18:01:59.369715403 -0500 +@@ -99,4 +99,165 @@ int qt_safe_select(int nfds, fd_set *fdr + } + } + ++#ifndef Q_OS_VXWORKS ++ ++int qt_safe_poll(struct pollfd *fds, int nfds, int timeout_ms, bool retry_eintr) ++{ ++ if (nfds == 0) ++ return 0; ++ if (nfds < 0) { ++ errno = EINVAL; ++ return -1; ++ } ++ ++ // Retry on ret == 0 if the deadline has not yet passed because ++ // Linux can return early from the syscall, without setting EINTR. ++ if (timeout_ms < 0) { ++ forever { ++ int ret = ::poll(fds, nfds, -1); ++ if (ret > 0) ++ return ret; ++ if (retry_eintr) { ++ if (ret == 0 || ret == -1 && errno == EINTR) { ++ continue; ++ } else { ++ return -1; ++ } ++ } ++ if (ret == 0) { ++ errno = EINTR; ++ return -1; ++ } ++ return ret; ++ } ++ } ++ ++ timeval previous = qt_gettime(); ++ timeval deadline = previous; ++ deadline.tv_sec += timeout_ms / 1000; ++ deadline.tv_usec += (timeout_ms % 1000) * 1000; ++ if (deadline.tv_usec >= 1000000) { ++ ++deadline.tv_sec; ++ deadline.tv_usec -= 1000000; ++ } ++ int remaining = timeout_ms; ++ ++ forever { ++ int ret = ::poll(fds, nfds, remaining); ++ if (ret > 0) ++ return ret; ++ timeval now = qt_gettime(); ++ if ((now.tv_sec > deadline.tv_sec // past deadline ++ || (now.tv_sec == deadline.tv_sec ++ && now.tv_usec >= deadline.tv_usec)) ++ || (now.tv_sec < previous.tv_sec // time warp ++ || (now.tv_sec == previous.tv_sec ++ && now.tv_usec < previous.tv_usec)) ++ || (ret < 0 && (errno != EINTR || !retry_eintr))) // other error ++ return ret; ++ if (ret == 0 && !retry_eintr) { ++ errno = EINTR; ++ return -1; ++ } ++ remaining = (deadline.tv_sec - now.tv_sec) * 1000 ++ + (deadline.tv_usec - now.tv_usec) / 1000; ++ previous = now; ++ } ++} ++ ++#else ++ ++// Poll emulation for VxWorks. ++ ++static int mark_bad_descriptors(pollfd *fds, int nfds) ++{ ++ fd_set r; ++ FD_ZERO(&r); ++ struct timeval tv; ++ tv.tv_sec = 0; ++ tv.tv_usec = 0; ++ int ret = 0; ++ ++ // Check each descriptor invidually for badness. ++ for (int i = 0; i < nfds; ++i) { ++ pollfd &fd(fds[i]); ++ if (fd.fd >= 0) { ++ FD_SET(fd.fd, &r); ++ int ret = qt_safe_select(fd.fd + 1, &r, NULL, NULL, &tv); ++ FD_CLR(fd.fd, &r); ++ if (ret < 0 && errno == EBADF) { ++ fd.revents = POLLNVAL; ++ ++ret; ++ } ++ } ++ } ++ Q_ASSERT(ret > 0); ++ return ret; ++} ++ ++int qt_safe_poll(pollfd *fds, int nfds, int timeout, bool retry_eintr) ++{ ++ fd_set r, w; ++ FD_ZERO(&r); ++ FD_ZERO(&w); ++ int maxfd = -1; ++ ++ // Extract the watched descriptors. ++ for (int i = 0; i < nfds; ++i) { ++ pollfd &fd(fds[i]); ++ if (fd.fd >= 0 && fd.fd < FD_SETSIZE) { ++ if (fd.events & POLLIN) { ++ FD_SET(fd.fd, &r); ++ if (fd.fd > maxfd) ++ maxfd = fd.fd; ++ } ++ if (fd.events & POLLOUT) { ++ FD_SET(fd.fd, &w); ++ if (fd.fd > maxfd) ++ maxfd = fd.fd; ++ } ++ } ++ } ++ ++ // If timeout is negative, wait indefinitely for activity. ++ timeval tv; ++ timeval *ptv; ++ if (timeout >= 0) { ++ tv.tv_sec = timeout / 1000; ++ tv.tv_usec = (timeout % 1000) * 1000; ++ ptv = &tv; ++ } else ++ ptv = NULL; ++ ++ int ret; ++ if (retry_eintr) ++ ret = qt_safe_select(maxfd + 1, &r, &w, NULL, ptv); ++ else ++ ret = ::select(maxfd + 1, &r, &w, NULL, ptv); ++ if (ret < 0 && errno == EBADF) { ++ return mark_bad_descriptors(fds, nfds); ++ } ++ if (ret <= 0) ++ return ret; ++ ++ // Set the revents flags. ++ ret = 0; ++ for (int i = 0; i < nfds; ++i) { ++ pollfd &fd(fds[i]); ++ fd.revents = 0; ++ if (fd.fd >= 0 && fd.fd < FD_SETSIZE) { ++ if ((fd.events & POLLIN) && FD_ISSET(fd.fd, &r)) ++ fd.revents |= POLLIN; ++ if ((fd.events & POLLOUT) && FD_ISSET(fd.fd, &w)) ++ fd.revents |= POLLOUT; ++ if (fd.revents) ++ ++ret; ++ } ++ } ++ Q_ASSERT(ret > 0); ++ return ret; ++} ++ ++#endif ++ + QT_END_NAMESPACE +diff -up qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h.poll qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h +--- qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h.poll 2014-03-30 15:36:48.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h 2014-03-31 18:01:59.370715392 -0500 +@@ -345,9 +345,42 @@ static inline pid_t qt_safe_waitpid(pid_ + + timeval qt_gettime(); // in qelapsedtimer_mac.cpp or qtimestamp_unix.cpp + ++// Deprecated due to FD_SETSIZE limitation, use qt_safe_poll instead. + Q_CORE_EXPORT int qt_safe_select(int nfds, fd_set *fdread, fd_set *fdwrite, fd_set *fdexcept, + const struct timeval *tv); + ++#ifndef Q_OS_VXWORKS ++#include ++#else ++ ++// Poll emulation for VxWorks. ++ ++struct pollfd { ++ int fd; ++ short events; ++ short revents; ++}; ++ ++#define POLLIN 1 ++#define POLLOUT 2 ++#define POLLERR 4 ++#define POLLHUP 8 ++#define POLLNVAL 16 ++#endif ++ ++inline bool qt_readable(const pollfd &fd) ++{ ++ return fd.fd >= 0 && (fd.revents & (POLLIN | POLLHUP | POLLERR | POLLNVAL)) != 0; ++} ++ ++inline bool qt_writable(const pollfd &fd) ++{ ++ return fd.fd >= 0 && (fd.revents & (POLLOUT | POLLHUP | POLLERR | POLLNVAL)) != 0; ++} ++ ++Q_CORE_EXPORT int qt_safe_poll(pollfd *fds, int nfds, int timeout, ++ bool retry_eintr = true); ++ + // according to X/OPEN we have to define semun ourselves + // we use prefix as on some systems sem.h will have it + struct semid_ds; +diff -up qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp +--- qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp 2014-03-31 18:01:59.370715392 -0500 +@@ -208,16 +208,11 @@ void QLocalServerPrivate::_q_onNewConnec + + void QLocalServerPrivate::waitForNewConnection(int msec, bool *timedOut) + { +- fd_set readfds; +- FD_ZERO(&readfds); +- FD_SET(listenSocket, &readfds); ++ struct pollfd fd; ++ fd.fd = listenSocket; ++ fd.events = POLLIN; + +- timeval timeout; +- timeout.tv_sec = msec / 1000; +- timeout.tv_usec = (msec % 1000) * 1000; +- +- int result = -1; +- result = qt_safe_select(listenSocket + 1, &readfds, 0, 0, (msec == -1) ? 0 : &timeout); ++ int result = qt_safe_poll(&fd, 1, msec); + if (-1 == result) { + setError(QLatin1String("QLocalServer::waitForNewConnection")); + closeServer(); +diff -up qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp +--- qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp 2014-03-31 18:01:59.370715392 -0500 +@@ -56,10 +56,6 @@ + #include + #include + +-#ifdef Q_OS_VXWORKS +-# include +-#endif +- + #define QT_CONNECT_TIMEOUT 30000 + + QT_BEGIN_NAMESPACE +@@ -520,32 +516,17 @@ bool QLocalSocket::waitForConnected(int + if (state() != ConnectingState) + return (state() == ConnectedState); + +- fd_set fds; +- FD_ZERO(&fds); +- FD_SET(d->connectingSocket, &fds); +- +- timeval timeout; +- timeout.tv_sec = msec / 1000; +- timeout.tv_usec = (msec % 1000) * 1000; +- +- // timeout can not be 0 or else select will return an error. +- if (0 == msec) +- timeout.tv_usec = 1000; ++ pollfd fd; ++ fd.fd = d->connectingSocket; ++ fd.events = POLLIN | POLLOUT; + + int result = -1; + // on Linux timeout will be updated by select, but _not_ on other systems. + QElapsedTimer timer; ++ int remaining = msec; + timer.start(); +- while (state() == ConnectingState +- && (-1 == msec || timer.elapsed() < msec)) { +-#ifdef Q_OS_SYMBIAN +- // On Symbian, ready-to-write is signaled when non-blocking socket +- // connect is finised. Is ready-to-read really used on other +- // UNIX paltforms when using non-blocking AF_UNIX socket? +- result = ::select(d->connectingSocket + 1, 0, &fds, 0, &timeout); +-#else +- result = ::select(d->connectingSocket + 1, &fds, 0, 0, &timeout); +-#endif ++ while (state() == ConnectingState) { ++ result = qt_safe_poll(&fd, 1, remaining, /* retry_eintr */ false); + if (-1 == result && errno != EINTR) { + d->errorOccurred( QLocalSocket::UnknownSocketError, + QLatin1String("QLocalSocket::waitForConnected")); +@@ -553,6 +534,11 @@ bool QLocalSocket::waitForConnected(int + } + if (result > 0) + d->_q_connectToSocket(); ++ if (msec >= 0) { ++ remaining = timer.elapsed() - msec; ++ if (remaining < 0) ++ break; ++ } + } + + return (state() == ConnectedState); +diff -up qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp +--- qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp 2014-03-31 18:01:59.371715381 -0500 +@@ -1068,48 +1068,40 @@ qint64 QNativeSocketEnginePrivate::nativ + + int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool selectForRead) const + { +- fd_set fds; +- FD_ZERO(&fds); +- FD_SET(socketDescriptor, &fds); +- +- struct timeval tv; +- tv.tv_sec = timeout / 1000; +- tv.tv_usec = (timeout % 1000) * 1000; +- +- int retval; +- if (selectForRead) +- retval = qt_safe_select(socketDescriptor + 1, &fds, 0, 0, timeout < 0 ? 0 : &tv); +- else +- retval = qt_safe_select(socketDescriptor + 1, 0, &fds, 0, timeout < 0 ? 0 : &tv); +- +- return retval; ++ struct pollfd fd; ++ fd.fd = socketDescriptor; ++ if (selectForRead) { ++ fd.events = POLLIN; ++ } else { ++ fd.events = POLLOUT; ++ } ++ return qt_safe_poll(&fd, 1, timeout); + } + + int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool checkRead, bool checkWrite, + bool *selectForRead, bool *selectForWrite) const + { +- fd_set fdread; +- FD_ZERO(&fdread); ++ struct pollfd fd; ++ fd.fd = socketDescriptor; + if (checkRead) +- FD_SET(socketDescriptor, &fdread); +- +- fd_set fdwrite; +- FD_ZERO(&fdwrite); ++ fd.events = POLLIN; ++ else ++ fd.events = 0; + if (checkWrite) +- FD_SET(socketDescriptor, &fdwrite); +- +- struct timeval tv; +- tv.tv_sec = timeout / 1000; +- tv.tv_usec = (timeout % 1000) * 1000; +- +- int ret; +- ret = qt_safe_select(socketDescriptor + 1, &fdread, &fdwrite, 0, timeout < 0 ? 0 : &tv); +- ++ fd.events |= POLLOUT; ++ int ret = qt_safe_poll(&fd, 1, timeout); + if (ret <= 0) +- return ret; +- *selectForRead = FD_ISSET(socketDescriptor, &fdread); +- *selectForWrite = FD_ISSET(socketDescriptor, &fdwrite); +- ++ return ret; ++ bool r = (fd.revents & (POLLIN | POLLHUP | POLLERR)) != 0; ++ bool w = (fd.revents & (POLLOUT | POLLHUP | POLLERR)) != 0; ++ // Emulate the return value from select(2). ++ ret = 0; ++ if (r) ++ ++ret; ++ if (w) ++ ++ret; ++ *selectForRead = r; ++ *selectForWrite = w; + return ret; + } + +diff -up qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp +--- qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp 2014-03-31 18:01:59.371715381 -0500 +@@ -68,6 +68,7 @@ static inline int qt_socket_socket(int d + #endif + + #include "q3socketdevice.h" ++#include "private/qcore_unix_p.h" + + #ifndef QT_NO_NETWORK + +@@ -588,19 +589,10 @@ Q_LONG Q3SocketDevice::waitForMore( int + { + if ( !isValid() ) + return -1; +- if ( fd >= FD_SETSIZE ) +- return -1; +- +- fd_set fds; +- struct timeval tv; +- +- FD_ZERO( &fds ); +- FD_SET( fd, &fds ); +- +- tv.tv_sec = msecs / 1000; +- tv.tv_usec = (msecs % 1000) * 1000; + +- int rv = select( fd+1, &fds, 0, 0, msecs < 0 ? 0 : &tv ); ++ pollfd pfd; ++ pfd.fd = fd; ++ int rv = qt_safe_poll(&pfd, 1, msecs, /* retry_eintr */ false); + + if ( rv < 0 ) + return -1; +diff -up qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp +--- qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp 2014-03-31 18:01:59.372715370 -0500 +@@ -981,13 +981,10 @@ bool Q3Process::isRunning() const + // On heavy processing, the socket notifier for the sigchild might not + // have found time to fire yet. + if ( d->procManager && d->procManager->sigchldFd[1] < FD_SETSIZE ) { +- fd_set fds; +- struct timeval tv; +- FD_ZERO( &fds ); +- FD_SET( d->procManager->sigchldFd[1], &fds ); +- tv.tv_sec = 0; +- tv.tv_usec = 0; +- if ( ::select( d->procManager->sigchldFd[1]+1, &fds, 0, 0, &tv ) > 0 ) ++ pollfd fd; ++ fd.fd = d->procManager->sigchldFd[1]; ++ fd.events = POLLIN; ++ if ( qt_safe_poll(&fd, 1, 0, /* retry_eintr */ false) > 0 ) + d->procManager->sigchldHnd( d->procManager->sigchldFd[1] ); + } + +@@ -1124,29 +1121,21 @@ void Q3Process::socketRead( int fd ) + } + } + +- if ( fd < FD_SETSIZE ) { +- fd_set fds; +- struct timeval tv; +- FD_ZERO( &fds ); +- FD_SET( fd, &fds ); +- tv.tv_sec = 0; +- tv.tv_usec = 0; +- while ( ::select( fd+1, &fds, 0, 0, &tv ) > 0 ) { +- // prepare for the next round +- FD_ZERO( &fds ); +- FD_SET( fd, &fds ); +- // read data +- ba = new QByteArray( basize ); +- n = ::read( fd, ba->data(), basize ); +- if ( n > 0 ) { +- ba->resize( n ); +- buffer->append( ba ); +- ba = 0; +- } else { +- delete ba; +- ba = 0; +- break; +- } ++ pollfd pfd; ++ pfd.fd = fd; ++ pfd.events = POLLIN; ++ while (qt_safe_poll(&pfd, 1, 0)) { ++ // read data ++ ba = new QByteArray( basize ); ++ n = ::read( fd, ba->data(), basize ); ++ if ( n > 0 ) { ++ ba->resize( n ); ++ buffer->append( ba ); ++ ba = 0; ++ } else { ++ delete ba; ++ ba = 0; ++ break; + } + } + diff --git a/source/l/qt/patches/qt-aarch64.patch b/source/l/qt/patches/qt-aarch64.patch new file mode 100644 index 000000000..cbe815dea --- /dev/null +++ b/source/l/qt/patches/qt-aarch64.patch @@ -0,0 +1,514 @@ +diff -up qt-everywhere-opensource-src-4.8.7/include/QtCore/headers.pri.aarch64 qt-everywhere-opensource-src-4.8.7/include/QtCore/headers.pri +--- qt-everywhere-opensource-src-4.8.7/include/QtCore/headers.pri.aarch64 2015-05-08 21:48:32.714057739 -0500 ++++ qt-everywhere-opensource-src-4.8.7/include/QtCore/headers.pri 2015-05-08 21:53:21.088761971 -0500 +@@ -1,3 +1,3 @@ +-SYNCQT.HEADER_FILES = ../corelib/kernel/qabstracteventdispatcher.h ../corelib/kernel/qabstractitemmodel.h ../corelib/kernel/qbasictimer.h ../corelib/kernel/qcoreapplication.h ../corelib/kernel/qcoreevent.h ../corelib/kernel/qeventloop.h ../corelib/kernel/qfunctions_nacl.h ../corelib/kernel/qfunctions_vxworks.h ../corelib/kernel/qfunctions_wince.h ../corelib/kernel/qmath.h ../corelib/kernel/qmetaobject.h ../corelib/kernel/qmetatype.h ../corelib/kernel/qmimedata.h ../corelib/kernel/qobject.h ../corelib/kernel/qobjectcleanuphandler.h ../corelib/kernel/qobjectdefs.h ../corelib/kernel/qpointer.h ../corelib/kernel/qsharedmemory.h ../corelib/kernel/qsignalmapper.h ../corelib/kernel/qsocketnotifier.h ../corelib/kernel/qsystemsemaphore.h ../corelib/kernel/qtimer.h ../corelib/kernel/qtranslator.h ../corelib/kernel/qvariant.h ../corelib/animation/qabstractanimation.h ../corelib/animation/qanimationgroup.h ../corelib/animation/qparallelanimationgroup.h ../corelib/animation/qpauseanimation.h ../corelib/animation/qpropertyanimation.h ../corelib/animation/qsequentialanimationgroup.h ../corelib/animation/qvariantanimation.h ../corelib/arch/qatomic_alpha.h ../corelib/arch/qatomic_arch.h ../corelib/arch/qatomic_arm.h ../corelib/arch/qatomic_armv5.h ../corelib/arch/qatomic_armv6.h ../corelib/arch/qatomic_armv7.h ../corelib/arch/qatomic_avr32.h ../corelib/arch/qatomic_bfin.h ../corelib/arch/qatomic_bootstrap.h ../corelib/arch/qatomic_generic.h ../corelib/arch/qatomic_i386.h ../corelib/arch/qatomic_ia64.h ../corelib/arch/qatomic_integrity.h ../corelib/arch/qatomic_m68k.h ../corelib/arch/qatomic_macosx.h ../corelib/arch/qatomic_mips.h ../corelib/arch/qatomic_parisc.h ../corelib/arch/qatomic_powerpc.h ../corelib/arch/qatomic_s390.h ../corelib/arch/qatomic_sh.h ../corelib/arch/qatomic_sh4a.h ../corelib/arch/qatomic_sparc.h ../corelib/arch/qatomic_symbian.h ../corelib/arch/qatomic_vxworks.h ../corelib/arch/qatomic_windows.h ../corelib/arch/qatomic_windowsce.h ../corelib/arch/qatomic_x86_64.h ../corelib/tools/qalgorithms.h ../corelib/tools/qbitarray.h ../corelib/tools/qbytearray.h ../corelib/tools/qbytearraymatcher.h ../corelib/tools/qcache.h ../corelib/tools/qchar.h ../corelib/tools/qcontainerfwd.h ../corelib/tools/qcontiguouscache.h ../corelib/tools/qcryptographichash.h ../corelib/tools/qdatetime.h ../corelib/tools/qeasingcurve.h ../corelib/tools/qelapsedtimer.h ../corelib/tools/qhash.h ../corelib/tools/qiterator.h ../corelib/tools/qline.h ../corelib/tools/qlinkedlist.h ../corelib/tools/qlist.h ../corelib/tools/qlocale.h ../corelib/tools/qlocale_blackberry.h ../corelib/tools/qmap.h ../corelib/tools/qmargins.h ../corelib/tools/qpair.h ../corelib/tools/qpoint.h ../corelib/tools/qqueue.h ../corelib/tools/qrect.h ../corelib/tools/qregexp.h ../corelib/tools/qscopedpointer.h ../corelib/tools/qscopedvaluerollback.h ../corelib/tools/qset.h ../corelib/tools/qshareddata.h ../corelib/tools/qsharedpointer.h ../corelib/tools/qsharedpointer_impl.h ../corelib/tools/qsize.h ../corelib/tools/qstack.h ../corelib/tools/qstring.h ../corelib/tools/qstringbuilder.h ../corelib/tools/qstringlist.h ../corelib/tools/qstringmatcher.h ../corelib/tools/qtextboundaryfinder.h ../corelib/tools/qtimeline.h ../corelib/tools/qvarlengtharray.h ../corelib/tools/qvector.h ../corelib/plugin/qfactoryinterface.h ../corelib/plugin/qlibrary.h ../corelib/plugin/qplugin.h ../corelib/plugin/qpluginloader.h ../corelib/plugin/quuid.h ../corelib/xml/qxmlstream.h ../corelib/thread/qatomic.h ../corelib/thread/qbasicatomic.h ../corelib/thread/qmutex.h ../corelib/thread/qreadwritelock.h ../corelib/thread/qsemaphore.h ../corelib/thread/qthread.h ../corelib/thread/qthreadstorage.h ../corelib/thread/qwaitcondition.h ../corelib/statemachine/qabstractstate.h ../corelib/statemachine/qabstracttransition.h ../corelib/statemachine/qeventtransition.h ../corelib/statemachine/qfinalstate.h ../corelib/statemachine/qhistorystate.h ../corelib/statemachine/qsignaltransition.h ../corelib/statemachine/qstate.h ../corelib/statemachine/qstatemachine.h ../corelib/concurrent/qfuture.h ../corelib/concurrent/qfutureinterface.h ../corelib/concurrent/qfuturesynchronizer.h ../corelib/concurrent/qfuturewatcher.h ../corelib/concurrent/qrunnable.h ../corelib/concurrent/qtconcurrentcompilertest.h ../corelib/concurrent/qtconcurrentexception.h ../corelib/concurrent/qtconcurrentfilter.h ../corelib/concurrent/qtconcurrentfilterkernel.h ../corelib/concurrent/qtconcurrentfunctionwrappers.h ../corelib/concurrent/qtconcurrentiteratekernel.h ../corelib/concurrent/qtconcurrentmap.h ../corelib/concurrent/qtconcurrentmapkernel.h ../corelib/concurrent/qtconcurrentmedian.h ../corelib/concurrent/qtconcurrentreducekernel.h ../corelib/concurrent/qtconcurrentresultstore.h ../corelib/concurrent/qtconcurrentrun.h ../corelib/concurrent/qtconcurrentrunbase.h ../corelib/concurrent/qtconcurrentstoredfunctioncall.h ../corelib/concurrent/qtconcurrentthreadengine.h ../corelib/concurrent/qthreadpool.h ../corelib/io/qabstractfileengine.h ../corelib/io/qbuffer.h ../corelib/io/qdatastream.h ../corelib/io/qdebug.h ../corelib/io/qdir.h ../corelib/io/qdiriterator.h ../corelib/io/qfile.h ../corelib/io/qfileinfo.h ../corelib/io/qfilesystemwatcher.h ../corelib/io/qfsfileengine.h ../corelib/io/qiodevice.h ../corelib/io/qprocess.h ../corelib/io/qresource.h ../corelib/io/qsettings.h ../corelib/io/qtemporaryfile.h ../corelib/io/qtextstream.h ../corelib/io/qurl.h ../corelib/global/qconfig-dist.h ../corelib/global/qconfig-large.h ../corelib/global/qconfig-medium.h ../corelib/global/qconfig-minimal.h ../corelib/global/qconfig-nacl.h ../corelib/global/qconfig-small.h ../corelib/global/qendian.h ../corelib/global/qfeatures.h ../corelib/global/qglobal.h ../corelib/global/qlibraryinfo.h ../corelib/global/qnamespace.h ../corelib/global/qnumeric.h ../corelib/global/qt_windows.h ../corelib/global/qconfig.h ../corelib/codecs/qtextcodec.h ../corelib/codecs/qtextcodecplugin.h ../../include/QtCore/QtCore ++SYNCQT.HEADER_FILES = ../corelib/kernel/qabstracteventdispatcher.h ../corelib/kernel/qabstractitemmodel.h ../corelib/kernel/qbasictimer.h ../corelib/kernel/qcoreapplication.h ../corelib/kernel/qcoreevent.h ../corelib/kernel/qeventloop.h ../corelib/kernel/qfunctions_nacl.h ../corelib/kernel/qfunctions_vxworks.h ../corelib/kernel/qfunctions_wince.h ../corelib/kernel/qmath.h ../corelib/kernel/qmetaobject.h ../corelib/kernel/qmetatype.h ../corelib/kernel/qmimedata.h ../corelib/kernel/qobject.h ../corelib/kernel/qobjectcleanuphandler.h ../corelib/kernel/qobjectdefs.h ../corelib/kernel/qpointer.h ../corelib/kernel/qsharedmemory.h ../corelib/kernel/qsignalmapper.h ../corelib/kernel/qsocketnotifier.h ../corelib/kernel/qsystemsemaphore.h ../corelib/kernel/qtimer.h ../corelib/kernel/qtranslator.h ../corelib/kernel/qvariant.h ../corelib/animation/qabstractanimation.h ../corelib/animation/qanimationgroup.h ../corelib/animation/qparallelanimationgroup.h ../corelib/animation/qpauseanimation.h ../corelib/animation/qpropertyanimation.h ../corelib/animation/qsequentialanimationgroup.h ../corelib/animation/qvariantanimation.h ../corelib/arch/qatomic_aarch64.h ../corelib/arch/qatomic_alpha.h ../corelib/arch/qatomic_arch.h ../corelib/arch/qatomic_arm.h ../corelib/arch/qatomic_armv5.h ../corelib/arch/qatomic_armv6.h ../corelib/arch/qatomic_armv7.h ../corelib/arch/qatomic_avr32.h ../corelib/arch/qatomic_bfin.h ../corelib/arch/qatomic_bootstrap.h ../corelib/arch/qatomic_generic.h ../corelib/arch/qatomic_i386.h ../corelib/arch/qatomic_ia64.h ../corelib/arch/qatomic_integrity.h ../corelib/arch/qatomic_m68k.h ../corelib/arch/qatomic_macosx.h ../corelib/arch/qatomic_mips.h ../corelib/arch/qatomic_parisc.h ../corelib/arch/qatomic_powerpc.h ../corelib/arch/qatomic_s390.h ../corelib/arch/qatomic_sh.h ../corelib/arch/qatomic_sh4a.h ../corelib/arch/qatomic_sparc.h ../corelib/arch/qatomic_symbian.h ../corelib/arch/qatomic_vxworks.h ../corelib/arch/qatomic_windows.h ../corelib/arch/qatomic_windowsce.h ../corelib/arch/qatomic_x86_64.h ../corelib/tools/qalgorithms.h ../corelib/tools/qbitarray.h ../corelib/tools/qbytearray.h ../corelib/tools/qbytearraymatcher.h ../corelib/tools/qcache.h ../corelib/tools/qchar.h ../corelib/tools/qcontainerfwd.h ../corelib/tools/qcontiguouscache.h ../corelib/tools/qcryptographichash.h ../corelib/tools/qdatetime.h ../corelib/tools/qeasingcurve.h ../corelib/tools/qelapsedtimer.h ../corelib/tools/qhash.h ../corelib/tools/qiterator.h ../corelib/tools/qline.h ../corelib/tools/qlinkedlist.h ../corelib/tools/qlist.h ../corelib/tools/qlocale.h ../corelib/tools/qlocale_blackberry.h ../corelib/tools/qmap.h ../corelib/tools/qmargins.h ../corelib/tools/qpair.h ../corelib/tools/qpoint.h ../corelib/tools/qqueue.h ../corelib/tools/qrect.h ../corelib/tools/qregexp.h ../corelib/tools/qscopedpointer.h ../corelib/tools/qscopedvaluerollback.h ../corelib/tools/qset.h ../corelib/tools/qshareddata.h ../corelib/tools/qsharedpointer.h ../corelib/tools/qsharedpointer_impl.h ../corelib/tools/qsize.h ../corelib/tools/qstack.h ../corelib/tools/qstring.h ../corelib/tools/qstringbuilder.h ../corelib/tools/qstringlist.h ../corelib/tools/qstringmatcher.h ../corelib/tools/qtextboundaryfinder.h ../corelib/tools/qtimeline.h ../corelib/tools/qvarlengtharray.h ../corelib/tools/qvector.h ../corelib/plugin/qfactoryinterface.h ../corelib/plugin/qlibrary.h ../corelib/plugin/qplugin.h ../corelib/plugin/qpluginloader.h ../corelib/plugin/quuid.h ../corelib/xml/qxmlstream.h ../corelib/thread/qatomic.h ../corelib/thread/qbasicatomic.h ../corelib/thread/qmutex.h ../corelib/thread/qreadwritelock.h ../corelib/thread/qsemaphore.h ../corelib/thread/qthread.h ../corelib/thread/qthreadstorage.h ../corelib/thread/qwaitcondition.h ../corelib/statemachine/qabstractstate.h ../corelib/statemachine/qabstracttransition.h ../corelib/statemachine/qeventtransition.h ../corelib/statemachine/qfinalstate.h ../corelib/statemachine/qhistorystate.h ../corelib/statemachine/qsignaltransition.h ../corelib/statemachine/qstate.h ../corelib/statemachine/qstatemachine.h ../corelib/concurrent/qfuture.h ../corelib/concurrent/qfutureinterface.h ../corelib/concurrent/qfuturesynchronizer.h ../corelib/concurrent/qfuturewatcher.h ../corelib/concurrent/qrunnable.h ../corelib/concurrent/qtconcurrentcompilertest.h ../corelib/concurrent/qtconcurrentexception.h ../corelib/concurrent/qtconcurrentfilter.h ../corelib/concurrent/qtconcurrentfilterkernel.h ../corelib/concurrent/qtconcurrentfunctionwrappers.h ../corelib/concurrent/qtconcurrentiteratekernel.h ../corelib/concurrent/qtconcurrentmap.h ../corelib/concurrent/qtconcurrentmapkernel.h ../corelib/concurrent/qtconcurrentmedian.h ../corelib/concurrent/qtconcurrentreducekernel.h ../corelib/concurrent/qtconcurrentresultstore.h ../corelib/concurrent/qtconcurrentrun.h ../corelib/concurrent/qtconcurrentrunbase.h ../corelib/concurrent/qtconcurrentstoredfunctioncall.h ../corelib/concurrent/qtconcurrentthreadengine.h ../corelib/concurrent/qthreadpool.h ../corelib/io/qabstractfileengine.h ../corelib/io/qbuffer.h ../corelib/io/qdatastream.h ../corelib/io/qdebug.h ../corelib/io/qdir.h ../corelib/io/qdiriterator.h ../corelib/io/qfile.h ../corelib/io/qfileinfo.h ../corelib/io/qfilesystemwatcher.h ../corelib/io/qfsfileengine.h ../corelib/io/qiodevice.h ../corelib/io/qprocess.h ../corelib/io/qresource.h ../corelib/io/qsettings.h ../corelib/io/qtemporaryfile.h ../corelib/io/qtextstream.h ../corelib/io/qurl.h ../corelib/global/qconfig-dist.h ../corelib/global/qconfig-large.h ../corelib/global/qconfig-medium.h ../corelib/global/qconfig-minimal.h ../corelib/global/qconfig-nacl.h ../corelib/global/qconfig-small.h ../corelib/global/qendian.h ../corelib/global/qfeatures.h ../corelib/global/qglobal.h ../corelib/global/qlibraryinfo.h ../corelib/global/qnamespace.h ../corelib/global/qnumeric.h ../corelib/global/qt_windows.h ../corelib/global/qconfig.h ../corelib/codecs/qtextcodec.h ../corelib/codecs/qtextcodecplugin.h ../../include/QtCore/QtCore + SYNCQT.HEADER_CLASSES = ../../include/QtCore/QAbstractEventDispatcher ../../include/QtCore/QModelIndex ../../include/QtCore/QPersistentModelIndex ../../include/QtCore/QModelIndexList ../../include/QtCore/QAbstractItemModel ../../include/QtCore/QAbstractTableModel ../../include/QtCore/QAbstractListModel ../../include/QtCore/QBasicTimer ../../include/QtCore/QCoreApplication ../../include/QtCore/QtCleanUpFunction ../../include/QtCore/QEvent ../../include/QtCore/QTimerEvent ../../include/QtCore/QChildEvent ../../include/QtCore/QCustomEvent ../../include/QtCore/QDynamicPropertyChangeEvent ../../include/QtCore/QEventLoop ../../include/QtCore/QMetaMethod ../../include/QtCore/QMetaEnum ../../include/QtCore/QMetaProperty ../../include/QtCore/QMetaClassInfo ../../include/QtCore/QMetaType ../../include/QtCore/QMetaTypeId ../../include/QtCore/QMetaTypeId2 ../../include/QtCore/QMimeData ../../include/QtCore/QObjectList ../../include/QtCore/QObjectData ../../include/QtCore/QObject ../../include/QtCore/QObjectUserData ../../include/QtCore/QObjectCleanupHandler ../../include/QtCore/QGenericArgument ../../include/QtCore/QGenericReturnArgument ../../include/QtCore/QArgument ../../include/QtCore/QReturnArgument ../../include/QtCore/QMetaObject ../../include/QtCore/QMetaObjectAccessor ../../include/QtCore/QMetaObjectExtraData ../../include/QtCore/QPointer ../../include/QtCore/QSharedMemory ../../include/QtCore/QSignalMapper ../../include/QtCore/QSocketNotifier ../../include/QtCore/QSystemSemaphore ../../include/QtCore/QTimer ../../include/QtCore/QTranslator ../../include/QtCore/QVariant ../../include/QtCore/QVariantList ../../include/QtCore/QVariantMap ../../include/QtCore/QVariantHash ../../include/QtCore/QVariantComparisonHelper ../../include/QtCore/QAbstractAnimation ../../include/QtCore/QAnimationDriver ../../include/QtCore/QAnimationGroup ../../include/QtCore/QParallelAnimationGroup ../../include/QtCore/QPauseAnimation ../../include/QtCore/QPropertyAnimation ../../include/QtCore/QSequentialAnimationGroup ../../include/QtCore/QVariantAnimation ../../include/QtCore/QtAlgorithms ../../include/QtCore/QBitArray ../../include/QtCore/QBitRef ../../include/QtCore/QByteArray ../../include/QtCore/QByteRef ../../include/QtCore/QByteArrayMatcher ../../include/QtCore/QCache ../../include/QtCore/QLatin1Char ../../include/QtCore/QChar ../../include/QtCore/QtContainerFwd ../../include/QtCore/QContiguousCacheData ../../include/QtCore/QContiguousCacheTypedData ../../include/QtCore/QContiguousCache ../../include/QtCore/QCryptographicHash ../../include/QtCore/QDate ../../include/QtCore/QTime ../../include/QtCore/QDateTime ../../include/QtCore/QEasingCurve ../../include/QtCore/QElapsedTimer ../../include/QtCore/QHashData ../../include/QtCore/QHashDummyValue ../../include/QtCore/QHashDummyNode ../../include/QtCore/QHashNode ../../include/QtCore/QHash ../../include/QtCore/QMultiHash ../../include/QtCore/QHashIterator ../../include/QtCore/QMutableHashIterator ../../include/QtCore/QLine ../../include/QtCore/QLineF ../../include/QtCore/QLinkedListData ../../include/QtCore/QLinkedListNode ../../include/QtCore/QLinkedList ../../include/QtCore/QLinkedListIterator ../../include/QtCore/QMutableLinkedListIterator ../../include/QtCore/QListData ../../include/QtCore/QList ../../include/QtCore/QListIterator ../../include/QtCore/QMutableListIterator ../../include/QtCore/QSystemLocale ../../include/QtCore/QLocale ../../include/QtCore/QBBSystemLocaleData ../../include/QtCore/QMapData ../../include/QtCore/QMapNode ../../include/QtCore/QMapPayloadNode ../../include/QtCore/QMap ../../include/QtCore/QMultiMap ../../include/QtCore/QMapIterator ../../include/QtCore/QMutableMapIterator ../../include/QtCore/QMargins ../../include/QtCore/QPair ../../include/QtCore/QPoint ../../include/QtCore/QPointF ../../include/QtCore/QQueue ../../include/QtCore/QRect ../../include/QtCore/QRectF ../../include/QtCore/QRegExp ../../include/QtCore/QScopedPointerDeleter ../../include/QtCore/QScopedPointerArrayDeleter ../../include/QtCore/QScopedPointerPodDeleter ../../include/QtCore/QScopedPointer ../../include/QtCore/QScopedArrayPointer ../../include/QtCore/QScopedValueRollback ../../include/QtCore/QSet ../../include/QtCore/QSetIterator ../../include/QtCore/QMutableSetIterator ../../include/QtCore/QSharedData ../../include/QtCore/QSharedDataPointer ../../include/QtCore/QExplicitlySharedDataPointer ../../include/QtCore/QSharedPointer ../../include/QtCore/QWeakPointer ../../include/QtCore/QSize ../../include/QtCore/QSizeF ../../include/QtCore/QStack ../../include/QtCore/QStdWString ../../include/QtCore/QString ../../include/QtCore/QLatin1String ../../include/QtCore/QCharRef ../../include/QtCore/QConstString ../../include/QtCore/QStringRef ../../include/QtCore/QLatin1Literal ../../include/QtCore/QAbstractConcatenable ../../include/QtCore/QConcatenable ../../include/QtCore/QStringBuilder ../../include/QtCore/QStringListIterator ../../include/QtCore/QMutableStringListIterator ../../include/QtCore/QStringList ../../include/QtCore/QStringMatcher ../../include/QtCore/QTextBoundaryFinder ../../include/QtCore/QTimeLine ../../include/QtCore/QVarLengthArray ../../include/QtCore/QVectorData ../../include/QtCore/QVectorTypedData ../../include/QtCore/QVector ../../include/QtCore/QVectorIterator ../../include/QtCore/QMutableVectorIterator ../../include/QtCore/QFactoryInterface ../../include/QtCore/QLibrary ../../include/QtCore/QtPlugin ../../include/QtCore/QtPluginInstanceFunction ../../include/QtCore/QPluginLoader ../../include/QtCore/QUuid ../../include/QtCore/QXmlStreamStringRef ../../include/QtCore/QXmlStreamAttribute ../../include/QtCore/QXmlStreamAttributes ../../include/QtCore/QXmlStreamNamespaceDeclaration ../../include/QtCore/QXmlStreamNamespaceDeclarations ../../include/QtCore/QXmlStreamNotationDeclaration ../../include/QtCore/QXmlStreamNotationDeclarations ../../include/QtCore/QXmlStreamEntityDeclaration ../../include/QtCore/QXmlStreamEntityDeclarations ../../include/QtCore/QXmlStreamEntityResolver ../../include/QtCore/QXmlStreamReader ../../include/QtCore/QXmlStreamWriter ../../include/QtCore/QAtomicInt ../../include/QtCore/QAtomicPointer ../../include/QtCore/QBasicAtomicInt ../../include/QtCore/QBasicAtomicPointer ../../include/QtCore/QMutex ../../include/QtCore/QMutexLocker ../../include/QtCore/QMutexData ../../include/QtCore/QReadWriteLock ../../include/QtCore/QReadLocker ../../include/QtCore/QWriteLocker ../../include/QtCore/QSemaphore ../../include/QtCore/QThread ../../include/QtCore/QThreadStorageData ../../include/QtCore/QThreadStorage ../../include/QtCore/QWaitCondition ../../include/QtCore/QAbstractState ../../include/QtCore/QAbstractTransition ../../include/QtCore/QEventTransition ../../include/QtCore/QFinalState ../../include/QtCore/QHistoryState ../../include/QtCore/QSignalTransition ../../include/QtCore/QState ../../include/QtCore/QStateMachine ../../include/QtCore/QFuture ../../include/QtCore/QFutureIterator ../../include/QtCore/QMutableFutureIterator ../../include/QtCore/QFutureInterfaceBase ../../include/QtCore/QFutureInterface ../../include/QtCore/QFutureSynchronizer ../../include/QtCore/QFutureWatcherBase ../../include/QtCore/QFutureWatcher ../../include/QtCore/QRunnable ../../include/QtCore/QtConcurrentFilter ../../include/QtCore/QtConcurrentMap ../../include/QtCore/QtConcurrentRun ../../include/QtCore/QThreadPool ../../include/QtCore/QAbstractFileEngine ../../include/QtCore/QAbstractFileEngineHandler ../../include/QtCore/QAbstractFileEngineIterator ../../include/QtCore/QBuffer ../../include/QtCore/QDataStream ../../include/QtCore/QtDebug ../../include/QtCore/QDebug ../../include/QtCore/QNoDebug ../../include/QtCore/QDir ../../include/QtCore/QDirIterator ../../include/QtCore/QFile ../../include/QtCore/QFileInfo ../../include/QtCore/QFileInfoList ../../include/QtCore/QFileInfoListIterator ../../include/QtCore/QFileSystemWatcher ../../include/QtCore/QFSFileEngine ../../include/QtCore/QIODevice ../../include/QtCore/Q_PID ../../include/QtCore/QProcessEnvironment ../../include/QtCore/QProcess ../../include/QtCore/QResource ../../include/QtCore/QSettings ../../include/QtCore/QTemporaryFile ../../include/QtCore/QTextStream ../../include/QtCore/QTextStreamFunction ../../include/QtCore/QTextStreamManipulator ../../include/QtCore/QTS ../../include/QtCore/QTextIStream ../../include/QtCore/QTextOStream ../../include/QtCore/QUrl ../../include/QtCore/QtEndian ../../include/QtCore/QtGlobal ../../include/QtCore/QIntegerForSize ../../include/QtCore/QNoImplicitBoolCast ../../include/QtCore/Q_INT8 ../../include/QtCore/Q_UINT8 ../../include/QtCore/Q_INT16 ../../include/QtCore/Q_UINT16 ../../include/QtCore/Q_INT32 ../../include/QtCore/Q_UINT32 ../../include/QtCore/Q_INT64 ../../include/QtCore/Q_UINT64 ../../include/QtCore/Q_LLONG ../../include/QtCore/Q_ULLONG ../../include/QtCore/Q_LONG ../../include/QtCore/Q_ULONG ../../include/QtCore/QSysInfo ../../include/QtCore/QtMsgHandler ../../include/QtCore/QGlobalStatic ../../include/QtCore/QGlobalStaticDeleter ../../include/QtCore/QBool ../../include/QtCore/QTypeInfo ../../include/QtCore/QFlag ../../include/QtCore/QIncompatibleFlag ../../include/QtCore/QFlags ../../include/QtCore/QForeachContainer ../../include/QtCore/QForeachContainerBase ../../include/QtCore/QLibraryInfo ../../include/QtCore/Qt ../../include/QtCore/QInternal ../../include/QtCore/QCOORD ../../include/QtCore/QtConfig ../../include/QtCore/QTextCodec ../../include/QtCore/QTextEncoder ../../include/QtCore/QTextDecoder ../../include/QtCore/QTextCodecFactoryInterface ../../include/QtCore/QTextCodecPlugin + SYNCQT.PRIVATE_HEADER_FILES = ../corelib/kernel/qabstracteventdispatcher_p.h ../corelib/kernel/qabstractitemmodel_p.h ../corelib/kernel/qcore_mac_p.h ../corelib/kernel/qcore_symbian_p.h ../corelib/kernel/qcore_unix_p.h ../corelib/kernel/qcoreapplication_p.h ../corelib/kernel/qcorecmdlineargs_p.h ../corelib/kernel/qcoreglobaldata_p.h ../corelib/kernel/qcrashhandler_p.h ../corelib/kernel/qeventdispatcher_blackberry_p.h ../corelib/kernel/qeventdispatcher_glib_p.h ../corelib/kernel/qeventdispatcher_symbian_p.h ../corelib/kernel/qeventdispatcher_unix_p.h ../corelib/kernel/qeventdispatcher_win_p.h ../corelib/kernel/qfunctions_p.h ../corelib/kernel/qmetaobject_p.h ../corelib/kernel/qobject_p.h ../corelib/kernel/qsharedmemory_p.h ../corelib/kernel/qsystemerror_p.h ../corelib/kernel/qsystemsemaphore_p.h ../corelib/kernel/qtranslator_p.h ../corelib/kernel/qvariant_p.h ../corelib/kernel/qwineventnotifier_p.h ../corelib/animation/qabstractanimation_p.h ../corelib/animation/qanimationgroup_p.h ../corelib/animation/qparallelanimationgroup_p.h ../corelib/animation/qpropertyanimation_p.h ../corelib/animation/qsequentialanimationgroup_p.h ../corelib/animation/qvariantanimation_p.h ../corelib/tools/qbytedata_p.h ../corelib/tools/qdatetime_p.h ../corelib/tools/qharfbuzz_p.h ../corelib/tools/qlocale_data_p.h ../corelib/tools/qlocale_p.h ../corelib/tools/qlocale_tools_p.h ../corelib/tools/qpodlist_p.h ../corelib/tools/qringbuffer_p.h ../corelib/tools/qscopedpointer_p.h ../corelib/tools/qsimd_p.h ../corelib/tools/qtools_p.h ../corelib/tools/qunicodetables_p.h ../corelib/plugin/qelfparser_p.h ../corelib/plugin/qfactoryloader_p.h ../corelib/plugin/qlibrary_p.h ../corelib/plugin/qsystemlibrary_p.h ../corelib/xml/qxmlstream_p.h ../corelib/xml/qxmlutils_p.h ../corelib/thread/qmutex_p.h ../corelib/thread/qmutexpool_p.h ../corelib/thread/qorderedmutexlocker_p.h ../corelib/thread/qreadwritelock_p.h ../corelib/thread/qthread_p.h ../corelib/statemachine/qabstractstate_p.h ../corelib/statemachine/qabstracttransition_p.h ../corelib/statemachine/qeventtransition_p.h ../corelib/statemachine/qhistorystate_p.h ../corelib/statemachine/qsignaleventgenerator_p.h ../corelib/statemachine/qsignaltransition_p.h ../corelib/statemachine/qstate_p.h ../corelib/statemachine/qstatemachine_p.h ../corelib/concurrent/qfutureinterface_p.h ../corelib/concurrent/qfuturewatcher_p.h ../corelib/concurrent/qthreadpool_p.h ../corelib/io/qabstractfileengine_p.h ../corelib/io/qdatastream_p.h ../corelib/io/qdataurl_p.h ../corelib/io/qdir_p.h ../corelib/io/qfile_p.h ../corelib/io/qfileinfo_p.h ../corelib/io/qfilesystemengine_p.h ../corelib/io/qfilesystementry_p.h ../corelib/io/qfilesystemiterator_p.h ../corelib/io/qfilesystemmetadata_p.h ../corelib/io/qfilesystemwatcher_dnotify_p.h ../corelib/io/qfilesystemwatcher_fsevents_p.h ../corelib/io/qfilesystemwatcher_inotify_p.h ../corelib/io/qfilesystemwatcher_kqueue_p.h ../corelib/io/qfilesystemwatcher_p.h ../corelib/io/qfilesystemwatcher_symbian_p.h ../corelib/io/qfilesystemwatcher_win_p.h ../corelib/io/qfsfileengine_iterator_p.h ../corelib/io/qfsfileengine_p.h ../corelib/io/qiodevice_p.h ../corelib/io/qnoncontiguousbytedevice_p.h ../corelib/io/qprocess_p.h ../corelib/io/qresource_iterator_p.h ../corelib/io/qresource_p.h ../corelib/io/qsettings_p.h ../corelib/io/qtldurl_p.h ../corelib/io/qurltlds_p.h ../corelib/io/qwindowspipewriter_p.h ../corelib/global/qnumeric_p.h ../corelib/global/qt_pch.h ../corelib/codecs/qfontlaocodec_p.h ../corelib/codecs/qiconvcodec_p.h ../corelib/codecs/qisciicodec_p.h ../corelib/codecs/qlatincodec_p.h ../corelib/codecs/qsimplecodec_p.h ../corelib/codecs/qtextcodec_p.h ../corelib/codecs/qtsciicodec_p.h ../corelib/codecs/qutfcodec_p.h +diff -up qt-everywhere-opensource-src-4.8.7/include/QtCore/qatomic_aarch64.h.aarch64 qt-everywhere-opensource-src-4.8.7/include/QtCore/qatomic_aarch64.h +--- qt-everywhere-opensource-src-4.8.7/include/QtCore/qatomic_aarch64.h.aarch64 2015-05-08 21:48:32.715057744 -0500 ++++ qt-everywhere-opensource-src-4.8.7/include/QtCore/qatomic_aarch64.h 2015-05-08 21:48:32.715057744 -0500 +@@ -0,0 +1 @@ ++#include "../../src/corelib/arch/qatomic_aarch64.h" +diff -up qt-everywhere-opensource-src-4.8.7/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri.aarch64 qt-everywhere-opensource-src-4.8.7/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri +--- qt-everywhere-opensource-src-4.8.7/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri.aarch64 2015-05-07 09:14:47.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.7/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri 2015-05-08 21:48:33.268061013 -0500 +@@ -66,6 +66,12 @@ contains(JAVASCRIPTCORE_JIT,no) { + } + } + ++# Hack around AARCH64 fail wrt JSValue.h ++equals(QT_ARCH, aarch64) { ++ message("JavaScriptCore aarch64 hack: -fpermissive") ++ QMAKE_CXXFLAGS += -fpermissive ++} ++ + wince* { + INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/ce-compat + SOURCES += $$QT_SOURCE_TREE/src/3rdparty/ce-compat/ce_time.c +diff -up qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri.aarch64 qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri +--- qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri.aarch64 2015-05-07 09:14:45.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri 2015-05-08 21:48:33.268061013 -0500 +@@ -63,6 +63,12 @@ contains (CONFIG, text_breaking_with_icu + DEFINES += WTF_USE_QT_ICU_TEXT_BREAKING=1 + } + ++# Hack around AARCH64 fail wrt JSValue.h ++equals(QT_ARCH, aarch64) { ++ message("JavaScriptCore aarch64 hack: -fpermissive") ++ QMAKE_CXXFLAGS += -fpermissive ++} ++ + wince* { + INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/ce-compat + INCLUDEPATH += $$PWD/../JavaScriptCore/os-win32 +diff -up qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h.aarch64 qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h +--- qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h.aarch64 2015-05-07 09:14:45.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h 2015-05-08 21:48:33.269061019 -0500 +@@ -369,7 +369,16 @@ + + #endif /* ARM */ + +-#if CPU(ARM) || CPU(MIPS) || CPU(SH4) ++/* CPU(AARCH64) - AArch64 */ ++#if defined(__aarch64__) ++#define WTF_CPU_AARCH64 1 ++#if defined(__AARCH64EB__) ++#define WTF_CPU_BIG_ENDIAN 1 ++#endif ++#endif ++ ++/* Not sure about this one, qt5-qtwebkit doesn't include it -- rex */ ++#if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(AARCH64) + #define WTF_CPU_NEEDS_ALIGNED_ACCESS 1 + #endif + +@@ -1003,7 +1012,7 @@ + || CPU(SPARC64) \ + || CPU(S390X) \ + || CPU(PPC64) \ +- || CPU(MIPS64) ++ || CPU(MIPS64) || CPU(AARCH64) + #define WTF_USE_JSVALUE64 1 + #else + #define WTF_USE_JSVALUE32_64 1 +diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/arch/aarch64/qatomic_aarch64.cpp.aarch64 qt-everywhere-opensource-src-4.8.7/src/corelib/arch/aarch64/qatomic_aarch64.cpp +--- qt-everywhere-opensource-src-4.8.7/src/corelib/arch/aarch64/qatomic_aarch64.cpp.aarch64 2015-05-08 21:48:33.269061019 -0500 ++++ qt-everywhere-opensource-src-4.8.7/src/corelib/arch/aarch64/qatomic_aarch64.cpp 2015-05-08 21:48:33.269061019 -0500 +@@ -0,0 +1,70 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2012, 2013 Digia Plc and/or its subsidiary(-ies). ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the QtCore module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include ++ ++#include ++#ifdef _POSIX_PRIORITY_SCHEDULING ++# include ++#endif ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++QT_USE_NAMESPACE ++ ++Q_CORE_EXPORT void qt_atomic_yield(int *count) ++{ ++#ifdef _POSIX_PRIORITY_SCHEDULING ++ if((*count)++ < 50) { ++ sched_yield(); ++ } else ++#endif ++ { ++ struct timespec tm; ++ tm.tv_sec = 0; ++ tm.tv_nsec = 2000001; ++ nanosleep(&tm, NULL); ++ *count = 0; ++ } ++} ++ ++QT_END_NAMESPACE +diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/arch/arch.pri.aarch64 qt-everywhere-opensource-src-4.8.7/src/corelib/arch/arch.pri +--- qt-everywhere-opensource-src-4.8.7/src/corelib/arch/arch.pri.aarch64 2015-05-07 09:14:48.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.7/src/corelib/arch/arch.pri 2015-05-08 21:48:33.270061025 -0500 +@@ -31,7 +31,9 @@ integrity:HEADERS += arch/qatomic_integr + arch/qatomic_s390.h \ + arch/qatomic_x86_64.h \ + arch/qatomic_sh.h \ +- arch/qatomic_sh4a.h ++ arch/qatomic_sh4a.h \ ++ arch/qatomic_aarch64.h \ ++ + + QT_ARCH_CPP = $$QT_SOURCE_TREE/src/corelib/arch/$$QT_ARCH + DEPENDPATH += $$QT_ARCH_CPP +diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_aarch64.h.aarch64 qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_aarch64.h +--- qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_aarch64.h.aarch64 2015-05-08 21:48:33.270061025 -0500 ++++ qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_aarch64.h 2015-05-08 21:48:33.270061025 -0500 +@@ -0,0 +1,335 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the QtCore module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QATOMIC_AARCH64_H ++#define QATOMIC_AARCH64_H ++ ++QT_BEGIN_HEADER ++ ++QT_BEGIN_NAMESPACE ++ ++#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE ++ ++inline bool QBasicAtomicInt::isReferenceCountingNative() ++{ return true; } ++inline bool QBasicAtomicInt::isReferenceCountingWaitFree() ++{ return false; } ++ ++#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE ++ ++inline bool QBasicAtomicInt::isTestAndSetNative() ++{ return true; } ++inline bool QBasicAtomicInt::isTestAndSetWaitFree() ++{ return false; } ++ ++#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE ++ ++inline bool QBasicAtomicInt::isFetchAndStoreNative() ++{ return true; } ++inline bool QBasicAtomicInt::isFetchAndStoreWaitFree() ++{ return false; } ++ ++#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE ++ ++inline bool QBasicAtomicInt::isFetchAndAddNative() ++{ return true; } ++inline bool QBasicAtomicInt::isFetchAndAddWaitFree() ++{ return false; } ++ ++#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE ++ ++template ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer::isTestAndSetNative() ++{ return true; } ++template ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer::isTestAndSetWaitFree() ++{ return false; } ++ ++#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE ++ ++template ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer::isFetchAndStoreNative() ++{ return true; } ++template ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer::isFetchAndStoreWaitFree() ++{ return false; } ++ ++#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE ++ ++template ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer::isFetchAndAddNative() ++{ return true; } ++template ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer::isFetchAndAddWaitFree() ++{ return false; } ++ ++#ifndef Q_DATA_MEMORY_BARRIER ++# define Q_DATA_MEMORY_BARRIER asm volatile("dmb sy\n":::"memory") ++#endif ++#ifndef Q_COMPILER_MEMORY_BARRIER ++# define Q_COMPILER_MEMORY_BARRIER asm volatile("":::"memory") ++#endif ++ ++inline bool QBasicAtomicInt::ref() ++{ ++ int newValue; ++ ++ Q_COMPILER_MEMORY_BARRIER; ++ newValue = __atomic_add_fetch(&_q_value, 1, __ATOMIC_ACQ_REL); ++ Q_COMPILER_MEMORY_BARRIER; ++ ++ return newValue != 0; ++} ++ ++inline bool QBasicAtomicInt::deref() ++{ ++ int newValue; ++ ++ Q_COMPILER_MEMORY_BARRIER; ++ newValue = __atomic_sub_fetch(&_q_value, 1, __ATOMIC_ACQ_REL); ++ Q_COMPILER_MEMORY_BARRIER; ++ ++ return newValue != 0; ++} ++ ++inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue) ++{ ++ bool val; ++ ++ Q_COMPILER_MEMORY_BARRIER; ++ val = __atomic_compare_exchange_n (&_q_value, &expectedValue, newValue, ++ false, __ATOMIC_RELAXED, __ATOMIC_RELAXED); ++ Q_COMPILER_MEMORY_BARRIER; ++ return val; ++} ++ ++inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue) ++{ ++ int val; ++ Q_COMPILER_MEMORY_BARRIER; ++ val = __atomic_exchange_n(&_q_value, newValue, __ATOMIC_RELAXED); ++ Q_COMPILER_MEMORY_BARRIER; ++ return val; ++} ++ ++inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd) ++{ ++ int val; ++ Q_COMPILER_MEMORY_BARRIER; ++ val = __atomic_fetch_add(&_q_value, valueToAdd, __ATOMIC_RELAXED); ++ Q_COMPILER_MEMORY_BARRIER; ++ return val; ++} ++ ++template ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer::testAndSetRelaxed(T *expectedValue, T *newValue) ++{ ++ bool val; ++ Q_COMPILER_MEMORY_BARRIER; ++ val = __atomic_compare_exchange_n (&_q_value, &expectedValue, newValue, ++ false, __ATOMIC_RELAXED, __ATOMIC_RELAXED); ++ Q_COMPILER_MEMORY_BARRIER; ++ return val; ++} ++ ++template ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndStoreRelaxed(T *newValue) ++{ ++ T *val; ++ Q_COMPILER_MEMORY_BARRIER; ++ val = __atomic_exchange_n(&_q_value, newValue, __ATOMIC_RELAXED); ++ Q_COMPILER_MEMORY_BARRIER; ++ return val; ++} ++ ++template ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddRelaxed(qptrdiff valueToAdd) ++{ ++ T *val; ++ Q_COMPILER_MEMORY_BARRIER; ++ val = __atomic_fetch_add(&_q_value, valueToAdd, __ATOMIC_RELAXED); ++ Q_COMPILER_MEMORY_BARRIER; ++ return val; ++} ++ ++inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue) ++{ ++ bool returnValue = testAndSetRelaxed(expectedValue, newValue); ++ Q_DATA_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ return testAndSetRelaxed(expectedValue, newValue); ++} ++ ++inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ bool returnValue = testAndSetRelaxed(expectedValue, newValue); ++ Q_COMPILER_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue) ++{ ++ int returnValue = fetchAndStoreRelaxed(newValue); ++ Q_DATA_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ return fetchAndStoreRelaxed(newValue); ++} ++ ++inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ int returnValue = fetchAndStoreRelaxed(newValue); ++ Q_COMPILER_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd) ++{ ++ int returnValue = fetchAndAddRelaxed(valueToAdd); ++ Q_DATA_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ return fetchAndAddRelaxed(valueToAdd); ++} ++ ++inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ int returnValue = fetchAndAddRelaxed(valueToAdd); ++ Q_COMPILER_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++template ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer::testAndSetAcquire(T *expectedValue, T *newValue) ++{ ++ bool returnValue = testAndSetRelaxed(expectedValue, newValue); ++ Q_DATA_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++template ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer::testAndSetRelease(T *expectedValue, T *newValue) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ return testAndSetRelaxed(expectedValue, newValue); ++} ++ ++template ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer::testAndSetOrdered(T *expectedValue, T *newValue) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ bool returnValue = testAndSetAcquire(expectedValue, newValue); ++ Q_COMPILER_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++template ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndStoreAcquire(T *newValue) ++{ ++ T *returnValue = fetchAndStoreRelaxed(newValue); ++ Q_DATA_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++template ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndStoreRelease(T *newValue) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ return fetchAndStoreRelaxed(newValue); ++} ++ ++template ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndStoreOrdered(T *newValue) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ T *returnValue = fetchAndStoreRelaxed(newValue); ++ Q_COMPILER_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++template ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddAcquire(qptrdiff valueToAdd) ++{ ++ T *returnValue = fetchAndAddRelaxed(valueToAdd); ++ Q_DATA_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++template ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddRelease(qptrdiff valueToAdd) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ return fetchAndAddRelaxed(valueToAdd); ++} ++ ++template ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddOrdered(qptrdiff valueToAdd) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ T *returnValue = fetchAndAddRelaxed(valueToAdd); ++ Q_COMPILER_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++#undef Q_DATA_MEMORY_BARRIER ++#undef Q_COMPILER_MEMORY_BARRIER ++ ++QT_END_NAMESPACE ++ ++QT_END_HEADER ++ ++#endif // QATOMIC_AARCH64_H +diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_arch.h.aarch64 qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_arch.h +--- qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_arch.h.aarch64 2015-05-07 09:14:48.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_arch.h 2015-05-08 21:48:33.271061031 -0500 +@@ -94,6 +94,8 @@ QT_BEGIN_HEADER + # include "QtCore/qatomic_sh4a.h" + #elif defined(QT_ARCH_NACL) + # include "QtCore/qatomic_generic.h" ++#elif defined(QT_ARCH_AARCH64) ++# include "QtCore/qatomic_aarch64.h" + #else + # error "Qt has not been ported to this architecture" + #endif diff --git a/source/l/qt/patches/qt-cupsEnumDests.patch b/source/l/qt/patches/qt-cupsEnumDests.patch new file mode 100644 index 000000000..7d59f22e8 --- /dev/null +++ b/source/l/qt/patches/qt-cupsEnumDests.patch @@ -0,0 +1,238 @@ +diff -up qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp.cupsEnumDests qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp +--- qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp.cupsEnumDests 2012-11-23 10:09:53.000000000 +0000 ++++ qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp 2013-07-03 15:30:06.232936976 +0100 +@@ -50,9 +50,19 @@ + + QT_BEGIN_NAMESPACE + ++typedef int (*CupsEnumDests)(unsigned flags, int msec, int *cancel, ++ cups_ptype_t type, cups_ptype_t mask, ++ cups_dest_cb_t cb, void *user_data); ++typedef http_t * (*CupsConnectDest)(cups_dest_t *dest, unsigned flags, ++ int msec, int *cancel, ++ char *resource, size_t resourcesize, ++ cups_dest_cb_t cb, void *user_data); ++typedef int (*CupsCopyDest)(cups_dest_t *dest, int num_dests, ++ cups_dest_t **dests); + typedef int (*CupsGetDests)(cups_dest_t **dests); + typedef void (*CupsFreeDests)(int num_dests, cups_dest_t *dests); + typedef const char* (*CupsGetPPD)(const char *printer); ++typedef const char* (*CupsGetPPD2)(http_t *http, const char *printer); + typedef int (*CupsMarkOptions)(ppd_file_t *ppd, int num_options, cups_option_t *options); + typedef ppd_file_t* (*PPDOpenFile)(const char *filename); + typedef void (*PPDMarkDefaults)(ppd_file_t *ppd); +@@ -66,12 +76,24 @@ typedef const char* (*CupsLangEncoding)( + typedef int (*CupsAddOption)(const char *name, const char *value, int num_options, cups_option_t **options); + typedef int (*CupsTempFd)(char *name, int len); + typedef int (*CupsPrintFile)(const char * name, const char * filename, const char * title, int num_options, cups_option_t * options); ++typedef int (*CupsPrintFile2)(http_t *http, const char *name, const char *filename, const char *title, int num_options, cups_option_t *options); ++ ++typedef struct ++{ ++ cups_dest_t *printers; ++ int num_printers; ++} EnumDestsContext; + + static bool cupsLoaded = false; + static int qt_cups_num_printers = 0; ++static cups_dest_t *qt_cups_printers = 0; ++static CupsEnumDests _cupsEnumDests = 0; ++static CupsConnectDest _cupsConnectDest = 0; ++static CupsCopyDest _cupsCopyDest = 0; + static CupsGetDests _cupsGetDests = 0; + static CupsFreeDests _cupsFreeDests = 0; + static CupsGetPPD _cupsGetPPD = 0; ++static CupsGetPPD2 _cupsGetPPD2 = 0; + static PPDOpenFile _ppdOpenFile = 0; + static PPDMarkDefaults _ppdMarkDefaults = 0; + static PPDClose _ppdClose = 0; +@@ -84,14 +106,35 @@ static CupsLangEncoding _cupsLangEncodin + static CupsAddOption _cupsAddOption = 0; + static CupsTempFd _cupsTempFd = 0; + static CupsPrintFile _cupsPrintFile = 0; ++static CupsPrintFile2 _cupsPrintFile2 = 0; ++ ++static int enum_dest_cb (void *user_data, unsigned flags, cups_dest_t *dest) ++{ ++ EnumDestsContext *context = (EnumDestsContext *) user_data; ++ ++ if ((flags & (CUPS_DEST_FLAGS_UNCONNECTED | ++ CUPS_DEST_FLAGS_REMOVED | ++ CUPS_DEST_FLAGS_ERROR | ++ CUPS_DEST_FLAGS_RESOLVING | ++ CUPS_DEST_FLAGS_CONNECTING | ++ CUPS_DEST_FLAGS_CANCELED)) == 0) ++ context->num_printers = _cupsCopyDest (dest, context->num_printers, ++ &context->printers); ++ ++ return 1; ++} + + static void resolveCups() + { + QLibrary cupsLib(QLatin1String("cups"), 2); + if(cupsLib.load()) { ++ _cupsEnumDests = (CupsEnumDests) cupsLib.resolve("cupsEnumDests"); ++ _cupsConnectDest = (CupsConnectDest) cupsLib.resolve("cupsConnectDest"); ++ _cupsCopyDest = (CupsCopyDest) cupsLib.resolve("cupsCopyDest"); + _cupsGetDests = (CupsGetDests) cupsLib.resolve("cupsGetDests"); + _cupsFreeDests = (CupsFreeDests) cupsLib.resolve("cupsFreeDests"); + _cupsGetPPD = (CupsGetPPD) cupsLib.resolve("cupsGetPPD"); ++ _cupsGetPPD2 = (CupsGetPPD2) cupsLib.resolve("cupsGetPPD2"); + _cupsLangGet = (CupsLangGet) cupsLib.resolve("cupsLangGet"); + _cupsLangEncoding = (CupsLangEncoding) cupsLib.resolve("cupsLangEncoding"); + _ppdOpenFile = (PPDOpenFile) cupsLib.resolve("ppdOpenFile"); +@@ -104,14 +147,27 @@ static void resolveCups() + _cupsAddOption = (CupsAddOption) cupsLib.resolve("cupsAddOption"); + _cupsTempFd = (CupsTempFd) cupsLib.resolve("cupsTempFd"); + _cupsPrintFile = (CupsPrintFile) cupsLib.resolve("cupsPrintFile"); ++ _cupsPrintFile2 = (CupsPrintFile2) cupsLib.resolve("cupsPrintFile2"); + +- if (_cupsGetDests && _cupsFreeDests) { +- cups_dest_t *printers; ++ if (_cupsEnumDests && _cupsCopyDest && ++ _cupsConnectDest && _cupsGetPPD2 && ++ _cupsPrintFile2) { ++ EnumDestsContext context; ++ context.printers = 0; ++ context.num_printers = 0; ++ _cupsEnumDests(0, -1, 0, 0, 0, ++ enum_dest_cb, &context); ++ ++ qt_cups_printers = context.printers; ++ qt_cups_num_printers = context.num_printers; ++ } else if (_cupsGetDests && _cupsFreeDests) { ++ cups_dest_t *printers; + int num_printers = _cupsGetDests(&printers); +- if (num_printers) +- _cupsFreeDests(num_printers, printers); +- qt_cups_num_printers = num_printers; +- } ++ ++ if (num_printers) ++ _cupsFreeDests(num_printers, printers); ++ qt_cups_num_printers = num_printers; ++ } + } + cupsLoaded = true; + } +@@ -134,7 +190,15 @@ QCUPSSupport::QCUPSSupport() + return; + + // Update the available printer count +- qt_cups_num_printers = prnCount = _cupsGetDests(&printers); ++ if (qt_cups_printers && _cupsCopyDest) { ++ int i; ++ for (i = 0; i < qt_cups_num_printers; ++i) { ++ prnCount = _cupsCopyDest (&qt_cups_printers[i], ++ prnCount, ++ &printers); ++ } ++ } else ++ qt_cups_num_printers = prnCount = _cupsGetDests(&printers); + + for (int i = 0; i < prnCount; ++i) { + if (printers[i].is_default) { +@@ -188,7 +252,19 @@ const ppd_file_t* QCUPSSupport::setCurre + currPPD = 0; + page_sizes = 0; + +- const char *ppdFile = _cupsGetPPD(printers[index].name); ++ const char *ppdFile = 0; ++ if (_cupsConnectDest && _cupsGetPPD2) { ++ char resource[HTTP_MAX_URI]; ++ http_t *http = _cupsConnectDest (&printers[index], 0, -1, 0, ++ resource, sizeof (resource), ++ 0, 0); ++ if (http) { ++ char *name = strrchr (resource, '/'); ++ if (name) ++ ppdFile = _cupsGetPPD2 (http, ++name); ++ } ++ } else ++ ppdFile = _cupsGetPPD(printers[index].name); + + if (!ppdFile) + return 0; +@@ -343,7 +419,29 @@ bool QCUPSSupport::printerHasPPD(const c + { + if (!isAvailable()) + return false; +- const char *ppdFile = _cupsGetPPD(printerName); ++ ++ const char *ppdFile = 0; ++ if (_cupsConnectDest && _cupsGetPPD2) { ++ int i; ++ for (i = 0; i < prnCount; ++i) ++ if (!strcmp (printers[i].name, printerName)) ++ break; ++ ++ if (i == prnCount) ++ return false; ++ ++ char resource[HTTP_MAX_URI]; ++ http_t *http = _cupsConnectDest (&printers[i], 0, -1, 0, ++ resource, sizeof (resource), ++ 0, 0); ++ if (http) { ++ char *name = strrchr (resource, '/'); ++ if (name) ++ ppdFile = _cupsGetPPD2 (http, ++name); ++ } ++ } else ++ ppdFile = _cupsGetPPD(printerName); ++ + if (ppdFile) + unlink(ppdFile); + return (ppdFile != 0); +@@ -394,6 +492,26 @@ QPair QCUPSSupport::tempFd + int QCUPSSupport::printFile(const char * printerName, const char * filename, const char * title, + int num_options, cups_option_t * options) + { ++ if (_cupsConnectDest && _cupsPrintFile2) { ++ int i; ++ for (i = 0; i < prnCount; ++i) ++ if (!strcmp (printers[i].name, printerName)) ++ break; ++ ++ if (i != prnCount) { ++ char resource[HTTP_MAX_URI]; ++ http_t *http = _cupsConnectDest (&printers[i], 0, -1, 0, ++ resource, sizeof (resource), ++ 0, 0); ++ if (http) { ++ char *name = strrchr (resource, '/'); ++ if (name) ++ return _cupsPrintFile2 (http, ++name, filename, title, ++ num_options, options); ++ } ++ } ++ } ++ + return _cupsPrintFile(printerName, filename, title, num_options, options); + } + +diff -up qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h.cupsEnumDests qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h +--- qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h.cupsEnumDests 2012-11-23 10:09:53.000000000 +0000 ++++ qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h 2013-07-03 15:27:24.733343017 +0100 +@@ -92,7 +92,7 @@ public: + + QStringList options() const; + +- static bool printerHasPPD(const char *printerName); ++ bool printerHasPPD(const char *printerName); + + QString unicodeString(const char *s); + +diff -up qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp.cupsEnumDests qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp +--- qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp.cupsEnumDests 2013-07-03 15:27:24.531342277 +0100 ++++ qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp 2013-07-03 15:27:24.733343017 +0100 +@@ -844,7 +844,7 @@ void QPrinter::setPrinterName(const QStr + if(d->use_default_engine + && d->outputFormat == QPrinter::NativeFormat) { + if (QCUPSSupport::cupsVersion() >= 10200 +- && QCUPSSupport::printerHasPPD(name.toLocal8Bit().constData())) ++ && QCUPSSupport().printerHasPPD(name.toLocal8Bit().constData())) + setOutputFormat(QPrinter::PdfFormat); + else + setOutputFormat(QPrinter::PostScriptFormat); diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.6.2-cups.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.6.2-cups.patch new file mode 100644 index 000000000..e0305e11b --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.6.2-cups.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/source/l/qt/patches/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch new file mode 100644 index 000000000..d4e5924df --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch @@ -0,0 +1,69 @@ +diff -ur qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck/src/gui/kernel/qguieventdispatcher_glib.cpp +--- qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp 2010-06-02 04:03:15.000000000 +0200 ++++ qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck/src/gui/kernel/qguieventdispatcher_glib.cpp 2010-12-08 22:22:38.000000000 +0100 +@@ -76,7 +76,7 @@ + GX11EventSource *source = reinterpret_cast(s); + return (XEventsQueued(X11->display, QueuedAfterFlush) + || (!(source->flags & QEventLoop::ExcludeUserInputEvents) +- && !source->d->queuedUserInputEvents.isEmpty())); ++ && source->d && !source->d->queuedUserInputEvents.isEmpty())); + } + + static gboolean x11EventSourceCheck(GSource *s) +@@ -84,7 +84,7 @@ + GX11EventSource *source = reinterpret_cast(s); + return (XEventsQueued(X11->display, QueuedAfterFlush) + || (!(source->flags & QEventLoop::ExcludeUserInputEvents) +- && !source->d->queuedUserInputEvents.isEmpty())); ++ && source->d && !source->d->queuedUserInputEvents.isEmpty())); + } + + static gboolean x11EventSourceDispatch(GSource *s, GSourceFunc callback, gpointer user_data) +@@ -95,7 +95,7 @@ + do { + XEvent event; + if (!(source->flags & QEventLoop::ExcludeUserInputEvents) +- && !source->d->queuedUserInputEvents.isEmpty()) { ++ && source->d && !source->d->queuedUserInputEvents.isEmpty()) { + // process a pending user input event + event = source->d->queuedUserInputEvents.takeFirst(); + } else if (XEventsQueued(X11->display, QueuedAlready)) { +@@ -112,7 +112,8 @@ + case XKeyRelease: + case EnterNotify: + case LeaveNotify: +- source->d->queuedUserInputEvents.append(event); ++ if (source->d) ++ source->d->queuedUserInputEvents.append(event); + continue; + + case ClientMessage: +@@ -127,7 +128,8 @@ + break; + } + } +- source->d->queuedUserInputEvents.append(event); ++ if (source->d) ++ source->d->queuedUserInputEvents.append(event); + continue; + + default: +@@ -140,7 +142,7 @@ + } + + // send through event filter +- if (source->q->filterEvent(&event)) ++ if (source->q && source->q->filterEvent(&event)) + continue; + + if (qApp->x11ProcessEvent(&event) == 1) +@@ -152,7 +154,8 @@ + + out: + +- source->d->runTimersOnceWithNormalPriority(); ++ if (source->d) ++ source->d->runTimersOnceWithNormalPriority(); + + if (callback) + callback(user_data); diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch new file mode 100644 index 000000000..4279ce2e7 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch @@ -0,0 +1,41 @@ +diff -up qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h.QTBUG-22037 qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h +--- qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h.QTBUG-22037 2011-10-03 22:44:32.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h 2011-10-15 14:25:52.238694974 -0500 +@@ -769,26 +769,18 @@ Q_OUTOFLINE_TEMPLATE void QList::clea + template + Q_OUTOFLINE_TEMPLATE int QList::removeAll(const T &_t) + { +- int index = indexOf(_t); +- if (index == -1) +- return 0; +- ++ detachShared(); + const T t = _t; +- detach(); +- +- Node *i = reinterpret_cast(p.at(index)); +- Node *e = reinterpret_cast(p.end()); +- Node *n = i; +- node_destruct(i); +- while (++i != e) { +- if (i->t() == t) +- node_destruct(i); +- else +- *n++ = *i; +- } +- +- int removedCount = e - n; +- d->end -= removedCount; ++ int removedCount=0, i=0; ++ Node *n; ++ while (i < p.size()) ++ if ((n = reinterpret_cast(p.at(i)))->t() == t) { ++ node_destruct(n); ++ p.remove(i); ++ ++removedCount; ++ } else { ++ ++i; ++ } + return removedCount; + } + diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch new file mode 100644 index 000000000..6fedcc810 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch @@ -0,0 +1,20 @@ +diff -up qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h.s390-atomic qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h +--- qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h.s390-atomic 2011-12-18 16:15:20.000000000 +0100 ++++ qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h 2011-12-18 16:17:34.000000000 +0100 +@@ -400,6 +400,16 @@ Q_INLINE_TEMPLATE T* QBasicAtomicPointer + + + template ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddOrdered(qptrdiff valueToAdd) ++{ ++#ifndef __s390x__ ++ return (T *)__CS_OLD_LOOP(&_q_value, valueToAdd * sizeof(T), "ar", "", "bcr 15,0\n"); ++#else ++ return (T *)__CSG_OLD_LOOP(&_q_value, valueToAdd * sizeof(T), "agr", "", "bcr 15,0\n"); ++#endif ++} ++ ++template + Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddRelaxed(qptrdiff valueToAdd) + { + return fetchAndAddOrdered(valueToAdd); diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch new file mode 100644 index 000000000..5c8b5a1dd --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch @@ -0,0 +1,36 @@ +diff -up qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf.multilib qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf +--- qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf.multilib 2011-05-23 12:26:21.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf 2011-05-25 13:39:38.789054074 +0200 +@@ -12,6 +12,8 @@ QMAKE_INCREMENTAL_STYLE = sublib + QMAKE_CFLAGS = -m32 + QMAKE_LFLAGS = -m32 + ++QMAKE_CFLAGS_RELEASE += -O2 ++ + include(../common/linux.conf) + include(../common/gcc-base-unix.conf) + include(../common/g++-unix.conf) +diff -up qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf.multilib qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf +--- qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf.multilib 2011-05-23 12:26:21.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf 2011-05-25 13:39:47.460747770 +0200 +@@ -15,6 +15,8 @@ QMAKE_INCREMENTAL_STYLE = sublib + QMAKE_CFLAGS = -m64 + QMAKE_LFLAGS = -m64 + ++QMAKE_CFLAGS_RELEASE += -O2 ++ + include(../common/linux.conf) + include(../common/gcc-base-unix.conf) + include(../common/g++-unix.conf) +diff -up qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf.multilib qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf +--- qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf.multilib 2011-05-23 12:26:21.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf 2011-05-25 13:39:26.630088814 +0200 +@@ -9,6 +9,8 @@ CONFIG += qt warn_on release increment + QT += core gui + QMAKE_INCREMENTAL_STYLE = sublib + ++QMAKE_CFLAGS_RELEASE += -O2 ++ + include(../common/linux.conf) + include(../common/gcc-base-unix.conf) + include(../common/g++-unix.conf) diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch new file mode 100644 index 000000000..947f7582d --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch @@ -0,0 +1,12 @@ +diff -up qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp.qtreeview-kpackagekit-crash qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp +--- qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp.qtreeview-kpackagekit-crash 2011-05-23 12:26:21.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp 2011-05-25 13:24:33.137315194 +0200 +@@ -3215,7 +3215,7 @@ int QTreeViewPrivate::itemHeight(int ite + return defaultItemHeight; + if (viewItems.isEmpty()) + return 0; +- const QModelIndex &index = viewItems.at(item).index; ++ QModelIndex index = viewItems.at(item).index; + if (!index.isValid()) + return 0; + int height = viewItems.at(item).height; diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch new file mode 100644 index 000000000..e84446ce8 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch @@ -0,0 +1,27 @@ +diff -up qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp.linguist_qtmake-qt4 qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp +--- qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp.linguist_qtmake-qt4 2012-04-26 21:45:50.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp 2012-05-29 12:17:03.416561535 +0200 +@@ -314,9 +314,9 @@ int main(int argc, char **argv) + parseHandler.verbose = evalHandler.verbose = cd.isVerbose(); + ProFileOption option; + #ifdef QT_BOOTSTRAPPED +- option.initProperties(binDir + QLatin1String("/qmake")); ++ option.initProperties(binDir + QLatin1String("/qmake-qt4")); + #else +- option.initProperties(app.applicationDirPath() + QLatin1String("/qmake")); ++ option.initProperties(app.applicationDirPath() + QLatin1String("/qmake-qt4")); + #endif + ProFileParser parser(0, &parseHandler); + ProFileEvaluator visitor(&option, &parser, &evalHandler); +diff -up qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp.linguist_qtmake-qt4 qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp +--- qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp.linguist_qtmake-qt4 2012-04-26 21:45:50.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp 2012-05-29 11:46:48.811134546 +0200 +@@ -765,7 +765,7 @@ int main(int argc, char **argv) + + parseHandler.verbose = evalHandler.verbose = !!(options & Verbose); + ProFileOption option; +- option.initProperties(app.applicationDirPath() + QLatin1String("/qmake")); ++ option.initProperties(app.applicationDirPath() + QLatin1String("/qmake-qt4")); + option.setCommandLineArguments(QStringList() << QLatin1String("CONFIG+=lupdate_run")); + ProFileParser parser(0, &parseHandler); + diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch new file mode 100644 index 000000000..745831467 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch @@ -0,0 +1,10 @@ +diff -up qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro.debuginfo qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro +--- qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro.debuginfo 2012-03-14 09:01:17.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro 2012-05-11 11:55:37.780070386 -0500 +@@ -34,6 +34,3 @@ MOCDIR = .moc + + *-g++*: QMAKE_CXXFLAGS += -fno-strict-aliasing + +-CONFIG -= separate_debug_info +-CONFIG += no_debug_info +- diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch new file mode 100644 index 000000000..f0a41a42e --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch @@ -0,0 +1,13 @@ +diff -up qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp.me qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp +--- qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp.me 2012-06-19 12:52:22.740180410 +0200 ++++ qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp 2012-06-19 12:52:51.953194103 +0200 +@@ -944,8 +944,7 @@ void MainWindow::updateApplicationFont() + if (helpEngine.usesAppFont()) + font = helpEngine.appFont(); + +- const QWidgetList &widgets = qApp->allWidgets(); +- foreach (QWidget* widget, widgets) ++ foreach (QWidget* widget, QApplication::allWidgets()) + widget->setFont(font); + } + diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch new file mode 100644 index 000000000..9c53f3c26 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch @@ -0,0 +1,23 @@ +diff -up qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp.icu_no_debug qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp +--- qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp.icu_no_debug 2012-09-06 02:33:45.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp 2012-09-11 09:04:21.542379795 -0500 +@@ -84,7 +84,9 @@ bool qt_initIcu(const QString &localeStr + QLibrary lib(QLatin1String("icui18n"), QLatin1String(U_ICU_VERSION_SHORT)); + lib.setLoadHints(QLibrary::ImprovedSearchHeuristics); + if (!lib.load()) { ++#ifndef QT_NO_DEBUG + qWarning() << "Unable to load library icui18n" << lib.errorString(); ++#endif + status = ErrorLoading; + return false; + } +@@ -114,7 +116,9 @@ bool qt_initIcu(const QString &localeStr + QLibrary ucLib(QLatin1String("icuuc"), QLatin1String(U_ICU_VERSION_SHORT)); + ucLib.setLoadHints(QLibrary::ImprovedSearchHeuristics); + if (!ucLib.load()) { ++#ifndef QT_NO_DEBUG + qWarning() << "Unable to load library icuuc" << ucLib.errorString(); ++#endif + status = ErrorLoading; + return false; + } diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-no_Werror.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-no_Werror.patch new file mode 100644 index 000000000..86dcc288d --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-no_Werror.patch @@ -0,0 +1,12 @@ +diff -up qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri.no_Werror qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri +--- qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri.no_Werror 2012-09-06 02:33:50.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri 2012-09-11 09:03:19.152159783 -0500 +@@ -102,7 +102,7 @@ CONFIG -= warn_on + + # Treat warnings as errors on x86/Linux/GCC + linux-g++* { +- !CONFIG(standalone_package):if(isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386)): QMAKE_CXXFLAGS += -Werror ++ #!CONFIG(standalone_package):if(isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386)): QMAKE_CXXFLAGS += -Werror + + greaterThan(QT_GCC_MAJOR_VERSION, 3):greaterThan(QT_GCC_MINOR_VERSION, 5) { + if (!contains(QMAKE_CXXFLAGS, -std=c++0x) && !contains(QMAKE_CXXFLAGS, -std=gnu++0x)) { diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch new file mode 100644 index 000000000..dd3a5a022 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch @@ -0,0 +1,14 @@ +diff -up qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp.qdbusconnection_no_debug.patch qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp +--- qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp.qdbusconnection_no_debug.patch 2012-09-06 02:33:44.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp 2012-09-11 08:55:29.854026815 -0500 +@@ -1109,8 +1109,10 @@ public: + // make sure this connection is running on the main thread + QCoreApplication *instance = QCoreApplication::instance(); + if (!instance) { ++#ifndef QT_NO_DEBUG + qWarning("QDBusConnection: %s D-Bus connection created before QCoreApplication. Application may misbehave.", + type == SessionBus ? "session" : type == SystemBus ? "system" : "generic"); ++#endif + } else if (QDBusConnectionPrivate::d(*this)) { + QDBusConnectionPrivate::d(*this)->moveToThread(instance->thread()); + } diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch new file mode 100644 index 000000000..0494c81f0 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch @@ -0,0 +1,16 @@ +diff -up qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp.qmake_pkgconfig_requires_private qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp +--- qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp.qmake_pkgconfig_requires_private 2012-11-23 04:11:21.000000000 -0600 ++++ qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp 2013-02-11 07:36:36.192779528 -0600 +@@ -3293,6 +3293,12 @@ MakefileGenerator::writePkgConfigFile() + t << "Requires: " << requires << endl; + } + ++ // requires.private ++ const QString requires_private = project->values("QMAKE_PKGCONFIG_REQUIRES_PRIVATE").join(" "); ++ if (!requires_private.isEmpty()) { ++ t << "Requires.private: " << requires_private << endl; ++ } ++ + t << endl; + } + diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch new file mode 100644 index 000000000..81d74ff4d --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch @@ -0,0 +1,24 @@ +diff -up qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf.QTBUG-14467 qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf +--- qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf.QTBUG-14467 2013-05-30 16:19:17.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf 2013-06-09 11:53:45.709773603 -0500 +@@ -72,7 +72,7 @@ defineTest(qtAddLibrary) { + } + isEmpty(LINKAGE) { + if(!debug_and_release|build_pass):CONFIG(debug, debug|release) { +- win32:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}d ++ win32:LINKAGE = -l$${LIB_NAME}d$${QT_LIBINFIX} + mac:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}_debug + } + isEmpty(LINKAGE):LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX} +diff -up qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf.QTBUG-14467 qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf +--- qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf.QTBUG-14467 2013-05-30 16:19:17.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf 2013-06-09 11:53:45.710773593 -0500 +@@ -6,7 +6,7 @@ contains(TEMPLATE, ".*app"){ + + qt:for(entryLib, $$list($$unique(QMAKE_LIBS_QT_ENTRY))) { + isEqual(entryLib, -lqtmain): { +- CONFIG(debug, debug|release): QMAKE_LIBS += $${entryLib}$${QT_LIBINFIX}d ++ CONFIG(debug, debug|release): QMAKE_LIBS += $${entryLib}d$${QT_LIBINFIX} + else: QMAKE_LIBS += $${entryLib}$${QT_LIBINFIX} + } else { + QMAKE_LIBS += $${entryLib} diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch new file mode 100644 index 000000000..018872f6d --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch @@ -0,0 +1,84 @@ +diff -up qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp.QTBUG-21900 qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp +--- qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp.QTBUG-21900 2013-05-30 16:18:05.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp 2013-06-09 11:53:45.891771748 -0500 +@@ -818,6 +818,27 @@ static Bool qt_sync_request_scanner(Disp + #endif + #endif // QT_NO_XSYNC + ++struct qt_configure_event_data ++{ ++ WId window; ++ WId parent; ++}; ++ ++static Bool qt_configure_event_scanner(Display*, XEvent *event, XPointer arg) ++{ ++ qt_configure_event_data *data = ++ reinterpret_cast(arg); ++ if (event->type == ConfigureNotify && ++ event->xconfigure.window == data->window) { ++ return true; ++ } else if (event->type == ReparentNotify && ++ event->xreparent.window == data->window) { ++ data->parent = event->xreparent.parent; ++ } ++ ++ return false; ++} ++ + static void qt_x11_create_intern_atoms() + { + const char *names[QX11Data::NAtoms]; +@@ -5302,8 +5323,11 @@ bool QETWidget::translateConfigEvent(con + if (d->extra->compress_events) { + // ConfigureNotify compression for faster opaque resizing + XEvent otherEvent; +- while (XCheckTypedWindowEvent(X11->display, internalWinId(), ConfigureNotify, +- &otherEvent)) { ++ qt_configure_event_data configureData; ++ configureData.window = internalWinId(); ++ configureData.parent = d->topData()->parentWinId; ++ while (XCheckIfEvent(X11->display, &otherEvent, ++ &qt_configure_event_scanner, (XPointer)&configureData)) { + if (qt_x11EventFilter(&otherEvent)) + continue; + +@@ -5316,13 +5340,19 @@ bool QETWidget::translateConfigEvent(con + newSize.setWidth(otherEvent.xconfigure.width); + newSize.setHeight(otherEvent.xconfigure.height); + ++ trust = isVisible() ++ && (configureData.parent == XNone || ++ configureData.parent == QX11Info::appRootWindow()); ++ + if (otherEvent.xconfigure.send_event || trust) { + newCPos.rx() = otherEvent.xconfigure.x + + otherEvent.xconfigure.border_width; + newCPos.ry() = otherEvent.xconfigure.y + + otherEvent.xconfigure.border_width; + isCPos = true; +- } ++ } else { ++ isCPos = false; ++ } + } + #ifndef QT_NO_XSYNC + qt_sync_request_event_data sync_event; +@@ -5335,9 +5365,14 @@ bool QETWidget::translateConfigEvent(con + } + + if (!isCPos) { +- // we didn't get an updated position of the toplevel. +- // either we haven't moved or there is a bug in the window manager. +- // anyway, let's query the position to be certain. ++ // If the last configure event didn't have a trustable position, ++ // it's necessary to query, see ICCCM 4.24: ++ // ++ // Any real ConfigureNotify event on a top-level window implies ++ // that the window’s position on the root may have changed, even ++ // though the event reports that the window’s position in its ++ // parent is unchanged because the window may have been reparented. ++ + int x, y; + Window child; + XTranslateCoordinates(X11->display, internalWinId(), diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch new file mode 100644 index 000000000..5ca91145e --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch @@ -0,0 +1,12 @@ +diff -ur qt-everywhere-opensource-src-4.8.5-CVE-2013-4549/src/xml/sax/qxml.cpp qt-everywhere-opensource-src-4.8.5-QTBUG-35459/src/xml/sax/qxml.cpp +--- qt-everywhere-opensource-src-4.8.5-CVE-2013-4549/src/xml/sax/qxml.cpp 2013-12-05 19:23:33.000000000 +0100 ++++ qt-everywhere-opensource-src-4.8.5-QTBUG-35459/src/xml/sax/qxml.cpp 2014-01-13 20:13:59.000000000 +0100 +@@ -428,7 +428,7 @@ + // for the DTD currently being parsed. + static const int dtdRecursionLimit = 2; + // The maximum amount of characters an entity value may contain, after expansion. +- static const int entityCharacterLimit = 1024; ++ static const int entityCharacterLimit = 4096; + + const QString &string(); + void stringClear(); diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch new file mode 100644 index 000000000..ee1d19136 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch @@ -0,0 +1,29 @@ +diff -up qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp.QTBUG-4862 qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp +--- qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp.QTBUG-4862 2013-06-09 12:02:50.323221694 -0500 ++++ qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp 2013-06-09 12:38:53.140804742 -0500 +@@ -624,6 +624,25 @@ QString QFileSystemEngine::homePath() + { + QString home = QFile::decodeName(qgetenv("HOME")); + if (home.isEmpty()) ++ { ++#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) ++ int size_max = sysconf(_SC_GETPW_R_SIZE_MAX); ++ if (size_max == -1) ++ size_max = 1024; ++ QVarLengthArray buf(size_max); ++#endif ++ struct passwd *pw = 0; ++ uid_t user_id = getuid(); ++ pw = getpwuid(user_id); ++#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) ++ struct passwd entry; ++ getpwuid_r(user_id, &entry, buf.data(), buf.size(), &pw); ++#else ++ pw = getpwuid(user_id); ++#endif ++ home = QFile::decodeName(QByteArray(pw->pw_dir)); ++ } ++ if (home.isEmpty()) + home = rootPath(); + return QDir::cleanPath(home); + } diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-mysql_config.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-mysql_config.patch new file mode 100644 index 000000000..fc0ee7670 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-mysql_config.patch @@ -0,0 +1,19 @@ +diff -up qt-everywhere-opensource-src-4.8.5/configure.mysql_config qt-everywhere-opensource-src-4.8.5/configure +--- qt-everywhere-opensource-src-4.8.5/configure.mysql_config 2013-06-07 00:16:41.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.5/configure 2014-03-07 10:09:27.412071146 -0600 +@@ -5480,8 +5480,15 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do + [ -z "$CFG_MYSQL_CONFIG" ] && CFG_MYSQL_CONFIG=`"$WHICH" mysql_config` + if [ -x "$CFG_MYSQL_CONFIG" ]; then + QT_CFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --include 2>/dev/null` ++ $CFG_MYSQL_CONFIG --variable=pkglibdir &>/dev/null && \ ++ QT_MYSQL_PKGLIBDIR=`$CFG_MYSQL_CONFIG --variable=pkglibdir 2>/dev/null` ++ if [ -n "$QT_MYSQL_PKGLIBDIR" ]; then ++ QT_LFLAGS_MYSQL_R="-L$QT_MYSQL_PKGLIBDIR -lmysqlclient_r" ++ QT_LFLAGS_MYSQL="-L$QT_MYSQL_PKGLIBDIR -lmysqlclient" ++ else + QT_LFLAGS_MYSQL_R=`$CFG_MYSQL_CONFIG --libs_r 2>/dev/null` + QT_LFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --libs 2>/dev/null` ++ fi + QT_MYSQL_VERSION=`$CFG_MYSQL_CONFIG --version 2>/dev/null` + QT_MYSQL_VERSION_MAJOR=`echo $QT_MYSQL_VERSION | cut -d . -f 1` + fi diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch new file mode 100644 index 000000000..9a9f77353 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch @@ -0,0 +1,22 @@ +diff -up qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp.qgtkstyle_disable_gtk_theme_check qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp +--- qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp.qgtkstyle_disable_gtk_theme_check 2013-06-09 16:28:22.938840346 -0500 ++++ qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp 2013-06-09 17:03:01.781125479 -0500 +@@ -503,18 +503,6 @@ void QGtkStylePrivate::initGtkWidgets() + return; + } + +- static QString themeName; +- if (!gtkWidgetMap()->contains("GtkWindow") && themeName.isEmpty()) { +- themeName = getThemeName(); +- +- if (themeName == QLS("Qt") || themeName == QLS("Qt4")) { +- // Due to namespace conflicts with Qt3 and obvious recursion with Qt4, +- // we cannot support the GTK_Qt Gtk engine +- qWarning("QGtkStyle cannot be used together with the GTK_Qt engine."); +- return; +- } +- } +- + if (QGtkStylePrivate::gtk_init) { + // Gtk will set the Qt error handler so we have to reset it afterwards + x11ErrorHandler qt_x_errhandler = XSetErrorHandler(0); diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch new file mode 100644 index 000000000..6a87783e3 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch @@ -0,0 +1,19 @@ +diff -up qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp.qt_plugin_path qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp +--- qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp.qt_plugin_path 2013-06-07 00:16:52.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp 2013-06-21 07:14:10.045039936 -0500 +@@ -2511,6 +2511,15 @@ QStringList QCoreApplication::libraryPat + if (!app_libpaths->contains(installPathPlugins)) + app_libpaths->append(installPathPlugins); + } ++ ++ // hack in support for kde4 plugin paths -- Rex ++ QString kde4PathPlugins = QLibraryInfo::location(QLibraryInfo::LibrariesPath) + QLatin1String("/kde4/plugins"); ++ if (QFile::exists(kde4PathPlugins)) { ++ // Make sure we convert from backslashes to slashes. ++ //kde4PathPlugins = QDir(kde4PathPlugins).canonicalPath(); ++ if (!app_libpaths->contains(kde4PathPlugins)) ++ app_libpaths->append(kde4PathPlugins); ++ } + #endif + + // If QCoreApplication is not yet instantiated, diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch new file mode 100644 index 000000000..2deeb51bb --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch @@ -0,0 +1,12 @@ +diff -up qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri.tds_no_strict_aliasing qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri +--- qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri.tds_no_strict_aliasing 2013-06-09 11:57:49.198291245 -0500 ++++ qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri 2013-06-09 12:01:24.120100371 -0500 +@@ -1,6 +1,8 @@ + HEADERS += $$PWD/qsql_tds.h + SOURCES += $$PWD/qsql_tds.cpp + ++*-g++*: QMAKE_CXXFLAGS += -fno-strict-aliasing ++ + unix|win32-g++*: { + LIBS += $$QT_LFLAGS_TDS + !contains(LIBS, .*sybdb.*):LIBS += -lsybdb diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch new file mode 100644 index 000000000..d04d1be5a --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch @@ -0,0 +1,28 @@ +diff -up qt-everywhere-opensource-src-4.8.5/src/tools/moc/moc.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/moc/moc.cpp +diff -up qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp +--- qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp.uic_multilib 2013-05-30 16:18:04.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp 2013-06-09 11:50:25.597813974 -0500 +@@ -152,8 +152,7 @@ void Ui3Reader::embed(const char *projec + for ( it = images.begin(); it != images.end(); ++it ) + out << "** " << *it << "\n"; + out << "**\n"; +- out << "** Created: " << QDateTime::currentDateTime().toString() << "\n"; +- out << "** by: The User Interface Compiler for Qt version " << QT_VERSION_STR << "\n"; ++ out << "** Created: by: The User Interface Compiler for Qt version " << QT_VERSION_STR << "\n"; + out << "**\n"; + out << "** WARNING! All changes made in this file will be lost!\n"; + out << "****************************************************************************/\n"; +diff -up qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp +--- qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp.uic_multilib 2013-05-30 16:18:04.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp 2013-06-09 11:51:28.310174526 -0500 +@@ -146,8 +146,7 @@ void Uic::writeCopyrightHeader(DomUI *ui + out << "/********************************************************************************\n"; + out << "** Form generated from reading UI file '" << QFileInfo(opt.inputFile).fileName() << "'\n"; + out << "**\n"; +- out << "** Created: " << QDateTime::currentDateTime().toString() << "\n"; +- out << "** " << QString::fromLatin1("by: Qt User Interface Compiler version %1\n").arg(QLatin1String(QT_VERSION_STR)); ++ out << "** Created by: " << QString::fromLatin1("Qt User Interface Compiler version %1\n").arg(QLatin1String(QT_VERSION_STR)); + out << "**\n"; + out << "** WARNING! All changes made in this file will be lost when recompiling UI file!\n"; + out << "********************************************************************************/\n\n"; +diff -up qt-everywhere-opensource-src-4.8.5/src/tools/uic/uic.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/uic/uic.cpp diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch new file mode 100644 index 000000000..1ea8af2b0 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch @@ -0,0 +1,16 @@ +diff -up qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri.webkit_debuginfo qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri +--- qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri.webkit_debuginfo 2013-06-07 00:16:55.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri 2013-07-11 14:04:19.937056249 -0500 +@@ -5,6 +5,12 @@ include(features.pri) + + # Uncomment this to enable Texture Mapper. + # CONFIG += texmap ++# ++equals(QT_ARCH, s390)|equals(QT_ARCH, arm)|equals(QT_ARCH, mips)|equals(QT_ARCH, i386)|equals(QT_ARCH, i686)|equals(QT_ARCH, x86_64)|equals(QT_ARCH, powerpc64)|equals(QT_ARCH, powerpc) { ++ message("WebCore workaround for QtWebkit: do not build with -g, but with -g1") ++ QMAKE_CXXFLAGS_RELEASE -= -g ++ QMAKE_CXXFLAGS_RELEASE += -g1 ++} + + QT *= network + diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch new file mode 100644 index 000000000..b6f5525dc --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch @@ -0,0 +1,17 @@ +diff -up qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp.QTBUG-22829 qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp +--- qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp.QTBUG-22829 2015-05-07 09:14:44.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp 2016-12-08 12:32:46.638962448 -0600 +@@ -188,8 +188,12 @@ int runMoc(int _argc, char **_argv) + pp.macros["Q_MOC_RUN"]; + pp.macros["__cplusplus"]; + +- // Workaround a bug while parsing the boost/type_traits/has_operator.hpp header. See QTBUG-22829 ++ // Workaround a bugs while parsing some boost headers. See QTBUG-22829 + pp.macros["BOOST_TT_HAS_OPERATOR_HPP_INCLUDED"]; ++ pp.macros["BOOST_LEXICAL_CAST_INCLUDED"]; ++ pp.macros["BOOST_NEXT_PRIOR_HPP_INCLUDED"]; ++ pp.macros["BOOST_TYPE_TRAITS_HPP"]; ++ pp.macros["_SYS_SYSMACROS_H_OUTER"]; + + QByteArray filename; + QByteArray output; diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-34614.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-34614.patch new file mode 100644 index 000000000..6d3bf2f2c --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-34614.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(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(s); + return (!canWait + || (source->serialNumber != source->lastSerialNumber)); + } +@@ -284,8 +292,14 @@ static gboolean postEventSourceDispatch( + { + GPostEventSource *source = reinterpret_cast(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(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/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch new file mode 100644 index 000000000..6949bbfef --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch @@ -0,0 +1,63 @@ +Author: Jan-Marek Glogowski +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 pollfds; + }; + +@@ -80,6 +81,9 @@ static gboolean socketNotifierSourceChec + GSocketNotifierSource *src = reinterpret_cast(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(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(g_source_new(&socketNotifierSourceFuncs, + sizeof(GSocketNotifierSource))); + (void) new (&socketNotifierSource->pollfds) QList(); ++ 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/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-38585.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-38585.patch new file mode 100644 index 000000000..22643e8d5 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-38585.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/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-s390.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-s390.patch new file mode 100644 index 000000000..5098c0822 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-s390.patch @@ -0,0 +1,31 @@ +diff -up qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h.s390 qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h +--- qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h.s390 2014-03-30 15:36:49.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h 2014-03-31 17:59:16.846465899 -0500 +@@ -189,6 +189,18 @@ + #define WTF_CPU_SPARC 1 + #endif + ++/* CPU(S390X) - S390 64-bit */ ++#if defined(__s390x__) ++#define WTF_CPU_S390X 1 ++#define WTF_CPU_BIG_ENDIAN 1 ++#endif ++ ++/* CPU(S390) - S390 32-bit */ ++#if defined(__s390__) ++#define WTF_CPU_S390 1 ++#define WTF_CPU_BIG_ENDIAN 1 ++#endif ++ + /* CPU(X86) - i386 / x86 32-bit */ + #if defined(__i386__) \ + || defined(i386) \ +@@ -903,7 +915,7 @@ + #endif + + #if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32) && !defined(WTF_USE_JSVALUE32_64) +-#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || CPU(AARCH64) ++#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || CPU(AARCH64) || CPU(S390X) + #define WTF_USE_JSVALUE64 1 + #elif CPU(ARM) || CPU(PPC64) + #define WTF_USE_JSVALUE32 1 diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-system-clucene.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-system-clucene.patch new file mode 100644 index 000000000..63a746290 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-system-clucene.patch @@ -0,0 +1,351 @@ +diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/fulltextsearch.pri qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/fulltextsearch.pri +--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/fulltextsearch.pri 2014-04-10 20:37:12.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/fulltextsearch.pri 2014-10-26 03:33:45.000000000 +0100 +@@ -1,125 +1,7 @@ +-DEFINES += _BUILD_FOR_QT_ LUCENE_DISABLE_MEMTRACKING +-win32:DEFINES += _CRT_SECURE_NO_DEPRECATE _MT +- +-CLUCENEDIR = ../../../../src/3rdparty/clucene/src/CLucene +- +-INCLUDEPATH += . .. \ +- $$CLUCENEDIR \ +- $$CLUCENEDIR/../ \ +- $$CLUCENEDIR/analysis \ +- $$CLUCENEDIR/analysis/standard \ +- $$CLUCENEDIR/config \ +- $$CLUCENEDIR/debug \ +- $$CLUCENEDIR/document \ +- $$CLUCENEDIR/index \ +- $$CLUCENEDIR/queryParser \ +- $$CLUCENEDIR/search \ +- $$CLUCENEDIR/store \ +- $$CLUCENEDIR/util +- +- +-SOURCES += $$CLUCENEDIR/StdHeader.cpp \ +- $$CLUCENEDIR/analysis/AnalysisHeader.cpp \ +- $$CLUCENEDIR/analysis/Analyzers.cpp \ +- $$CLUCENEDIR/config/gunichartables.cpp \ +- $$CLUCENEDIR/config/repl_lltot.cpp \ +- $$CLUCENEDIR/config/repl_tcscasecmp.cpp \ +- $$CLUCENEDIR/config/repl_tcslwr.cpp \ +- $$CLUCENEDIR/config/repl_tcstod.cpp \ +- $$CLUCENEDIR/config/repl_tcstoll.cpp \ +- $$CLUCENEDIR/config/repl_tprintf.cpp \ +- $$CLUCENEDIR/config/threads.cpp \ +- $$CLUCENEDIR/config/utf8.cpp \ +- $$CLUCENEDIR/debug/condition.cpp \ +- $$CLUCENEDIR/debug/error.cpp \ +- $$CLUCENEDIR/debug/memtracking.cpp \ +- $$CLUCENEDIR/document/DateField.cpp \ +- $$CLUCENEDIR/document/Document.cpp \ +- $$CLUCENEDIR/document/Field.cpp \ +- $$CLUCENEDIR/index/CompoundFile.cpp \ +- $$CLUCENEDIR/index/DocumentWriter.cpp \ +- $$CLUCENEDIR/index/FieldInfos.cpp \ +- $$CLUCENEDIR/index/FieldsReader.cpp \ +- $$CLUCENEDIR/index/FieldsWriter.cpp \ +- $$CLUCENEDIR/index/IndexModifier.cpp \ +- $$CLUCENEDIR/index/IndexReader.cpp \ +- $$CLUCENEDIR/index/IndexWriter.cpp \ +- $$CLUCENEDIR/index/MultiReader.cpp \ +- $$CLUCENEDIR/index/SegmentInfos.cpp \ +- $$CLUCENEDIR/index/SegmentMergeInfo.cpp \ +- $$CLUCENEDIR/index/SegmentMergeQueue.cpp \ +- $$CLUCENEDIR/index/SegmentMerger.cpp \ +- $$CLUCENEDIR/index/SegmentReader.cpp \ +- $$CLUCENEDIR/index/SegmentTermDocs.cpp \ +- $$CLUCENEDIR/index/SegmentTermEnum.cpp \ +- $$CLUCENEDIR/index/SegmentTermPositions.cpp \ +- $$CLUCENEDIR/index/SegmentTermVector.cpp \ +- $$CLUCENEDIR/index/Term.cpp \ +- $$CLUCENEDIR/index/TermInfo.cpp \ +- $$CLUCENEDIR/index/TermInfosReader.cpp \ +- $$CLUCENEDIR/index/TermInfosWriter.cpp \ +- $$CLUCENEDIR/index/TermVectorReader.cpp \ +- $$CLUCENEDIR/index/TermVectorWriter.cpp \ +- $$CLUCENEDIR/queryParser/Lexer.cpp \ +- $$CLUCENEDIR/queryParser/MultiFieldQueryParser.cpp \ +- $$CLUCENEDIR/queryParser/QueryParser.cpp \ +- $$CLUCENEDIR/queryParser/QueryParserBase.cpp \ +- $$CLUCENEDIR/queryParser/QueryToken.cpp \ +- $$CLUCENEDIR/queryParser/TokenList.cpp \ +- $$CLUCENEDIR/search/BooleanQuery.cpp \ +- $$CLUCENEDIR/search/BooleanScorer.cpp \ +- $$CLUCENEDIR/search/CachingWrapperFilter.cpp \ +- $$CLUCENEDIR/search/ChainedFilter.cpp \ +- $$CLUCENEDIR/search/ConjunctionScorer.cpp \ +- $$CLUCENEDIR/search/DateFilter.cpp \ +- $$CLUCENEDIR/search/ExactPhraseScorer.cpp \ +- $$CLUCENEDIR/search/Explanation.cpp \ +- $$CLUCENEDIR/search/FieldCache.cpp \ +- $$CLUCENEDIR/search/FieldCacheImpl.cpp \ +- $$CLUCENEDIR/search/FieldDocSortedHitQueue.cpp \ +- $$CLUCENEDIR/search/FieldSortedHitQueue.cpp \ +- $$CLUCENEDIR/search/FilteredTermEnum.cpp \ +- $$CLUCENEDIR/search/FuzzyQuery.cpp \ +- $$CLUCENEDIR/search/HitQueue.cpp \ +- $$CLUCENEDIR/search/Hits.cpp \ +- $$CLUCENEDIR/search/IndexSearcher.cpp \ +- $$CLUCENEDIR/search/MultiSearcher.cpp \ +- $$CLUCENEDIR/search/MultiTermQuery.cpp \ +- $$CLUCENEDIR/search/PhrasePositions.cpp \ +- $$CLUCENEDIR/search/PhraseQuery.cpp \ +- $$CLUCENEDIR/search/PhraseScorer.cpp \ +- $$CLUCENEDIR/search/PrefixQuery.cpp \ +- $$CLUCENEDIR/search/QueryFilter.cpp \ +- $$CLUCENEDIR/search/RangeFilter.cpp \ +- $$CLUCENEDIR/search/RangeQuery.cpp \ +- $$CLUCENEDIR/search/SearchHeader.cpp \ +- $$CLUCENEDIR/search/Similarity.cpp \ +- $$CLUCENEDIR/search/SloppyPhraseScorer.cpp \ +- $$CLUCENEDIR/search/Sort.cpp \ +- $$CLUCENEDIR/search/TermQuery.cpp \ +- $$CLUCENEDIR/search/TermScorer.cpp \ +- $$CLUCENEDIR/search/WildcardQuery.cpp \ +- $$CLUCENEDIR/search/WildcardTermEnum.cpp \ +- $$CLUCENEDIR/store/FSDirectory.cpp \ +- $$CLUCENEDIR/store/IndexInput.cpp \ +- $$CLUCENEDIR/store/IndexOutput.cpp \ +- $$CLUCENEDIR/store/Lock.cpp \ +- $$CLUCENEDIR/store/MMapInput.cpp \ +- $$CLUCENEDIR/store/RAMDirectory.cpp \ +- $$CLUCENEDIR/store/TransactionalRAMDirectory.cpp \ +- $$CLUCENEDIR/util/BitSet.cpp \ +- $$CLUCENEDIR/util/Equators.cpp \ +- $$CLUCENEDIR/util/FastCharStream.cpp \ +- $$CLUCENEDIR/util/fileinputstream.cpp \ +- $$CLUCENEDIR/util/Misc.cpp \ +- $$CLUCENEDIR/util/Reader.cpp \ +- $$CLUCENEDIR/util/StringBuffer.cpp \ +- $$CLUCENEDIR/util/StringIntern.cpp \ +- $$CLUCENEDIR/util/ThreadLocal.cpp \ +- $$CLUCENEDIR/analysis/standard/StandardAnalyzer.cpp \ +- $$CLUCENEDIR/analysis/standard/StandardFilter.cpp \ +- $$CLUCENEDIR/analysis/standard/StandardTokenizer.cpp + ++INCLUDEPATH += /usr/include/clucene09 $$[QT_INSTALL_LIBS]/clucene09 $$[QT_INSTALL_LIBS] ++LIBS += -L$$[QT_INSTALL_LIBS]/clucene09 -lclucene ++#DEFINES += LUCENE_ENABLE_REFCOUNT (must be set at CLucene build time!) + + #Header files + HEADERS += qclucene_global_p.h \ +diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene-config_p.h qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene-config_p.h +--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene-config_p.h 2014-04-10 20:37:12.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene-config_p.h 2014-10-26 02:28:54.000000000 +0100 +@@ -15,6 +15,8 @@ + ** + ****************************************************************************/ + ++#error This header must not be included when building against system CLucene. ++ + #ifndef QCLUCENE_CONFIG_P_H + #define QCLUCENE_CONFIG_P_H + +diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene_global_p.h qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene_global_p.h +--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene_global_p.h 2014-04-10 20:37:12.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene_global_p.h 2014-10-26 02:31:54.000000000 +0100 +@@ -29,20 +29,10 @@ + // We mean it. + // + +-#if !defined(_MSC_VER) +-# include "qclucene-config_p.h" +-#endif +- + #include + #include + +-#if !defined(_MSC_VER) && !defined(__MINGW32__) && defined(_CL_HAVE_WCHAR_H) && defined(_CL_HAVE_WCHAR_T) +-# if !defined(TCHAR) +-# define TCHAR wchar_t +-# endif +-#else +-# include +-#endif ++#include + + QT_BEGIN_HEADER + +@@ -56,52 +46,6 @@ + # define QHELP_EXPORT Q_DECL_IMPORT + #endif + +-// +-// W A R N I N G +-// ------------- +-// +-// adjustments here, need to be done in +-// QTDIR/src/3rdparty/clucene/src/CLucene/StdHeader.h as well +-// +-#if defined(_LUCENE_DONTIMPLEMENT_NS_MACROS) +- +-#elif !defined(DISABLE_NAMESPACE) +-# ifdef QT_NAMESPACE +-# define CL_NS_DEF(sub) namespace QT_NAMESPACE { namespace lucene{ namespace sub{ +-# define CL_NS_DEF2(sub,sub2) namespace QT_NAMESPACE { namespace lucene{ namespace sub{ namespace sub2 { +- +-# define CL_NS_END }}} +-# define CL_NS_END2 }}}} +- +-# define CL_NS_USE(sub) using namespace QT_NAMESPACE::lucene::sub; +-# define CL_NS_USE2(sub,sub2) using namespace QT_NAMESPACE::lucene::sub::sub2; +- +-# define CL_NS(sub) QT_NAMESPACE::lucene::sub +-# define CL_NS2(sub,sub2) QT_NAMESPACE::lucene::sub::sub2 +-# else +-# define CL_NS_DEF(sub) namespace lucene{ namespace sub{ +-# define CL_NS_DEF2(sub,sub2) namespace lucene{ namespace sub{ namespace sub2 { +- +-# define CL_NS_END }} +-# define CL_NS_END2 }}} +- +-# define CL_NS_USE(sub) using namespace lucene::sub; +-# define CL_NS_USE2(sub,sub2) using namespace lucene::sub::sub2; +- +-# define CL_NS(sub) lucene::sub +-# define CL_NS2(sub,sub2) lucene::sub::sub2 +-# endif +-#else +-# define CL_NS_DEF(sub) +-# define CL_NS_DEF2(sub, sub2) +-# define CL_NS_END +-# define CL_NS_END2 +-# define CL_NS_USE(sub) +-# define CL_NS_USE2(sub,sub2) +-# define CL_NS(sub) +-# define CL_NS2(sub,sub2) +-#endif +- + namespace { + TCHAR* QStringToTChar(const QString &str) + { +diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexreader.cpp qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexreader.cpp +--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexreader.cpp 2014-04-10 20:37:12.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexreader.cpp 2014-10-26 02:48:02.000000000 +0100 +@@ -18,6 +18,8 @@ + #include "qindexreader_p.h" + #include "qclucene_global_p.h" + ++#include ++ + #include + #include + +@@ -59,13 +61,13 @@ + { + using namespace lucene::index; + +- return IndexReader::isLuceneFile(filename); ++ return IndexReader::isLuceneFile(filename.toLocal8Bit().constData()); + } + + bool QCLuceneIndexReader::indexExists(const QString &directory) + { + using namespace lucene::index; +- return IndexReader::indexExists(directory); ++ return IndexReader::indexExists(directory.toLocal8Bit().constData()); + } + + QCLuceneIndexReader QCLuceneIndexReader::open(const QString &path) +@@ -73,7 +75,7 @@ + using namespace lucene::index; + + QCLuceneIndexReader indexReader; +- indexReader.d->reader = IndexReader::open(path); ++ indexReader.d->reader = IndexReader::open(path.toLocal8Bit().constData()); + + return indexReader; + } +@@ -81,25 +83,29 @@ + void QCLuceneIndexReader::unlock(const QString &path) + { + using namespace lucene::index; +- IndexReader::unlock(path); ++ IndexReader::unlock(path.toLocal8Bit().constData()); + } + + bool QCLuceneIndexReader::isLocked(const QString &directory) + { ++ // The system CLucene fails here if the directory does not exist yet, unlike ++ // the bundled one. Work around that. ++ QDir::current().mkpath(directory); ++ + using namespace lucene::index; +- return IndexReader::isLocked(directory); ++ return IndexReader::isLocked(directory.toLocal8Bit().constData()); + } + + quint64 QCLuceneIndexReader::lastModified(const QString &directory) + { + using namespace lucene::index; +- return quint64(IndexReader::lastModified(directory)); ++ return quint64(IndexReader::lastModified(directory.toLocal8Bit().constData())); + } + + qint64 QCLuceneIndexReader::getCurrentVersion(const QString &directory) + { + using namespace lucene::index; +- return qint64(IndexReader::getCurrentVersion(directory)); ++ return qint64(IndexReader::getCurrentVersion(directory.toLocal8Bit().constData())); + } + + void QCLuceneIndexReader::close() +@@ -155,7 +161,7 @@ + void QCLuceneIndexReader::setNorm(qint32 doc, const QString &field, qreal value) + { + TCHAR *fieldName = QStringToTChar(field); +- d->reader->setNorm(int32_t(doc), fieldName, qreal(value)); ++ d->reader->setNorm(int32_t(doc), fieldName, (float_t)value); + delete [] fieldName; + } + +diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexwriter.cpp qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexwriter.cpp +--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexwriter.cpp 2014-04-10 20:37:12.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexwriter.cpp 2014-10-26 02:48:27.000000000 +0100 +@@ -18,6 +18,8 @@ + #include "qindexwriter_p.h" + #include "qindexreader_p.h" + ++#include ++ + #include + #include + +@@ -50,7 +52,12 @@ + : d(new QCLuceneIndexWriterPrivate()) + , analyzer(analyzer) + { +- d->writer = new lucene::index::IndexWriter(path, ++ // The system CLucene cannot create directories recursively, so do it here. ++ // Ignore failure: If it failed, we will get an error from CLucene anyway. ++ if (create) ++ QDir::current().mkpath(path); ++ ++ d->writer = new lucene::index::IndexWriter(path.toLocal8Bit().constData(), + analyzer.d->analyzer, create, closeDir); + } + +diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qsearchable.cpp qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qsearchable.cpp +--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qsearchable.cpp 2014-04-10 20:37:12.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qsearchable.cpp 2014-10-26 02:48:44.000000000 +0100 +@@ -95,7 +95,7 @@ + : QCLuceneSearcher() + { + lucene::search::IndexSearcher *searcher = +- new lucene::search::IndexSearcher(path); ++ new lucene::search::IndexSearcher(path.toLocal8Bit().constData()); + + reader.d->reader = searcher->getReader(); + reader.d->deleteCLuceneIndexReader = false; +diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/lib.pro qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/lib.pro +--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/lib.pro 2014-04-10 20:37:12.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/lib.pro 2014-10-26 02:27:55.000000000 +0100 +@@ -43,6 +43,7 @@ + qhelp_global.cpp + + # access to clucene ++INCLUDEPATH += /usr/include/clucene09 $$[QT_INSTALL_LIBS]/clucene09 $$[QT_INSTALL_LIBS] + SOURCES += qhelpsearchindexwriter_clucene.cpp \ + qhelpsearchindexreader_clucene.cpp + HEADERS += qhelpenginecore.h \ diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch new file mode 100644 index 000000000..60749d382 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch @@ -0,0 +1,1456 @@ +diff -up qt-everywhere-opensource-src-4.8.6/examples/desktop/systray/window.cpp.systemtrayicon qt-everywhere-opensource-src-4.8.6/examples/desktop/systray/window.cpp +--- qt-everywhere-opensource-src-4.8.6/examples/desktop/systray/window.cpp.systemtrayicon 2014-03-30 15:36:45.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.6/examples/desktop/systray/window.cpp 2014-03-31 18:16:39.707974934 -0500 +@@ -158,15 +158,23 @@ void Window::createIconGroupBox() + iconComboBox->addItem(QIcon(":/images/bad.svg"), tr("Bad")); + iconComboBox->addItem(QIcon(":/images/heart.svg"), tr("Heart")); + iconComboBox->addItem(QIcon(":/images/trash.svg"), tr("Trash")); ++ iconComboBox->addItem(QIcon::fromTheme("system-file-manager"), tr("File Manager")); + + showIconCheckBox = new QCheckBox(tr("Show icon")); + showIconCheckBox->setChecked(true); + ++#if defined(Q_WS_X11) ++ jitToolTipCheckBox = new QCheckBox(tr("Just In Time Tooltip")); ++#endif ++ + QHBoxLayout *iconLayout = new QHBoxLayout; + iconLayout->addWidget(iconLabel); + iconLayout->addWidget(iconComboBox); + iconLayout->addStretch(); + iconLayout->addWidget(showIconCheckBox); ++#if defined(Q_WS_X11) ++ iconLayout->addWidget(jitToolTipCheckBox); ++#endif + iconGroupBox->setLayout(iconLayout); + } + +@@ -254,5 +262,37 @@ void Window::createTrayIcon() + trayIconMenu->addAction(quitAction); + + trayIcon = new QSystemTrayIcon(this); ++ QByteArray category = qgetenv("SNI_CATEGORY"); ++ if (!category.isEmpty()) { ++ trayIcon->setProperty("_qt_sni_category", QString::fromLocal8Bit(category)); ++ } + trayIcon->setContextMenu(trayIconMenu); ++ ++#if defined(Q_WS_X11) ++ trayIcon->installEventFilter(this); ++#endif ++} ++ ++#if defined(Q_WS_X11) ++bool Window::eventFilter(QObject *, QEvent *event) ++{ ++ switch(event->type()) { ++ case QEvent::ToolTip: ++ if (jitToolTipCheckBox->isChecked()) { ++ QString timeString = QTime::currentTime().toString(); ++ trayIcon->setToolTip(tr("Current Time: %1").arg(timeString)); ++ } ++ break; ++ case QEvent::Wheel: { ++ QWheelEvent *wheelEvent = static_cast(event); ++ int delta = wheelEvent->delta() > 0 ? 1 : -1; ++ int index = (iconComboBox->currentIndex() + delta) % iconComboBox->count(); ++ iconComboBox->setCurrentIndex(index); ++ break; ++ } ++ default: ++ break; ++ } ++ return false; + } ++#endif +diff -up qt-everywhere-opensource-src-4.8.6/examples/desktop/systray/window.h.systemtrayicon qt-everywhere-opensource-src-4.8.6/examples/desktop/systray/window.h +--- qt-everywhere-opensource-src-4.8.6/examples/desktop/systray/window.h.systemtrayicon 2014-03-30 15:36:45.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.6/examples/desktop/systray/window.h 2014-03-31 18:16:39.707974934 -0500 +@@ -69,6 +69,9 @@ public: + + protected: + void closeEvent(QCloseEvent *event); ++#if defined(Q_WS_X11) ++ bool eventFilter(QObject *object, QEvent *event); ++#endif + + private slots: + void setIcon(int index); +@@ -86,6 +89,9 @@ private: + QLabel *iconLabel; + QComboBox *iconComboBox; + QCheckBox *showIconCheckBox; ++#if defined(Q_WS_X11) ++ QCheckBox *jitToolTipCheckBox; ++#endif + + QGroupBox *messageGroupBox; + QLabel *typeLabel; +diff -up qt-everywhere-opensource-src-4.8.6/src/gui/util/qabstractsystemtrayiconsys.cpp.systemtrayicon qt-everywhere-opensource-src-4.8.6/src/gui/util/qabstractsystemtrayiconsys.cpp +--- qt-everywhere-opensource-src-4.8.6/src/gui/util/qabstractsystemtrayiconsys.cpp.systemtrayicon 2014-03-31 18:16:39.707974934 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/gui/util/qabstractsystemtrayiconsys.cpp 2014-03-31 18:16:39.707974934 -0500 +@@ -0,0 +1,65 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ++** All rights reserved. ++** Contact: Nokia Corporation (qt-info@nokia.com) ++** ++** This file is part of the QtGui module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** GNU Lesser General Public License Usage ++** This file may be used under the terms of the GNU Lesser General Public ++** License version 2.1 as published by the Free Software Foundation and ++** appearing in the file LICENSE.LGPL included in the packaging of this ++** file. Please review the following information to ensure the GNU Lesser ++** General Public License version 2.1 requirements will be met: ++** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Nokia gives you certain additional ++** rights. These rights are described in the Nokia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU General ++** Public License version 3.0 as published by the Free Software Foundation ++** and appearing in the file LICENSE.GPL included in the packaging of this ++** file. Please review the following information to ensure the GNU General ++** Public License version 3.0 requirements will be met: ++** http://www.gnu.org/copyleft/gpl.html. ++** ++** Other Usage ++** Alternatively, this file may be used in accordance with the terms and ++** conditions contained in a signed written agreement between you and Nokia. ++** ++** ++** ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++#ifndef QT_NO_SYSTEMTRAYICON ++ ++#include "qabstractsystemtrayiconsys_p.h" ++ ++ ++QSystemTrayIconSysFactoryInterface::QSystemTrayIconSysFactoryInterface() ++{ ++} ++ ++///////////////////////////////////////////////// ++QAbstractSystemTrayIconSys::QAbstractSystemTrayIconSys(QSystemTrayIcon *icon) ++: trayIcon(icon) ++{ ++} ++ ++QAbstractSystemTrayIconSys::~QAbstractSystemTrayIconSys() ++{ ++} ++ ++void QAbstractSystemTrayIconSys::sendActivated(QSystemTrayIcon::ActivationReason reason) ++{ ++ qtsystray_sendActivated(trayIcon, reason); ++} ++ ++#endif +diff -up qt-everywhere-opensource-src-4.8.6/src/gui/util/qabstractsystemtrayiconsys_p.h.systemtrayicon qt-everywhere-opensource-src-4.8.6/src/gui/util/qabstractsystemtrayiconsys_p.h +--- qt-everywhere-opensource-src-4.8.6/src/gui/util/qabstractsystemtrayiconsys_p.h.systemtrayicon 2014-03-31 18:16:39.708974924 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/gui/util/qabstractsystemtrayiconsys_p.h 2014-03-31 18:16:39.708974924 -0500 +@@ -0,0 +1,106 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ++** All rights reserved. ++** Contact: Nokia Corporation (qt-info@nokia.com) ++** ++** This file is part of the QtGui module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** GNU Lesser General Public License Usage ++** This file may be used under the terms of the GNU Lesser General Public ++** License version 2.1 as published by the Free Software Foundation and ++** appearing in the file LICENSE.LGPL included in the packaging of this ++** file. Please review the following information to ensure the GNU Lesser ++** General Public License version 2.1 requirements will be met: ++** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Nokia gives you certain additional ++** rights. These rights are described in the Nokia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU General ++** Public License version 3.0 as published by the Free Software Foundation ++** and appearing in the file LICENSE.GPL included in the packaging of this ++** file. Please review the following information to ensure the GNU General ++** Public License version 3.0 requirements will be met: ++** http://www.gnu.org/copyleft/gpl.html. ++** ++** Other Usage ++** Alternatively, this file may be used in accordance with the terms and ++** conditions contained in a signed written agreement between you and Nokia. ++** ++** ++** ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QABSTRACTSYSTEMTRAYICONSYS_P_H ++#define QABSTRACTSYSTEMTRAYICONSYS_P_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists for the convenience ++// of a number of Qt sources files. This header file may change from ++// version to version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++#ifndef QT_NO_SYSTEMTRAYICON ++ ++#include ++#include ++ ++class QAbstractSystemTrayIconSys; ++ ++class Q_GUI_EXPORT QSystemTrayIconSysFactoryInterface : public QObject, public QFactoryInterface ++{ ++ Q_OBJECT ++public: ++ QSystemTrayIconSysFactoryInterface(); ++ virtual QAbstractSystemTrayIconSys * create(QSystemTrayIcon *) = 0; ++ virtual bool isAvailable() const = 0; ++ ++ // \reimp ++ virtual QStringList keys() const { return QStringList() << QLatin1String("default"); } ++ ++Q_SIGNALS: ++ void availableChanged(bool); ++}; ++ ++#define QSystemTrayIconSysFactoryInterface_iid "com.nokia.qt.QSystemTrayIconSysFactoryInterface" ++Q_DECLARE_INTERFACE(QSystemTrayIconSysFactoryInterface, QSystemTrayIconSysFactoryInterface_iid) ++ ++class QRect; ++ ++class Q_GUI_EXPORT QAbstractSystemTrayIconSys ++{ ++public: ++ QAbstractSystemTrayIconSys(QSystemTrayIcon *icon); ++ virtual ~QAbstractSystemTrayIconSys(); ++ ++ virtual QRect geometry() const = 0; ++ virtual void updateVisibility() = 0; ++ virtual void updateIcon() = 0; ++ virtual void updateToolTip() = 0; ++ virtual void updateMenu() = 0; ++ virtual void showMessage(const QString &title, const QString &message, ++ QSystemTrayIcon::MessageIcon icon, int msecs) = 0; ++ ++ void sendActivated(QSystemTrayIcon::ActivationReason); ++ ++protected: ++ QSystemTrayIcon *trayIcon; ++}; ++ ++#endif // QT_NO_SYSTEMTRAYICON ++ ++#endif // QABSTRACTSYSTEMTRAYICONSYS_P_H ++ +diff -up qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon.cpp.systemtrayicon qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon.cpp +--- qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon.cpp.systemtrayicon 2014-03-30 15:36:49.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon.cpp 2014-03-31 18:16:39.708974924 -0500 +@@ -287,12 +287,6 @@ bool QSystemTrayIcon::isVisible() const + */ + bool QSystemTrayIcon::event(QEvent *e) + { +-#if defined(Q_WS_X11) +- if (e->type() == QEvent::ToolTip) { +- Q_D(QSystemTrayIcon); +- return d->sys->deliverToolTipEvent(e); +- } +-#endif + return QObject::event(e); + } + +diff -up qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon_p.h.systemtrayicon qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon_p.h +--- qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon_p.h.systemtrayicon 2014-03-30 15:36:49.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon_p.h 2014-03-31 18:16:39.708974924 -0500 +@@ -62,10 +62,17 @@ + #include "QtGui/qpixmap.h" + #include "QtCore/qstring.h" + #include "QtCore/qpointer.h" ++#if defined(Q_WS_X11) ++#include "QtCore/qset.h" ++#endif + + QT_BEGIN_NAMESPACE + ++#if defined(Q_WS_X11) ++class QAbstractSystemTrayIconSys; ++#else + class QSystemTrayIconSys; ++#endif + class QToolButton; + class QLabel; + +@@ -75,6 +82,9 @@ class QSystemTrayIconPrivate : public QO + + public: + QSystemTrayIconPrivate() : sys(0), visible(false) { } ++ #if defined(Q_WS_X11) ++ ~QSystemTrayIconPrivate(); ++ #endif + + void install_sys(); + void remove_sys(); +@@ -90,7 +100,11 @@ public: + QPointer menu; + QIcon icon; + QString toolTip; ++ #if defined(Q_WS_X11) ++ QAbstractSystemTrayIconSys *sys; ++ #else + QSystemTrayIconSys *sys; ++ #endif + bool visible; + }; + +@@ -123,60 +137,37 @@ private: + }; + + #if defined(Q_WS_X11) +-QT_BEGIN_INCLUDE_NAMESPACE +-#include +-#include +-#include +-#include +-QT_END_INCLUDE_NAMESPACE ++class QSystemTrayIconSysFactoryInterface; + +-class QSystemTrayIconSys : public QWidget ++/** ++ * This class acts as a composite QSystemTrayIconSysFactory: It can create ++ * instances of QAbstractSystemTrayIconSys* using either a plugin or the ++ * builtin factory and will cause QSystemTrayIconPrivate to recreate their ++ * 'sys' instances if the plugin availability changes. ++ */ ++class QSystemTrayIconSysFactory : public QObject + { +- friend class QSystemTrayIconPrivate; +- ++ Q_OBJECT + public: +- QSystemTrayIconSys(QSystemTrayIcon *q); +- ~QSystemTrayIconSys(); +- enum { +- SYSTEM_TRAY_REQUEST_DOCK = 0, +- SYSTEM_TRAY_BEGIN_MESSAGE = 1, +- SYSTEM_TRAY_CANCEL_MESSAGE =2 +- }; +- +- void addToTray(); +- void updateIcon(); +- XVisualInfo* getSysTrayVisualInfo(); +- +- // QObject::event is public but QWidget's ::event() re-implementation +- // is protected ;( +- inline bool deliverToolTipEvent(QEvent *e) +- { return QWidget::event(e); } +- +- static Window sysTrayWindow; +- static QList trayIcons; +- static QCoreApplication::EventFilter oldEventFilter; +- static bool sysTrayTracker(void *message, long *result); +- static Window locateSystemTray(); +- static Atom sysTraySelection; +- static XVisualInfo sysTrayVisual; ++ QSystemTrayIconSysFactory(); ++ void registerSystemTrayIconPrivate(QSystemTrayIconPrivate *iconPrivate); ++ void unregisterSystemTrayIconPrivate(QSystemTrayIconPrivate *iconPrivate); + +-protected: +- void paintEvent(QPaintEvent *pe); +- void resizeEvent(QResizeEvent *re); +- bool x11Event(XEvent *event); +- void mousePressEvent(QMouseEvent *event); +- void mouseDoubleClickEvent(QMouseEvent *event); +-#ifndef QT_NO_WHEELEVENT +- void wheelEvent(QWheelEvent *event); +-#endif +- bool event(QEvent *e); ++ QAbstractSystemTrayIconSys *create(QSystemTrayIcon *) const; ++ ++ bool isAvailable() const; ++ ++private Q_SLOTS: ++ void refreshTrayIconPrivates(); + + private: +- QPixmap background; +- QSystemTrayIcon *q; +- Colormap colormap; ++ QSystemTrayIconSysFactoryInterface *factory() const; ++ void loadPluginFactory(); ++ ++ QSystemTrayIconSysFactoryInterface *pluginFactory; ++ QSet trayIconPrivates; + }; +-#endif // Q_WS_X11 ++#endif + + QT_END_NAMESPACE + +diff -up qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon_x11.cpp.systemtrayicon qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon_x11.cpp +--- qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon_x11.cpp.systemtrayicon 2014-03-30 15:36:49.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/gui/util/qsystemtrayicon_x11.cpp 2014-03-31 18:16:39.709974914 -0500 +@@ -38,311 +38,122 @@ + ** $QT_END_LICENSE$ + ** + ****************************************************************************/ ++#ifndef QT_NO_SYSTEMTRAYICON ++ ++#include + +-#include "private/qt_x11_p.h" +-#include "qlabel.h" +-#include "qx11info_x11.h" +-#include "qpainter.h" +-#include "qpixmap.h" +-#include "qbitmap.h" +-#include "qevent.h" +-#include "qapplication.h" +-#include "qlist.h" +-#include "qmenu.h" +-#include "qtimer.h" + #include "qsystemtrayicon_p.h" +-#include "qpaintengine.h" ++#include "qabstractsystemtrayiconsys_p.h" ++#include "qcoreapplication.h" ++#include "qxembedsystemtrayicon_x11_p.h" + +-#ifndef QT_NO_SYSTEMTRAYICON + QT_BEGIN_NAMESPACE + +-Window QSystemTrayIconSys::sysTrayWindow = XNone; +-QList QSystemTrayIconSys::trayIcons; +-QCoreApplication::EventFilter QSystemTrayIconSys::oldEventFilter = 0; +-Atom QSystemTrayIconSys::sysTraySelection = XNone; +-XVisualInfo QSystemTrayIconSys::sysTrayVisual = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +- +-// Locate the system tray +-Window QSystemTrayIconSys::locateSystemTray() +-{ +- Display *display = QX11Info::display(); +- if (sysTraySelection == XNone) { +- int screen = QX11Info::appScreen(); +- QString net_sys_tray = QString::fromLatin1("_NET_SYSTEM_TRAY_S%1").arg(screen); +- sysTraySelection = XInternAtom(display, net_sys_tray.toLatin1(), False); +- } +- +- return XGetSelectionOwner(QX11Info::display(), sysTraySelection); +-} ++Q_GLOBAL_STATIC(QSystemTrayIconSysFactory, qt_guiSystemTrayIconSysFactory) + +-XVisualInfo* QSystemTrayIconSys::getSysTrayVisualInfo() ++QSystemTrayIconSysFactory::QSystemTrayIconSysFactory() ++: pluginFactory(0) + { +- Display *display = QX11Info::display(); +- +- if (!sysTrayVisual.visual) { +- Window win = locateSystemTray(); +- if (win != XNone) { +- Atom actual_type; +- int actual_format; +- ulong nitems, bytes_remaining; +- uchar *data = 0; +- int result = XGetWindowProperty(display, win, ATOM(_NET_SYSTEM_TRAY_VISUAL), 0, 1, +- False, XA_VISUALID, &actual_type, +- &actual_format, &nitems, &bytes_remaining, &data); +- VisualID vid = 0; +- if (result == Success && data && actual_type == XA_VISUALID && actual_format == 32 && +- nitems == 1 && bytes_remaining == 0) +- vid = *(VisualID*)data; +- if (data) +- XFree(data); +- if (vid == 0) +- return 0; +- +- uint mask = VisualIDMask; +- XVisualInfo *vi, rvi; +- int count; +- rvi.visualid = vid; +- vi = XGetVisualInfo(display, mask, &rvi, &count); +- if (vi) { +- sysTrayVisual = vi[0]; +- XFree((char*)vi); +- } +- if (sysTrayVisual.depth != 32) +- memset(&sysTrayVisual, 0, sizeof(sysTrayVisual)); +- } +- } +- +- return sysTrayVisual.visual ? &sysTrayVisual : 0; + } + +-bool QSystemTrayIconSys::sysTrayTracker(void *message, long *result) ++void QSystemTrayIconSysFactory::loadPluginFactory() + { +- bool retval = false; +- if (QSystemTrayIconSys::oldEventFilter) +- retval = QSystemTrayIconSys::oldEventFilter(message, result); +- +- if (trayIcons.isEmpty()) +- return retval; +- +- Display *display = QX11Info::display(); +- XEvent *ev = (XEvent *)message; +- if (ev->type == DestroyNotify && ev->xany.window == sysTrayWindow) { +- sysTrayWindow = locateSystemTray(); +- memset(&sysTrayVisual, 0, sizeof(sysTrayVisual)); +- for (int i = 0; i < trayIcons.count(); i++) { +- if (sysTrayWindow == XNone) { +- QBalloonTip::hideBalloon(); +- trayIcons[i]->hide(); // still no luck +- trayIcons[i]->destroy(); +- trayIcons[i]->create(); +- } else +- trayIcons[i]->addToTray(); // add it to the new tray +- } +- retval = true; +- } else if (ev->type == ClientMessage && sysTrayWindow == XNone) { +- static Atom manager_atom = XInternAtom(display, "MANAGER", False); +- XClientMessageEvent *cm = (XClientMessageEvent *)message; +- if ((cm->message_type == manager_atom) && ((Atom)cm->data.l[1] == sysTraySelection)) { +- sysTrayWindow = cm->data.l[2]; +- memset(&sysTrayVisual, 0, sizeof(sysTrayVisual)); +- XSelectInput(display, sysTrayWindow, StructureNotifyMask); +- for (int i = 0; i < trayIcons.count(); i++) { +- trayIcons[i]->addToTray(); +- } +- retval = true; +- } +- } else if (ev->type == PropertyNotify && ev->xproperty.atom == ATOM(_NET_SYSTEM_TRAY_VISUAL) && +- ev->xproperty.window == sysTrayWindow) { +- memset(&sysTrayVisual, 0, sizeof(sysTrayVisual)); +- for (int i = 0; i < trayIcons.count(); i++) { +- trayIcons[i]->addToTray(); +- } +- } +- +- return retval; +-} +- +-QSystemTrayIconSys::QSystemTrayIconSys(QSystemTrayIcon *q) +- : QWidget(0, Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint), +- q(q), colormap(0) +-{ +- setAttribute(Qt::WA_AlwaysShowToolTips); +- setAttribute(Qt::WA_QuitOnClose, false); +- setAttribute(Qt::WA_NoSystemBackground, true); +- setAttribute(Qt::WA_PaintOnScreen); +- +- static bool eventFilterAdded = false; +- Display *display = QX11Info::display(); +- if (!eventFilterAdded) { +- oldEventFilter = qApp->setEventFilter(sysTrayTracker); +- eventFilterAdded = true; +- Window root = QX11Info::appRootWindow(); +- XWindowAttributes attr; +- XGetWindowAttributes(display, root, &attr); +- if ((attr.your_event_mask & StructureNotifyMask) != StructureNotifyMask) { +- (void) QApplication::desktop(); // lame trick to ensure our event mask is not overridden +- XSelectInput(display, root, attr.your_event_mask | StructureNotifyMask); // for MANAGER selection +- } ++ if (pluginFactory) { ++ return; + } +- if (trayIcons.isEmpty()) { +- sysTrayWindow = locateSystemTray(); +- if (sysTrayWindow != XNone) +- XSelectInput(display, sysTrayWindow, StructureNotifyMask); // track tray events ++#ifndef QT_NO_LIBRARY ++ QFactoryLoader loader(QSystemTrayIconSysFactoryInterface_iid, QLatin1String("/systemtrayicon")); ++ pluginFactory = qobject_cast(loader.instance(QLatin1String("default"))); ++ if (pluginFactory) { ++ // Set parent to ensure factory destructor is called when application ++ // is closed ++ pluginFactory->setParent(QCoreApplication::instance()); ++ connect(pluginFactory, SIGNAL(availableChanged(bool)), SLOT(refreshTrayIconPrivates())); + } +- trayIcons.append(this); +- setMouseTracking(true); +-#ifndef QT_NO_TOOLTIP +- setToolTip(q->toolTip()); +-#endif +- if (sysTrayWindow != XNone) +- addToTray(); ++#endif // QT_NO_LIBRARY + } + +-QSystemTrayIconSys::~QSystemTrayIconSys() ++QSystemTrayIconSysFactoryInterface *QSystemTrayIconSysFactory::factory() const + { +- trayIcons.removeAt(trayIcons.indexOf(this)); +- Display *display = QX11Info::display(); +- if (trayIcons.isEmpty()) { +- if (sysTrayWindow == XNone) +- return; +- if (display) +- XSelectInput(display, sysTrayWindow, 0); // stop tracking the tray +- sysTrayWindow = XNone; ++ if (!pluginFactory) { ++ const_cast(this)->loadPluginFactory(); + } +- if (colormap) +- XFreeColormap(display, colormap); ++ if (pluginFactory && pluginFactory->isAvailable()) { ++ return pluginFactory; ++ } ++ static QXEmbedSystemTrayIconSysFactory def; ++ return def.isAvailable() ? &def : 0; + } + +-void QSystemTrayIconSys::addToTray() ++void QSystemTrayIconSysFactory::refreshTrayIconPrivates() + { +- Q_ASSERT(sysTrayWindow != XNone); +- Display *display = QX11Info::display(); +- +- XVisualInfo *vi = getSysTrayVisualInfo(); +- if (vi && vi->visual) { +- Window root = RootWindow(display, vi->screen); +- Window p = root; +- if (QWidget *pw = parentWidget()) +- p = pw->effectiveWinId(); +- colormap = XCreateColormap(display, root, vi->visual, AllocNone); +- XSetWindowAttributes wsa; +- wsa.background_pixmap = 0; +- wsa.colormap = colormap; +- wsa.background_pixel = 0; +- wsa.border_pixel = 0; +- Window wid = XCreateWindow(display, p, -1, -1, 1, 1, +- 0, vi->depth, InputOutput, vi->visual, +- CWBackPixmap|CWBackPixel|CWBorderPixel|CWColormap, &wsa); +- create(wid); +- } else { +- XSetWindowBackgroundPixmap(display, winId(), ParentRelative); +- } +- +- // GNOME, NET WM Specification +- static Atom netwm_tray_atom = XInternAtom(display, "_NET_SYSTEM_TRAY_OPCODE", False); +- long l[5] = { CurrentTime, SYSTEM_TRAY_REQUEST_DOCK, static_cast(winId()), 0, 0 }; +- XEvent ev; +- memset(&ev, 0, sizeof(ev)); +- ev.xclient.type = ClientMessage; +- ev.xclient.window = sysTrayWindow; +- ev.xclient.message_type = netwm_tray_atom; +- ev.xclient.format = 32; +- memcpy((char *)&ev.xclient.data, (const char *) l, sizeof(l)); +- XSendEvent(display, sysTrayWindow, False, 0, &ev); +- setMinimumSize(22, 22); // required at least on GNOME +-} +- +-void QSystemTrayIconSys::updateIcon() +-{ +- update(); +-} +- +-void QSystemTrayIconSys::resizeEvent(QResizeEvent *re) +-{ +- QWidget::resizeEvent(re); +- updateIcon(); +-} +- +-void QSystemTrayIconSys::paintEvent(QPaintEvent*) +-{ +- QPainter p(this); +- if (!getSysTrayVisualInfo()) { +- const QRegion oldSystemClip = p.paintEngine()->systemClip(); +- const QRect clearedRect = oldSystemClip.boundingRect(); +- XClearArea(QX11Info::display(), winId(), clearedRect.x(), clearedRect.y(), +- clearedRect.width(), clearedRect.height(), False); +- QPaintEngine *pe = p.paintEngine(); +- pe->setSystemClip(clearedRect); +- q->icon().paint(&p, rect()); +- pe->setSystemClip(oldSystemClip); +- } else { +- p.setCompositionMode(QPainter::CompositionMode_Source); +- p.fillRect(rect(), Qt::transparent); +- p.setCompositionMode(QPainter::CompositionMode_SourceOver); +- q->icon().paint(&p, rect()); ++ Q_FOREACH(QSystemTrayIconPrivate *trayIconPrivate, trayIconPrivates) { ++ if (trayIconPrivate->sys) { ++ delete trayIconPrivate->sys; ++ trayIconPrivate->sys = 0; ++ } ++ // When visible is true, sys is usually not 0 but it can be 0 if the ++ // call to install_sys() failed. ++ if (trayIconPrivate->visible) { ++ trayIconPrivate->install_sys(); ++ } + } + } + +-void QSystemTrayIconSys::mousePressEvent(QMouseEvent *ev) ++void QSystemTrayIconSysFactory::registerSystemTrayIconPrivate(QSystemTrayIconPrivate* trayIconPrivate) + { +- QPoint globalPos = ev->globalPos(); +- if (ev->button() == Qt::RightButton && q->contextMenu()) +- q->contextMenu()->popup(globalPos); +- +- if (QBalloonTip::isBalloonVisible()) { +- emit q->messageClicked(); +- QBalloonTip::hideBalloon(); +- } +- +- if (ev->button() == Qt::LeftButton) +- emit q->activated(QSystemTrayIcon::Trigger); +- else if (ev->button() == Qt::RightButton) +- emit q->activated(QSystemTrayIcon::Context); +- else if (ev->button() == Qt::MidButton) +- emit q->activated(QSystemTrayIcon::MiddleClick); ++ trayIconPrivates.insert(trayIconPrivate); + } + +-void QSystemTrayIconSys::mouseDoubleClickEvent(QMouseEvent *ev) ++void QSystemTrayIconSysFactory::unregisterSystemTrayIconPrivate(QSystemTrayIconPrivate* trayIconPrivate) + { +- if (ev->button() == Qt::LeftButton) +- emit q->activated(QSystemTrayIcon::DoubleClick); ++ trayIconPrivates.remove(trayIconPrivate); + } + +-#ifndef QT_NO_WHEELEVENT +-void QSystemTrayIconSys::wheelEvent(QWheelEvent *e) ++QAbstractSystemTrayIconSys *QSystemTrayIconSysFactory::create(QSystemTrayIcon *trayIcon) const + { +- QApplication::sendEvent(q, e); ++ QSystemTrayIconSysFactoryInterface *f = factory(); ++ if (!f) { ++ qWarning("No systemtrayicon available"); ++ return 0; ++ } ++ return f->create(trayIcon); + } +-#endif + +-bool QSystemTrayIconSys::event(QEvent *e) ++bool QSystemTrayIconSysFactory::isAvailable() const + { +- if (e->type() == QEvent::ToolTip) { +- return QApplication::sendEvent(q, e); +- } +- return QWidget::event(e); ++ return factory(); + } + +-bool QSystemTrayIconSys::x11Event(XEvent *event) ++//////////////////////////////////////////////// ++QSystemTrayIconPrivate::~QSystemTrayIconPrivate() + { +- if (event->type == ReparentNotify) +- show(); +- return QWidget::x11Event(event); ++ qt_guiSystemTrayIconSysFactory()->unregisterSystemTrayIconPrivate(this); ++ delete sys; + } + +-//////////////////////////////////////////////////////////////////////////// + void QSystemTrayIconPrivate::install_sys() + { + Q_Q(QSystemTrayIcon); +- if (!sys) +- sys = new QSystemTrayIconSys(q); ++ if (!sys) { ++ // Register ourself even if create() fails: our "sys" will get created ++ // later by refreshTrayIconPrivates() if a systemtray becomes ++ // available. This situation can happen for applications which are ++ // started at login time, while the desktop itself is starting up. ++ qt_guiSystemTrayIconSysFactory()->registerSystemTrayIconPrivate(this); ++ sys = qt_guiSystemTrayIconSysFactory()->create(q); ++ if (!sys) { ++ return; ++ } ++ } ++ sys->updateVisibility(); + } + + QRect QSystemTrayIconPrivate::geometry_sys() const + { +- if (!sys) +- return QRect(); +- return QRect(sys->mapToGlobal(QPoint(0, 0)), sys->size()); ++ if (!sys || !visible) ++ return QRect(); ++ return sys->geometry(); + } + + void QSystemTrayIconPrivate::remove_sys() +@@ -350,35 +161,35 @@ void QSystemTrayIconPrivate::remove_sys( + if (!sys) + return; + QBalloonTip::hideBalloon(); +- sys->hide(); // this should do the trick, but... +- delete sys; // wm may resize system tray only for DestroyEvents +- sys = 0; ++ sys->updateVisibility(); + } + + void QSystemTrayIconPrivate::updateIcon_sys() + { +- if (!sys) ++ if (!sys || !visible) + return; + sys->updateIcon(); + } + + void QSystemTrayIconPrivate::updateMenu_sys() + { +- ++ if (!sys || !visible) ++ return; ++ sys->updateMenu(); + } + + void QSystemTrayIconPrivate::updateToolTip_sys() + { +- if (!sys) ++ if (!sys || !visible) + return; + #ifndef QT_NO_TOOLTIP +- sys->setToolTip(toolTip); ++ sys->updateToolTip(); + #endif + } + + bool QSystemTrayIconPrivate::isSystemTrayAvailable_sys() + { +- return QSystemTrayIconSys::locateSystemTray() != XNone; ++ return qt_guiSystemTrayIconSysFactory()->isAvailable(); + } + + bool QSystemTrayIconPrivate::supportsMessages_sys() +@@ -389,12 +200,9 @@ bool QSystemTrayIconPrivate::supportsMes + void QSystemTrayIconPrivate::showMessage_sys(const QString &message, const QString &title, + QSystemTrayIcon::MessageIcon icon, int msecs) + { +- if (!sys) ++ if (!sys || !visible) + return; +- QPoint g = sys->mapToGlobal(QPoint(0, 0)); +- QBalloonTip::showBalloon(icon, message, title, sys->q, +- QPoint(g.x() + sys->width()/2, g.y() + sys->height()/2), +- msecs); ++ sys->showMessage(message, title, icon, msecs); + } + + QT_END_NAMESPACE +diff -up qt-everywhere-opensource-src-4.8.6/src/gui/util/qxembedsystemtrayicon_x11.cpp.systemtrayicon qt-everywhere-opensource-src-4.8.6/src/gui/util/qxembedsystemtrayicon_x11.cpp +--- qt-everywhere-opensource-src-4.8.6/src/gui/util/qxembedsystemtrayicon_x11.cpp.systemtrayicon 2014-03-31 18:16:39.709974914 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/gui/util/qxembedsystemtrayicon_x11.cpp 2014-03-31 18:16:39.709974914 -0500 +@@ -0,0 +1,469 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ++** All rights reserved. ++** Contact: Nokia Corporation (qt-info@nokia.com) ++** ++** This file is part of the QtGui module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** GNU Lesser General Public License Usage ++** This file may be used under the terms of the GNU Lesser General Public ++** License version 2.1 as published by the Free Software Foundation and ++** appearing in the file LICENSE.LGPL included in the packaging of this ++** file. Please review the following information to ensure the GNU Lesser ++** General Public License version 2.1 requirements will be met: ++** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Nokia gives you certain additional ++** rights. These rights are described in the Nokia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU General ++** Public License version 3.0 as published by the Free Software Foundation ++** and appearing in the file LICENSE.GPL included in the packaging of this ++** file. Please review the following information to ensure the GNU General ++** Public License version 3.0 requirements will be met: ++** http://www.gnu.org/copyleft/gpl.html. ++** ++** Other Usage ++** Alternatively, this file may be used in accordance with the terms and ++** conditions contained in a signed written agreement between you and Nokia. ++** ++** ++** ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++#include "qxembedsystemtrayicon_x11_p.h" ++ ++#ifndef QT_NO_SYSTEMTRAYICON ++ ++#include "private/qt_x11_p.h" ++#include "qapplication.h" ++#include "qevent.h" ++#include "qlist.h" ++#include "qmenu.h" ++#include "qpainter.h" ++#include "qpaintengine.h" ++#include "qsystemtrayicon_p.h" ++#include "qx11info_x11.h" ++ ++QT_BEGIN_INCLUDE_NAMESPACE ++#include ++#include ++#include ++#include ++QT_END_INCLUDE_NAMESPACE ++ ++QT_BEGIN_NAMESPACE ++ ++class QSystemTrayIconWidget : public QWidget ++{ ++public: ++ QSystemTrayIconWidget(QSystemTrayIcon *q, QXEmbedSystemTrayIconSys *s); ++ ~QSystemTrayIconWidget(); ++ ++ static Window locateSystemTray(); ++ ++protected: ++ void paintEvent(QPaintEvent *pe); ++ void resizeEvent(QResizeEvent *re); ++ bool x11Event(XEvent *event); ++ void mousePressEvent(QMouseEvent *event); ++ void mouseDoubleClickEvent(QMouseEvent *event); ++#ifndef QT_NO_WHEELEVENT ++ void wheelEvent(QWheelEvent *event); ++#endif ++ bool event(QEvent *e); ++ ++private: ++ enum { ++ SYSTEM_TRAY_REQUEST_DOCK = 0, ++ SYSTEM_TRAY_BEGIN_MESSAGE = 1, ++ SYSTEM_TRAY_CANCEL_MESSAGE =2 ++ }; ++ ++ void addToTray(); ++ static XVisualInfo* getSysTrayVisualInfo(); ++ ++ static Window sysTrayWindow; ++ static QList trayIcons; ++ static QCoreApplication::EventFilter oldEventFilter; ++ static bool sysTrayTracker(void *message, long *result); ++ static Atom sysTraySelection; ++ static XVisualInfo sysTrayVisual; ++ ++ QSystemTrayIcon *q; ++ QXEmbedSystemTrayIconSys *sys; ++ Colormap colormap; ++}; ++ ++Window QSystemTrayIconWidget::sysTrayWindow = XNone; ++QList QSystemTrayIconWidget::trayIcons; ++QCoreApplication::EventFilter QSystemTrayIconWidget::oldEventFilter = 0; ++Atom QSystemTrayIconWidget::sysTraySelection = XNone; ++XVisualInfo QSystemTrayIconWidget::sysTrayVisual = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; ++ ++QSystemTrayIconWidget::QSystemTrayIconWidget(QSystemTrayIcon* q, QXEmbedSystemTrayIconSys* sys) ++: QWidget(0, Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint) ++, q(q) ++, sys(sys) ++, colormap(0) ++{ ++ setAttribute(Qt::WA_AlwaysShowToolTips); ++ setAttribute(Qt::WA_QuitOnClose, false); ++ setAttribute(Qt::WA_NoSystemBackground, true); ++ setAttribute(Qt::WA_PaintOnScreen); ++ setMouseTracking(true); ++#ifndef QT_NO_TOOLTIP ++ setToolTip(q->toolTip()); ++#endif ++ ++ static bool eventFilterAdded = false; ++ Display *display = QX11Info::display(); ++ if (!eventFilterAdded) { ++ oldEventFilter = qApp->setEventFilter(sysTrayTracker); ++ eventFilterAdded = true; ++ Window root = QX11Info::appRootWindow(); ++ XWindowAttributes attr; ++ XGetWindowAttributes(display, root, &attr); ++ if ((attr.your_event_mask & StructureNotifyMask) != StructureNotifyMask) { ++ (void) QApplication::desktop(); // lame trick to ensure our event mask is not overridden ++ XSelectInput(display, root, attr.your_event_mask | StructureNotifyMask); // for MANAGER selection ++ } ++ } ++ if (trayIcons.isEmpty()) { ++ sysTrayWindow = locateSystemTray(); ++ if (sysTrayWindow != XNone) ++ XSelectInput(display, sysTrayWindow, StructureNotifyMask); // track tray events ++ } ++ trayIcons.append(this); ++ if (sysTrayWindow != XNone) ++ addToTray(); ++} ++ ++QSystemTrayIconWidget::~QSystemTrayIconWidget() ++{ ++ trayIcons.removeAt(trayIcons.indexOf(this)); ++ Display *display = QX11Info::display(); ++ if (trayIcons.isEmpty()) { ++ if (sysTrayWindow == XNone) ++ return; ++ if (display) ++ XSelectInput(display, sysTrayWindow, 0); // stop tracking the tray ++ sysTrayWindow = XNone; ++ } ++ if (colormap) ++ XFreeColormap(display, colormap); ++} ++ ++void QSystemTrayIconWidget::resizeEvent(QResizeEvent *re) ++{ ++ QWidget::resizeEvent(re); ++ update(); ++} ++ ++void QSystemTrayIconWidget::paintEvent(QPaintEvent*) ++{ ++ QPainter p(this); ++ if (!getSysTrayVisualInfo()) { ++ const QRegion oldSystemClip = p.paintEngine()->systemClip(); ++ const QRect clearedRect = oldSystemClip.boundingRect(); ++ XClearArea(QX11Info::display(), winId(), clearedRect.x(), clearedRect.y(), ++ clearedRect.width(), clearedRect.height(), False); ++ QPaintEngine *pe = p.paintEngine(); ++ pe->setSystemClip(clearedRect); ++ q->icon().paint(&p, rect()); ++ pe->setSystemClip(oldSystemClip); ++ } else { ++ p.setCompositionMode(QPainter::CompositionMode_Source); ++ p.fillRect(rect(), Qt::transparent); ++ p.setCompositionMode(QPainter::CompositionMode_SourceOver); ++ q->icon().paint(&p, rect()); ++ } ++} ++ ++void QSystemTrayIconWidget::mousePressEvent(QMouseEvent *ev) ++{ ++ QPoint globalPos = ev->globalPos(); ++ if (ev->button() == Qt::RightButton && q->contextMenu()) ++ q->contextMenu()->popup(globalPos); ++ ++ if (QBalloonTip::isBalloonVisible()) { ++ QMetaObject::invokeMethod(q, "messageClicked"); ++ QBalloonTip::hideBalloon(); ++ } ++ ++ if (ev->button() == Qt::LeftButton) ++ qtsystray_sendActivated(q, QSystemTrayIcon::Trigger); ++ else if (ev->button() == Qt::RightButton) ++ qtsystray_sendActivated(q, QSystemTrayIcon::Context); ++ else if (ev->button() == Qt::MidButton) ++ qtsystray_sendActivated(q, QSystemTrayIcon::MiddleClick); ++} ++ ++void QSystemTrayIconWidget::mouseDoubleClickEvent(QMouseEvent *ev) ++{ ++ if (ev->button() == Qt::LeftButton) ++ qtsystray_sendActivated(q, QSystemTrayIcon::DoubleClick); ++} ++ ++#ifndef QT_NO_WHEELEVENT ++void QSystemTrayIconWidget::wheelEvent(QWheelEvent *e) ++{ ++ sys->sendWheelEventToTrayIcon(e->delta(), e->orientation()); ++} ++#endif ++ ++bool QSystemTrayIconWidget::event(QEvent *e) ++{ ++ if (e->type() == QEvent::ToolTip) { ++ sys->sendToolTipEventToTrayIcon(); ++ } ++ return QWidget::event(e); ++} ++ ++bool QSystemTrayIconWidget::x11Event(XEvent *event) ++{ ++ if (event->type == ReparentNotify) ++ show(); ++ return QWidget::x11Event(event); ++} ++ ++// Locate the system tray ++Window QSystemTrayIconWidget::locateSystemTray() ++{ ++ Display *display = QX11Info::display(); ++ if (sysTraySelection == XNone) { ++ int screen = QX11Info::appScreen(); ++ QString net_sys_tray = QString::fromLatin1("_NET_SYSTEM_TRAY_S%1").arg(screen); ++ sysTraySelection = XInternAtom(display, net_sys_tray.toLatin1(), False); ++ } ++ ++ return XGetSelectionOwner(QX11Info::display(), sysTraySelection); ++} ++ ++XVisualInfo* QSystemTrayIconWidget::getSysTrayVisualInfo() ++{ ++ Display *display = QX11Info::display(); ++ ++ if (!sysTrayVisual.visual) { ++ Window win = locateSystemTray(); ++ if (win != XNone) { ++ Atom actual_type; ++ int actual_format; ++ ulong nitems, bytes_remaining; ++ uchar *data = 0; ++ int result = XGetWindowProperty(display, win, ATOM(_NET_SYSTEM_TRAY_VISUAL), 0, 1, ++ False, XA_VISUALID, &actual_type, ++ &actual_format, &nitems, &bytes_remaining, &data); ++ VisualID vid = 0; ++ if (result == Success && data && actual_type == XA_VISUALID && actual_format == 32 && ++ nitems == 1 && bytes_remaining == 0) ++ vid = *(VisualID*)data; ++ if (data) ++ XFree(data); ++ if (vid == 0) ++ return 0; ++ ++ uint mask = VisualIDMask; ++ XVisualInfo *vi, rvi; ++ int count; ++ rvi.visualid = vid; ++ vi = XGetVisualInfo(display, mask, &rvi, &count); ++ if (vi) { ++ sysTrayVisual = vi[0]; ++ XFree((char*)vi); ++ } ++ if (sysTrayVisual.depth != 32) ++ memset(&sysTrayVisual, 0, sizeof(sysTrayVisual)); ++ } ++ } ++ ++ return sysTrayVisual.visual ? &sysTrayVisual : 0; ++} ++ ++bool QSystemTrayIconWidget::sysTrayTracker(void *message, long *result) ++{ ++ bool retval = false; ++ if (QSystemTrayIconWidget::oldEventFilter) ++ retval = QSystemTrayIconWidget::oldEventFilter(message, result); ++ ++ if (trayIcons.isEmpty()) ++ return retval; ++ ++ Display *display = QX11Info::display(); ++ XEvent *ev = (XEvent *)message; ++ if (ev->type == DestroyNotify && ev->xany.window == sysTrayWindow) { ++ sysTrayWindow = locateSystemTray(); ++ memset(&sysTrayVisual, 0, sizeof(sysTrayVisual)); ++ for (int i = 0; i < trayIcons.count(); i++) { ++ if (sysTrayWindow == XNone) { ++ QBalloonTip::hideBalloon(); ++ trayIcons[i]->hide(); // still no luck ++ trayIcons[i]->destroy(); ++ trayIcons[i]->create(); ++ } else ++ trayIcons[i]->addToTray(); // add it to the new tray ++ } ++ retval = true; ++ } else if (ev->type == ClientMessage && sysTrayWindow == XNone) { ++ static Atom manager_atom = XInternAtom(display, "MANAGER", False); ++ XClientMessageEvent *cm = (XClientMessageEvent *)message; ++ if ((cm->message_type == manager_atom) && ((Atom)cm->data.l[1] == sysTraySelection)) { ++ sysTrayWindow = cm->data.l[2]; ++ memset(&sysTrayVisual, 0, sizeof(sysTrayVisual)); ++ XSelectInput(display, sysTrayWindow, StructureNotifyMask); ++ for (int i = 0; i < trayIcons.count(); i++) { ++ trayIcons[i]->addToTray(); ++ } ++ retval = true; ++ } ++ } else if (ev->type == PropertyNotify && ev->xproperty.atom == ATOM(_NET_SYSTEM_TRAY_VISUAL) && ++ ev->xproperty.window == sysTrayWindow) { ++ memset(&sysTrayVisual, 0, sizeof(sysTrayVisual)); ++ for (int i = 0; i < trayIcons.count(); i++) { ++ trayIcons[i]->addToTray(); ++ } ++ } ++ ++ return retval; ++} ++ ++void QSystemTrayIconWidget::addToTray() ++{ ++ Q_ASSERT(sysTrayWindow != XNone); ++ Display *display = QX11Info::display(); ++ ++ XVisualInfo *vi = getSysTrayVisualInfo(); ++ if (vi && vi->visual) { ++ Window root = RootWindow(display, vi->screen); ++ Window p = root; ++ if (QWidget *pw = parentWidget()) ++ p = pw->effectiveWinId(); ++ colormap = XCreateColormap(display, root, vi->visual, AllocNone); ++ XSetWindowAttributes wsa; ++ wsa.background_pixmap = 0; ++ wsa.colormap = colormap; ++ wsa.background_pixel = 0; ++ wsa.border_pixel = 0; ++ Window wid = XCreateWindow(display, p, -1, -1, 1, 1, ++ 0, vi->depth, InputOutput, vi->visual, ++ CWBackPixmap|CWBackPixel|CWBorderPixel|CWColormap, &wsa); ++ create(wid); ++ } else { ++ XSetWindowBackgroundPixmap(display, winId(), ParentRelative); ++ } ++ ++ // GNOME, NET WM Specification ++ static Atom netwm_tray_atom = XInternAtom(display, "_NET_SYSTEM_TRAY_OPCODE", False); ++ long l[5] = { CurrentTime, SYSTEM_TRAY_REQUEST_DOCK, static_cast(winId()), 0, 0 }; ++ XEvent ev; ++ memset(&ev, 0, sizeof(ev)); ++ ev.xclient.type = ClientMessage; ++ ev.xclient.window = sysTrayWindow; ++ ev.xclient.message_type = netwm_tray_atom; ++ ev.xclient.format = 32; ++ memcpy((char *)&ev.xclient.data, (const char *) l, sizeof(l)); ++ XSendEvent(display, sysTrayWindow, False, 0, &ev); ++ setMinimumSize(22, 22); // required at least on GNOME ++} ++ ++//////////////////////////////////////////////////////////////////////////// ++QXEmbedSystemTrayIconSys::QXEmbedSystemTrayIconSys(QSystemTrayIcon *q) ++: QAbstractSystemTrayIconSys(q) ++, widget(0) ++{ ++} ++ ++QXEmbedSystemTrayIconSys::~QXEmbedSystemTrayIconSys() ++{ ++ delete widget; ++} ++ ++QRect QXEmbedSystemTrayIconSys::geometry() const ++{ ++ if (!widget) ++ return QRect(); ++ return QRect(widget->mapToGlobal(QPoint(0, 0)), widget->size()); ++} ++ ++void QXEmbedSystemTrayIconSys::updateIcon() ++{ ++ if (!widget) ++ return; ++ widget->update(); ++} ++ ++void QXEmbedSystemTrayIconSys::updateToolTip() ++{ ++ if (!widget) ++ return; ++ widget->setToolTip(trayIcon->toolTip()); ++} ++ ++void QXEmbedSystemTrayIconSys::showMessage(const QString &message, const QString &title, ++ QSystemTrayIcon::MessageIcon icon, int msecs) ++{ ++ if (!widget) ++ return; ++ QPoint point = geometry().center(); ++ QBalloonTip::showBalloon(icon, message, title, trayIcon, point, msecs); ++} ++ ++void QXEmbedSystemTrayIconSys::updateVisibility() ++{ ++ bool visible = trayIcon->isVisible(); ++ if (visible && !widget) ++ widget = new QSystemTrayIconWidget(trayIcon, this); ++ else if (!visible && widget) { ++ delete widget; ++ widget = 0; ++ } ++} ++ ++void QXEmbedSystemTrayIconSys::sendToolTipEventToTrayIcon() ++{ ++#ifndef QT_NO_TOOLTIP ++ // Pass the event through QSystemTrayIcon so that it gets a chance to ++ // update the tooltip, then asks widget to show the tooltip ++ Q_ASSERT(widget); ++ QPoint globalPos = QCursor::pos(); ++ QPoint pos = widget->mapFromGlobal(globalPos); ++ QHelpEvent event(QEvent::ToolTip, pos, globalPos); ++ QApplication::sendEvent(trayIcon, &event); ++#endif ++} ++ ++void QXEmbedSystemTrayIconSys::sendWheelEventToTrayIcon(int delta, Qt::Orientation orientation) ++{ ++#ifndef QT_NO_WHEELEVENT ++ Q_ASSERT(widget); ++ QPoint globalPos = QCursor::pos(); ++ QPoint pos = widget->mapFromGlobal(globalPos); ++ QWheelEvent event(pos, globalPos, delta, Qt::NoButton, Qt::NoModifier, orientation); ++ QApplication::sendEvent(trayIcon, &event); ++#endif ++} ++ ++void QXEmbedSystemTrayIconSys::updateMenu() ++{ ++} ++ ++///////////////////////////////////////////////////////////// ++QAbstractSystemTrayIconSys * QXEmbedSystemTrayIconSysFactory::create(QSystemTrayIcon *icon) ++{ ++ return new QXEmbedSystemTrayIconSys(icon); ++} ++ ++bool QXEmbedSystemTrayIconSysFactory::isAvailable() const ++{ ++ return QSystemTrayIconWidget::locateSystemTray() != XNone; ++} ++ ++QT_END_NAMESPACE ++#endif //QT_NO_SYSTEMTRAYICON +diff -up qt-everywhere-opensource-src-4.8.6/src/gui/util/qxembedsystemtrayicon_x11_p.h.systemtrayicon qt-everywhere-opensource-src-4.8.6/src/gui/util/qxembedsystemtrayicon_x11_p.h +--- qt-everywhere-opensource-src-4.8.6/src/gui/util/qxembedsystemtrayicon_x11_p.h.systemtrayicon 2014-03-31 18:16:39.709974914 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/gui/util/qxembedsystemtrayicon_x11_p.h 2014-03-31 18:16:39.709974914 -0500 +@@ -0,0 +1,104 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ++** All rights reserved. ++** Contact: Nokia Corporation (qt-info@nokia.com) ++** ++** This file is part of the QtGui module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** GNU Lesser General Public License Usage ++** This file may be used under the terms of the GNU Lesser General Public ++** License version 2.1 as published by the Free Software Foundation and ++** appearing in the file LICENSE.LGPL included in the packaging of this ++** file. Please review the following information to ensure the GNU Lesser ++** General Public License version 2.1 requirements will be met: ++** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Nokia gives you certain additional ++** rights. These rights are described in the Nokia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU General ++** Public License version 3.0 as published by the Free Software Foundation ++** and appearing in the file LICENSE.GPL included in the packaging of this ++** file. Please review the following information to ensure the GNU General ++** Public License version 3.0 requirements will be met: ++** http://www.gnu.org/copyleft/gpl.html. ++** ++** Other Usage ++** Alternatively, this file may be used in accordance with the terms and ++** conditions contained in a signed written agreement between you and Nokia. ++** ++** ++** ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QXEMBEDSYSTEMTRAYICON_X11_P_H ++#define QXEMBEDSYSTEMTRAYICON_X11_P_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists for the convenience ++// of a number of Qt sources files. This header file may change from ++// version to version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++#ifndef QT_NO_SYSTEMTRAYICON ++ ++#include "qabstractsystemtrayiconsys_p.h" ++ ++QT_BEGIN_NAMESPACE ++ ++class QSystemTrayIconWidget; ++ ++class QXEmbedSystemTrayIconSys : public QAbstractSystemTrayIconSys ++{ ++public: ++ QXEmbedSystemTrayIconSys(QSystemTrayIcon *); ++ ~QXEmbedSystemTrayIconSys(); ++ ++ QRect geometry() const; ++ ++ void updateVisibility(); ++ ++ void updateIcon(); ++ ++ void updateToolTip(); ++ ++ void updateMenu(); ++ ++ void showMessage(const QString &message, const QString &title, ++ QSystemTrayIcon::MessageIcon icon, int msecs); ++ ++private: ++ friend class QSystemTrayIconWidget; ++ QSystemTrayIconWidget *widget; ++ ++ void sendToolTipEventToTrayIcon(); ++ ++ void sendWheelEventToTrayIcon(int delta, Qt::Orientation orientation); ++}; ++ ++struct QXEmbedSystemTrayIconSysFactory : public QSystemTrayIconSysFactoryInterface ++{ ++ QAbstractSystemTrayIconSys * create(QSystemTrayIcon *trayIcon); ++ bool isAvailable() const; ++}; ++ ++ ++QT_END_NAMESPACE ++ ++#endif // QT_NO_SYSTEMTRAYICON ++ ++#endif // QXEMBEDSYSTEMTRAYICON_X11_P_H ++ +diff -up qt-everywhere-opensource-src-4.8.6/src/gui/util/util.pri.systemtrayicon qt-everywhere-opensource-src-4.8.6/src/gui/util/util.pri +--- qt-everywhere-opensource-src-4.8.6/src/gui/util/util.pri.systemtrayicon 2014-03-30 15:36:49.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.6/src/gui/util/util.pri 2014-03-31 18:16:39.710974903 -0500 +@@ -29,8 +29,13 @@ wince* { + } + + unix:x11 { ++ HEADERS += \ ++ util/qabstractsystemtrayiconsys_p.h \ ++ util/qxembedsystemtrayicon_x11_p.h + SOURCES += \ +- util/qsystemtrayicon_x11.cpp ++ util/qabstractsystemtrayiconsys.cpp \ ++ util/qsystemtrayicon_x11.cpp \ ++ util/qxembedsystemtrayicon_x11.cpp + } + + embedded|qpa { diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch new file mode 100644 index 000000000..9bce98ff8 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch @@ -0,0 +1,12 @@ +diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h.majmin qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h +--- qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h.majmin 2015-05-07 09:14:48.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h 2016-12-08 12:10:29.677359701 -0600 +@@ -52,7 +52,7 @@ + /* + can be used like #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) + */ +-#define QT_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch)) ++#define QT_VERSION_CHECK(qt_version_check_major, qt_version_check_minor, qt_version_check_patch) ((qt_version_check_major<<16)|(qt_version_check_minor<<8)|(qt_version_check_patch)) + + #define QT_PACKAGEDATE_STR "2015-05-07" + diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch new file mode 100644 index 000000000..572a955dc --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch @@ -0,0 +1,137 @@ +diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp.than qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp +--- qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp.than 2016-02-10 16:31:02.450152334 +0100 ++++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp 2016-02-10 16:31:51.495307579 +0100 +@@ -40,7 +40,7 @@ + ****************************************************************************/ + + #include +-#if(!(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 10)) ++#if(!(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 10))) + #error "Alsa version found too old, require >= 1.0.10" + #endif + +diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp +index 973cbab..0b27e9d 100644 +--- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp ++++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp +@@ -63,7 +63,7 @@ QAudioDeviceInfoInternal::QAudioDeviceInfoInternal(QByteArray dev, QAudio::Mode + device = QLatin1String(dev); + this->mode = mode; + +-#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + checkSurround(); + #endif + } +@@ -159,13 +159,13 @@ bool QAudioDeviceInfoInternal::open() + QList devices = availableDevices(mode); + + if(dev.compare(QLatin1String("default")) == 0) { +-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + dev = QLatin1String(devices.first().constData()); + #else + dev = QLatin1String("hw:0,0"); + #endif + } else { +-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + dev = device; + #else + int idx = 0; +@@ -212,13 +212,13 @@ bool QAudioDeviceInfoInternal::testSettings(const QAudioFormat& format) const + QList devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioOutput); + + if(dev.compare(QLatin1String("default")) == 0) { +-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + dev = QLatin1String(devices.first().constData()); + #else + dev = QLatin1String("hw:0,0"); + #endif + } else { +-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + dev = device; + #else + int idx = 0; +@@ -396,7 +396,7 @@ void QAudioDeviceInfoInternal::updateLists() + } + channelz.append(1); + channelz.append(2); +-#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + if (surround40) channelz.append(4); + if (surround51) channelz.append(6); + if (surround71) channelz.append(8); +@@ -419,7 +419,7 @@ QList QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode) + QList devices; + QByteArray filter; + +-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + // Create a list of all current audio devices that support mode + void **hints, **n; + char *name, *descr, *io; +@@ -498,7 +498,7 @@ QByteArray QAudioDeviceInfoInternal::defaultOutputDevice() + return devices.first(); + } + +-#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + void QAudioDeviceInfoInternal::checkSurround() + { + QList devices; +diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h +index 96febf4..714bf60 100644 +--- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h ++++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h +@@ -98,7 +98,7 @@ private: + bool open(); + void close(); + +-#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + void checkSurround(); + bool surround40; + bool surround51; +diff --git a/src/multimedia/audio/qaudioinput_alsa_p.cpp b/src/multimedia/audio/qaudioinput_alsa_p.cpp +index 339fd9f..abfa4a1 100644 +--- a/src/multimedia/audio/qaudioinput_alsa_p.cpp ++++ b/src/multimedia/audio/qaudioinput_alsa_p.cpp +@@ -284,13 +284,13 @@ bool QAudioInputPrivate::open() + QString dev = QString(QLatin1String(m_device.constData())); + QList devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioInput); + if(dev.compare(QLatin1String("default")) == 0) { +-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + dev = QLatin1String(devices.first()); + #else + dev = QLatin1String("hw:0,0"); + #endif + } else { +-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + dev = QLatin1String(m_device); + #else + int idx = 0; +diff --git a/src/multimedia/audio/qaudiooutput_alsa_p.cpp b/src/multimedia/audio/qaudiooutput_alsa_p.cpp +index bf85de5..c29a89f 100644 +--- a/src/multimedia/audio/qaudiooutput_alsa_p.cpp ++++ b/src/multimedia/audio/qaudiooutput_alsa_p.cpp +@@ -299,13 +299,13 @@ bool QAudioOutputPrivate::open() + QString dev = QString(QLatin1String(m_device.constData())); + QList devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioOutput); + if(dev.compare(QLatin1String("default")) == 0) { +-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + dev = QLatin1String(devices.first()); + #else + dev = QLatin1String("hw:0,0"); + #endif + } else { +-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + dev = QLatin1String(m_device); + #else + int idx = 0; diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-crash-in-qppmhandler.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-crash-in-qppmhandler.patch new file mode 100644 index 000000000..eeed1b97c --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-crash-in-qppmhandler.patch @@ -0,0 +1,12 @@ +diff -up qt-everywhere-opensource-src-4.8.7/src/gui/image/qppmhandler.cpp.me qt-everywhere-opensource-src-4.8.7/src/gui/image/qppmhandler.cpp +--- qt-everywhere-opensource-src-4.8.7/src/gui/image/qppmhandler.cpp.me 2019-03-22 10:22:16.213800109 +0100 ++++ qt-everywhere-opensource-src-4.8.7/src/gui/image/qppmhandler.cpp 2019-03-22 10:22:40.721890281 +0100 +@@ -108,7 +108,7 @@ static bool read_pbm_header(QIODevice *d + else + mcc = read_pbm_int(device); // get max color component + +- if (w <= 0 || w > 32767 || h <= 0 || h > 32767 || mcc <= 0) ++ if (w <= 0 || w > 32767 || h <= 0 || h > 32767 || mcc <= 0 || mcc > 0xffff) + return false; // weird P.M image + + return true; diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-firebird.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-firebird.patch new file mode 100644 index 000000000..456abceb3 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-firebird.patch @@ -0,0 +1,45 @@ +diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp.ibase qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp +--- qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp.ibase 2015-05-07 09:14:42.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp 2016-11-30 10:55:05.825339674 -0600 +@@ -39,7 +39,7 @@ + ** + ****************************************************************************/ + +-#include ++#include + + int main(int, char **) + { +diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro.ibase qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro +--- qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro.ibase 2015-05-07 09:14:42.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro 2016-11-30 10:56:11.017740104 -0600 +@@ -1,4 +1,4 @@ + SOURCES = ibase.cpp + CONFIG -= qt dylib + mac:CONFIG -= app_bundle +-LIBS += -lgds ++LIBS += -lfbclient +diff -up qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h.ibase qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h +--- qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h.ibase 2015-05-07 09:14:48.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h 2016-11-30 10:57:34.516252974 -0600 +@@ -45,7 +45,7 @@ + #include + #include + #include +-#include ++#include + + QT_BEGIN_HEADER + +diff -up qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri.ibase qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri +--- qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri.ibase 2015-05-07 09:14:48.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri 2016-11-30 10:57:11.783113341 -0600 +@@ -2,7 +2,7 @@ HEADERS += $$PWD/qsql_ibase.h + SOURCES += $$PWD/qsql_ibase.cpp + + unix { +- !contains(LIBS, .*gds.*):!contains(LIBS, .*libfb.*):LIBS += -lgds ++ !contains(LIBS, .*gds.*):!contains(LIBS, .*libfb.*):LIBS += -lfbclient + } else { + !contains(LIBS, .*gds.*):!contains(LIBS, .*fbclient.*) { + win32-borland:LIBS += gds32.lib diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc6.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc6.patch new file mode 100644 index 000000000..421292939 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc6.patch @@ -0,0 +1,35 @@ +diff -up qt-everywhere-opensource-src-4.8.7/configure.gcc6 qt-everywhere-opensource-src-4.8.7/configure +--- qt-everywhere-opensource-src-4.8.7/configure.gcc6 2016-04-15 07:04:19.430268222 -0500 ++++ qt-everywhere-opensource-src-4.8.7/configure 2016-04-15 07:05:22.157568689 -0500 +@@ -7744,7 +7744,7 @@ case "$XPLATFORM" in + *-g++*) + # Check gcc's version + case "$(${QMAKE_CONF_COMPILER} -dumpversion)" in +- 5*|4*|3.4*) ++ 9*|8*|7*|6*|5*|4*|3.4*) + ;; + 3.3*) + canBuildWebKit="no" +@@ -8060,7 +8060,7 @@ g++*) + 3.*) + COMPILER_VERSION="3.*" + ;; +- 5*|4.*) ++ 9*|8*|7*|6*|5*|4.*) + 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 +--- 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 + ForegroundShift = 10, + BackgroundShift = 20, + SpecialShift = 20, +- ForegroundMask = ((1 << ForegroundShift) - 1) << ForegroundShift, +- BackgroundMask = ((1 << BackgroundShift) - 1) << BackgroundShift ++ ForegroundMask = 0x1f << ForegroundShift, ++ BackgroundMask = 0x7 << BackgroundShift + }; + + public: diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch new file mode 100644 index 000000000..7e79d2174 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch @@ -0,0 +1,13 @@ +diff -up qt-everywhere-opensource-src-4.8.7/src/script/script.pro.gcc8 qt-everywhere-opensource-src-4.8.7/src/script/script.pro +--- qt-everywhere-opensource-src-4.8.7/src/script/script.pro.gcc8 2015-05-07 09:14:43.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.7/src/script/script.pro 2018-05-19 16:01:24.699926959 -0500 +@@ -91,6 +91,9 @@ symbian { + TARGET.UID3=0x2001B2E1 + } + ++# hack around gcc8 optimization bug with -O2 ++QMAKE_CXXFLAGS_RELEASE += -O1 ++ + symbian { + symbian-abld|symbian-sbsv2 { + MMP_RULES += ALWAYS_BUILD_AS_ARM diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-icu59.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-icu59.patch new file mode 100644 index 000000000..3edcdef02 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-icu59.patch @@ -0,0 +1,28 @@ +From: Fabian Vogt +Subject: Fix build with ICU >= 59 + +ICU >= 59 requires C++11 for its header files. +Qt can't be compiled with -std=c++11 as a whole, so only enable +it for qlocale_icu.cpp. + +Index: qt-everywhere-opensource-src-4.8.7/src/corelib/tools/tools.pri +=================================================================== +--- qt-everywhere-opensource-src-4.8.7.orig/src/corelib/tools/tools.pri ++++ qt-everywhere-opensource-src-4.8.7/src/corelib/tools/tools.pri +@@ -102,7 +102,15 @@ contains(QT_CONFIG, zlib):include($$PWD/ + else:include($$PWD/../../3rdparty/zlib_dependency.pri) + + contains(QT_CONFIG,icu) { +- SOURCES += tools/qlocale_icu.cpp ++ cpp11.name = cpp11 ++ cpp11.input = SOURCES_CPP11 ++ cpp11.dependency_type = TYPE_C ++ cpp11.variable_out = OBJECTS ++ cpp11.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_IN_BASE}$${first(QMAKE_EXT_OBJ)} ++ cpp11.commands = $${QMAKE_CXX} $(CXXFLAGS) -std=c++11 $(INCPATH) -c ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} ++ QMAKE_EXTRA_COMPILERS += cpp11 ++ ++ SOURCES_CPP11 += tools/qlocale_icu.cpp + DEFINES += QT_USE_ICU + } + diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mariadb.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mariadb.patch new file mode 100644 index 000000000..7e480138b --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mariadb.patch @@ -0,0 +1,28 @@ +diff -up qt-everywhere-opensource-src-4.8.7/src/sql/drivers/mysql/qsql_mysql.cpp.mariadb qt-everywhere-opensource-src-4.8.7/src/sql/drivers/mysql/qsql_mysql.cpp +--- qt-everywhere-opensource-src-4.8.7/src/sql/drivers/mysql/qsql_mysql.cpp.mariadb 2015-05-07 09:14:48.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.7/src/sql/drivers/mysql/qsql_mysql.cpp 2017-10-23 14:13:15.871808984 -0500 +@@ -1105,11 +1105,16 @@ static void qLibraryInit() + } + # endif // MYSQL_VERSION_ID + #endif // Q_NO_MYSQL_EMBEDDED ++ ++#if defined(MARIADB_BASE_VERSION) || defined(MARIADB_VERSION_ID) ++ qAddPostRoutine(mysql_server_end); ++#endif + } + + static void qLibraryEnd() + { + #ifndef Q_NO_MYSQL_EMBEDDED ++#if !defined(MARIADB_BASE_VERSION) && !defined(MARIADB_VERSION_ID) + # if MYSQL_VERSION_ID > 40000 + # if (MYSQL_VERSION_ID >= 40110 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >= 50003 + mysql_library_end(); +@@ -1118,6 +1123,7 @@ static void qLibraryEnd() + # endif + # endif + #endif ++#endif + } + + QMYSQLDriver::QMYSQLDriver(QObject * parent) diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mips64.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mips64.patch new file mode 100644 index 000000000..6456f2c61 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-mips64.patch @@ -0,0 +1,13 @@ +diff -urp qt-everywhere-opensource-src-4.8.7/configure q/configure +--- qt-everywhere-opensource-src-4.8.7/configure 2016-04-03 16:49:50.218644449 +0200 ++++ q/configure 2016-04-03 17:22:35.376405024 +0200 +@@ -3331,6 +3331,9 @@ arm*) + CFG_ARCH=arm + COMPAT_ARCH=armv6 + ;; ++mips*) ++ CFG_ARCH=mips ++ ;; + esac + + if [ -d "$relpath/src/corelib/arch/$CFG_ARCH" ]; then diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch new file mode 100644 index 000000000..6a9946030 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch @@ -0,0 +1,694 @@ +diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslcertificate.cpp qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslcertificate.cpp +--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslcertificate.cpp 2015-05-07 16:14:44.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslcertificate.cpp 2018-01-05 17:44:16.997588265 +0100 +@@ -259,10 +259,10 @@ + QByteArray QSslCertificate::version() const + { + QMutexLocker lock(QMutexPool::globalInstanceGet(d.data())); +- if (d->versionString.isEmpty() && d->x509) ++ if (d->versionString.isEmpty() && d->x509) { + d->versionString = +- QByteArray::number(qlonglong(q_ASN1_INTEGER_get(d->x509->cert_info->version)) + 1); +- ++ QByteArray::number(qlonglong(q_X509_get_version(d->x509)) + 1); ++ } + return d->versionString; + } + +@@ -276,7 +276,7 @@ + { + QMutexLocker lock(QMutexPool::globalInstanceGet(d.data())); + if (d->serialNumberString.isEmpty() && d->x509) { +- ASN1_INTEGER *serialNumber = d->x509->cert_info->serialNumber; ++ ASN1_INTEGER *serialNumber = q_X509_get_serialNumber(d->x509); + // if we cannot convert to a long, just output the hexadecimal number + if (serialNumber->length > 4) { + QByteArray hexString; +@@ -489,24 +489,33 @@ + QSslKey key; + + key.d->type = QSsl::PublicKey; ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + X509_PUBKEY *xkey = d->x509->cert_info->key; ++#else ++ X509_PUBKEY *xkey = q_X509_get_X509_PUBKEY(d->x509); ++#endif + EVP_PKEY *pkey = q_X509_PUBKEY_get(xkey); + Q_ASSERT(pkey); + +- if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_RSA) { ++ int key_id; ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ key_id = q_EVP_PKEY_type(pkey->type); ++#else ++ key_id = q_EVP_PKEY_base_id(pkey); ++#endif ++ if (key_id == EVP_PKEY_RSA) { + key.d->rsa = q_EVP_PKEY_get1_RSA(pkey); + key.d->algorithm = QSsl::Rsa; + key.d->isNull = false; +- } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DSA) { ++ } else if (key_id == EVP_PKEY_DSA) { + key.d->dsa = q_EVP_PKEY_get1_DSA(pkey); + key.d->algorithm = QSsl::Dsa; + key.d->isNull = false; +- } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DH) { ++ } else if (key_id == EVP_PKEY_DH) { + // DH unsupported + } else { + // error? + } +- + q_EVP_PKEY_free(pkey); + return key; + } +@@ -687,7 +696,11 @@ + unsigned char *data = 0; + int size = q_ASN1_STRING_to_UTF8(&data, q_X509_NAME_ENTRY_get_data(e)); + info[QString::fromUtf8(obj)] = QString::fromUtf8((char*)data, size); ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + q_CRYPTO_free(data); ++#else ++ q_CRYPTO_free(data, __FILE__, __LINE__); ++#endif + } + return info; + } +diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslkey.cpp qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslkey.cpp +--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslkey.cpp 2015-05-07 16:14:44.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslkey.cpp 2018-01-05 18:00:27.453937599 +0100 +@@ -321,8 +321,19 @@ + { + if (d->isNull) + return -1; ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + return (d->algorithm == QSsl::Rsa) + ? q_BN_num_bits(d->rsa->n) : q_BN_num_bits(d->dsa->p); ++#else ++ if (d->algorithm == QSsl::Rsa) { ++ return q_RSA_bits(d->rsa); ++ } else { ++ const BIGNUM *p = (const BIGNUM *) NULL; ++ q_DSA_get0_pqg(d->dsa, &p, (const BIGNUM **) NULL, (const BIGNUM **) NULL); ++ return q_BN_num_bits(p); ++ } ++#endif ++ + } + + /*! +diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl.cpp qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl.cpp +--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl.cpp 2015-05-07 16:14:44.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl.cpp 2018-01-05 12:06:06.336990956 +0100 +@@ -93,6 +93,7 @@ + bool QSslSocketPrivate::s_loadedCiphersAndCerts = false; + bool QSslSocketPrivate::s_loadRootCertsOnDemand = false; + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + /* \internal + + From OpenSSL's thread(3) manual page: +@@ -174,6 +175,8 @@ + } + } // extern "C" + ++#endif //OPENSSL_VERSION_NUMBER >= 0x10100000L ++ + QSslSocketBackendPrivate::QSslSocketBackendPrivate() + : ssl(0), + ctx(0), +@@ -222,9 +225,12 @@ + ciph.d->encryptionMethod = descriptionList.at(4).mid(4); + ciph.d->exportable = (descriptionList.size() > 6 && descriptionList.at(6) == QLatin1String("export")); + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + ciph.d->bits = cipher->strength_bits; + ciph.d->supportedBits = cipher->alg_bits; +- ++#else ++ ciph.d->bits = q_SSL_CIPHER_get_bits(cipher, &ciph.d->supportedBits); ++#endif + } + return ciph; + } +@@ -363,7 +369,7 @@ + // + // See also: QSslContext::fromConfiguration() + if (caCertificate.expiryDate() >= QDateTime::currentDateTime()) { +- q_X509_STORE_add_cert(ctx->cert_store, (X509 *)caCertificate.handle()); ++ q_X509_STORE_add_cert(q_SSL_CTX_get_cert_store(ctx), (X509 *)caCertificate.handle()); + } + } + +@@ -500,8 +506,10 @@ + */ + void QSslSocketPrivate::deinitialize() + { ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + q_CRYPTO_set_id_callback(0); + q_CRYPTO_set_locking_callback(0); ++#endif + } + + /*! +@@ -522,13 +530,17 @@ + return false; + + // Check if the library itself needs to be initialized. ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + QMutexLocker locker(openssl_locks()->initLock()); ++#endif + if (!s_libraryLoaded) { + s_libraryLoaded = true; + + // Initialize OpenSSL. ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + q_CRYPTO_set_id_callback(id_function); + q_CRYPTO_set_locking_callback(locking_function); ++#endif + if (q_SSL_library_init() != 1) + return false; + q_SSL_load_error_strings(); +@@ -567,7 +579,9 @@ + + void QSslSocketPrivate::ensureCiphersAndCertsLoaded() + { +- QMutexLocker locker(openssl_locks()->initLock()); ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ QMutexLocker locker(openssl_locks()->initLock()); ++#endif + if (s_loadedCiphersAndCerts) + return; + s_loadedCiphersAndCerts = true; +@@ -659,13 +673,18 @@ + STACK_OF(SSL_CIPHER) *supportedCiphers = q_SSL_get_ciphers(mySsl); + for (int i = 0; i < q_sk_SSL_CIPHER_num(supportedCiphers); ++i) { + if (SSL_CIPHER *cipher = q_sk_SSL_CIPHER_value(supportedCiphers, i)) { +- if (cipher->valid) { ++ ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ if (cipher->valid) { ++#endif + QSslCipher ciph = QSslSocketBackendPrivate::QSslCipher_from_SSL_CIPHER(cipher); + if (!ciph.isNull()) { + if (!ciph.name().toLower().startsWith(QLatin1String("adh"))) + ciphers << ciph; + } ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + } ++#endif + } + } + +diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_p.h qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_p.h +--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_p.h 2015-05-07 16:14:44.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_p.h 2018-01-05 12:06:06.337990940 +0100 +@@ -84,6 +84,10 @@ + #include + #endif + ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#define OPENSSL_NO_SSL2 ++#endif ++ + #if OPENSSL_VERSION_NUMBER >= 0x10000000L + typedef _STACK STACK; + #endif +diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols.cpp qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_symbols.cpp +--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols.cpp 2015-05-07 16:14:44.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_symbols.cpp 2018-01-05 17:59:10.636973932 +0100 +@@ -111,16 +111,30 @@ + DEFINEFUNC2(int, ASN1_STRING_to_UTF8, unsigned char **a, a, ASN1_STRING *b, b, return 0, return); + DEFINEFUNC4(long, BIO_ctrl, BIO *a, a, int b, b, long c, c, void *d, d, return -1, return) + DEFINEFUNC(int, BIO_free, BIO *a, a, return 0, return) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + DEFINEFUNC(BIO *, BIO_new, BIO_METHOD *a, a, return 0, return) ++#else ++DEFINEFUNC(BIO *, BIO_new, const BIO_METHOD *a, a, return 0, return) ++#endif + DEFINEFUNC2(BIO *, BIO_new_mem_buf, void *a, a, int b, b, return 0, return) + DEFINEFUNC3(int, BIO_read, BIO *a, a, void *b, b, int c, c, return -1, return) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + DEFINEFUNC(BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return 0, return) ++#else ++DEFINEFUNC(const BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return 0, return) ++#endif + DEFINEFUNC3(int, BIO_write, BIO *a, a, const void *b, b, int c, c, return -1, return) + DEFINEFUNC(int, BN_num_bits, const BIGNUM *a, a, return 0, return) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + DEFINEFUNC(int, CRYPTO_num_locks, DUMMYARG, DUMMYARG, return 0, return) + DEFINEFUNC(void, CRYPTO_set_locking_callback, void (*a)(int, int, const char *, int), a, return, DUMMYARG) + DEFINEFUNC(void, CRYPTO_set_id_callback, unsigned long (*a)(), a, return, DUMMYARG) ++#endif ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + DEFINEFUNC(void, CRYPTO_free, void *a, a, return, DUMMYARG) ++#else ++DEFINEFUNC3(void, CRYPTO_free, void *a, a, const char *b, b, int c, c, return, DUMMYARG) ++#endif + DEFINEFUNC(void, DSA_free, DSA *a, a, return, DUMMYARG) + #if OPENSSL_VERSION_NUMBER < 0x00908000L + DEFINEFUNC3(X509 *, d2i_X509, X509 **a, a, unsigned char **b, b, long c, c, return 0, return) +@@ -157,6 +171,7 @@ + DEFINEFUNC2(void, RAND_seed, const void *a, a, int b, b, return, DUMMYARG) + DEFINEFUNC(int, RAND_status, void, DUMMYARG, return -1, return) + DEFINEFUNC(void, RSA_free, RSA *a, a, return, DUMMYARG) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + DEFINEFUNC(int, sk_num, STACK *a, a, return -1, return) + DEFINEFUNC2(void, sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG) + #if OPENSSL_VERSION_NUMBER >= 0x10000000L +@@ -166,6 +181,12 @@ + DEFINEFUNC(void, sk_free, STACK *a, a, return, DUMMYARG) + DEFINEFUNC2(char *, sk_value, STACK *a, a, int b, b, return 0, return) + #endif ++#else ++DEFINEFUNC(int, OPENSSL_sk_num, STACK *a, a, return -1, return) ++DEFINEFUNC2(void, OPENSSL_sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG) ++DEFINEFUNC(void, OPENSSL_sk_free, _STACK *a, a, return, DUMMYARG) ++DEFINEFUNC2(void *, OPENSSL_sk_value, STACK *a, a, int b, b, return 0, return) ++#endif + DEFINEFUNC(int, SSL_accept, SSL *a, a, return -1, return) + DEFINEFUNC(int, SSL_clear, SSL *a, a, return -1, return) + DEFINEFUNC3(char *, SSL_CIPHER_description, SSL_CIPHER *a, a, char *b, b, int c, c, return 0, return) +@@ -213,8 +234,12 @@ + #else + DEFINEFUNC(long, SSL_get_verify_result, SSL *a, a, return -1, return) + #endif ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + DEFINEFUNC(int, SSL_library_init, void, DUMMYARG, return -1, return) + DEFINEFUNC(void, SSL_load_error_strings, void, DUMMYARG, return, DUMMYARG) ++#else ++DEFINEFUNC2(int, OPENSSL_init_ssl, uint64_t opts, opts, const OPENSSL_INIT_SETTINGS *settings, settings, return -1, return) ++#endif + DEFINEFUNC(SSL *, SSL_new, SSL_CTX *a, a, return 0, return) + #if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT) + DEFINEFUNC4(long, SSL_ctrl, SSL *a, a, int cmd, cmd, long larg, larg, void *parg, parg, return -1, return) +@@ -229,13 +254,21 @@ + DEFINEFUNC(const SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return) + #endif + DEFINEFUNC(const SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + DEFINEFUNC(const SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return 0, return) ++#else ++DEFINEFUNC(const SSL_METHOD *, TLS_client_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif + DEFINEFUNC(const SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return) + #ifndef OPENSSL_NO_SSL2 + DEFINEFUNC(const SSL_METHOD *, SSLv2_server_method, DUMMYARG, DUMMYARG, return 0, return) + #endif + DEFINEFUNC(const SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + DEFINEFUNC(const SSL_METHOD *, SSLv23_server_method, DUMMYARG, DUMMYARG, return 0, return) ++#else ++DEFINEFUNC(const SSL_METHOD *, TLS_server_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif + DEFINEFUNC(const SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return) + #else + DEFINEFUNC(SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return) +@@ -274,7 +307,11 @@ + DEFINEFUNC(int, X509_STORE_CTX_get_error, X509_STORE_CTX *a, a, return -1, return) + DEFINEFUNC(int, X509_STORE_CTX_get_error_depth, X509_STORE_CTX *a, a, return -1, return) + DEFINEFUNC(X509 *, X509_STORE_CTX_get_current_cert, X509_STORE_CTX *a, a, return 0, return) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get_chain, X509_STORE_CTX *a, a, return 0, return) ++#else ++DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get0_chain, X509_STORE_CTX *a, a, return 0, return) ++#endif + DEFINEFUNC(X509_STORE_CTX *, X509_STORE_CTX_new, DUMMYARG, DUMMYARG, return 0, return) + #ifdef SSLEAY_MACROS + DEFINEFUNC2(int, i2d_DSAPrivateKey, const DSA *a, a, unsigned char **b, b, return -1, return) +@@ -282,10 +319,34 @@ + DEFINEFUNC3(RSA *, d2i_RSAPrivateKey, RSA **a, a, unsigned char **b, b, long c, c, return 0, return) + DEFINEFUNC3(DSA *, d2i_DSAPrivateKey, DSA **a, a, unsigned char **b, b, long c, c, return 0, return) + #endif ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + DEFINEFUNC(void, OPENSSL_add_all_algorithms_noconf, void, DUMMYARG, return, DUMMYARG) + DEFINEFUNC(void, OPENSSL_add_all_algorithms_conf, void, DUMMYARG, return, DUMMYARG) ++#else ++DEFINEFUNC2(int, OPENSSL_init_crypto, uint64_t opts, opts, const OPENSSL_INIT_SETTINGS *settings, settings, return -1, return) ++#endif + DEFINEFUNC3(int, SSL_CTX_load_verify_locations, SSL_CTX *ctx, ctx, const char *CAfile, CAfile, const char *CApath, CApath, return 0, return) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + DEFINEFUNC(long, SSLeay, void, DUMMYARG, return 0, return) ++#else ++DEFINEFUNC(unsigned long, OpenSSL_version_num, void, DUMMYARG, return 0, return) ++#endif ++DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const SSL_CTX *ctx, ctx, return 0, return) ++ ++DEFINEFUNC(ASN1_INTEGER *, X509_get_serialNumber, X509 *x, x, return 0, return) ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++DEFINEFUNC(int, EVP_PKEY_id, const EVP_PKEY *pkey, pkey, return 0, return) ++DEFINEFUNC(int, EVP_PKEY_base_id, const EVP_PKEY *pkey, pkey, return 0, return) ++DEFINEFUNC2(int, SSL_CIPHER_get_bits, const SSL_CIPHER *cipher, cipher, int *alg_bits, alg_bits, return 0, return) ++DEFINEFUNC2(long, SSL_CTX_set_options, SSL_CTX *ctx, ctx, long options, options, return 0, return) ++DEFINEFUNC(long, X509_get_version, X509 *x, x, return 0, return) ++DEFINEFUNC(X509_PUBKEY *, X509_get_X509_PUBKEY, X509 *x, x, return 0, return) ++DEFINEFUNC(int, RSA_bits, const RSA *rsa, rsa, return 0, return) ++DEFINEFUNC(int, DSA_security_bits, const DSA *dsa, dsa, return 0, return) ++DEFINEFUNC(ASN1_TIME *, X509_getm_notAfter, X509 *x, x, return 0, return) ++DEFINEFUNC(ASN1_TIME *, X509_getm_notBefore, X509 *x, x, return 0, return) ++DEFINEFUNC4(void, DSA_get0_pqg, const DSA *d, d, const BIGNUM **p, p, const BIGNUM **q, q, const BIGNUM **g, g, return, return) ++#endif + + #ifdef Q_OS_SYMBIAN + #define RESOLVEFUNC(func, ordinal, lib) \ +@@ -580,7 +641,11 @@ + static volatile bool symbolsResolved = false; + static volatile bool triedToResolveSymbols = false; + #ifndef QT_NO_THREAD ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + QMutexLocker locker(QMutexPool::globalInstanceGet((void *)&q_SSL_library_init)); ++#else ++ QMutexLocker locker(QMutexPool::globalInstanceGet((void *)&q_OPENSSL_init_ssl)); ++#endif + #endif + if (symbolsResolved) + return true; +@@ -614,9 +679,11 @@ + RESOLVEFUNC(BIO_write, 269, libs.second ) + RESOLVEFUNC(BN_num_bits, 387, libs.second ) + RESOLVEFUNC(CRYPTO_free, 469, libs.second ) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + RESOLVEFUNC(CRYPTO_num_locks, 500, libs.second ) + RESOLVEFUNC(CRYPTO_set_id_callback, 513, libs.second ) + RESOLVEFUNC(CRYPTO_set_locking_callback, 516, libs.second ) ++#endif + RESOLVEFUNC(DSA_free, 594, libs.second ) + RESOLVEFUNC(ERR_error_string, 744, libs.second ) + RESOLVEFUNC(ERR_get_error, 749, libs.second ) +@@ -674,8 +741,10 @@ + RESOLVEFUNC(SSL_get_peer_cert_chain, 117, libs.first ) + RESOLVEFUNC(SSL_get_peer_certificate, 118, libs.first ) + RESOLVEFUNC(SSL_get_verify_result, 132, libs.first ) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + RESOLVEFUNC(SSL_library_init, 137, libs.first ) + RESOLVEFUNC(SSL_load_error_strings, 139, libs.first ) ++#endif + RESOLVEFUNC(SSL_new, 140, libs.first ) + #if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT) + RESOLVEFUNC(SSL_ctrl, 95, libs.first ) +@@ -747,9 +816,11 @@ + RESOLVEFUNC(BIO_write) + RESOLVEFUNC(BN_num_bits) + RESOLVEFUNC(CRYPTO_free) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + RESOLVEFUNC(CRYPTO_num_locks) + RESOLVEFUNC(CRYPTO_set_id_callback) + RESOLVEFUNC(CRYPTO_set_locking_callback) ++#endif + RESOLVEFUNC(DSA_free) + RESOLVEFUNC(ERR_error_string) + RESOLVEFUNC(ERR_get_error) +@@ -779,10 +850,17 @@ + RESOLVEFUNC(RAND_seed) + RESOLVEFUNC(RAND_status) + RESOLVEFUNC(RSA_free) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + RESOLVEFUNC(sk_free) + RESOLVEFUNC(sk_num) + RESOLVEFUNC(sk_pop_free) + RESOLVEFUNC(sk_value) ++#else ++ RESOLVEFUNC(OPENSSL_sk_free) ++ RESOLVEFUNC(OPENSSL_sk_num) ++ RESOLVEFUNC(OPENSSL_sk_pop_free) ++ RESOLVEFUNC(OPENSSL_sk_value) ++#endif + RESOLVEFUNC(SSL_CIPHER_description) + RESOLVEFUNC(SSL_CTX_check_private_key) + RESOLVEFUNC(SSL_CTX_ctrl) +@@ -797,6 +875,7 @@ + RESOLVEFUNC(SSL_CTX_use_PrivateKey) + RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey) + RESOLVEFUNC(SSL_CTX_use_PrivateKey_file) ++ RESOLVEFUNC(SSL_CTX_get_cert_store) + RESOLVEFUNC(SSL_accept) + RESOLVEFUNC(SSL_clear) + RESOLVEFUNC(SSL_connect) +@@ -807,8 +886,12 @@ + RESOLVEFUNC(SSL_get_peer_cert_chain) + RESOLVEFUNC(SSL_get_peer_certificate) + RESOLVEFUNC(SSL_get_verify_result) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + RESOLVEFUNC(SSL_library_init) + RESOLVEFUNC(SSL_load_error_strings) ++#else ++ RESOLVEFUNC(OPENSSL_init_ssl) ++#endif + RESOLVEFUNC(SSL_new) + #if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT) + RESOLVEFUNC(SSL_ctrl) +@@ -819,17 +902,47 @@ + RESOLVEFUNC(SSL_set_connect_state) + RESOLVEFUNC(SSL_shutdown) + RESOLVEFUNC(SSL_write) ++ ++ RESOLVEFUNC(X509_get_serialNumber) ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ RESOLVEFUNC(SSL_CTX_ctrl) ++ RESOLVEFUNC(EVP_PKEY_id) ++ RESOLVEFUNC(EVP_PKEY_base_id) ++ RESOLVEFUNC(SSL_CIPHER_get_bits) ++ RESOLVEFUNC(SSL_CTX_set_options) ++ RESOLVEFUNC(X509_get_version) ++ RESOLVEFUNC(X509_get_X509_PUBKEY) ++ RESOLVEFUNC(RSA_bits) ++ RESOLVEFUNC(DSA_security_bits) ++ RESOLVEFUNC(DSA_get0_pqg) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ RESOLVEFUNC(X509_get_notAfter) ++ RESOLVEFUNC(X509_get_notBefore) ++#else ++ RESOLVEFUNC(X509_getm_notAfter) ++ RESOLVEFUNC(X509_getm_notBefore) ++#endif ++#endif ++ + #ifndef OPENSSL_NO_SSL2 + RESOLVEFUNC(SSLv2_client_method) + #endif + RESOLVEFUNC(SSLv3_client_method) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + RESOLVEFUNC(SSLv23_client_method) ++#else ++ RESOLVEFUNC(TLS_client_method) ++#endif + RESOLVEFUNC(TLSv1_client_method) + #ifndef OPENSSL_NO_SSL2 + RESOLVEFUNC(SSLv2_server_method) + #endif + RESOLVEFUNC(SSLv3_server_method) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + RESOLVEFUNC(SSLv23_server_method) ++#else ++ RESOLVEFUNC(TLS_server_method) ++#endif + RESOLVEFUNC(TLSv1_server_method) + RESOLVEFUNC(X509_NAME_entry_count) + RESOLVEFUNC(X509_NAME_get_entry) +@@ -846,7 +959,11 @@ + RESOLVEFUNC(X509_STORE_CTX_get_error) + RESOLVEFUNC(X509_STORE_CTX_get_error_depth) + RESOLVEFUNC(X509_STORE_CTX_get_current_cert) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + RESOLVEFUNC(X509_STORE_CTX_get_chain) ++#else ++ RESOLVEFUNC(X509_STORE_CTX_get0_chain) ++#endif + RESOLVEFUNC(X509_cmp) + #ifndef SSLEAY_MACROS + RESOLVEFUNC(X509_dup) +@@ -867,10 +984,18 @@ + RESOLVEFUNC(d2i_DSAPrivateKey) + RESOLVEFUNC(d2i_RSAPrivateKey) + #endif ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + RESOLVEFUNC(OPENSSL_add_all_algorithms_noconf) + RESOLVEFUNC(OPENSSL_add_all_algorithms_conf) ++#else ++ RESOLVEFUNC(OPENSSL_init_crypto) ++#endif + RESOLVEFUNC(SSL_CTX_load_verify_locations) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + RESOLVEFUNC(SSLeay) ++#else ++ RESOLVEFUNC(OpenSSL_version_num) ++#endif + #endif // Q_OS_SYMBIAN + symbolsResolved = true; + delete libs.first; +diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols_p.h qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_symbols_p.h +--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols_p.h 2015-05-07 16:14:44.000000000 +0200 ++++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_symbols_p.h 2018-01-05 17:59:42.041550255 +0100 +@@ -207,16 +207,31 @@ + int q_ASN1_STRING_to_UTF8(unsigned char **a, ASN1_STRING *b); + long q_BIO_ctrl(BIO *a, int b, long c, void *d); + int q_BIO_free(BIO *a); ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + BIO *q_BIO_new(BIO_METHOD *a); ++#else ++BIO *q_BIO_new(const BIO_METHOD *a); ++#endif + BIO *q_BIO_new_mem_buf(void *a, int b); + int q_BIO_read(BIO *a, void *b, int c); ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + BIO_METHOD *q_BIO_s_mem(); ++#else ++const BIO_METHOD *q_BIO_s_mem(); ++#endif + int q_BIO_write(BIO *a, const void *b, int c); + int q_BN_num_bits(const BIGNUM *a); ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + int q_CRYPTO_num_locks(); + void q_CRYPTO_set_locking_callback(void (*a)(int, int, const char *, int)); + void q_CRYPTO_set_id_callback(unsigned long (*a)()); + void q_CRYPTO_free(void *a); ++#else ++#define q_CRYPTO_num_locks() 1 ++#define q_CRYPTO_set_locking_callback(a) ++#define q_CRYPTO_set_id_callback(a) ++void q_CRYPTO_free(void *a, const char *b, int c); ++#endif + void q_DSA_free(DSA *a); + #if OPENSSL_VERSION_NUMBER >= 0x00908000L + // 0.9.8 broke SC and BC by changing this function's signature. +@@ -258,6 +273,7 @@ + void q_RAND_seed(const void *a, int b); + int q_RAND_status(); + void q_RSA_free(RSA *a); ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + int q_sk_num(STACK *a); + void q_sk_pop_free(STACK *a, void (*b)(void *)); + #if OPENSSL_VERSION_NUMBER >= 0x10000000L +@@ -267,6 +283,16 @@ + void q_sk_free(STACK *a); + char * q_sk_value(STACK *a, int b); + #endif ++#else ++int q_OPENSSL_sk_num(STACK *a); ++void q_OPENSSL_sk_pop_free(STACK *a, void (*b)(void *)); ++void q_OPENSSL_sk_free(_STACK *a); ++void * q_OPENSSL_sk_value(STACK *a, int b); ++#define q_sk_num q_OPENSSL_sk_num ++#define q_sk_pop_free q_OPENSSL_sk_pop_free ++#define q_sk_free q_OPENSSL_sk_free ++#define q_sk_value q_OPENSSL_sk_value ++#endif + int q_SSL_accept(SSL *a); + int q_SSL_clear(SSL *a); + char *q_SSL_CIPHER_description(SSL_CIPHER *a, char *b, int c); +@@ -314,8 +340,14 @@ + #else + long q_SSL_get_verify_result(SSL *a); + #endif ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + int q_SSL_library_init(); + void q_SSL_load_error_strings(); ++#else ++int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); ++#define q_SSL_library_init() q_OPENSSL_init_ssl(0, (const OPENSSL_INIT_SETTINGS *) NULL) ++#define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, (const OPENSSL_INIT_SETTINGS *) NULL) ++#endif + SSL *q_SSL_new(SSL_CTX *a); + #if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT) + long q_SSL_ctrl(SSL *ssl,int cmd, long larg, void *parg); +@@ -328,11 +360,21 @@ + #if OPENSSL_VERSION_NUMBER >= 0x10000000L + const SSL_METHOD *q_SSLv2_client_method(); + const SSL_METHOD *q_SSLv3_client_method(); ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + const SSL_METHOD *q_SSLv23_client_method(); ++#else ++const SSL_METHOD *q_TLS_client_method(); ++#define q_SSLv23_client_method q_TLS_client_method ++#endif + const SSL_METHOD *q_TLSv1_client_method(); + const SSL_METHOD *q_SSLv2_server_method(); + const SSL_METHOD *q_SSLv3_server_method(); ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + const SSL_METHOD *q_SSLv23_server_method(); ++#else ++const SSL_METHOD *q_TLS_server_method(); ++#define q_SSLv23_server_method q_TLS_server_method ++#endif + const SSL_METHOD *q_TLSv1_server_method(); + #else + SSL_METHOD *q_SSLv2_client_method(); +@@ -377,7 +419,12 @@ + int q_X509_STORE_CTX_get_error(X509_STORE_CTX *ctx); + int q_X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx); + X509 *q_X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx); ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + STACK_OF(X509) *q_X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx); ++#else ++STACK_OF(X509) *q_X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx); ++#define q_X509_STORE_CTX_get_chain q_X509_STORE_CTX_get0_chain ++#endif + + #define q_BIO_get_mem_data(b, pp) (int)q_BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp) + #define q_BIO_pending(b) (int)q_BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) +@@ -399,7 +446,25 @@ + PEM_ASN1_write_bio((int (*)(void*, unsigned char**))q_i2d_DSAPrivateKey,PEM_STRING_DSA,\ + bp,(char *)x,enc,kstr,klen,cb,u) + #endif ++ ++X509_STORE * q_SSL_CTX_get_cert_store(const SSL_CTX *ctx); ++ASN1_INTEGER * q_X509_get_serialNumber(X509 *x); ++ ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + #define q_SSL_CTX_set_options(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL) ++#define q_X509_get_version(x) X509_get_version(x) ++#else ++int q_EVP_PKEY_id(const EVP_PKEY *pkey); ++int q_EVP_PKEY_base_id(const EVP_PKEY *pkey); ++int q_SSL_CIPHER_get_bits(const SSL_CIPHER *cipher, int *alg_bits); ++long q_SSL_CTX_set_options(SSL_CTX *ctx, long options); ++long q_X509_get_version(X509 *x); ++X509_PUBKEY * q_X509_get_X509_PUBKEY(X509 *x); ++int q_RSA_bits(const RSA *rsa); ++int q_DSA_security_bits(const DSA *dsa); ++void q_DSA_get0_pqg(const DSA *d, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g); ++#endif ++ + #define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st) + #define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i) + #define q_sk_GENERAL_NAME_num(st) q_SKM_sk_num(GENERAL_NAME, (st)) +@@ -410,8 +475,17 @@ + #define q_sk_SSL_CIPHER_value(st, i) q_SKM_sk_value(SSL_CIPHER, (st), (i)) + #define q_SSL_CTX_add_extra_chain_cert(ctx,x509) \ + q_SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509) ++ ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + #define q_X509_get_notAfter(x) X509_get_notAfter(x) + #define q_X509_get_notBefore(x) X509_get_notBefore(x) ++#else ++ASN1_TIME *q_X509_getm_notAfter(X509 *x); ++ASN1_TIME *q_X509_getm_notBefore(X509 *x); ++#define q_X509_get_notAfter(x) q_X509_getm_notAfter(x) ++#define q_X509_get_notBefore(x) q_X509_getm_notBefore(x) ++#endif ++ + #define q_EVP_PKEY_assign_RSA(pkey,rsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ + (char *)(rsa)) + #define q_EVP_PKEY_assign_DSA(pkey,dsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ +@@ -421,10 +495,21 @@ + #else + #define q_OpenSSL_add_all_algorithms() q_OPENSSL_add_all_algorithms_noconf() + #endif ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + void q_OPENSSL_add_all_algorithms_noconf(); + void q_OPENSSL_add_all_algorithms_conf(); ++#else ++int q_OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); ++#define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS | OPENSSL_INIT_ADD_ALL_DIGESTS | OPENSSL_INIT_LOAD_CONFIG, (const OPENSSL_INIT_SETTINGS *) NULL) ++# define q_OPENSSL_add_all_algorithms_noconf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS | OPENSSL_INIT_ADD_ALL_DIGESTS, (const OPENSSL_INIT_SETTINGS *) NULL) ++#endif + int q_SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, const char *CApath); ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + long q_SSLeay(); ++#else ++unsigned long q_OpenSSL_version_num(); ++#define q_SSLeay q_OpenSSL_version_num ++#endif + + // Helper function + class QDateTime; diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qforeach.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qforeach.patch new file mode 100644 index 000000000..836dc13a4 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qforeach.patch @@ -0,0 +1,40 @@ +--- a/src/corelib/global/qglobal.h ++++ b/src/corelib/global/qglobal.h +@@ -2482,22 +2482,32 @@ typedef uint Flags; + + #endif /* Q_NO_TYPESAFE_FLAGS */ + +-#if defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && !defined(Q_CC_RVCT) ++#if (defined(Q_CC_GNU) && !defined(Q_CC_RVCT)) + /* make use of typeof-extension */ + template + class QForeachContainer { + public: +- inline QForeachContainer(const T& t) : c(t), brk(0), i(c.begin()), e(c.end()) { } ++ inline QForeachContainer(const T& t) : c(t), i(c.begin()), e(c.end()), control(1) { } + const T c; + int brk; + typename T::const_iterator i, e; ++ int control; + }; + ++// Explanation of the control word: ++// - it's initialized to 1 ++// - that means both the inner and outer loops start ++// - if there were no breaks, at the end of the inner loop, it's set to 0, which ++// causes it to exit (the inner loop is run exactly once) ++// - at the end of the outer loop, it's inverted, so it becomes 1 again, allowing ++// the outer loop to continue executing ++// - if there was a break inside the inner loop, it will exit with control still ++// set to 1; in that case, the outer loop will invert it to 0 and will exit too + #define Q_FOREACH(variable, container) \ + for (QForeachContainer<__typeof__(container)> _container_(container); \ +- !_container_.brk && _container_.i != _container_.e; \ +- __extension__ ({ ++_container_.brk; ++_container_.i; })) \ +- for (variable = *_container_.i;; __extension__ ({--_container_.brk; break;})) ++ _container_.control && _container_.i != _container_.e; \ ++ ++_container_.i, _container_.control ^= 1) \ ++ for (variable = *_container_.i; _container_.control; _container_.control = 0) + + #else + diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch new file mode 100644 index 000000000..f1a5a12e1 --- /dev/null +++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch @@ -0,0 +1,12 @@ +diff -up qt-everywhere-opensource-src-4.8.7/qmake/Makefile.unix.qmake_LFLAGS qt-everywhere-opensource-src-4.8.7/qmake/Makefile.unix +--- qt-everywhere-opensource-src-4.8.7/qmake/Makefile.unix.qmake_LFLAGS 2015-05-07 09:14:42.000000000 -0500 ++++ qt-everywhere-opensource-src-4.8.7/qmake/Makefile.unix 2018-02-15 08:25:13.168838577 -0600 +@@ -3,7 +3,7 @@ BUILD_PATH = @BUILD_PATH@ + QTOBJS = @QMAKE_QTOBJS@ + QTSRCS = @QMAKE_QTSRCS@ + QMAKESPEC = @QMAKESPEC@ +-LFLAGS = @QMAKE_LFLAGS@ ++LFLAGS = @QMAKE_LFLAGS@ $(QMAKE_LFLAGS_RELEASE) + + #qmake code + OBJS=project.o property.o main.o makefile.o unixmake2.o unixmake.o \ diff --git a/source/l/qt/patches/qt-prefer_adwaita_on_gnome.patch b/source/l/qt/patches/qt-prefer_adwaita_on_gnome.patch new file mode 100644 index 000000000..71e30c4f9 --- /dev/null +++ b/source/l/qt/patches/qt-prefer_adwaita_on_gnome.patch @@ -0,0 +1,17 @@ +--- src/gui/kernel/qguiplatformplugin.cpp.adwaita 2015-02-12 14:32:45.217935391 +0100 ++++ src/gui/kernel/qguiplatformplugin.cpp 2015-02-12 14:46:11.471866038 +0100 +@@ -165,8 +165,13 @@ QString QGuiPlatformPlugin::styleName() + case DE_GNOME: { + QStringList availableStyles = QStyleFactory::keys(); + // Set QGtkStyle for GNOME if available ++ QString adwaitaStyleKey = QString::fromLatin1("adwaita"); + QString gtkStyleKey = QString::fromLatin1("GTK+"); +- if (availableStyles.contains(gtkStyleKey)) { ++ if (availableStyles.contains(adwaitaStyleKey)) { ++ stylename = adwaitaStyleKey; ++ break; ++ } ++ else if (availableStyles.contains(gtkStyleKey)) { + stylename = gtkStyleKey; + break; + } diff --git a/source/l/qt/patches/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch b/source/l/qt/patches/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch new file mode 100644 index 000000000..e5ab4bad9 --- /dev/null +++ b/source/l/qt/patches/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch @@ -0,0 +1,50 @@ +diff -ur qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_i386.h qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_i386.h +--- qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_i386.h 2009-02-25 22:09:21.000000000 +0100 ++++ qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_i386.h 2009-04-01 17:54:21.000000000 +0200 +@@ -115,8 +115,8 @@ + asm volatile("lock\n" + "incl %0\n" + "setne %1" +- : "=m" (_q_value), "=qm" (ret) +- : "m" (_q_value) ++ : "+m" (_q_value), "=qm" (ret) ++ : + : "memory"); + return ret != 0; + } +@@ -127,8 +127,8 @@ + asm volatile("lock\n" + "decl %0\n" + "setne %1" +- : "=m" (_q_value), "=qm" (ret) +- : "m" (_q_value) ++ : "+m" (_q_value), "=qm" (ret) ++ : + : "memory"); + return ret != 0; + } +diff -ur qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_x86_64.h qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_x86_64.h +--- qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_x86_64.h 2009-02-25 22:09:21.000000000 +0100 ++++ qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_x86_64.h 2009-04-01 17:54:32.000000000 +0200 +@@ -116,8 +116,8 @@ + asm volatile("lock\n" + "incl %0\n" + "setne %1" +- : "=m" (_q_value), "=qm" (ret) +- : "m" (_q_value) ++ : "+m" (_q_value), "=qm" (ret) ++ : + : "memory"); + return ret != 0; + } +@@ -128,8 +128,8 @@ + asm volatile("lock\n" + "decl %0\n" + "setne %1" +- : "=m" (_q_value), "=qm" (ret) +- : "m" (_q_value) ++ : "+m" (_q_value), "=qm" (ret) ++ : + : "memory"); + return ret != 0; + } diff --git a/source/l/qt/patches/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch b/source/l/qt/patches/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch new file mode 100644 index 000000000..4ab3ea4b1 --- /dev/null +++ b/source/l/qt/patches/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch @@ -0,0 +1,12 @@ +diff -up qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp.enable_ft_lcdfilter qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp +--- qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp.enable_ft_lcdfilter 2009-04-21 18:57:41.000000000 -0500 ++++ qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp 2009-04-24 11:17:49.562695405 -0500 +@@ -72,7 +72,7 @@ + #include FT_CONFIG_OPTIONS_H + #endif + +-#if defined(FT_LCD_FILTER_H) && defined(FT_CONFIG_OPTION_SUBPIXEL_RENDERING) ++#if defined(FT_LCD_FILTER_H) + #define QT_USE_FREETYPE_LCDFILTER + #endif + diff --git a/source/l/qt/qt-nowebkit.SlackBuild b/source/l/qt/qt-nowebkit.SlackBuild index 6ce37fad4..c2c92f7d9 100755 --- a/source/l/qt/qt-nowebkit.SlackBuild +++ b/source/l/qt/qt-nowebkit.SlackBuild @@ -43,7 +43,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=qt VERSION=$(ls qt-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev) -BUILD=${BUILD:-12} +BUILD=${BUILD:-13} NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} @@ -116,54 +116,54 @@ if [ $ARCH = "i486" -o $ARCH = "i586" ]; then sed -i -e "s/QMAKE_CFLAGS_RELEASE += -O2/QMAKE_CFLAGS_RELEASE += $SLKCFLAGS/" mkspecs/common/gcc-base.conf || exit 1 fi -# Fix path to mysql header -zcat $CWD/qt.mysql.h.diff.gz | patch -p1 --verbose || exit 1 - -# Stupid idea - remove it: -zcat $CWD/qt.webkit-no_Werror.patch.gz | patch -p1 --verbose || exit 1 - -# Fix crash on malformed GIF images (CVE-2014-0190): -zcat $CWD/qt.fix.broken.gif.crash.diff.gz | patch -p1 --verbose || exit 1 - -# Implement qsystemtrayicon support for Qt4 applications in Plasma 5: -zcat $CWD/qt.qsystemtrayicon-plugin-system.diff.gz | patch -p1 --verbose || exit 1 - -# Apply LibreOffice fixes (QTBUG-37380, QTBUG-34614, QTBUG-38585), -# Native KDE4 file pickers will be disabled at runtime otherwise. -zcat $CWD/qt.glib-honor-ExcludeSocketNotifiers-flag.diff.gz | patch -p1 --verbose || exit 1 -zcat $CWD/qt.qclipboard_fix_recursive.patch.gz | patch -p1 --verbose || exit 1 -zcat $CWD/qt.qclipboard_delay.patch.gz | patch -p1 --verbose || exit 1 - -# Fix for moc with glibc-2.25+: -zcat $CWD/qt.QTBUG-22829.diff.gz | patch -p1 --verbose || exit 1 - -# Another macro definition workaround with newer libraries: -zcat $CWD/qt.QT_VERSION_CHECK.diff.gz | patch -p1 --verbose || exit 1 - -# Fix build with gcc 6 or gcc 7: -zcat $CWD/qt.gcc6.diff.gz | patch -p1 --verbose || exit 1 - -# Fix test with ALSA 1.1.x: -zcat $CWD/qt.alsa-1.1.diff.gz | patch -p1 --verbose || exit 1 - -# Fix QTreeView crash: -zcat $CWD/qt.qtreeview.crash.diff.gz | patch -p1 --verbose || exit 1 - -# Increase entity limit: -zcat $CWD/qt.QTBUG-35459.diff.gz | patch -p1 --verbose || exit 1 - -# Don't emit a misleading icu4c debug error: -zcat $CWD/qt.icu4c.nodebug.diff.gz | patch -p1 --verbose || exit 1 - -## Fix building with icu4c >= 59 -#zcat $CWD/qt.icu59.patch.gz | patch -p1 --verbose || exit 1 - -# The header files for icu59+ require C++11, so compile only the source file -# that uses them with that C++ standard: -zcat $CWD/qt.icu59.c++11.diff.gz | patch -p1 --verbose || exit 1 - -# Support OpenSSL 1.1.x: -zcat $CWD/qt4.openssl-1.1.diff.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-uic_multilib.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-cupsEnumDests.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-prefer_adwaita_on_gnome.patch.gz | patch -p0 --verbose || exit 1 +#zcat $CWD/patches/qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.3-qdbusconnection_no_debug.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.1-qt3support_debuginfo.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.4-qmake_pkgconfig_requires_private.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-firebird.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-mysql_config.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.6.2-cups.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-mariadb.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.0-tp-qtreeview-kpackagekit-crash.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.6-s390.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.3-no_Werror.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-tds_no_strict_aliasing.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.0-s390-atomic.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.2--assistant-crash.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-4.8-poll.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-34614.patch.gz | patch -p0 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-38585.patch.gz | patch -p0 --verbose || exit 1 +#zcat $CWD/patches/qt-everywhere-opensource-src-4.8.6-system-clucene.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-mips64.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-gcc6.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-qgtkstyle_disable_gtk_theme_check.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-aarch64.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-qforeach.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-crash-in-qppmhandler.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch.gz | patch -p1 --verbose || exit 1 +#zcat $CWD/patches/qt-everywhere-opensource-src-4.8.0-tp-multilib-optflags.patch.gz | patch -p1 --verbose || exit 1 +zcat $CWD/patches/qt-everywhere-opensource-src-4.8.7-icu59.patch.gz | patch -p1 --verbose || exit 1 # All other distros I checked build with -no-webkit. But this has the downside of # breaking the build when QtWebKit is present on the build system and some things diff --git a/source/l/qt/qt.QTBUG-22829.diff b/source/l/qt/qt.QTBUG-22829.diff deleted file mode 100644 index b6f5525dc..000000000 --- a/source/l/qt/qt.QTBUG-22829.diff +++ /dev/null @@ -1,17 +0,0 @@ -diff -up qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp.QTBUG-22829 qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp ---- qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp.QTBUG-22829 2015-05-07 09:14:44.000000000 -0500 -+++ qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp 2016-12-08 12:32:46.638962448 -0600 -@@ -188,8 +188,12 @@ int runMoc(int _argc, char **_argv) - pp.macros["Q_MOC_RUN"]; - pp.macros["__cplusplus"]; - -- // Workaround a bug while parsing the boost/type_traits/has_operator.hpp header. See QTBUG-22829 -+ // Workaround a bugs while parsing some boost headers. See QTBUG-22829 - pp.macros["BOOST_TT_HAS_OPERATOR_HPP_INCLUDED"]; -+ pp.macros["BOOST_LEXICAL_CAST_INCLUDED"]; -+ pp.macros["BOOST_NEXT_PRIOR_HPP_INCLUDED"]; -+ pp.macros["BOOST_TYPE_TRAITS_HPP"]; -+ pp.macros["_SYS_SYSMACROS_H_OUTER"]; - - QByteArray filename; - QByteArray output; diff --git a/source/l/qt/qt.QTBUG-35459.diff b/source/l/qt/qt.QTBUG-35459.diff deleted file mode 100644 index dede8324d..000000000 --- a/source/l/qt/qt.QTBUG-35459.diff +++ /dev/null @@ -1,12 +0,0 @@ -diff -ur qt-everywhere-opensource-src-4.8.5-CVE-2013-4549/src/xml/sax/qxml.cpp qt-everywhere-opensource-src-4.8.5-QTBUG-35459/src/xml/sax/qxml.cpp ---- qt-everywhere-opensource-src-4.8.5-CVE-2013-4549/src/xml/sax/qxml.cpp 2013-12-05 19:23:33.000000000 +0100 -+++ qt-everywhere-opensource-src-4.8.5-QTBUG-35459/src/xml/sax/qxml.cpp 2014-01-13 20:13:59.000000000 +0100 -@@ -428,7 +428,7 @@ - // for the DTD currently being parsed. - static const int dtdRecursionLimit = 2; - // The maximum amount of characters an entity value may contain, after expansion. -- static const int entityCharacterLimit = 1024; -+ static const int entityCharacterLimit = 65536; - - const QString &string(); - void stringClear(); diff --git a/source/l/qt/qt.QT_VERSION_CHECK.diff b/source/l/qt/qt.QT_VERSION_CHECK.diff deleted file mode 100644 index 9bce98ff8..000000000 --- a/source/l/qt/qt.QT_VERSION_CHECK.diff +++ /dev/null @@ -1,12 +0,0 @@ -diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h.majmin qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h ---- qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h.majmin 2015-05-07 09:14:48.000000000 -0500 -+++ qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h 2016-12-08 12:10:29.677359701 -0600 -@@ -52,7 +52,7 @@ - /* - can be used like #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) - */ --#define QT_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch)) -+#define QT_VERSION_CHECK(qt_version_check_major, qt_version_check_minor, qt_version_check_patch) ((qt_version_check_major<<16)|(qt_version_check_minor<<8)|(qt_version_check_patch)) - - #define QT_PACKAGEDATE_STR "2015-05-07" - diff --git a/source/l/qt/qt.alsa-1.1.diff b/source/l/qt/qt.alsa-1.1.diff deleted file mode 100644 index aaa15cb77..000000000 --- a/source/l/qt/qt.alsa-1.1.diff +++ /dev/null @@ -1,12 +0,0 @@ -diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp.than qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp ---- qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp.than 2016-02-10 16:31:02.450152334 +0100 -+++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp 2016-02-10 16:31:51.495307579 +0100 -@@ -40,7 +40,7 @@ - ****************************************************************************/ - - #include --#if(!(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 10)) -+#if(!(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 10))) - #error "Alsa version found too old, require >= 1.0.10" - #endif - diff --git a/source/l/qt/qt.fix.broken.gif.crash.diff b/source/l/qt/qt.fix.broken.gif.crash.diff deleted file mode 100644 index 7f74d71f1..000000000 --- a/source/l/qt/qt.fix.broken.gif.crash.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- ./src/gui/image/qgifhandler.cpp.orig 2014-04-10 13:37:12.000000000 -0500 -+++ ./src/gui/image/qgifhandler.cpp 2014-04-25 13:42:48.468692269 -0500 -@@ -358,6 +358,13 @@ - bits = image->bits(); - memset(bits, 0, image->byteCount()); - } -+ -+ // Check if the previous attempt to create the image failed. If it -+ // did then the image is broken and we should give up. -+ if (image->isNull()) { -+ state = Error; -+ return -1; -+ } - - disposePrevious(image); - disposed = false; diff --git a/source/l/qt/qt.gcc6.diff b/source/l/qt/qt.gcc6.diff deleted file mode 100644 index aaf1c497f..000000000 --- a/source/l/qt/qt.gcc6.diff +++ /dev/null @@ -1,35 +0,0 @@ -diff -up qt-everywhere-opensource-src-4.8.7/configure.gcc6 qt-everywhere-opensource-src-4.8.7/configure ---- qt-everywhere-opensource-src-4.8.7/configure.gcc6 2016-04-15 07:04:19.430268222 -0500 -+++ qt-everywhere-opensource-src-4.8.7/configure 2016-04-15 07:05:22.157568689 -0500 -@@ -7744,7 +7744,7 @@ case "$XPLATFORM" in - *-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" -@@ -8060,7 +8060,7 @@ g++*) - 3.*) - COMPILER_VERSION="3.*" - ;; -- 5*|4.*) -+ 8*|7*|6*|5*|4.*) - 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 ---- 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 - ForegroundShift = 10, - BackgroundShift = 20, - SpecialShift = 20, -- ForegroundMask = ((1 << ForegroundShift) - 1) << ForegroundShift, -- BackgroundMask = ((1 << BackgroundShift) - 1) << BackgroundShift -+ ForegroundMask = 0x1f << ForegroundShift, -+ BackgroundMask = 0x7 << BackgroundShift - }; - - public: diff --git a/source/l/qt/qt.glib-honor-ExcludeSocketNotifiers-flag.diff b/source/l/qt/qt.glib-honor-ExcludeSocketNotifiers-flag.diff deleted file mode 100644 index 6949bbfef..000000000 --- a/source/l/qt/qt.glib-honor-ExcludeSocketNotifiers-flag.diff +++ /dev/null @@ -1,63 +0,0 @@ -Author: Jan-Marek Glogowski -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 pollfds; - }; - -@@ -80,6 +81,9 @@ static gboolean socketNotifierSourceChec - GSocketNotifierSource *src = reinterpret_cast(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(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(g_source_new(&socketNotifierSourceFuncs, - sizeof(GSocketNotifierSource))); - (void) new (&socketNotifierSource->pollfds) QList(); -+ 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/source/l/qt/qt.icu4c.nodebug.diff b/source/l/qt/qt.icu4c.nodebug.diff deleted file mode 100644 index 9c53f3c26..000000000 --- a/source/l/qt/qt.icu4c.nodebug.diff +++ /dev/null @@ -1,23 +0,0 @@ -diff -up qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp.icu_no_debug qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp ---- qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp.icu_no_debug 2012-09-06 02:33:45.000000000 -0500 -+++ qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp 2012-09-11 09:04:21.542379795 -0500 -@@ -84,7 +84,9 @@ bool qt_initIcu(const QString &localeStr - QLibrary lib(QLatin1String("icui18n"), QLatin1String(U_ICU_VERSION_SHORT)); - lib.setLoadHints(QLibrary::ImprovedSearchHeuristics); - if (!lib.load()) { -+#ifndef QT_NO_DEBUG - qWarning() << "Unable to load library icui18n" << lib.errorString(); -+#endif - status = ErrorLoading; - return false; - } -@@ -114,7 +116,9 @@ bool qt_initIcu(const QString &localeStr - QLibrary ucLib(QLatin1String("icuuc"), QLatin1String(U_ICU_VERSION_SHORT)); - ucLib.setLoadHints(QLibrary::ImprovedSearchHeuristics); - if (!ucLib.load()) { -+#ifndef QT_NO_DEBUG - qWarning() << "Unable to load library icuuc" << ucLib.errorString(); -+#endif - status = ErrorLoading; - return false; - } diff --git a/source/l/qt/qt.icu59.c++11.diff b/source/l/qt/qt.icu59.c++11.diff deleted file mode 100644 index 3edcdef02..000000000 --- a/source/l/qt/qt.icu59.c++11.diff +++ /dev/null @@ -1,28 +0,0 @@ -From: Fabian Vogt -Subject: Fix build with ICU >= 59 - -ICU >= 59 requires C++11 for its header files. -Qt can't be compiled with -std=c++11 as a whole, so only enable -it for qlocale_icu.cpp. - -Index: qt-everywhere-opensource-src-4.8.7/src/corelib/tools/tools.pri -=================================================================== ---- qt-everywhere-opensource-src-4.8.7.orig/src/corelib/tools/tools.pri -+++ qt-everywhere-opensource-src-4.8.7/src/corelib/tools/tools.pri -@@ -102,7 +102,15 @@ contains(QT_CONFIG, zlib):include($$PWD/ - else:include($$PWD/../../3rdparty/zlib_dependency.pri) - - contains(QT_CONFIG,icu) { -- SOURCES += tools/qlocale_icu.cpp -+ cpp11.name = cpp11 -+ cpp11.input = SOURCES_CPP11 -+ cpp11.dependency_type = TYPE_C -+ cpp11.variable_out = OBJECTS -+ cpp11.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_IN_BASE}$${first(QMAKE_EXT_OBJ)} -+ cpp11.commands = $${QMAKE_CXX} $(CXXFLAGS) -std=c++11 $(INCPATH) -c ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} -+ QMAKE_EXTRA_COMPILERS += cpp11 -+ -+ SOURCES_CPP11 += tools/qlocale_icu.cpp - DEFINES += QT_USE_ICU - } - diff --git a/source/l/qt/qt.icu59.patch b/source/l/qt/qt.icu59.patch deleted file mode 100644 index ed6a8b52b..000000000 --- a/source/l/qt/qt.icu59.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- qt-everywhere-opensource-src-4.8.7/src/corelib/tools/qlocale_icu.cpp~ 2017-04-25 07:42:22.000000000 +0000 -+++ qt-everywhere-opensource-src-4.8.7/src/corelib/tools/qlocale_icu.cpp 2017-04-25 07:44:34.675363008 +0000 -@@ -43,6 +43,8 @@ - #include "qlibrary.h" - #include "qdebug.h" - -+#define UCHAR_TYPE unsigned short -+ - #include "unicode/uversion.h" - #include "unicode/ucol.h" - diff --git a/source/l/qt/qt.mysql.h.diff b/source/l/qt/qt.mysql.h.diff deleted file mode 100644 index 7a41be591..000000000 --- a/source/l/qt/qt.mysql.h.diff +++ /dev/null @@ -1,12 +0,0 @@ -diff -Nur qt-x11-opensource-src-4.3.4.orig/src/sql/drivers/mysql/qsql_mysql.h qt-x11-opensource-src-4.3.4/src/sql/drivers/mysql/qsql_mysql.h ---- qt-x11-opensource-src-4.3.4.orig/src/sql/drivers/mysql/qsql_mysql.h 2008-04-02 20:52:11.739343004 -0500 -+++ qt-x11-opensource-src-4.3.4/src/sql/drivers/mysql/qsql_mysql.h 2008-04-02 20:52:05.970610574 -0500 -@@ -51,7 +51,7 @@ - #include - #endif - --#include -+#include - - #ifdef QT_PLUGIN - #define Q_EXPORT_SQLDRIVER_MYSQL diff --git a/source/l/qt/qt.qclipboard_delay.patch b/source/l/qt/qt.qclipboard_delay.patch deleted file mode 100644 index dcdf51c00..000000000 --- a/source/l/qt/qt.qclipboard_delay.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- a/src/gui/kernel/qclipboard_x11.cpp.sav 2014-04-25 09:52:03.855693228 +0200 -+++ b/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/source/l/qt/qt.qclipboard_fix_recursive.patch b/source/l/qt/qt.qclipboard_fix_recursive.patch deleted file mode 100644 index d9fe24b7f..000000000 --- a/source/l/qt/qt.qclipboard_fix_recursive.patch +++ /dev/null @@ -1,94 +0,0 @@ ---- a/src/corelib/kernel/qeventdispatcher_glib.cpp.sav 2014-03-28 15:26:37.000000000 +0100 -+++ b/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(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(s); - return (!canWait - || (source->serialNumber != source->lastSerialNumber)); - } -@@ -284,8 +292,14 @@ static gboolean postEventSourceDispatch( - { - GPostEventSource *source = reinterpret_cast(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(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; - ---- a/src/corelib/kernel/qeventdispatcher_unix.cpp.sav 2013-06-07 07:16:52.000000000 +0200 -+++ b/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/source/l/qt/qt.qsystemtrayicon-plugin-system.diff b/source/l/qt/qt.qsystemtrayicon-plugin-system.diff deleted file mode 100644 index 2466a16b4..000000000 --- a/source/l/qt/qt.qsystemtrayicon-plugin-system.diff +++ /dev/null @@ -1,1466 +0,0 @@ -Description: Introduce a plugin system for QSystemTrayIcon. - Designed to be used with sni-qt (https://launchpad.net/sni-qt) -Author: agateau@kde.org -Forwarded: no - -Introduce a plugin system for QSystemTrayIcon. Designed to be used with sni-qt -(https://launchpad.net/sni-qt) ---- - examples/desktop/systray/window.cpp | 40 ++ - examples/desktop/systray/window.h | 6 - src/gui/util/qabstractsystemtrayiconsys.cpp | 65 +++ - src/gui/util/qabstractsystemtrayiconsys_p.h | 106 ++++++ - src/gui/util/qsystemtrayicon.cpp | 6 - src/gui/util/qsystemtrayicon_p.h | 85 ++--- - src/gui/util/qsystemtrayicon_x11.cpp | 356 ++++----------------- - src/gui/util/qxembedsystemtrayicon_x11.cpp | 469 ++++++++++++++++++++++++++++ - src/gui/util/qxembedsystemtrayicon_x11_p.h | 104 ++++++ - src/gui/util/util.pri | 7 - 10 files changed, 916 insertions(+), 328 deletions(-) - ---- a/examples/desktop/systray/window.cpp -+++ b/examples/desktop/systray/window.cpp -@@ -158,15 +158,23 @@ - iconComboBox->addItem(QIcon(":/images/bad.svg"), tr("Bad")); - iconComboBox->addItem(QIcon(":/images/heart.svg"), tr("Heart")); - iconComboBox->addItem(QIcon(":/images/trash.svg"), tr("Trash")); -+ iconComboBox->addItem(QIcon::fromTheme("system-file-manager"), tr("File Manager")); - - showIconCheckBox = new QCheckBox(tr("Show icon")); - showIconCheckBox->setChecked(true); - -+#if defined(Q_WS_X11) -+ jitToolTipCheckBox = new QCheckBox(tr("Just In Time Tooltip")); -+#endif -+ - QHBoxLayout *iconLayout = new QHBoxLayout; - iconLayout->addWidget(iconLabel); - iconLayout->addWidget(iconComboBox); - iconLayout->addStretch(); - iconLayout->addWidget(showIconCheckBox); -+#if defined(Q_WS_X11) -+ iconLayout->addWidget(jitToolTipCheckBox); -+#endif - iconGroupBox->setLayout(iconLayout); - } - -@@ -254,5 +262,37 @@ - trayIconMenu->addAction(quitAction); - - trayIcon = new QSystemTrayIcon(this); -+ QByteArray category = qgetenv("SNI_CATEGORY"); -+ if (!category.isEmpty()) { -+ trayIcon->setProperty("_qt_sni_category", QString::fromLocal8Bit(category)); -+ } - trayIcon->setContextMenu(trayIconMenu); -+ -+#if defined(Q_WS_X11) -+ trayIcon->installEventFilter(this); -+#endif -+} -+ -+#if defined(Q_WS_X11) -+bool Window::eventFilter(QObject *, QEvent *event) -+{ -+ switch(event->type()) { -+ case QEvent::ToolTip: -+ if (jitToolTipCheckBox->isChecked()) { -+ QString timeString = QTime::currentTime().toString(); -+ trayIcon->setToolTip(tr("Current Time: %1").arg(timeString)); -+ } -+ break; -+ case QEvent::Wheel: { -+ QWheelEvent *wheelEvent = static_cast(event); -+ int delta = wheelEvent->delta() > 0 ? 1 : -1; -+ int index = (iconComboBox->currentIndex() + delta) % iconComboBox->count(); -+ iconComboBox->setCurrentIndex(index); -+ break; -+ } -+ default: -+ break; -+ } -+ return false; - } -+#endif ---- a/examples/desktop/systray/window.h -+++ b/examples/desktop/systray/window.h -@@ -69,6 +69,9 @@ - - protected: - void closeEvent(QCloseEvent *event); -+#if defined(Q_WS_X11) -+ bool eventFilter(QObject *object, QEvent *event); -+#endif - - private slots: - void setIcon(int index); -@@ -86,6 +89,9 @@ - QLabel *iconLabel; - QComboBox *iconComboBox; - QCheckBox *showIconCheckBox; -+#if defined(Q_WS_X11) -+ QCheckBox *jitToolTipCheckBox; -+#endif - - QGroupBox *messageGroupBox; - QLabel *typeLabel; ---- /dev/null -+++ b/src/gui/util/qabstractsystemtrayiconsys.cpp -@@ -0,0 +1,65 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -+** All rights reserved. -+** Contact: Nokia Corporation (qt-info@nokia.com) -+** -+** This file is part of the QtGui module of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** GNU Lesser General Public License Usage -+** This file may be used under the terms of the GNU Lesser General Public -+** License version 2.1 as published by the Free Software Foundation and -+** appearing in the file LICENSE.LGPL included in the packaging of this -+** file. Please review the following information to ensure the GNU Lesser -+** General Public License version 2.1 requirements will be met: -+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Nokia gives you certain additional -+** rights. These rights are described in the Nokia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU General -+** Public License version 3.0 as published by the Free Software Foundation -+** and appearing in the file LICENSE.GPL included in the packaging of this -+** file. Please review the following information to ensure the GNU General -+** Public License version 3.0 requirements will be met: -+** http://www.gnu.org/copyleft/gpl.html. -+** -+** Other Usage -+** Alternatively, this file may be used in accordance with the terms and -+** conditions contained in a signed written agreement between you and Nokia. -+** -+** -+** -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+#ifndef QT_NO_SYSTEMTRAYICON -+ -+#include "qabstractsystemtrayiconsys_p.h" -+ -+ -+QSystemTrayIconSysFactoryInterface::QSystemTrayIconSysFactoryInterface() -+{ -+} -+ -+///////////////////////////////////////////////// -+QAbstractSystemTrayIconSys::QAbstractSystemTrayIconSys(QSystemTrayIcon *icon) -+: trayIcon(icon) -+{ -+} -+ -+QAbstractSystemTrayIconSys::~QAbstractSystemTrayIconSys() -+{ -+} -+ -+void QAbstractSystemTrayIconSys::sendActivated(QSystemTrayIcon::ActivationReason reason) -+{ -+ qtsystray_sendActivated(trayIcon, reason); -+} -+ -+#endif ---- /dev/null -+++ b/src/gui/util/qabstractsystemtrayiconsys_p.h -@@ -0,0 +1,106 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -+** All rights reserved. -+** Contact: Nokia Corporation (qt-info@nokia.com) -+** -+** This file is part of the QtGui module of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** GNU Lesser General Public License Usage -+** This file may be used under the terms of the GNU Lesser General Public -+** License version 2.1 as published by the Free Software Foundation and -+** appearing in the file LICENSE.LGPL included in the packaging of this -+** file. Please review the following information to ensure the GNU Lesser -+** General Public License version 2.1 requirements will be met: -+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Nokia gives you certain additional -+** rights. These rights are described in the Nokia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU General -+** Public License version 3.0 as published by the Free Software Foundation -+** and appearing in the file LICENSE.GPL included in the packaging of this -+** file. Please review the following information to ensure the GNU General -+** Public License version 3.0 requirements will be met: -+** http://www.gnu.org/copyleft/gpl.html. -+** -+** Other Usage -+** Alternatively, this file may be used in accordance with the terms and -+** conditions contained in a signed written agreement between you and Nokia. -+** -+** -+** -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QABSTRACTSYSTEMTRAYICONSYS_P_H -+#define QABSTRACTSYSTEMTRAYICONSYS_P_H -+ -+// -+// W A R N I N G -+// ------------- -+// -+// This file is not part of the Qt API. It exists for the convenience -+// of a number of Qt sources files. This header file may change from -+// version to version without notice, or even be removed. -+// -+// We mean it. -+// -+ -+#ifndef QT_NO_SYSTEMTRAYICON -+ -+#include -+#include -+ -+class QAbstractSystemTrayIconSys; -+ -+class Q_GUI_EXPORT QSystemTrayIconSysFactoryInterface : public QObject, public QFactoryInterface -+{ -+ Q_OBJECT -+public: -+ QSystemTrayIconSysFactoryInterface(); -+ virtual QAbstractSystemTrayIconSys * create(QSystemTrayIcon *) = 0; -+ virtual bool isAvailable() const = 0; -+ -+ // \reimp -+ virtual QStringList keys() const { return QStringList() << QLatin1String("default"); } -+ -+Q_SIGNALS: -+ void availableChanged(bool); -+}; -+ -+#define QSystemTrayIconSysFactoryInterface_iid "com.nokia.qt.QSystemTrayIconSysFactoryInterface" -+Q_DECLARE_INTERFACE(QSystemTrayIconSysFactoryInterface, QSystemTrayIconSysFactoryInterface_iid) -+ -+class QRect; -+ -+class Q_GUI_EXPORT QAbstractSystemTrayIconSys -+{ -+public: -+ QAbstractSystemTrayIconSys(QSystemTrayIcon *icon); -+ virtual ~QAbstractSystemTrayIconSys(); -+ -+ virtual QRect geometry() const = 0; -+ virtual void updateVisibility() = 0; -+ virtual void updateIcon() = 0; -+ virtual void updateToolTip() = 0; -+ virtual void updateMenu() = 0; -+ virtual void showMessage(const QString &title, const QString &message, -+ QSystemTrayIcon::MessageIcon icon, int msecs) = 0; -+ -+ void sendActivated(QSystemTrayIcon::ActivationReason); -+ -+protected: -+ QSystemTrayIcon *trayIcon; -+}; -+ -+#endif // QT_NO_SYSTEMTRAYICON -+ -+#endif // QABSTRACTSYSTEMTRAYICONSYS_P_H -+ ---- a/src/gui/util/qsystemtrayicon.cpp -+++ b/src/gui/util/qsystemtrayicon.cpp -@@ -287,12 +287,6 @@ - */ - bool QSystemTrayIcon::event(QEvent *e) - { --#if defined(Q_WS_X11) -- if (e->type() == QEvent::ToolTip) { -- Q_D(QSystemTrayIcon); -- return d->sys->deliverToolTipEvent(e); -- } --#endif - return QObject::event(e); - } - ---- a/src/gui/util/qsystemtrayicon_p.h -+++ b/src/gui/util/qsystemtrayicon_p.h -@@ -62,10 +62,17 @@ - #include "QtGui/qpixmap.h" - #include "QtCore/qstring.h" - #include "QtCore/qpointer.h" -+#if defined(Q_WS_X11) -+#include "QtCore/qset.h" -+#endif - - QT_BEGIN_NAMESPACE - -+#if defined(Q_WS_X11) -+class QAbstractSystemTrayIconSys; -+#else - class QSystemTrayIconSys; -+#endif - class QToolButton; - class QLabel; - -@@ -75,6 +82,9 @@ - - public: - QSystemTrayIconPrivate() : sys(0), visible(false) { } -+ #if defined(Q_WS_X11) -+ ~QSystemTrayIconPrivate(); -+ #endif - - void install_sys(); - void remove_sys(); -@@ -90,7 +100,11 @@ - QPointer menu; - QIcon icon; - QString toolTip; -+ #if defined(Q_WS_X11) -+ QAbstractSystemTrayIconSys *sys; -+ #else - QSystemTrayIconSys *sys; -+ #endif - bool visible; - }; - -@@ -123,60 +137,37 @@ - }; - - #if defined(Q_WS_X11) --QT_BEGIN_INCLUDE_NAMESPACE --#include --#include --#include --#include --QT_END_INCLUDE_NAMESPACE -+class QSystemTrayIconSysFactoryInterface; - --class QSystemTrayIconSys : public QWidget -+/** -+ * This class acts as a composite QSystemTrayIconSysFactory: It can create -+ * instances of QAbstractSystemTrayIconSys* using either a plugin or the -+ * builtin factory and will cause QSystemTrayIconPrivate to recreate their -+ * 'sys' instances if the plugin availability changes. -+ */ -+class QSystemTrayIconSysFactory : public QObject - { -- friend class QSystemTrayIconPrivate; -- -+ Q_OBJECT - public: -- QSystemTrayIconSys(QSystemTrayIcon *q); -- ~QSystemTrayIconSys(); -- enum { -- SYSTEM_TRAY_REQUEST_DOCK = 0, -- SYSTEM_TRAY_BEGIN_MESSAGE = 1, -- SYSTEM_TRAY_CANCEL_MESSAGE =2 -- }; -- -- void addToTray(); -- void updateIcon(); -- XVisualInfo* getSysTrayVisualInfo(); -- -- // QObject::event is public but QWidget's ::event() re-implementation -- // is protected ;( -- inline bool deliverToolTipEvent(QEvent *e) -- { return QWidget::event(e); } -- -- static Window sysTrayWindow; -- static QList trayIcons; -- static QCoreApplication::EventFilter oldEventFilter; -- static bool sysTrayTracker(void *message, long *result); -- static Window locateSystemTray(); -- static Atom sysTraySelection; -- static XVisualInfo sysTrayVisual; -+ QSystemTrayIconSysFactory(); -+ void registerSystemTrayIconPrivate(QSystemTrayIconPrivate *iconPrivate); -+ void unregisterSystemTrayIconPrivate(QSystemTrayIconPrivate *iconPrivate); - --protected: -- void paintEvent(QPaintEvent *pe); -- void resizeEvent(QResizeEvent *re); -- bool x11Event(XEvent *event); -- void mousePressEvent(QMouseEvent *event); -- void mouseDoubleClickEvent(QMouseEvent *event); --#ifndef QT_NO_WHEELEVENT -- void wheelEvent(QWheelEvent *event); --#endif -- bool event(QEvent *e); -+ QAbstractSystemTrayIconSys *create(QSystemTrayIcon *) const; -+ -+ bool isAvailable() const; -+ -+private Q_SLOTS: -+ void refreshTrayIconPrivates(); - - private: -- QPixmap background; -- QSystemTrayIcon *q; -- Colormap colormap; -+ QSystemTrayIconSysFactoryInterface *factory() const; -+ void loadPluginFactory(); -+ -+ QSystemTrayIconSysFactoryInterface *pluginFactory; -+ QSet trayIconPrivates; - }; --#endif // Q_WS_X11 -+#endif - - QT_END_NAMESPACE - ---- a/src/gui/util/qsystemtrayicon_x11.cpp -+++ b/src/gui/util/qsystemtrayicon_x11.cpp -@@ -38,311 +38,122 @@ - ** $QT_END_LICENSE$ - ** - ****************************************************************************/ -+#ifndef QT_NO_SYSTEMTRAYICON -+ -+#include - --#include "private/qt_x11_p.h" --#include "qlabel.h" --#include "qx11info_x11.h" --#include "qpainter.h" --#include "qpixmap.h" --#include "qbitmap.h" --#include "qevent.h" --#include "qapplication.h" --#include "qlist.h" --#include "qmenu.h" --#include "qtimer.h" - #include "qsystemtrayicon_p.h" --#include "qpaintengine.h" -+#include "qabstractsystemtrayiconsys_p.h" -+#include "qcoreapplication.h" -+#include "qxembedsystemtrayicon_x11_p.h" - --#ifndef QT_NO_SYSTEMTRAYICON - QT_BEGIN_NAMESPACE - --Window QSystemTrayIconSys::sysTrayWindow = XNone; --QList QSystemTrayIconSys::trayIcons; --QCoreApplication::EventFilter QSystemTrayIconSys::oldEventFilter = 0; --Atom QSystemTrayIconSys::sysTraySelection = XNone; --XVisualInfo QSystemTrayIconSys::sysTrayVisual = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -- --// Locate the system tray --Window QSystemTrayIconSys::locateSystemTray() --{ -- Display *display = QX11Info::display(); -- if (sysTraySelection == XNone) { -- int screen = QX11Info::appScreen(); -- QString net_sys_tray = QString::fromLatin1("_NET_SYSTEM_TRAY_S%1").arg(screen); -- sysTraySelection = XInternAtom(display, net_sys_tray.toLatin1(), False); -- } -- -- return XGetSelectionOwner(QX11Info::display(), sysTraySelection); --} -+Q_GLOBAL_STATIC(QSystemTrayIconSysFactory, qt_guiSystemTrayIconSysFactory) - --XVisualInfo* QSystemTrayIconSys::getSysTrayVisualInfo() -+QSystemTrayIconSysFactory::QSystemTrayIconSysFactory() -+: pluginFactory(0) - { -- Display *display = QX11Info::display(); -- -- if (!sysTrayVisual.visual) { -- Window win = locateSystemTray(); -- if (win != XNone) { -- Atom actual_type; -- int actual_format; -- ulong nitems, bytes_remaining; -- uchar *data = 0; -- int result = XGetWindowProperty(display, win, ATOM(_NET_SYSTEM_TRAY_VISUAL), 0, 1, -- False, XA_VISUALID, &actual_type, -- &actual_format, &nitems, &bytes_remaining, &data); -- VisualID vid = 0; -- if (result == Success && data && actual_type == XA_VISUALID && actual_format == 32 && -- nitems == 1 && bytes_remaining == 0) -- vid = *(VisualID*)data; -- if (data) -- XFree(data); -- if (vid == 0) -- return 0; -- -- uint mask = VisualIDMask; -- XVisualInfo *vi, rvi; -- int count; -- rvi.visualid = vid; -- vi = XGetVisualInfo(display, mask, &rvi, &count); -- if (vi) { -- sysTrayVisual = vi[0]; -- XFree((char*)vi); -- } -- if (sysTrayVisual.depth != 32) -- memset(&sysTrayVisual, 0, sizeof(sysTrayVisual)); -- } -- } -- -- return sysTrayVisual.visual ? &sysTrayVisual : 0; - } - --bool QSystemTrayIconSys::sysTrayTracker(void *message, long *result) -+void QSystemTrayIconSysFactory::loadPluginFactory() - { -- bool retval = false; -- if (QSystemTrayIconSys::oldEventFilter) -- retval = QSystemTrayIconSys::oldEventFilter(message, result); -- -- if (trayIcons.isEmpty()) -- return retval; -- -- Display *display = QX11Info::display(); -- XEvent *ev = (XEvent *)message; -- if (ev->type == DestroyNotify && ev->xany.window == sysTrayWindow) { -- sysTrayWindow = locateSystemTray(); -- memset(&sysTrayVisual, 0, sizeof(sysTrayVisual)); -- for (int i = 0; i < trayIcons.count(); i++) { -- if (sysTrayWindow == XNone) { -- QBalloonTip::hideBalloon(); -- trayIcons[i]->hide(); // still no luck -- trayIcons[i]->destroy(); -- trayIcons[i]->create(); -- } else -- trayIcons[i]->addToTray(); // add it to the new tray -- } -- retval = true; -- } else if (ev->type == ClientMessage && sysTrayWindow == XNone) { -- static Atom manager_atom = XInternAtom(display, "MANAGER", False); -- XClientMessageEvent *cm = (XClientMessageEvent *)message; -- if ((cm->message_type == manager_atom) && ((Atom)cm->data.l[1] == sysTraySelection)) { -- sysTrayWindow = cm->data.l[2]; -- memset(&sysTrayVisual, 0, sizeof(sysTrayVisual)); -- XSelectInput(display, sysTrayWindow, StructureNotifyMask); -- for (int i = 0; i < trayIcons.count(); i++) { -- trayIcons[i]->addToTray(); -- } -- retval = true; -- } -- } else if (ev->type == PropertyNotify && ev->xproperty.atom == ATOM(_NET_SYSTEM_TRAY_VISUAL) && -- ev->xproperty.window == sysTrayWindow) { -- memset(&sysTrayVisual, 0, sizeof(sysTrayVisual)); -- for (int i = 0; i < trayIcons.count(); i++) { -- trayIcons[i]->addToTray(); -- } -- } -- -- return retval; --} -- --QSystemTrayIconSys::QSystemTrayIconSys(QSystemTrayIcon *q) -- : QWidget(0, Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint), -- q(q), colormap(0) --{ -- setAttribute(Qt::WA_AlwaysShowToolTips); -- setAttribute(Qt::WA_QuitOnClose, false); -- setAttribute(Qt::WA_NoSystemBackground, true); -- setAttribute(Qt::WA_PaintOnScreen); -- -- static bool eventFilterAdded = false; -- Display *display = QX11Info::display(); -- if (!eventFilterAdded) { -- oldEventFilter = qApp->setEventFilter(sysTrayTracker); -- eventFilterAdded = true; -- Window root = QX11Info::appRootWindow(); -- XWindowAttributes attr; -- XGetWindowAttributes(display, root, &attr); -- if ((attr.your_event_mask & StructureNotifyMask) != StructureNotifyMask) { -- (void) QApplication::desktop(); // lame trick to ensure our event mask is not overridden -- XSelectInput(display, root, attr.your_event_mask | StructureNotifyMask); // for MANAGER selection -- } -+ if (pluginFactory) { -+ return; - } -- if (trayIcons.isEmpty()) { -- sysTrayWindow = locateSystemTray(); -- if (sysTrayWindow != XNone) -- XSelectInput(display, sysTrayWindow, StructureNotifyMask); // track tray events -+#ifndef QT_NO_LIBRARY -+ QFactoryLoader loader(QSystemTrayIconSysFactoryInterface_iid, QLatin1String("/systemtrayicon")); -+ pluginFactory = qobject_cast(loader.instance(QLatin1String("default"))); -+ if (pluginFactory) { -+ // Set parent to ensure factory destructor is called when application -+ // is closed -+ pluginFactory->setParent(QCoreApplication::instance()); -+ connect(pluginFactory, SIGNAL(availableChanged(bool)), SLOT(refreshTrayIconPrivates())); - } -- trayIcons.append(this); -- setMouseTracking(true); --#ifndef QT_NO_TOOLTIP -- setToolTip(q->toolTip()); --#endif -- if (sysTrayWindow != XNone) -- addToTray(); -+#endif // QT_NO_LIBRARY - } - --QSystemTrayIconSys::~QSystemTrayIconSys() -+QSystemTrayIconSysFactoryInterface *QSystemTrayIconSysFactory::factory() const - { -- trayIcons.removeAt(trayIcons.indexOf(this)); -- Display *display = QX11Info::display(); -- if (trayIcons.isEmpty()) { -- if (sysTrayWindow == XNone) -- return; -- if (display) -- XSelectInput(display, sysTrayWindow, 0); // stop tracking the tray -- sysTrayWindow = XNone; -+ if (!pluginFactory) { -+ const_cast(this)->loadPluginFactory(); - } -- if (colormap) -- XFreeColormap(display, colormap); -+ if (pluginFactory && pluginFactory->isAvailable()) { -+ return pluginFactory; -+ } -+ static QXEmbedSystemTrayIconSysFactory def; -+ return def.isAvailable() ? &def : 0; - } - --void QSystemTrayIconSys::addToTray() -+void QSystemTrayIconSysFactory::refreshTrayIconPrivates() - { -- Q_ASSERT(sysTrayWindow != XNone); -- Display *display = QX11Info::display(); -- -- XVisualInfo *vi = getSysTrayVisualInfo(); -- if (vi && vi->visual) { -- Window root = RootWindow(display, vi->screen); -- Window p = root; -- if (QWidget *pw = parentWidget()) -- p = pw->effectiveWinId(); -- colormap = XCreateColormap(display, root, vi->visual, AllocNone); -- XSetWindowAttributes wsa; -- wsa.background_pixmap = 0; -- wsa.colormap = colormap; -- wsa.background_pixel = 0; -- wsa.border_pixel = 0; -- Window wid = XCreateWindow(display, p, -1, -1, 1, 1, -- 0, vi->depth, InputOutput, vi->visual, -- CWBackPixmap|CWBackPixel|CWBorderPixel|CWColormap, &wsa); -- create(wid); -- } else { -- XSetWindowBackgroundPixmap(display, winId(), ParentRelative); -- } -- -- // GNOME, NET WM Specification -- static Atom netwm_tray_atom = XInternAtom(display, "_NET_SYSTEM_TRAY_OPCODE", False); -- long l[5] = { CurrentTime, SYSTEM_TRAY_REQUEST_DOCK, static_cast(winId()), 0, 0 }; -- XEvent ev; -- memset(&ev, 0, sizeof(ev)); -- ev.xclient.type = ClientMessage; -- ev.xclient.window = sysTrayWindow; -- ev.xclient.message_type = netwm_tray_atom; -- ev.xclient.format = 32; -- memcpy((char *)&ev.xclient.data, (const char *) l, sizeof(l)); -- XSendEvent(display, sysTrayWindow, False, 0, &ev); -- setMinimumSize(22, 22); // required at least on GNOME --} -- --void QSystemTrayIconSys::updateIcon() --{ -- update(); --} -- --void QSystemTrayIconSys::resizeEvent(QResizeEvent *re) --{ -- QWidget::resizeEvent(re); -- updateIcon(); --} -- --void QSystemTrayIconSys::paintEvent(QPaintEvent*) --{ -- QPainter p(this); -- if (!getSysTrayVisualInfo()) { -- const QRegion oldSystemClip = p.paintEngine()->systemClip(); -- const QRect clearedRect = oldSystemClip.boundingRect(); -- XClearArea(QX11Info::display(), winId(), clearedRect.x(), clearedRect.y(), -- clearedRect.width(), clearedRect.height(), False); -- QPaintEngine *pe = p.paintEngine(); -- pe->setSystemClip(clearedRect); -- q->icon().paint(&p, rect()); -- pe->setSystemClip(oldSystemClip); -- } else { -- p.setCompositionMode(QPainter::CompositionMode_Source); -- p.fillRect(rect(), Qt::transparent); -- p.setCompositionMode(QPainter::CompositionMode_SourceOver); -- q->icon().paint(&p, rect()); -+ Q_FOREACH(QSystemTrayIconPrivate *trayIconPrivate, trayIconPrivates) { -+ if (trayIconPrivate->sys) { -+ delete trayIconPrivate->sys; -+ trayIconPrivate->sys = 0; -+ } -+ // When visible is true, sys is usually not 0 but it can be 0 if the -+ // call to install_sys() failed. -+ if (trayIconPrivate->visible) { -+ trayIconPrivate->install_sys(); -+ } - } - } - --void QSystemTrayIconSys::mousePressEvent(QMouseEvent *ev) -+void QSystemTrayIconSysFactory::registerSystemTrayIconPrivate(QSystemTrayIconPrivate* trayIconPrivate) - { -- QPoint globalPos = ev->globalPos(); -- if (ev->button() == Qt::RightButton && q->contextMenu()) -- q->contextMenu()->popup(globalPos); -- -- if (QBalloonTip::isBalloonVisible()) { -- emit q->messageClicked(); -- QBalloonTip::hideBalloon(); -- } -- -- if (ev->button() == Qt::LeftButton) -- emit q->activated(QSystemTrayIcon::Trigger); -- else if (ev->button() == Qt::RightButton) -- emit q->activated(QSystemTrayIcon::Context); -- else if (ev->button() == Qt::MidButton) -- emit q->activated(QSystemTrayIcon::MiddleClick); -+ trayIconPrivates.insert(trayIconPrivate); - } - --void QSystemTrayIconSys::mouseDoubleClickEvent(QMouseEvent *ev) -+void QSystemTrayIconSysFactory::unregisterSystemTrayIconPrivate(QSystemTrayIconPrivate* trayIconPrivate) - { -- if (ev->button() == Qt::LeftButton) -- emit q->activated(QSystemTrayIcon::DoubleClick); -+ trayIconPrivates.remove(trayIconPrivate); - } - --#ifndef QT_NO_WHEELEVENT --void QSystemTrayIconSys::wheelEvent(QWheelEvent *e) -+QAbstractSystemTrayIconSys *QSystemTrayIconSysFactory::create(QSystemTrayIcon *trayIcon) const - { -- QApplication::sendEvent(q, e); -+ QSystemTrayIconSysFactoryInterface *f = factory(); -+ if (!f) { -+ qWarning("No systemtrayicon available"); -+ return 0; -+ } -+ return f->create(trayIcon); - } --#endif - --bool QSystemTrayIconSys::event(QEvent *e) -+bool QSystemTrayIconSysFactory::isAvailable() const - { -- if (e->type() == QEvent::ToolTip) { -- return QApplication::sendEvent(q, e); -- } -- return QWidget::event(e); -+ return factory(); - } - --bool QSystemTrayIconSys::x11Event(XEvent *event) -+//////////////////////////////////////////////// -+QSystemTrayIconPrivate::~QSystemTrayIconPrivate() - { -- if (event->type == ReparentNotify) -- show(); -- return QWidget::x11Event(event); -+ qt_guiSystemTrayIconSysFactory()->unregisterSystemTrayIconPrivate(this); -+ delete sys; - } - --//////////////////////////////////////////////////////////////////////////// - void QSystemTrayIconPrivate::install_sys() - { - Q_Q(QSystemTrayIcon); -- if (!sys) -- sys = new QSystemTrayIconSys(q); -+ if (!sys) { -+ // Register ourself even if create() fails: our "sys" will get created -+ // later by refreshTrayIconPrivates() if a systemtray becomes -+ // available. This situation can happen for applications which are -+ // started at login time, while the desktop itself is starting up. -+ qt_guiSystemTrayIconSysFactory()->registerSystemTrayIconPrivate(this); -+ sys = qt_guiSystemTrayIconSysFactory()->create(q); -+ if (!sys) { -+ return; -+ } -+ } -+ sys->updateVisibility(); - } - - QRect QSystemTrayIconPrivate::geometry_sys() const - { -- if (!sys) -- return QRect(); -- return QRect(sys->mapToGlobal(QPoint(0, 0)), sys->size()); -+ if (!sys || !visible) -+ return QRect(); -+ return sys->geometry(); - } - - void QSystemTrayIconPrivate::remove_sys() -@@ -350,35 +161,35 @@ - if (!sys) - return; - QBalloonTip::hideBalloon(); -- sys->hide(); // this should do the trick, but... -- delete sys; // wm may resize system tray only for DestroyEvents -- sys = 0; -+ sys->updateVisibility(); - } - - void QSystemTrayIconPrivate::updateIcon_sys() - { -- if (!sys) -+ if (!sys || !visible) - return; - sys->updateIcon(); - } - - void QSystemTrayIconPrivate::updateMenu_sys() - { -- -+ if (!sys || !visible) -+ return; -+ sys->updateMenu(); - } - - void QSystemTrayIconPrivate::updateToolTip_sys() - { -- if (!sys) -+ if (!sys || !visible) - return; - #ifndef QT_NO_TOOLTIP -- sys->setToolTip(toolTip); -+ sys->updateToolTip(); - #endif - } - - bool QSystemTrayIconPrivate::isSystemTrayAvailable_sys() - { -- return QSystemTrayIconSys::locateSystemTray() != XNone; -+ return qt_guiSystemTrayIconSysFactory()->isAvailable(); - } - - bool QSystemTrayIconPrivate::supportsMessages_sys() -@@ -389,12 +200,9 @@ - void QSystemTrayIconPrivate::showMessage_sys(const QString &message, const QString &title, - QSystemTrayIcon::MessageIcon icon, int msecs) - { -- if (!sys) -+ if (!sys || !visible) - return; -- QPoint g = sys->mapToGlobal(QPoint(0, 0)); -- QBalloonTip::showBalloon(icon, message, title, sys->q, -- QPoint(g.x() + sys->width()/2, g.y() + sys->height()/2), -- msecs); -+ sys->showMessage(message, title, icon, msecs); - } - - QT_END_NAMESPACE ---- /dev/null -+++ b/src/gui/util/qxembedsystemtrayicon_x11.cpp -@@ -0,0 +1,469 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -+** All rights reserved. -+** Contact: Nokia Corporation (qt-info@nokia.com) -+** -+** This file is part of the QtGui module of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** GNU Lesser General Public License Usage -+** This file may be used under the terms of the GNU Lesser General Public -+** License version 2.1 as published by the Free Software Foundation and -+** appearing in the file LICENSE.LGPL included in the packaging of this -+** file. Please review the following information to ensure the GNU Lesser -+** General Public License version 2.1 requirements will be met: -+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Nokia gives you certain additional -+** rights. These rights are described in the Nokia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU General -+** Public License version 3.0 as published by the Free Software Foundation -+** and appearing in the file LICENSE.GPL included in the packaging of this -+** file. Please review the following information to ensure the GNU General -+** Public License version 3.0 requirements will be met: -+** http://www.gnu.org/copyleft/gpl.html. -+** -+** Other Usage -+** Alternatively, this file may be used in accordance with the terms and -+** conditions contained in a signed written agreement between you and Nokia. -+** -+** -+** -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+#include "qxembedsystemtrayicon_x11_p.h" -+ -+#ifndef QT_NO_SYSTEMTRAYICON -+ -+#include "private/qt_x11_p.h" -+#include "qapplication.h" -+#include "qevent.h" -+#include "qlist.h" -+#include "qmenu.h" -+#include "qpainter.h" -+#include "qpaintengine.h" -+#include "qsystemtrayicon_p.h" -+#include "qx11info_x11.h" -+ -+QT_BEGIN_INCLUDE_NAMESPACE -+#include -+#include -+#include -+#include -+QT_END_INCLUDE_NAMESPACE -+ -+QT_BEGIN_NAMESPACE -+ -+class QSystemTrayIconWidget : public QWidget -+{ -+public: -+ QSystemTrayIconWidget(QSystemTrayIcon *q, QXEmbedSystemTrayIconSys *s); -+ ~QSystemTrayIconWidget(); -+ -+ static Window locateSystemTray(); -+ -+protected: -+ void paintEvent(QPaintEvent *pe); -+ void resizeEvent(QResizeEvent *re); -+ bool x11Event(XEvent *event); -+ void mousePressEvent(QMouseEvent *event); -+ void mouseDoubleClickEvent(QMouseEvent *event); -+#ifndef QT_NO_WHEELEVENT -+ void wheelEvent(QWheelEvent *event); -+#endif -+ bool event(QEvent *e); -+ -+private: -+ enum { -+ SYSTEM_TRAY_REQUEST_DOCK = 0, -+ SYSTEM_TRAY_BEGIN_MESSAGE = 1, -+ SYSTEM_TRAY_CANCEL_MESSAGE =2 -+ }; -+ -+ void addToTray(); -+ static XVisualInfo* getSysTrayVisualInfo(); -+ -+ static Window sysTrayWindow; -+ static QList trayIcons; -+ static QCoreApplication::EventFilter oldEventFilter; -+ static bool sysTrayTracker(void *message, long *result); -+ static Atom sysTraySelection; -+ static XVisualInfo sysTrayVisual; -+ -+ QSystemTrayIcon *q; -+ QXEmbedSystemTrayIconSys *sys; -+ Colormap colormap; -+}; -+ -+Window QSystemTrayIconWidget::sysTrayWindow = XNone; -+QList QSystemTrayIconWidget::trayIcons; -+QCoreApplication::EventFilter QSystemTrayIconWidget::oldEventFilter = 0; -+Atom QSystemTrayIconWidget::sysTraySelection = XNone; -+XVisualInfo QSystemTrayIconWidget::sysTrayVisual = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -+ -+QSystemTrayIconWidget::QSystemTrayIconWidget(QSystemTrayIcon* q, QXEmbedSystemTrayIconSys* sys) -+: QWidget(0, Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint) -+, q(q) -+, sys(sys) -+, colormap(0) -+{ -+ setAttribute(Qt::WA_AlwaysShowToolTips); -+ setAttribute(Qt::WA_QuitOnClose, false); -+ setAttribute(Qt::WA_NoSystemBackground, true); -+ setAttribute(Qt::WA_PaintOnScreen); -+ setMouseTracking(true); -+#ifndef QT_NO_TOOLTIP -+ setToolTip(q->toolTip()); -+#endif -+ -+ static bool eventFilterAdded = false; -+ Display *display = QX11Info::display(); -+ if (!eventFilterAdded) { -+ oldEventFilter = qApp->setEventFilter(sysTrayTracker); -+ eventFilterAdded = true; -+ Window root = QX11Info::appRootWindow(); -+ XWindowAttributes attr; -+ XGetWindowAttributes(display, root, &attr); -+ if ((attr.your_event_mask & StructureNotifyMask) != StructureNotifyMask) { -+ (void) QApplication::desktop(); // lame trick to ensure our event mask is not overridden -+ XSelectInput(display, root, attr.your_event_mask | StructureNotifyMask); // for MANAGER selection -+ } -+ } -+ if (trayIcons.isEmpty()) { -+ sysTrayWindow = locateSystemTray(); -+ if (sysTrayWindow != XNone) -+ XSelectInput(display, sysTrayWindow, StructureNotifyMask); // track tray events -+ } -+ trayIcons.append(this); -+ if (sysTrayWindow != XNone) -+ addToTray(); -+} -+ -+QSystemTrayIconWidget::~QSystemTrayIconWidget() -+{ -+ trayIcons.removeAt(trayIcons.indexOf(this)); -+ Display *display = QX11Info::display(); -+ if (trayIcons.isEmpty()) { -+ if (sysTrayWindow == XNone) -+ return; -+ if (display) -+ XSelectInput(display, sysTrayWindow, 0); // stop tracking the tray -+ sysTrayWindow = XNone; -+ } -+ if (colormap) -+ XFreeColormap(display, colormap); -+} -+ -+void QSystemTrayIconWidget::resizeEvent(QResizeEvent *re) -+{ -+ QWidget::resizeEvent(re); -+ update(); -+} -+ -+void QSystemTrayIconWidget::paintEvent(QPaintEvent*) -+{ -+ QPainter p(this); -+ if (!getSysTrayVisualInfo()) { -+ const QRegion oldSystemClip = p.paintEngine()->systemClip(); -+ const QRect clearedRect = oldSystemClip.boundingRect(); -+ XClearArea(QX11Info::display(), winId(), clearedRect.x(), clearedRect.y(), -+ clearedRect.width(), clearedRect.height(), False); -+ QPaintEngine *pe = p.paintEngine(); -+ pe->setSystemClip(clearedRect); -+ q->icon().paint(&p, rect()); -+ pe->setSystemClip(oldSystemClip); -+ } else { -+ p.setCompositionMode(QPainter::CompositionMode_Source); -+ p.fillRect(rect(), Qt::transparent); -+ p.setCompositionMode(QPainter::CompositionMode_SourceOver); -+ q->icon().paint(&p, rect()); -+ } -+} -+ -+void QSystemTrayIconWidget::mousePressEvent(QMouseEvent *ev) -+{ -+ QPoint globalPos = ev->globalPos(); -+ if (ev->button() == Qt::RightButton && q->contextMenu()) -+ q->contextMenu()->popup(globalPos); -+ -+ if (QBalloonTip::isBalloonVisible()) { -+ QMetaObject::invokeMethod(q, "messageClicked"); -+ QBalloonTip::hideBalloon(); -+ } -+ -+ if (ev->button() == Qt::LeftButton) -+ qtsystray_sendActivated(q, QSystemTrayIcon::Trigger); -+ else if (ev->button() == Qt::RightButton) -+ qtsystray_sendActivated(q, QSystemTrayIcon::Context); -+ else if (ev->button() == Qt::MidButton) -+ qtsystray_sendActivated(q, QSystemTrayIcon::MiddleClick); -+} -+ -+void QSystemTrayIconWidget::mouseDoubleClickEvent(QMouseEvent *ev) -+{ -+ if (ev->button() == Qt::LeftButton) -+ qtsystray_sendActivated(q, QSystemTrayIcon::DoubleClick); -+} -+ -+#ifndef QT_NO_WHEELEVENT -+void QSystemTrayIconWidget::wheelEvent(QWheelEvent *e) -+{ -+ sys->sendWheelEventToTrayIcon(e->delta(), e->orientation()); -+} -+#endif -+ -+bool QSystemTrayIconWidget::event(QEvent *e) -+{ -+ if (e->type() == QEvent::ToolTip) { -+ sys->sendToolTipEventToTrayIcon(); -+ } -+ return QWidget::event(e); -+} -+ -+bool QSystemTrayIconWidget::x11Event(XEvent *event) -+{ -+ if (event->type == ReparentNotify) -+ show(); -+ return QWidget::x11Event(event); -+} -+ -+// Locate the system tray -+Window QSystemTrayIconWidget::locateSystemTray() -+{ -+ Display *display = QX11Info::display(); -+ if (sysTraySelection == XNone) { -+ int screen = QX11Info::appScreen(); -+ QString net_sys_tray = QString::fromLatin1("_NET_SYSTEM_TRAY_S%1").arg(screen); -+ sysTraySelection = XInternAtom(display, net_sys_tray.toLatin1(), False); -+ } -+ -+ return XGetSelectionOwner(QX11Info::display(), sysTraySelection); -+} -+ -+XVisualInfo* QSystemTrayIconWidget::getSysTrayVisualInfo() -+{ -+ Display *display = QX11Info::display(); -+ -+ if (!sysTrayVisual.visual) { -+ Window win = locateSystemTray(); -+ if (win != XNone) { -+ Atom actual_type; -+ int actual_format; -+ ulong nitems, bytes_remaining; -+ uchar *data = 0; -+ int result = XGetWindowProperty(display, win, ATOM(_NET_SYSTEM_TRAY_VISUAL), 0, 1, -+ False, XA_VISUALID, &actual_type, -+ &actual_format, &nitems, &bytes_remaining, &data); -+ VisualID vid = 0; -+ if (result == Success && data && actual_type == XA_VISUALID && actual_format == 32 && -+ nitems == 1 && bytes_remaining == 0) -+ vid = *(VisualID*)data; -+ if (data) -+ XFree(data); -+ if (vid == 0) -+ return 0; -+ -+ uint mask = VisualIDMask; -+ XVisualInfo *vi, rvi; -+ int count; -+ rvi.visualid = vid; -+ vi = XGetVisualInfo(display, mask, &rvi, &count); -+ if (vi) { -+ sysTrayVisual = vi[0]; -+ XFree((char*)vi); -+ } -+ if (sysTrayVisual.depth != 32) -+ memset(&sysTrayVisual, 0, sizeof(sysTrayVisual)); -+ } -+ } -+ -+ return sysTrayVisual.visual ? &sysTrayVisual : 0; -+} -+ -+bool QSystemTrayIconWidget::sysTrayTracker(void *message, long *result) -+{ -+ bool retval = false; -+ if (QSystemTrayIconWidget::oldEventFilter) -+ retval = QSystemTrayIconWidget::oldEventFilter(message, result); -+ -+ if (trayIcons.isEmpty()) -+ return retval; -+ -+ Display *display = QX11Info::display(); -+ XEvent *ev = (XEvent *)message; -+ if (ev->type == DestroyNotify && ev->xany.window == sysTrayWindow) { -+ sysTrayWindow = locateSystemTray(); -+ memset(&sysTrayVisual, 0, sizeof(sysTrayVisual)); -+ for (int i = 0; i < trayIcons.count(); i++) { -+ if (sysTrayWindow == XNone) { -+ QBalloonTip::hideBalloon(); -+ trayIcons[i]->hide(); // still no luck -+ trayIcons[i]->destroy(); -+ trayIcons[i]->create(); -+ } else -+ trayIcons[i]->addToTray(); // add it to the new tray -+ } -+ retval = true; -+ } else if (ev->type == ClientMessage && sysTrayWindow == XNone) { -+ static Atom manager_atom = XInternAtom(display, "MANAGER", False); -+ XClientMessageEvent *cm = (XClientMessageEvent *)message; -+ if ((cm->message_type == manager_atom) && ((Atom)cm->data.l[1] == sysTraySelection)) { -+ sysTrayWindow = cm->data.l[2]; -+ memset(&sysTrayVisual, 0, sizeof(sysTrayVisual)); -+ XSelectInput(display, sysTrayWindow, StructureNotifyMask); -+ for (int i = 0; i < trayIcons.count(); i++) { -+ trayIcons[i]->addToTray(); -+ } -+ retval = true; -+ } -+ } else if (ev->type == PropertyNotify && ev->xproperty.atom == ATOM(_NET_SYSTEM_TRAY_VISUAL) && -+ ev->xproperty.window == sysTrayWindow) { -+ memset(&sysTrayVisual, 0, sizeof(sysTrayVisual)); -+ for (int i = 0; i < trayIcons.count(); i++) { -+ trayIcons[i]->addToTray(); -+ } -+ } -+ -+ return retval; -+} -+ -+void QSystemTrayIconWidget::addToTray() -+{ -+ Q_ASSERT(sysTrayWindow != XNone); -+ Display *display = QX11Info::display(); -+ -+ XVisualInfo *vi = getSysTrayVisualInfo(); -+ if (vi && vi->visual) { -+ Window root = RootWindow(display, vi->screen); -+ Window p = root; -+ if (QWidget *pw = parentWidget()) -+ p = pw->effectiveWinId(); -+ colormap = XCreateColormap(display, root, vi->visual, AllocNone); -+ XSetWindowAttributes wsa; -+ wsa.background_pixmap = 0; -+ wsa.colormap = colormap; -+ wsa.background_pixel = 0; -+ wsa.border_pixel = 0; -+ Window wid = XCreateWindow(display, p, -1, -1, 1, 1, -+ 0, vi->depth, InputOutput, vi->visual, -+ CWBackPixmap|CWBackPixel|CWBorderPixel|CWColormap, &wsa); -+ create(wid); -+ } else { -+ XSetWindowBackgroundPixmap(display, winId(), ParentRelative); -+ } -+ -+ // GNOME, NET WM Specification -+ static Atom netwm_tray_atom = XInternAtom(display, "_NET_SYSTEM_TRAY_OPCODE", False); -+ long l[5] = { CurrentTime, SYSTEM_TRAY_REQUEST_DOCK, static_cast(winId()), 0, 0 }; -+ XEvent ev; -+ memset(&ev, 0, sizeof(ev)); -+ ev.xclient.type = ClientMessage; -+ ev.xclient.window = sysTrayWindow; -+ ev.xclient.message_type = netwm_tray_atom; -+ ev.xclient.format = 32; -+ memcpy((char *)&ev.xclient.data, (const char *) l, sizeof(l)); -+ XSendEvent(display, sysTrayWindow, False, 0, &ev); -+ setMinimumSize(22, 22); // required at least on GNOME -+} -+ -+//////////////////////////////////////////////////////////////////////////// -+QXEmbedSystemTrayIconSys::QXEmbedSystemTrayIconSys(QSystemTrayIcon *q) -+: QAbstractSystemTrayIconSys(q) -+, widget(0) -+{ -+} -+ -+QXEmbedSystemTrayIconSys::~QXEmbedSystemTrayIconSys() -+{ -+ delete widget; -+} -+ -+QRect QXEmbedSystemTrayIconSys::geometry() const -+{ -+ if (!widget) -+ return QRect(); -+ return QRect(widget->mapToGlobal(QPoint(0, 0)), widget->size()); -+} -+ -+void QXEmbedSystemTrayIconSys::updateIcon() -+{ -+ if (!widget) -+ return; -+ widget->update(); -+} -+ -+void QXEmbedSystemTrayIconSys::updateToolTip() -+{ -+ if (!widget) -+ return; -+ widget->setToolTip(trayIcon->toolTip()); -+} -+ -+void QXEmbedSystemTrayIconSys::showMessage(const QString &message, const QString &title, -+ QSystemTrayIcon::MessageIcon icon, int msecs) -+{ -+ if (!widget) -+ return; -+ QPoint point = geometry().center(); -+ QBalloonTip::showBalloon(icon, message, title, trayIcon, point, msecs); -+} -+ -+void QXEmbedSystemTrayIconSys::updateVisibility() -+{ -+ bool visible = trayIcon->isVisible(); -+ if (visible && !widget) -+ widget = new QSystemTrayIconWidget(trayIcon, this); -+ else if (!visible && widget) { -+ delete widget; -+ widget = 0; -+ } -+} -+ -+void QXEmbedSystemTrayIconSys::sendToolTipEventToTrayIcon() -+{ -+#ifndef QT_NO_TOOLTIP -+ // Pass the event through QSystemTrayIcon so that it gets a chance to -+ // update the tooltip, then asks widget to show the tooltip -+ Q_ASSERT(widget); -+ QPoint globalPos = QCursor::pos(); -+ QPoint pos = widget->mapFromGlobal(globalPos); -+ QHelpEvent event(QEvent::ToolTip, pos, globalPos); -+ QApplication::sendEvent(trayIcon, &event); -+#endif -+} -+ -+void QXEmbedSystemTrayIconSys::sendWheelEventToTrayIcon(int delta, Qt::Orientation orientation) -+{ -+#ifndef QT_NO_WHEELEVENT -+ Q_ASSERT(widget); -+ QPoint globalPos = QCursor::pos(); -+ QPoint pos = widget->mapFromGlobal(globalPos); -+ QWheelEvent event(pos, globalPos, delta, Qt::NoButton, Qt::NoModifier, orientation); -+ QApplication::sendEvent(trayIcon, &event); -+#endif -+} -+ -+void QXEmbedSystemTrayIconSys::updateMenu() -+{ -+} -+ -+///////////////////////////////////////////////////////////// -+QAbstractSystemTrayIconSys * QXEmbedSystemTrayIconSysFactory::create(QSystemTrayIcon *icon) -+{ -+ return new QXEmbedSystemTrayIconSys(icon); -+} -+ -+bool QXEmbedSystemTrayIconSysFactory::isAvailable() const -+{ -+ return QSystemTrayIconWidget::locateSystemTray() != XNone; -+} -+ -+QT_END_NAMESPACE -+#endif //QT_NO_SYSTEMTRAYICON ---- /dev/null -+++ b/src/gui/util/qxembedsystemtrayicon_x11_p.h -@@ -0,0 +1,104 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -+** All rights reserved. -+** Contact: Nokia Corporation (qt-info@nokia.com) -+** -+** This file is part of the QtGui module of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** GNU Lesser General Public License Usage -+** This file may be used under the terms of the GNU Lesser General Public -+** License version 2.1 as published by the Free Software Foundation and -+** appearing in the file LICENSE.LGPL included in the packaging of this -+** file. Please review the following information to ensure the GNU Lesser -+** General Public License version 2.1 requirements will be met: -+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Nokia gives you certain additional -+** rights. These rights are described in the Nokia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU General -+** Public License version 3.0 as published by the Free Software Foundation -+** and appearing in the file LICENSE.GPL included in the packaging of this -+** file. Please review the following information to ensure the GNU General -+** Public License version 3.0 requirements will be met: -+** http://www.gnu.org/copyleft/gpl.html. -+** -+** Other Usage -+** Alternatively, this file may be used in accordance with the terms and -+** conditions contained in a signed written agreement between you and Nokia. -+** -+** -+** -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QXEMBEDSYSTEMTRAYICON_X11_P_H -+#define QXEMBEDSYSTEMTRAYICON_X11_P_H -+ -+// -+// W A R N I N G -+// ------------- -+// -+// This file is not part of the Qt API. It exists for the convenience -+// of a number of Qt sources files. This header file may change from -+// version to version without notice, or even be removed. -+// -+// We mean it. -+// -+ -+#ifndef QT_NO_SYSTEMTRAYICON -+ -+#include "qabstractsystemtrayiconsys_p.h" -+ -+QT_BEGIN_NAMESPACE -+ -+class QSystemTrayIconWidget; -+ -+class QXEmbedSystemTrayIconSys : public QAbstractSystemTrayIconSys -+{ -+public: -+ QXEmbedSystemTrayIconSys(QSystemTrayIcon *); -+ ~QXEmbedSystemTrayIconSys(); -+ -+ QRect geometry() const; -+ -+ void updateVisibility(); -+ -+ void updateIcon(); -+ -+ void updateToolTip(); -+ -+ void updateMenu(); -+ -+ void showMessage(const QString &message, const QString &title, -+ QSystemTrayIcon::MessageIcon icon, int msecs); -+ -+private: -+ friend class QSystemTrayIconWidget; -+ QSystemTrayIconWidget *widget; -+ -+ void sendToolTipEventToTrayIcon(); -+ -+ void sendWheelEventToTrayIcon(int delta, Qt::Orientation orientation); -+}; -+ -+struct QXEmbedSystemTrayIconSysFactory : public QSystemTrayIconSysFactoryInterface -+{ -+ QAbstractSystemTrayIconSys * create(QSystemTrayIcon *trayIcon); -+ bool isAvailable() const; -+}; -+ -+ -+QT_END_NAMESPACE -+ -+#endif // QT_NO_SYSTEMTRAYICON -+ -+#endif // QXEMBEDSYSTEMTRAYICON_X11_P_H -+ ---- a/src/gui/util/util.pri -+++ b/src/gui/util/util.pri -@@ -29,8 +29,13 @@ - } - - unix:x11 { -+ HEADERS += \ -+ util/qabstractsystemtrayiconsys_p.h \ -+ util/qxembedsystemtrayicon_x11_p.h - SOURCES += \ -- util/qsystemtrayicon_x11.cpp -+ util/qabstractsystemtrayiconsys.cpp \ -+ util/qsystemtrayicon_x11.cpp \ -+ util/qxembedsystemtrayicon_x11.cpp - } - - embedded|qpa { diff --git a/source/l/qt/qt.qtreeview.crash.diff b/source/l/qt/qt.qtreeview.crash.diff deleted file mode 100644 index 947f7582d..000000000 --- a/source/l/qt/qt.qtreeview.crash.diff +++ /dev/null @@ -1,12 +0,0 @@ -diff -up qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp.qtreeview-kpackagekit-crash qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp ---- qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp.qtreeview-kpackagekit-crash 2011-05-23 12:26:21.000000000 +0200 -+++ qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp 2011-05-25 13:24:33.137315194 +0200 -@@ -3215,7 +3215,7 @@ int QTreeViewPrivate::itemHeight(int ite - return defaultItemHeight; - if (viewItems.isEmpty()) - return 0; -- const QModelIndex &index = viewItems.at(item).index; -+ QModelIndex index = viewItems.at(item).index; - if (!index.isValid()) - return 0; - int height = viewItems.at(item).height; diff --git a/source/l/qt/qt.webkit-no_Werror.patch b/source/l/qt/qt.webkit-no_Werror.patch deleted file mode 100644 index c8d730e46..000000000 --- a/source/l/qt/qt.webkit-no_Werror.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- qt-everywhere-opensource-src-4.8.4/src/3rdparty/webkit/Source/WebKit.pri.no_Werror 2012-12-02 15:59:44.891550783 +0100 -+++ qt-everywhere-opensource-src-4.8.4/src/3rdparty/webkit/Source/WebKit.pri 2012-12-02 16:52:47.384406539 +0100 -@@ -102,8 +102,6 @@ - - # Treat warnings as errors on x86/Linux/GCC - linux-g++* { -- !CONFIG(standalone_package):if(isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386)): QMAKE_CXXFLAGS += -Werror -- - greaterThan(QT_GCC_MAJOR_VERSION, 3):greaterThan(QT_GCC_MINOR_VERSION, 5) { - if (!contains(QMAKE_CXXFLAGS, -std=c++0x) && !contains(QMAKE_CXXFLAGS, -std=gnu++0x)) { - # We need to deactivate those warnings because some names conflicts with upcoming c++0x types (e.g.nullptr). diff --git a/source/l/qt/qt4.openssl-1.1.diff b/source/l/qt/qt4.openssl-1.1.diff deleted file mode 100644 index 607613e58..000000000 --- a/source/l/qt/qt4.openssl-1.1.diff +++ /dev/null @@ -1,646 +0,0 @@ ---- ./src/network/ssl/qsslsocket_openssl_symbols_p.h.orig 2015-05-07 09:14:44.000000000 -0500 -+++ ./src/network/ssl/qsslsocket_openssl_symbols_p.h 2018-05-06 14:40:01.247000361 -0500 -@@ -213,9 +213,15 @@ - BIO_METHOD *q_BIO_s_mem(); - int q_BIO_write(BIO *a, const void *b, int c); - int q_BN_num_bits(const BIGNUM *a); -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - int q_CRYPTO_num_locks(); - void q_CRYPTO_set_locking_callback(void (*a)(int, int, const char *, int)); - void q_CRYPTO_set_id_callback(unsigned long (*a)()); -+#else -+#define q_CRYPTO_num_locks() 1 -+#define q_CRYPTO_set_locking_callback(a) -+#define q_CRYPTO_set_id_callback(a) -+#endif - void q_CRYPTO_free(void *a); - void q_DSA_free(DSA *a); - #if OPENSSL_VERSION_NUMBER >= 0x00908000L -@@ -258,6 +264,7 @@ - void q_RAND_seed(const void *a, int b); - int q_RAND_status(); - void q_RSA_free(RSA *a); -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - int q_sk_num(STACK *a); - void q_sk_pop_free(STACK *a, void (*b)(void *)); - #if OPENSSL_VERSION_NUMBER >= 0x10000000L -@@ -267,6 +274,16 @@ - void q_sk_free(STACK *a); - char * q_sk_value(STACK *a, int b); - #endif -+#else -+int q_OPENSSL_sk_num(STACK *a); -+void q_OPENSSL_sk_pop_free(STACK *a, void (*b)(void *)); -+void q_OPENSSL_sk_free(_STACK *a); -+void * q_OPENSSL_sk_value(STACK *a, int b); -+#define q_sk_num q_OPENSSL_sk_num -+#define q_sk_pop_free q_OPENSSL_sk_pop_free -+#define q_sk_free q_OPENSSL_sk_free -+#define q_sk_value q_OPENSSL_sk_value -+#endif - int q_SSL_accept(SSL *a); - int q_SSL_clear(SSL *a); - char *q_SSL_CIPHER_description(SSL_CIPHER *a, char *b, int c); -@@ -314,8 +331,14 @@ - #else - long q_SSL_get_verify_result(SSL *a); - #endif -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - int q_SSL_library_init(); - void q_SSL_load_error_strings(); -+#else -+int q_OPENSSL_init_ssl(uint64_t opts, void *settings); -+#define q_SSL_library_init() q_OPENSSL_init_ssl(0, NULL) -+#define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) -+#endif - SSL *q_SSL_new(SSL_CTX *a); - #if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT) - long q_SSL_ctrl(SSL *ssl,int cmd, long larg, void *parg); -@@ -328,11 +351,21 @@ - #if OPENSSL_VERSION_NUMBER >= 0x10000000L - const SSL_METHOD *q_SSLv2_client_method(); - const SSL_METHOD *q_SSLv3_client_method(); -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - const SSL_METHOD *q_SSLv23_client_method(); -+#else -+const SSL_METHOD *q_TLS_client_method(); -+#define q_SSLv23_client_method q_TLS_client_method -+#endif - const SSL_METHOD *q_TLSv1_client_method(); - const SSL_METHOD *q_SSLv2_server_method(); - const SSL_METHOD *q_SSLv3_server_method(); -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - const SSL_METHOD *q_SSLv23_server_method(); -+#else -+const SSL_METHOD *q_TLS_server_method(); -+#define q_SSLv23_server_method q_TLS_server_method -+#endif - const SSL_METHOD *q_TLSv1_server_method(); - #else - SSL_METHOD *q_SSLv2_client_method(); -@@ -377,7 +410,12 @@ - int q_X509_STORE_CTX_get_error(X509_STORE_CTX *ctx); - int q_X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx); - X509 *q_X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx); -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - STACK_OF(X509) *q_X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx); -+#else -+STACK_OF(X509) *q_X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx); -+#define q_X509_STORE_CTX_get_chain q_X509_STORE_CTX_get0_chain -+#endif - - #define q_BIO_get_mem_data(b, pp) (int)q_BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp) - #define q_BIO_pending(b) (int)q_BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) -@@ -399,7 +437,25 @@ - PEM_ASN1_write_bio((int (*)(void*, unsigned char**))q_i2d_DSAPrivateKey,PEM_STRING_DSA,\ - bp,(char *)x,enc,kstr,klen,cb,u) - #endif -+ -+X509_STORE * q_SSL_CTX_get_cert_store(const SSL_CTX *ctx); -+ASN1_INTEGER * q_X509_get_serialNumber(X509 *x); -+ -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - #define q_SSL_CTX_set_options(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL) -+#define q_X509_get_version(x) X509_get_version(x) -+#else -+int q_EVP_PKEY_id(const EVP_PKEY *pkey); -+int q_EVP_PKEY_base_id(const EVP_PKEY *pkey); -+int q_SSL_CIPHER_get_bits(const SSL_CIPHER *cipher, int *alg_bits); -+long q_SSL_CTX_set_options(SSL_CTX *ctx, long options); -+long q_X509_get_version(X509 *x); -+X509_PUBKEY * q_X509_get_X509_PUBKEY(X509 *x); -+int q_RSA_bits(const RSA *rsa); -+int q_DSA_security_bits(const DSA *dsa); -+void q_DSA_get0_pqg(const DSA *d, BIGNUM **p, BIGNUM **q, BIGNUM **g); -+#endif -+ - #define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st) - #define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i) - #define q_sk_GENERAL_NAME_num(st) q_SKM_sk_num(GENERAL_NAME, (st)) -@@ -410,8 +466,17 @@ - #define q_sk_SSL_CIPHER_value(st, i) q_SKM_sk_value(SSL_CIPHER, (st), (i)) - #define q_SSL_CTX_add_extra_chain_cert(ctx,x509) \ - q_SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509) -+ -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - #define q_X509_get_notAfter(x) X509_get_notAfter(x) - #define q_X509_get_notBefore(x) X509_get_notBefore(x) -+#else -+ASN1_TIME *q_X509_getm_notAfter(X509 *x); -+ASN1_TIME *q_X509_getm_notBefore(X509 *x); -+#define q_X509_get_notAfter(x) q_X509_getm_notAfter(x) -+#define q_X509_get_notBefore(x) q_X509_getm_notBefore(x) -+#endif -+ - #define q_EVP_PKEY_assign_RSA(pkey,rsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ - (char *)(rsa)) - #define q_EVP_PKEY_assign_DSA(pkey,dsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ -@@ -421,10 +486,21 @@ - #else - #define q_OpenSSL_add_all_algorithms() q_OPENSSL_add_all_algorithms_noconf() - #endif -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - void q_OPENSSL_add_all_algorithms_noconf(); - void q_OPENSSL_add_all_algorithms_conf(); -+#else -+int q_OPENSSL_init_crypto(uint64_t opts, void *settings); -+#define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS | OPENSSL_INIT_ADD_ALL_DIGESTS | OPENSSL_INIT_LOAD_CONFIG, NULL) -+# define q_OPENSSL_add_all_algorithms_noconf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) -+#endif - int q_SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, const char *CApath); -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - long q_SSLeay(); -+#else -+unsigned long q_OpenSSL_version_num(); -+#define q_SSLeay q_OpenSSL_version_num -+#endif - - // Helper function - class QDateTime; ---- ./src/network/ssl/qsslcertificate.cpp.orig 2015-05-07 09:14:44.000000000 -0500 -+++ ./src/network/ssl/qsslcertificate.cpp 2018-05-06 14:40:01.246000361 -0500 -@@ -259,10 +259,10 @@ - QByteArray QSslCertificate::version() const - { - QMutexLocker lock(QMutexPool::globalInstanceGet(d.data())); -- if (d->versionString.isEmpty() && d->x509) -+ if (d->versionString.isEmpty() && d->x509) { - d->versionString = -- QByteArray::number(qlonglong(q_ASN1_INTEGER_get(d->x509->cert_info->version)) + 1); -- -+ QByteArray::number(qlonglong(q_X509_get_version(d->x509)) + 1); -+ } - return d->versionString; - } - -@@ -276,7 +276,7 @@ - { - QMutexLocker lock(QMutexPool::globalInstanceGet(d.data())); - if (d->serialNumberString.isEmpty() && d->x509) { -- ASN1_INTEGER *serialNumber = d->x509->cert_info->serialNumber; -+ ASN1_INTEGER *serialNumber = q_X509_get_serialNumber(d->x509); - // if we cannot convert to a long, just output the hexadecimal number - if (serialNumber->length > 4) { - QByteArray hexString; -@@ -489,24 +489,33 @@ - QSslKey key; - - key.d->type = QSsl::PublicKey; -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - X509_PUBKEY *xkey = d->x509->cert_info->key; -+#else -+ X509_PUBKEY *xkey = q_X509_get_X509_PUBKEY(d->x509); -+#endif - EVP_PKEY *pkey = q_X509_PUBKEY_get(xkey); - Q_ASSERT(pkey); - -- if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_RSA) { -+ int key_id; -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ key_id = q_EVP_PKEY_type(pkey->type); -+#else -+ key_id = q_EVP_PKEY_base_id(pkey); -+#endif -+ if (key_id == EVP_PKEY_RSA) { - key.d->rsa = q_EVP_PKEY_get1_RSA(pkey); - key.d->algorithm = QSsl::Rsa; - key.d->isNull = false; -- } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DSA) { -+ } else if (key_id == EVP_PKEY_DSA) { - key.d->dsa = q_EVP_PKEY_get1_DSA(pkey); - key.d->algorithm = QSsl::Dsa; - key.d->isNull = false; -- } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DH) { -+ } else if (key_id == EVP_PKEY_DH) { - // DH unsupported - } else { - // error? - } -- - q_EVP_PKEY_free(pkey); - return key; - } ---- ./src/network/ssl/qsslkey.cpp.orig 2015-05-07 09:14:44.000000000 -0500 -+++ ./src/network/ssl/qsslkey.cpp 2018-05-06 14:40:01.246000361 -0500 -@@ -321,8 +321,19 @@ - { - if (d->isNull) - return -1; -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - return (d->algorithm == QSsl::Rsa) - ? q_BN_num_bits(d->rsa->n) : q_BN_num_bits(d->dsa->p); -+#else -+ if (d->algorithm == QSsl::Rsa) { -+ return q_RSA_bits(d->rsa); -+ }else{ -+ BIGNUM *p = NULL; -+ q_DSA_get0_pqg(d->dsa, &p, NULL, NULL); -+ return q_BN_num_bits(p); -+ } -+#endif -+ - } - - /*! ---- ./src/network/ssl/qsslsocket_openssl_symbols.cpp.orig 2015-05-07 09:14:44.000000000 -0500 -+++ ./src/network/ssl/qsslsocket_openssl_symbols.cpp 2018-05-06 14:48:20.109000379 -0500 -@@ -117,9 +117,11 @@ - DEFINEFUNC(BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return 0, return) - DEFINEFUNC3(int, BIO_write, BIO *a, a, const void *b, b, int c, c, return -1, return) - DEFINEFUNC(int, BN_num_bits, const BIGNUM *a, a, return 0, return) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - DEFINEFUNC(int, CRYPTO_num_locks, DUMMYARG, DUMMYARG, return 0, return) - DEFINEFUNC(void, CRYPTO_set_locking_callback, void (*a)(int, int, const char *, int), a, return, DUMMYARG) - DEFINEFUNC(void, CRYPTO_set_id_callback, unsigned long (*a)(), a, return, DUMMYARG) -+#endif - DEFINEFUNC(void, CRYPTO_free, void *a, a, return, DUMMYARG) - DEFINEFUNC(void, DSA_free, DSA *a, a, return, DUMMYARG) - #if OPENSSL_VERSION_NUMBER < 0x00908000L -@@ -157,6 +159,7 @@ - DEFINEFUNC2(void, RAND_seed, const void *a, a, int b, b, return, DUMMYARG) - DEFINEFUNC(int, RAND_status, void, DUMMYARG, return -1, return) - DEFINEFUNC(void, RSA_free, RSA *a, a, return, DUMMYARG) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - DEFINEFUNC(int, sk_num, STACK *a, a, return -1, return) - DEFINEFUNC2(void, sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG) - #if OPENSSL_VERSION_NUMBER >= 0x10000000L -@@ -166,6 +169,12 @@ - DEFINEFUNC(void, sk_free, STACK *a, a, return, DUMMYARG) - DEFINEFUNC2(char *, sk_value, STACK *a, a, int b, b, return 0, return) - #endif -+#else -+DEFINEFUNC(int, OPENSSL_sk_num, STACK *a, a, return -1, return) -+DEFINEFUNC2(void, OPENSSL_sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG) -+DEFINEFUNC(void, OPENSSL_sk_free, _STACK *a, a, return, DUMMYARG) -+DEFINEFUNC2(void *, OPENSSL_sk_value, STACK *a, a, int b, b, return 0, return) -+#endif - DEFINEFUNC(int, SSL_accept, SSL *a, a, return -1, return) - DEFINEFUNC(int, SSL_clear, SSL *a, a, return -1, return) - DEFINEFUNC3(char *, SSL_CIPHER_description, SSL_CIPHER *a, a, char *b, b, int c, c, return 0, return) -@@ -213,8 +222,12 @@ - #else - DEFINEFUNC(long, SSL_get_verify_result, SSL *a, a, return -1, return) - #endif -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - DEFINEFUNC(int, SSL_library_init, void, DUMMYARG, return -1, return) - DEFINEFUNC(void, SSL_load_error_strings, void, DUMMYARG, return, DUMMYARG) -+#else -+DEFINEFUNC2(int, OPENSSL_init_ssl, uint64_t opts, opts, void *settings, settings, return -1, return) -+#endif - DEFINEFUNC(SSL *, SSL_new, SSL_CTX *a, a, return 0, return) - #if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT) - DEFINEFUNC4(long, SSL_ctrl, SSL *a, a, int cmd, cmd, long larg, larg, void *parg, parg, return -1, return) -@@ -229,13 +242,21 @@ - DEFINEFUNC(const SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return) - #endif - DEFINEFUNC(const SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - DEFINEFUNC(const SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return 0, return) -+#else -+DEFINEFUNC(const SSL_METHOD *, TLS_client_method, DUMMYARG, DUMMYARG, return 0, return) -+#endif - DEFINEFUNC(const SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return) - #ifndef OPENSSL_NO_SSL2 - DEFINEFUNC(const SSL_METHOD *, SSLv2_server_method, DUMMYARG, DUMMYARG, return 0, return) - #endif - DEFINEFUNC(const SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - DEFINEFUNC(const SSL_METHOD *, SSLv23_server_method, DUMMYARG, DUMMYARG, return 0, return) -+#else -+DEFINEFUNC(const SSL_METHOD *, TLS_server_method, DUMMYARG, DUMMYARG, return 0, return) -+#endif - DEFINEFUNC(const SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return) - #else - DEFINEFUNC(SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return) -@@ -274,7 +295,11 @@ - DEFINEFUNC(int, X509_STORE_CTX_get_error, X509_STORE_CTX *a, a, return -1, return) - DEFINEFUNC(int, X509_STORE_CTX_get_error_depth, X509_STORE_CTX *a, a, return -1, return) - DEFINEFUNC(X509 *, X509_STORE_CTX_get_current_cert, X509_STORE_CTX *a, a, return 0, return) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get_chain, X509_STORE_CTX *a, a, return 0, return) -+#else -+DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get0_chain, X509_STORE_CTX *a, a, return 0, return) -+#endif - DEFINEFUNC(X509_STORE_CTX *, X509_STORE_CTX_new, DUMMYARG, DUMMYARG, return 0, return) - #ifdef SSLEAY_MACROS - DEFINEFUNC2(int, i2d_DSAPrivateKey, const DSA *a, a, unsigned char **b, b, return -1, return) -@@ -282,10 +307,39 @@ - DEFINEFUNC3(RSA *, d2i_RSAPrivateKey, RSA **a, a, unsigned char **b, b, long c, c, return 0, return) - DEFINEFUNC3(DSA *, d2i_DSAPrivateKey, DSA **a, a, unsigned char **b, b, long c, c, return 0, return) - #endif -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - DEFINEFUNC(void, OPENSSL_add_all_algorithms_noconf, void, DUMMYARG, return, DUMMYARG) - DEFINEFUNC(void, OPENSSL_add_all_algorithms_conf, void, DUMMYARG, return, DUMMYARG) -+#else -+DEFINEFUNC2(int, OPENSSL_init_crypto, uint64_t opts, opts, void *settings, settings, return -1, return) -+#endif - DEFINEFUNC3(int, SSL_CTX_load_verify_locations, SSL_CTX *ctx, ctx, const char *CAfile, CAfile, const char *CApath, CApath, return 0, return) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - DEFINEFUNC(long, SSLeay, void, DUMMYARG, return 0, return) -+#else -+DEFINEFUNC(unsigned long, OpenSSL_version_num, void, DUMMYARG, return 0, return) -+#endif -+DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const SSL_CTX *ctx, ctx, return 0, return) -+ -+DEFINEFUNC(ASN1_INTEGER *, X509_get_serialNumber, X509 *x, x, return 0, return) -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+DEFINEFUNC(int, EVP_PKEY_id, const EVP_PKEY *pkey, pkey, return 0, return) -+DEFINEFUNC(int, EVP_PKEY_base_id, const EVP_PKEY *pkey, pkey, return 0, return) -+DEFINEFUNC2(int, SSL_CIPHER_get_bits, const SSL_CIPHER *cipher, cipher, int *alg_bits, alg_bits, return 0, return) -+DEFINEFUNC2(long, SSL_CTX_set_options, SSL_CTX *ctx, ctx, long options, options, return 0, return) -+DEFINEFUNC(long, X509_get_version, X509 *x, x, return 0, return) -+DEFINEFUNC(X509_PUBKEY *, X509_get_X509_PUBKEY, X509 *x, x, return 0, return) -+DEFINEFUNC(int, RSA_bits, const RSA *rsa, rsa, return 0, return) -+DEFINEFUNC(int, DSA_security_bits, const DSA *dsa, dsa, return 0, return) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+DEFINEFUNC(ASN1_TIME *, X509_get_notAfter, X509 *x, x, return 0, return) -+DEFINEFUNC(ASN1_TIME *, X509_get_notBefore, X509 *x, x, return 0, return) -+#else -+DEFINEFUNC(ASN1_TIME *, X509_getm_notAfter, X509 *x, x, return 0, return) -+DEFINEFUNC(ASN1_TIME *, X509_getm_notBefore, X509 *x, x, return 0, return) -+#endif -+DEFINEFUNC4(void, DSA_get0_pqg, const DSA *d, d, BIGNUM **p, p, BIGNUM **q, q, BIGNUM **g, g, return, return) -+#endif - - #ifdef Q_OS_SYMBIAN - #define RESOLVEFUNC(func, ordinal, lib) \ -@@ -580,7 +634,11 @@ - static volatile bool symbolsResolved = false; - static volatile bool triedToResolveSymbols = false; - #ifndef QT_NO_THREAD -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - QMutexLocker locker(QMutexPool::globalInstanceGet((void *)&q_SSL_library_init)); -+#else -+ QMutexLocker locker(QMutexPool::globalInstanceGet((void *)&q_OPENSSL_init_ssl)); -+#endif - #endif - if (symbolsResolved) - return true; -@@ -614,9 +672,11 @@ - RESOLVEFUNC(BIO_write, 269, libs.second ) - RESOLVEFUNC(BN_num_bits, 387, libs.second ) - RESOLVEFUNC(CRYPTO_free, 469, libs.second ) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - RESOLVEFUNC(CRYPTO_num_locks, 500, libs.second ) - RESOLVEFUNC(CRYPTO_set_id_callback, 513, libs.second ) - RESOLVEFUNC(CRYPTO_set_locking_callback, 516, libs.second ) -+#endif - RESOLVEFUNC(DSA_free, 594, libs.second ) - RESOLVEFUNC(ERR_error_string, 744, libs.second ) - RESOLVEFUNC(ERR_get_error, 749, libs.second ) -@@ -674,8 +734,10 @@ - RESOLVEFUNC(SSL_get_peer_cert_chain, 117, libs.first ) - RESOLVEFUNC(SSL_get_peer_certificate, 118, libs.first ) - RESOLVEFUNC(SSL_get_verify_result, 132, libs.first ) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - RESOLVEFUNC(SSL_library_init, 137, libs.first ) - RESOLVEFUNC(SSL_load_error_strings, 139, libs.first ) -+#endif - RESOLVEFUNC(SSL_new, 140, libs.first ) - #if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT) - RESOLVEFUNC(SSL_ctrl, 95, libs.first ) -@@ -747,9 +809,11 @@ - RESOLVEFUNC(BIO_write) - RESOLVEFUNC(BN_num_bits) - RESOLVEFUNC(CRYPTO_free) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - RESOLVEFUNC(CRYPTO_num_locks) - RESOLVEFUNC(CRYPTO_set_id_callback) - RESOLVEFUNC(CRYPTO_set_locking_callback) -+#endif - RESOLVEFUNC(DSA_free) - RESOLVEFUNC(ERR_error_string) - RESOLVEFUNC(ERR_get_error) -@@ -779,10 +843,17 @@ - RESOLVEFUNC(RAND_seed) - RESOLVEFUNC(RAND_status) - RESOLVEFUNC(RSA_free) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - RESOLVEFUNC(sk_free) - RESOLVEFUNC(sk_num) - RESOLVEFUNC(sk_pop_free) - RESOLVEFUNC(sk_value) -+#else -+ RESOLVEFUNC(OPENSSL_sk_free) -+ RESOLVEFUNC(OPENSSL_sk_num) -+ RESOLVEFUNC(OPENSSL_sk_pop_free) -+ RESOLVEFUNC(OPENSSL_sk_value) -+#endif - RESOLVEFUNC(SSL_CIPHER_description) - RESOLVEFUNC(SSL_CTX_check_private_key) - RESOLVEFUNC(SSL_CTX_ctrl) -@@ -797,6 +868,7 @@ - RESOLVEFUNC(SSL_CTX_use_PrivateKey) - RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey) - RESOLVEFUNC(SSL_CTX_use_PrivateKey_file) -+ RESOLVEFUNC(SSL_CTX_get_cert_store) - RESOLVEFUNC(SSL_accept) - RESOLVEFUNC(SSL_clear) - RESOLVEFUNC(SSL_connect) -@@ -807,8 +879,12 @@ - RESOLVEFUNC(SSL_get_peer_cert_chain) - RESOLVEFUNC(SSL_get_peer_certificate) - RESOLVEFUNC(SSL_get_verify_result) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - RESOLVEFUNC(SSL_library_init) - RESOLVEFUNC(SSL_load_error_strings) -+#else -+ RESOLVEFUNC(OPENSSL_init_ssl) -+#endif - RESOLVEFUNC(SSL_new) - #if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT) - RESOLVEFUNC(SSL_ctrl) -@@ -819,17 +895,47 @@ - RESOLVEFUNC(SSL_set_connect_state) - RESOLVEFUNC(SSL_shutdown) - RESOLVEFUNC(SSL_write) -+ -+ RESOLVEFUNC(X509_get_serialNumber) -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ RESOLVEFUNC(SSL_CTX_ctrl) -+ RESOLVEFUNC(EVP_PKEY_id) -+ RESOLVEFUNC(EVP_PKEY_base_id) -+ RESOLVEFUNC(SSL_CIPHER_get_bits) -+ RESOLVEFUNC(SSL_CTX_set_options) -+ RESOLVEFUNC(X509_get_version) -+ RESOLVEFUNC(X509_get_X509_PUBKEY) -+ RESOLVEFUNC(RSA_bits) -+ RESOLVEFUNC(DSA_security_bits) -+ RESOLVEFUNC(DSA_get0_pqg) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ RESOLVEFUNC(X509_get_notAfter) -+ RESOLVEFUNC(X509_get_notBefore) -+#else -+ RESOLVEFUNC(X509_getm_notAfter) -+ RESOLVEFUNC(X509_getm_notBefore) -+#endif -+#endif -+ - #ifndef OPENSSL_NO_SSL2 - RESOLVEFUNC(SSLv2_client_method) - #endif - RESOLVEFUNC(SSLv3_client_method) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - RESOLVEFUNC(SSLv23_client_method) -+#else -+ RESOLVEFUNC(TLS_client_method) -+#endif - RESOLVEFUNC(TLSv1_client_method) - #ifndef OPENSSL_NO_SSL2 - RESOLVEFUNC(SSLv2_server_method) - #endif - RESOLVEFUNC(SSLv3_server_method) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - RESOLVEFUNC(SSLv23_server_method) -+#else -+ RESOLVEFUNC(TLS_server_method) -+#endif - RESOLVEFUNC(TLSv1_server_method) - RESOLVEFUNC(X509_NAME_entry_count) - RESOLVEFUNC(X509_NAME_get_entry) -@@ -846,7 +952,11 @@ - RESOLVEFUNC(X509_STORE_CTX_get_error) - RESOLVEFUNC(X509_STORE_CTX_get_error_depth) - RESOLVEFUNC(X509_STORE_CTX_get_current_cert) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - RESOLVEFUNC(X509_STORE_CTX_get_chain) -+#else -+ RESOLVEFUNC(X509_STORE_CTX_get0_chain) -+#endif - RESOLVEFUNC(X509_cmp) - #ifndef SSLEAY_MACROS - RESOLVEFUNC(X509_dup) -@@ -867,10 +977,18 @@ - RESOLVEFUNC(d2i_DSAPrivateKey) - RESOLVEFUNC(d2i_RSAPrivateKey) - #endif -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - RESOLVEFUNC(OPENSSL_add_all_algorithms_noconf) - RESOLVEFUNC(OPENSSL_add_all_algorithms_conf) -+#else -+ RESOLVEFUNC(OPENSSL_init_crypto) -+#endif - RESOLVEFUNC(SSL_CTX_load_verify_locations) -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - RESOLVEFUNC(SSLeay) -+#else -+ RESOLVEFUNC(OpenSSL_version_num) -+#endif - #endif // Q_OS_SYMBIAN - symbolsResolved = true; - delete libs.first; ---- ./src/network/ssl/qsslsocket_openssl_p.h.orig 2015-05-07 09:14:44.000000000 -0500 -+++ ./src/network/ssl/qsslsocket_openssl_p.h 2018-05-06 14:40:01.249000361 -0500 -@@ -84,6 +84,10 @@ - #include - #endif - -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+#define OPENSSL_NO_SSL2 -+#endif -+ - #if OPENSSL_VERSION_NUMBER >= 0x10000000L - typedef _STACK STACK; - #endif ---- ./src/network/ssl/qsslsocket_openssl.cpp.orig 2015-05-07 09:14:44.000000000 -0500 -+++ ./src/network/ssl/qsslsocket_openssl.cpp 2018-05-06 14:40:01.247000361 -0500 -@@ -93,6 +93,7 @@ - bool QSslSocketPrivate::s_loadedCiphersAndCerts = false; - bool QSslSocketPrivate::s_loadRootCertsOnDemand = false; - -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - /* \internal - - From OpenSSL's thread(3) manual page: -@@ -174,6 +175,8 @@ - } - } // extern "C" - -+#endif //OPENSSL_VERSION_NUMBER >= 0x10100000L -+ - QSslSocketBackendPrivate::QSslSocketBackendPrivate() - : ssl(0), - ctx(0), -@@ -222,9 +225,12 @@ - ciph.d->encryptionMethod = descriptionList.at(4).mid(4); - ciph.d->exportable = (descriptionList.size() > 6 && descriptionList.at(6) == QLatin1String("export")); - -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - ciph.d->bits = cipher->strength_bits; - ciph.d->supportedBits = cipher->alg_bits; -- -+#else -+ ciph.d->bits = q_SSL_CIPHER_get_bits(cipher, &ciph.d->supportedBits); -+#endif - } - return ciph; - } -@@ -363,7 +369,7 @@ - // - // See also: QSslContext::fromConfiguration() - if (caCertificate.expiryDate() >= QDateTime::currentDateTime()) { -- q_X509_STORE_add_cert(ctx->cert_store, (X509 *)caCertificate.handle()); -+ q_X509_STORE_add_cert(q_SSL_CTX_get_cert_store(ctx), (X509 *)caCertificate.handle()); - } - } - -@@ -500,8 +506,10 @@ - */ - void QSslSocketPrivate::deinitialize() - { -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - q_CRYPTO_set_id_callback(0); - q_CRYPTO_set_locking_callback(0); -+#endif - } - - /*! -@@ -522,13 +530,17 @@ - return false; - - // Check if the library itself needs to be initialized. -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - QMutexLocker locker(openssl_locks()->initLock()); -+#endif - if (!s_libraryLoaded) { - s_libraryLoaded = true; - - // Initialize OpenSSL. -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - q_CRYPTO_set_id_callback(id_function); - q_CRYPTO_set_locking_callback(locking_function); -+#endif - if (q_SSL_library_init() != 1) - return false; - q_SSL_load_error_strings(); -@@ -567,7 +579,9 @@ - - void QSslSocketPrivate::ensureCiphersAndCertsLoaded() - { -- QMutexLocker locker(openssl_locks()->initLock()); -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ QMutexLocker locker(openssl_locks()->initLock()); -+#endif - if (s_loadedCiphersAndCerts) - return; - s_loadedCiphersAndCerts = true; -@@ -659,13 +673,18 @@ - STACK_OF(SSL_CIPHER) *supportedCiphers = q_SSL_get_ciphers(mySsl); - for (int i = 0; i < q_sk_SSL_CIPHER_num(supportedCiphers); ++i) { - if (SSL_CIPHER *cipher = q_sk_SSL_CIPHER_value(supportedCiphers, i)) { -- if (cipher->valid) { -+ -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ if (cipher->valid) { -+#endif - QSslCipher ciph = QSslSocketBackendPrivate::QSslCipher_from_SSL_CIPHER(cipher); - if (!ciph.isNull()) { - if (!ciph.name().toLower().startsWith(QLatin1String("adh"))) - ciphers << ciph; - } -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - } -+#endif - } - } - -- cgit v1.2.3