summaryrefslogtreecommitdiffstats
path: root/external/meta-qt5
diff options
context:
space:
mode:
Diffstat (limited to 'external/meta-qt5')
-rw-r--r--external/meta-qt5/README.md7
-rw-r--r--external/meta-qt5/classes/qmake5_base.bbclass22
-rw-r--r--external/meta-qt5/conf/layer.conf2
-rw-r--r--external/meta-qt5/lib/recipetool/create_qt5.py1
-rw-r--r--external/meta-qt5/licenses/The-Qt-Company-Commercial1462
-rw-r--r--external/meta-qt5/recipes-connectivity/libqofono/libqofono/0001-also-emit-modemRemoved-and-modemAdded.patch54
-rw-r--r--external/meta-qt5/recipes-connectivity/libqofono/libqofono_git.bb12
-rw-r--r--external/meta-qt5/recipes-devtools/gdb/gdb_%.bbappend1
-rw-r--r--external/meta-qt5/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_%.bbappend15
-rw-r--r--external/meta-qt5/recipes-python/pyqt5/python-pyqt5.inc64
-rw-r--r--external/meta-qt5/recipes-python/pyqt5/python-pyqt5_5.11.3.bb8
-rw-r--r--external/meta-qt5/recipes-python/pyqt5/python3-pyqt5_5.11.3.bb7
-rw-r--r--external/meta-qt5/recipes-python/pyqt5/python3-pyqt5_5.13.2.bb65
-rw-r--r--external/meta-qt5/recipes-python/pyqtchart/python3-pyqtchart_5.13.1.bb66
-rw-r--r--external/meta-qt5/recipes-qt/examples/qt5everywheredemo_1.0.bb4
-rw-r--r--external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5/0001-Drop-tr1-namespace-its-not-there-in-c-11-and-newer.patch83
-rw-r--r--external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5/0001-Fix-test-installations.patch62
-rw-r--r--external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5/0001-examples-plugins-Replace-obsolete-screenGeometry.patch66
-rw-r--r--external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5_git.bb3
-rw-r--r--external/meta-qt5/recipes-qt/maliit/maliit-plugins-qt5/0001-Do-not-use-tr1-namespace.patch58
-rw-r--r--external/meta-qt5/recipes-qt/maliit/maliit-plugins-qt5_git.bb4
-rw-r--r--external/meta-qt5/recipes-qt/packagegroups/nativesdk-packagegroup-qt5-toolchain-host.bb1
-rwxr-xr-xexternal/meta-qt5/recipes-qt/packagegroups/packagegroup-qt5-toolchain-target.bb16
-rw-r--r--external/meta-qt5/recipes-qt/qmllive/qmllive/0001-lib.pro-Append-LIB_ARCH-to-lib.patch39
-rw-r--r--external/meta-qt5/recipes-qt/qmllive/qmllive_git.bb5
-rw-r--r--external/meta-qt5/recipes-qt/qt-kiosk-browser/qt-kiosk-browser/qt-kiosk-browser.conf5
-rw-r--r--external/meta-qt5/recipes-qt/qt-kiosk-browser/qt-kiosk-browser_git.bb43
-rw-r--r--external/meta-qt5/recipes-qt/qt5/nativesdk-qtbase_git.bb42
-rw-r--r--external/meta-qt5/recipes-qt/qt5/ogl-runtime/0001-Fix-examples-build-error.patch62
-rw-r--r--external/meta-qt5/recipes-qt/qt5/ogl-runtime/0001-Qt3DSSimpleTypes-make-QT3DSU64-as-unsigned-long-on-l.patch35
-rw-r--r--external/meta-qt5/recipes-qt/qt5/ogl-runtime_git.bb29
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qt3d-runtime/0001-runtime-Include-missing-QCoreApplication-header.patch29
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qt3d-runtime_git.bb18
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qt3d/0001-Allow-a-tools-only-build.patch27
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qt3d_git.bb6
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qt5-creator/0001-Link-with-libexecinfo-on-musl.patch (renamed from external/meta-qt5/recipes-qt/qt5/qt5-creator/0003-Link-with-libexecinfo-on-musl.patch)17
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qt5-creator/0001-botan-Always-define-BOTAN_ARCH_SWITCH-when-cross-bui.patch26
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qt5-creator/0001-clangformat-AllowShortIfStatementsOnASingleLine-is-n.patch53
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qt5-creator/0002-botan.pro-pass-QMAKE_AR.patch80
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qt5-creator_git.bb24
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qt5-git.inc6
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qt5-plugin-generic-vboxtouch/0001-include-errno.h-for-errno-definition.patch38
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qt5-plugin-generic-vboxtouch_git.bb6
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qt5-ptest.inc2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qt5.inc4
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase-native_git.bb50
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch33
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch20
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0003-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch6
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0004-configure-bump-path-length-from-256-to-512-character.patch10
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0005-Disable-all-unknown-features-instead-of-erroring-out.patch6
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0006-Pretend-Qt5-wasn-t-found-if-OE_QMAKE_PATH_EXTERNAL_H.patch4
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0007-Delete-qlonglong-and-qulonglong.patch2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0008-Replace-pthread_yield-with-sched_yield.patch12
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0009-Add-OE-specific-specs-for-clang-compiler.patch13
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0010-linux-clang-Invert-conditional-for-defining-QT_SOCKL.patch2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0011-tst_qlocale-Enable-QT_USE_FENV-only-on-glibc.patch12
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0012-mkspecs-common-gcc-base.conf-Use-I-instead-of-isyste.patch14
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0013-Disable-ltcg-for-host_build.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtbase/0015-Disable-ltcg-for-host_build.patch)18
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0013-Upgrade-double-conversion-to-v3.0.0.patch344
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0014-Qt5GuiConfigExtras.cmake.in-cope-with-variable-path-.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtbase/0016-Qt5GuiConfigExtras.cmake.in-cope-with-variable-path-.patch)10
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0014-double-conversion-support-AARCH64EB-and-arm-BE.patch40
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0015-corelib-Include-sys-types.h-for-uint32_t.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtbase/0017-corelib-Include-sys-types.h-for-uint32_t.patch)4
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0016-Define-QMAKE_CXX.COMPILER_MACROS-for-clang-on-linux.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtbase/0018-Define-QMAKE_CXX.COMPILER_MACROS-for-clang-on-linux.patch)10
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0018-input-Make-use-of-timeval-portable-for-64bit-time_t.patch70
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0019-Always-build-uic-and-qvkgen.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtbase/0020-Always-build-uic-and-qvkgen.patch)6
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0019-Fix-compile-issue-with-gcc-9.patch31
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0020-Avoid-renameeat2-for-native-sdk-builds.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtbase/0021-Avoid-renameeat2-for-native-sdk-builds.patch)21
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0021-Bootstrap-without-linkat-feature.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtbase/0022-Bootstrap-without-linkat-feature.patch)6
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase/0022-tst_qpainter-FE_-macros-are-not-defined-for-every-pl.patch123
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtbase_git.bb109
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtcanvas3d_git.bb14
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtcharts_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtcoap_git.bb14
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtconnectivity/0001-Add-missing-header-for-errno.patch23
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtconnectivity/0001-Ignore-clang-warning-about-address-of-temp-in-config.patch40
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtconnectivity_git.bb10
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtdatavis3d_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtdeclarative/0001-Always-use-commit-sha1-for-QML_COMPILE_HASH.patch31
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtdeclarative/0001-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS-to-locate-qmlca.patch32
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtdeclarative/0002-Use-python3-explicitly.patch57
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtdeclarative_git.bb22
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtenginio_git.bb16
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtgamepad_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtgraphicaleffects_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtimageformats_git.bb3
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtknx_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtlocation_git.bb12
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtlottie_git.bb12
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtmqtt_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtmultimedia/0001-qtmultimedia-fix-a-conflicting-declaration.patch4
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtmultimedia_git.bb9
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtnetworkauth_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtopcua_git.bb12
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtpurchasing_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtquick3d_git.bb27
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtquickcontrols2_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtquickcontrols_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtquicktimeline_git.bb13
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtremoteobjects/0001-Allow-a-tools-only-build.patch8
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtremoteobjects/0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch22
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtremoteobjects_git.bb7
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtscript/0001-3rdparty-javascriptcore-Add-RISC-V-support.patch47
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtscript/0001-Include-asm-sgidefs.h-on-non-glibc-systems.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtscript/0002-Include-asm-sgidefs.h-on-non-glibc-systems.patch)4
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtscript/0002-Fix-build-with-GCC-8.3.patch235
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtscript_git.bb10
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtscxml/0001-Use-external-host-bin-path-for-cmake-file.patch2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtscxml_git.bb6
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtsensors_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtserialbus_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtserialport_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtsvg_git.bb3
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtsystems_git.bb6
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qttools/0001-add-noqtwebkit-configuration.patch6
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qttools/0002-linguist-tools-cmake-allow-overriding-the-location-f.patch61
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qttools/0003-src.pro-Add-option-noqdoc-to-disable-qdoc-builds.patch25
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qttools/run-ptest4
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qttools_git.bb36
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qttranslations_git.bb9
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtvirtualkeyboard_git.bb24
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwayland/0001-tst_seatv4-Include-array.patch27
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwayland_git.bb41
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebchannel_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/0001-Force-host-toolchain-configuration.patch60
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/0002-chromium_overrides.cpp-Fix-build-with-plugins-and-oz.patch50
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/0003-musl-don-t-use-pvalloc-as-it-s-not-available-on-musl.patch2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/0004-musl-link-against-libexecinfo.patch6
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/0005-mkspecs-Allow-builds-with-libc-glibc.patch26
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0001-chromium-Force-host-toolchain-configuration.patch33
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0001-chromium-workaround-for-too-long-.rps-file-name.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0002-chromium-workaround-for-too-long-.rps-file-name.patch)16
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0002-chromium-stack-pointer-clobber.patch49
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0003-chromium-Fix-build-with-gcc8.patch50
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0003-chromium-fix-build-with-clang.patch91
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0004-chromium-Exclude-CRC32-for-32bit-arm.patch33
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0005-chromium-Do-not-try-to-set-the-guessed-values-for-ma.patch38
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0006-chromium-aarch64-skia-build-fix.patch64
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0007-chromium-fix-build-after-y2038-changes-in-glibc.patch28
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0008-chromium-Fix-build-on-32bit-arches-with-64bit-time_t.patch68
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0009-chromium-Include-cstddef-for-size_t-definition.patch48
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0010-chromium-Move-CharAllocator-definition-to-a-header-f.patch554
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0011-chromium-Include-cstddef-and-cstdint.patch50
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0011-chromium-musl-sandbox-Define-TEMP_FAILURE_RETRY-if-n.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0004-chromium-musl-sandbox-Define-TEMP_FAILURE_RETRY-if-n.patch)6
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0012-chromium-Link-v8-with-libatomic-on-x86.patch32
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0012-chromium-musl-Avoid-mallinfo-APIs-on-non-glibc-linux.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0005-chromium-musl-Avoid-mallinfo-APIs-on-non-glibc-linux.patch)35
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0013-chromium-musl-include-fcntl.h-for-loff_t.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0006-chromium-musl-include-fcntl.h-for-loff_t.patch)6
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0014-chromium-musl-include-asm-generic-ioctl.h-for-TCGETS.patch22
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0014-chromium-musl-use-off64_t-instead-of-the-internal-__.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0007-chromium-musl-use-off64_t-instead-of-the-internal-__.patch)16
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0015-chromium-musl-linux-glibc-make-the-distinction.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0008-chromium-musl-linux-glibc-make-the-distinction.patch)4
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0015-chromium-musl-tcmalloc-Use-off64_t-insread-of-__off6.patch23
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0016-chromium-musl-allocator-Do-not-include-glibc_weak_sy.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0009-chromium-musl-allocator-Do-not-include-glibc_weak_sy.patch)6
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0017-chromium-musl-Use-correct-member-name-__si_fields-fr.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0010-chromium-musl-Use-correct-member-name-__si_fields-fr.patch)2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0018-chromium-musl-Define-res_ninit-and-res_nclose-for-no.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0011-chromium-musl-Define-res_ninit-and-res_nclose-for-no.patch)10
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0019-chromium-musl-Do-not-define-__sbrk-on-musl.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0012-chromium-musl-Do-not-define-__sbrk-on-musl.patch)14
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0020-chromium-musl-Adjust-default-pthread-stack-size.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0013-chromium-musl-Adjust-default-pthread-stack-size.patch)22
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0021-chromium-musl-Use-_fpstate-instead-of-_libc_fpstate-.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0016-chromium-musl-Use-_fpstate-instead-of-_libc_fpstate-.patch)4
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0022-chromium-musl-elf_reader.cc-include-sys-reg.h-to-get.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0017-chromium-musl-elf_reader.cc-include-sys-reg.h-to-get.patch)4
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0023-chromium-musl-pread-pwrite.patch31
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebengine_git.bb80
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebglplugin_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebkit-examples/0001-Fix-build-with-qt-5.11.patch48
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebkit-examples_git.bb24
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebkit/0001-Port-build-to-python3.patch3845
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebkit/0002-Do-not-skip-build-for-cross-compile.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtwebkit/0001-Do-not-skip-build-for-cross-compile.patch)2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebkit/0003-Fix-build-with-non-glibc-libc-on-musl.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtwebkit/0002-Fix-build-with-non-glibc-libc-on-musl.patch)2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebkit/0004-Fix-build-bug-for-armv32-BE.patch2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebkit/0005-PlatformQt.cmake-Do-not-generate-hardcoded-include-p.patch (renamed from external/meta-qt5/recipes-qt/qt5/qtwebkit/0001-PlatformQt.cmake-Do-not-generate-hardcoded-include-p.patch)11
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebkit_git.bb28
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebsockets_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtwebview_git.bb7
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtx11extras_git.bb2
-rw-r--r--external/meta-qt5/recipes-qt/qt5/qtxmlpatterns_git.bb14
-rw-r--r--external/meta-qt5/recipes-qt/quazip/quazip/0001-Append-LIB_ARCH-to-lib.patch31
-rw-r--r--external/meta-qt5/recipes-qt/quazip/quazip_0.7.3.bb6
-rw-r--r--external/meta-qt5/recipes-qt/qwt/qwt-qt5_6.1.4.bb (renamed from external/meta-qt5/recipes-qt/qwt/qwt-qt5_6.1.3.bb)13
174 files changed, 7817 insertions, 2422 deletions
diff --git a/external/meta-qt5/README.md b/external/meta-qt5/README.md
index 705f2f27..fa497153 100644
--- a/external/meta-qt5/README.md
+++ b/external/meta-qt5/README.md
@@ -9,6 +9,13 @@ When building stuff like `qtdeclarative`, `qtquick`, `qtwebkit`, make
sure that you have required `PACKAGECONFIG` options enabled in qtbase
build, see `qtbase` recipe for detail.
+Some recipes like qtwebengine would need 32bit multilib compiler on build
+host, especially when target to be built is 32bit, e.g. arm since it builds
+v8 engine which requires `$CC -m32` to work, so ensure that host compiler
+can generate 32bit code, on archlinux distributions this would be
+```
+pacman -S lib32-gcc-libs lib32-glibc
+```
Contributing
------------
diff --git a/external/meta-qt5/classes/qmake5_base.bbclass b/external/meta-qt5/classes/qmake5_base.bbclass
index b3a4826a..3f1bba23 100644
--- a/external/meta-qt5/classes/qmake5_base.bbclass
+++ b/external/meta-qt5/classes/qmake5_base.bbclass
@@ -20,7 +20,6 @@ SSTATE_SCAN_FILES += "*.pri *.prl *.prf"
# then OE_QMAKE_CFLAGS are exported and used correctly, but then whole CFLAGS is overwritten from env (and -fPIC lost and build fails)
EXTRA_OEMAKE = " \
MAKEFLAGS='${PARALLEL_MAKE}' \
- OE_QMAKE_COMPILER='${OE_QMAKE_COMPILER}' \
OE_QMAKE_CC='${OE_QMAKE_CC}' \
OE_QMAKE_CXX='${OE_QMAKE_CXX}' \
OE_QMAKE_CFLAGS='${OE_QMAKE_CFLAGS}' \
@@ -33,7 +32,6 @@ EXTRA_OEMAKE = " \
"
OE_QMAKE_QMAKE = "${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qmake"
-export OE_QMAKE_COMPILER = "${CC}"
export OE_QMAKE_CC = "${CC}"
export OE_QMAKE_CFLAGS = "${CFLAGS}"
export OE_QMAKE_CXX = "${CXX}"
@@ -112,6 +110,7 @@ generate_qt_config_file_effective_paths() {
cat >> ${OE_QMAKE_QTCONF_PATH} <<EOF
[EffectivePaths]
HostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}
+HostLibraries = ${STAGING_LIBDIR_NATIVE}
HostData = ${OE_QMAKE_PATH_HOST_DATA}
HostPrefix = ${STAGING_DIR_NATIVE}
EOF
@@ -242,9 +241,18 @@ qmake5_base_do_install() {
qmake5_base_fix_install ${STAGING_DIR_HOST}
qmake5_base_fix_install ${STAGING_DIR_NATIVE}
- if ls ${D}${libdir}/pkgconfig/*.pc >/dev/null 2>/dev/null; then
- sed -i ${D}${libdir}/pkgconfig/*.pc \
- -e "s@-L${STAGING_LIBDIR}@-L\${libdir}@g" \
- -e "s@${STAGING_DIR_TARGET}@@g"
- fi
+ # Replace host paths with qmake built-in properties
+ find ${D} \( -name "*.pri" -or -name "*.prl" \) -exec \
+ sed -i -e 's|${STAGING_DIR_NATIVE}|$$[QT_HOST_PREFIX/get]|g' \
+ -e 's|${STAGING_DIR_HOST}|$$[QT_SYSROOT]|g' {} \;
+
+ # Replace host paths with pkg-config built-in variable
+ find ${D} -name "*.pc" -exec \
+ sed -i -e 's|prefix=${STAGING_DIR_HOST}|prefix=|g' \
+ -e 's|${STAGING_DIR_HOST}|${pc_sysrootdir}|g' {} \;
+
+ # Replace resolved lib path with the lib name
+ find ${D} -name "*.cmake" -exec \
+ sed -i -e 's@/[^;]*/lib\([^;]*\)\.\(so\|a\)@\1@g' {} \;
+
}
diff --git a/external/meta-qt5/conf/layer.conf b/external/meta-qt5/conf/layer.conf
index b466ebf7..dbaa3d6b 100644
--- a/external/meta-qt5/conf/layer.conf
+++ b/external/meta-qt5/conf/layer.conf
@@ -29,7 +29,7 @@ LAYERVERSION_qt5-layer = "1"
LAYERDEPENDS_qt5-layer = "core"
-LAYERSERIES_COMPAT_qt5-layer = "sumo thud warrior"
+LAYERSERIES_COMPAT_qt5-layer = "dunfell"
LICENSE_PATH += "${LAYERDIR}/licenses"
diff --git a/external/meta-qt5/lib/recipetool/create_qt5.py b/external/meta-qt5/lib/recipetool/create_qt5.py
index 3ac991fb..dab67b4a 100644
--- a/external/meta-qt5/lib/recipetool/create_qt5.py
+++ b/external/meta-qt5/lib/recipetool/create_qt5.py
@@ -47,7 +47,6 @@ class Qt5CmakeHandler(CmakeExtensionHandler):
'qtsystems': 'Qt5PublishSubscribe Qt5ServiceFramework Qt5SystemInfo',
'qtscript': 'Qt5Script Qt5ScriptTools',
'qttools': 'Qt5Designer Qt5Help Qt5LinguistTools Qt5UiPlugin Qt5UiTools',
- 'qtenginio': 'Qt5Enginio',
'qtsensors': 'Qt5Sensors',
'qtmultimedia': 'Qt5Multimedia Qt5MultimediaWidgets',
'qtwebchannel': 'Qt5WebChannel',
diff --git a/external/meta-qt5/licenses/The-Qt-Company-Commercial b/external/meta-qt5/licenses/The-Qt-Company-Commercial
index 74bd6bb4..19a20ea4 100644
--- a/external/meta-qt5/licenses/The-Qt-Company-Commercial
+++ b/external/meta-qt5/licenses/The-Qt-Company-Commercial
@@ -1,23 +1,24 @@
QT LICENSE AGREEMENT
-Agreement version 4.0
+Agreement version 4.2.1
-This License Agreement ("Agreement") is a legal agreement between The Qt
-Company (as defined below) and the Licensee (as defined below) for the license
-of Licensed Software (as defined below). Capitalized terms used herein are
-defined in Section 1.
+This Qt License Agreement ("Agreement") is a legal agreement for the licensing
+of Licensed Software (as defined below) between The Qt Company (as defined
+below) and the Licensee who has accepted the terms of this Agreement by
+downloading or using the Licensed Software and/or as defined herein:
-WHEREAS:
-
-(A). Licensee wishes to use the Licensed Software for the purpose of developing
-and distributing Applications and/or Devices; and
+Capitalized terms used herein are defined in Section 1.
-(B). The Qt Company is willing to grant the Licensee a right to use Licensed
-Software for such purpose pursuant to term and conditions of this Agreement.
+WHEREAS:
+ (A) Licensee wishes to use the Licensed Software for the purpose of
+ developing and distributing Applications and/or Devices (each as
+ defined below); and
+ (B) The Qt Company is willing to grant the Licensee a right to use
+ Licensed Software for such a purpose pursuant to term and conditions
+ of this Agreement.
NOW, THEREFORE, THE PARTIES HEREBY AGREE AS FOLLOWS:
1. DEFINITIONS
-
"Affiliate" of a Party shall mean an entity (i) which is directly or indirectly
controlling such Party; (ii) which is under the same direct or indirect
ownership or control as such Party; or (iii) which is directly or indirectly
@@ -26,20 +27,31 @@ treated as being controlled by another if that other entity has fifty percent
(50 %) or more of the votes in such entity, is able to direct its affairs
and/or to control the composition of its board of directors or equivalent body.
+"Add-on Products" shall mean The Qt Company's specific add-on software products
+(for example Qt Safe Renderer, Qt for Automation, Qt Application Manager),
+which are not licensed as part of The Qt Company's standard offering, but shall
+be included into the scope of Licensed Software only if so specifically agreed
+between the Parties.
+
"Applications" shall mean Licensee's software products created using the
-Licensed Software, which may include the Redistributables, or part
-thereof.
+Licensed Software, which may include the Redistributables, or part thereof.
"Contractor(s)" shall mean third party consultants, distributors and
-contractors performing services to a Party under applicable contractual
+contractors performing services to the Licensee under applicable contractual
arrangement.
"Customer(s)" shall mean Licensee's end users to whom Licensee, directly or
indirectly, distributes copies of the Redistributables.
-"Deployment Platforms" shall mean operating systems specified in the License
-Certificate, in which the Redistributables can be distributed pursuant to the
-terms and conditions of this Agreement.
+"Data Protection Legislation" shall mean the General Data Protection Regulation
+(EU 2016/679) (GDPR) and any national implementing laws, regulations and
+secondary legislation, as may be amended or updated from time to time, as well
+as any other data protection laws or regulations applicable in relevant
+territory.
+
+"Deployment Platforms" shall mean operating systems and/or hardware specified
+in the License Certificate, on which the Redistributables can be distributed
+pursuant to the terms and conditions of this Agreement.
"Designated User(s)" shall mean the employee(s) of Licensee or Licensee's
Affiliates acting within the scope of their employment or Licensee's
@@ -48,7 +60,11 @@ behalf of Licensee. Designated Users shall be named in the License Certificate.
"Development License" shall mean the license needed by the Licensee for each
Designated User to use the Licensed Software under the license grant described
-in Section 3.1 of this Agreement.
+in Section 3.1 of this Agreement. Development Licenses are available
+separately for Qt for Application Development and Qt for Device Creation
+products, each product having its designated scope and purpose of use.
+Distribution Licenses are always connected to Qt for Device Creation
+product only.
"Development Platforms" shall mean those operating systems specified in the
License Certificate, in which the Licensed Software can be used under the
@@ -58,19 +74,21 @@ purpose.
"Devices" shall mean hardware devices or products that 1) are manufactured
and/or distributed by the Licensee or its Affiliates or Contractors, and
(2)(i) incorporate or integrate the Redistributables or parts thereof; or (ii)
-do not incorporate or integrate the Redistributables at the time of
-distribution, but where, when used by a Customer, the main user interface or
-substantial functionality of such device is provided by Application(s) or
-otherwise depends on the Licensed Software.
+where the main user interface or substantial functionality of such unit , when
+used by a Customer, is provided by Application(s) or otherwise depends on the
+Licensed Software, regardless of whether the Redistributables are distributed
+together with the hardware or not. Devices covered with this Agreement shall
+be specified in Appendix 2 or in a quote.
-"Distribution License(s)" shall mean the license required for distribution of
-Redistributables in connection with Devices pursuant to license grant described
-in Section 3.3 of this Agreement.
+"Distribution License(s)" shall mean the license required for any kind of sale,
+trade, exchange, loan, lease, rental or other distribution by or on behalf of
+Licensee to a third party of Redistributables in connection with Devices
+pursuant to license grant described in Section 3.3 of this Agreement.
"Distribution License Packs" shall mean set of prepaid Distribution Licenses
for distribution of Redistributables, as defined in The Qt Company's standard
-price list, quote, Purchase Order confirmation or in an appendix hereto,
-as the case may be.
+price list, quote, Purchase Order confirmation or in an appendix hereto, as
+the case may be.
"Intellectual Property Rights" shall mean patents (including utility models),
design patents, and designs (whether or not capable of registration), chip
@@ -80,48 +98,51 @@ statutory protection of any kind and applications for any of the foregoing as
well as any trade secrets.
"License Certificate" shall mean a certificate generated by The Qt Company for
-each Designated User respectively upon them downloading the licensed Software.
-License Certificate will be available under respective Designated User's Qt
-Account at account.qt.io and it will specify the Designated User, the
-Development Platforms, Deployment Platforms and the License Term. The terms of
-the License Certificate are considered part of this Agreement and shall be
-updated from time to time to reflect any agreed changes to the foregoing terms
+each Designated User respectively upon them downloading the Licensed Software,
+which will be available under respective Designated User's Qt Account at
+account.qt.io. License Certificates will specify the Designated User, the
+Development Platforms, Deployment Platforms and the License Term. Such terms
+are considered part of the licenses granted hereunder and shall be updated
+from time to time to reflect any agreed changes to the foregoing terms
relating to Designated User's rights to the Licensed Software.
"License Fee" shall mean the fee charged to the Licensee for rights granted
under the terms of this Agreement.
-"License Term" shall mean the agreed validity period of the Development
-License of the respective Designated User, during which time the
-Designated User is entitled to use the Licensed Software, as set forth in the
-respective License Certificate.
+"License Term" shall mean the agreed validity period of the Development License
+of the respective Designated User, during which time the Designated User is
+entitled to use the Licensed Software, as set forth in the respective License
+Certificate.
-"Licensed Software" shall mean all versions of the
-
-(i) Qt Toolkit (including Qt Essentials, Qt Add-Ons and Value-Add modules) as
-described in http://doc.qt.io/qt-5/qtmodules.html,
-
-(ii) Qt Creator (including Creator IDE tool) as described in
-http://doc.qt.io/qtcreator/index.html,
-
-(iii) Qt 3D Studio as described in http://doc.qt.io/qt3dstudio/index.html, and
+"Licensed Software" shall mean either
+ (i) Qt for Application Development or
+ (ii) Qt for Device Creation, and/or
+ (iii) Qt 3D Studio, and/or
+ (iv) Qt Design Studio, and/or
+ (v) Qt for MCUs, and/or
+ (vi) selected Add-on Products, if any,
+depending on which product(s) the Licensee has purchased under this Agreement,
as well as corresponding online or electronic documentation, associated media
-and printed materials, including the source code, example programs and the
-documentation, licensed to the Licensee under this Agreement. Licensed Software
-does not include Third Party Software (as defined in Section 4), Open Source
-Qt, or other software products of The Qt Company (for example Qt Safe Renderer
-and Qt for Automation), unless such other software products of The Qt Company
-are separately agreed in writing to be included in scope of the Licensed
-Software.
+and printed materials, including the source code (where applicable), example
+programs and the documentation, licensed to the Licensee under this Agreement.
+Licensed Software does not include Third Party Software (as defined in Section
+4) or Open Source Qt. The Qt Company may, in the course of its development
+activities, at its free and absolute discretion and without any obligation to
+send or publish any notifications to the Licensee or in general, make changes,
+additions or deletions in the components and functionalities of the Licensed
+Software, provided that no such changes, additions or deletions will affect
+the already released version of the Licensed Software, but only upcoming
+version(s).
"Licensee" shall mean the individual or legal entity that is party to this
Agreement, as identified on the signature page hereof.
"Licensee's Records" shall mean books and records that are likely to contain
-information bearing on Licensee's compliance with this Agreement or the
-payments due to The Qt Company under this Agreement, including, but not limited
-to: assembly logs, sales records and distribution records.
+information bearing on Licensee's compliance with this Agreement, Licensee's
+use of Open Source Qt and/or the payments due to The Qt Company under this
+Agreement, including, but not limited to user information, assembly logs,
+sales records and distribution records.
"Modified Software" shall have the meaning as set forth in Section 2.3.
@@ -132,18 +153,45 @@ Support. Use of any such Online Services is discretionary for the Licensee and
some of them may be subject to additional fees.
"Open Source Qt" shall mean the non-commercial Qt computer software products,
-licensed under the terms of the GNU Lesser General Public License, version
-2.1 or later ("LGPL") or the GNU General Public License, version 2.0 or later
+licensed under the terms of the GNU Lesser General Public License, version 2.1
+or later ("LGPL") or the GNU General Public License, version 2.0 or later
("GPL"). For clarity, Open Source Qt shall not be provided nor governed under
this Agreement.
"Party" or "Parties" shall mean Licensee and/or The Qt Company.
+"Permitted Combination" shall have the meaning as set forth in Section
+3.4(viii).
+
+"Pre-Release Code" shall have the meaning as set forth in Section 4.
+
+"Prohibited Combination" shall mean any means to (i) use, combine, incorporate,
+link or integrate Licensed Software with any software created with or
+incorporating Open Source Qt, (ii) use Licensed Software for creation of any
+software created with or incorporating Open Source Qt, or (iii) incorporate or
+integrate Applications into a hardware device or product other than a Device.
+
+"Qt 3D Studio" shall mean The Qt Company's productized offering, which consist
+of all versions of modules and tools as set forth in Appendix 1.
+
+"Qt Design Studio" shall mean The Qt Company's productized offering, which
+consist of all versions of modules and tools as set forth in Appendix 1.
+
+"Qt for Application Development" shall mean The Qt Company's productized
+offering, which consist of all versions of modules and tools as set forth in
+Appendix 1.
+
+"Qt for Device Creation" shall mean The Qt Company's productized offering,
+which consist of all versions of modules and tools as set forth in Appendix 1.
+
+"Qt for MCUs" shall mean The Qt Company's productized offering, which consist
+of all versions of modules and tools as set forth in Appendix 1.
+
"Redistributables" shall mean the portions of the Licensed Software set forth
-in Appendix 1, Section 1 that may be distributed pursuant to the terms of this
-Agreement in object code form only, including any relevant documentation.
-Where relevant, any reference to Licensed Software in this Agreement shall
-include and refer also to Redistributables.
+in Appendix 1 that may be distributed pursuant to the terms of this Agreement
+in object code form only, including any relevant documentation. Where
+relevant, any reference to Licensed Software in this Agreement shall include
+and refer also to Redistributables.
"Renewal Term" shall mean an extension of previous License Term as agreed
between the Parties.
@@ -153,27 +201,27 @@ Section 2.3.
"Support" shall mean standard developer support that is provided by The Qt
Company to assist Designated Users in using the Licensed Software in
-accordance with The Qt Company's standard support terms and as further
-defined in Section 8 hereunder.
+accordance with The Qt Company's standard support terms available at
+https://www.qt.io/terms-conditions/ and as further defined in Section 8
+hereunder.
"Taxes" shall have the meaning set forth in Section 10.5.
"Term" shall have the meaning set forth in Section 12.
"The Qt Company" shall mean:
-
-(i) in the event Licensee is an individual residing in the United States or a
-legal entity incorporated in the United States or having its headquarters in
-the United States, The Qt Company Inc., a Delaware corporation with its office
-at 2350 Mission College Blvd., Suite 1020, Santa Clara, CA 95054, USA.; or
-
-(ii) in the event the Licensee is an individual residing outside of the United
-States or a legal entity incorporated outside of the United States or having
-its registered office outside of the United States, The Qt Company Ltd., a
-Finnish company with its registered office at Bertel Jungin aukio D3A, 02600
-Espoo, Finland.
-
-"Third Party Software " shall have the meaning set forth in Section 4.
+ (i) in the event Licensee is an individual residing in the United
+ States or a legal entity incorporated in the United States or
+ having its headquarters in the United States, The Qt Company Inc.,
+ a Delaware corporation with its office at 2350 Mission College
+ Blvd., Suite 1020, Santa Clara, CA 95054, USA.; or
+ (ii) in the event the Licensee is an individual residing outside of the
+ United States or a legal entity incorporated outside of the United
+ States or having its registered office outside of the United
+ States, The Qt Company Ltd., a Finnish company with its registered
+ office at Bertel Jungin aukio D3A, 02600 Espoo, Finland.
+
+"Third-Party Software" shall have the meaning set forth in Section 4.
"Updates" shall mean a release or version of the Licensed Software containing
bug fixes, error corrections and other changes that are generally made
@@ -189,19 +237,17 @@ first digit of the Licensed Software version number. In the event Upgrades are
provided to the Licensee under this Agreement, they shall be considered as
part of the Licensed Software hereunder.
-2. OWNERSHIP
-
-2.1 Ownership of The Qt Company
+2. OWNERSHIP
+2.1. Ownership of The Qt Company
The Licensed Software is protected by copyright laws and international
-copyright treaties, as well as other intellectual property laws and treaties.
-The Licensed Software is licensed, not sold.
+copyright treaties, as well as other intellectual property laws and
+treaties. The Licensed Software is licensed, not sold.
-All The Qt Company's Intellectual Property Rights are and shall remain the
+All of The Qt Company's Intellectual Property Rights are and shall remain the
exclusive property of The Qt Company or its licensors respectively.
-2.2 Ownership of Licensee
-
+2.2. Ownership of Licensee
All the Licensee's Intellectual Property Rights are and shall remain the
exclusive property of the Licensee or its licensors respectively.
@@ -210,213 +256,235 @@ Devices shall remain with the Licensee and no rights thereto shall be granted
by the Licensee to The Qt Company under this Agreement (except as set forth in
Section 2.3 below).
-2.3 Modified Software
-
+2.3. Modified Software
Licensee may create bug-fixes, error corrections, patches or modifications to
the Licensed Software ("Modified Software"). Such Modified Software may break
the source or binary compatibility with the Licensed Software (including
without limitation through changing the application programming interfaces
("API") or by adding, changing or deleting any variable, method, or class
-signature in the Licensed Software and/or any inter-process protocols, services
-or standards in the Licensed Software libraries). To the extent that Licensee's
-Modified Software so breaks source or binary compatibility with the Licensed
-Software, Licensee acknowledges that The Qt Company's ability to provide
-Support may be prevented or limited and Licensee's ability to make use of
-Updates may be restricted.
+signature in the Licensed Software and/or any inter-process protocols,
+services or standards in the Licensed Software libraries). To the extent that
+Licensee's Modified Software so breaks source or binary compatibility with the
+Licensed Software, Licensee acknowledges that The Qt Company's ability to
+provide Support may be prevented or limited and Licensee's ability to make use
+of Updates may be restricted.
Licensee may, at its sole and absolute discretion, choose to submit Modified
Software to The Qt Company ("Submitted Modified Software") in connection with
-Licensee's Support request, service request or otherwise. In the event Licensee
-does so, then, Licensee hereby grants The Qt Company a sublicensable,
+Licensee's Support request, service request or otherwise. In the event
+Licensee does so, then, Licensee hereby grants The Qt Company a sublicensable,
assignable, irrevocable, perpetual, worldwide, non-exclusive, royalty-free and
-fully paid-up license, under all of Licensee's Intellectual Property Rights, to
-reproduce, adapt, translate, modify, and prepare derivative works of, publicly
-display, publicly perform, sublicense, make available and distribute such
-Submitted Modified Software as The Qt Company sees fit at its free and absolute
-discretion.
+fully paid-up license, under all of Licensee's Intellectual Property Rights,
+to reproduce, adapt, translate, modify, and prepare derivative works of,
+publicly display, publicly perform, sublicense, make available and distribute
+such Submitted Modified Software as The Qt Company sees fit at its free and
+absolute discretion.
3. LICENSES GRANTED
-
-3.1 Development with Licensed Software
-
+3.1. Development with Licensed Software
Subject to the terms of this Agreement, The Qt Company grants to Licensee a
-personal, worldwide, non-exclusive, non-transferable license, valid for the
-License Term, to use, modify and copy the Licensed Software by Designated Users
-on the Development Platforms for the sole purposes of designing, developing,
-demonstrating and testing Application(s) and/or Devices, and to provide thereto
-related support and other related services to end-user Customers.
+worldwide, non-exclusive, non-transferable license, valid for the License
+Term, to use, modify and copy the Licensed Software by Designated Users on the
+Development Platforms for the sole purposes of designing, developing,
+demonstrating and testing Application(s) and/or Devices, and to provide
+thereto related support and other related services to end-user Customers.
-Licensee may install copies of the Licensed Software on an unlimited number of
-computers provided that (i) only the Designated Users may use the Licensed
-Software, and (ii) all Designated Users must have a valid Development License
-to use Licensed Software.
+Licensee may install copies of the Licensed Software on five (5) computers per
+Designated User, provided that only the Designated Users who have a valid
+Development License may use the Licensed Software.
-Licensee may at any time designate another Designated User to replace a then-
-current Designated User by notifying The Qt Company in writing, provided that
-any Designated User may be replaced only once during any six-month period.
+Licensee may at any time designate another Designated User to replace a
+then-current Designated User by notifying The Qt Company in writing, provided
+that any Designated User may be replaced only once during any six-month period.
Upon expiry of the initially agreed License Term, the respective License Terms
shall be automatically extended to one or more Renewal Term(s), unless and
-until either Party notifies the other Party in writing that it does not wish to
-continue the License Term, such notification to be provided to the other Party
-no less than ninety (90) days before expiry of the respective License Term.
-Unless otherwise agreed between the Parties, Renewal Term shall be of equal
-length with the initial Term.
+until either Party notifies the other Party in writing that it does not wish
+to continue the License Term, such notification to be provided to the other
+Party no less than ninety (90) days before expiry of the respective License
+Term. Unless otherwise agreed between the Parties, Renewal Term shall be of
+equal length with the initial License Term.
Any such Renewal Term shall be subject to License Fees agreed between the
Parties or, if no advance agreement exists, subject to The Qt Company's
standard pricing applicable at the commencement date of any such Renewal Term.
-3.2 Distribution of Applications
-
+Any price or other term specified for a Renewal Term shall be valid only for
+the specified time.
+
+The Qt Company may request the Licensee to place a purchase order corresponding
+to a quote by The Qt Company for the relevant Renewal Term.
+
+In the event Licensee does not prevent auto-renewal pursuant the above, but a
+Renewal Term is nevertheless not duly ordered within 30 days from the date of
+the respective quote from The Qt Company and/or the respective License Fee
+paid by due date specified in The Qt Company's respective invoice, The Qt
+Company shall apply a reinstatement fee equal to ten percent (10 %) of the
+total value of the License Fees of the Development Licenses for the expired
+term to be added to the License Fee of the respective Renewal Term.
+
+In the event Licensee chooses not to renew a Development License for a Renewal
+Term by notifying The Qt Company thereof no less than ninety (90) days before
+expiry of the respective License Term, Licensee may still reinstate such
+expired Development Licenses for a Renewal Term subject to applicable renewal
+Term License Fees until thirty (30) days from the expiry of the initially
+agreed License Term or preceding Renewal Term. After such thirty (30) day
+period a Development License shall be subject to applicable License Fees for a
+new Development License and not any Renewal Term License Fees.
+
+3.2. Distribution of Applications
Subject to the terms of this Agreement, The Qt Company grants to Licensee a
-personal, worldwide, non-exclusive, non-transferable, revocable (for cause
-pursuant to this Agreement) right and license, valid for the Term, to
-
-(i) distribute, by itself or through its Contractors, Redistributables as
-installed, incorporated or integrated into Applications for execution on the
-Deployment Platforms, and
-
-(ii) grant sublicenses to Redistributables, as distributed hereunder, for
-Customers solely for Customer's internal use and to the extent necessary in
-order for the Customers to use the Applications for their respective intended
-purposes.
+worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to
+this Agreement) right and license, valid for the Term, to
+ (i) distribute, by itself or through its Contractors, Redistributables
+ as installed, incorporated or integrated into Applications for
+ execution on the Deployment Platforms, and
+ (ii) grant sublicenses to Redistributables, as distributed hereunder,
+ for Customers solely for Customer's internal use and to the extent
+ necessary in order for the Customers to use the Applications for
+ their respective intended purposes.
Right to distribute the Redistributables as part of an Application as provided
-herein is not royalty-bearing but is conditional upon the Licensee having paid
-the agreed Development Licenses from The Qt Company before distributing any
-Redistributables to Customers.
-
-3.3 Distribution of Devices
+herein is not royalty-bearing but is conditional upon the Licensee not having
+any unpaid License Fees for Development Licenses owed to The Qt Company at the
+time of distribution of any Redistributables to Customers.
+3.3. Distribution of Devices
Subject to the terms of this Agreement, The Qt Company grants to Licensee a
-personal, worldwide, non-exclusive, non-transferable, revocable (for cause
-pursuant to this Agreement) right and license, valid for the Term, to
-
-(i) distribute, by itself or through one or more tiers of Contractors,
-Redistributables as installed, incorporated or integrated, or intended to be
-installed, incorporated or integrated into Devices for execution on the
-Deployment Platforms, and
-
-(ii) grant sublicenses to Redistributables, as distributed hereunder, for
-Customers solely for Customer's internal use and to the extent necessary in
-order for the Customers to use the Devices for their respective intended
-purposes.
+worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to
+this Agreement) right and license, valid for the Term, to
+ (i) distribute, by itself or through one or more tiers of Contractors,
+ Redistributables as installed, incorporated or integrated, or
+ intended to be installed, incorporated or integrated into Devices
+ for execution on the Deployment Platforms, and
+ (ii) grant sublicenses to Redistributables, as distributed hereunder,
+ for Customers solely for Customer's internal use and to the extent
+ necessary in order for the Customers to use the Devices for their
+ respective intended purposes.
Right to distribute the Redistributables with Devices as provided herein is
-conditional upon the Licensee having purchased and paid the appropriate amount
-of Development and Distribution Licenses from The Qt Company before
-distributing any Redistributables to Customers.
-
-3.4 Further Requirements
+conditional upon the Licensee (i) not having any unpaid License Fees for
+Development Licenses owed to The Qt Company, and (ii) having purchased and
+paid corresponding Distribution Licenses at the time of distribution of any
+Redistributables to Customers.
+3.4. Further Requirements
The licenses granted above in this Section 3 by The Qt Company to Licensee are
conditional and subject to Licensee's compliance with the following terms:
-
-(i) Licensee shall not remove or alter any copyright, trademark or other
-proprietary rights notice contained in any portion of the Licensed Software;
-
-(ii) Applications must add primary and substantial functionality to the
-Licensed Software;
-
-(iii) Applications may not pass on functionality which in any way makes it
-possible for others to create software with the Licensed Software; provided
-however that Licensee may use the Licensed Software's scripting and QML ("Qt
-Quick") functionality solely in order to enable scripting, themes and styles
-that augment the functionality and appearance of the Application(s) without
-adding primary and substantial functionality to the Application(s);
-
-(iv) Applications must not compete with the Licensed Software;
-
-(v) Licensee shall not use The Qt Company's or any of its suppliers' names,
-logos, or trademarks to market Applications, except that Licensee may use
-"Built with Qt" logo to indicate that Application(s) was developed using the
-Licensed Software;
-
-(vi) Licensee shall not distribute, sublicense or disclose source code of
-Licensed Software to any third party (provided however that Licensee may
-appoint employee(s) of Contractors as Designated Users to use Licensed
-Software pursuant to this Agreement). Such right may be available for the
-Licensee subject to a separate software development kit ("SDK") license
-agreement to be concluded with The Qt Company;
-
-(vii) Licensee shall not grant the Customers a right to (i) make copies of the
-Redistributables except when and to the extent required to use the Applications
-and/or Devices for their intended purpose, (ii) modify the Redistributables or
-create derivative works thereof, (iii) decompile, disassemble or otherwise
-reverse engineer Redistributables, or (iv) redistribute any copy or portion of
-the Redistributables to any third party, except as part of the onward sale of
-the Device on which the Redistributables are installed;
-
-(viii) Licensee shall not and shall cause that its Affiliates or Contractors
-shall not a) in any way combine, incorporate or integrate Licensed Software
-with, or use Licensed Software for creation of, any software created with or
-incorporating Open Source Qt, or b) incorporate or integrate Applications
-into a hardware device or product other than a Device, unless Licensee has
-received an advance written permission from The Qt Company to do so. Absent
-such written permission, any and all distribution by the Licensee during the
-Term of a hardware device or product a) which incorporate or integrate any
-part of Licensed Software or Open Source Qt; or b) where the main user
-interface or substantial functionality is provided by software build with
-Licensed Software or Open Source Qt or otherwise depends on the Licensed
-Software or Open Source Qt, shall be considered as a Device distribution under
-this Agreement and dependent on compliance thereof (including but not limited
-to obligation to pay applicable License Fees for such distribution);
-
-(ix) Licensee shall cause all of its Affiliates and Contractors entitled to
-make use of the licenses granted under this Agreement, to be contractually
-bound to comply with the relevant terms of this Agreement and not to use the
-Licensed Software beyond the terms hereof and for any purposes other than
-operating within the scope of their services for Licensee. Licensee shall be
-responsible for any and all actions and omissions of its Affiliates and
-Contractors relating to the Licensed Software and use thereof (including but
-not limited to payment of all applicable License Fees);
-
-(x) Except when and to the extent explicitly provided in this Section 3,
-Licensee shall not transfer, publish, disclose, display or otherwise make
-available the Licensed Software;
-
-; and
-
-(xi) Licensee shall not attempt or enlist a third party to conduct or attempt
-to conduct any of the above.
-
-Above terms shall not be applicable if and to the extent they conflict with any
-mandatory provisions of any applicable laws.
-
+ (i) Licensee shall not remove or alter any copyright, trademark or
+ other proprietary rights notice(s) contained in any portion of the
+ Licensed Software;
+ (ii) Applications must add primary and substantial functionality to the
+ Licensed Software so as not to compete with the Licensed Software;
+ (iii) Applications may not pass on functionality which in any way makes
+ it possible for others to create software with the Licensed
+ Software; provided however that Licensee may use the Licensed
+ Software's scripting and QML ("Qt Quick") functionality solely in
+ order to enable scripting, themes and styles that augment the
+ functionality and appearance of the Application(s) without adding
+ primary and substantial functionality to the Application(s);
+ (iv) Licensee shall not use Licensed Software in any manner or for any
+ purpose that infringes, misappropriates or otherwise violates any
+ Intellectual property or right of any third party, or that
+ violates any applicable law;
+ (v) Licensee shall not use The Qt Company's or any of its suppliers'
+ names, logos, or trademarks to market Applications, except that
+ Licensee may use "Built with Qt" logo to indicate that
+ Application(s) was developed using the Licensed Software;
+ (vi) Licensee shall not distribute, sublicense or disclose source code
+ of Licensed Software to any third party (provided however that
+ Licensee may appoint employee(s) of Contractors as Designated
+ Users to use Licensed Software pursuant to this Agreement). Such
+ right may be available for the Licensee subject to a separate
+ software development kit ("SDK") license agreement to be concluded
+ with The Qt Company;
+ (vii) Licensee shall not grant the Customers a right to (i) make copies
+ of the Redistributables except when and to the extent required to
+ use the Applications and/or Devices for their intended purpose,
+ (ii) modify the Redistributables or create derivative works
+ thereof, (iii) decompile, disassemble or otherwise reverse
+ engineer Redistributables, or (iv) redistribute any copy or
+ portion of the Redistributables to any third party, except as part
+ of the onward sale of the Device on which the Redistributables are
+ installed;
+ (viii) Licensee shall not and shall cause that its Affiliates or
+ Contractors shall not use Licensed Software in any Prohibited
+ Combination, unless Licensee has received an advance written
+ permission from The Qt Company to do so. Absent such written
+ permission, any and all distribution by the Licensee during the
+ Term of a hardware device or product a) which incorporate or
+ integrate any part of Licensed Software or Open Source Qt; or b)
+ where the main user interface or substantial functionality is
+ provided by software built with Licensed Software or Open Source
+ Qt or otherwise depends on the Licensed Software or Open Source
+ Qt, shall be considered to be Device distribution under this
+ Agreement and shall be dependent on Licensee's compliance thereof
+ (including but not limited to obligation to pay applicable License
+ Fees for such distribution). Notwithstanding what is provided
+ above in this sub-section (viii), Licensee is entitled to use and
+ combine Qt 3D Studio and/or Qt Design Studio with Open Source Qt
+ ("Permitted Combination") for its internal evaluation purposes,
+ provided that Licensee shall in no way transfer, publish, disclose,
+ display or otherwise make available any software or work resulting
+ from such Permitted Combination;
+ (ix) Licensee shall cause all of its Affiliates and Contractors
+ entitled to make use of the licenses granted under this Agreement,
+ to be contractually bound to comply with the relevant terms of
+ this Agreement and not to use the Licensed Software beyond the
+ terms hereof and for any purposes other than operating within the
+ scope of their services for Licensee. Licensee shall be responsible
+ for any and all actions and omissions of its Affiliates and
+ Contractors relating to the Licensed Software and use thereof
+ (including but not limited to payment of all applicable License
+ Fees);
+ (x) Except when and to the extent explicitly provided in this Section
+ 3, Licensee shall not transfer, publish, disclose, display or
+ otherwise make available the Licensed Software; and
+ (xi) Licensee shall not attempt or enlist a third party to conduct or
+ attempt to conduct any of the above.
+
+Above terms shall not be applicable if and to the extent they conflict with
+any mandatory provisions of any applicable laws.
Any use of Licensed Software beyond the provisions of this Agreement is
strictly prohibited and requires an additional license from The Qt Company.
-4. THIRD PARTY SOFTWARE
-
+4. THIRD-PARTY SOFTWARE
The Licensed Software may provide links to third party libraries or code
-(collectively "Third Party Software") to implement various functions. Third
-Party Software does not comprise part of the Licensed Software. In some cases,
-access to Third Party Software may be included in the Licensed Software. Such
-Third Party Software will be listed in the ".../src/3rdparty" source tree
-delivered with the Licensed Software or documented in the Licensed Software, as
-such may be amended from time to time. Licensee acknowledges that use or
-distribution of Third Party Software is in all respects subject to applicable
-license terms of applicable third party right holders.
+(collectively "Third-Party Software") to implement various functions.
+Third-Party Software does not comprise part of the Licensed Software. In some
+cases, access to Third-Party Software may be included with the Licensed
+Software. Such Third-Party Software will be listed in the ".../src/3rdparty"
+source tree delivered with the Licensed Software or documented in the Licensed
+Software, as such may be amended from time to time. Licensee acknowledges that
+use or distribution of Third-Party Software is in all respects subject to
+applicable license terms of applicable third-party right holders.
5. PRE-RELEASE CODE
-
-The Licensed Software may contain pre-release code and functionality marked or
-otherwise stated as "Technology Preview", "Alpha", "Beta" or similar
-designation. Such pre-release code may be present in order to provide
-experimental support for new platforms or preliminary versions of one or more
-new functionalities. The pre-release code may not be at the level of
-performance and compatibility of a final, generally available, product
-offering of the Licensed Software. The pre-release parts of the Licensed
-Software may not operate correctly, may contain errors and may be substantially
-modified by The Qt Company prior to the first commercial product release, if
-any. The Qt Company is under no obligation to make pre-release code
-commercially available, or provide any Support or Updates relating thereto. The
-Qt Company assumes no liability whatsoever regarding any pre-release code, but
-any use thereof is exclusively at Licensee's own risk and expense.
+The Licensed Software may contain pre-release code and functionality, or sample
+code marked or otherwise stated with appropriate designation such as
+"Technology Preview", "Alpha", "Beta", "Sample" etc. ("Pre-Release Code").
+
+Such Pre-Release Code may be present complimentary for the Licensee, in order
+to provide experimental support or information for new platforms or preliminary
+versions of one or more new functionalities or for other similar reasons. The
+Pre-Release Code may not be at the level of performance and compatibility of a
+final, generally available, product offering. The Pre-Release Code may not
+operate correctly, may contain errors and may be substantially modified by The
+Qt Company prior to the first commercial product release, if any. The Qt
+Company is under no obligation to make Pre-Release Code commercially available,
+or provide any Support or Updates relating thereto. The Qt Company assumes no
+liability whatsoever regarding any Pre-Release Code, but any use thereof is
+exclusively at Licensee's own risk and expense.
+
+For clarity, unless Licensed Software specifies different license terms for the
+respective Pre-Release Code, the Licensee is entitled to use such pre-release
+code pursuant to Section 3, just like other Licensed Software, provided however
+that in the event Add-on Products are included and available as such
+Pre-Release Code, Licensee's right to use such Add-on Products is nevertheless
+subject to and conditional upon conclusion of separate agreement with The Qt
+Company.
6. LIMITED WARRANTY AND WARRANTY DISCLAIMER
-
The Qt Company hereby represents and warrants that it has the power and
authority to grant the rights and licenses granted to Licensee under this
Agreement.
@@ -432,54 +500,43 @@ Software under the terms of this Agreement.
TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE QT COMPANY ON BEHALF OF
ITSELF AND ITS LICENSORS, SUPPLIERS AND AFFILIATES, DISCLAIMS ALL OTHER
WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-
-INFRINGEMENT WITH REGARD TO THE LICENSED SOFTWARE. THE QT COMPANY DOES NOT
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
+NON-INFRINGEMENT WITH REGARD TO THE LICENSED SOFTWARE. THE QT COMPANY DOES NOT
WARRANT THAT THE LICENSED SOFTWARE WILL SATISFY LICENSEE'S REQUIREMENTS OR THAT
IT WILL OPERATE WITHOUT DEFECT OR ERROR OR THAT THE OPERATION THEREOF WILL BE
-UNINTERRUPTED. ALL USE OF AND RELIANCE ON THE LICENSED SOFTWARE IS AT THE SOLE
-RISK OF AND RESPONSIBILITY OF LICENSEE.
+UNINTERRUPTED.
7. INDEMNIFICATION AND LIMITATION OF LIABILITY
-
-7.1 Limitation of Liability
-
+7.1. Limitation of Liability
EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II)
BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO
EVENT SHALL EITHER PARTY BE LIABLE TO THE OTHER PARTY FOR ANY LOSS OF PROFIT,
LOSS OF DATA, LOSS OF BUSINESS OR GOODWILL OR ANY OTHER INDIRECT, SPECIAL,
CONSEQUENTIAL, INCIDENTAL OR PUNITIVE COST, DAMAGES OR EXPENSE OF ANY KIND,
-HOWSOEVER ARISING UNDER OR IN CONNECTION WITH THIS AGREEMENT. PARTIES
-SPECIFICALLY AGREE THAT LICENSEE'S OBLIGATION TO PAY LICENSE AND OTHER FEES
-CORRESPONDING TO ACTUAL USAGE OF LICENSED SOFTWARE HEREUNDER SHALL BE
-CONSIDERED AS A DIRECT DAMAGE.
+HOWSOEVER ARISING UNDER OR IN CONNECTION WITH THIS AGREEMENT.
EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II)
-BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN
-NO EVENT SHALL EITHER PARTY'S TOTAL AGGREGATE LIABILITY UNDER THIS AGREEMENT
+BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO
+EVENT SHALL EITHER PARTY'S TOTAL AGGREGATE LIABILITY UNDER THIS AGREEMENT
EXCEED THE AGGREGATE LICENSE FEES PAID OR PAYABLE TO THE QT COMPANY FROM
LICENSEE DURING THE PERIOD OF TWELVE (12) MONTHS IMMEDIATELY PRECEDING THE
EVENT RESULTING IN SUCH LIABILITY.
THE PROVISIONS OF THIS SECTION 7 ALLOCATE THE RISKS UNDER THIS AGREEMENT
BETWEEN THE QT COMPANY AND LICENSEE AND THE PARTIES HAVE RELIED UPON THE
-LIMITATIONS SET FORTH HEREIN IN DETERMINING WHETHER TO ENTER INTO THIS AGREEMENT.
+LIMITATIONS SET FORTH HEREIN IN DETERMINING WHETHER TO ENTER INTO THIS
+AGREEMENT.
-7.2 Licensee's Indemnification
-
-Licensee shall indemnify and hold harmless The Qt Company from and against any
-claim, injury, judgment, settlement, loss or expense, including attorneys' fees
-related to: (a) Licensee's misrepresentation in connection with The Qt Company
-or the Licensed Software or breach of this Agreement, (b) the Application or
-Device (except where such cause of liability is solely attributable to the
-Licensed Software).
+NOTWITHSTANDING ANYTHING TO THE CONTRARY IN THIS AGREEMENT, LICENSEE SHALL
+ALWAYS BE LIABLE TO PAY THE APPLICABLE LICENSE FEES CORRESPONDING TO ITS ACTUAL
+USE OF LICENSED SOFTWARE.
8. SUPPORT, UPDATES AND ONLINE SERVICES
-
Upon due payment of the agreed License Fees the Licensee will be eligible to
receive Support and Updates and to use the Online Services during the License
Term, provided, however, that in the event the License Term is longer than 36
-months, Support is provided only for the first 12 months, unless the Parties
-specifically otherwise agree.
+months, the initial payment includes Support for only the first 12 months,
+unless the Parties specifically otherwise agree.
Unless otherwise decided by The Company at its free and absolute discretion,
Upgrades will not be included in the Support but may be available subject to
@@ -493,26 +550,24 @@ Unless otherwise agreed, The Qt Company shall not be responsible for providing
any service or support to Customers.
9. CONFIDENTIALITY
-
Each Party acknowledges that during the Term of this Agreement each Party may
receive information about the other Party's business, business methods,
business plans, customers, business relations, technology, and other
-information, including the terms of this Agreement, that is confidential and
-of great value to the other Party, and the value of which would be
-significantly reduced if disclosed to third parties ("Confidential
-Information"). Accordingly, when a Party (the "Receiving Party") receives
-Confidential Information from the other Party (the "Disclosing Party"), the
-Receiving Party shall only disclose such information to employees and
-Contractors on a need to know basis, and shall cause its employees and
-employees of its Affiliates to: (i) maintain any and all Confidential
-Information in confidence; (ii) not disclose the Confidential Information to a
-third party without the Disclosing Party's prior written approval; and (iii)
-not, directly or indirectly, use the Confidential Information for any purpose
-other than for exercising its rights and fulfilling its responsibilities
-pursuant to this Agreement. Each Party shall take reasonable measures to
-protect the Confidential Information of the other Party, which measures shall
-not be less than the measures taken by such Party to protect its own
-confidential and proprietary information.
+information, including the terms of this Agreement, that is confidential and of
+great value to the other Party, and the value of which would be significantly
+reduced if disclosed to third parties ("Confidential Information").
+Accordingly, when a Party (the "Receiving Party") receives Confidential
+Information from the other Party (the "Disclosing Party"), the Receiving Party
+shall only disclose such information to employees and Contractors on a need to
+know basis, and shall cause its employees and employees of its Affiliates to:
+(i) maintain any and all Confidential Information in confidence; (ii) not
+disclose the Confidential Information to a third party without the Disclosing
+Party's prior written approval; and (iii) not, directly or indirectly, use the
+Confidential Information for any purpose other than for exercising its rights
+and fulfilling its responsibilities pursuant to this Agreement. Each Party
+shall take reasonable measures to protect the Confidential Information of the
+other Party, which measures shall not be less than the measures taken by such
+Party to protect its own confidential and proprietary information.
Obligation of confidentiality shall not apply to information that (i) is or
becomes generally known to the public through no act or omission of the
@@ -536,20 +591,19 @@ secrets, for so long as such trade secrets are protected under applicable trade
secret laws.
10. FEES, DELIVERY AND PAYMENT
-
-10.1 License Fees
-
+10.1. License Fees
License Fees are described in The Qt Company's standard price list, quote or
Purchase Order confirmation or in an appendix hereto, as the case may be.
The License Fees shall not be refunded or claimed as a credit in any event or
for any reason whatsoever.
-10.2 Ordering Licenses
-
+10.2. Ordering Licenses
Licensee may purchase Development Licenses and Distribution Licenses pursuant
to agreed pricing terms or, if no specific pricing terms have been agreed upon,
at The Qt Company's standard pricing terms applicable at the time of purchase.
+Unless specifically otherwise provided, any pricing terms referenced in this
+Agreement shall be valid for twelve (12) months from the date of this Agreement.
Licensee shall submit all purchase orders for Development Licenses and
Distribution Licenses to The Qt Company by email or any other method acceptable
@@ -557,128 +611,106 @@ to The Qt Company (each such order is referred to herein as a "Purchase Order")
for confirmation, whereupon the Purchase Order shall become binding between the
Parties.
-10.3 Distribution License Packs
-
+10.3. Distribution License Packs
Unless otherwise agreed, Distribution Licenses shall be purchased by way of
Distribution License Packs.
Upon due payment of the ordered Distribution License Pack(s), the Licensee will
-have an account of Distribution Licenses available for installing, bundling or
-integrating (all jointly "installing") the Redistributables with the Devices or
-for otherwise distributing the Redistributables in accordance with this
-Agreement.
-
-Each time Licensee "installs" or distributes a copy of Redistributables, then
-one Distribution License is used, and Licensee's account of available
-Distribution Licenses is decreased accordingly.
-
-Licensee may "install" copies of the Redistributables so long as Licensee has
-Distribution Licenses remaining on its account.
+have an account of Distribution Licenses available for distributing the
+Redistributables in accordance with this Agreement.
-Redistributables will be deemed to have been "installed" into a Device when one
-of the following circumstances shall have occurred: a) the Redistributables
-have been loaded onto the Device and used outside of the Licensee's premises or
-b) the Device has been fully tested and placed into Licensee's inventory
-(or sold) for the first time (i.e., Licensee will not be required to use
-(or pay for) more than one Distribution License for each individual Device,
-e.g. in a situation where a Device is returned to Licensee's inventory after
-delivery to a distributor or sale to a Customer). In addition, if Licensee
-includes a back-up copy of the Redistributables on a CD-ROM or other storage
-medium along with the product, that backup copy of the Redistributables will
-not be deemed to have been "installed" and will not require an additional
-Distribution License.
-
-10.4 Payment Terms
+Each time Licensee distributes a copy of Redistributables, then one
+Distribution License is used, and Licensee's account of available Distribution
+Licenses is decreased accordingly.Licensee may distribute copies of the
+Redistributables so long as Licensee has Distribution Licenses remaining on
+its account.
+10.4. Payment Terms
License Fees and any other charges under this Agreement shall be paid by
-Licensee no later than thirty (30) days from the date of the applicable invoice
-from The Qt Company.
+Licensee no later than thirty (30) days from the date of the applicable
+invoice from The Qt Company.
The Qt Company will submit an invoice to Licensee after the date of this
-Agreement and/or after The Qt Company receives a Purchase Order from
-Licensee.
+Agreement and/or after The Qt Company receives a Purchase Order from Licensee.
A late payment charge of the lower of (a) one percent per month; or (b) the
interest rate stipulated by applicable law, shall be charged on any unpaid
balances that remain past due.
-The Qt Company shall have the right to suspend, terminate or withhold grants
-of all rights to the Licensed Software hereunder, including but not limited to
-the Developer License, Distribution License, and Support, should Licensee fail
-to make payment in timely fashion.
-
-10.5 Taxes
-
+10.5. Taxes
All License Fees and other charges payable hereunder are gross amounts but
-exclusive of any value added tax, use tax, sales tax and other taxes, duties or
-tariffs ("Taxes"). Such applicable Taxes shall be paid by Licensee, or, where
-applicable, in lieu of payment of such Taxes, Licensee shall provide an
-exemption certificate to The Qt Company and any applicable authority.
-
-11 RECORD-KEEPING AND REPORTING OBLIGATIONS; AUDIT RIGHTS
-
-11.1 Licensee's Record-keeping
-
-Licensee shall at all times maintain accurate and up-to-date written records of
-Licensee's activities related to the use of Licensed Software and distribution
-of Redistributables. The records shall be adequate to determine Licensee's
-compliance with the provisions of this Agreement and to demonstrate the number
-of Designated Users and Redistributables distributed by Licensee. The records
-shall conform to good accounting practices reasonably acceptable to The Qt
-Company.
+exclusive of any value added tax, use tax, sales tax, withholding tax and other
+taxes, duties or tariffs ("Taxes") levied directly for the sale, delivery or
+use of Licensed Software hereunder pursuant to any applicable law. Such
+applicable Taxes shall be paid by Licensee to The Qt Company, or, where
+applicable, in lieu of payment of such Taxes to The Qt Company, Licensee shall
+provide an exemption certificate to The Qt Company and any applicable authority.
+
+11. RECORD-KEEPING AND REPORTING OBLIGATIONS; AUDIT RIGHTS
+11.1. Licensee's Record-keeping
+Licensee shall at all times during the Term of this Agreement and for a period
+of seven (7) years thereafter maintain Licensee's Records in an accurate and
+up-to-date form. Licensee's Records shall be adequate to reasonably enable The
+Qt Company to determine Licensee's compliance with the provisions of this
+Agreement. The records shall conform to general good accounting practices.
Licensee shall, within thirty (30) days from receiving The Qt Company's request
-to that effect, deliver to The Qt Company a report on Licensee's usage of
-Licensed Software, such report to copies of Redistributables distributed by
-Licensee during that calendar quarter, and also detailing the number of
-undistributed copies of Redistributables made by Licensee and remaining in its
-account contain information, in sufficient detail, on (i) amount of users
-working with Licensed Software, (ii) copies of Redistributables distributed by
-Licensee during that calendar quarter, (iii) number of undistributed copies of
-Redistributables and corresponding number of unused Distribution Licenses
-remaining on Licensee's account, and (iv) any other information as The Qt
-Company may reasonably require from time to time.
+to that effect, deliver to The Qt Company a report based on Licensee's Records,
+such report to contain information, in sufficient detail, on (i) number and
+identity of users working with Licensed Software or Open Source Qt, (ii) copies
+of Redistributables distributed by Licensee during the most recent calendar
+quarter and/or any other term specified by The Qt Company, (iii) number of
+undistributed copies of Redistributables and corresponding number of unused
+Distribution Licenses remaining on Licensee's account, and (iv) any other
+information as The Qt Company may reasonably require from time to time.
11.2. The Qt Company's Audit Rights
-
The Qt Company or an independent auditor acting on behalf of The Qt Company's,
may, upon at least five (5) business days' prior written notice and at its
-expense, audit Licensee with respect to the use of the Redistributables, but
-not more frequently than once during each 6-month period. Such audit may be
-conducted by mail, electronic means or through an in-person visit to Licensee's
-place of business. Any such in-person audit shall be conducted during regular
-business hours at Licensee's facilities and shall not unreasonably interfere
-with Licensee's business activities. The Qt Company or the independent auditor
-acting on behalf of The Qt Company shall be entitled to inspect Licensee's
-Records. All such Licensee's Records and use thereof shall be subject to an
-obligation of confidentiality under this Agreement.
+expense, audit Licensee with respect to the Licensee's use of the Licensed
+Software, but not more frequently than once during each 6-month period. Such
+audit may be conducted by mail, electronic means or through an in-person visit
+to Licensee's place of business. Any such in-person audit shall be conducted
+during regular business hours at Licensee's facilities and shall not
+unreasonably interfere with Licensee's business activities. The Qt Company or
+the independent auditor acting on behalf of The Qt Company shall be entitled to
+inspect Licensee's Records and conduct necessary interviews of Licensee's
+relevant employees and Contractors. All such Licensee's Records and use thereof
+shall be subject to an obligation of confidentiality under this Agreement.
If an audit reveals that Licensee is using the Licensed Software beyond scope
-of the licenses Licensee has paid for, Licensee agrees to immediately pay The
-Qt Company any amounts owed for such unauthorized use.
-
-In addition, in the event the audit reveals a material violation of the terms
-of this Agreement (underpayment of more than 5% of License Fees shall always be
-deemed a material violation for purposes of this section), then the Licensee
-shall pay The Qt Company's reasonable cost of conducting such audit.
-
-12 TERM AND TERMINATION
-
-12.1 Term
-
+of the licenses Licensee has paid for, Licensee agrees to pay The Qt Company
+any amounts owed for such unauthorized use within 30 days from receipt of the
+corresponding invoice from The Qt Company. In addition, in the event the audit
+reveals a material violation of the terms of this Agreement (without
+limitation, either (i) underpayment of more than 10 % of License Fees or 10,000
+euros (whichever is more) or (ii) distribution of products, which include or
+result from Prohibited Combination, shall be deemed a material violation for
+purposes of this section), then the Licensee shall pay The Qt Company's
+reasonable cost of conducting such audit.
+
+12. TERM AND TERMINATION
+12.1. Agreement Term
This Agreement shall enter into force upon due acceptance by both Parties and
-remain in force for as long as there is any Development License(s) in force
-("Term"), unless and until terminated pursuant to the terms of this Section 12.
-
-12.2 Termination by The Qt Company
+remain in force for as long as there is any Development License(s) purchased
+under this Agreement in force ("Term"), unless and until terminated pursuant to
+the terms of this Section 12.
-The Qt Company shall have the right to terminate this Agreement upon thirty
-(30) days prior written notice if the Licensee is in material breach of any
+12.2. Termination and suspension of rights
+Either Party shall have the right to terminate this Agreement upon thirty (30)
+days prior written notice if the other Party commits a material breach of any
obligation of this Agreement and fails to remedy such breach within such notice
period.
-12.3 Mutual Right to Terminate
+Instead of termination, The Qt Company shall have the right to suspend or
+withhold grants of all rights to the Licensed Software hereunder, including but
+not limited to the Development Licenses, Distribution License, and Support,
+should Licensee fail to make payment in timely fashion or otherwise violates or
+is reasonably suspected to violate its obligations or terms of this Agreement,
+and where such violation or breach is not cured within five (5) business days
+following The Qt Company's written notice thereof.
+12.3. Mutual Right to Terminate
Either Party shall have the right to terminate this Agreement immediately upon
written notice in the event that the other Party becomes insolvent, files for
any form of bankruptcy, makes any assignment for the benefit of creditors, has
@@ -687,26 +719,24 @@ substantial part of its assets, ceases to conduct business, or an act
equivalent to any of the above occurs under the laws of the jurisdiction of the
other Party.
-12.4 Parties' Rights and Duties upon Termination
-
-Upon expiry or termination of the Agreement Licensee shall cease and shall
+12.4. Parties´ Rights and Duties upon Termination
+Upon expiry or termination of the Agreement, Licensee shall cease and shall
cause all Designated Users (including those of its Affiliates' and
Contractors') to cease using the Licensed Software and distribution of the
Redistributables under this Agreement.
Notwithstanding the above, in the event the Agreement expires or is terminated:
-
-(i) as a result of The Qt Company choosing not to renew the Development
-License(s) as set forth in Section 3.1, then all valid licenses possessed by
-the Licensee at such date shall be extended to be valid in perpetuity under the
-terms of this Agreement and Licensee is entitled to purchase additional
-licenses as set forth in Section 10.2; or
-
-(ii) for reason other than by The Qt Company pursuant to item (i) above or
-pursuant to Section 12.2, then the Licensee is entitled, for a period of six
-(6) months after the effective date of termination, to continue distribution of
-Devices under the Distribution Licenses paid but unused at such effective date
-of termination.
+ (i) as a result of The Qt Company choosing not to renew the Development
+ License(s) as set forth in Section 3.1, then all valid licenses
+ possessed by the Licensee at such date shall be extended to be
+ valid in perpetuity under the terms of this Agreement and Licensee
+ is entitled to purchase additional licenses as set forth in
+ Section 10.2; or
+ (ii) for reason other than by The Qt Company pursuant to item (i) above
+ or pursuant to Section 12.2, then the Licensee is entitled, for a
+ period of six (6) months after the effective date of termination,
+ to continue distribution of Devices under the Distribution Licenses
+ paid but unused at such effective date of termination.
Upon any such termination the Licensee shall destroy or return to The Qt
Company all copies of the Licensed Software and all related materials and will
@@ -718,66 +748,60 @@ Expiry or termination of this Agreement for any reason whatsoever shall not
relieve Licensee of its obligation to pay any License Fees accrued or payable
to The Qt Company prior to the effective date of termination, and Licensee
shall immediately pay to The Qt Company all such fees upon the effective date
-of termination. Termination of this Agreement shall not affect any rights of
+of termination. Termination of this Agreement shall not affect any rights of
Customers to continue use of Applications and Devices (and therein incorporated
Redistributables).
-12.5 Extension in case of bankruptcy
-
+12.5. Extension in case of bankruptcy
In the event The Qt Company is declared bankrupt under a final, non-cancellable
decision by relevant court of law, and this Agreement is not, at the date of
expiry of the Development License(s) pursuant to Section 3.1, assigned to
party, who has assumed The Qt Company's position as a legitimate licensor of
Licensed Software under this Agreement, then all valid licenses possessed by
the Licensee at such date of expiry, and which the Licensee has not notified
-for expiry, shall be extended to be valid in perpetuity under the terms of
-this Agreement.
+for expiry, shall be extended to be valid in perpetuity under the terms of this
+Agreement.
13. GOVERNING LAW AND LEGAL VENUE
-
In the event this Agreement is in the name of The Qt Company Inc., a Delaware
Corporation, then:
-
-(i) this Agreement shall be construed and interpreted in accordance with the
-laws of the State of California, USA, excluding its choice of law provisions;
-
-(ii) the United Nations Convention on Contracts for the International Sale of
-Goods will not apply to this Agreement; and
-
-(iii) any dispute, claim or controversy arising out of or relating to this
-Agreement or the breach, termination, enforcement, interpretation or validity
-thereof, including the determination of the scope or applicability of this
-Agreement to arbitrate, shall be determined by arbitration in San Francisco,
-USA, before one arbitrator. The arbitration shall be administered by JAMS
-pursuant to JAMS' Streamlined Arbitration Rules and Procedures. Judgment on the
-Award may be entered in any court having jurisdiction. This Section shall not
-preclude parties from seeking provisional remedies in aid of arbitration from a
-court of appropriate jurisdiction.
+ (i) this Agreement shall be construed and interpreted in accordance
+ with the laws of the State of California, USA, excluding its choice
+ of law provisions;
+ (ii) the United Nations Convention on Contracts for the International
+ Sale of Goods will not apply to this Agreement; and
+ (iii) any dispute, claim or controversy arising out of or relating to
+ this Agreement or the breach, termination, enforcement,
+ interpretation or validity thereof, including the determination of
+ the scope or applicability of this Agreement to arbitrate, shall
+ be determined by arbitration in San Francisco, USA, before one
+ arbitrator. The arbitration shall be administered by JAMS pursuant
+ to JAMS' Streamlined Arbitration Rules and Procedures. Judgment on
+ the Award may be entered in any court having jurisdiction. This
+ Section shall not preclude parties from seeking provisional
+ remedies in aid of arbitration from a court of appropriate
+ jurisdiction.
In the event this Agreement is in the name of The Qt Company Ltd., a Finnish
Company, then:
-
-(i) this Agreement shall be construed and interpreted in accordance with the
-laws of Finland, excluding its choice of law provisions;
-
-(ii) the United Nations Convention on Contracts for the International Sale of
-Goods will not apply to this Agreement; and
-
-(iii) any disputes, controversy or claim arising out of or relating to this
-Agreement, or the breach, termination or validity thereof shall be shall be
-finally settled by arbitration in accordance with the Arbitration Rules of
-Finland Chamber of Commerce. The arbitration tribunal shall consist of one (1),
-or if either Party so requires, of three (3), arbitrators. The award shall be
-final and binding and enforceable in any court of competent jurisdiction. The
-arbitration shall be held in Helsinki, Finland and the process shall be
-conducted in the English language. This Section shall not preclude parties from
-seeking provisional remedies in aid of arbitration from a court of appropriate
-jurisdiction.
+ (i) this Agreement shall be construed and interpreted in accordance
+ with the laws of Finland, excluding its choice of law provisions;
+ (ii) the United Nations Convention on Contracts for the International
+ Sale of Goods will not apply to this Agreement; and
+ (iii) any disputes, controversy or claim arising out of or relating to
+ this Agreement, or the breach, termination or validity thereof
+ shall be finally settled by arbitration in accordance with the
+ Arbitration Rules of Finland Chamber of Commerce. The arbitration
+ tribunal shall consist of one (1), or if either Party so requires,
+ of three (3), arbitrators. The award shall be final and binding and
+ enforceable in any court of competent jurisdiction. The arbitration
+ shall be held in Helsinki, Finland and the process shall be
+ conducted in the English language. This Section shall not preclude
+ parties from seeking provisional remedies in aid of arbitration
+ from a court of appropriate jurisdiction.
14. GENERAL PROVISIONS
-
-14.1 No Assignment
-
+14.1. No Assignment
Except in the case of a merger or sale of substantially all of its corporate
assets, Licensee shall not be entitled to assign or transfer all or any of its
rights, benefits and obligations under this Agreement without the prior written
@@ -785,25 +809,23 @@ consent of The Qt Company, which shall not be unreasonably withheld or delayed.
The Qt Company shall be entitled to freely assign or transfer any of its
rights, benefits or obligations under this Agreement.
-14.2 No Third Party Representations
-
+14.2. No Third-Party Representations
Licensee shall make no representations or warranties concerning the Licensed
Software on behalf of The Qt Company. Any representation or warranty Licensee
makes or purports to make on The Qt Company's behalf shall be void as to The
Qt Company.
-14.3 Surviving Sections
-
+14.3. Surviving Sections
Any terms and conditions that by their nature or otherwise reasonably should
-survive termination of this Agreement shall so be deemed to survive.
-
-14.4 Entire Agreement
+survive termination of this Agreement shall so be deemed to survive. Such
+sections include especially the following: 1, 2, 6, 7, 9, 11, 12.4, 13 and 14.
+14.4. Entire Agreement
This Agreement, the exhibits hereto, the License Certificate and any applicable
-Purchase Order constitute the complete agreement between the Parties and
-supersedes all prior or contemporaneous discussions, representations, and
-proposals, written or oral, with respect to the subject matters discussed
-herein.
+Purchase Order accepted by The Qt Company constitute the complete agreement
+between the Parties and supersedes all prior or contemporaneous discussions,
+representations, and proposals, written or oral, with respect to the subject
+matters discussed herein.
In the event of any conflict or inconsistency between this Agreement and any
Purchase Order, the terms of this Agreement will prevail over the terms of the
@@ -814,29 +836,31 @@ any click-to-accept or similar agreements the Designated Users may need to
accept online upon download of the Licensed Software, as may be required by
The Qt Company's applicable processes relating to Licensed Software.
-14.5 Modifications
-
+14.5. Modifications
No modification of this Agreement shall be effective unless contained in a
writing executed by an authorized representative of each Party. No term or
-condition contained in Licensee's Purchase Order shall apply unless expressly
-accepted by The Qt Company in writing.
-
-14.6 Force Majeure
-
+condition contained in Licensee's Purchase Order ("Deviating Terms") shall
+apply unless The Qt Company has expressly agreed such Deviating Terms in
+writing. Unless and to the extent expressly agreed by The Qt Company, any such
+Deviating Terms shall be deemed void and with no legal effect. For clarity,
+delivery of the Licensed Software following the receipt of the Purchase Order
+including Deviating Terms shall not constitute acceptance of such Deviating
+Terms."
+
+14.6. Force Majeure
Except for the payment obligations hereunder, neither Party shall be liable to
the other for any delay or non-performance of its obligations hereunder in the
event and to the extent that such delay or non-performance is due to an event
of act of God, terrorist attack or other similar unforeseeable catastrophic
event that prevents either Party for fulfilling its obligations under this
Agreement and which such Party cannot avoid or circumvent ("Force Majeure
-Event"). If the Force Majeure Event results in a delay or non-performance of a
+Event"). If the Force Majeure Event results in a delay or non-performance of a
Party for a period of three (3) months or longer, then either Party shall have
the right to terminate this Agreement with immediate effect without any
liability (except for the obligations of payment arising prior to the event of
Force Majeure) towards the other Party.
-14.7 Notices
-
+14.7. Notices
Any notice given by one Party to the other shall be deemed properly given and
deemed received if specifically acknowledged by the receiving Party in writing
or when successfully delivered to the recipient by hand, fax, or special
@@ -845,69 +869,463 @@ specified for each Party on the signature page. Each communication and document
made or delivered by one Party to the other Party pursuant to this Agreement
shall be in the English language.
-14.8 Export Control
-
-Licensee acknowledges that the Redistributables may be subject to export
-control restrictions under the applicable laws of respective countries.
-Licensee shall fully comply with all applicable export license restrictions
-and requirements as well as with all laws and regulations relating to the
-Redistributables and exercise of licenses hereunder and shall procure all
-necessary governmental authorizations, including without limitation, all
-necessary licenses, approvals, permissions or consents, where necessary for the
-re-exportation of the Redistributables, Applications and/or Devices.
-
-14.9 No Implied License
-
+14.8. Export Control
+Licensee acknowledges that the Redistributables, as incorporated in
+Applications or Devices, may be subject to export control restrictions under
+the applicable laws of respective countries. Licensee shall fully comply with
+all applicable export license restrictions and requirements as well as with all
+laws and regulations relating to the Redistributables and exercise of licenses
+hereunder and shall procure all necessary governmental authorizations,
+including without limitation, all necessary licenses, approvals, permissions or
+consents, where necessary for the re-exportation of the Redistributables,
+Applications and/or Devices.
+
+14.9. No Implied License
There are no implied licenses or other implied rights granted under this
Agreement, and all rights, save for those expressly granted hereunder, shall
remain with The Qt Company and its licensors. In addition, no licenses or
immunities are granted to the combination of the Licensed Software with any
other software or hardware not delivered by The Qt Company under this Agreement.
-14.10 Attorney Fees
-
+14.10. Attorney Fees
The prevailing Party in any action to enforce this Agreement shall be entitled
to recover its attorney's fees and costs in connection with such action.
-14.11 Severability
-
+14.11. Privacy
+Licensee acknowledges and agrees that for the purpose of this Agreement, The Qt
+Company may collect, use, transfer and disclose personal data pertaining to
+Designated Users as well as any other employees and directors of the Licensee
+and its Contractors relevant for carrying out the intent of this Agreement.
+Such personal data may be collected from the Licensee or directly from the
+relevant individuals. The Parties acknowledge that with regard to such personal
+data processed hereunder, The Qt Company shall be regarded as the Data
+Controller under the applicable Data Protection Legislation. The Qt Company
+shall process any such personal data in accordance with its privacy policies
+and practices, which will comply with all applicable requirements of the Data
+Protection Legislation.
+
+14.12. Severability
If any provision of this Agreement shall be adjudged by any court of competent
jurisdiction to be unenforceable or invalid, that provision shall be limited or
eliminated to the minimum extent necessary so that this Agreement shall
otherwise remain in full force and effect and enforceable.
-IN WITNESS WHEREOF, the Parties hereto, intending to be legally bound hereby,
-have caused this Agreement to be executed by Licensee's authorized
-representative installing the Licensed Software and accepting the terms
-hereof in connection therewith.
-
-
-Appendix 1
-
-1. Parts of the Licensed Software that are permitted for distribution in
-object code form only ("Redistributables") under this Agreement:
-
-- The Licensed Software's Qt Essentials and Qt Add-on libraries
-- The Licensed Software's configuration tool ("qtconfig")
-- The Licensed Software's help tool ("Qt Assistant")
-- The Licensed Software's internationalization tools ("Qt Linguist", "lupdate",
- "lrelease")
-- The Licensed Software's QML ("Qt Quick") launcher tool ("qmlscene" or
- "qmlviewer")
-- The Licensed Software's installer framework
-
-2. Parts of the Licensed Software that are not permitted for distribution
-include, but are not limited to:
-
-- The Licensed Software's source code and header files
-- The Licensed Software's documentation
-- The Licensed Software's documentation generation tool ("qdoc")
-- The Licensed Software's tool for writing makefiles ("qmake")
-- The Licensed Software's Meta Object Compiler ("moc")
-- The Licensed Software's User Interface Compiler ("uic")
-- The Licensed Software's Resource Compiler ("rcc")
-- The Licensed Software's parts of the IDE tool ("Qt Creator")
-- The Licensed Software's parts of the Design tools ("Qt 3D Studio" or
- "Qt Quick Designer")
-- The Licensed Software's Emulator
+
+APPENDICES
+The Agreement includes Appendix 1, and possibly one or more of the appendices
+3-5, depending on the product(s) purchased by the Licensee, what is stated in
+the quote or invoice, and/or what is stated in the Licensee's License
+Certificate.
+
+
+APPENDIX 1
+The modules and/or tools that are included in the respective product - Qt for
+Application Development (QtAD), Qt for Device Creation (QtDC), Qt for MCUs
+(QtMCU), Qt 3D Studio (Qt3DS) and Qt Design Studio (QtDS) - are marked with 'X'
+in the below table.
+
+Parts of the product that are permitted for distribution in object-code form
+only ("Redistributables") are marked with 'R' in the below table.
+
+Modules/Tools | QtAD | QtDC | QtMCU | Qt3DS | QtDS
+-------------------------------------------------------------------------------
+Qt Core | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt GUI | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Multimedia | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Multimedia Widgets | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Network | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt QML | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Quick | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Quick Controls 2 | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Quick Dialogs | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Quick Layouts | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Quick Test | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt SQL | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Test | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Widgets | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Active Qt | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt 3D | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Android Extras | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Bluetooth | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Canvas 3D | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Concurrent | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt D-Bus | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Gamepad | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Graphical Effects | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Help | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Image Formats | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Location | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Mac Extras | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Network Authorization | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt NFC | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Platform Headers | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Positioning | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Print Support | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Purchasing | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt for Python | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Quick Controls | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Quick Extras | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Quick Widgets | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt SCXML | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Sensors | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Serial Bus | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Serial Port | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Speech | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt SVG | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt UI Tools | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt WebChannel | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt WebEngine | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt WebSockets | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt WebView | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Windows Extras | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt X11 Extras | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt XML | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt XML Patterns | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Wayland Compositor | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Charts | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Data Visualization | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Qt Virtual Keyboard | X,R | X,R | | |
+-------------------------------------------------------------------------------
+Boot 2 Qt stack | | X,R | | |
+-------------------------------------------------------------------------------
+Qt OTA | | X,R | | |
+-------------------------------------------------------------------------------
+Device Utilities | | X,R | | |
+-------------------------------------------------------------------------------
+Qt Debugging Bridge (QDB) Daemon | | X,R | | |
+-------------------------------------------------------------------------------
+Qt Quick Ultralite Controls | | | X,R | |
+-------------------------------------------------------------------------------
+Qt Quick Ultralite | | | X,R | |
+-------------------------------------------------------------------------------
+Qt Creator | X | X | X | |
+-------------------------------------------------------------------------------
+Qt Designer (Qt Widget Designer) | X | X | | |
+-------------------------------------------------------------------------------
+Qt Quick Designer (Qt Creator plugin) | X | X | X | |
+-------------------------------------------------------------------------------
+Qt Linguist | X | X | X | |
+-------------------------------------------------------------------------------
+Qt Assistant | X | X | X | |
+-------------------------------------------------------------------------------
+lupdate | X | X | X | |
+-------------------------------------------------------------------------------
+lrelease | X | X | X | |
+-------------------------------------------------------------------------------
+qmake | X | X | | |
+-------------------------------------------------------------------------------
+uic | X | X | | |
+-------------------------------------------------------------------------------
+rcc | X | X | | |
+-------------------------------------------------------------------------------
+qlalr | X | X | | |
+-------------------------------------------------------------------------------
+qdoc | X | X | | |
+-------------------------------------------------------------------------------
+qmlscene | X | X | | |
+-------------------------------------------------------------------------------
+qmlviewer | X | X | | |
+-------------------------------------------------------------------------------
+Target toolchains | | X | X | |
+-------------------------------------------------------------------------------
+Qt Debugging Bridge (QDB) Host Tools | | X | | |
+-------------------------------------------------------------------------------
+qtconfig-gui | | X | | |
+-------------------------------------------------------------------------------
+Qt Emulator | | X | | |
+-------------------------------------------------------------------------------
+qmlinterfacegenerator | | | X | |
+-------------------------------------------------------------------------------
+qmltocpp | | | X | |
+-------------------------------------------------------------------------------
+qulfontcompiler | | | X | |
+-------------------------------------------------------------------------------
+Qt53DStudioRuntime2 | | | | X,R |
+-------------------------------------------------------------------------------
+Qt 3D Studio | | | | X |
+-------------------------------------------------------------------------------
+Qt Design Studio | | | | | X
+-------------------------------------------------------------------------------
+
+
+APPENDIX 3: ADDITIONS TO LICENSED SOFTWARE
+In addition to what is provided under the definition of the Licensed Software,
+Parties agree that Licensed Software shall also include the Add-On Products of
+The Qt Company, as mentioned in this Appendix, if included in the
+quote / invoice.
+
+The Modules and/or Tools of the Licensed Software that are included with each
+Add-On Product respectively are marked with 'X' in the below table. Parts of
+the respective Add-On Product that are permitted for distribution in
+object-code form only ("Redistributables") are marked with 'R' in the below
+table.
+
+-------------------------------------------------------------------------------
+ | Add-On Product(s)
+Modules / |------------------------------------------------------------------
+Tools of |Qt for |Qt |Qt Safe |Qt |Qt |Qt
+Licensed |Automation |Automotive |Renderer |Application|Gammaray |Deployment
+Software | |Suite | |Manager | |Platform
+ | | | | | |Package
+-------------------------------------------------------------------------------
+Qt MQTT | X,R | | | | |
+-------------------------------------------------------------------------------
+Qt KNX | X,R | | | | |
+-------------------------------------------------------------------------------
+Qt OPC UA | X,R | | | | |
+-------------------------------------------------------------------------------
+Qt CoAP | X,R | | | | |
+-------------------------------------------------------------------------------
+Qt Safe | | X,R | X,R | | |
+Renderer | | | | | |
+-------------------------------------------------------------------------------
+Qt | | | | | |
+Application | | X,R | | X,R | |
+Manager | | | | | |
+-------------------------------------------------------------------------------
+Qt IVI | | X,R | | | |
+-------------------------------------------------------------------------------
+Reference UI| | X,R | | | |
+-------------------------------------------------------------------------------
+Qt GENIVI | | X,R | | | |
+Extras | | | | | |
+-------------------------------------------------------------------------------
+QML Live | | X | | | |
+-------------------------------------------------------------------------------
+Qt Creator | | X | | | |
+Deployment | | | | | |
+-------------------------------------------------------------------------------
+Qt Creator | | | | | |
+Plugin for | | | | | |
+Qt | | X | | X | |
+Application | | | | | |
+Manager | | | | | |
+-------------------------------------------------------------------------------
+Qt | | | | | |
+Automotive | | | | | |
+Suite | | X | | | |
+Deployment | | | | | |
+Server | | | | | |
+-------------------------------------------------------------------------------
+Qt Design | | X | | | |
+Studio | | | | | |
+-------------------------------------------------------------------------------
+Qt 3D Studio| | X | | | |
+-------------------------------------------------------------------------------
+GammaRay | | X | | | X |
+-------------------------------------------------------------------------------
+Platform | | | | | |
+adaptations | | | | | |
+for | | | | | | X
+specified | | | | | |
+Deployment | | | | | |
+Platforms | | | | | |
+-------------------------------------------------------------------------------
+Qt for | | | | | |
+Device | | X | | | |
+Creation | | | | | |
+-------------------------------------------------------------------------------
+
+All the above Redistributables are subject to applicable provisions and
+limitations including but not limited to what is defined in section 3 of the
+Agreement.
+
+
+APPENDIX 4: SMALL BUSINESS AND STARTUP
+The provisions of this Appendix 4 are applicable for Start-up Companies and for
+the Evaluation Term.For the purpose of this Appendix 4, the following
+additional definitions shall be applicable:
+
+"Trial Term" shall mean a period of twelve (12) months.
+
+"Start-up Company" means a company with a maximum annual revenue, including
+funding, equivalent to 100,000 USD (in applicable currency) during a respective
+calendar year, as evidenced by duly audited records of the Licensee and
+approved by The Qt Company.
+
+During the Trial Term, Section 3 shall apply with following modifications
+("Trial Term Modifications"):
+ (i) Licenses granted under Sections 3.1 and 3.2 shall be free of any
+ charge. For clarity, License for distribution of Devices pursuant
+ to Section 3.3 is subject to applicable License Fee for necessary
+ Distribution Licenses;
+ (ii) Development License under Section 3.1 is limited to a maximum of
+ three (3) Designated Users; and
+ (iii) Support is available subject to availability, as judged by The Qt
+ Company at its free and absolute discretion, provided that support
+ will be limited to a maximum of ten (10) tickets during the Trial
+ Term.
+
+Upon expiry of the Trial Term:
+ (a) This Appendix 4 is terminated, Trial Term Modifications cease to
+ remain in force, Licensee's Development Licenses shall be
+ automatically converted into licenses subject to a License Fee (in
+ the amount specified in the quote or in Appendix 2 and payable with
+ a 30-day payment term) and Licensee's rights and obligations under
+ this Agreement shall continue to remain in force under the standard
+ provisions of the Agreement, unless the Licensee notifies The Qt
+ Company in writing no less than ninety (90) days before such expiry
+ date that Licensee does not agree to such continuance, in which
+ event the Agreement, and all rights of the Licensee thereunder,
+ shall expire; provided however that
+ (b) in the event the Licensee still qualifies as a Start-up Company,
+ the Licensee has an option ("Option"), instead of what is stated in
+ item a) above, to renew the Trial Term. Renewal is limited to one
+ time, and the total duration of Trial Term is thus 24 months after
+ the effective date. Licensee shall notify The Qt Company in
+ writing, no less than ninety (90) days before the expiry date, if
+ Licensee wish to exercise the Option.
+
+
+APPENDIX 5: NON-COMMERCIAL USE
+The provisions of this Appendix 5 are applicable for non-commercial use of the
+Licensed Software by the Licensee.
+
+For the purpose of this Appendix 5, the following additional definitions
+(replacing the relevant definition of the Agreement, where applicable) shall be
+applicable:
+
+"Demo Units" shall mean (i) hardware development platform, which incorporates
+the Licensed Software along with Licensee's software and/or hardware, and (ii)
+prototype versions of Applications or Devices.
+
+"Designated User(s)" shall mean the employees and students of the Licensee.
+
+"Licensee Products" shall mean Applications and/or Devices.
+
+"Permitted Purpose" shall mean (i) Licensee's internal evaluation and testing
+of Licensed Software, (ii) building Demo Units as well as (iii) educational
+use.
+
+"Term" shall mean a period of twelve (12) months or any such other period as
+may be agreed between the Parties.
+
+For the purpose of this Appendix 5, the following changes shall be agreed with
+respect to relevant Sections of the Agreement:
+ I. Recital (A) shall be replaced in its entirety to read as follows:
+
+ "(A) Licensee wishes to use the Licensed Software for the Permitted
+ Purpose."
+
+ II. Section 3.1 shall be replaced in its entirety to read as follows:
+
+ "The Qt Company grants to Licensee a personal, non-exclusive,
+ non-transferable, revocable, royalty-free license, valid for the
+ Term, to use, modify and copy the Licensed Software solely for the
+ Permitted Purpose.
+
+ Licensee may install copies of the Licensed Software on an
+ unlimited number of computers provided that only Designated Users
+ may use the Licensed Software.
+
+ Licensee may demonstrate the Demo Units, provided that such
+ demonstrations must be conducted by Licensee, and the Demo Units
+ must remain in Licensee's possession and under Licensee's control
+ at all times.
+
+ For clarity, this Agreement does not (i) entitle Licensee to use
+ Licensed Software to create Applications or Devices (other than
+ prototypes thereof) or (ii) carry any distribution rights to
+ Licensee, but such rights are subject to and conditional upon
+ conclusion of a separate license agreement with The Qt Company."
+
+ III. Sections 3.2, 3.3, 8 and 10 shall be deleted.
+
+ IV. Section 3.4 shall be replaced in its entirety to read as follows:
+
+ "Licensee shall not:
+ - remove or alter any copyright, trademark or other proprietary
+ rights notice contained in any portion of the Licensed
+ Software;
+
+ - transfer, publish, sublicense, disclose, display or otherwise
+ make the Licensed Software available to any third party
+ (except that Licensee may demonstrate the Demo Units pursuant
+ to Section 3.1);
+
+ - in any way combine, incorporate or integrate Licensed
+ Software with, or use Licensed Software for creation of, any
+ software created with or incorporating Open Source Qt;
+
+ Licensee shall cause all Designated Users who make use of the
+ licenses granted under this Agreement, to be contractually bound to
+ comply with the relevant terms of this Agreement and not to use the
+ Licensed Software beyond the terms hereof. Licensee shall be
+ responsible for any and all actions and omissions of its Designated
+ Users relating to the Licensed Software and use thereof.
+
+ Any use of Licensed Software beyond the provisions of this
+ Agreement is strictly prohibited and requires an additional license
+ from The Qt Company."
+
+ V. Section 12 shall be replaced in its entirety to read as follows:
+
+ "This Agreement shall enter into force upon due acceptance by both
+ Parties and remain in force for the Term, unless and until
+ terminated pursuant to the terms of Section 12.
+
+ Upon termination of the Agreement, Licensee shall cease using the
+ Licensed Software. All other copies of Licensed Software in the
+ possession or control of Licensee must be erased or destroyed. An
+ officer of Licensee must, upon request, promptly deliver to The Qt
+ Company a written confirmation that this has occurred."
+
+Except for the modifications specified above, this Appendix carries no change
+to the terms of the Agreement which shall remain in full force.
+
diff --git a/external/meta-qt5/recipes-connectivity/libqofono/libqofono/0001-also-emit-modemRemoved-and-modemAdded.patch b/external/meta-qt5/recipes-connectivity/libqofono/libqofono/0001-also-emit-modemRemoved-and-modemAdded.patch
new file mode 100644
index 00000000..0122e051
--- /dev/null
+++ b/external/meta-qt5/recipes-connectivity/libqofono/libqofono/0001-also-emit-modemRemoved-and-modemAdded.patch
@@ -0,0 +1,54 @@
+From 05241dc61e8c43a12f91ee9976a2ecb2337a3eaf Mon Sep 17 00:00:00 2001
+From: Christophe Chapuis <chris.chapuis@gmail.com>
+Date: Sat, 13 Jul 2019 11:17:08 +0000
+Subject: [PATCH] onGetModemsFinished: also emit modemRemoved and modemAdded
+
+VoiceCall only subscribes to these events, so we need to emit these
+more "atomic" events too.
+
+Signed-off-by: Christophe Chapuis <chris.chapuis@gmail.com>
+---
+ src/qofonomanager.cpp | 21 ++++++++++++++++++---
+ 1 file changed, 18 insertions(+), 3 deletions(-)
+
+diff --git a/src/qofonomanager.cpp b/src/qofonomanager.cpp
+index deeb946..e94a3c7 100644
+--- a/src/qofonomanager.cpp
++++ b/src/qofonomanager.cpp
+@@ -40,15 +40,30 @@ void QOfonoManager::Private::handleGetModemsReply(QOfonoManager* obj, ObjectPath
+ {
+ bool wasAvailable = available;
+ QString prevDefault = defaultModem();
+- QStringList newModems;
++ QStringList newModems, oldModems;
+ const int n = reply.count();
+ for (int i = 0; i < n; i++) {
+ newModems.append(reply.at(i).path.path());
+ }
+ qSort(newModems);
+ available = true;
+- if (modems != newModems) {
+- modems = newModems;
++ oldModems = modems;
++ modems = newModems;
++
++ // emit atomic events for add/remove
++ Q_FOREACH(QString modem, oldModems) {
++ if(!newModems.contains(modem)) {
++ Q_EMIT obj->modemRemoved(modem);
++ }
++ }
++ Q_FOREACH(QString modem, newModems) {
++ if(!oldModems.contains(modem)) {
++ Q_EMIT obj->modemAdded(modem);
++ }
++ }
++
++ // then update the whole list
++ if (oldModems != newModems) {
+ Q_EMIT obj->modemsChanged(modems);
+ }
+ QString newDefault = defaultModem();
+--
+2.23.0
+
diff --git a/external/meta-qt5/recipes-connectivity/libqofono/libqofono_git.bb b/external/meta-qt5/recipes-connectivity/libqofono/libqofono_git.bb
index 64ce039e..7de0e49b 100644
--- a/external/meta-qt5/recipes-connectivity/libqofono/libqofono_git.bb
+++ b/external/meta-qt5/recipes-connectivity/libqofono/libqofono_git.bb
@@ -3,13 +3,15 @@ SECTION = "libs"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-DEPENDS += "qtbase qtdeclarative"
+DEPENDS += "qtbase qtdeclarative qtxmlpatterns"
-SRCREV = "6916cd030b05f0bd137ea9b669fee48f20c19084"
-SRC_URI = "git://git.merproject.org/mer-core/libqofono.git"
+SRCREV = "3581a6e85561da85858e1b90bef9be88b87acc4d"
+SRC_URI = "git://git.merproject.org/mer-core/libqofono.git \
+ file://0001-also-emit-modemRemoved-and-modemAdded.patch \
+"
S = "${WORKDIR}/git"
-PV = "0.92+gitr${SRCPV}"
+PV = "0.98+gitr${SRCPV}"
inherit qmake5
@@ -23,10 +25,12 @@ PACKAGES += "${PN}-tests"
FILES_${PN}-tests = " \
${libdir}/libqofono-qt5/tests/tst_* \
+ /opt/examples/libqofono-qt5/ \
/opt/tests/libqofono-qt5 \
"
FILES_${PN} += " \
${OE_QMAKE_PATH_QML}/MeeGo/QOfono/qmldir \
+ ${OE_QMAKE_PATH_QML}/MeeGo/QOfono/plugins.qmltypes \
${OE_QMAKE_PATH_QML}/MeeGo/QOfono/libQOfonoQtDeclarative.so \
"
FILES_${PN}-dev += " \
diff --git a/external/meta-qt5/recipes-devtools/gdb/gdb_%.bbappend b/external/meta-qt5/recipes-devtools/gdb/gdb_%.bbappend
index 3e663e71..fa2b06ab 100644
--- a/external/meta-qt5/recipes-devtools/gdb/gdb_%.bbappend
+++ b/external/meta-qt5/recipes-devtools/gdb/gdb_%.bbappend
@@ -1 +1,2 @@
+# Just a comment line to avoid PAK archive (application/x-pak)
PACKAGECONFIG ??= "readline python"
diff --git a/external/meta-qt5/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_%.bbappend b/external/meta-qt5/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_%.bbappend
deleted file mode 100644
index b42338ab..00000000
--- a/external/meta-qt5/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_%.bbappend
+++ /dev/null
@@ -1,15 +0,0 @@
-inherit qmake5_paths
-
-PACKAGECONFIG[qt5] = '--enable-qt \
- --with-moc="${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/moc" \
- --with-uic="${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/uic" \
- --with-rcc="${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/rcc" \
- ,--disable-qt,qtbase qtdeclarative qtbase-native'
-
-# The GStreamer Qt5 plugin needs desktop OpenGL or OpenGL ES to work, so make sure it is enabled
-python() {
- cur_packageconfig = d.getVar('PACKAGECONFIG',True).split()
- if 'qt5' in cur_packageconfig and not (('opengl' in cur_packageconfig) or ('gles2' in cur_packageconfig)):
- gl_packageconfig = d.getVar('PACKAGECONFIG_GL',True)
- d.appendVar('PACKAGECONFIG', ' ' + gl_packageconfig)
-}
diff --git a/external/meta-qt5/recipes-python/pyqt5/python-pyqt5.inc b/external/meta-qt5/recipes-python/pyqt5/python-pyqt5.inc
deleted file mode 100644
index 4b1630d4..00000000
--- a/external/meta-qt5/recipes-python/pyqt5/python-pyqt5.inc
+++ /dev/null
@@ -1,64 +0,0 @@
-SUMMARY = "Python Qt5 Bindings"
-AUTHOR = "Phil Thomson @ riverbank.co.uk"
-HOMEPAGE = "http://riverbankcomputing.co.uk"
-SECTION = "devel/python"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "\
- file://LICENSE;md5=d32239bcb673463ab874e80d47fae504 \
-"
-SRC_URI = "\
- ${SOURCEFORGE_MIRROR}/pyqt/PyQt5_gpl-${PV}.tar.gz \
-"
-SRC_URI[md5sum] = "aac3428e90eca5df68c5764282fd9b98"
-SRC_URI[sha256sum] = "c9b57d15601d436faf35dacf8e0acefa220194829a653e771e80b189b3261073"
-
-S = "${WORKDIR}/PyQt5_gpl-${PV}"
-
-inherit qmake5
-DEPENDS = "qtbase"
-
-export BUILD_SYS
-export HOST_SYS
-export STAGING_INCDIR
-export STAGING_LIBDIR
-
-PARALLEL_MAKEINST = ""
-
-DISABLED_FEATURES = "PyQt_Desktop_OpenGL PyQt_Accessibility PyQt_SessionManager"
-
-DISABLED_FEATURES_append_arm = " PyQt_qreal_double"
-
-PYQT_MODULES = "QtCore QtGui QtNetwork QtWidgets"
-PYQT_MODULES_aarch64 = "QtCore QtGui QtNetwork QtWidgets"
-
-do_configure_prepend() {
- cd ${S}
- echo "py_platform = linux" > pyqt.cfg
- echo "py_inc_dir = %(sysroot)/$includedir/python${PYTHON_BASEVERSION}${PYTHON_ABI}" >> pyqt.cfg
- echo "py_pylib_dir = %(sysroot)/${libdir}/python${PYTHON_BASEVERSION}${PYTHON_ABI}" >> pyqt.cfg
- echo "py_pylib_lib = python${PYTHON_BASEVERSION}${PYTHON_ABI}" >> pyqt.cfg
- echo "pyqt_module_dir = ${D}/${libdir}/python${PYTHON_BASEVERSION}${PYTHON_ABI}/site-packages" >> pyqt.cfg
- echo "pyqt_bin_dir = ${D}/${bindir}" >> pyqt.cfg
- echo "pyqt_sip_dir = ${D}/${datadir}/sip/PyQt5" >> pyqt.cfg
- echo "pyuic_interpreter = ${D}/${bindir}/python${PYTHON_BASEVERSION}${PYTHON_ABI}" >> pyqt.cfg
- echo "pyqt_disabled_features = ${DISABLED_FEATURES}" >> pyqt.cfg
- echo "qt_shared = True" >> pyqt.cfg
- QT_VERSION=`${OE_QMAKE_QMAKE} -query QT_VERSION`
- echo "[Qt $QT_VERSION]" >> pyqt.cfg
- echo "pyqt_modules = ${PYQT_MODULES}" >> pyqt.cfg
- echo yes | ${PYTHON} configure.py --verbose --qmake ${STAGING_BINDIR_NATIVE}/${QT_DIR_NAME}/qmake --configuration pyqt.cfg --sysroot ${STAGING_DIR_HOST}
-}
-
-do_compile() {
- cd ${S}
- oe_runmake
-}
-
-do_install() {
- cd ${S}
- oe_runmake MAKEFLAGS='-j 1' install
-}
-
-FILES_${PN} += "${libdir}/${PYTHON_DIR}${PYTHON_ABI}/site-packages ${datadir}/sip/PyQt5/"
-
-RDEPENDS_${PN} = "qtbase"
diff --git a/external/meta-qt5/recipes-python/pyqt5/python-pyqt5_5.11.3.bb b/external/meta-qt5/recipes-python/pyqt5/python-pyqt5_5.11.3.bb
deleted file mode 100644
index 6b1b5701..00000000
--- a/external/meta-qt5/recipes-python/pyqt5/python-pyqt5_5.11.3.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require python-pyqt5.inc
-
-inherit pythonnative python-dir
-
-DEPENDS += "sip sip-native python"
-
-RDEPENDS_${PN} += "python-core python-sip"
-
diff --git a/external/meta-qt5/recipes-python/pyqt5/python3-pyqt5_5.11.3.bb b/external/meta-qt5/recipes-python/pyqt5/python3-pyqt5_5.11.3.bb
deleted file mode 100644
index 200a8154..00000000
--- a/external/meta-qt5/recipes-python/pyqt5/python3-pyqt5_5.11.3.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require python-pyqt5.inc
-
-inherit python3native python3-dir
-
-DEPENDS += "sip3 sip3-native python3"
-
-RDEPENDS_${PN} += "python3-core python3-sip3"
diff --git a/external/meta-qt5/recipes-python/pyqt5/python3-pyqt5_5.13.2.bb b/external/meta-qt5/recipes-python/pyqt5/python3-pyqt5_5.13.2.bb
new file mode 100644
index 00000000..6c2f4175
--- /dev/null
+++ b/external/meta-qt5/recipes-python/pyqt5/python3-pyqt5_5.13.2.bb
@@ -0,0 +1,65 @@
+SUMMARY = "Python Qt5 Bindings"
+AUTHOR = "Phil Thomson @ riverbank.co.uk"
+HOMEPAGE = "http://riverbankcomputing.co.uk"
+SECTION = "devel/python"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "\
+ file://LICENSE;md5=d32239bcb673463ab874e80d47fae504 \
+"
+SRC_URI = "\
+ https://www.riverbankcomputing.com/static/Downloads/PyQt5/${PV}/PyQt5-${PV}.tar.gz \
+"
+SRC_URI[md5sum] = "c1023cb9c3d29a89fc109b163a0175c0"
+SRC_URI[sha256sum] = "adc17c077bf233987b8e43ada87d1e0deca9bd71a13e5fd5fc377482ed69c827"
+
+S = "${WORKDIR}/PyQt5-${PV}"
+
+inherit qmake5
+inherit python3native python3-dir
+
+DEPENDS = "qtbase qtdeclarative qtquickcontrols2"
+DEPENDS += "sip3 sip3-native python3"
+
+export BUILD_SYS
+export HOST_SYS
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+PARALLEL_MAKEINST = ""
+
+DISABLED_FEATURES = "PyQt_Desktop_OpenGL PyQt_Accessibility PyQt_SessionManager ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', '', 'PyQt_OpenGL', d)}"
+
+PYQT_MODULES = "QtCore QtGui QtNetwork QtXml QtNetwork QtQml ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'QtQuick QtWidgets QtQuickWidgets', '', d)}"
+
+do_configure_prepend() {
+ cd ${S}
+ echo "py_platform = linux" > pyqt.cfg
+ echo "py_inc_dir = %(sysroot)/$includedir/python%(py_major).%(py_minor)${PYTHON_ABI}" >> pyqt.cfg
+ echo "py_pylib_dir = %(sysroot)/${libdir}/python%(py_major).%(py_minor)" >> pyqt.cfg
+ echo "py_pylib_lib = python$%(py_major).%(py_minor)" >> pyqt.cfg
+ echo "pyqt_module_dir = ${D}/${libdir}/python%(py_major).%(py_minor)/site-packages" >> pyqt.cfg
+ echo "pyqt_bin_dir = ${D}/${bindir}" >> pyqt.cfg
+ echo "pyqt_sip_dir = ${D}/${datadir}/sip/PyQt5" >> pyqt.cfg
+ echo "pyuic_interpreter = ${D}/${bindir}/python%(py_major).%(py_minor)" >> pyqt.cfg
+ echo "pyqt_disabled_features = ${DISABLED_FEATURES}" >> pyqt.cfg
+ echo "qt_shared = True" >> pyqt.cfg
+ QT_VERSION=`${OE_QMAKE_QMAKE} -query QT_VERSION`
+ echo "[Qt $QT_VERSION]" >> pyqt.cfg
+ echo "pyqt_modules = ${PYQT_MODULES}" >> pyqt.cfg
+ echo yes | ${PYTHON} configure.py --verbose --qmake ${STAGING_BINDIR_NATIVE}/${QT_DIR_NAME}/qmake --configuration pyqt.cfg --sysroot ${STAGING_DIR_HOST}
+}
+
+do_compile() {
+ cd ${S}
+ oe_runmake
+}
+
+do_install() {
+ cd ${S}
+ oe_runmake MAKEFLAGS='-j 1' install
+}
+
+FILES_${PN} += "${libdir}/${PYTHON_DIR}/site-packages ${datadir}/sip/PyQt5/"
+
+RDEPENDS_${PN} = "qtbase qtdeclarative qtquickcontrols2 qtquickcontrols2-mkspecs"
+RDEPENDS_${PN} += "python3-core python3-sip3"
diff --git a/external/meta-qt5/recipes-python/pyqtchart/python3-pyqtchart_5.13.1.bb b/external/meta-qt5/recipes-python/pyqtchart/python3-pyqtchart_5.13.1.bb
new file mode 100644
index 00000000..04e42beb
--- /dev/null
+++ b/external/meta-qt5/recipes-python/pyqtchart/python3-pyqtchart_5.13.1.bb
@@ -0,0 +1,66 @@
+SUMMARY = "Python Qt Chart Bindings"
+AUTHOR = "Adrian.Fiergolski@fastree3d.com"
+SECTION = "devel/python"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "\
+ file://LICENSE;md5=d32239bcb673463ab874e80d47fae504 \
+"
+SRC_URI = "\
+ https://www.riverbankcomputing.com/static/Downloads/PyQtChart/${PV}/PyQtChart-${PV}.tar.gz \
+"
+SRC_URI[md5sum] = "d5d37bff46b690d6318e5e5f25dd5213"
+SRC_URI[sha256sum] = "49960a1483527857b38c1527f9b6328d30bdcc84521f579c0a561a892f54130e"
+
+S = "${WORKDIR}/PyQtChart-${PV}"
+
+inherit qmake5
+inherit python3native python3-dir
+
+DEPENDS = "qtcharts"
+DEPENDS += "sip3 sip3-native python3 python3-pyqt5"
+
+export BUILD_SYS
+export HOST_SYS
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+PARALLEL_MAKEINST = ""
+
+DISABLED_FEATURES = "PyQt_Desktop_OpenGL PyQt_Accessibility PyQt_SessionManager"
+
+do_configure_prepend() {
+ cd ${S}
+ echo "[PyQt 5]" > pyqt.cfg
+ echo "py_platform = linux" >> pyqt.cfg
+ echo "py_inc_dir = %(sysroot)/$includedir/python%(py_major).%(py_minor)${PYTHON_ABI}" >> pyqt.cfg
+ echo "py_pylib_dir = %(sysroot)/${libdir}/python%(py_major).%(py_minor)" >> pyqt.cfg
+ echo "pyqt_module_dir = ${D}/${libdir}/python%(py_major).%(py_minor)/site-packages" >> pyqt.cfg
+ echo "py_sip_dir = ${STAGING_EXECPREFIXDIR}/share/sip" >> pyqt.cfg
+ echo "sip_module = PyQt5.sip" >> pyqt.cfg
+ echo "pyqt_disabled_features = ${DISABLED_FEATURES}" >> pyqt.cfg
+ echo yes | ${PYTHON} configure.py --verbose --qmake ${STAGING_BINDIR_NATIVE}/${QT_DIR_NAME}/qmake --configuration pyqt.cfg --sysroot ${STAGING_DIR_HOST}
+}
+
+do_configure_append() {
+ #Fix installation paths
+ sed -i -e s:'$(INSTALL_ROOT)'${STAGING_EXECPREFIXDIR}:'$(INSTALL_ROOT)'${D}${exec_prefix}:g ${S}/Makefile
+ sed -i -e s:'$(INSTALL_ROOT)'${STAGING_EXECPREFIXDIR}:'$(INSTALL_ROOT)'${D}${exec_prefix}:g ${S}/QtChart/Makefile
+ #Skip installed.txt creation
+ sed -i -e s:" install_distinfo ":" ": ${S}/Makefile
+}
+
+do_compile() {
+ cd ${S}
+ oe_runmake
+}
+
+do_install() {
+ cd ${S}
+ oe_runmake MAKEFLAGS='-j 1' install
+}
+
+
+FILES_${PN} += "${libdir}/${PYTHON_DIR}/site-packages ${datadir}/"
+
+RDEPENDS_${PN} = "qtbase qtdeclarative qtquickcontrols2 qtquickcontrols2-mkspecs qtcharts"
+RDEPENDS_${PN} += "python3-core python3-sip3 python3-pyqt5"
diff --git a/external/meta-qt5/recipes-qt/examples/qt5everywheredemo_1.0.bb b/external/meta-qt5/recipes-qt/examples/qt5everywheredemo_1.0.bb
index 56034cc4..44e5a84f 100644
--- a/external/meta-qt5/recipes-qt/examples/qt5everywheredemo_1.0.bb
+++ b/external/meta-qt5/recipes-qt/examples/qt5everywheredemo_1.0.bb
@@ -1,10 +1,10 @@
SUMMARY = "Qt5 everywhere demo"
DESCRIPTION = "Quick tour of Qt 5.0, primarily focusing on its graphical capabilities."
LICENSE = "BSD"
-HOMEPAGE = "https://qt.gitorious.org/qt-labs"
+HOMEPAGE = "https://code.qt.io/cgit/qt-labs"
LIC_FILES_CHKSUM = "file://qml/QtDemo/main.qml;endline=39;md5=7d80863906a4bc8ffca77fd869e335a9"
-DEPENDS = "qtdeclarative qtgraphicaleffects qtsvg qtmultimedia"
+DEPENDS = "qtdeclarative qtgraphicaleffects qtsvg qtmultimedia qtxmlpatterns"
SRCREV = "35d72a2eba7456a2efc5eb8b77afbc00f69ba0ac"
QT_GIT_PROJECT = "qt-labs"
diff --git a/external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5/0001-Drop-tr1-namespace-its-not-there-in-c-11-and-newer.patch b/external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5/0001-Drop-tr1-namespace-its-not-there-in-c-11-and-newer.patch
new file mode 100644
index 00000000..920946ec
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5/0001-Drop-tr1-namespace-its-not-there-in-c-11-and-newer.patch
@@ -0,0 +1,83 @@
+From 60e7464fe2b75bb7187a4be0d6ba944d2b46f93e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 31 Jan 2019 22:02:32 -0800
+Subject: [PATCH] Drop tr1 namespace its not there in c++11 and newer
+
+compile as C++11 code
+libc++'s tr1 headers don't actually make a tr1 namespace.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/mimonscreenplugins.cpp | 10 +++++-----
+ .../ut_mimpluginmanagerconfig.cpp | 2 +-
+ .../ut_mimpluginmanagerconfig.h | 2 +-
+ 3 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/src/mimonscreenplugins.cpp b/src/mimonscreenplugins.cpp
+index da6e937e..b830e1bf 100644
+--- a/src/mimonscreenplugins.cpp
++++ b/src/mimonscreenplugins.cpp
+@@ -21,9 +21,9 @@
+ #include <QDebug>
+
+ #include <algorithm>
+-#include <tr1/functional>
++#include <functional>
+
+-using namespace std::tr1::placeholders;
++using namespace std::placeholders;
+
+ namespace
+ {
+@@ -118,10 +118,10 @@ bool MImOnScreenPlugins::isEnabled(const QString &plugin) const
+
+ std::remove_copy_if(mEnabledSubViews.begin(), mEnabledSubViews.end(),
+ std::back_inserter(mEnabledAndAvailableSubViews),
+- std::tr1::bind(&MImOnScreenPlugins::isSubViewUnavailable, this, _1));
++ std::bind(&MImOnScreenPlugins::isSubViewUnavailable, this, _1));
+
+ return std::find_if(mEnabledAndAvailableSubViews.begin(), mEnabledAndAvailableSubViews.end(),
+- std::tr1::bind(equalPlugin, _1, plugin)) != mEnabledAndAvailableSubViews.end();
++ std::bind(equalPlugin, _1, plugin)) != mEnabledAndAvailableSubViews.end();
+ }
+
+ bool MImOnScreenPlugins::isSubViewEnabled(const SubView &subView) const
+@@ -138,7 +138,7 @@ QList<MImOnScreenPlugins::SubView> MImOnScreenPlugins::enabledSubViews(const QSt
+ {
+ QList<MImOnScreenPlugins::SubView> result;
+ std::remove_copy_if(mEnabledSubViews.begin(), mEnabledSubViews.end(),
+- std::back_inserter(result), std::tr1::bind(notEqualPlugin, _1, plugin));
++ std::back_inserter(result), std::bind(notEqualPlugin, _1, plugin));
+ return result;
+ }
+
+diff --git a/tests/ut_mimpluginmanagerconfig/ut_mimpluginmanagerconfig.cpp b/tests/ut_mimpluginmanagerconfig/ut_mimpluginmanagerconfig.cpp
+index dea443e3..677dd689 100644
+--- a/tests/ut_mimpluginmanagerconfig/ut_mimpluginmanagerconfig.cpp
++++ b/tests/ut_mimpluginmanagerconfig/ut_mimpluginmanagerconfig.cpp
+@@ -39,7 +39,7 @@
+ #include "mattributeextensionmanager.h"
+ #include "msharedattributeextensionmanager.h"
+
+-using namespace std::tr1;
++using namespace std;
+
+ typedef QSet<Maliit::HandlerState> HandlerStates;
+ Q_DECLARE_METATYPE(HandlerStates);
+diff --git a/tests/ut_mimpluginmanagerconfig/ut_mimpluginmanagerconfig.h b/tests/ut_mimpluginmanagerconfig/ut_mimpluginmanagerconfig.h
+index 5b1b691b..3ea18747 100644
+--- a/tests/ut_mimpluginmanagerconfig/ut_mimpluginmanagerconfig.h
++++ b/tests/ut_mimpluginmanagerconfig/ut_mimpluginmanagerconfig.h
+@@ -16,7 +16,7 @@
+
+ #include "mimserveroptions.h"
+ #include "mimsettingsqsettings.h"
+-#include <tr1/memory>
++#include <memory>
+
+ #include <QtTest/QtTest>
+ #include <QObject>
+--
+2.20.1
+
diff --git a/external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5/0001-Fix-test-installations.patch b/external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5/0001-Fix-test-installations.patch
new file mode 100644
index 00000000..d86be1e1
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5/0001-Fix-test-installations.patch
@@ -0,0 +1,62 @@
+From 78a4b12b64c26f29e64fe56801e92d1e76f362b0 Mon Sep 17 00:00:00 2001
+From: Samuli Piippo <samuli.piippo@qt.io>
+Date: Fri, 16 Aug 2019 15:08:41 +0300
+Subject: [PATCH] Fix test installations
+
+Qmake won't ignore install errors anymore.
+
+Signed-off-by: Samuli Piippo <samuli.piippo@qt.io>
+---
+ .../ut_mattributeextensionmanager.pro | 7 ++++---
+ tests/ut_mimpluginmanager/ut_mimpluginmanager.pro | 7 ++++---
+ .../ut_mimpluginmanagerconfig.pro | 3 ---
+ 3 files changed, 8 insertions(+), 9 deletions(-)
+
+diff --git a/tests/ut_mattributeextensionmanager/ut_mattributeextensionmanager.pro b/tests/ut_mattributeextensionmanager/ut_mattributeextensionmanager.pro
+index 22280882..d0c390ef 100644
+--- a/tests/ut_mattributeextensionmanager/ut_mattributeextensionmanager.pro
++++ b/tests/ut_mattributeextensionmanager/ut_mattributeextensionmanager.pro
+@@ -13,9 +13,10 @@ CONFIG += plugin
+ include($$TOP_DIR/src/libmaliit-plugins.pri)
+ include($$TOP_DIR/connection/libmaliit-connection.pri)
+
+-target.files += \
+- $$TARGET \
++extra.files += \
+ toolbar1.xml \
+- toolbar2.xml \
++ toolbar2.xml
++extra.path = $$target.path
++INSTALLS += extra
+
+ include(../common_check.pri)
+diff --git a/tests/ut_mimpluginmanager/ut_mimpluginmanager.pro b/tests/ut_mimpluginmanager/ut_mimpluginmanager.pro
+index 19e68e6a..44e0fa0f 100644
+--- a/tests/ut_mimpluginmanager/ut_mimpluginmanager.pro
++++ b/tests/ut_mimpluginmanager/ut_mimpluginmanager.pro
+@@ -17,9 +17,10 @@ include($$TOP_DIR/src/libmaliit-plugins.pri)
+ # For MImInputContextConnection pulled in by TestInputMethodHost
+ include($$TOP_DIR/connection/libmaliit-connection.pri)
+
+-target.files += \
+- $$TARGET \
++extra.files += \
+ toolbar1.xml \
+- toolbar2.xml \
++ toolbar2.xml
++extra.path = $$target.path
++INSTALLS += extra
+
+ include(../common_check.pri)
+diff --git a/tests/ut_mimpluginmanagerconfig/ut_mimpluginmanagerconfig.pro b/tests/ut_mimpluginmanagerconfig/ut_mimpluginmanagerconfig.pro
+index 739ceef6..e0b363c8 100644
+--- a/tests/ut_mimpluginmanagerconfig/ut_mimpluginmanagerconfig.pro
++++ b/tests/ut_mimpluginmanagerconfig/ut_mimpluginmanagerconfig.pro
+@@ -17,7 +17,4 @@ include($$TOP_DIR/src/libmaliit-plugins.pri)
+ # For MImInputContextConnection pulled in by TestInputMethodHost
+ include($$TOP_DIR/connection/libmaliit-connection.pri)
+
+-target.files += \
+- $$TARGET \
+-
+ include(../common_check.pri)
diff --git a/external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5/0001-examples-plugins-Replace-obsolete-screenGeometry.patch b/external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5/0001-examples-plugins-Replace-obsolete-screenGeometry.patch
new file mode 100644
index 00000000..84c8aeac
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5/0001-examples-plugins-Replace-obsolete-screenGeometry.patch
@@ -0,0 +1,66 @@
+From 604761d49aa1d93ef5cc6d13259dc53dce7f04c4 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 16 Jul 2019 17:52:04 -0700
+Subject: [PATCH] examples/plugins: Replace obsolete screenGeometry
+
+Fixes errors like
+helloworldinputmethod.cpp:93:55: error: 'screenGeometry' is deprecated: Use QGuiApplication::screens() [-Werror,-Wdeprecated-declarations]
+ const QSize screenSize = QApplication::desktop()->screenGeometry().size();
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ examples/plugins/cxx/helloworld/helloworldinputmethod.cpp | 5 +++--
+ examples/plugins/cxx/override/overrideinputmethod.cpp | 5 +++--
+ 2 files changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/examples/plugins/cxx/helloworld/helloworldinputmethod.cpp b/examples/plugins/cxx/helloworld/helloworldinputmethod.cpp
+index eb470a1f..e5e5911d 100644
+--- a/examples/plugins/cxx/helloworld/helloworldinputmethod.cpp
++++ b/examples/plugins/cxx/helloworld/helloworldinputmethod.cpp
+@@ -18,7 +18,7 @@
+
+ #include <QDebug>
+ #include <QApplication>
+-#include <QDesktopWidget>
++#include <QScreen>
+
+ namespace {
+
+@@ -90,7 +90,8 @@ void HelloWorldInputMethod::show()
+ }
+
+ // Set size of our container to screen size
+- const QSize screenSize = QApplication::desktop()->screenGeometry().size();
++ QScreen *screen = QApplication::primaryScreen();
++ const QSize screenSize = screen->availableSize();
+ mainWidget->parentWidget()->resize(screenSize);
+
+ // Set size of the input method
+diff --git a/examples/plugins/cxx/override/overrideinputmethod.cpp b/examples/plugins/cxx/override/overrideinputmethod.cpp
+index c00160e4..f2f30e1d 100644
+--- a/examples/plugins/cxx/override/overrideinputmethod.cpp
++++ b/examples/plugins/cxx/override/overrideinputmethod.cpp
+@@ -18,7 +18,7 @@
+
+ #include <QDebug>
+ #include <QApplication>
+-#include <QDesktopWidget>
++#include <QScreen>
+ #include <QKeyEvent>
+
+ namespace {
+@@ -82,7 +82,8 @@ void OverrideInputMethod::show()
+ }
+
+ // Set size of the input method
+- const QSize &screenSize = QApplication::desktop()->screenGeometry().size();
++ QScreen *screen = QApplication::primaryScreen();
++ const QSize screenSize = screen->availableSize();
+ const QSize size(screenSize.width() - 200, 200);
+
+ surface->setGeometry(QRect(QPoint((screenSize.width() - size.width()) / 2,
+--
+2.22.0
+
diff --git a/external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5_git.bb b/external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5_git.bb
index 232e8252..1f0dc8d6 100644
--- a/external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5_git.bb
+++ b/external/meta-qt5/recipes-qt/maliit/maliit-framework-qt5_git.bb
@@ -10,6 +10,9 @@ SRC_URI = "git://github.com/maliit/framework.git;branch=master \
file://0001-Fix-MALIIT_INSTALL_PRF-to-allow-the-build-with-opene.patch \
file://maliit-server.desktop \
file://0001-config.pri-Use-O1-optimization-in-DEBUG-flags.patch \
+ file://0001-Drop-tr1-namespace-its-not-there-in-c-11-and-newer.patch \
+ file://0001-examples-plugins-Replace-obsolete-screenGeometry.patch \
+ file://0001-Fix-test-installations.patch \
"
SRCREV = "60b1b10de14f932420313c547ab801daf522d539"
diff --git a/external/meta-qt5/recipes-qt/maliit/maliit-plugins-qt5/0001-Do-not-use-tr1-namespace.patch b/external/meta-qt5/recipes-qt/maliit/maliit-plugins-qt5/0001-Do-not-use-tr1-namespace.patch
new file mode 100644
index 00000000..e5525379
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/maliit/maliit-plugins-qt5/0001-Do-not-use-tr1-namespace.patch
@@ -0,0 +1,58 @@
+From 19cc10dc4378e9eda15b58f3673f686c4ff845e2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 31 Jan 2019 22:17:56 -0800
+Subject: [PATCH] Do not use tr1 namespace
+
+This is not a standard in C++11
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ maliit-keyboard/lib/logic/layouthelper.cpp | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/maliit-keyboard/lib/logic/layouthelper.cpp b/maliit-keyboard/lib/logic/layouthelper.cpp
+index a8bd995f..f694e819 100644
+--- a/maliit-keyboard/lib/logic/layouthelper.cpp
++++ b/maliit-keyboard/lib/logic/layouthelper.cpp
+@@ -31,7 +31,7 @@
+ */
+
+ #include <algorithm>
+-#include <tr1/functional>
++#include <functional>
+
+ #include "layouthelper.h"
+ #include "coreutils.h"
+@@ -76,7 +76,7 @@ struct KeyPredicate
+
+ } // namespace
+
+-typedef std::tr1::function<void(const KeyArea &, const KeyOverrides &)> EmitFunc;
++typedef std::function<void(const KeyArea &, const KeyOverrides &)> EmitFunc;
+
+ class LayoutHelperPrivate
+ {
+@@ -468,13 +468,13 @@ void LayoutHelper::onKeysOverriden(const KeyOverrides &overriden_keys,
+ d->overriden_keys = overriden_keys;
+ }
+
+- using std::tr1::placeholders::_1;
+- using std::tr1::placeholders::_2;
++ using std::placeholders::_1;
++ using std::placeholders::_2;
+
+- d->overrideCheck(changed_ids, d->left, std::tr1::bind(&LayoutHelper::leftPanelChanged, this, _1, _2));
+- d->overrideCheck(changed_ids, d->right, std::tr1::bind(&LayoutHelper::rightPanelChanged, this, _1, _2));
+- d->overrideCheck(changed_ids, d->center, std::tr1::bind(&LayoutHelper::centerPanelChanged, this, _1, _2));
+- d->overrideCheck(changed_ids, d->extended, std::tr1::bind(&LayoutHelper::extendedPanelChanged, this, _1, _2));
++ d->overrideCheck(changed_ids, d->left, std::bind(&LayoutHelper::leftPanelChanged, this, _1, _2));
++ d->overrideCheck(changed_ids, d->right, std::bind(&LayoutHelper::rightPanelChanged, this, _1, _2));
++ d->overrideCheck(changed_ids, d->center, std::bind(&LayoutHelper::centerPanelChanged, this, _1, _2));
++ d->overrideCheck(changed_ids, d->extended, std::bind(&LayoutHelper::extendedPanelChanged, this, _1, _2));
+ }
+
+ }} // namespace Logic, MaliitKeyboard
+--
+2.20.1
+
diff --git a/external/meta-qt5/recipes-qt/maliit/maliit-plugins-qt5_git.bb b/external/meta-qt5/recipes-qt/maliit/maliit-plugins-qt5_git.bb
index 8225cb54..8464e1f0 100644
--- a/external/meta-qt5/recipes-qt/maliit/maliit-plugins-qt5_git.bb
+++ b/external/meta-qt5/recipes-qt/maliit/maliit-plugins-qt5_git.bb
@@ -10,7 +10,9 @@ DEPENDS = "maliit-framework-qt5"
RDEPENDS_${PN} += "qtsvg-plugins"
-SRC_URI = "git://github.com/maliit/plugins.git;branch=master"
+SRC_URI = "git://github.com/maliit/plugins.git;branch=master \
+ file://0001-Do-not-use-tr1-namespace.patch \
+ "
SRCREV = "c6a348592607248a771a3dde5a0e33dc3c433a2a"
PV = "0.99.0+git${SRCPV}"
diff --git a/external/meta-qt5/recipes-qt/packagegroups/nativesdk-packagegroup-qt5-toolchain-host.bb b/external/meta-qt5/recipes-qt/packagegroups/nativesdk-packagegroup-qt5-toolchain-host.bb
index e92cb9d4..facd2763 100644
--- a/external/meta-qt5/recipes-qt/packagegroups/nativesdk-packagegroup-qt5-toolchain-host.bb
+++ b/external/meta-qt5/recipes-qt/packagegroups/nativesdk-packagegroup-qt5-toolchain-host.bb
@@ -11,5 +11,6 @@ RDEPENDS_${PN} += " \
nativesdk-packagegroup-sdk-host \
nativesdk-qttools-tools \
nativesdk-qtbase \
+ nativesdk-qtbase-dev \
nativesdk-perl-modules \
"
diff --git a/external/meta-qt5/recipes-qt/packagegroups/packagegroup-qt5-toolchain-target.bb b/external/meta-qt5/recipes-qt/packagegroups/packagegroup-qt5-toolchain-target.bb
index d206a100..8c8bed30 100755
--- a/external/meta-qt5/recipes-qt/packagegroups/packagegroup-qt5-toolchain-target.bb
+++ b/external/meta-qt5/recipes-qt/packagegroups/packagegroup-qt5-toolchain-target.bb
@@ -3,15 +3,11 @@
DESCRIPTION = "Target packages for Qt5 SDK"
LICENSE = "MIT"
+PACKAGE_ARCH = "${TUNE_PKGARCH}"
inherit packagegroup
PACKAGEGROUP_DISABLE_COMPLEMENTARY = "1"
-# Requires Ruby to work
-USE_RUBY = " \
- ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'qtwebkit-dev', '', d)} \
-"
-
# Requires Wayland to work
USE_WAYLAND = " \
qtwayland-dev \
@@ -51,11 +47,7 @@ RDEPENDS_${PN} += " \
${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'qtdeclarative-qmlplugins', '', d)} \
qtdeclarative-tools \
qtdeclarative-staticdev \
- qttranslations-qmlviewer \
qttranslations-qtdeclarative \
- qtenginio-dev \
- qtenginio-mkspecs \
- ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'qtenginio-qmlplugins', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'qtgraphicaleffects-qmlplugins', '', d)} \
qtimageformats-dev \
qtimageformats-plugins \
@@ -93,7 +85,6 @@ RDEPENDS_${PN} += " \
qttools-staticdev \
qttools-tools \
${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '${USE_WAYLAND}', '', d)} \
- ${USE_RUBY} \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', '${USE_X11}', '', d)} \
qtwebsockets-dev \
qtwebsockets-mkspecs \
@@ -109,8 +100,13 @@ RDEPENDS_${PN} += " \
qtquickcontrols2-dev \
qtquickcontrols2-mkspecs \
"
+RDEPENDS_${PN}_remove_toolchain-clang_riscv32 = "qttools-dev qttools-mkspecs qttools-staticdev qttools-tools"
+RDEPENDS_${PN}_remove_toolchain-clang_riscv64 = "qttools-dev qttools-mkspecs qttools-staticdev qttools-tools"
RRECOMMENDS_${PN} += " \
qtquickcontrols-qmlplugins \
qttools-plugins \
"
+
+RRECOMMENDS_${PN}_remove_toolchain-clang_riscv32 = "qttools-plugins"
+RRECOMMENDS_${PN}_remove_toolchain-clang_riscv64 = "qttools-plugins"
diff --git a/external/meta-qt5/recipes-qt/qmllive/qmllive/0001-lib.pro-Append-LIB_ARCH-to-lib.patch b/external/meta-qt5/recipes-qt/qmllive/qmllive/0001-lib.pro-Append-LIB_ARCH-to-lib.patch
new file mode 100644
index 00000000..9a54b902
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qmllive/qmllive/0001-lib.pro-Append-LIB_ARCH-to-lib.patch
@@ -0,0 +1,39 @@
+From 647b1da38d8c741681de9c89f2090f0edcf25a47 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 13:40:34 -0800
+Subject: [PATCH] lib.pro: Append LIB_ARCH to lib
+
+appending to lib so it becomes lib64 when needed and LIB_ARCH can be set
+in evnironment
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/lib.pro | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/lib.pro b/src/lib.pro
+index b5f8ab6..0731d01 100755
+--- a/src/lib.pro
++++ b/src/lib.pro
+@@ -18,7 +18,7 @@ public_headers += \
+ include(src.pri)
+
+ win32: target.path = $${PREFIX}/bin
+-else: target.path = $${PREFIX}/lib
++else: target.path = $${PREFIX}/lib$${LIB_ARCH}
+ INSTALLS += target
+
+ headers.files = $$public_headers
+@@ -30,7 +30,7 @@ INSTALLS += headers
+ QMAKE_PKGCONFIG_NAME = qmllive
+ QMAKE_PKGCONFIG_DESCRIPTION = Qt QmlLive Library
+ QMAKE_PKGCONFIG_PREFIX = $$PREFIX
+- QMAKE_PKGCONFIG_LIBDIR = ${prefix}/lib
++ QMAKE_PKGCONFIG_LIBDIR = ${prefix}/lib$${LIB_ARCH}
+ QMAKE_PKGCONFIG_INCDIR = ${prefix}/include/qmllive
+ QMAKE_PKGCONFIG_DESTDIR = pkgconfig
+ }
+--
+2.24.1
+
diff --git a/external/meta-qt5/recipes-qt/qmllive/qmllive_git.bb b/external/meta-qt5/recipes-qt/qmllive/qmllive_git.bb
index bc9a3784..8a4a6ce7 100644
--- a/external/meta-qt5/recipes-qt/qmllive/qmllive_git.bb
+++ b/external/meta-qt5/recipes-qt/qmllive/qmllive_git.bb
@@ -7,12 +7,15 @@ DEPENDS = "qtbase qtdeclarative"
PV = "5.12+git${SRCPV}"
QT_GIT_PROJECT = "qt-apps"
-SRC_URI = "${QT_GIT}/qmllive.git;branch=dev"
+SRC_URI = "${QT_GIT}/qmllive.git;branch=dev \
+ file://0001-lib.pro-Append-LIB_ARCH-to-lib.patch \
+ "
SRCREV = "0c7bf141b08aa9e757e91a4a05769257d043eab2"
S = "${WORKDIR}/git"
inherit pkgconfig qmake5
+EXTRA_QMAKEVARS_PRE += "LIB_ARCH=${@d.getVar('baselib').replace('lib', '')}"
EXTRA_QMAKEVARS_POST = "QMAKE_RPATHDIR="
FILES_${PN}-dev += "${datadir}"
diff --git a/external/meta-qt5/recipes-qt/qt-kiosk-browser/qt-kiosk-browser/qt-kiosk-browser.conf b/external/meta-qt5/recipes-qt/qt-kiosk-browser/qt-kiosk-browser/qt-kiosk-browser.conf
new file mode 100644
index 00000000..4f4849b5
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt-kiosk-browser/qt-kiosk-browser/qt-kiosk-browser.conf
@@ -0,0 +1,5 @@
+{
+ "URL": "http://github.com/OSSystems/qt-kiosk-browser",
+ "RestartTimeout": 0,
+ "ScreenSaverTimeout": 0
+}
diff --git a/external/meta-qt5/recipes-qt/qt-kiosk-browser/qt-kiosk-browser_git.bb b/external/meta-qt5/recipes-qt/qt-kiosk-browser/qt-kiosk-browser_git.bb
new file mode 100644
index 00000000..8ae0e9ef
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt-kiosk-browser/qt-kiosk-browser_git.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Qt Kiosk Browser"
+DESCRIPTION = "Provides a simple but highly configurable browser for use on Kiosk devices"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1ebbd3e34237af26da5dc08a4e440464"
+LICENSE = "GPLv3"
+
+DEPENDS = "qtwebengine"
+python() {
+ if 'meta-python2' not in d.getVar('BBFILE_COLLECTIONS').split():
+ raise bb.parse.SkipRecipe('qtwebengine dependency requires meta-python2 to be present.')
+}
+
+SRC_URI = " \
+ git://github.com/OSSystems/qt-kiosk-browser;protocol=https \
+ file://${BPN}.conf \
+"
+
+PV = "0.0+git${SRCPV}"
+SRCREV = "d42b7d9050b5445e2b9430022a46d5d583581631"
+
+S = "${WORKDIR}/git"
+
+inherit qmake5
+
+EXTRA_QMAKEVARS_PRE += "PREFIX=${prefix}"
+
+do_install_append() {
+ install -Dm 0644 ${WORKDIR}/${PN}.conf ${D}${sysconfdir}/${PN}.conf
+}
+
+RDEPENDS_${PN} += " \
+ liberation-fonts \
+ qtdeclarative-qmlplugins \
+ qtquickcontrols-qmlplugins \
+ qtvirtualkeyboard \
+ qtwebengine-qmlplugins \
+"
+COMPATIBLE_MACHINE = "(-)"
+COMPATIBLE_MACHINE_x86 = "(.*)"
+COMPATIBLE_MACHINE_x86-64 = "(.*)"
+COMPATIBLE_MACHINE_armv6 = "(.*)"
+COMPATIBLE_MACHINE_armv7a = "(.*)"
+COMPATIBLE_MACHINE_armv7ve = "(.*)"
+COMPATIBLE_MACHINE_aarch64 = "(.*)"
diff --git a/external/meta-qt5/recipes-qt/qt5/nativesdk-qtbase_git.bb b/external/meta-qt5/recipes-qt/qt5/nativesdk-qtbase_git.bb
index 477417e0..42defb01 100644
--- a/external/meta-qt5/recipes-qt/qt5/nativesdk-qtbase_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/nativesdk-qtbase_git.bb
@@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = " \
file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \
file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \
file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \
- file://LICENSE.QT-LICENSE-AGREEMENT-4.0;md5=948f8877345cd66106f11031977a4625 \
+ file://LICENSE.QT-LICENSE-AGREEMENT;md5=c8b6dd132d52c6e5a545df07a4e3e283 \
"
QT_MODULE = "qtbase"
@@ -22,8 +22,8 @@ require qt5-git.inc
FILESEXTRAPATHS =. "${FILE_DIRNAME}/qtbase:"
# common for qtbase-native, qtbase-nativesdk and qtbase
-# Patches from https://github.com/meta-qt5/qtbase/commits/b5.11-shared
-# 5.11.meta-qt5-shared.14
+# Patches from https://github.com/meta-qt5/qtbase/commits/b5.14-shared
+# 5.14.meta-qt5-shared.2
SRC_URI += "\
file://0001-Add-linux-oe-g-platform.patch \
file://0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch \
@@ -37,21 +37,19 @@ SRC_URI += "\
file://0010-linux-clang-Invert-conditional-for-defining-QT_SOCKL.patch \
file://0011-tst_qlocale-Enable-QT_USE_FENV-only-on-glibc.patch \
file://0012-mkspecs-common-gcc-base.conf-Use-I-instead-of-isyste.patch \
- file://0013-Upgrade-double-conversion-to-v3.0.0.patch \
- file://0014-double-conversion-support-AARCH64EB-and-arm-BE.patch \
- file://0015-Disable-ltcg-for-host_build.patch \
- file://0016-Qt5GuiConfigExtras.cmake.in-cope-with-variable-path-.patch \
- file://0017-corelib-Include-sys-types.h-for-uint32_t.patch \
- file://0018-Define-QMAKE_CXX.COMPILER_MACROS-for-clang-on-linux.patch \
- file://0019-Fix-compile-issue-with-gcc-9.patch \
+ file://0013-Disable-ltcg-for-host_build.patch \
+ file://0014-Qt5GuiConfigExtras.cmake.in-cope-with-variable-path-.patch \
+ file://0015-corelib-Include-sys-types.h-for-uint32_t.patch \
+ file://0016-Define-QMAKE_CXX.COMPILER_MACROS-for-clang-on-linux.patch \
+ file://0018-input-Make-use-of-timeval-portable-for-64bit-time_t.patch \
"
# common for qtbase-native and nativesdk-qtbase
-# Patches from https://github.com/meta-qt5/qtbase/commits/b5.11-native
-# 5.11.meta-qt5-native.14
+# Patches from https://github.com/meta-qt5/qtbase/commits/b5.14-native
+# 5.14.meta-qt5-native.2
SRC_URI += " \
- file://0020-Always-build-uic-and-qvkgen.patch \
- file://0021-Avoid-renameeat2-for-native-sdk-builds.patch \
+ file://0019-Always-build-uic-and-qvkgen.patch \
+ file://0020-Avoid-renameeat2-for-native-sdk-builds.patch \
"
# CMake's toolchain configuration of nativesdk-qtbase
@@ -68,6 +66,7 @@ FILES_${PN}-dev += " \
FILES_${PN} += " \
${SDKPATHNATIVE}/environment-setup.d \
+ ${OE_QMAKE_PATH_PLUGINS} \
"
# qttools binaries are placed in a subdir of bin in order to avoid
@@ -76,11 +75,15 @@ FILES_${PN} += " \
# disable package auto-renaming for the tools-package.
DEBIAN_NOAUTONAME_${PN} = "1"
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[gui] = "-gui -qpa offscreen,-no-gui,"
+PACKAGECONFIG[imageformats] = "-qt-libpng -qt-libjpeg -gif -ico, -no-libpng -no-libjpeg -no-ico -no-gif,"
+PACKAGECONFIG[openssl] = "-openssl,-no-openssl,openssl,libssl"
+
QT_CONFIG_FLAGS += " \
-shared \
-silent \
-no-pch \
- -no-rpath \
-pkg-config \
${PACKAGECONFIG_CONFARGS} \
"
@@ -105,16 +108,11 @@ do_configure() {
-no-gcc-sysroot \
-system-zlib \
-dbus-runtime \
- -no-libjpeg \
- -no-libpng \
- -no-gif \
-no-accessibility \
-no-cups \
- -no-gui \
-no-sql-mysql \
-no-sql-sqlite \
-no-opengl \
- -no-openssl \
-no-xcb \
-no-feature-bearermanagement \
-no-icu \
@@ -142,7 +140,6 @@ do_configure() {
-nomake examples \
-nomake tests \
-no-compile-examples \
- -no-rpath \
-platform ${OE_QMAKE_PLATFORM_NATIVE} \
-xplatform ${OE_QMAKE_PLATFORM} \
${QT_CONFIG_FLAGS}
@@ -153,7 +150,6 @@ do_install() {
# remove things unused in nativesdk, we need the headers and libs
rm -rf ${D}${datadir} \
- ${D}/${OE_QMAKE_PATH_PLUGINS} \
${D}${libdir}/cmake \
${D}${libdir}/pkgconfig
@@ -198,4 +194,4 @@ fakeroot do_generate_qt_environment_file() {
do_generate_qt_environment_file[umask] = "022"
addtask generate_qt_environment_file after do_install before do_package
-SRCREV = "08de243eaa007597c2bfbc97d3d14e2f821ac4be"
+SRCREV = "3a6d8df5219653b043bd642668cee193f563ec84"
diff --git a/external/meta-qt5/recipes-qt/qt5/ogl-runtime/0001-Fix-examples-build-error.patch b/external/meta-qt5/recipes-qt/qt5/ogl-runtime/0001-Fix-examples-build-error.patch
new file mode 100644
index 00000000..0d2f165f
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/ogl-runtime/0001-Fix-examples-build-error.patch
@@ -0,0 +1,62 @@
+From 4fa69c1c5396bded20edccb2a1dd9b61f0b1140d Mon Sep 17 00:00:00 2001
+From: Samuli Piippo <samuli.piippo@qt.io>
+Date: Fri, 2 Aug 2019 12:39:50 +0300
+Subject: [PATCH] Fix examples build error
+
+Add workaround for QTBUG-77288 which causes examples to fail to build
+
+Signed-off-by: Samuli Piippo <samuli.piippo@qt.io>
+---
+ examples/studio3d/cppdatainput/cppdatainput.pro | 1 +
+ examples/studio3d/dynamicelement/dynamicelement.pro | 1 +
+ examples/studio3d/qmldatainput/qmldatainput.pro | 1 +
+ examples/studio3d/simpleqml/simpleqml.pro | 1 +
+ 4 files changed, 4 insertions(+)
+
+diff --git a/examples/studio3d/cppdatainput/cppdatainput.pro b/examples/studio3d/cppdatainput/cppdatainput.pro
+index 20b5c68..bbb403a 100644
+--- a/examples/studio3d/cppdatainput/cppdatainput.pro
++++ b/examples/studio3d/cppdatainput/cppdatainput.pro
+@@ -1,5 +1,6 @@
+ CONFIG += c++11
+ QT += widgets qml quick studio3d
++QMAKE_LIBS += $$QMAKE_LIBS_3DSQMLSTREAMER $$QMAKE_LIBS_3DSOPENGL
+
+ target.path = $$[QT_INSTALL_EXAMPLES]/studio3d/$$TARGET
+ INSTALLS += target
+diff --git a/examples/studio3d/dynamicelement/dynamicelement.pro b/examples/studio3d/dynamicelement/dynamicelement.pro
+index 1b804fd..ae3c005 100644
+--- a/examples/studio3d/dynamicelement/dynamicelement.pro
++++ b/examples/studio3d/dynamicelement/dynamicelement.pro
+@@ -1,6 +1,7 @@
+ TEMPLATE = app
+
+ QT += qml quick studio3d
++QMAKE_LIBS += $$QMAKE_LIBS_3DSQMLSTREAMER $$QMAKE_LIBS_3DSOPENGL
+
+ SOURCES += \
+ demo.cpp \
+diff --git a/examples/studio3d/qmldatainput/qmldatainput.pro b/examples/studio3d/qmldatainput/qmldatainput.pro
+index 9bafed5..496c2c1 100644
+--- a/examples/studio3d/qmldatainput/qmldatainput.pro
++++ b/examples/studio3d/qmldatainput/qmldatainput.pro
+@@ -1,6 +1,7 @@
+ TEMPLATE = app
+
+ QT += widgets qml quick studio3d
++QMAKE_LIBS += $$QMAKE_LIBS_3DSQMLSTREAMER $$QMAKE_LIBS_3DSOPENGL
+
+ integrity: DEFINES += USE_EMBEDDED_FONTS
+
+diff --git a/examples/studio3d/simpleqml/simpleqml.pro b/examples/studio3d/simpleqml/simpleqml.pro
+index 62afa78..1a0784b 100644
+--- a/examples/studio3d/simpleqml/simpleqml.pro
++++ b/examples/studio3d/simpleqml/simpleqml.pro
+@@ -1,6 +1,7 @@
+ TEMPLATE = app
+
+ QT += widgets qml quick studio3d
++QMAKE_LIBS += $$QMAKE_LIBS_3DSQMLSTREAMER $$QMAKE_LIBS_3DSOPENGL
+
+ SOURCES += \
+ main.cpp
diff --git a/external/meta-qt5/recipes-qt/qt5/ogl-runtime/0001-Qt3DSSimpleTypes-make-QT3DSU64-as-unsigned-long-on-l.patch b/external/meta-qt5/recipes-qt/qt5/ogl-runtime/0001-Qt3DSSimpleTypes-make-QT3DSU64-as-unsigned-long-on-l.patch
new file mode 100644
index 00000000..94ca4f5c
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/ogl-runtime/0001-Qt3DSSimpleTypes-make-QT3DSU64-as-unsigned-long-on-l.patch
@@ -0,0 +1,35 @@
+From 84a9dd3f1bce450b3a6eb589ab9794178d74d1d7 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 7 Oct 2019 11:58:21 -0700
+Subject: [PATCH] Qt3DSSimpleTypes: make QT3DSU64 as unsigned long on linux as
+ well
+
+linux 64bit platform defines uint64_t as unsigned long as well, which
+inturn is used to define GLuint64, therefore its needed to be compatible
+or else we get compile errors
+
+src/render/backends/gl/Qt3DSRenderBackendGL3.cpp:754:80: error: cannot initialize a parameter of type 'GLuint64 *' (aka 'unsigned long *') with an lvalue of type 'qt3ds::QT3DSU64 *' (aka 'unsigned long long *')
+| queryID, m_Conversion.fromQueryResultTypeToGL(resultType), params));
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/foundation/Qt3DSSimpleTypes.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/foundation/Qt3DSSimpleTypes.h b/src/foundation/Qt3DSSimpleTypes.h
+index 05ac8d9..adb72e9 100644
+--- a/src/foundation/Qt3DSSimpleTypes.h
++++ b/src/foundation/Qt3DSSimpleTypes.h
+@@ -54,7 +54,7 @@ typedef quint32 QT3DSU32;
+ typedef qint32 QT3DSI32;
+
+ // Android's definition of GLuint64 as unsigned long (64-bits) requires this workaround
+-#if Q_PROCESSOR_WORDSIZE == 8 && (defined(Q_OS_ANDROID) || defined(Q_OS_INTEGRITY))
++#if Q_PROCESSOR_WORDSIZE == 8 && (defined(Q_OS_ANDROID) || defined(Q_OS_INTEGRITY) || defined(Q_OS_LINUX))
+ typedef unsigned long QT3DSU64;
+ #else
+ typedef quint64 QT3DSU64;
+--
+2.23.0
+
diff --git a/external/meta-qt5/recipes-qt/qt5/ogl-runtime_git.bb b/external/meta-qt5/recipes-qt/qt5/ogl-runtime_git.bb
new file mode 100644
index 00000000..5e1f183f
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/ogl-runtime_git.bb
@@ -0,0 +1,29 @@
+require qt5.inc
+require qt5-git.inc
+
+LICENSE = "GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial"
+LIC_FILES_CHKSUM = " \
+ file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \
+ file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \
+"
+
+DEPENDS += "qtbase qtdeclarative qtquickcontrols2"
+
+QT_MODULE_BRANCH = "2.5"
+QT_MODULE_BRANCH_EASTL = "master"
+QT_GIT_PROJECT = "qt3dstudio"
+PV = "2.5.0+git${SRCPV}"
+
+COMPATIBLE_HOST = "(i.86|x86_64|aarch64|arm|powerpc64).*-linux"
+
+SRC_URI += " \
+ ${QT_GIT}/qt3dstudio-eastl.git;name=EASTL;branch=${QT_MODULE_BRANCH_EASTL};protocol=${QT_GIT_PROTOCOL};destsuffix=git/src/3rdparty/EASTL \
+ file://0001-Fix-examples-build-error.patch \
+ file://0001-Qt3DSSimpleTypes-make-QT3DSU64-as-unsigned-long-on-l.patch \
+"
+
+SRCREV_ogl-runtime = "25236c672d81a73ee8754dbd764eb8a2a26d866e"
+SRCREV_EASTL = "31697c758f2ed19bd7c6bbe61f1b91f9e12035b5"
+SRCREV = "${SRCREV_ogl-runtime}"
+
+SRCREV_FORMAT = "ogl-runtime_EASTL"
diff --git a/external/meta-qt5/recipes-qt/qt5/qt3d-runtime/0001-runtime-Include-missing-QCoreApplication-header.patch b/external/meta-qt5/recipes-qt/qt5/qt3d-runtime/0001-runtime-Include-missing-QCoreApplication-header.patch
deleted file mode 100644
index bc61e538..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qt3d-runtime/0001-runtime-Include-missing-QCoreApplication-header.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From e6247a6823d372cc779934cf6c74d65bae9652b5 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 23 Aug 2018 03:23:20 +0000
-Subject: [PATCH] runtime: Include missing <QCoreApplication> header
-
-Fixes following errors seen on mips
-
-q3dsengine.cpp:1327:9: error: 'QCoreApplication' has not been declared
- QCoreApplication::sendEvent(&m_profileUiEventSource, e);
- ^~~~~~~~~~~~~~~~
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/runtime/q3dsengine.cpp | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/runtime/q3dsengine.cpp b/src/runtime/q3dsengine.cpp
-index 1a438f0..d6d4eb5 100644
---- a/src/runtime/q3dsengine.cpp
-+++ b/src/runtime/q3dsengine.cpp
-@@ -36,6 +36,7 @@
- #include "q3dsinlineqmlsubpresentation_p.h"
- #include "q3dsviewersettings.h"
-
-+#include <QCoreApplication>
- #include <QLoggingCategory>
- #include <QKeyEvent>
- #include <QMouseEvent>
diff --git a/external/meta-qt5/recipes-qt/qt5/qt3d-runtime_git.bb b/external/meta-qt5/recipes-qt/qt5/qt3d-runtime_git.bb
deleted file mode 100644
index 78f2aec1..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qt3d-runtime_git.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require qt5.inc
-require qt5-git.inc
-
-LICENSE = "GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial"
-LIC_FILES_CHKSUM = " \
- file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \
- file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \
-"
-
-SRC_URI += "file://0001-runtime-Include-missing-QCoreApplication-header.patch"
-
-DEPENDS += "qtbase qtdeclarative qt3d"
-
-QT_MODULE_BRANCH = "2.0"
-QT_GIT_PROJECT = "qt3dstudio"
-PV = "2.0+git${SRCPV}"
-
-SRCREV = "ed19232a75b371727c76a9ad8a56f211a0b827ec"
diff --git a/external/meta-qt5/recipes-qt/qt5/qt3d/0001-Allow-a-tools-only-build.patch b/external/meta-qt5/recipes-qt/qt5/qt3d/0001-Allow-a-tools-only-build.patch
index 0189a9dc..cc4dd659 100644
--- a/external/meta-qt5/recipes-qt/qt5/qt3d/0001-Allow-a-tools-only-build.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qt3d/0001-Allow-a-tools-only-build.patch
@@ -1,4 +1,4 @@
-From 72d96957995393312ad29920d67fa758d0e53ca5 Mon Sep 17 00:00:00 2001
+From 01c62d4e4bf1034302834fef48a894c6b0ebe147 Mon Sep 17 00:00:00 2001
From: Samuli Piippo <samuli.piippo@qt.io>
Date: Fri, 17 Aug 2018 13:23:58 +0300
Subject: [PATCH] Allow a tools-only build
@@ -6,20 +6,20 @@ Subject: [PATCH] Allow a tools-only build
---
qt3d.pro | 7 ++++++-
src/3rdparty/assimp/assimp_dependency.pri | 2 +-
- tools/tools.pro | 2 +-
- 3 files changed, 8 insertions(+), 3 deletions(-)
+ tools/tools.pro | 4 ++--
+ 3 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/qt3d.pro b/qt3d.pro
-index 2cc347a1c..81cdeefb0 100644
+index d5dbda4b9..6809470b6 100644
--- a/qt3d.pro
+++ b/qt3d.pro
@@ -1,4 +1,4 @@
--requires(qtConfig(opengl))
-+!tools-only:requires(qtConfig(opengl))
+-qtHaveModule(gui): \
++!tools-only:qtHaveModule(gui): \
+ requires(qtConfig(opengl):!wasm)
CONFIG += examples_need_tools
- load(qt_parts)
-@@ -14,3 +14,8 @@ load(qt_parts)
+@@ -15,3 +15,8 @@ load(qt_parts)
OTHER_FILES += \
sync.profile
@@ -40,13 +40,18 @@ index 8ba2d9a41..e973d93dd 100644
} else {
include(assimp.pri)
diff --git a/tools/tools.pro b/tools/tools.pro
-index c2f692034..24c49ad5a 100644
+index 3b457ed50..9f5376a0a 100644
--- a/tools/tools.pro
+++ b/tools/tools.pro
-@@ -1,5 +1,5 @@
+@@ -1,9 +1,9 @@
TEMPLATE = subdirs
+
+-!qtHaveModule(3dcore): \
++!tools-only:!qtHaveModule(3dcore): \
+ return()
+
QT_FOR_CONFIG += 3dcore-private
--qtConfig(assimp):qtConfig(commandlineparser):!cross_compile: {
+-qtConfig(assimp):qtConfig(commandlineparser): {
+tools-only|qtConfig(assimp):qtConfig(commandlineparser): {
SUBDIRS += qgltf
}
diff --git a/external/meta-qt5/recipes-qt/qt5/qt3d_git.bb b/external/meta-qt5/recipes-qt/qt5/qt3d_git.bb
index d455fef3..bae2ecec 100644
--- a/external/meta-qt5/recipes-qt/qt5/qt3d_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qt3d_git.bb
@@ -11,8 +11,8 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtbase"
DEPENDS_class-target += "qtdeclarative qt3d-native"
-# Patches from https://github.com/meta-qt5/qt3d/commits/b5.11
-# 5.11.meta-qt5.6
+# Patches from https://github.com/meta-qt5/qt3d/commits/b5.14
+# 5.14.meta-qt5.1
SRC_URI += " \
file://0001-Allow-a-tools-only-build.patch \
"
@@ -36,6 +36,6 @@ do_configure_prepend() {
${S}/src/quick3d/imports/input/importsinput.pro
}
-SRCREV = "cd3e621ccf56bb8262f9c8cd967e05bf41934060"
+SRCREV = "ea698681d9669089cd7438d2690363cb5c690fd2"
BBCLASSEXTEND += "native nativesdk"
diff --git a/external/meta-qt5/recipes-qt/qt5/qt5-creator/0003-Link-with-libexecinfo-on-musl.patch b/external/meta-qt5/recipes-qt/qt5/qt5-creator/0001-Link-with-libexecinfo-on-musl.patch
index 9b225a57..da7561ce 100644
--- a/external/meta-qt5/recipes-qt/qt5/qt5-creator/0003-Link-with-libexecinfo-on-musl.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qt5-creator/0001-Link-with-libexecinfo-on-musl.patch
@@ -1,4 +1,4 @@
-From 88afa7173c7d0c97e15d9ee9c58e8c0364799bb7 Mon Sep 17 00:00:00 2001
+From 33299724b8719d53b26c9055a76a61c358270110 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 16 Jan 2018 13:26:57 +0000
Subject: [PATCH] Link with libexecinfo on musl
@@ -9,12 +9,21 @@ Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
src/plugins/debugger/debugger.pro | 1 +
1 file changed, 1 insertion(+)
-diff --git a/src/plugins/debugger/debugger.pro b/src/plugins/debugger/debugger.pro
-index f5a34aa0d5..4a1359dd5c 100644
--- a/src/plugins/debugger/debugger.pro
+++ b/src/plugins/debugger/debugger.pro
-@@ -141,3 +141,4 @@ include(console/console.pri)
+@@ -139,3 +139,4 @@ include(console/console.pri)
include(analyzer/analyzer.pri)
include(shared/shared.pri)
+LIBS *= -lexecinfo
+--- a/src/plugins/qmldesigner/qmldesignerplugin.pro
++++ b/src/plugins/qmldesigner/qmldesignerplugin.pro
+@@ -3,7 +3,7 @@ CONFIG += exceptions
+
+ INCLUDEPATH += $$PWD
+
+-unix:!openbsd:!osx: LIBS += -lrt # posix shared memory
++unix:!openbsd:!osx: LIBS += -lexecinfo -lrt # posix shared memory
+
+ include(../../qtcreatorplugin.pri)
+
diff --git a/external/meta-qt5/recipes-qt/qt5/qt5-creator/0001-botan-Always-define-BOTAN_ARCH_SWITCH-when-cross-bui.patch b/external/meta-qt5/recipes-qt/qt5/qt5-creator/0001-botan-Always-define-BOTAN_ARCH_SWITCH-when-cross-bui.patch
deleted file mode 100644
index eebda742..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qt5-creator/0001-botan-Always-define-BOTAN_ARCH_SWITCH-when-cross-bui.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 766e5b37a42b440b66823262eb553f9981940115 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 27 Sep 2018 20:48:17 -0700
-Subject: [PATCH] botan: Always define BOTAN_ARCH_SWITCH when cross-building
-
-this helps in compiling botan for non-x86 architectures
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/libs/botan/botan.pro | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/libs/botan/botan.pro b/src/libs/botan/botan.pro
-index 0c939b2a30..6e1a85fe84 100644
---- a/src/libs/botan/botan.pro
-+++ b/src/libs/botan/botan.pro
-@@ -18,6 +18,7 @@ else: clang: BOTAN_CC_TYPE = clang
- else: BOTAN_CC_TYPE = gcc
- contains(QT_ARCH, i386): BOTAN_ARCH_SWITCH = "--cpu=x86"
- else: contains(QT_ARCH, x86_64): BOTAN_ARCH_SWITCH = "--cpu=x86_64"
-+else: BOTAN_ARCH_SWITCH = --cpu=$$QT_ARCH
- BOTAN_MODULES = aes aes_ssse3 auto_rng bigint block cbc ctr des dh dsa ec_group ecdh ecdsa entropy \
- filters hmac mode_pad pubkey rsa sha1 sha1_sse2 sha1_x86 sha2_32 sha2_32_x86 \
- sha2_64 simd system_rng,emsa_pkcs1,pbes2,pbkdf2
--- 2.19.0
-
diff --git a/external/meta-qt5/recipes-qt/qt5/qt5-creator/0001-clangformat-AllowShortIfStatementsOnASingleLine-is-n.patch b/external/meta-qt5/recipes-qt/qt5/qt5-creator/0001-clangformat-AllowShortIfStatementsOnASingleLine-is-n.patch
new file mode 100644
index 00000000..7338f02b
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qt5-creator/0001-clangformat-AllowShortIfStatementsOnASingleLine-is-n.patch
@@ -0,0 +1,53 @@
+From 453c075b67b9d9254bf7331e1e3be287f240a9e0 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 3 Sep 2019 13:31:12 -0700
+Subject: [PATCH] clangformat: AllowShortIfStatementsOnASingleLine is not
+ boolean anymore
+
+https://reviews.llvm.org/D59087 has implemented multiple states for AllowShortIfStatementsOnASingleLine
+
+Fixes
+../../../../git/src/plugins/clangformat/clangformatutils.cpp:63:49: error: assigning to 'clang::format::FormatStyle::ShortIfStyle' from incompatible type 'bool'
+ style.AllowShortIfStatementsOnASingleLine = false;
+ ^~~~~
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/plugins/clangformat/clangformatutils.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/src/plugins/clangformat/clangformatutils.cpp
++++ b/src/plugins/clangformat/clangformatutils.cpp
+@@ -57,10 +57,18 @@ static clang::format::FormatStyle qtcSty
+ style.AlignOperands = true;
+ style.AlignTrailingComments = true;
+ style.AllowAllParametersOfDeclarationOnNextLine = true;
++#if Q_CC_CLANG < 1000
+ style.AllowShortBlocksOnASingleLine = false;
++#else
++ style.AllowShortBlocksOnASingleLine = FormatStyle::SBS_Never;
++#endif
+ style.AllowShortCaseLabelsOnASingleLine = false;
+ style.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_Inline;
++#if Q_CC_CLANG < 900
+ style.AllowShortIfStatementsOnASingleLine = false;
++#else
++ style.AllowShortIfStatementsOnASingleLine = FormatStyle::SIS_Never;
++#endif
+ style.AllowShortLoopsOnASingleLine = false;
+ style.AlwaysBreakAfterReturnType = FormatStyle::RTBS_None;
+ style.AlwaysBreakBeforeMultilineStrings = false;
+@@ -68,7 +76,11 @@ static clang::format::FormatStyle qtcSty
+ style.BinPackArguments = false;
+ style.BinPackParameters = false;
+ style.BraceWrapping.AfterClass = true;
++#if Q_CC_CLANG < 1000
+ style.BraceWrapping.AfterControlStatement = false;
++#else
++ style.BraceWrapping.AfterControlStatement = FormatStyle::BWACS_Never;
++#endif
+ style.BraceWrapping.AfterEnum = false;
+ style.BraceWrapping.AfterFunction = true;
+ style.BraceWrapping.AfterNamespace = false;
diff --git a/external/meta-qt5/recipes-qt/qt5/qt5-creator/0002-botan.pro-pass-QMAKE_AR.patch b/external/meta-qt5/recipes-qt/qt5/qt5-creator/0002-botan.pro-pass-QMAKE_AR.patch
deleted file mode 100644
index 26262299..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qt5-creator/0002-botan.pro-pass-QMAKE_AR.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From cd006f4a79b3c1435a8a8321b5af9191f104bbb3 Mon Sep 17 00:00:00 2001
-From: Martin Jansa <Martin.Jansa@gmail.com>
-Date: Wed, 26 Sep 2018 21:14:06 +0000
-Subject: [PATCH] botan.pro: pass QMAKE_AR
-
-* otherwise AR from environment sets it with cqs params, e.g.:
- x86_64-oe-linux-ar cqs
- from QMAKE_AR = ${OE_QMAKE_AR} cqs
-
- but then botan's Makefile will add "crs" after it causing:
- http://errors.yoctoproject.org/Errors/Details/194653/
-
- x86_64-oe-linux-ar cqs crs libbotan-2.a build/obj/lib/botan_all.o build/obj/lib/botan_all_ssse3.o
- x86_64-oe-linux-ar: libbotan-2.a: No such file or directory
- Makefile:79: recipe for target 'libbotan-2.a' failed
- make[4]: *** [libbotan-2.a] Error 1
-
-* add --ar-options parameter to botan configure and respect the
- value when set (before cc.ar_options and osinfo.ar_options)
- then use this to pass empty ar_options as we already include
- the options in ar_command
-
-Upstream-Status: Pending
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- src/libs/3rdparty/botan/configure.py | 13 ++++++++++++-
- src/libs/botan/botan.pro | 1 +
- 2 files changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/src/libs/3rdparty/botan/configure.py b/src/libs/3rdparty/botan/configure.py
-index b09f07bb5e..2b5b9c6417 100755
---- a/src/libs/3rdparty/botan/configure.py
-+++ b/src/libs/3rdparty/botan/configure.py
-@@ -321,6 +321,9 @@ def process_command_line(args): # pylint: disable=too-many-locals
- target_group.add_option('--ar-command', dest='ar_command', metavar='AR', default=None,
- help='set path to static archive creator')
-
-+ target_group.add_option('--ar-options', dest='ar_options', metavar='crs', default='crs',
-+ help='set options for static archive creator')
-+
- target_group.add_option('--msvc-runtime', metavar='RT', default=None,
- help='specify MSVC runtime (MT, MD, MTd, MDd)')
-
-@@ -1786,6 +1789,14 @@ def create_template_vars(source_paths, build_paths, options, modules, cc, arch,
-
- return osinfo.ar_command
-
-+ def ar_options():
-+ if options.ar_options:
-+ return options.ar_options
-+ if cc.ar_options:
-+ return cc.ar_options
-+
-+ return osinfo.ar_options
-+
- def choose_endian(arch_info, options):
- if options.with_endian != None:
- return options.with_endian
-@@ -1938,7 +1949,7 @@ def create_template_vars(source_paths, build_paths, options, modules, cc, arch,
- 'post_link_cmd': '',
-
- 'ar_command': ar_command(),
-- 'ar_options': cc.ar_options or osinfo.ar_options,
-+ 'ar_options': ar_options(),
- 'ar_output_to': cc.ar_output_to,
-
- 'link_to': ' '.join(
-diff --git a/src/libs/botan/botan.pro b/src/libs/botan/botan.pro
-index 0c939b2a30..e8082c4bbb 100644
---- a/src/libs/botan/botan.pro
-+++ b/src/libs/botan/botan.pro
-@@ -46,6 +46,7 @@ configure.variable_out = BOTAN_MAKEFILE
- configure.commands = cd $$BOTAN_BUILD_DIR_FOR_SHELL && \
- python $$CONFIGURE_FILE_PATH_FOR_SHELL \
- --cc=$$BOTAN_CC_TYPE --cc-bin=$$shell_quote($$QMAKE_CXX) \
-+ --ar-command=$$shell_quote($$QMAKE_AR) --ar-options=$$shell_quote(' ') \
- $$BOTAN_ARCH_SWITCH $$BOTAN_OS_SWITCH $$OTHER_FLAGS
- QMAKE_EXTRA_COMPILERS += configure
-
diff --git a/external/meta-qt5/recipes-qt/qt5/qt5-creator_git.bb b/external/meta-qt5/recipes-qt/qt5/qt5-creator_git.bb
index 6a8887ed..3c3420ca 100644
--- a/external/meta-qt5/recipes-qt/qt5/qt5-creator_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qt5-creator_git.bb
@@ -12,23 +12,22 @@ LIC_FILES_CHKSUM = " \
file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \
"
-inherit qmake5
+inherit qmake5 mime-xdg
-DEPENDS = "qtbase qtscript qtwebkit qtxmlpatterns qtx11extras qtdeclarative qttools qttools-native qtsvg chrpath-replacement-native"
+DEPENDS += "qtbase qtscript qtxmlpatterns qtx11extras qtdeclarative qttools qttools-native qtsvg chrpath-replacement-native zlib"
DEPENDS_append_toolchain-clang = " clang llvm-common"
DEPENDS_append_libc-musl = " libexecinfo"
-SRCREV = "8768e39d3c8e74e583eca3897cc6de53a99c3dde"
-PV = "4.7.1+git${SRCPV}"
+SRCREV = "8181363fa90eb651591bf71e1a840e1c998429f4"
+PV = "4.9.2+git${SRCPV}"
-# Patches from https://github.com/meta-qt5/qtcreator/commits/b4.7.1
-# 4.7.1.meta-qt5.1
+# Patches from https://github.com/meta-qt5/qtcreator/commits/b4.9.2
+# 4.9.2.meta-qt5.1
SRC_URI = " \
- git://code.qt.io/qt-creator/qt-creator.git;branch=4.7 \
- file://0002-botan.pro-pass-QMAKE_AR.patch \
- file://0001-botan-Always-define-BOTAN_ARCH_SWITCH-when-cross-bui.patch \
+ git://code.qt.io/qt-creator/qt-creator.git;branch=4.9 \
+ file://0001-clangformat-AllowShortIfStatementsOnASingleLine-is-n.patch \
"
-SRC_URI_append_libc-musl = " file://0003-Link-with-libexecinfo-on-musl.patch"
+SRC_URI_append_libc-musl = " file://0001-Link-with-libexecinfo-on-musl.patch"
S = "${WORKDIR}/git"
@@ -36,6 +35,9 @@ EXTRA_QMAKEVARS_PRE += "IDE_LIBRARY_BASENAME=${baselib}${QT_DIR_NAME}"
EXTRANATIVEPATH += "chrpath-native"
+COMPATIBLE_HOST_toolchain-clang_riscv32 = "null"
+COMPATIBLE_HOST_toolchain-clang_riscv64 = "null"
+
do_configure_append() {
# Find native tools
sed -i 's:${STAGING_BINDIR}.*/qdoc:${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qdoc:g' ${B}/Makefile
@@ -67,7 +69,7 @@ FILES_${PN}-dev += " \
${libdir}${QT_DIR_NAME}/qtcreator/*${SOLIBSDEV} \
"
-RDEPENDS_${PN} += "perl python"
+RDEPENDS_${PN} += "perl python3"
RCONFLICTS_${PN} = "qt-creator"
# To give best user experience out of the box..
diff --git a/external/meta-qt5/recipes-qt/qt5/qt5-git.inc b/external/meta-qt5/recipes-qt/qt5/qt5-git.inc
index 79008d19..f477afd6 100644
--- a/external/meta-qt5/recipes-qt/qt5/qt5-git.inc
+++ b/external/meta-qt5/recipes-qt/qt5/qt5-git.inc
@@ -1,8 +1,8 @@
# Copyright (C) 2012-2016 O.S. Systems Software LTDA.
-# Copyright (C) 2013-2018 Martin Jansa <martin.jansa@gmail.com>
+# Copyright (C) 2013-2020 Martin Jansa <martin.jansa@gmail.com>
QT_MODULE ?= "${BPN}"
-QT_MODULE_BRANCH ?= "5.11"
+QT_MODULE_BRANCH ?= "5.14"
QT_MODULE_BRANCH_PARAM ?= "branch=${QT_MODULE_BRANCH}"
# each module needs to define valid SRCREV
@@ -14,4 +14,4 @@ CVE_PRODUCT = "qt"
S = "${WORKDIR}/git"
-PV = "5.11.3+git${SRCPV}"
+PV = "5.14.2+git${SRCPV}"
diff --git a/external/meta-qt5/recipes-qt/qt5/qt5-plugin-generic-vboxtouch/0001-include-errno.h-for-errno-definition.patch b/external/meta-qt5/recipes-qt/qt5/qt5-plugin-generic-vboxtouch/0001-include-errno.h-for-errno-definition.patch
new file mode 100644
index 00000000..ff0eb56f
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qt5-plugin-generic-vboxtouch/0001-include-errno.h-for-errno-definition.patch
@@ -0,0 +1,38 @@
+From 2486c9ecc1db12132ee8c77ed69b1d301e75786b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 1 Feb 2019 23:35:24 -0800
+Subject: [PATCH] include errno.h for errno definition
+
+This fixes errors with clang/libc++
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ vboxtouch/setshape.cpp | 1 +
+ vboxtouch/vboxtouch.cpp | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/vboxtouch/setshape.cpp b/vboxtouch/setshape.cpp
+index 092f888..4dd25a1 100644
+--- a/vboxtouch/setshape.cpp
++++ b/vboxtouch/setshape.cpp
+@@ -24,6 +24,7 @@
+ #include <QByteArray>
+ #include <QDebug>
+
++#include <errno.h>
+ #include <stdint.h>
+ #include <string.h>
+
+diff --git a/vboxtouch/vboxtouch.cpp b/vboxtouch/vboxtouch.cpp
+index 345fdcb..ffe1d50 100644
+--- a/vboxtouch/vboxtouch.cpp
++++ b/vboxtouch/vboxtouch.cpp
+@@ -32,6 +32,7 @@
+
+ #include <qpa/qwindowsysteminterface.h>
+
++#include <errno.h>
+ #include <fcntl.h>
+ #include <string.h>
+ #include <unistd.h>
diff --git a/external/meta-qt5/recipes-qt/qt5/qt5-plugin-generic-vboxtouch_git.bb b/external/meta-qt5/recipes-qt/qt5/qt5-plugin-generic-vboxtouch_git.bb
index 1f29dcfe..4e83c267 100644
--- a/external/meta-qt5/recipes-qt/qt5/qt5-plugin-generic-vboxtouch_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qt5-plugin-generic-vboxtouch_git.bb
@@ -16,7 +16,10 @@ DEPENDS = "qtbase"
# Needed with gcc-5.2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65801
CXXFLAGS += "-Wno-narrowing"
-SRC_URI = "git://github.com/nemomobile/qt5-plugin-generic-vboxtouch.git"
+SRC_URI = "git://github.com/nemomobile/qt5-plugin-generic-vboxtouch.git \
+ file://0001-VirtualboxTouchScreenHandler-initialize-m_mouse.patch;patchdir=.. \
+ file://0001-include-errno.h-for-errno-definition.patch;patchdir=.. \
+ "
SRCREV = "3f2bdb5a1d346f02d5ab185522271ba2288a42bb"
S = "${WORKDIR}/git/vboxtouch"
@@ -25,4 +28,3 @@ inherit qmake5
FILES_${PN} += "${OE_QMAKE_PATH_PLUGINS}/generic/libvboxtouchplugin.so"
FILES_${PN}-dev += "${OE_QMAKE_PATH_LIBS}/cmake/*"
-SRC_URI += "file://0001-VirtualboxTouchScreenHandler-initialize-m_mouse.patch;patchdir=.."
diff --git a/external/meta-qt5/recipes-qt/qt5/qt5-ptest.inc b/external/meta-qt5/recipes-qt/qt5/qt5-ptest.inc
index 56efe106..f41e971a 100644
--- a/external/meta-qt5/recipes-qt/qt5/qt5-ptest.inc
+++ b/external/meta-qt5/recipes-qt/qt5/qt5-ptest.inc
@@ -16,7 +16,7 @@ fakeroot do_install_ptest() {
for var in ` find ${B}/tests/auto/ -name tst_*`; do
if [ -z ` echo ${var##*/} | grep '\.'` ]; then
echo ${var##*/} >> ${t}/tst_list
- install -m 0644 ${var} ${t}
+ install -m 0744 ${var} ${t}
fi
done
}
diff --git a/external/meta-qt5/recipes-qt/qt5/qt5.inc b/external/meta-qt5/recipes-qt/qt5/qt5.inc
index e0cd8949..6f9a83c4 100644
--- a/external/meta-qt5/recipes-qt/qt5/qt5.inc
+++ b/external/meta-qt5/recipes-qt/qt5/qt5.inc
@@ -8,8 +8,8 @@ PACKAGECONFIG_OPENSSL ?= "openssl"
PACKAGECONFIG[examples] = ""
PACKAGECONFIG[tests] = ""
PACKAGECONFIG[qtquickcompiler] = ",,qtdeclarative-native"
-EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('PACKAGECONFIG', 'examples', 'QT_BUILD_PARTS+=examples', '', d)}"
-EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('PACKAGECONFIG', 'tests', 'QT_BUILD_PARTS+=tests', '', d)}"
+EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('PACKAGECONFIG', 'examples', 'QT_BUILD_PARTS+=examples', 'QT_BUILD_PARTS-=examples', d)}"
+EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('PACKAGECONFIG', 'tests', 'QT_BUILD_PARTS+=tests', 'QT_BUILD_PARTS-=tests', d)}"
EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('PACKAGECONFIG', 'qtquickcompiler', 'CONFIG+=qtquickcompiler', '', d)}"
# we don't want conflicts with qt4
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase-native_git.bb b/external/meta-qt5/recipes-qt/qt5/qtbase-native_git.bb
index cc537b5b..1bcbd1cb 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase-native_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase-native_git.bb
@@ -10,15 +10,15 @@ LIC_FILES_CHKSUM = " \
file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \
file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \
file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \
- file://LICENSE.QT-LICENSE-AGREEMENT-4.0;md5=948f8877345cd66106f11031977a4625 \
+ file://LICENSE.QT-LICENSE-AGREEMENT;md5=c8b6dd132d52c6e5a545df07a4e3e283 \
"
require qt5-native.inc
require qt5-git.inc
# common for qtbase-native, qtbase-nativesdk and qtbase
-# Patches from https://github.com/meta-qt5/qtbase/commits/b5.11-shared
-# 5.11.meta-qt5-shared.14
+# Patches from https://github.com/meta-qt5/qtbase/commits/b5.14-shared
+# 5.14.meta-qt5-shared.2
SRC_URI += "\
file://0001-Add-linux-oe-g-platform.patch \
file://0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch \
@@ -32,26 +32,24 @@ SRC_URI += "\
file://0010-linux-clang-Invert-conditional-for-defining-QT_SOCKL.patch \
file://0011-tst_qlocale-Enable-QT_USE_FENV-only-on-glibc.patch \
file://0012-mkspecs-common-gcc-base.conf-Use-I-instead-of-isyste.patch \
- file://0013-Upgrade-double-conversion-to-v3.0.0.patch \
- file://0014-double-conversion-support-AARCH64EB-and-arm-BE.patch \
- file://0015-Disable-ltcg-for-host_build.patch \
- file://0016-Qt5GuiConfigExtras.cmake.in-cope-with-variable-path-.patch \
- file://0017-corelib-Include-sys-types.h-for-uint32_t.patch \
- file://0018-Define-QMAKE_CXX.COMPILER_MACROS-for-clang-on-linux.patch \
- file://0019-Fix-compile-issue-with-gcc-9.patch \
+ file://0013-Disable-ltcg-for-host_build.patch \
+ file://0014-Qt5GuiConfigExtras.cmake.in-cope-with-variable-path-.patch \
+ file://0015-corelib-Include-sys-types.h-for-uint32_t.patch \
+ file://0016-Define-QMAKE_CXX.COMPILER_MACROS-for-clang-on-linux.patch \
+ file://0018-input-Make-use-of-timeval-portable-for-64bit-time_t.patch \
"
# common for qtbase-native and nativesdk-qtbase
-# Patches from https://github.com/meta-qt5/qtbase/commits/b5.11-native
-# 5.11.meta-qt5-native.14
+# Patches from https://github.com/meta-qt5/qtbase/commits/b5.14-native
+# 5.14.meta-qt5-native.2
SRC_URI += " \
- file://0020-Always-build-uic-and-qvkgen.patch \
- file://0021-Avoid-renameeat2-for-native-sdk-builds.patch \
+ file://0019-Always-build-uic-and-qvkgen.patch \
+ file://0020-Avoid-renameeat2-for-native-sdk-builds.patch \
"
# only for qtbase-native
SRC_URI += " \
- file://0022-Bootstrap-without-linkat-feature.patch \
+ file://0021-Bootstrap-without-linkat-feature.patch \
"
CLEANBROKEN = "1"
@@ -59,22 +57,25 @@ CLEANBROKEN = "1"
XPLATFORM_toolchain-clang = "linux-oe-clang"
XPLATFORM ?= "linux-oe-g++"
-PACKAGECONFIG_CONFARGS = " \
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[gui] = "-gui -qpa offscreen,-no-gui,"
+PACKAGECONFIG[imageformats] = "-qt-libpng -qt-libjpeg -gif -ico, -no-libpng -no-libjpeg -no-ico -no-gif,"
+PACKAGECONFIG[openssl] = "-openssl,-no-openssl,openssl"
+
+QT_CONFIG_FLAGS = " \
-sysroot ${STAGING_DIR_NATIVE} \
+ -L${STAGING_LIBDIR_NATIVE} \
-no-gcc-sysroot \
-system-zlib \
-qt-pcre \
- -no-libjpeg \
- -no-libpng \
- -no-gif \
+ -qt-doubleconversion \
-no-accessibility \
-no-cups \
- -no-gui \
-no-sql-mysql \
-no-sql-sqlite \
-no-sql-psql \
-no-opengl \
- -no-openssl \
+ -no-vulkan \
-no-xcb \
-no-icu \
-verbose \
@@ -99,6 +100,7 @@ PACKAGECONFIG_CONFARGS = " \
-no-rpath \
-no-feature-linkat \
-platform ${XPLATFORM} \
+ ${PACKAGECONFIG_CONFARGS} \
"
# for qtbase configuration we need default settings
@@ -114,7 +116,7 @@ do_configure_prepend() {
# Avoid qmake error "Cannot read [...]/usr/lib/qt5/mkspecs/oe-device-extra.pri: No such file or directory"
touch ${S}/mkspecs/oe-device-extra.pri
- MAKEFLAGS="${PARALLEL_MAKE}" ${S}/configure -${QT_EDITION} -confirm-license ${PACKAGECONFIG_CONFARGS} || die "Configuring qt failed. PACKAGECONFIG_CONFARGS was ${PACKAGECONFIG_CONFARGS}"
+ MAKEFLAGS="${PARALLEL_MAKE}" ${S}/configure -${QT_EDITION} -confirm-license ${QT_CONFIG_FLAGS} || die "Configuring qt failed. QT_CONFIG_FLAGS was ${QT_CONFIG_FLAGS}"
}
do_install() {
@@ -135,11 +137,9 @@ do_install() {
done
fi
- install -m 755 ${B}/bin/qfloat16-tables ${D}${OE_QMAKE_PATH_BINS}
-
# since 5.9.2 something sets a very strange path to mkspec ("${_qt5Core_install_prefix}/../../../../../../../../../../usr/lib/qt5//mkspecs/linux-oe-g++")
# override this until somebody finds a better way
echo 'set(_qt5_corelib_extra_includes "${_qt5Core_install_prefix}/lib${QT_DIR_NAME}/mkspecs/linux-oe-g++")' > ${D}${libdir}/cmake/Qt5Core/Qt5CoreConfigExtrasMkspecDir.cmake
}
-SRCREV = "08de243eaa007597c2bfbc97d3d14e2f821ac4be"
+SRCREV = "3a6d8df5219653b043bd642668cee193f563ec84"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch
index 7195da8f..95e236ae 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch
@@ -1,4 +1,4 @@
-From ff46b3e91a384888b299a5444adc0e9abc110d3b Mon Sep 17 00:00:00 2001
+From 0d13aba5a2ab1794bfea5a3bbf2096da17f0cae1 Mon Sep 17 00:00:00 2001
From: Martin Jansa <Martin.Jansa@gmail.com>
Date: Mon, 15 Apr 2013 04:29:32 +0200
Subject: [PATCH] Add linux-oe-g++ platform
@@ -24,17 +24,17 @@ Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
mkspecs/features/configure.prf | 4 +--
mkspecs/features/qt.prf | 6 ++---
mkspecs/features/qt_functions.prf | 2 +-
- mkspecs/linux-oe-g++/qmake.conf | 40 ++++++++++++++++++++++++++++
+ mkspecs/linux-oe-g++/qmake.conf | 39 ++++++++++++++++++++++++++++
mkspecs/linux-oe-g++/qplatformdefs.h | 1 +
- 6 files changed, 48 insertions(+), 7 deletions(-)
+ 6 files changed, 47 insertions(+), 7 deletions(-)
create mode 100644 mkspecs/linux-oe-g++/qmake.conf
create mode 100644 mkspecs/linux-oe-g++/qplatformdefs.h
diff --git a/configure b/configure
-index 2830a1b189..6445dc2d5a 100755
+index 6657870e4b..2f5d9a21ef 100755
--- a/configure
+++ b/configure
-@@ -712,7 +712,7 @@ fi
+@@ -711,7 +711,7 @@ fi
# is where the resulting variable is written to
setBootstrapVariable()
{
@@ -65,19 +65,19 @@ index 934a18a924..0f5b1b6333 100644
msg = "test $$1 succeeded"
write_file($$QMAKE_CONFIG_LOG, msg, append)
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf
-index b57afcf72d..afa1c39b3e 100644
+index 3a71376029..dd6020f1fe 100644
--- a/mkspecs/features/qt.prf
+++ b/mkspecs/features/qt.prf
-@@ -147,7 +147,7 @@ import_plugins:qtConfig(static) {
- !isEmpty(plug_type) {
+@@ -148,7 +148,7 @@ import_plugins:qtConfig(static) {
+ plug_name = $$QMAKE_PREFIX_STATICLIB$${plug}$$qtPlatformTargetSuffix().$$QMAKE_EXTENSION_STATICLIB
plug_path = $$eval(QT_PLUGIN.$${plug}.PATH)
isEmpty(plug_path): \
- plug_path = $$[QT_INSTALL_PLUGINS/get]
+ plug_path = $$[QT_INSTALL_PLUGINS]
- LIBS += -L$$plug_path/$$plug_type
- }
- LIBS += -l$${plug}$$qtPlatformTargetSuffix()
-@@ -298,8 +298,8 @@ for(ever) {
+ LIBS += $$plug_path/$$plug_type/$$plug_name
+ } else {
+ LIBS += -l$${plug}$$qtPlatformTargetSuffix()
+@@ -271,8 +271,8 @@ for(ever) {
# static builds: link qml import plugins into the target.
contains(all_qt_module_deps, qml): \
qtConfig(static):import_plugins:!host_build:!no_import_scan {
@@ -89,10 +89,10 @@ index b57afcf72d..afa1c39b3e 100644
# run qmlimportscanner
qtPrepareTool(QMLIMPORTSCANNER, qmlimportscanner, , system)
diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
-index 1903e509c8..c093dd4592 100644
+index 7777e615bd..8d792fa70a 100644
--- a/mkspecs/features/qt_functions.prf
+++ b/mkspecs/features/qt_functions.prf
-@@ -69,7 +69,7 @@ defineTest(qtHaveModule) {
+@@ -87,7 +87,7 @@ defineTest(qtHaveModule) {
defineTest(qtPrepareTool) {
cmd = $$eval(QT_TOOL.$${2}.binary)
isEmpty(cmd) {
@@ -103,10 +103,10 @@ index 1903e509c8..c093dd4592 100644
cmd = perl -w $$system_path($${cmd}.pl)
diff --git a/mkspecs/linux-oe-g++/qmake.conf b/mkspecs/linux-oe-g++/qmake.conf
new file mode 100644
-index 0000000000..f34a66599a
+index 0000000000..c202c47fa1
--- /dev/null
+++ b/mkspecs/linux-oe-g++/qmake.conf
-@@ -0,0 +1,40 @@
+@@ -0,0 +1,39 @@
+#
+# qmake configuration for linux-g++ with modifications for building with OpenEmbedded
+#
@@ -131,7 +131,6 @@ index 0000000000..f34a66599a
+include(../common/g++-unix.conf)
+
+# tc settings from g++-base.conf
-+QMAKE_COMPILER = $$(OE_QMAKE_COMPILER) gcc
+QMAKE_CC = $$(OE_QMAKE_CC)
+QMAKE_CXX = $$(OE_QMAKE_CXX)
+
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch
index 9766d50b..be51019d 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch
@@ -1,4 +1,4 @@
-From 2592ce6190596219428eb5e500c3a5f5a14dad01 Mon Sep 17 00:00:00 2001
+From 8409ffc14e5176595c7d591ebd07f5b49af8d245 Mon Sep 17 00:00:00 2001
From: Martin Jansa <Martin.Jansa@gmail.com>
Date: Sat, 6 Apr 2013 13:15:07 +0200
Subject: [PATCH] cmake: Use OE_QMAKE_PATH_EXTERNAL_HOST_BINS
@@ -19,7 +19,7 @@ Change-Id: Iacaa1c5531cd6dcc094891610c351673db55d7b2
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/corelib/Qt5CoreConfigExtras.cmake.in b/src/corelib/Qt5CoreConfigExtras.cmake.in
-index e0652fdcf9..215f4357f8 100644
+index 9b672327ef..f0820b4f4e 100644
--- a/src/corelib/Qt5CoreConfigExtras.cmake.in
+++ b/src/corelib/Qt5CoreConfigExtras.cmake.in
@@ -5,7 +5,7 @@ if (NOT TARGET Qt5::qmake)
@@ -27,7 +27,7 @@ index e0652fdcf9..215f4357f8 100644
set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\")
!!ELSE
- set(imported_location \"$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\")
-+ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qmake$$CMAKE_BIN_SUFFIX\")
++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qmake${OE_QMAKE_BIN_SUFFIX}\")
!!ENDIF
_qt5_Core_check_file_exists(${imported_location})
@@ -36,7 +36,7 @@ index e0652fdcf9..215f4357f8 100644
set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\")
!!ELSE
- set(imported_location \"$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\")
-+ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/moc$$CMAKE_BIN_SUFFIX\")
++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/moc${OE_QMAKE_BIN_SUFFIX}\")
!!ENDIF
_qt5_Core_check_file_exists(${imported_location})
@@ -45,12 +45,12 @@ index e0652fdcf9..215f4357f8 100644
set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\")
!!ELSE
- set(imported_location \"$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\")
-+ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/rcc$$CMAKE_BIN_SUFFIX\")
++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/rcc${OE_QMAKE_BIN_SUFFIX}\")
!!ENDIF
_qt5_Core_check_file_exists(${imported_location})
diff --git a/src/dbus/Qt5DBusConfigExtras.cmake.in b/src/dbus/Qt5DBusConfigExtras.cmake.in
-index 1d947159e2..301af8f1b2 100644
+index 1d947159e2..582c52169e 100644
--- a/src/dbus/Qt5DBusConfigExtras.cmake.in
+++ b/src/dbus/Qt5DBusConfigExtras.cmake.in
@@ -5,7 +5,7 @@ if (NOT TARGET Qt5::qdbuscpp2xml)
@@ -58,7 +58,7 @@ index 1d947159e2..301af8f1b2 100644
set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\")
!!ELSE
- set(imported_location \"$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\")
-+ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qdbuscpp2xml$$CMAKE_BIN_SUFFIX\")
++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qdbuscpp2xml${OE_QMAKE_BIN_SUFFIX}\")
!!ENDIF
_qt5_DBus_check_file_exists(${imported_location})
@@ -67,12 +67,12 @@ index 1d947159e2..301af8f1b2 100644
set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\")
!!ELSE
- set(imported_location \"$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\")
-+ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qdbusxml2cpp$$CMAKE_BIN_SUFFIX\")
++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qdbusxml2cpp${OE_QMAKE_BIN_SUFFIX}\")
!!ENDIF
_qt5_DBus_check_file_exists(${imported_location})
diff --git a/src/widgets/Qt5WidgetsConfigExtras.cmake.in b/src/widgets/Qt5WidgetsConfigExtras.cmake.in
-index 99d87e2e46..5621dc0fae 100644
+index 99d87e2e46..8fe9b3c0b5 100644
--- a/src/widgets/Qt5WidgetsConfigExtras.cmake.in
+++ b/src/widgets/Qt5WidgetsConfigExtras.cmake.in
@@ -5,7 +5,7 @@ if (NOT TARGET Qt5::uic)
@@ -80,7 +80,7 @@ index 99d87e2e46..5621dc0fae 100644
set(imported_location \"${_qt5Widgets_install_prefix}/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\")
!!ELSE
- set(imported_location \"$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\")
-+ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/uic$$CMAKE_BIN_SUFFIX\")
++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/uic${OE_QMAKE_BIN_SUFFIX}\")
!!ENDIF
_qt5_Widgets_check_file_exists(${imported_location})
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0003-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0003-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch
index 614bdec3..6d8f5f96 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0003-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0003-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch
@@ -1,4 +1,4 @@
-From 0ce64385c882e1f7788620ba37781d89625437cb Mon Sep 17 00:00:00 2001
+From 73c6762cc7d4c3449fc152f706c8d0efa2f7e65e Mon Sep 17 00:00:00 2001
From: Holger Freyther <zecke@selfish.org>
Date: Wed, 26 Sep 2012 17:22:30 +0200
Subject: [PATCH] qlibraryinfo: allow to set qt.conf from the outside using the
@@ -20,10 +20,10 @@ Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
-index e727f00c8e..819dbb8aa3 100644
+index f0f77fe68e..8ef04cb64f 100644
--- a/src/corelib/global/qlibraryinfo.cpp
+++ b/src/corelib/global/qlibraryinfo.cpp
-@@ -172,7 +172,10 @@ void QLibrarySettings::load()
+@@ -183,7 +183,10 @@ void QLibrarySettings::load()
QSettings *QLibraryInfoPrivate::findConfiguration()
{
#ifdef QT_BUILD_QMAKE
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0004-configure-bump-path-length-from-256-to-512-character.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0004-configure-bump-path-length-from-256-to-512-character.patch
index d97bc569..a40c0563 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0004-configure-bump-path-length-from-256-to-512-character.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0004-configure-bump-path-length-from-256-to-512-character.patch
@@ -1,4 +1,4 @@
-From 9858c07dd25d523f8e02b348c21e57c95077e108 Mon Sep 17 00:00:00 2001
+From fad25d26b6ec478d0b22bc4fbfec65a6665608c0 Mon Sep 17 00:00:00 2001
From: Denys Dmytriyenko <denys@ti.com>
Date: Tue, 25 Aug 2015 10:05:15 -0400
Subject: [PATCH] configure: bump path length from 256 to 512 characters
@@ -15,12 +15,12 @@ Signed-off-by: Denys Dmytriyenko <denys@ti.com>
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/configure.pri b/configure.pri
-index 6e7f6b76a4..35d15685ee 100644
+index 81c84b28ef..bf40b68835 100644
--- a/configure.pri
+++ b/configure.pri
-@@ -821,10 +821,10 @@ defineTest(qtConfOutput_preparePaths) {
- "static const char qt_configure_installation [12+11] = \"qt_instdate=2012-12-20\";" \
- "" \
+@@ -872,10 +872,10 @@ defineTest(qtConfOutput_preparePaths) {
+
+ $${currentConfig}.output.qconfigSource = \
"/* Installation Info */" \
- "static const char qt_configure_prefix_path_str [12+256] = \"qt_prfxpath=$$config.input.prefix\";" \
+ "static const char qt_configure_prefix_path_str [12+512] = \"qt_prfxpath=$$config.input.prefix\";" \
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0005-Disable-all-unknown-features-instead-of-erroring-out.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0005-Disable-all-unknown-features-instead-of-erroring-out.patch
index 6e5aa3e1..b8a0b716 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0005-Disable-all-unknown-features-instead-of-erroring-out.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0005-Disable-all-unknown-features-instead-of-erroring-out.patch
@@ -1,4 +1,4 @@
-From 374bf57efe5f936ab61811f7c433c870cdae77ab Mon Sep 17 00:00:00 2001
+From 24c469b3c9599aa106c44d1df48fb04db5b8c904 Mon Sep 17 00:00:00 2001
From: Samuli Piippo <samuli.piippo@qt.io>
Date: Mon, 24 Oct 2016 09:45:18 +0300
Subject: [PATCH] Disable all unknown features instead of erroring out
@@ -10,10 +10,10 @@ Change-Id: Ib884fe33cac74439f9592b145937f6b75ced8447
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/mkspecs/features/qt_configure.prf b/mkspecs/features/qt_configure.prf
-index 4039bba431..153edbfa30 100644
+index 6537d98c5d..06d23e3847 100644
--- a/mkspecs/features/qt_configure.prf
+++ b/mkspecs/features/qt_configure.prf
-@@ -1266,7 +1266,8 @@ defineReplace(qtConfEvaluateSingleExpression) {
+@@ -1544,7 +1544,8 @@ defineReplace(qtConfEvaluateSingleExpression) {
error("Expression '$$1' is accessing field '$$var' of non-local feature $${feature}.")
return($$result)
}
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0006-Pretend-Qt5-wasn-t-found-if-OE_QMAKE_PATH_EXTERNAL_H.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0006-Pretend-Qt5-wasn-t-found-if-OE_QMAKE_PATH_EXTERNAL_H.patch
index b8689813..95df5efd 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0006-Pretend-Qt5-wasn-t-found-if-OE_QMAKE_PATH_EXTERNAL_H.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0006-Pretend-Qt5-wasn-t-found-if-OE_QMAKE_PATH_EXTERNAL_H.patch
@@ -1,4 +1,4 @@
-From 29270c9427ad9e024ecffb94f5431c08f755925d Mon Sep 17 00:00:00 2001
+From 8143b5913e50d26ef39fbbed5f1e28ff74a57d20 Mon Sep 17 00:00:00 2001
From: Pascal Bach <pascal.bach@siemens.com>
Date: Wed, 11 May 2016 15:20:41 +0200
Subject: [PATCH] Pretend Qt5 wasn't found if OE_QMAKE_PATH_EXTERNAL_HOST_BINS
@@ -30,7 +30,7 @@ Signed-off-by: Pascal Bach <pascal.bach@siemens.com>
2 files changed, 10 insertions(+)
diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
-index 27f4c277d6..01f68a569d 100644
+index 50364765fb..e101a2e841 100644
--- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
+++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
@@ -3,6 +3,11 @@ if (CMAKE_VERSION VERSION_LESS 3.1.0)
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0007-Delete-qlonglong-and-qulonglong.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0007-Delete-qlonglong-and-qulonglong.patch
index 2b0c8c9d..d683d4d9 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0007-Delete-qlonglong-and-qulonglong.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0007-Delete-qlonglong-and-qulonglong.patch
@@ -1,4 +1,4 @@
-From c374524c31fbf11f8f2cd8d1036633f5c7507619 Mon Sep 17 00:00:00 2001
+From 41d43606a50fbeae73d585ed727ec13e36f785c0 Mon Sep 17 00:00:00 2001
From: Huang Qiyu <huangqy.fnst@cn.fujitsu.com>
Date: Wed, 7 Jun 2017 21:00:49 +0900
Subject: [PATCH] Delete qlonglong and qulonglong
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0008-Replace-pthread_yield-with-sched_yield.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0008-Replace-pthread_yield-with-sched_yield.patch
index b5cf78ec..07110739 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0008-Replace-pthread_yield-with-sched_yield.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0008-Replace-pthread_yield-with-sched_yield.patch
@@ -1,4 +1,4 @@
-From 40b0cf799c4af4ae92eebab64e91015d67e428c1 Mon Sep 17 00:00:00 2001
+From 4d8c0a0524ceea0590f15d87a4aa604a488bedc5 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 27 Jul 2017 08:02:51 -0700
Subject: [PATCH] Replace pthread_yield with sched_yield
@@ -14,10 +14,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
-index e312199980..5789174ad5 100644
+index 12c29a6e13..7d31799da6 100644
--- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
+++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
-@@ -34,7 +34,7 @@
+@@ -35,7 +35,7 @@
#include "tst_qvariant_common.h"
#ifdef Q_OS_LINUX
@@ -26,7 +26,7 @@ index e312199980..5789174ad5 100644
#endif
#include <algorithm>
-@@ -205,7 +205,7 @@ protected:
+@@ -368,7 +368,7 @@ protected:
const char *nm = name.constData();
int tp = qRegisterMetaType<Bar>(nm);
#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID)
@@ -36,7 +36,7 @@ index e312199980..5789174ad5 100644
QMetaType info(tp);
if (!info.isValid()) {
diff --git a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
-index 263a475435..11994b3c4f 100644
+index 0546c6ba7d..f602b035d6 100644
--- a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
+++ b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
@@ -78,6 +78,7 @@
@@ -47,7 +47,7 @@ index 263a475435..11994b3c4f 100644
#endif
#include "private/qhostinfo_p.h"
-@@ -2132,8 +2133,8 @@ public slots:
+@@ -2178,8 +2179,8 @@ public slots:
#if defined(Q_OS_MAC)
pthread_yield_np();
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0009-Add-OE-specific-specs-for-clang-compiler.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0009-Add-OE-specific-specs-for-clang-compiler.patch
index 144c9182..b30a823f 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0009-Add-OE-specific-specs-for-clang-compiler.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0009-Add-OE-specific-specs-for-clang-compiler.patch
@@ -1,22 +1,22 @@
-From d8c3ea974639c70d9a158d4e01c3f782133a46f8 Mon Sep 17 00:00:00 2001
+From ba7dda9ef0e33103e26fee2e41f25d8c0e3bfb78 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 3 Sep 2017 09:11:44 -0700
Subject: [PATCH] Add OE specific specs for clang compiler
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- mkspecs/linux-oe-clang/qmake.conf | 42 ++++++++++++++++++++++++++
+ mkspecs/linux-oe-clang/qmake.conf | 39 ++++++++++++++++++++++++++
mkspecs/linux-oe-clang/qplatformdefs.h | 1 +
- 2 files changed, 43 insertions(+)
+ 2 files changed, 40 insertions(+)
create mode 100644 mkspecs/linux-oe-clang/qmake.conf
create mode 100644 mkspecs/linux-oe-clang/qplatformdefs.h
diff --git a/mkspecs/linux-oe-clang/qmake.conf b/mkspecs/linux-oe-clang/qmake.conf
new file mode 100644
-index 0000000000..443d4b0dff
+index 0000000000..db02ab5215
--- /dev/null
+++ b/mkspecs/linux-oe-clang/qmake.conf
-@@ -0,0 +1,42 @@
+@@ -0,0 +1,39 @@
+#
+# qmake configuration for linux-g++ with modifications for building with OpenEmbedded
+#
@@ -41,12 +41,9 @@ index 0000000000..443d4b0dff
+include(../common/clang.conf)
+
+# tc settings from g++-base.conf
-+QMAKE_COMPILER = $$(OE_QMAKE_COMPILER) clang
+QMAKE_CC = $$(OE_QMAKE_CC)
+QMAKE_CXX = $$(OE_QMAKE_CXX)
+
-+QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$(OE_QMAKE_CFLAGS)
-+
+QMAKE_LINK = $$(OE_QMAKE_LINK)
+QMAKE_LINK_SHLIB = $$(OE_QMAKE_LINK)
+QMAKE_LINK_C = $$(OE_QMAKE_LINK)
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0010-linux-clang-Invert-conditional-for-defining-QT_SOCKL.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0010-linux-clang-Invert-conditional-for-defining-QT_SOCKL.patch
index 5dce2003..e58b1ebc 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0010-linux-clang-Invert-conditional-for-defining-QT_SOCKL.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0010-linux-clang-Invert-conditional-for-defining-QT_SOCKL.patch
@@ -1,4 +1,4 @@
-From 0ada7d8bec024960b2e10c9ac36f312bb0f5338c Mon Sep 17 00:00:00 2001
+From 03e57f526db46b93b2bcbd01974446b9819e73e7 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 3 Sep 2017 09:44:48 -0700
Subject: [PATCH] linux-clang: Invert conditional for defining QT_SOCKLEN_T
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0011-tst_qlocale-Enable-QT_USE_FENV-only-on-glibc.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0011-tst_qlocale-Enable-QT_USE_FENV-only-on-glibc.patch
index 935c746a..8a705415 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0011-tst_qlocale-Enable-QT_USE_FENV-only-on-glibc.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0011-tst_qlocale-Enable-QT_USE_FENV-only-on-glibc.patch
@@ -1,4 +1,4 @@
-From 0c80cc78c3ca53134a1c66824f749676fa966246 Mon Sep 17 00:00:00 2001
+From f3befb762f2e69fa1f8a444ca9b392b4cb48ba5f Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 3 Sep 2017 10:11:50 -0700
Subject: [PATCH] tst_qlocale: Enable QT_USE_FENV only on glibc
@@ -7,13 +7,13 @@ musl does not have feenableexcept function
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- tests/auto/corelib/tools/qlocale/tst_qlocale.cpp | 2 +-
+ tests/auto/corelib/text/qlocale/tst_qlocale.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
-index b7cb8a1bdc..f6e6545948 100644
---- a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
-+++ b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
+diff --git a/tests/auto/corelib/text/qlocale/tst_qlocale.cpp b/tests/auto/corelib/text/qlocale/tst_qlocale.cpp
+index 8f434acb29..53dc0d9121 100644
+--- a/tests/auto/corelib/text/qlocale/tst_qlocale.cpp
++++ b/tests/auto/corelib/text/qlocale/tst_qlocale.cpp
@@ -46,7 +46,7 @@
#include <private/qlocale_tools_p.h>
#include <qnumeric.h>
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0012-mkspecs-common-gcc-base.conf-Use-I-instead-of-isyste.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0012-mkspecs-common-gcc-base.conf-Use-I-instead-of-isyste.patch
index e894f34c..5186c2d6 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0012-mkspecs-common-gcc-base.conf-Use-I-instead-of-isyste.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0012-mkspecs-common-gcc-base.conf-Use-I-instead-of-isyste.patch
@@ -1,4 +1,4 @@
-From 2856cb239b64b7d0330bb016e080ed294f9bad3e Mon Sep 17 00:00:00 2001
+From 382e44787d366428892161881fdc3c2481cefc04 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 14 Feb 2018 17:08:43 -0800
Subject: [PATCH] mkspecs/common/gcc-base.conf: Use -I instead of -isystem
@@ -22,20 +22,20 @@ Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/mkspecs/common/clang.conf b/mkspecs/common/clang.conf
-index 0fb84bc1b3..68b49b5303 100644
+index aead581478..8e06a069b4 100644
--- a/mkspecs/common/clang.conf
+++ b/mkspecs/common/clang.conf
-@@ -16,7 +16,7 @@ QMAKE_LINK_SHLIB = $$QMAKE_CXX
- CONFIG += clang_pch_style
- QMAKE_PCH_OUTPUT_EXT = .pch
+@@ -18,7 +18,7 @@ QMAKE_PCH_OUTPUT_EXT = .pch
+
+ QMAKE_CFLAGS_OPTIMIZE_SIZE = -Oz
-QMAKE_CFLAGS_ISYSTEM = -isystem
+QMAKE_CFLAGS_ISYSTEM =
QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
QMAKE_CFLAGS_USE_PRECOMPILE = -Xclang -include-pch -Xclang ${QMAKE_PCH_OUTPUT}
- QMAKE_CFLAGS_LTCG = -flto
+ QMAKE_CFLAGS_LTCG = -flto=thin
diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf
-index 234f71d495..c7d81a902e 100644
+index 4d82321cba..0b03ec99a6 100644
--- a/mkspecs/common/gcc-base.conf
+++ b/mkspecs/common/gcc-base.conf
@@ -46,7 +46,7 @@ QMAKE_CFLAGS_DEBUG += -g
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0015-Disable-ltcg-for-host_build.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0013-Disable-ltcg-for-host_build.patch
index 7248b878..83f4e29c 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0015-Disable-ltcg-for-host_build.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0013-Disable-ltcg-for-host_build.patch
@@ -1,4 +1,4 @@
-From 8b71f94e010aa9ee0c1e577738e0a8af8365b39e Mon Sep 17 00:00:00 2001
+From 8a2c2006676b0cb1a579efabb0ab24a277024b54 Mon Sep 17 00:00:00 2001
From: Samuli Piippo <samuli.piippo@qt.io>
Date: Tue, 23 Oct 2018 09:54:57 +0300
Subject: [PATCH] Disable ltcg for host_build
@@ -15,12 +15,14 @@ Upstream-Status: Inappropriate [embedded specific]
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mkspecs/features/ltcg.prf b/mkspecs/features/ltcg.prf
-index ccf0226272..482e5b573d 100644
+index d81f340edd..dc1d196710 100644
--- a/mkspecs/features/ltcg.prf
+++ b/mkspecs/features/ltcg.prf
-@@ -1,4 +1,4 @@
--CONFIG(release, debug|release) {
-+CONFIG(release, debug|release):!host_build {
- # We need fat object files when creating static libraries on some platforms
- # so the linker will know to load a particular object from the library
- # in the first place. On others, we have special ar and nm to create the symbol
+@@ -1,6 +1,6 @@
+ static:no-static-ltcg {
+ # Static library but no-static-ltcg enabled: skip LTCG
+-} else: CONFIG(release, debug|release) {
++} else: CONFIG(release, debug|release):!host_build {
+ separate_debug_info {
+ # Evaluate single-$ variable references that have no valid value at mkspec loading time
+ QMAKE_LFLAGS_LTCG_SEPARATE_DEBUG_INFO ~= s/\\$\\{/\$\$\{/
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0013-Upgrade-double-conversion-to-v3.0.0.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0013-Upgrade-double-conversion-to-v3.0.0.patch
deleted file mode 100644
index 138d1f7f..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0013-Upgrade-double-conversion-to-v3.0.0.patch
+++ /dev/null
@@ -1,344 +0,0 @@
-From f20acf6fa22235fdaa551b0410d65627e028f4b4 Mon Sep 17 00:00:00 2001
-From: Ulf Hermann <ulf.hermann@qt.io>
-Date: Fri, 27 Apr 2018 10:38:18 +0200
-Subject: [PATCH] Upgrade double-conversion to v3.0.0
-
-This fixes their issue #41, a potential undefined behavior.
-
-We preserve the locally added "__ghs" clause as well as the _M_ARM_FP
-clause necessary for winrt in utils.h.
-
-[ChangeLog][Third-Party Code] double-conversion got updated to upstream
-version 3.0.0.
-
-Task-number: QTBUG-66561
-Change-Id: Id79125bdeeaebb61dca2e2885d3370accce9030c
-Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
-Upstream-Status: Backport
----
- src/3rdparty/double-conversion/bignum.cc | 2 +-
- src/3rdparty/double-conversion/bignum.h | 1 -
- .../double-conversion/cached-powers.cc | 5 +--
- src/3rdparty/double-conversion/diy-fp.h | 22 +++++------
- .../double-conversion/double-conversion.cc | 21 ++++++----
- src/3rdparty/double-conversion/fixed-dtoa.cc | 5 ++-
- src/3rdparty/double-conversion/ieee.h | 2 +-
- .../include/double-conversion/utils.h | 38 +++++++++++++------
- .../double-conversion/qt_attribution.json | 4 +-
- src/3rdparty/double-conversion/strtod.cc | 2 +-
- 10 files changed, 60 insertions(+), 42 deletions(-)
-
-diff --git a/src/3rdparty/double-conversion/bignum.cc b/src/3rdparty/double-conversion/bignum.cc
-index 2743d67e8d..8892de8f2a 100644
---- a/src/3rdparty/double-conversion/bignum.cc
-+++ b/src/3rdparty/double-conversion/bignum.cc
-@@ -104,7 +104,7 @@ void Bignum::AssignDecimalString(Vector<const char> value) {
- const int kMaxUint64DecimalDigits = 19;
- Zero();
- int length = value.length();
-- int pos = 0;
-+ unsigned int pos = 0;
- // Let's just say that each digit needs 4 bits.
- while (length >= kMaxUint64DecimalDigits) {
- uint64_t digits = ReadUInt64(value, pos, kMaxUint64DecimalDigits);
-diff --git a/src/3rdparty/double-conversion/bignum.h b/src/3rdparty/double-conversion/bignum.h
-index 5ec3544f57..c385f2237b 100644
---- a/src/3rdparty/double-conversion/bignum.h
-+++ b/src/3rdparty/double-conversion/bignum.h
-@@ -49,7 +49,6 @@ class Bignum {
-
- void AssignPowerUInt16(uint16_t base, int exponent);
-
-- void AddUInt16(uint16_t operand);
- void AddUInt64(uint64_t operand);
- void AddBignum(const Bignum& other);
- // Precondition: this >= other.
-diff --git a/src/3rdparty/double-conversion/cached-powers.cc b/src/3rdparty/double-conversion/cached-powers.cc
-index 9536f26927..2b43f06412 100644
---- a/src/3rdparty/double-conversion/cached-powers.cc
-+++ b/src/3rdparty/double-conversion/cached-powers.cc
-@@ -131,7 +131,6 @@ static const CachedPower kCachedPowers[] = {
- {UINT64_2PART_C(0xaf87023b, 9bf0ee6b), 1066, 340},
- };
-
--static const int kCachedPowersLength = ARRAY_SIZE(kCachedPowers);
- static const int kCachedPowersOffset = 348; // -1 * the first decimal_exponent.
- static const double kD_1_LOG2_10 = 0.30102999566398114; // 1 / lg(10)
- // Difference between the decimal exponents in the table above.
-@@ -144,14 +143,12 @@ void PowersOfTenCache::GetCachedPowerForBinaryExponentRange(
- int max_exponent,
- DiyFp* power,
- int* decimal_exponent) {
-- (void)max_exponent; // Silence unused parameter warning in release builds
-- (void)kCachedPowersLength; // Silence unused parameter warning in release builds
- int kQ = DiyFp::kSignificandSize;
- double k = ceil((min_exponent + kQ - 1) * kD_1_LOG2_10);
- int foo = kCachedPowersOffset;
- int index =
- (foo + static_cast<int>(k) - 1) / kDecimalExponentDistance + 1;
-- ASSERT(0 <= index && index < kCachedPowersLength);
-+ ASSERT(0 <= index && index < static_cast<int>(ARRAY_SIZE(kCachedPowers)));
- CachedPower cached_power = kCachedPowers[index];
- ASSERT(min_exponent <= cached_power.binary_exponent);
- (void) max_exponent; // Mark variable as used.
-diff --git a/src/3rdparty/double-conversion/diy-fp.h b/src/3rdparty/double-conversion/diy-fp.h
-index 9dcf8fbdba..2edf34674e 100644
---- a/src/3rdparty/double-conversion/diy-fp.h
-+++ b/src/3rdparty/double-conversion/diy-fp.h
-@@ -42,7 +42,7 @@ class DiyFp {
- static const int kSignificandSize = 64;
-
- DiyFp() : f_(0), e_(0) {}
-- DiyFp(uint64_t f, int e) : f_(f), e_(e) {}
-+ DiyFp(uint64_t significand, int exponent) : f_(significand), e_(exponent) {}
-
- // this = this - other.
- // The exponents of both numbers must be the same and the significand of this
-@@ -76,22 +76,22 @@ class DiyFp {
-
- void Normalize() {
- ASSERT(f_ != 0);
-- uint64_t f = f_;
-- int e = e_;
-+ uint64_t significand = f_;
-+ int exponent = e_;
-
- // This method is mainly called for normalizing boundaries. In general
- // boundaries need to be shifted by 10 bits. We thus optimize for this case.
- const uint64_t k10MSBits = UINT64_2PART_C(0xFFC00000, 00000000);
-- while ((f & k10MSBits) == 0) {
-- f <<= 10;
-- e -= 10;
-+ while ((significand & k10MSBits) == 0) {
-+ significand <<= 10;
-+ exponent -= 10;
- }
-- while ((f & kUint64MSB) == 0) {
-- f <<= 1;
-- e--;
-+ while ((significand & kUint64MSB) == 0) {
-+ significand <<= 1;
-+ exponent--;
- }
-- f_ = f;
-- e_ = e;
-+ f_ = significand;
-+ e_ = exponent;
- }
-
- static DiyFp Normalize(const DiyFp& a) {
-diff --git a/src/3rdparty/double-conversion/double-conversion.cc b/src/3rdparty/double-conversion/double-conversion.cc
-index 909985be82..6f21a0124c 100644
---- a/src/3rdparty/double-conversion/double-conversion.cc
-+++ b/src/3rdparty/double-conversion/double-conversion.cc
-@@ -118,7 +118,7 @@ void DoubleToStringConverter::CreateDecimalRepresentation(
- StringBuilder* result_builder) const {
- // Create a representation that is padded with zeros if needed.
- if (decimal_point <= 0) {
-- // "0.00000decimal_rep".
-+ // "0.00000decimal_rep" or "0.000decimal_rep00".
- result_builder->AddCharacter('0');
- if (digits_after_point > 0) {
- result_builder->AddCharacter('.');
-@@ -129,7 +129,7 @@ void DoubleToStringConverter::CreateDecimalRepresentation(
- result_builder->AddPadding('0', remaining_digits);
- }
- } else if (decimal_point >= length) {
-- // "decimal_rep0000.00000" or "decimal_rep.0000"
-+ // "decimal_rep0000.00000" or "decimal_rep.0000".
- result_builder->AddSubstring(decimal_digits, length);
- result_builder->AddPadding('0', decimal_point - length);
- if (digits_after_point > 0) {
-@@ -137,7 +137,7 @@ void DoubleToStringConverter::CreateDecimalRepresentation(
- result_builder->AddPadding('0', digits_after_point);
- }
- } else {
-- // "decima.l_rep000"
-+ // "decima.l_rep000".
- ASSERT(digits_after_point > 0);
- result_builder->AddSubstring(decimal_digits, decimal_point);
- result_builder->AddCharacter('.');
-@@ -494,10 +494,17 @@ static double SignedZero(bool sign) {
- // because it constant-propagated the radix and concluded that the last
- // condition was always true. By moving it into a separate function the
- // compiler wouldn't warn anymore.
-+#if _MSC_VER
-+#pragma optimize("",off)
- static bool IsDecimalDigitForRadix(int c, int radix) {
- return '0' <= c && c <= '9' && (c - '0') < radix;
- }
--
-+#pragma optimize("",on)
-+#else
-+static bool inline IsDecimalDigitForRadix(int c, int radix) {
-+ return '0' <= c && c <= '9' && (c - '0') < radix;
-+}
-+#endif
- // Returns true if 'c' is a character digit that is valid for the given radix.
- // The 'a_character' should be 'a' or 'A'.
- //
-@@ -852,9 +859,9 @@ double StringToDoubleConverter::StringToIeee(
- return junk_string_value_;
- }
- }
-- char sign = '+';
-+ char exponen_sign = '+';
- if (*current == '+' || *current == '-') {
-- sign = static_cast<char>(*current);
-+ exponen_sign = static_cast<char>(*current);
- ++current;
- if (current == end) {
- if (allow_trailing_junk) {
-@@ -888,7 +895,7 @@ double StringToDoubleConverter::StringToIeee(
- ++current;
- } while (current != end && *current >= '0' && *current <= '9');
-
-- exponent += (sign == '-' ? -num : num);
-+ exponent += (exponen_sign == '-' ? -num : num);
- }
-
- if (!(allow_trailing_spaces || allow_trailing_junk) && (current != end)) {
-diff --git a/src/3rdparty/double-conversion/fixed-dtoa.cc b/src/3rdparty/double-conversion/fixed-dtoa.cc
-index aef65fdc21..0f55a0b6eb 100644
---- a/src/3rdparty/double-conversion/fixed-dtoa.cc
-+++ b/src/3rdparty/double-conversion/fixed-dtoa.cc
-@@ -98,7 +98,7 @@ class UInt128 {
- return high_bits_ == 0 && low_bits_ == 0;
- }
-
-- int BitAt(int position) {
-+ int BitAt(int position) const {
- if (position >= 64) {
- return static_cast<int>(high_bits_ >> (position - 64)) & 1;
- } else {
-@@ -259,7 +259,8 @@ static void FillFractionals(uint64_t fractionals, int exponent,
- fractionals -= static_cast<uint64_t>(digit) << point;
- }
- // If the first bit after the point is set we have to round up.
-- if (((fractionals >> (point - 1)) & 1) == 1) {
-+ ASSERT(fractionals == 0 || point - 1 >= 0);
-+ if ((fractionals != 0) && ((fractionals >> (point - 1)) & 1) == 1) {
- RoundUp(buffer, length, decimal_point);
- }
- } else { // We need 128 bits.
-diff --git a/src/3rdparty/double-conversion/ieee.h b/src/3rdparty/double-conversion/ieee.h
-index 661141d1a8..b14cf4f717 100644
---- a/src/3rdparty/double-conversion/ieee.h
-+++ b/src/3rdparty/double-conversion/ieee.h
-@@ -99,7 +99,7 @@ class Double {
- }
-
- double PreviousDouble() const {
-- if (d64_ == (kInfinity | kSignMask)) return -Double::Infinity();
-+ if (d64_ == (kInfinity | kSignMask)) return -Infinity();
- if (Sign() < 0) {
- return Double(d64_ + 1).value();
- } else {
-diff --git a/src/3rdparty/double-conversion/include/double-conversion/utils.h b/src/3rdparty/double-conversion/include/double-conversion/utils.h
-index 20bfd36c84..ca7646d817 100644
---- a/src/3rdparty/double-conversion/include/double-conversion/utils.h
-+++ b/src/3rdparty/double-conversion/include/double-conversion/utils.h
-@@ -33,19 +33,29 @@
-
- #include <assert.h>
- #ifndef ASSERT
--# if defined(WINCE) || defined(_WIN32_WCE)
--# define ASSERT(condition)
--# else
--# define ASSERT(condition) \
-+#define ASSERT(condition) \
- assert(condition);
--# endif
- #endif
- #ifndef UNIMPLEMENTED
--# define UNIMPLEMENTED() (exit(-1))
-+#define UNIMPLEMENTED() (abort())
-+#endif
-+#ifndef DOUBLE_CONVERSION_NO_RETURN
-+#ifdef _MSC_VER
-+#define DOUBLE_CONVERSION_NO_RETURN __declspec(noreturn)
-+#else
-+#define DOUBLE_CONVERSION_NO_RETURN __attribute__((noreturn))
-+#endif
- #endif
- #ifndef UNREACHABLE
--# define UNREACHABLE() (exit(-1))
-+#ifdef _MSC_VER
-+void DOUBLE_CONVERSION_NO_RETURN abort_noreturn();
-+inline void abort_noreturn() { abort(); }
-+#define UNREACHABLE() (abort_noreturn())
-+#else
-+#define UNREACHABLE() (abort())
- #endif
-+#endif
-+
-
- // Double operations detection based on target architecture.
- // Linux uses a 80bit wide floating point stack on x86. This induces double
-@@ -62,11 +72,15 @@
- defined(__hppa__) || defined(__ia64__) || \
- defined(__mips__) || \
- defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \
-+ defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \
- defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
- defined(__SH4__) || defined(__alpha__) || \
- defined(_MIPS_ARCH_MIPS32R2) || \
-- defined(__AARCH64EL__)
-+ defined(__AARCH64EL__) || defined(__aarch64__) || \
-+ defined(__riscv)
- #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
-+#elif defined(__mc68000__)
-+#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS
- #elif defined(_M_IX86) || defined(__i386__) || defined(__i386)
- #if defined(_WIN32)
- // Windows uses a 64bit wide floating point stack.
-@@ -172,8 +186,8 @@ template <typename T>
- class Vector {
- public:
- Vector() : start_(NULL), length_(0) {}
-- Vector(T* data, int length) : start_(data), length_(length) {
-- ASSERT(length == 0 || (length > 0 && data != NULL));
-+ Vector(T* data, int len) : start_(data), length_(len) {
-+ ASSERT(len == 0 || (len > 0 && data != NULL));
- }
-
- // Returns a vector using the same backing storage as this one,
-@@ -215,8 +229,8 @@ class Vector {
- // buffer bounds on all operations in debug mode.
- class StringBuilder {
- public:
-- StringBuilder(char* buffer, int size)
-- : buffer_(buffer, size), position_(0) { }
-+ StringBuilder(char* buffer, int buffer_size)
-+ : buffer_(buffer, buffer_size), position_(0) { }
-
- ~StringBuilder() { if (!is_finalized()) Finalize(); }
-
-diff --git a/src/3rdparty/double-conversion/qt_attribution.json b/src/3rdparty/double-conversion/qt_attribution.json
-index 92118ac779..d41a7ef332 100644
---- a/src/3rdparty/double-conversion/qt_attribution.json
-+++ b/src/3rdparty/double-conversion/qt_attribution.json
-@@ -5,8 +5,8 @@
- "QtUsage": "Used in Qt Core. Configure with -system-doubleconversion or -no-doubleconversion to avoid.",
-
- "Homepage": "https://github.com/google/double-conversion",
-- "Version": "2.0.1",
-- "DownloadLocation": "https://github.com/google/double-conversion/commit/2fb03de56faa32bbba5e02222528e7b760f71d77",
-+ "Version": "3.0.0",
-+ "DownloadLocation": "https://github.com/google/double-conversion/commit/ca220cbafa83ca706f028bfbb5adc7eb2f1f90e1",
- "License": "BSD 3-clause \"New\" or \"Revised\" License",
- "LicenseId": "BSD-3-Clause",
- "LicenseFile": "LICENSE",
-diff --git a/src/3rdparty/double-conversion/strtod.cc b/src/3rdparty/double-conversion/strtod.cc
-index 34717562bd..17abcbb2a5 100644
---- a/src/3rdparty/double-conversion/strtod.cc
-+++ b/src/3rdparty/double-conversion/strtod.cc
-@@ -286,7 +286,7 @@ static bool DiyFpStrtod(Vector<const char> buffer,
- const int kDenominator = 1 << kDenominatorLog;
- // Move the remaining decimals into the exponent.
- exponent += remaining_decimals;
-- int error = (remaining_decimals == 0 ? 0 : kDenominator / 2);
-+ uint64_t error = (remaining_decimals == 0 ? 0 : kDenominator / 2);
-
- int old_e = input.e();
- input.Normalize();
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0016-Qt5GuiConfigExtras.cmake.in-cope-with-variable-path-.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0014-Qt5GuiConfigExtras.cmake.in-cope-with-variable-path-.patch
index 921ca25f..f9993f51 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0016-Qt5GuiConfigExtras.cmake.in-cope-with-variable-path-.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0014-Qt5GuiConfigExtras.cmake.in-cope-with-variable-path-.patch
@@ -1,4 +1,4 @@
-From bf8555d48d2402e7ed60f1f4232270d24623e088 Mon Sep 17 00:00:00 2001
+From 73b4276844b4fadc42375f713b51031b5c7c15b1 Mon Sep 17 00:00:00 2001
From: Max Krummenacher <max.krummenacher@toradex.com>
Date: Sat, 27 Oct 2018 12:29:31 +0000
Subject: [PATCH] Qt5GuiConfigExtras.cmake.in: cope with variable path to
@@ -19,7 +19,7 @@ Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
1 file changed, 8 insertions(+), 14 deletions(-)
diff --git a/src/gui/Qt5GuiConfigExtras.cmake.in b/src/gui/Qt5GuiConfigExtras.cmake.in
-index 07869efd7d..671aa82167 100644
+index 84dbbfebd4..ad6956d814 100644
--- a/src/gui/Qt5GuiConfigExtras.cmake.in
+++ b/src/gui/Qt5GuiConfigExtras.cmake.in
@@ -75,21 +75,15 @@ unset(_qt5gui_OPENGL_INCLUDE_DIR CACHE)
@@ -48,9 +48,9 @@ index 07869efd7d..671aa82167 100644
-!!ENDIF
+
foreach(_lib ${Libs})
- string(REGEX REPLACE "[^_A-Za-z0-9]" "_" _cmake_lib_name ${_lib})
- if (NOT TARGET Qt5::Gui_${_cmake_lib_name} AND NOT _Qt5Gui_${_cmake_lib_name}_LIBRARY_DONE)
-@@ -158,11 +152,11 @@ endmacro()
+ if (IS_ABSOLUTE ${_lib})
+ get_filename_component(_libFile ${_lib} NAME_WE)
+@@ -171,11 +165,11 @@ endmacro()
!!IF !isEmpty(CMAKE_EGL_LIBS)
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0014-double-conversion-support-AARCH64EB-and-arm-BE.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0014-double-conversion-support-AARCH64EB-and-arm-BE.patch
deleted file mode 100644
index 5212f7dd..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0014-double-conversion-support-AARCH64EB-and-arm-BE.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 7959088cb80f27202252f7080a4c334f3474cac7 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@cn.fujitsu.com>
-Date: Wed, 29 Aug 2018 18:20:14 +0900
-Subject: [PATCH] double-conversion: support AARCH64EB and arm BE
-
-Big endian can work well. So,
-- Make qtbase support aarch64 BE
-- Make qtbase support arm BE
-
-Upstream-Status: Pending
-
-Change-Id: Ie5b104fa2b23af8e89bae57fb56f3663be1bbb48
-Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- .../double-conversion/include/double-conversion/utils.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/3rdparty/double-conversion/include/double-conversion/utils.h b/src/3rdparty/double-conversion/include/double-conversion/utils.h
-index ca7646d817..69aa17171c 100644
---- a/src/3rdparty/double-conversion/include/double-conversion/utils.h
-+++ b/src/3rdparty/double-conversion/include/double-conversion/utils.h
-@@ -68,7 +68,7 @@ inline void abort_noreturn() { abort(); }
- // disabled.)
- // On Linux,x86 89255e-22 != Div_double(89255.0/1e22)
- #if defined(_M_X64) || defined(__x86_64__) || \
-- defined(__ARMEL__) || defined(__avr32__) || _M_ARM_FP || \
-+ defined(__arm__) || defined(__avr32__) || _M_ARM_FP || \
- defined(__hppa__) || defined(__ia64__) || \
- defined(__mips__) || \
- defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \
-@@ -76,7 +76,7 @@ inline void abort_noreturn() { abort(); }
- defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
- defined(__SH4__) || defined(__alpha__) || \
- defined(_MIPS_ARCH_MIPS32R2) || \
-- defined(__AARCH64EL__) || defined(__aarch64__) || \
-+ defined(__AARCH64EL__) || defined(__AARCH64EB__) || defined(__aarch64__) || \
- defined(__riscv)
- #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
- #elif defined(__mc68000__)
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0017-corelib-Include-sys-types.h-for-uint32_t.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0015-corelib-Include-sys-types.h-for-uint32_t.patch
index 8ee4c30d..71f4658f 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0017-corelib-Include-sys-types.h-for-uint32_t.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0015-corelib-Include-sys-types.h-for-uint32_t.patch
@@ -1,4 +1,4 @@
-From 206fb0ffdcbd2ae2278f37d8cfe5c16301312c58 Mon Sep 17 00:00:00 2001
+From 3a147b314b96a3f2bd7ded41a9c5fe685985fa29 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 6 Dec 2018 11:47:52 -0800
Subject: [PATCH] corelib: Include sys/types.h for uint32_t
@@ -14,7 +14,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+)
diff --git a/src/corelib/global/qnumeric_p.h b/src/corelib/global/qnumeric_p.h
-index 5f8a124bcc..fe1711cf1b 100644
+index 7418579fe0..aba29de499 100644
--- a/src/corelib/global/qnumeric_p.h
+++ b/src/corelib/global/qnumeric_p.h
@@ -55,6 +55,7 @@
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0018-Define-QMAKE_CXX.COMPILER_MACROS-for-clang-on-linux.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0016-Define-QMAKE_CXX.COMPILER_MACROS-for-clang-on-linux.patch
index 182f8b6f..a893d90d 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0018-Define-QMAKE_CXX.COMPILER_MACROS-for-clang-on-linux.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0016-Define-QMAKE_CXX.COMPILER_MACROS-for-clang-on-linux.patch
@@ -1,4 +1,4 @@
-From c72e38a57ff13ded19fcc22c5abba1a69ba84040 Mon Sep 17 00:00:00 2001
+From 90f1d71d609495ba305d052017df4d3fb801401c Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 6 Dec 2018 15:06:20 -0800
Subject: [PATCH] Define QMAKE_CXX.COMPILER_MACROS for clang on linux
@@ -13,10 +13,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 9 insertions(+)
diff --git a/mkspecs/features/toolchain.prf b/mkspecs/features/toolchain.prf
-index fdf3d1cdd3..6ecfd391f6 100644
+index 03612e5689..f227e0772e 100644
--- a/mkspecs/features/toolchain.prf
+++ b/mkspecs/features/toolchain.prf
-@@ -180,6 +180,13 @@ defineReplace(qtVariablesFromGCC) {
+@@ -41,6 +41,13 @@ defineReplace(qtVariablesFromGCC) {
return($$ret)
}
@@ -30,12 +30,12 @@ index fdf3d1cdd3..6ecfd391f6 100644
isEmpty($${target_prefix}.COMPILER_MACROS) {
msvc {
clang_cl {
-@@ -199,6 +206,8 @@ isEmpty($${target_prefix}.COMPILER_MACROS) {
+@@ -60,6 +67,8 @@ isEmpty($${target_prefix}.COMPILER_MACROS) {
} else {
vars = $$qtVariablesFromMSVC($$QMAKE_CXX)
}
+ } else: clang {
+ vars = $$qtVariablesFromCLANG($$QMAKE_CXX, $$QMAKE_CXXFLAGS)
- } else: gcc {
+ } else: gcc|ghs {
vars = $$qtVariablesFromGCC($$QMAKE_CXX)
}
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0018-input-Make-use-of-timeval-portable-for-64bit-time_t.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0018-input-Make-use-of-timeval-portable-for-64bit-time_t.patch
new file mode 100644
index 00000000..b0de9c26
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0018-input-Make-use-of-timeval-portable-for-64bit-time_t.patch
@@ -0,0 +1,70 @@
+From 54328b4942eb8cc884bdf41d58f2408a60ea7605 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Nov 2019 08:27:39 -0800
+Subject: [PATCH] input: Make use of timeval portable for 64bit time_t
+
+This patch avoids using time field of input_event structure which is not available
+on 32bit arches supporting 64bit time_t structs, Patch makes it compatible with new
+and keeps old input.h implementation functional as well.
+
+See https://sourceware.org/glibc/wiki/Y2038ProofnessDesign
+Upstream-Status: Submitted [https://codereview.qt-project.org/c/qt/qtbase/+/282610]
+Change-Id: Ie4d66a5e7d83065f1a904a542c711431e1d20845
+---
+ .../input/evdevkeyboard/qevdevkeyboardhandler.cpp | 10 +++++++++-
+ .../input/evdevtouch/qevdevtouchhandler.cpp | 7 ++++++-
+ 2 files changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp b/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp
+index 3555763b89..e7dc57c027 100644
+--- a/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp
++++ b/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp
+@@ -58,6 +58,11 @@
+ #include <linux/input.h>
+ #endif
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ QT_BEGIN_NAMESPACE
+
+ Q_LOGGING_CATEGORY(qLcEvdevKey, "qt.qpa.input")
+@@ -150,7 +155,10 @@ void QEvdevKeyboardHandler::switchLed(int led, bool state)
+ qCDebug(qLcEvdevKey, "switchLed %d %d", led, int(state));
+
+ struct ::input_event led_ie;
+- ::gettimeofday(&led_ie.time, 0);
++ struct timeval tval;
++ ::gettimeofday(&tval, 0);
++ led_ie.input_event_sec = tval.tv_sec;
++ led_ie.input_event_usec = tval.tv_usec;
+ led_ie.type = EV_LED;
+ led_ie.code = led;
+ led_ie.value = state;
+diff --git a/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp b/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp
+index c51db59e1f..1f3726e291 100644
+--- a/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp
++++ b/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp
+@@ -58,6 +58,11 @@
+ #include <linux/input.h>
+ #endif
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ #include <math.h>
+
+ #if QT_CONFIG(mtdev)
+@@ -576,7 +581,7 @@ void QEvdevTouchScreenData::processInputEvent(input_event *data)
+
+ // update timestamps
+ m_lastTimeStamp = m_timeStamp;
+- m_timeStamp = data->time.tv_sec + data->time.tv_usec / 1000000.0;
++ m_timeStamp = data->input_event_sec + data->input_event_usec / 1000000.0;
+
+ m_lastTouchPoints = m_touchPoints;
+ m_touchPoints.clear();
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0020-Always-build-uic-and-qvkgen.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0019-Always-build-uic-and-qvkgen.patch
index e1555335..e7a6d67a 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0020-Always-build-uic-and-qvkgen.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0019-Always-build-uic-and-qvkgen.patch
@@ -1,4 +1,4 @@
-From f1564bbf2829cf1006e1d2af146c0ce27e6c1fdb Mon Sep 17 00:00:00 2001
+From 71089d2dbc2becf51e419741afb5f9e2028963e7 Mon Sep 17 00:00:00 2001
From: Martin Jansa <Martin.Jansa@gmail.com>
Date: Sat, 16 Nov 2013 00:32:30 +0100
Subject: [PATCH] Always build uic and qvkgen
@@ -14,10 +14,10 @@ Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/src.pro b/src/src.pro
-index 1c76a2e46f..fbd4014fb3 100644
+index 8ff3ec4c1f..7a26fd3596 100644
--- a/src/src.pro
+++ b/src/src.pro
-@@ -232,7 +232,7 @@ qtConfig(gui) {
+@@ -235,7 +235,7 @@ qtConfig(gui) {
}
}
}
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0019-Fix-compile-issue-with-gcc-9.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0019-Fix-compile-issue-with-gcc-9.patch
deleted file mode 100644
index e0936244..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0019-Fix-compile-issue-with-gcc-9.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 4364a8fcbcc32e37b9ccbfa833e872098f038690 Mon Sep 17 00:00:00 2001
-From: Allan Sandfeld Jensen <allan.jensen@qt.io>
-Date: Tue, 13 Nov 2018 16:00:23 +0100
-Subject: [PATCH] Fix compile issue with gcc 9
-
-It appears messenne_twisters in the latest libstdc++ has one more
-requirement before it is willing to construct with our
-SystemGenerator struct as an sseq provider.
-
-Upstream-Status: Backport from 5.12
-
-Change-Id: If38151d1fa6f40a80274acc26d9ed6b4ac6049fe
-Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
-Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- src/corelib/global/qrandom.cpp | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/corelib/global/qrandom.cpp b/src/corelib/global/qrandom.cpp
-index ebf9864b15..577736a867 100644
---- a/src/corelib/global/qrandom.cpp
-+++ b/src/corelib/global/qrandom.cpp
-@@ -218,6 +218,7 @@ struct QRandomGenerator::SystemGenerator
- #endif // Q_OS_WINRT
-
- static SystemGenerator &self();
-+ typedef quint32 result_type;
- void generate(quint32 *begin, quint32 *end) Q_DECL_NOEXCEPT_EXPR(FillBufferNoexcept);
-
- // For std::mersenne_twister_engine implementations that use something
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0021-Avoid-renameeat2-for-native-sdk-builds.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0020-Avoid-renameeat2-for-native-sdk-builds.patch
index 546e23c9..4da126d9 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0021-Avoid-renameeat2-for-native-sdk-builds.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0020-Avoid-renameeat2-for-native-sdk-builds.patch
@@ -1,4 +1,4 @@
-From d8b2572813019c7e196cc2a66d7993acbb2d4617 Mon Sep 17 00:00:00 2001
+From cbf26740eca4972824e74acbb8ca5ccb3cdde9b7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
Date: Sun, 14 Apr 2019 13:27:58 +0200
Subject: [PATCH] Avoid renameeat2 for native(sdk) builds
@@ -24,10 +24,10 @@ Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
2 files changed, 2 insertions(+), 12 deletions(-)
diff --git a/src/corelib/global/qconfig-bootstrapped.h b/src/corelib/global/qconfig-bootstrapped.h
-index 229b4d17a1..4e2d43ffc5 100644
+index c6f071bc3f..575c993e68 100644
--- a/src/corelib/global/qconfig-bootstrapped.h
+++ b/src/corelib/global/qconfig-bootstrapped.h
-@@ -100,14 +100,14 @@
+@@ -104,7 +104,7 @@
#define QT_FEATURE_process -1
#define QT_FEATURE_regularexpression -1
#ifdef __GLIBC_PREREQ
@@ -36,7 +36,8 @@ index 229b4d17a1..4e2d43ffc5 100644
#else
# define QT_FEATURE_renameat2 -1
#endif
- #define QT_FEATURE_sharedmemory -1
+@@ -112,7 +112,7 @@
+ #define QT_FEATURE_signaling_nan -1
#define QT_FEATURE_slog2 -1
#ifdef __GLIBC_PREREQ
-# define QT_FEATURE_statx (__GLIBC_PREREQ(2, 28) ? 1 : -1)
@@ -45,12 +46,12 @@ index 229b4d17a1..4e2d43ffc5 100644
# define QT_FEATURE_statx -1
#endif
diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp
-index 964dcebeb2..fea7f29c56 100644
+index 38cb6a423d..b6d5e16464 100644
--- a/src/corelib/io/qfilesystemengine_unix.cpp
+++ b/src/corelib/io/qfilesystemengine_unix.cpp
-@@ -1252,16 +1252,6 @@ bool QFileSystemEngine::renameFile(const QFileSystemEntry &source, const QFileSy
- if (Q_UNLIKELY(srcPath.isEmpty() || tgtPath.isEmpty()))
- return emptyFileEntryWarning(), false;
+@@ -1223,16 +1223,6 @@ bool QFileSystemEngine::renameFile(const QFileSystemEntry &source, const QFileSy
+ Q_CHECK_FILE_NAME(srcPath, false);
+ Q_CHECK_FILE_NAME(tgtPath, false);
-#if defined(RENAME_NOREPLACE) && QT_CONFIG(renameat2)
- if (renameat2(AT_FDCWD, srcPath, AT_FDCWD, tgtPath, RENAME_NOREPLACE) == 0)
@@ -63,5 +64,5 @@ index 964dcebeb2..fea7f29c56 100644
- }
-#endif
#if defined(Q_OS_DARWIN) && defined(RENAME_EXCL)
- if (__builtin_available(macOS 10.12, iOS 10, tvOS 10, watchOS 3, *)) {
- if (renameatx_np(AT_FDCWD, srcPath, AT_FDCWD, tgtPath, RENAME_EXCL) == 0)
+ if (renameatx_np(AT_FDCWD, srcPath, AT_FDCWD, tgtPath, RENAME_EXCL) == 0)
+ return true;
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0022-Bootstrap-without-linkat-feature.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0021-Bootstrap-without-linkat-feature.patch
index 2fbe1265..dae48d59 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase/0022-Bootstrap-without-linkat-feature.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0021-Bootstrap-without-linkat-feature.patch
@@ -1,4 +1,4 @@
-From 86c2a65a7bfbc8163c93ef0856bb4eda442b8e70 Mon Sep 17 00:00:00 2001
+From 61a5dc7d949bc0f8ff3c4a1060c91c61187e5fb2 Mon Sep 17 00:00:00 2001
From: Samuli Piippo <samuli.piippo@qt.io>
Date: Fri, 24 Nov 2017 15:16:31 +0200
Subject: [PATCH] Bootstrap without linkat feature
@@ -13,10 +13,10 @@ Upstream-Status: Inappropriate [OE specific]
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/corelib/global/qconfig-bootstrapped.h b/src/corelib/global/qconfig-bootstrapped.h
-index 4e2d43ffc5..992a7d7443 100644
+index 575c993e68..d0c9fdfce3 100644
--- a/src/corelib/global/qconfig-bootstrapped.h
+++ b/src/corelib/global/qconfig-bootstrapped.h
-@@ -91,7 +91,7 @@
+@@ -95,7 +95,7 @@
#define QT_FEATURE_itemmodel -1
#define QT_FEATURE_library -1
#ifdef __linux__
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase/0022-tst_qpainter-FE_-macros-are-not-defined-for-every-pl.patch b/external/meta-qt5/recipes-qt/qt5/qtbase/0022-tst_qpainter-FE_-macros-are-not-defined-for-every-pl.patch
new file mode 100644
index 00000000..8aeca2ef
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase/0022-tst_qpainter-FE_-macros-are-not-defined-for-every-pl.patch
@@ -0,0 +1,123 @@
+From 9b192df7e06992b256eb49af5a213c1b0d3e341a Mon Sep 17 00:00:00 2001
+From: Nicola Lunghi <nick83ola@gmail.com>
+Date: Wed, 5 Feb 2020 15:32:25 +0000
+Subject: [PATCH] tst_qpainter: FE_ macros are not defined for every platform
+
+the FE_INEXACT, FE_UNDERFLOW, FE_OVERFLOW, FE_DIVBYZERO, FE_INVALID are defined
+only for platforms with fp engine.
+
+Signed-off-by: Nicola Lunghi <nick83ola@gmail.com>
+Upstream-Status: submitted [https://codereview.qt-project.org/c/qt/qtbase/+/289447]
+---
+ .../gui/painting/qpainter/tst_qpainter.cpp | 50 ++++++++++++++-----
+ 1 file changed, 37 insertions(+), 13 deletions(-)
+
+diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
+index 6e48439944..3566ef24be 100644
+--- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
++++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
+@@ -2890,19 +2890,43 @@ void tst_QPainter::monoImages()
+ #if !defined(Q_OS_AIX) && !defined(Q_CC_MSVC) && !defined(Q_OS_SOLARIS) && !defined(__UCLIBC__)
+ #include <fenv.h>
+
++#if defined(FE_INEXACT)
++ #define QP_FE_INEXACT (FE_INEXACT)
++#else
++ #define QP_FE_INEXACT 0
++#endif
++#if defined(FE_UNDERFLOW)
++ #define QP_FE_UNDERFLOW (FE_UNDERFLOW)
++#else
++ #define QP_FE_UNDERFLOW 0
++#endif
++#if defined(FE_OVERFLOW)
++ #define QP_FE_OVERFLOW (FE_OVERFLOW)
++#else
++ #define QP_FE_OVERFLOW 0
++#endif
++#if defined(FE_DIVBYZERO)
++ #define QP_FE_DIVBYZERO (FE_DIVBYZERO)
++#else
++ #define QP_FE_DIVBYZERO 0
++#endif
++#if defined(FE_INVALID)
++ #define QP_FE_INVALID (FE_INVALID)
++#else
++ #define QP_FE_INVALID 0
++#endif
++
+ static const QString fpeExceptionString(int exception)
+ {
+-#ifdef FE_INEXACT
+- if (exception & FE_INEXACT)
++ if (exception & QP_FE_INEXACT)
+ return QLatin1String("Inexact result");
+-#endif
+- if (exception & FE_UNDERFLOW)
++ if (exception & QP_FE_UNDERFLOW)
+ return QLatin1String("Underflow");
+- if (exception & FE_OVERFLOW)
++ if (exception & QP_FE_OVERFLOW)
+ return QLatin1String("Overflow");
+- if (exception & FE_DIVBYZERO)
++ if (exception & QP_FE_DIVBYZERO)
+ return QLatin1String("Divide by zero");
+- if (exception & FE_INVALID)
++ if (exception & QP_FE_INVALID)
+ return QLatin1String("Invalid operation");
+ return QLatin1String("No exception");
+ }
+@@ -2928,7 +2952,7 @@ private:
+
+ void fpe_rasterizeLine_task232012()
+ {
+- FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
++ FpExceptionChecker checker(QP_FE_UNDERFLOW | QP_FE_OVERFLOW | QP_FE_INVALID | QP_FE_DIVBYZERO);
+ QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
+ img.fill(0x0);
+ QPainter p(&img);
+@@ -2940,7 +2964,7 @@ void fpe_rasterizeLine_task232012()
+
+ void fpe_pixmapTransform()
+ {
+- FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
++ FpExceptionChecker checker(QP_FE_UNDERFLOW | QP_FE_OVERFLOW | QP_FE_INVALID | QP_FE_DIVBYZERO);
+
+ QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
+
+@@ -2968,7 +2992,7 @@ void fpe_pixmapTransform()
+
+ void fpe_zeroLengthLines()
+ {
+- FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
++ FpExceptionChecker checker(QP_FE_UNDERFLOW | QP_FE_OVERFLOW | QP_FE_INVALID | QP_FE_DIVBYZERO);
+
+ QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
+
+@@ -2980,7 +3004,7 @@ void fpe_zeroLengthLines()
+
+ void fpe_divByZero()
+ {
+- FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
++ FpExceptionChecker checker(QP_FE_UNDERFLOW | QP_FE_OVERFLOW | QP_FE_INVALID | QP_FE_DIVBYZERO);
+
+ QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
+
+@@ -3003,7 +3027,7 @@ void fpe_divByZero()
+
+ void fpe_steepSlopes()
+ {
+- FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
++ FpExceptionChecker checker(QP_FE_UNDERFLOW | QP_FE_OVERFLOW | QP_FE_INVALID | QP_FE_DIVBYZERO);
+
+ QImage img(1024, 1024, QImage::Format_ARGB32_Premultiplied);
+
+@@ -3022,7 +3046,7 @@ void fpe_steepSlopes()
+
+ void fpe_radialGradients()
+ {
+- FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
++ FpExceptionChecker checker(QP_FE_UNDERFLOW | QP_FE_OVERFLOW | QP_FE_INVALID | QP_FE_DIVBYZERO);
+
+ QImage img(21, 21, QImage::Format_ARGB32_Premultiplied);
+ img.fill(0);
diff --git a/external/meta-qt5/recipes-qt/qt5/qtbase_git.bb b/external/meta-qt5/recipes-qt/qt5/qtbase_git.bb
index 8ab1746a..050e6d97 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtbase_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtbase_git.bb
@@ -9,12 +9,12 @@ LIC_FILES_CHKSUM = " \
file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \
file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \
file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \
- file://LICENSE.QT-LICENSE-AGREEMENT-4.0;md5=948f8877345cd66106f11031977a4625 \
+ file://LICENSE.QT-LICENSE-AGREEMENT;md5=c8b6dd132d52c6e5a545df07a4e3e283 \
"
# common for qtbase-native, qtbase-nativesdk and qtbase
-# Patches from https://github.com/meta-qt5/qtbase/commits/b5.11-shared
-# 5.11.meta-qt5-shared.14
+# Patches from https://github.com/meta-qt5/qtbase/commits/b5.14-shared
+# 5.14.meta-qt5-shared.2
SRC_URI += "\
file://0001-Add-linux-oe-g-platform.patch \
file://0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch \
@@ -28,45 +28,21 @@ SRC_URI += "\
file://0010-linux-clang-Invert-conditional-for-defining-QT_SOCKL.patch \
file://0011-tst_qlocale-Enable-QT_USE_FENV-only-on-glibc.patch \
file://0012-mkspecs-common-gcc-base.conf-Use-I-instead-of-isyste.patch \
- file://0013-Upgrade-double-conversion-to-v3.0.0.patch \
- file://0014-double-conversion-support-AARCH64EB-and-arm-BE.patch \
- file://0015-Disable-ltcg-for-host_build.patch \
- file://0016-Qt5GuiConfigExtras.cmake.in-cope-with-variable-path-.patch \
- file://0017-corelib-Include-sys-types.h-for-uint32_t.patch \
- file://0018-Define-QMAKE_CXX.COMPILER_MACROS-for-clang-on-linux.patch \
- file://0019-Fix-compile-issue-with-gcc-9.patch \
+ file://0013-Disable-ltcg-for-host_build.patch \
+ file://0014-Qt5GuiConfigExtras.cmake.in-cope-with-variable-path-.patch \
+ file://0015-corelib-Include-sys-types.h-for-uint32_t.patch \
+ file://0016-Define-QMAKE_CXX.COMPILER_MACROS-for-clang-on-linux.patch \
+ file://0018-input-Make-use-of-timeval-portable-for-64bit-time_t.patch \
+ file://0022-tst_qpainter-FE_-macros-are-not-defined-for-every-pl.patch \
"
-
# for syncqt
RDEPENDS_${PN}-tools += "perl"
-# workaround for gold bug:
-# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=842304
-# https://sourceware.org/bugzilla/show_bug.cgi?id=21712
-# it's triggered only in combination of gold and security_flags.inc,
-# because security_flags.inc now enable pie by default.
-# Adding -no-pie or changing -fuse-ld=gold to -fuse-ld=bfd
-# works around this issue, will use -fuse-ld=bfd as it's considered
-# binutils bug.
-# OE @ ~/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/tests/auto/corelib/kernel/qmetatype $ i586-oe-linux-g++ -m32 -march=i586 --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -fuse-ld=gold -Wl,--enable-new-dtags -o tst_qmetatype .obj/tst_qmetatype.o -L/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/lib -lQt5Test -lQt5Core -lpthread
-# .obj/tst_qmetatype.o(.qtversion+0x0): error: unexpected reloc 3 against global symbol qt_version_tag without base register in object file when generating a position-independent output file
-# collect2: error: ld returned 1 exit status
-#
-# with -no-pie:
-# OE @ ~/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/tests/auto/corelib/kernel/qmetatype $ i586-oe-linux-g++ -no-pie -m32 -march=i586 --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -fuse-ld=gold -Wl,--enable-new-dtags -o tst_qmetatype .obj/tst_qmetatype.o -L/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/lib -lQt5Test -lQt5Core -lpthread
-#
-# with -fuse-ld=gold replaced with -fuse-ld=bfd:
-# OE @ ~/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/tests/auto/corelib/kernel/qmetatype $ i586-oe-linux-g++ -m32 -march=i586 --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -fuse-ld=bfd -Wl,--enable-new-dtags -o tst_qmetatype .obj/tst_qmetatype.o -L/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/lib -lQt5Test -lQt5Core -lpthread
-#
-# http://errors.yoctoproject.org/Errors/Details/150329/
-QT_CONFIG_FLAGS_GOLD_x86 = "-no-use-gold-linker"
-LDFLAGS_append_x86 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
-
# separate some parts of PACKAGECONFIG which are often changed
PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gl', 'no-opengl', d)}"
PACKAGECONFIG_FB ?= "${@bb.utils.contains('DISTRO_FEATURES', 'directfb', 'directfb', '', d)}"
-PACKAGECONFIG_X11 ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xcb xinput2 glib xkb xkbcommon-evdev', '', d)}"
+PACKAGECONFIG_X11 ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xcb xcb-xinput glib xkb xkbcommon', '', d)}"
PACKAGECONFIG_KDE ?= "${@bb.utils.contains('DISTRO_FEATURES', 'kde', 'sm cups fontconfig kms gbm libinput sql-sqlite openssl', '', d)}"
PACKAGECONFIG_FONTS ?= ""
PACKAGECONFIG_SYSTEM ?= "jpeg libpng zlib"
@@ -75,7 +51,7 @@ PACKAGECONFIG_DISTRO ?= ""
PACKAGECONFIG_RELEASE ?= "release"
# This is in qt5.inc, because qtwebkit-examples are using it to enable ca-certificates dependency
# PACKAGECONFIG_OPENSSL ?= "openssl"
-PACKAGECONFIG_DEFAULT ?= "accessibility dbus udev evdev widgets tools libs freetype tests \
+PACKAGECONFIG_DEFAULT ?= "accessibility dbus udev evdev widgets tools libs freetype tests pcre \
${@bb.utils.contains('SELECTED_OPTIMIZATION', '-Os', 'optimize-size ltcg', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'qt5-static', 'static', '', d)} \
"
@@ -129,7 +105,7 @@ PACKAGECONFIG[no-opengl] = "-no-opengl"
PACKAGECONFIG[tslib] = "-tslib,-no-tslib,tslib"
PACKAGECONFIG[cups] = "-cups,-no-cups,cups"
PACKAGECONFIG[dbus] = "-dbus,-no-dbus,dbus"
-PACKAGECONFIG[xcb] = "-xcb -xcb-xlib -system-xcb,-no-xcb,libxcb xcb-util-wm xcb-util-image xcb-util-keysyms xcb-util-renderutil"
+PACKAGECONFIG[xcb] = "-xcb -xcb-xlib -system-xcb,-no-xcb,libxcb xcb-util-wm xcb-util-image xcb-util-keysyms xcb-util-renderutil libxext"
PACKAGECONFIG[sql-ibase] = "-sql-ibase,-no-sql-ibase"
PACKAGECONFIG[sql-mysql] = "-sql-mysql -mysql_config ${STAGING_BINDIR_CROSS}/mysql_config,-no-sql-mysql,mysql5"
PACKAGECONFIG[sql-psql] = "-sql-psql,-no-sql-psql,postgresql"
@@ -139,12 +115,13 @@ PACKAGECONFIG[sql-tds] = "-sql-tds,-no-sql-tds"
PACKAGECONFIG[sql-db2] = "-sql-db2,-no-sql-db2"
PACKAGECONFIG[sql-sqlite2] = "-sql-sqlite2,-no-sql-sqlite2,sqlite"
PACKAGECONFIG[sql-sqlite] = "-sql-sqlite -system-sqlite,-no-sql-sqlite,sqlite3"
-PACKAGECONFIG[xinput2] = "-xinput2,-no-xinput2,libxi"
+PACKAGECONFIG[xcb-xinput] = "-xcb-xinput,-no-xcb-xinput,libxcb"
PACKAGECONFIG[iconv] = "-iconv,-no-iconv,virtual/libiconv"
PACKAGECONFIG[xkb] = "-xkb,-no-xkb -no-xkbcommon,libxkbcommon"
-PACKAGECONFIG[xkbcommon-evdev] = "-xkbcommon-evdev,-no-xkbcommon-evdev,libxkbcommon,xkeyboard-config"
+PACKAGECONFIG[xkbcommon] = "-xkbcommon,-no-xkbcommon,libxkbcommon,xkeyboard-config"
PACKAGECONFIG[evdev] = "-evdev,-no-evdev"
PACKAGECONFIG[mtdev] = "-mtdev,-no-mtdev,mtdev"
+PACKAGECONFIG[lttng] = "-trace lttng,-trace no,lttng-ust"
# depends on glib
PACKAGECONFIG[fontconfig] = "-fontconfig,-no-fontconfig,fontconfig"
PACKAGECONFIG[gtk] = "-gtk,-no-gtk,gtk+3"
@@ -161,8 +138,41 @@ PACKAGECONFIG[libinput] = "-libinput,-no-libinput,libinput"
PACKAGECONFIG[journald] = "-journald,-no-journald,systemd"
# needs kernel 3.17+
PACKAGECONFIG[getentropy] = "-feature-getentropy,-no-feature-getentropy,"
+PACKAGECONFIG[vulkan] = "-vulkan,-no-vulkan,vulkan-headers"
QT_CONFIG_FLAGS_GOLD = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', '-use-gold-linker', '-no-use-gold-linker', d)}"
+# workaround for gold bug:
+# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=842304
+# https://sourceware.org/bugzilla/show_bug.cgi?id=21712
+# it's triggered only in combination of gold and security_flags.inc,
+# because security_flags.inc now enable pie by default.
+# Adding -no-pie or changing -fuse-ld=gold to -fuse-ld=bfd
+# works around this issue, will use -fuse-ld=bfd as it's considered
+# binutils bug.
+# OE @ ~/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/tests/auto/corelib/kernel/qmetatype $ i586-oe-linux-g++ -m32 -march=i586 --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -fuse-ld=gold -Wl,--enable-new-dtags -o tst_qmetatype .obj/tst_qmetatype.o -L/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/lib -lQt5Test -lQt5Core -lpthread
+# .obj/tst_qmetatype.o(.qtversion+0x0): error: unexpected reloc 3 against global symbol qt_version_tag without base register in object file when generating a position-independent output file
+# collect2: error: ld returned 1 exit status
+#
+# with -no-pie:
+# OE @ ~/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/tests/auto/corelib/kernel/qmetatype $ i586-oe-linux-g++ -no-pie -m32 -march=i586 --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -fuse-ld=gold -Wl,--enable-new-dtags -o tst_qmetatype .obj/tst_qmetatype.o -L/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/lib -lQt5Test -lQt5Core -lpthread
+#
+# with -fuse-ld=gold replaced with -fuse-ld=bfd:
+# OE @ ~/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/tests/auto/corelib/kernel/qmetatype $ i586-oe-linux-g++ -m32 -march=i586 --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -fuse-ld=bfd -Wl,--enable-new-dtags -o tst_qmetatype .obj/tst_qmetatype.o -L/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/lib -lQt5Test -lQt5Core -lpthread
+#
+# http://errors.yoctoproject.org/Errors/Details/150329/
+# QT_CONFIG_FLAGS_GOLD_x86 = "-no-use-gold-linker"
+# LDFLAGS_append_x86 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
+
+# since the upgrade to 5.12.2 this got worse, with gold enabled configure will no longer pass the test for xlib
+# because with full paths to libraries since qtbase commit 521a85395 it fails to link with
+# /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/qtbase/5.12.3+gitAUTOINC+b527725766-r0/recipe-sysroot/usr/lib/libm.so
+# as reported in:
+# https://github.com/meta-qt5/meta-qt5/pull/181#issuecomment-484425112
+# resulting in do_configure failure:
+# http://errors.yoctoproject.org/Errors/Details/237856/
+QT_CONFIG_FLAGS_GOLD = "-no-use-gold-linker"
+LDFLAGS_append = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
+
QT_CONFIG_FLAGS += " \
${QT_CONFIG_FLAGS_GOLD} \
-shared \
@@ -173,6 +183,13 @@ QT_CONFIG_FLAGS += " \
${PACKAGECONFIG_CONFARGS} \
"
+export CC_host_toolchain-clang = "clang"
+export CXX_host_toolchain-clang = "clang++"
+export LD_host_toolchain-clang = "clang++"
+export CC_host ?= "gcc"
+export CXX_host ?= "g++"
+export LD_host ?= "g++"
+
# for qtbase configuration we need default settings
# since we cannot set empty set filename to a not existent file
deltask generate_qt_config_file
@@ -225,11 +242,6 @@ do_install_append() {
# Avoid qmake error "Cannot read [...]/usr/lib/qt5/mkspecs/oe-device-extra.pri: No such file or directory"
touch ${D}/${OE_QMAKE_PATH_QT_ARCHDATA}/mkspecs/oe-device-extra.pri
- # Replace host paths with qmake built-in properties
- sed -i -e 's|${STAGING_DIR_NATIVE}|$$[QT_HOST_PREFIX/get]|g' \
- -e 's|${STAGING_DIR_HOST}|$$[QT_SYSROOT]|g' \
- ${D}/${OE_QMAKE_PATH_QT_ARCHDATA}/mkspecs/*.pri
-
# Update the mkspecs to include the default OE toolchain config for the target
conf=${D}/${OE_QMAKE_PATH_QT_ARCHDATA}/mkspecs/${XPLATFORM}/qmake.conf
@@ -251,11 +263,14 @@ do_install_append() {
echo "isEmpty(QMAKE_LINK_C_SHLIB): QMAKE_LINK_C_SHLIB = $OE_QMAKE_LINK_NO_SYSROOT" >> $conf
echo "isEmpty(QMAKE_LFLAGS): QMAKE_LFLAGS = ${OE_QMAKE_LDFLAGS}" >> $conf
echo "isEmpty(QMAKE_STRIP): QMAKE_STRIP = ${TARGET_PREFIX}strip" >> $conf
+ echo "isEmpty(CC_host): CC_host = ${CC_host}" >> $conf
+ echo "isEmpty(CXX_host): CXX_host = ${CXX_host}" >> $conf
+ echo "isEmpty(LD_host): LD_host = ${LD_host}" >> $conf
generate_target_qt_config_file ${D}${OE_QMAKE_PATH_BINS}/qt.conf
- # Fix up absolute paths in scripts
- sed -i -e '1s,#!/usr/bin/python,#! ${USRBINPATH}/env python,' \
+ # Fix up absolute paths in scripts and use python3 instead of python
+ sed -i -e '1s,#!/usr/bin/python$,#! ${USRBINPATH}/env python3,' \
${D}${OE_QMAKE_PATH_QT_ARCHDATA}/mkspecs/features/uikit/devices.py
}
@@ -271,7 +286,7 @@ pkg_postinst_${PN}-tools () {
sed -i \
-e 's:HostSpec =.*:HostSpec = ${TARGET_MKSPEC}:g' \
-e 's:TargetSpec =.*:TargetSpec = ${TARGET_MKSPEC}:g' \
- $D${bindir}/qt.conf
+ $D${OE_QMAKE_PATH_BINS}/qt.conf
}
pkg_postinst_${PN}-mkspecs () {
@@ -282,4 +297,4 @@ sed -i \
$D${OE_QMAKE_PATH_ARCHDATA}/mkspecs/qmodule.pri
}
-SRCREV = "08de243eaa007597c2bfbc97d3d14e2f821ac4be"
+SRCREV = "3a6d8df5219653b043bd642668cee193f563ec84"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtcanvas3d_git.bb b/external/meta-qt5/recipes-qt/qt5/qtcanvas3d_git.bb
deleted file mode 100644
index 744bef61..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qtcanvas3d_git.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require qt5.inc
-require qt5-git.inc
-
-LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 ) & ( GPL-2.0+ | LGPL-3.0 ) | The-Qt-Company-Commercial"
-LIC_FILES_CHKSUM = " \
- file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \
- file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \
- file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
-"
-
-DEPENDS = "qtdeclarative"
-
-SRCREV = "8726c86872134cf4b4396fa5e7ca8eba4ef37ed4"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtcharts_git.bb b/external/meta-qt5/recipes-qt/qt5/qtcharts_git.bb
index 9e99f4c1..2ddfdebe 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtcharts_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtcharts_git.bb
@@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtbase qtdeclarative qtmultimedia"
-SRCREV = "444aeb81f2555a37d94862ceaaa8295c5c7ddddd"
+SRCREV = "0dbc3485d061d27df19c33e2f3fb3abd31bfd0bb"
# The same issue as in qtbase:
# http://errors.yoctoproject.org/Errors/Details/152641/
diff --git a/external/meta-qt5/recipes-qt/qt5/qtcoap_git.bb b/external/meta-qt5/recipes-qt/qt5/qtcoap_git.bb
new file mode 100644
index 00000000..c65419dc
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtcoap_git.bb
@@ -0,0 +1,14 @@
+require qt5.inc
+require qt5-git.inc
+
+LICENSE = "GFDL-1.3 & BSD & GPL-3.0 | The-Qt-Company-Commercial"
+LIC_FILES_CHKSUM = " \
+ file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \
+"
+
+PACKAGECONFIG ?= "qtdeclarative"
+PACKAGECONFIG[qtdeclarative] = ",,qtdeclarative"
+
+DEPENDS += "qtbase"
+
+SRCREV = "ce5087822071d59cedd6913d4b28304aacc3c80b"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtconnectivity/0001-Add-missing-header-for-errno.patch b/external/meta-qt5/recipes-qt/qt5/qtconnectivity/0001-Add-missing-header-for-errno.patch
new file mode 100644
index 00000000..72afac30
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtconnectivity/0001-Add-missing-header-for-errno.patch
@@ -0,0 +1,23 @@
+From 000075567007d0ef76ef3c782fc4060f8ff8e647 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 29 Jan 2019 20:29:19 -0800
+Subject: [PATCH] Add missing header for errno
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/bluetooth/bluez/bluetoothmanagement.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/bluetooth/bluez/bluetoothmanagement.cpp b/src/bluetooth/bluez/bluetoothmanagement.cpp
+index 31d3dc02..75d762e5 100644
+--- a/src/bluetooth/bluez/bluetoothmanagement.cpp
++++ b/src/bluetooth/bluez/bluetoothmanagement.cpp
+@@ -45,6 +45,7 @@
+ #include "bluez_data_p.h"
+ #include "../qbluetoothsocketbase_p.h"
+
++#include <errno.h>
+ #include <unistd.h>
+ #include <sys/prctl.h>
+ #include <sys/syscall.h>
diff --git a/external/meta-qt5/recipes-qt/qt5/qtconnectivity/0001-Ignore-clang-warning-about-address-of-temp-in-config.patch b/external/meta-qt5/recipes-qt/qt5/qtconnectivity/0001-Ignore-clang-warning-about-address-of-temp-in-config.patch
deleted file mode 100644
index a0c2ee72..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qtconnectivity/0001-Ignore-clang-warning-about-address-of-temp-in-config.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 162749d36f4bdea62d456516ae2bbcdc84b9ba87 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 6 Dec 2018 13:21:23 -0800
-Subject: [PATCH] Ignore clang warning about address of temp in
- config.tests/bluez
-
-There is a similar error with gcc which is suppressed by using
--fpermissive, clang however is more concerned and has specific flag for
-it, this flag is not implemented in gcc so we can not use it via general
-cmdline options to compiler, so resort to using diagnostic pragma
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- config.tests/bluez/main.cpp | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/config.tests/bluez/main.cpp b/config.tests/bluez/main.cpp
-index 3fe5ee09..8d1c968a 100644
---- a/config.tests/bluez/main.cpp
-+++ b/config.tests/bluez/main.cpp
-@@ -30,11 +30,14 @@
-
- int main()
- {
-+#pragma clang diagnostic push
-+#pragma clang diagnostic ignored "-Waddress-of-temporary"
- #ifdef BDADDR_NONE
- bacmp(BDADDR_ANY, BDADDR_NONE);
- #else
- bacmp(BDADDR_ANY, BDADDR_LOCAL);
- #endif
-+#pragma clang diagnostic pop
-
- return 0;
- }
---
-2.19.2
-
diff --git a/external/meta-qt5/recipes-qt/qt5/qtconnectivity_git.bb b/external/meta-qt5/recipes-qt/qt5/qtconnectivity_git.bb
index 0e13bfd5..5f6e461f 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtconnectivity_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtconnectivity_git.bb
@@ -10,15 +10,13 @@ LIC_FILES_CHKSUM = " \
file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \
"
-DEPENDS += "qtbase qtdeclarative"
+SRC_URI += "file://0001-Add-missing-header-for-errno.patch"
-inherit bluetooth
+DEPENDS += "qtbase qtdeclarative"
PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)}"
-PACKAGECONFIG[bluez] = "-feature-bluez,-no-feature-bluez,${BLUEZ}"
+PACKAGECONFIG[bluez] = "-feature-bluez,-no-feature-bluez,bluez5"
EXTRA_QMAKEVARS_CONFIGURE += "${PACKAGECONFIG_CONFARGS}"
-SRCREV = "d1cf8dad0e6d8d08b5c6f2f08d85a0e75b0bcf8a"
-
-SRC_URI += "file://0001-Ignore-clang-warning-about-address-of-temp-in-config.patch"
+SRCREV = "b445ea4ff203fbcb5011adae0236dd028f11bc89"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtdatavis3d_git.bb b/external/meta-qt5/recipes-qt/qt5/qtdatavis3d_git.bb
index 8c2806a6..6d3c6770 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtdatavis3d_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtdatavis3d_git.bb
@@ -8,4 +8,4 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtbase qtdeclarative qtmultimedia qtxmlpatterns"
-SRCREV = "a04bbfd93159963aa505f96425e85a2a83b0b10a"
+SRCREV = "1e5f5525cf811bb0ffca3de389794fa10d2c1af2"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtdeclarative/0001-Always-use-commit-sha1-for-QML_COMPILE_HASH.patch b/external/meta-qt5/recipes-qt/qt5/qtdeclarative/0001-Always-use-commit-sha1-for-QML_COMPILE_HASH.patch
deleted file mode 100644
index a734f8a2..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qtdeclarative/0001-Always-use-commit-sha1-for-QML_COMPILE_HASH.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 260e165993fe15a1668cfd36caee18a95b2d2f59 Mon Sep 17 00:00:00 2001
-From: Samuli Piippo <samuli.piippo@qt.io>
-Date: Mon, 2 Jul 2018 13:32:44 +0300
-Subject: [PATCH] Always use commit sha1 for QML_COMPILE_HASH
-
-git describe can produce different strings for the same sha1, depending
-on the version of git (length of short hash) and whether release tag was
-in place when build was done (v5.11.1-0- vs. v5.11.0-66-).
-
-Instead use rev-parse to get the unambiguous commit sha1 which is also
-what is used from the .tag file.
-
-Change-Id: If378f03eb764e2d858bda5b662106aa4402d6559
-Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
----
- src/qml/qml.pro | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/qml/qml.pro b/src/qml/qml.pro
-index 940ebb325..a76a87b15 100644
---- a/src/qml/qml.pro
-+++ b/src/qml/qml.pro
-@@ -31,7 +31,7 @@ DEFINES += QT_NO_FOREACH
- !equals(tag, "$${LITERAL_DOLLAR}Format:%H$${LITERAL_DOLLAR}") {
- QML_COMPILE_HASH = $$tag
- } else:exists($$PWD/../../.git) {
-- commit = $$system(git describe --tags --always --long --dirty)
-+ commit = $$system(git rev-parse HEAD)
- QML_COMPILE_HASH = $$commit
- }
- compile_hash_contents = \
diff --git a/external/meta-qt5/recipes-qt/qt5/qtdeclarative/0001-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS-to-locate-qmlca.patch b/external/meta-qt5/recipes-qt/qt5/qtdeclarative/0001-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS-to-locate-qmlca.patch
new file mode 100644
index 00000000..60922e74
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtdeclarative/0001-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS-to-locate-qmlca.patch
@@ -0,0 +1,32 @@
+From d39e76b9662ea9cf236ac59749855e7da7ad29a8 Mon Sep 17 00:00:00 2001
+From: Piotr Tworek <tworaz@tworaz.net>
+Date: Wed, 3 Jul 2019 01:13:40 +0200
+Subject: [PATCH] Use OE_QMAKE_PATH_EXTERNAL_HOST_BINS to locate qmlcachegen
+
+Without this cmake will end up using host qmlcachegen instead of
+recipe-sysroot-native one.
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Piotr Tworek <tworaz@tworaz.net>
+---
+ tools/qmlcachegen/Qt5QuickCompilerConfig.cmake.in | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/tools/qmlcachegen/Qt5QuickCompilerConfig.cmake.in b/tools/qmlcachegen/Qt5QuickCompilerConfig.cmake.in
+index 75fbb0fcf3..1e949cd40c 100644
+--- a/tools/qmlcachegen/Qt5QuickCompilerConfig.cmake.in
++++ b/tools/qmlcachegen/Qt5QuickCompilerConfig.cmake.in
+@@ -18,11 +18,7 @@ function(QTQUICK_COMPILER_ADD_RESOURCES outfiles)
+
+ find_package(Qt5 COMPONENTS Qml Core)
+
+-!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+- set(compiler_path \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}qmlcachegen$$CMAKE_BIN_SUFFIX\")
+-!!ELSE
+- set(compiler_path \"$${CMAKE_BIN_DIR}qmlcachegen$$CMAKE_BIN_SUFFIX\")
+-!!ENDIF
++ set(compiler_path \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qmlcachegen${OE_QMAKE_BIN_SUFFIX}\")
+ if(NOT EXISTS \"${compiler_path}\" )
+ message(FATAL_ERROR \"The package \\\"Qt5QuickCompilerConfig\\\" references the file
+ \\\"${compiler_path}\\\"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtdeclarative/0002-Use-python3-explicitly.patch b/external/meta-qt5/recipes-qt/qt5/qtdeclarative/0002-Use-python3-explicitly.patch
new file mode 100644
index 00000000..f55812b6
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtdeclarative/0002-Use-python3-explicitly.patch
@@ -0,0 +1,57 @@
+From 838fb4676f78d169dc88f87544cf1a4003302aea Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 26 Nov 2019 21:10:03 -0800
+Subject: [PATCH] Use python3 explicitly
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ qtdeclarative.pro | 2 +-
+ src/3rdparty/masm/masm.pri | 4 ++--
+ tests/auto/qml/ecmascripttests/test262.py | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/qtdeclarative.pro b/qtdeclarative.pro
+index 5b94da9b69..0e3496ce80 100644
+--- a/qtdeclarative.pro
++++ b/qtdeclarative.pro
+@@ -2,7 +2,7 @@ CONFIG += tests_need_tools examples_need_tools
+ load(qt_parts)
+
+ !python_available {
+- py_out = $$system('python -c "print(1)"')
++ py_out = $$system('python3 -c "print(1)"')
+ !equals(py_out, 1): error("Building QtQml requires Python.")
+ tmp = python_available
+ CONFIG += $$tmp
+diff --git a/src/3rdparty/masm/masm.pri b/src/3rdparty/masm/masm.pri
+index 1df4585aae..00038104ec 100644
+--- a/src/3rdparty/masm/masm.pri
++++ b/src/3rdparty/masm/masm.pri
+@@ -58,7 +58,7 @@ contains(DEFINES, WTF_USE_UDIS86=1) {
+ udis86.output = udis86_itab.h
+ udis86.input = ITAB
+ udis86.CONFIG += no_link
+- udis86.commands = python $$PWD/disassembler/udis86/itab.py ${QMAKE_FILE_IN}
++ udis86.commands = python3 $$PWD/disassembler/udis86/itab.py ${QMAKE_FILE_IN}
+ QMAKE_EXTRA_COMPILERS += udis86
+
+ udis86_tab_cfile.target = $$OUT_PWD/udis86_itab.c
+@@ -111,7 +111,7 @@ retgen.output = $$GENERATEDDIR/RegExpJitTables.h
+ retgen.script = $$PWD/yarr/create_regex_tables
+ retgen.input = retgen.script
+ retgen.CONFIG += no_link
+-retgen.commands = python $$retgen.script > ${QMAKE_FILE_OUT}
++retgen.commands = python3 $$retgen.script > ${QMAKE_FILE_OUT}
+ QMAKE_EXTRA_COMPILERS += retgen
+
+ # Taken from WebKit/Tools/qmake/mkspecs/features/unix/default_post.prf
+diff --git a/tests/auto/qml/ecmascripttests/test262.py b/tests/auto/qml/ecmascripttests/test262.py
+index 19551e3ba2..bf3f79a45f 100755
+--- a/tests/auto/qml/ecmascripttests/test262.py
++++ b/tests/auto/qml/ecmascripttests/test262.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #############################################################################
+ ##
+ ## Copyright (C) 2017 The Qt Company Ltd.
diff --git a/external/meta-qt5/recipes-qt/qt5/qtdeclarative_git.bb b/external/meta-qt5/recipes-qt/qt5/qtdeclarative_git.bb
index 4cfde304..b588df0e 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtdeclarative_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtdeclarative_git.bb
@@ -12,31 +12,25 @@ LIC_FILES_CHKSUM = " \
file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \
"
-# Patches from https://github.com/meta-qt5/qtdeclarative/commits/b5.11
-# 5.11.meta-qt5.4
-SRC_URI += "file://0001-Always-use-commit-sha1-for-QML_COMPILE_HASH.patch"
+# Patches from https://github.com/meta-qt5/qtdeclarative/commits/b5.14
+# 5.14.meta-qt5.1
+SRC_URI += " \
+ file://0001-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS-to-locate-qmlca.patch \
+ file://0002-Use-python3-explicitly.patch \
+"
DEPENDS += "qtbase"
-PACKAGECONFIG ??= "qtxmlpatterns qml-debug qml-network ${@bb.utils.contains('DISTRO_FEATURES', 'qt5-static', 'static', '', d)}"
-PACKAGECONFIG[qtxmlpatterns] = ",,qtxmlpatterns"
+PACKAGECONFIG ??= "qml-debug qml-network ${@bb.utils.contains('DISTRO_FEATURES', 'qt5-static', 'static', '', d)}"
PACKAGECONFIG[qml-debug] = "-qml-debug,-no-qml-debug"
PACKAGECONFIG[qml-network] = "-qml-network, -no-qml-network"
PACKAGECONFIG[static] = ",,qtdeclarative-native"
-do_configure_prepend() {
- # disable qtxmlpatterns test if it isn't enabled by PACKAGECONFIG
- sed -e 's/^\(qtHaveModule(xmlpatterns)\)/OE_QTXMLPATTERNS_ENABLED:\1/' -i ${S}/src/imports/imports.pro
- sed -e 's/^\(!qtHaveModule(xmlpatterns)\)/!OE_QTXMLPATTERNS_ENABLED|\1/' -i ${S}/tests/auto/quick/quick.pro
-}
-
do_install_append_class-nativesdk() {
# qml files not needed in nativesdk
rm -rf ${D}${OE_QMAKE_PATH_QML}
}
-EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('PACKAGECONFIG', 'qtxmlpatterns', 'CONFIG+=OE_QTXMLPATTERNS_ENABLED', '', d)}"
-
-SRCREV = "e3c0bb7811407bad1f65ea55639a4b1d1d39be15"
+SRCREV = "23a000f9a14889753a63cd73de2c61e49bb7e0d8"
BBCLASSEXTEND =+ "native nativesdk"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtenginio_git.bb b/external/meta-qt5/recipes-qt/qt5/qtenginio_git.bb
deleted file mode 100644
index 30d5eeae..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qtenginio_git.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-require qt5.inc
-require qt5-git.inc
-
-LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )"
-LIC_FILES_CHKSUM = " \
- file://LICENSE.LGPLv21;md5=4bfd28363f541b10d9f024181b8df516 \
- file://LICENSE.LGPLv3;md5=e0459b45c5c4840b353141a8bbed91f0 \
- file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \
- file://LGPL_EXCEPTION.txt;md5=9625233da42f9e0ce9d63651a9d97654 \
- file://LICENSE.FDL;md5=f70ee9a6c44ae8917586fea34dff0ab5 \
-"
-
-DEPENDS += "qtbase qtdeclarative qtxmlpatterns"
-
-QT_MODULE_BRANCH = "dev"
-SRCREV = "23603a3b088178d8ec92fddb240e5a5c55d77d5a"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtgamepad_git.bb b/external/meta-qt5/recipes-qt/qt5/qtgamepad_git.bb
index 7708f433..33788adb 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtgamepad_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtgamepad_git.bb
@@ -14,4 +14,4 @@ PACKAGECONFIG[sdl2] = "-feature-sdl2,-no-feature-sdl2,libsdl2"
EXTRA_QMAKEVARS_CONFIGURE += "${PACKAGECONFIG_CONFARGS}"
-SRCREV = "4005b78c2bde8fd9cf1cbe3155cbe6c33f576111"
+SRCREV = "4ea446824de0d3a1bf098c55c28a3440c88ef99c"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtgraphicaleffects_git.bb b/external/meta-qt5/recipes-qt/qt5/qtgraphicaleffects_git.bb
index ef4d59b4..57cd049b 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtgraphicaleffects_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtgraphicaleffects_git.bb
@@ -18,4 +18,4 @@ RDEPENDS_${PN}-dev = ""
# http://errors.yoctoproject.org/Errors/Build/44912/
LDFLAGS_append_x86 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
-SRCREV = "d560b79d050659715159d5f04b2e96fd38d0230c"
+SRCREV = "337fec3f07fc8c88092b1cdff23cd85c6c3b127b"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtimageformats_git.bb b/external/meta-qt5/recipes-qt/qt5/qtimageformats_git.bb
index 09d52213..cda6e670 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtimageformats_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtimageformats_git.bb
@@ -11,7 +11,6 @@ LIC_FILES_CHKSUM = " \
file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \
file://LICENSE.GPLv2;md5=c96076271561b0e3785dad260634eaa8 \
file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \
- file://LGPL_EXCEPTION.txt;md5=9625233da42f9e0ce9d63651a9d97654 \
file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \
"
@@ -26,4 +25,4 @@ PACKAGECONFIG[libwebp] = ",CONFIG+=done_config_libwebp,libwebp"
EXTRA_QMAKEVARS_PRE += "${PACKAGECONFIG_CONFARGS}"
-SRCREV = "335dc6af7d24c1731cbd7e03a21e66c70d81760d"
+SRCREV = "42486a317119a2df9e25df5b7e548eb61b020607"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtknx_git.bb b/external/meta-qt5/recipes-qt/qt5/qtknx_git.bb
index 7a52bed9..ae17b92b 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtknx_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtknx_git.bb
@@ -9,4 +9,4 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtbase"
-SRCREV = "dea2cde014f2a74390a444d9d59e6deb2801c40b"
+SRCREV = "c910588bee331165350dbd83a9b1fdf92020c2f1"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtlocation_git.bb b/external/meta-qt5/recipes-qt/qt5/qtlocation_git.bb
index 5373aaad..2cbb44a6 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtlocation_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtlocation_git.bb
@@ -14,9 +14,13 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtbase qtxmlpatterns qtdeclarative qtquickcontrols"
PACKAGECONFIG ??= ""
-# older geoclue 0.12.99 is needed
-PACKAGECONFIG[geoclue] = ",,geoclue"
+PACKAGECONFIG[geoclue] = ",,,geoclue"
PACKAGECONFIG[gypsy] = "-feature-gypsy,-no-feature-gypsy,gconf gypsy"
+PACKAGECONFIG[geoservices_here] = "-feature-geoservices_here,-no-feature-geoservices_here"
+PACKAGECONFIG[geoservices_mapbox] = "-feature-geoservices_mapbox,-no-feature-geoservices_mapbox"
+PACKAGECONFIG[geoservices_esri] = "-feature-geoservices_esri,-no-feature-geoservices_esri"
+PACKAGECONFIG[geoservices_itemsoverlay] = "-feature-geoservices_itemsoverlay,-no-feature-geoservices_itemsoverlay"
+PACKAGECONFIG[geoservices_osm] = "-feature-geoservices_osm,-no-feature-geoservices_osm"
PACKAGECONFIG[geoservices_mapboxgl] = "-feature-geoservices_mapboxgl,-no-feature-geoservices_mapboxgl"
EXTRA_QMAKEVARS_CONFIGURE += "${PACKAGECONFIG_CONFARGS}"
@@ -31,7 +35,7 @@ SRC_URI += " \
${QT_GIT}/qtlocation-mapboxgl.git;name=qtlocation-mapboxgl;branch=${QT_MODULE_BRANCH_MAPBOXGL};protocol=${QT_GIT_PROTOCOL};destsuffix=git/src/3rdparty/mapbox-gl-native \
"
-SRCREV_qtlocation = "ffac0dc5a60c93663f6a4ea5483422c58cdb52b6"
-SRCREV_qtlocation-mapboxgl = "b59b0450c60b3df9e0852f62f6c8a6024889cd9e"
+SRCREV_qtlocation = "feb604c32611183083855c04b07c6be1e0efc9c6"
+SRCREV_qtlocation-mapboxgl = "d9577fdebe019b19e184b4cac82749ae9ec87afb"
SRCREV_FORMAT = "qtlocation_qtlocation-mapboxgl"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtlottie_git.bb b/external/meta-qt5/recipes-qt/qt5/qtlottie_git.bb
new file mode 100644
index 00000000..3b848da2
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtlottie_git.bb
@@ -0,0 +1,12 @@
+require qt5.inc
+require qt5-git.inc
+
+LICENSE = "(GPL-3.0 & The-Qt-Company-GPL-Exception-1.0) | The-Qt-Company-Commercial"
+LIC_FILES_CHKSUM = " \
+ file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \
+ file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \
+"
+
+DEPENDS += "qtbase qtdeclarative"
+
+SRCREV = "798be5abdb7d6e73288780c9ee03c10550dde07d"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtmqtt_git.bb b/external/meta-qt5/recipes-qt/qt5/qtmqtt_git.bb
index 23a450b0..a0a67f05 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtmqtt_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtmqtt_git.bb
@@ -9,4 +9,4 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtbase"
-SRCREV = "7e0587f9b4906976ec0397768b0378573fbf2fff"
+SRCREV = "9548b694a4b04c6164debb821a9c3536860f9421"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtmultimedia/0001-qtmultimedia-fix-a-conflicting-declaration.patch b/external/meta-qt5/recipes-qt/qt5/qtmultimedia/0001-qtmultimedia-fix-a-conflicting-declaration.patch
index 56c8e684..32021118 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtmultimedia/0001-qtmultimedia-fix-a-conflicting-declaration.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtmultimedia/0001-qtmultimedia-fix-a-conflicting-declaration.patch
@@ -1,4 +1,4 @@
-From c5103b4f832be57759f475d05c98f946d150c39d Mon Sep 17 00:00:00 2001
+From ac8c96da1849106b34592bab10459c854140a574 Mon Sep 17 00:00:00 2001
From: Wenlin Kang <wenlin.kang@windriver.com>
Date: Thu, 8 Sep 2016 12:18:13 +0800
Subject: [PATCH] qtmultimedia: fix a conflicting declaration
@@ -67,7 +67,7 @@ index 00000000..24236976
+
+#endif
diff --git a/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp b/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp
-index 465ccfa7..40e7592b 100644
+index e1468fe3..a77a9d6a 100644
--- a/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp
+++ b/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp
@@ -37,8 +37,9 @@
diff --git a/external/meta-qt5/recipes-qt/qt5/qtmultimedia_git.bb b/external/meta-qt5/recipes-qt/qt5/qtmultimedia_git.bb
index ba7d1543..768ce189 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtmultimedia_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtmultimedia_git.bb
@@ -12,7 +12,8 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtdeclarative"
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa', '', d)} \
+PACKAGECONFIG ??= "gstreamer \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)}"
PACKAGECONFIG[alsa] = "-alsa,-no-alsa,alsa-lib"
PACKAGECONFIG[pulseaudio] = "-pulseaudio,-no-pulseaudio,pulseaudio"
@@ -27,8 +28,8 @@ EXTRA_QMAKEVARS_CONFIGURE += "${@bb.utils.contains_any('PACKAGECONFIG', 'gstream
CXXFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DMESA_EGL_NO_X11_HEADERS=1', d)}"
-# Patches from https://github.com/meta-qt5/qtmultimedia/commits/b5.11
-# 5.11.meta-qt5.6
+# Patches from https://github.com/meta-qt5/qtmultimedia/commits/b5.14
+# 5.14.meta-qt5.1
SRC_URI += "\
file://0001-qtmultimedia-fix-a-conflicting-declaration.patch \
"
@@ -37,4 +38,4 @@ SRC_URI += "\
# http://errors.yoctoproject.org/Errors/Build/44914/
LDFLAGS_append_x86 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
-SRCREV = "6966a09c9a6a2c134a739446cc582e47d0c6ed6d"
+SRCREV = "c012f0a727144714f9480e98938ca8eb2137c213"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtnetworkauth_git.bb b/external/meta-qt5/recipes-qt/qt5/qtnetworkauth_git.bb
index 2296a997..31687baf 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtnetworkauth_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtnetworkauth_git.bb
@@ -9,4 +9,4 @@ require qt5-git.inc
DEPENDS += "qtbase"
-SRCREV = "90ae677b45570e45adc9d03ba9967065fdfa0432"
+SRCREV = "9f3cdb9e3ece4194af1b374dfde67ce807934325"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtopcua_git.bb b/external/meta-qt5/recipes-qt/qt5/qtopcua_git.bb
index 69f7ba61..fea783b7 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtopcua_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtopcua_git.bb
@@ -1,13 +1,21 @@
require qt5.inc
require qt5-git.inc
-LICENSE = "GFDL-1.3 & ( GPL-2.0+ | LGPL-3.0 ) | The-Qt-Company-Commercial"
+LICENSE = "( GFDL-1.3 & ( GPL-2.0+ | LGPL-3.0 ) | The-Qt-Company-Commercial ) & MPL-2.0 & CC0-1.0"
LIC_FILES_CHKSUM = " \
file://LICENSE.FDL;md5=f70ee9a6c44ae8917586fea34dff0ab5 \
file://LICENSE.GPLv2;md5=05832301944453ec79e40ba3c3cfceec \
file://LICENSE.LGPLv3;md5=c4fe8c6de4eef597feec6e90ed62e962 \
"
+PACKAGECONFIG ?= "qtdeclarative"
+PACKAGECONFIG[qtdeclarative] = ",,qtdeclarative"
+
+# src/3rdparty/open62541.pri adds -Wno-format, causing following error
+# because -Wformat-security cannot be used together with -Wno-format
+# cc1: error: -Wformat-security ignored without -Wformat [-Werror=format-security]
+SECURITY_STRINGFORMAT = ""
+
DEPENDS += "qtbase"
-SRCREV = "326bf6a1058d878b7891ee6d7078ed381c462df1"
+SRCREV = "2d99281fe78e6cdcf65d138c8503653ba46eccef"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtpurchasing_git.bb b/external/meta-qt5/recipes-qt/qt5/qtpurchasing_git.bb
index 9f6138bd..cb6b6eff 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtpurchasing_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtpurchasing_git.bb
@@ -10,4 +10,4 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtbase qtdeclarative"
-SRCREV = "d11d7ff9eff2a68441ff6264b04f37bd862bdd64"
+SRCREV = "9ccef69aa67cae578e6725680aa530d3e29fe047"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtquick3d_git.bb b/external/meta-qt5/recipes-qt/qt5/qtquick3d_git.bb
new file mode 100644
index 00000000..7d3fd78b
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtquick3d_git.bb
@@ -0,0 +1,27 @@
+require qt5.inc
+require qt5-git.inc
+
+LICENSE = "(GPL-3.0 & BSD) | The-Qt-Company-Commercial"
+LIC_FILES_CHKSUM = " \
+ file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \
+"
+
+DEPENDS += "qtbase qtdeclarative qtquickcontrols2"
+
+SRC_URI += " \
+ git://github.com/assimp/assimp.git;name=assimp;branch=master;protocol=https;destsuffix=git/src/3rdparty/assimp/src \
+"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[system-assimp] = "-system-assimp,-qt-assimp,assimp"
+
+EXTRA_QMAKEVARS_CONFIGURE += "${PACKAGECONFIG_CONFARGS}"
+
+FILES_${PN}-qmlplugins += " \
+ ${OE_QMAKE_PATH_QML}/QtQuick3D/Helpers/meshes/*.mesh \
+"
+
+SRCREV_qtquick3d = "a0197a18cebfb718c1787fcd8779bcf237f97137"
+SRCREV_assimp = "5c900d689a5db5637b98f665fc1e9e9c9ed416b9"
+
+SRCREV_FORMAT = "qtquick3d_assimp"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtquickcontrols2_git.bb b/external/meta-qt5/recipes-qt/qt5/qtquickcontrols2_git.bb
index b0ea42a9..e77e34dc 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtquickcontrols2_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtquickcontrols2_git.bb
@@ -10,4 +10,4 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtdeclarative qtdeclarative-native"
-SRCREV = "431d605edb48321c71935fbd2bb82d33e231ea55"
+SRCREV = "bb2b1adffe986843a6e7554bfe5ed26858c66264"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtquickcontrols_git.bb b/external/meta-qt5/recipes-qt/qt5/qtquickcontrols_git.bb
index e66074e1..b82367a6 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtquickcontrols_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtquickcontrols_git.bb
@@ -17,4 +17,4 @@ FILES_${PN}-qmlplugins += " \
${OE_QMAKE_PATH_QML}/QtQuick/Dialogs/qml/icons.ttf \
"
-SRCREV = "6b7f91c097f7e47cf2683d08b5838fd061a872bd"
+SRCREV = "8c3882d9391968727c046344e456d1ab2f7b8e08"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtquicktimeline_git.bb b/external/meta-qt5/recipes-qt/qt5/qtquicktimeline_git.bb
new file mode 100644
index 00000000..6db422b4
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtquicktimeline_git.bb
@@ -0,0 +1,13 @@
+require qt5.inc
+require qt5-git.inc
+
+DESCRIPTION = "Qt Quick Timeline"
+LICENSE = "GPL-2.0+ | The-Qt-Company-Commercial"
+LIC_FILES_CHKSUM = " \
+ file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \
+ "
+
+DEPENDS = "qtbase qtdeclarative"
+
+SRCREV = "0df4b2cd85b5d443675c38eb2c55ea6ea12b9174"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtremoteobjects/0001-Allow-a-tools-only-build.patch b/external/meta-qt5/recipes-qt/qt5/qtremoteobjects/0001-Allow-a-tools-only-build.patch
index a43dbeba..d3113cd4 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtremoteobjects/0001-Allow-a-tools-only-build.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtremoteobjects/0001-Allow-a-tools-only-build.patch
@@ -1,4 +1,4 @@
-From cac05ba982e5047c11add015f6f6125863e5226d Mon Sep 17 00:00:00 2001
+From 5f151a2148be90ca8c4470bea7b4358659c9fff1 Mon Sep 17 00:00:00 2001
From: Samuli Piippo <samuli.piippo@qt.io>
Date: Wed, 7 Jun 2017 15:17:12 +0300
Subject: [PATCH] Allow a tools-only build
@@ -10,7 +10,7 @@ Change-Id: I3b33fc1c8877fc82568bd386b063e7a0aa57b706
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/mkspecs/features/repccommon.pri b/mkspecs/features/repccommon.pri
-index 5e88bf8..6efd19e 100644
+index fd321e3..e218217 100644
--- a/mkspecs/features/repccommon.pri
+++ b/mkspecs/features/repccommon.pri
@@ -3,7 +3,7 @@ cmd = $${QT.remoteobjects.bins}/repc
@@ -23,10 +23,10 @@ index 5e88bf8..6efd19e 100644
# qtPrepareTool honors QT_TOOL.repc.binary if set
qtPrepareTool(QMAKE_REPC, repc)
diff --git a/qtremoteobjects.pro b/qtremoteobjects.pro
-index c2e2b6b..93c2bb5 100644
+index 454f0d1..7c1d2ee 100644
--- a/qtremoteobjects.pro
+++ b/qtremoteobjects.pro
-@@ -2,3 +2,8 @@ CONFIG += examples_need_tools tests_need_tools
+@@ -4,3 +4,8 @@ CONFIG += examples_need_tools tests_need_tools
load(qt_parts)
SUBDIRS += mkspecs
diff --git a/external/meta-qt5/recipes-qt/qt5/qtremoteobjects/0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch b/external/meta-qt5/recipes-qt/qt5/qtremoteobjects/0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch
new file mode 100644
index 00000000..fc052c66
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtremoteobjects/0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch
@@ -0,0 +1,22 @@
+From 75050b24ee94d078a3e987535aef6cbaac561c69 Mon Sep 17 00:00:00 2001
+From: ibinderwolf <daniel@bluepattern.net>
+Date: Wed, 26 Jun 2019 09:46:48 +0200
+Subject: [PATCH] cmake Use OE_QMAKE_PATH_EXTERNAL_HOST_BINS
+
+---
+ src/remoteobjects/Qt5RemoteObjectsConfigExtras.cmake.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/remoteobjects/Qt5RemoteObjectsConfigExtras.cmake.in b/src/remoteobjects/Qt5RemoteObjectsConfigExtras.cmake.in
+index 4907ded..34729da 100644
+--- a/src/remoteobjects/Qt5RemoteObjectsConfigExtras.cmake.in
++++ b/src/remoteobjects/Qt5RemoteObjectsConfigExtras.cmake.in
+@@ -40,7 +40,7 @@ if (NOT TARGET Qt5::repc)
+ !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+ set(imported_location \"${_qt5RemoteObjects_install_prefix}/$${CMAKE_BIN_DIR}repc$$CMAKE_BIN_SUFFIX\")
+ !!ELSE
+- set(imported_location \"$${CMAKE_BIN_DIR}repc$$CMAKE_BIN_SUFFIX\")
++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/repc${OE_QMAKE_BIN_SUFFIX}\")
+ !!ENDIF
+ _qt5_RemoteObjects_check_file_exists(${imported_location})
+
diff --git a/external/meta-qt5/recipes-qt/qt5/qtremoteobjects_git.bb b/external/meta-qt5/recipes-qt/qt5/qtremoteobjects_git.bb
index c93463ee..ee7a90df 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtremoteobjects_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtremoteobjects_git.bb
@@ -11,10 +11,11 @@ require qt5-git.inc
DEPENDS += "qtbase qtdeclarative qtremoteobjects-native"
-# Patches from https://github.com/meta-qt5/qtremoteobjects/commits/b5.11
-# 5.11.meta-qt5.6
+# Patches from https://github.com/meta-qt5/qtremoteobjects/commits/b5.14
+# 5.14.meta-qt5.1
SRC_URI += " \
file://0001-Allow-a-tools-only-build.patch \
+ file://0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch \
"
PACKAGECONFIG ??= ""
@@ -24,6 +25,6 @@ PACKAGECONFIG[tools-only] = "CONFIG+=tools-only"
EXTRA_QMAKEVARS_PRE += "${PACKAGECONFIG_CONFARGS}"
-SRCREV = "92ae729691f6db9fb06b0475509dc1141ac3d93c"
+SRCREV = "c64237289a6287c23564827b51092e58a1e6cbac"
BBCLASSEXTEND += "native nativesdk"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtscript/0001-3rdparty-javascriptcore-Add-RISC-V-support.patch b/external/meta-qt5/recipes-qt/qt5/qtscript/0001-3rdparty-javascriptcore-Add-RISC-V-support.patch
deleted file mode 100644
index d724496e..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qtscript/0001-3rdparty-javascriptcore-Add-RISC-V-support.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 028ec1bdce6dde67cc1486e5bee311b69354e41e Mon Sep 17 00:00:00 2001
-From: Alistair Francis <alistair.francis@wdc.com>
-Date: Wed, 18 Jul 2018 14:26:21 -0700
-Subject: [PATCH] 3rdparty/javascriptcore: Add RISC-V support
-
-Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
-Change-Id: I81f15084ef6b5b8d855c1f568cacca176af51b57
-Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
-
-Upstream-Status: Backport
----
- .../javascriptcore/JavaScriptCore/wtf/Platform.h | 14 ++++++++++++--
- 1 file changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h
-index 00caa6d..96942c7 100644
---- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h
-+++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h
-@@ -397,6 +397,16 @@
- #endif
- #endif /* __mips__ */
-
-+/* CPU(RISCV64) - RISC-V 64-bit */
-+#if defined(__riscv) && __riscv_xlen == 64
-+#define WTF_CPU_RISCV64 1
-+#endif
-+
-+/* CPU(RISCV32) - RISC-V 32-bit */
-+#if defined(__riscv) && __riscv_xlen == 32
-+#define WTF_CPU_RISCV32 1
-+#endif
-+
- /* ==== OS() - underlying operating system; only to be used for mandated low-level services like
- virtual memory, not to choose a GUI toolkit ==== */
-
-@@ -948,9 +958,9 @@
- #endif
-
- #if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32) && !defined(WTF_USE_JSVALUE32_64)
--#if (CPU(X86_64) && !CPU(X32) && (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) && !CPU(X32) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || CPU(AARCH64) || CPU(RISCV64)
- #define WTF_USE_JSVALUE64 1
--#elif CPU(ARM) || CPU(PPC64)
-+#elif CPU(ARM) || CPU(PPC64) || CPU(RISCV32)
- #define WTF_USE_JSVALUE32 1
- #elif OS(WINDOWS) && COMPILER(MINGW)
- /* Using JSVALUE32_64 causes padding/alignement issues for JITStubArg
diff --git a/external/meta-qt5/recipes-qt/qt5/qtscript/0002-Include-asm-sgidefs.h-on-non-glibc-systems.patch b/external/meta-qt5/recipes-qt/qt5/qtscript/0001-Include-asm-sgidefs.h-on-non-glibc-systems.patch
index 3cb91726..2637396f 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtscript/0002-Include-asm-sgidefs.h-on-non-glibc-systems.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtscript/0001-Include-asm-sgidefs.h-on-non-glibc-systems.patch
@@ -1,4 +1,4 @@
-From e9b8d8d23681cfef9efbb654ecea2eeb128a9d00 Mon Sep 17 00:00:00 2001
+From 0608bd81fd1f2075c2f98fb314af0111c8659afb Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 23 Aug 2018 02:58:14 +0000
Subject: [PATCH] Include asm/sgidefs.h on non-glibc systems
@@ -19,7 +19,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 4 insertions(+)
diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h
-index 96942c7..f828f04 100644
+index a4695a2..4b7a45b 100644
--- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h
+++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h
@@ -377,7 +377,11 @@
diff --git a/external/meta-qt5/recipes-qt/qt5/qtscript/0002-Fix-build-with-GCC-8.3.patch b/external/meta-qt5/recipes-qt/qt5/qtscript/0002-Fix-build-with-GCC-8.3.patch
deleted file mode 100644
index 629cf8e8..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qtscript/0002-Fix-build-with-GCC-8.3.patch
+++ /dev/null
@@ -1,235 +0,0 @@
-From 03cdaf779e0d8587c6e110f1f834a15e2d3317fd Mon Sep 17 00:00:00 2001
-From: Thiago Macieira <thiago.macieira@intel.com>
-Date: Mon, 28 Jan 2019 14:33:12 -0800
-Subject: [PATCH] Fix build with GCC 8.3
-
-Qualifiers in the asm statement are not allowed in the global scope. I
-thought they were necessary for LTO, but I the commit to this file that
-added them predates my work on setting up LTO for GCC.
-
-Change-Id: Id98140e1c2f0426cabbefffd157e23e5ece67a49
-Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
----
- .../JavaScriptCore/jit/JITStubs.cpp | 48 +++++++++----------
- 1 file changed, 24 insertions(+), 24 deletions(-)
-
-diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp b/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp
-index 1abdf8b..9f60761 100644
---- a/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp
-+++ b/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp
-@@ -116,7 +116,7 @@ COMPILE_ASSERT(offsetof(struct JITStackFrame, savedEBX) == 0x3c, JITStackFrame_s
- COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x58, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
- COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x50, JITStackFrame_code_offset_matches_ctiTrampoline);
-
--asm volatile (
-+asm (
- ".text\n"
- ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
- HIDE_SYMBOL(ctiTrampoline) "\n"
-@@ -138,7 +138,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "ret" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
- HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
- SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
-@@ -154,7 +154,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
- "ret" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
- HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
- SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
-@@ -179,7 +179,7 @@ COMPILE_ASSERT(offsetof(struct JITStackFrame, savedRBX) == 0x48, JITStackFrame_s
- COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x90, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
- COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x80, JITStackFrame_code_offset_matches_ctiTrampoline);
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
- HIDE_SYMBOL(ctiTrampoline) "\n"
- SYMBOL_STRING(ctiTrampoline) ":" "\n"
-@@ -206,7 +206,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "ret" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
- HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
- SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
-@@ -222,7 +222,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
- "ret" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
- HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
- SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
-@@ -242,7 +242,7 @@ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
- #error "JIT_STUB_ARGUMENT_VA_LIST not supported on ARMv7."
- #endif
-
--asm volatile (
-+asm (
- ".text" "\n"
- ".align 2" "\n"
- ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
-@@ -269,7 +269,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "bx lr" "\n"
- );
-
--asm volatile (
-+asm (
- ".text" "\n"
- ".align 2" "\n"
- ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
-@@ -287,7 +287,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
- "bx lr" "\n"
- );
-
--asm volatile (
-+asm (
- ".text" "\n"
- ".align 2" "\n"
- ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
-@@ -305,7 +305,7 @@ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
-
- #elif COMPILER(GCC) && CPU(ARM_TRADITIONAL)
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
- HIDE_SYMBOL(ctiTrampoline) "\n"
- SYMBOL_STRING(ctiTrampoline) ":" "\n"
-@@ -323,7 +323,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "mov pc, lr" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
- HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
- SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
-@@ -418,7 +418,7 @@ COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x38, JITStackFrame_
- COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x30, JITStackFrame_code_offset_matches_ctiTrampoline);
- COMPILE_ASSERT(offsetof(struct JITStackFrame, savedEBX) == 0x1c, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
-
--asm volatile (
-+asm (
- ".text\n"
- ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
- HIDE_SYMBOL(ctiTrampoline) "\n"
-@@ -440,7 +440,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "ret" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
- HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
- SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
-@@ -456,7 +456,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
- "ret" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
- HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
- SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
-@@ -480,7 +480,7 @@ COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x58, JITStackFrame_
- COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x48, JITStackFrame_code_offset_matches_ctiTrampoline);
- COMPILE_ASSERT(offsetof(struct JITStackFrame, savedRBX) == 0x78, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
-
--asm volatile (
-+asm (
- ".text\n"
- ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
- HIDE_SYMBOL(ctiTrampoline) "\n"
-@@ -515,7 +515,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "ret" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
- HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
- SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
-@@ -531,7 +531,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
- "ret" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
- HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
- SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
-@@ -551,7 +551,7 @@ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
- #error "JIT_STUB_ARGUMENT_VA_LIST not supported on ARMv7."
- #endif
-
--asm volatile (
-+asm (
- ".text" "\n"
- ".align 2" "\n"
- ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
-@@ -578,7 +578,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "bx lr" "\n"
- );
-
--asm volatile (
-+asm (
- ".text" "\n"
- ".align 2" "\n"
- ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
-@@ -596,7 +596,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
- "bx lr" "\n"
- );
-
--asm volatile (
-+asm (
- ".text" "\n"
- ".align 2" "\n"
- ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
-@@ -614,7 +614,7 @@ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
-
- #elif COMPILER(GCC) && CPU(ARM_TRADITIONAL)
-
--asm volatile (
-+asm (
- ".text\n"
- ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
- HIDE_SYMBOL(ctiTrampoline) "\n"
-@@ -632,7 +632,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "mov pc, lr" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
- HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
- SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
-@@ -1024,7 +1024,7 @@ static NEVER_INLINE void throwStackOverflowError(CallFrame* callFrame, JSGlobalD
- extern "C" { \
- rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
- }; \
-- asm volatile ( \
-+ asm ( \
- ".text" "\n" \
- ".align 2" "\n" \
- ".globl " SYMBOL_STRING(cti_##op) "\n" \
-@@ -1053,7 +1053,7 @@ COMPILE_ASSERT(offsetof(struct JITStackFrame, thunkReturnAddress) == THUNK_RETUR
- extern "C" { \
- rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
- }; \
-- asm volatile ( \
-+ asm ( \
- ".globl " SYMBOL_STRING(cti_##op) "\n" \
- HIDE_SYMBOL(cti_##op) "\n" \
- SYMBOL_STRING(cti_##op) ":" "\n" \
diff --git a/external/meta-qt5/recipes-qt/qt5/qtscript_git.bb b/external/meta-qt5/recipes-qt/qt5/qtscript_git.bb
index aa0e28d4..c796cc40 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtscript_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtscript_git.bb
@@ -11,12 +11,10 @@ LIC_FILES_CHKSUM = " \
file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
"
-# Patches from https://github.com/meta-qt5/qtscript/commits/b5.11
-# 5.11.meta-qt5.3
+# Patches from https://github.com/meta-qt5/qtscript/commits/b5.14
+# 5.14.meta-qt5.1
SRC_URI += " \
- file://0001-3rdparty-javascriptcore-Add-RISC-V-support.patch \
- file://0002-Include-asm-sgidefs.h-on-non-glibc-systems.patch \
- file://0002-Fix-build-with-GCC-8.3.patch \
+ file://0001-Include-asm-sgidefs.h-on-non-glibc-systems.patch \
"
# qemuarm build fails with:
@@ -38,4 +36,4 @@ DEPENDS += "qtbase"
# http://errors.yoctoproject.org/Errors/Build/44915/
LDFLAGS_append_x86 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
-SRCREV = "cf09bc7285793d81a9755bf7e807c9d51d47d980"
+SRCREV = "bdf42faf19518cf2aceca74f91ab003d204d11be"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtscxml/0001-Use-external-host-bin-path-for-cmake-file.patch b/external/meta-qt5/recipes-qt/qt5/qtscxml/0001-Use-external-host-bin-path-for-cmake-file.patch
index 355cbe12..b26d7c8b 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtscxml/0001-Use-external-host-bin-path-for-cmake-file.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtscxml/0001-Use-external-host-bin-path-for-cmake-file.patch
@@ -1,4 +1,4 @@
-From ed4d6708cc72311f697d6d27556de7dfc77cfcd0 Mon Sep 17 00:00:00 2001
+From 9e2ef02c25fedb6faad0d26ba2273297918f6399 Mon Sep 17 00:00:00 2001
From: Samuli Piippo <samuli.piippo@qt.io>
Date: Tue, 10 Jan 2017 15:28:26 +0200
Subject: [PATCH] Use external host bin path for cmake file
diff --git a/external/meta-qt5/recipes-qt/qt5/qtscxml_git.bb b/external/meta-qt5/recipes-qt/qt5/qtscxml_git.bb
index dcb1113c..efacfcc4 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtscxml_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtscxml_git.bb
@@ -10,10 +10,10 @@ require qt5-git.inc
DEPENDS += "qtbase qtdeclarative qtxmlpatterns qtscxml-native"
-SRCREV = "b99d699a8e1fe1a2968edafa6f0154a2581c2143"
+SRCREV = "fc0eecb79325713d3576a9d4a7eb359ef90bf3d9"
-# Patches from https://github.com/meta-qt5/qtscxml/commits/b5.11
-# 5.11.meta-qt5.6
+# Patches from https://github.com/meta-qt5/qtscxml/commits/b5.14
+# 5.14.meta-qt5.1
SRC_URI += "file://0001-Use-external-host-bin-path-for-cmake-file.patch"
do_install_append_class-nativesdk() {
diff --git a/external/meta-qt5/recipes-qt/qt5/qtsensors_git.bb b/external/meta-qt5/recipes-qt/qt5/qtsensors_git.bb
index 5fdd6f97..4a971cfc 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtsensors_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtsensors_git.bb
@@ -12,4 +12,4 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtbase qtdeclarative"
-SRCREV = "0dab0ff3d33292bc1647ebb68dbeb8556707b5ad"
+SRCREV = "92e19711f9170f26829498787d0e5de4889c9718"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtserialbus_git.bb b/external/meta-qt5/recipes-qt/qt5/qtserialbus_git.bb
index c7d1fe8b..f1e8b081 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtserialbus_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtserialbus_git.bb
@@ -11,4 +11,4 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtbase qtserialport"
-SRCREV = "857ed94b55b59859f41c55076c51e92f163cb9f7"
+SRCREV = "4a0bdbfb757d98b7c95ce7a0c299ab19866529e6"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtserialport_git.bb b/external/meta-qt5/recipes-qt/qt5/qtserialport_git.bb
index 612571c2..d0229e3d 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtserialport_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtserialport_git.bb
@@ -12,4 +12,4 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtbase"
-SRCREV = "5e3f1365813079f1a9a9af284b6a40bd9df8e1c0"
+SRCREV = "30807cadfc8e40097ee6450f667c4510f925bcd2"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtsvg_git.bb b/external/meta-qt5/recipes-qt/qt5/qtsvg_git.bb
index 0e77d635..d5864d72 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtsvg_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtsvg_git.bb
@@ -7,10 +7,9 @@ LIC_FILES_CHKSUM = " \
file://LICENSE.LGPLv21;md5=4bfd28363f541b10d9f024181b8df516 \
file://LICENSE.LGPLv3;md5=e0459b45c5c4840b353141a8bbed91f0 \
file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \
- file://LGPL_EXCEPTION.txt;md5=9625233da42f9e0ce9d63651a9d97654 \
file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \
"
DEPENDS += "qtbase"
-SRCREV = "ab492718dec3b54fce736b642dc6975d9b0046af"
+SRCREV = "63961dd0c73fb6bf7de1b4d3e68fe5d24625a330"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtsystems_git.bb b/external/meta-qt5/recipes-qt/qt5/qtsystems_git.bb
index 0bda2e99..5f5e1ad8 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtsystems_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtsystems_git.bb
@@ -12,10 +12,8 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtbase qtdeclarative udev gconf"
-inherit bluetooth
-
PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)}"
-PACKAGECONFIG[bluez] = "CONFIG+=OE_BLUEZ_ENABLED,,${BLUEZ}"
+PACKAGECONFIG[bluez] = "CONFIG+=OE_BLUEZ_ENABLED,,bluez5"
EXTRA_QMAKEVARS_PRE += "${PACKAGECONFIG_CONFARGS}"
@@ -31,4 +29,4 @@ do_install_append() {
QT_MODULE_BRANCH = "dev"
-SRCREV = "66e45676f5f5c6251ccab36906c6324fd0065e08"
+SRCREV = "e3332ee38d27a134cef6621fdaf36687af1b6f4a"
diff --git a/external/meta-qt5/recipes-qt/qt5/qttools/0001-add-noqtwebkit-configuration.patch b/external/meta-qt5/recipes-qt/qt5/qttools/0001-add-noqtwebkit-configuration.patch
index 37ab7dbf..d0a9d352 100644
--- a/external/meta-qt5/recipes-qt/qt5/qttools/0001-add-noqtwebkit-configuration.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qttools/0001-add-noqtwebkit-configuration.patch
@@ -1,4 +1,4 @@
-From 9cdaa2696552e90bac815889bf6fe45bc9637ca1 Mon Sep 17 00:00:00 2001
+From 0835a82c0002bfadb1e3007ae75ad1159aef0906 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
Date: Wed, 4 Jun 2014 11:28:16 +0200
Subject: [PATCH] add noqtwebkit configuration
@@ -16,7 +16,7 @@ Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/assistant/assistant/assistant.pro b/src/assistant/assistant/assistant.pro
-index 080aba03..100370a4 100644
+index b63be28c..90d9e114 100644
--- a/src/assistant/assistant/assistant.pro
+++ b/src/assistant/assistant/assistant.pro
@@ -1,4 +1,4 @@
@@ -25,7 +25,7 @@ index 080aba03..100370a4 100644
BROWSER = qtwebkit
} else {
BROWSER = qtextbrowser
-@@ -75,7 +75,7 @@ SOURCES += aboutdialog.cpp \
+@@ -77,7 +77,7 @@ SOURCES += aboutdialog.cpp \
openpagesmanager.cpp \
openpagesswitcher.cpp
diff --git a/external/meta-qt5/recipes-qt/qt5/qttools/0002-linguist-tools-cmake-allow-overriding-the-location-f.patch b/external/meta-qt5/recipes-qt/qt5/qttools/0002-linguist-tools-cmake-allow-overriding-the-location-f.patch
index 7be76a30..f8bde420 100644
--- a/external/meta-qt5/recipes-qt/qt5/qttools/0002-linguist-tools-cmake-allow-overriding-the-location-f.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qttools/0002-linguist-tools-cmake-allow-overriding-the-location-f.patch
@@ -1,60 +1,41 @@
-From 1b52ee8efd23b61cae9ab843efd75ced21fed04f Mon Sep 17 00:00:00 2001
-From: Cody P Schafer <dev@codyps.com>
-Date: Thu, 9 Jul 2015 11:28:19 -0400
+From 2d76f5a7770076eccd55dec4a3f1f63b931a566c Mon Sep 17 00:00:00 2001
+From: Samuli Piippo <samuli.piippo@qt.io>
+Date: Mon, 18 Feb 2019 10:45:03 +0200
Subject: [PATCH] linguist-tools cmake: allow overriding the location for
lupdate and lrelease
---
- src/linguist/Qt5LinguistToolsConfig.cmake.in | 15 +++------------
- 1 file changed, 3 insertions(+), 12 deletions(-)
+ src/linguist/Qt5LinguistToolsConfig.cmake.in | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/linguist/Qt5LinguistToolsConfig.cmake.in b/src/linguist/Qt5LinguistToolsConfig.cmake.in
-index 4318b16f..2e3b70fa 100644
+index 4318b16f..f957a384 100644
--- a/src/linguist/Qt5LinguistToolsConfig.cmake.in
+++ b/src/linguist/Qt5LinguistToolsConfig.cmake.in
-@@ -26,6 +26,9 @@ get_filename_component(_qt5_linguisttools_install_prefix \"${CMAKE_CURRENT_LIST_
- !!ELSE
- set(_qt5_linguisttools_install_prefix \"$$[QT_INSTALL_PREFIX]\")
- !!ENDIF
-+if (OE_QMAKE_PATH_HOST_PREFIX)
-+ set(_qt5_linguisttools_install_prefix \"${OE_QMAKE_PATH_HOST_PREFIX}\")
-+endif()
-
- macro(_qt5_LinguistTools_check_file_exists file)
- if(NOT EXISTS \"${file}\" )
-@@ -44,11 +47,7 @@ endmacro()
- if (NOT TARGET Qt5::lrelease)
- add_executable(Qt5::lrelease IMPORTED)
-
--!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+@@ -47,7 +47,7 @@ if (NOT TARGET Qt5::lrelease)
+ !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
set(imported_location \"${_qt5_linguisttools_install_prefix}/$${CMAKE_BIN_DIR}lrelease$$CMAKE_BIN_SUFFIX\")
--!!ELSE
+ !!ELSE
- set(imported_location \"$${CMAKE_BIN_DIR}lrelease$$CMAKE_BIN_SUFFIX\")
--!!ENDIF
++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/lrelease${OE_QMAKE_BIN_SUFFIX}\")
+ !!ENDIF
_qt5_LinguistTools_check_file_exists(${imported_location})
- set_target_properties(Qt5::lrelease PROPERTIES
-@@ -59,11 +58,7 @@ endif()
- if (NOT TARGET Qt5::lupdate)
- add_executable(Qt5::lupdate IMPORTED)
-
--!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+@@ -62,7 +62,7 @@ if (NOT TARGET Qt5::lupdate)
+ !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
set(imported_location \"${_qt5_linguisttools_install_prefix}/$${CMAKE_BIN_DIR}lupdate$$CMAKE_BIN_SUFFIX\")
--!!ELSE
+ !!ELSE
- set(imported_location \"$${CMAKE_BIN_DIR}lupdate$$CMAKE_BIN_SUFFIX\")
--!!ENDIF
++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/lupdate${OE_QMAKE_BIN_SUFFIX}\")
+ !!ENDIF
_qt5_LinguistTools_check_file_exists(${imported_location})
- set_target_properties(Qt5::lupdate PROPERTIES
-@@ -74,11 +69,7 @@ endif()
- if (NOT TARGET Qt5::lconvert)
- add_executable(Qt5::lconvert IMPORTED)
-
--!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
+@@ -77,7 +77,7 @@ if (NOT TARGET Qt5::lconvert)
+ !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
set(imported_location \"${_qt5_linguisttools_install_prefix}/$${CMAKE_BIN_DIR}lconvert$$CMAKE_BIN_SUFFIX\")
--!!ELSE
+ !!ELSE
- set(imported_location \"$${CMAKE_BIN_DIR}lconvert$$CMAKE_BIN_SUFFIX\")
--!!ENDIF
++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/lconvert${OE_QMAKE_BIN_SUFFIX}\")
+ !!ENDIF
_qt5_LinguistTools_check_file_exists(${imported_location})
- set_target_properties(Qt5::lconvert PROPERTIES
diff --git a/external/meta-qt5/recipes-qt/qt5/qttools/0003-src.pro-Add-option-noqdoc-to-disable-qdoc-builds.patch b/external/meta-qt5/recipes-qt/qt5/qttools/0003-src.pro-Add-option-noqdoc-to-disable-qdoc-builds.patch
new file mode 100644
index 00000000..06eec226
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qttools/0003-src.pro-Add-option-noqdoc-to-disable-qdoc-builds.patch
@@ -0,0 +1,25 @@
+From ffbd58e5a6c709592fb97a6d033820556b76ab53 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 14 Dec 2019 18:36:49 -0800
+Subject: [PATCH] src.pro: Add option noqdoc to disable qdoc builds
+
+it needs clang on host, so lets separate it out
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/src.pro | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/src.pro b/src/src.pro
+index 5c256ea3..196c34c7 100644
+--- a/src/src.pro
++++ b/src/src.pro
+@@ -25,7 +25,7 @@ qtConfig(library) {
+
+ include($$OUT_PWD/qdoc/qtqdoc-config.pri)
+ QT_FOR_CONFIG += qdoc-private
+-qtConfig(qdoc): qtConfig(thread): SUBDIRS += qdoc
++qtConfig(qdoc): qtConfig(thread):!contains(CONFIG, noqdoc): SUBDIRS += qdoc
+
+ !android|android_app: SUBDIRS += qtpaths
+
diff --git a/external/meta-qt5/recipes-qt/qt5/qttools/run-ptest b/external/meta-qt5/recipes-qt/qt5/qttools/run-ptest
deleted file mode 100644
index 5cd5e27e..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qttools/run-ptest
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-./tst_qtdiag
-./tst_qtattributionsscanner
diff --git a/external/meta-qt5/recipes-qt/qt5/qttools_git.bb b/external/meta-qt5/recipes-qt/qt5/qttools_git.bb
index 2885d9e4..fa42d227 100644
--- a/external/meta-qt5/recipes-qt/qt5/qttools_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qttools_git.bb
@@ -1,6 +1,5 @@
require qt5.inc
require qt5-git.inc
-require qt5-ptest.inc
HOMEPAGE = "http://www.qt.io"
LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )"
@@ -13,32 +12,43 @@ LIC_FILES_CHKSUM = " \
"
DEPENDS += "qtbase qtdeclarative qtxmlpatterns"
-
-# Patches from https://github.com/meta-qt5/qttools/commits/b5.11
-# 5.11.meta-qt5.6
+# Patches from https://github.com/meta-qt5/qttools/commits/b5.14
+# 5.14.meta-qt5.1
SRC_URI += " \
file://0001-add-noqtwebkit-configuration.patch \
file://0002-linguist-tools-cmake-allow-overriding-the-location-f.patch \
+ file://0003-src.pro-Add-option-noqdoc-to-disable-qdoc-builds.patch \
"
FILES_${PN}-tools += "${datadir}${QT_DIR_NAME}/phrasebooks"
FILES_${PN}-examples = "${datadir}${QT_DIR_NAME}/examples"
PACKAGECONFIG ??= ""
+PACKAGECONFIG_append_toolchain-clang = " clang"
+
PACKAGECONFIG[qtwebkit] = ",,qtwebkit"
+PACKAGECONFIG[clang] = ",,clang"
+
+COMPATIBLE_HOST_toolchain-clang_riscv32 = "null"
+COMPATIBLE_HOST_toolchain-clang_riscv64 = "null"
+
+export YOCTO_ALTERNATE_EXE_PATH = "${STAGING_BINDIR}/llvm-config"
+
+TOOLSTOBUILD += "linguist/lconvert linguist/lrelease linguist/lupdate pixeltool qtdiag qtpaths qtplugininfo"
+TOOLSTOBUILD += "${@bb.utils.contains('PACKAGECONFIG', 'clang', 'qdoc', '', d)}"
+TOOLSFORTARGET = "pixeltool qtdiag qtpaths qtplugininfo"
+TOOLSFORHOST = "linguist ${@bb.utils.contains('PACKAGECONFIG', 'clang', 'qdoc', '', d)}"
EXTRA_QMAKEVARS_PRE += " \
- CONFIG-=config_clang \
${@bb.utils.contains('PACKAGECONFIG', 'qtwebkit', '', 'CONFIG+=noqtwebkit', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'clang', 'CONFIG+=disable_external_rpath', 'CONFIG+=noqdoc', d)} \
+"
+EXTRA_QMAKEVARS_PRE_append_class-native = " CONFIG+=config_clang_done CONFIG-=config_clang"
+EXTRA_QMAKEVARS_PRE_append_class-nativesdk = " CONFIG+=config_clang_done CONFIG-=config_clang"
+EXTRA_QMAKEVARS_PRE_append_class-target = "\
+ ${@bb.utils.contains('PACKAGECONFIG', 'clang', 'CONFIG+=config_clang', 'CONFIG+=config_clang_done CONFIG-=config_clang', d)} \
"
-SRCREV = "ddc4fba789c21bd0ebca180fa9d7cde399a49e37"
+SRCREV = "9d5d92a49256af65a85fa69b58e6744c2722321b"
BBCLASSEXTEND = "native nativesdk"
-
-do_install_ptest() {
- mkdir -p ${D}${PTEST_PATH}
- t=${D}${PTEST_PATH}
- cp ${B}/tests/auto/qtdiag/tst_tdiag $t
- cp ${B}/tests/auto/qtattributionsscanner/tst_qtattributionsscanner $t
-}
diff --git a/external/meta-qt5/recipes-qt/qt5/qttranslations_git.bb b/external/meta-qt5/recipes-qt/qt5/qttranslations_git.bb
index 6689ab14..9b72798d 100644
--- a/external/meta-qt5/recipes-qt/qt5/qttranslations_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qttranslations_git.bb
@@ -10,7 +10,7 @@ DEPENDS += "qtbase qttools-native"
do_install_append() {
# remove qtquick1 translations - qtquick1 is gone
- for transfile in `find ${D}/${OE_QMAKE_PATH_TRANSLATIONS} -name qtquick1_*.qm -o -name qt_*.qm ! -name qt_help_*.qm`; do
+ for transfile in `find ${D}/${OE_QMAKE_PATH_TRANSLATIONS} -name qt_*.qm ! -name qt_help_*.qm`; do
rm $transfile
done
}
@@ -19,7 +19,6 @@ PACKAGES =. " \
${PN}-assistant \
${PN}-designer \
${PN}-linguist \
- ${PN}-qmlviewer \
${PN}-qtconnectivity \
${PN}-qtmultimedia \
${PN}-qtlocation \
@@ -47,10 +46,6 @@ FILES_${PN}-linguist = " \
${OE_QMAKE_PATH_TRANSLATIONS}/linguist_*.qm \
"
-FILES_${PN}-qmlviewer = " \
- ${OE_QMAKE_PATH_TRANSLATIONS}/qmlviewer_*.qm \
-"
-
FILES_${PN}-qtconnectivity = " \
${OE_QMAKE_PATH_TRANSLATIONS}/qtconnectivity_*.qm \
"
@@ -103,4 +98,4 @@ FILES_${PN}-qthelp = " \
${OE_QMAKE_PATH_TRANSLATIONS}/qt_help_*.qm \
"
-SRCREV = "ed5110171ca294207f341f46610c716170c06282"
+SRCREV = "c14fdb76539156836eb3d1c1a3d6b6875550c24c"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtvirtualkeyboard_git.bb b/external/meta-qt5/recipes-qt/qt5/qtvirtualkeyboard_git.bb
index 52d60ff5..1fe9c843 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtvirtualkeyboard_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtvirtualkeyboard_git.bb
@@ -19,23 +19,45 @@ PACKAGECONFIG[t9write] = "CONFIG+=t9write"
PACKAGECONFIG[lipi-toolkit] = "CONFIG+=lipi-toolkit"
PACKAGECONFIG[lang-all] = "CONFIG+=lang-all"
PACKAGECONFIG[lang-ar_AR] = "CONFIG+=lang-ar_AR"
+PACKAGECONFIG[lang-bg_BG] = "CONFIG+=lang-bg_BG"
+PACKAGECONFIG[lang-cs_CZ] = "CONFIG+=lang-cs_CZ"
PACKAGECONFIG[lang-da_DK] = "CONFIG+=lang-da_DK"
PACKAGECONFIG[lang-de_DE] = "CONFIG+=lang-de_DE"
+PACKAGECONFIG[lang-el_GR] = "CONFIG+=lang-el_GR"
PACKAGECONFIG[lang-en_GB] = "CONFIG+=lang-en_GB"
+PACKAGECONFIG[lang-en_US] = "CONFIG+=lang-en_US"
PACKAGECONFIG[lang-es_ES] = "CONFIG+=lang-es_ES"
+PACKAGECONFIG[lang-es_MX] = "CONFIG+=lang-es_MX"
+PACKAGECONFIG[lang-et_EE] = "CONFIG+=lang-et_EE"
PACKAGECONFIG[lang-fa_FA] = "CONFIG+=lang-fa_FA"
PACKAGECONFIG[lang-fi_FI] = "CONFIG+=lang-fi_FI"
+PACKAGECONFIG[lang-fr_CA] = "CONFIG+=lang-fr_CA"
PACKAGECONFIG[lang-fr_FR] = "CONFIG+=lang-fr_FR"
+PACKAGECONFIG[lang-he_IL] = "CONFIG+=lang-he_IL"
PACKAGECONFIG[lang-hi_IN] = "CONFIG+=lang-hi_IN"
+PACKAGECONFIG[lang-hr_HR] = "CONFIG+=lang-hr_HR"
+PACKAGECONFIG[lang-hu_HU] = "CONFIG+=lang-hu_HU"
+PACKAGECONFIG[lang-id_ID] = "CONFIG+=lang-id_ID"
PACKAGECONFIG[lang-it_IT] = "CONFIG+=lang-it_IT"
PACKAGECONFIG[lang-ja_JP] = "CONFIG+=lang-ja_JP"
PACKAGECONFIG[lang-ko_KR] = "CONFIG+=lang-ko_KR"
+PACKAGECONFIG[lang-ms_MY] = "CONFIG+=lang-ms_MY"
PACKAGECONFIG[lang-nb_NO] = "CONFIG+=lang-nb_NO"
+PACKAGECONFIG[lang-nl_NL] = "CONFIG+=lang-nl_NL"
PACKAGECONFIG[lang-pl_PL] = "CONFIG+=lang-pl_PL"
+PACKAGECONFIG[lang-pt_BR] = "CONFIG+=lang-pt_BR"
PACKAGECONFIG[lang-pt_PT] = "CONFIG+=lang-pt_PT"
PACKAGECONFIG[lang-ro_RO] = "CONFIG+=lang-ro_RO"
PACKAGECONFIG[lang-ru_RU] = "CONFIG+=lang-ru_RU"
+PACKAGECONFIG[lang-sk_SK] = "CONFIG+=lang-sk_SK"
+PACKAGECONFIG[lang-sl_SI] = "CONFIG+=lang-sl_SI"
+PACKAGECONFIG[lang-sq_AL] = "CONFIG+=lang-sq_AL"
+PACKAGECONFIG[lang-sr_SP] = "CONFIG+=lang-sr_SP"
PACKAGECONFIG[lang-sv_SE] = "CONFIG+=lang-sv_SE"
+PACKAGECONFIG[lang-th_TH] = "CONFIG+=lang-th_TH"
+PACKAGECONFIG[lang-tr_TR] = "CONFIG+=lang-tr_TR"
+PACKAGECONFIG[lang-uk_UA] = "CONFIG+=lang-uk_UA"
+PACKAGECONFIG[lang-vi_VN] = "CONFIG+=lang-vi_VN"
PACKAGECONFIG[lang-zh_CN] = "CONFIG+=lang-zh_CN"
PACKAGECONFIG[lang-zh_TW] = "CONFIG+=lang-zh_TW"
@@ -49,4 +71,4 @@ FILES_${PN} += "${OE_QMAKE_PATH_DATA}/qtvirtualkeyboard/lipi_toolkit"
DEPENDS += "qtbase qtdeclarative qtmultimedia qtquickcontrols qtsvg qtxmlpatterns qtdeclarative-native"
-SRCREV = "a8cab520dc7bedff73ec60a5a189b21cdf01f083"
+SRCREV = "bc84e924a2da7ab515900355dcda968d56d1644e"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwayland/0001-tst_seatv4-Include-array.patch b/external/meta-qt5/recipes-qt/qt5/qtwayland/0001-tst_seatv4-Include-array.patch
new file mode 100644
index 00000000..b21cb5a7
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtwayland/0001-tst_seatv4-Include-array.patch
@@ -0,0 +1,27 @@
+From e1c8cf94727583c666efe3e6852fa60fba9a652b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 6 Oct 2019 21:44:38 -0700
+Subject: [PATCH] tst_seatv4: Include <array>
+
+build fails with libc++ otherwise
+
+tests/auto/client/seatv4/tst_seatv4.cpp:330:43: error: implicit instantiation of undefined template 'std::__1::array<const char *, 4>'
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ tests/auto/client/seatv4/tst_seatv4.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/auto/client/seatv4/tst_seatv4.cpp b/tests/auto/client/seatv4/tst_seatv4.cpp
+index 2e17bef8..df78ba69 100644
+--- a/tests/auto/client/seatv4/tst_seatv4.cpp
++++ b/tests/auto/client/seatv4/tst_seatv4.cpp
+@@ -36,7 +36,7 @@
+ #include <QtWaylandClient/private/qwaylanddisplay_p.h>
+ #include <QtWaylandClient/private/qwaylandintegration_p.h>
+ #endif
+-
++#include <array>
+ using namespace MockCompositor;
+
+ // wl_seat version 5 was introduced in wayland 1.10, and although that's pretty old,
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwayland_git.bb b/external/meta-qt5/recipes-qt/qt5/qtwayland_git.bb
index 1524f5f8..fbd1b6f5 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwayland_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtwayland_git.bb
@@ -13,6 +13,10 @@ LIC_FILES_CHKSUM = " \
file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \
"
+# Patches from https://github.com/meta-qt5/qtwayland/commits/b5.14
+# 5.14.meta-qt5.1
+SRC_URI += "file://0001-tst_seatv4-Include-array.patch"
+
PACKAGECONFIG ?= " \
wayland-client \
wayland-server \
@@ -32,44 +36,15 @@ PACKAGECONFIG[xcomposite-egl] = "-feature-xcomposite-egl,-no-feature-xcomposite-
PACKAGECONFIG[xcomposite-glx] = "-feature-xcomposite-glx,-no-feature-xcomposite-glx,virtual/mesa"
PACKAGECONFIG[wayland-egl] = "-feature-wayland-egl,-no-feature-wayland-egl,virtual/egl"
PACKAGECONFIG[wayland-brcm] = "-feature-wayland-brcm,-no-feature-wayland-brcm,virtual/egl"
-PACKAGECONFIG[drm-egl-server] = "-feature-drm-egl-server,-no-feature-drm-egl-server,libdrm virtual/egl"
-PACKAGECONFIG[libhybris-egl-server] = "-feature-libhybris-egl-server,-no-feature-libhybris-egl-server,libhybris"
+PACKAGECONFIG[wayland-drm-egl-server-buffer] = "-feature-wayland-drm-egl-server-buffer,-no-feature-wayland-drm-egl-server-buffer,libdrm virtual/egl"
+PACKAGECONFIG[wayland-libhybris-egl-server-buffer] = "-feature-wayland-libhybris-egl-server-buffer,-no-feature-wayland-libhybris-egl-server-buffer,libhybris"
EXTRA_QMAKEVARS_CONFIGURE += "${PACKAGECONFIG_CONFARGS}"
-SRCREV = "9ce3088d226fddc18bcac170fa5cc5be3c29e371"
+SRCREV = "af3976e5e788392ab2b0299c11036c18493d8d40"
BBCLASSEXTEND =+ "native nativesdk"
# The same issue as in qtbase:
# http://errors.yoctoproject.org/Errors/Details/152641/
-LDFLAGS_append_x86 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
-
-# Since version 5.11.2 some private headers are not installed. Work around
-# until fixed upstream. See https://bugreports.qt.io/browse/QTBUG-71340 for
-# further details
-QTWAYLAND_INSTALL_PRIVATE_HEADERS_MANUALLY ?= "1"
-# First 6 characters before first + (e.g. 5.11.3-+git) or - (e.g. 5.11.3-2)
-SHRT_VER ?= "${@d.getVar('PV').split('+')[0].split('-')[0]}"
-do_install_append() {
- if [ -d "${B}/src/client" -a "${QTWAYLAND_INSTALL_PRIVATE_HEADERS_MANUALLY}" = "1" -a -d "${D}${includedir}/QtWaylandClient/${SHRT_VER}/QtWaylandClient/private/" ]; then
- for header in `find ${B}/src/client -name '*wayland-*.h'`; do
- header_base=`basename $header`
- dest="${D}${includedir}/QtWaylandClient/${SHRT_VER}/QtWaylandClient/private/$header_base"
- if [ ! -e "$dest" ]; then
- echo "Manual install: $header_base to $dest"
- install -m 644 "$header" "$dest"
- fi
- done
- fi
- if [ -d "${B}/src/compositor" -a "${QTWAYLAND_INSTALL_PRIVATE_HEADERS_MANUALLY}" = "1" -a -d "${D}${includedir}/QtCompositor/${SHRT_VER}/QtCompositor/private/" ]; then
- for header in `find ${B}/src/compositor -name '*wayland-*.h'`; do
- header_base=`basename $header`
- dest="${D}${includedir}/QtCompositor/${SHRT_VER}/QtCompositor/private/$header_base"
- if [ ! -e "$dest" ]; then
- echo "Manual install: $header_base to $dest"
- install -m 644 "$header" "$dest"
- fi
- done
- fi
-}
+LDFLAGS_append = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebchannel_git.bb b/external/meta-qt5/recipes-qt/qt5/qtwebchannel_git.bb
index 7aa6cc63..f66f2048 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebchannel_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebchannel_git.bb
@@ -12,4 +12,4 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtdeclarative qtwebsockets"
-SRCREV = "94fee0eaa3a5ce98bae8e5d68c91c0366fa94cdc"
+SRCREV = "d2c16a3e7e090c667dbbd409e35df29b498914e0"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/0001-Force-host-toolchain-configuration.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/0001-Force-host-toolchain-configuration.patch
index 86f37e1a..a1298f36 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/0001-Force-host-toolchain-configuration.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/0001-Force-host-toolchain-configuration.patch
@@ -1,4 +1,4 @@
-From 7c9b995ee8bc8798e41a14cb8007c06073006e64 Mon Sep 17 00:00:00 2001
+From fe603fbecb5731febc392b51bbbee1090be243d6 Mon Sep 17 00:00:00 2001
From: Samuli Piippo <samuli.piippo@qt.io>
Date: Wed, 15 Mar 2017 13:53:28 +0200
Subject: [PATCH] Force host toolchain configuration
@@ -13,12 +13,26 @@ for the qmakes's host architecture.
Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Samuli Piippo <samuli.piippo@qt.io>
---
+ src/buildtools/config/linux.pri | 2 +-
src/buildtools/configure_host.pro | 14 +++++++-------
- src/core/config/linux.pri | 2 +-
- 2 files changed, 8 insertions(+), 8 deletions(-)
+ src/buildtools/gn.pro | 4 ++--
+ 3 files changed, 10 insertions(+), 10 deletions(-)
+diff --git a/src/buildtools/config/linux.pri b/src/buildtools/config/linux.pri
+index ee08f81b..297a6862 100644
+--- a/src/buildtools/config/linux.pri
++++ b/src/buildtools/config/linux.pri
+@@ -124,7 +124,7 @@ contains(QT_ARCH, "mips") {
+
+ host_build {
+ gn_args += custom_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:host\"
+- GN_HOST_CPU = $$gnArch($$QT_ARCH)
++ GN_HOST_CPU = $$gnArch($$QMAKE_HOST.arch)
+ gn_args += host_cpu=\"$$GN_HOST_CPU\"
+ # Don't bother trying to use system libraries in this case
+ gn_args += use_glib=false
diff --git a/src/buildtools/configure_host.pro b/src/buildtools/configure_host.pro
-index dd0d3e32..70161c82 100644
+index dd0d3e32..6312c867 100644
--- a/src/buildtools/configure_host.pro
+++ b/src/buildtools/configure_host.pro
@@ -4,7 +4,7 @@ TEMPLATE = aux
@@ -37,9 +51,9 @@ index dd0d3e32..70161c82 100644
-" cc = \"$$which($$QMAKE_CC)\" " \
-" cxx = \"$$which($$QMAKE_CXX)\" " \
-" ld = \"$$which($$QMAKE_LINK)\" " \
-+" cc = \"$$which(gcc)\" " \
-+" cxx = \"$$which(g++)\" " \
-+" ld = \"$$which(g++)\" " \
++" cc = \"$$which($$CC_host)\" " \
++" cxx = \"$$which($$CXX_host)\" " \
++" ld = \"$$which($$CXX_host)\" " \
" ar = \"$$which(ar)\" " \
" nm = \"$$which(nm)\" " \
" extra_cppflags = \"$$GN_HOST_EXTRA_CPPFLAGS\" " \
@@ -50,22 +64,24 @@ index dd0d3e32..70161c82 100644
-" cc = \"$$which($$QMAKE_CC)\" " \
-" cxx = \"$$which($$QMAKE_CXX)\" " \
-" ld = \"$$which($$QMAKE_LINK)\" " \
-+" cc = \"$$which(gcc)\" " \
-+" cxx = \"$$which(g++)\" " \
-+" ld = \"$$which(g++)\" " \
++" cc = \"$$which($$CC_host)\" " \
++" cxx = \"$$which($$CXX_host)\" " \
++" ld = \"$$which($$CXX_host)\" " \
" ar = \"$$which(ar)\" " \
" nm = \"$$which(nm)\" " \
" toolchain_args = { " \
-diff --git a/src/core/config/linux.pri b/src/core/config/linux.pri
-index 4ade2827..cad3d7bf 100644
---- a/src/core/config/linux.pri
-+++ b/src/core/config/linux.pri
-@@ -92,7 +92,7 @@ contains(QT_ARCH, "mips") {
+diff --git a/src/buildtools/gn.pro b/src/buildtools/gn.pro
+index 033202e6..a8ca6567 100644
+--- a/src/buildtools/gn.pro
++++ b/src/buildtools/gn.pro
+@@ -19,8 +19,8 @@ build_pass|!debug_and_release {
+ gn_bootstrap = $$system_path($$absolute_path(gn/build/gen.py, $$src_3rd_party_dir))
+
+ gn_gen_args = --no-last-commit-position --out-path $$out_path \
+- --cc \"$$which($$QMAKE_CC)\" --cxx \"$$which($$QMAKE_CXX)\" \
+- --ld \"$$which($$QMAKE_LINK)\"
++ --cc \"$$which($$CC_host)\" --cxx \"$$which($$CXX_host)\" \
++ --ld \"$$which($$CXX_host)\" --ar \"$$which(ar)\"
+
+ msvc:!clang_cl: gn_gen_args += --use-lto
- host_build {
- gn_args += custom_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:host\"
-- GN_HOST_CPU = $$gnArch($$QT_ARCH)
-+ GN_HOST_CPU = $$gnArch($$QMAKE_HOST.arch)
- gn_args += host_cpu=\"$$GN_HOST_CPU\"
- # Don't bother trying to use system libraries in this case
- gn_args += use_glib=false
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/0002-chromium_overrides.cpp-Fix-build-with-plugins-and-oz.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/0002-chromium_overrides.cpp-Fix-build-with-plugins-and-oz.patch
deleted file mode 100644
index 5ae32d59..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/0002-chromium_overrides.cpp-Fix-build-with-plugins-and-oz.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 3eaf551ec5f68933c636404945e6404e2508160b Mon Sep 17 00:00:00 2001
-From: Martin Jansa <Martin.Jansa@gmail.com>
-Date: Sun, 10 Jun 2018 10:26:17 +0000
-Subject: [PATCH] chromium_overrides.cpp: Fix build with plugins and ozone
- enabled
-
-* otherwise it fails with:
- | make[3]: Entering directory '/OE/build/owpb/webos-ports/tmp-glibc/work/i586-webos-linux/qtwebengine/5.10.1+gitAUTOINC+9dc8dff7a8_c858cc7609-r0/build/src/core'
-| creating linker version script QtWebEngineCore.version
-| rm -f libQt5WebEngineCore.so.5.10.1 libQt5WebEngineCore.so libQt5WebEngineCore.so.5 libQt5WebEngineCore.so.5.10
-| linking ../../lib/libQt5WebEngineCore.so.5.10.1
-| /OE/build/owpb/webos-ports/tmp-glibc/work/i586-webos-linux/qtwebengine/5.10.1+gitAUTOINC+9dc8dff7a8_c858cc7609-r0/recipe-sysroot-native/usr/bin/i586-webos-linux/../../libexec/i586-webos-linux/gcc/i586-webos-linux/7.3.0/ld: error: /OE/build/owpb/webos-ports/tmp-glibc/work/i586-webos-linux/qtwebengine/5.10.1+gitAUTOINC+9dc8dff7a8_c858cc7609-r0/build/src/core/release/obj/content/browser/browser/pepper_truetype_font_list_ozone.o: multiple definition of 'content::GetFontFamilies_SlowBlocking(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)'
-| /OE/build/owpb/webos-ports/tmp-glibc/work/i586-webos-linux/qtwebengine/5.10.1+gitAUTOINC+9dc8dff7a8_c858cc7609-r0/recipe-sysroot-native/usr/bin/i586-webos-linux/../../libexec/i586-webos-linux/gcc/i586-webos-linux/7.3.0/ld: /OE/build/owpb/webos-ports/tmp-glibc/work/i586-webos-linux/qtwebengine/5.10.1+gitAUTOINC+9dc8dff7a8_c858cc7609-r0/build/src/core/release/obj/QtWebEngineCore/chromium_overrides.o: previous definition here
-| /OE/build/owpb/webos-ports/tmp-glibc/work/i586-webos-linux/qtwebengine/5.10.1+gitAUTOINC+9dc8dff7a8_c858cc7609-r0/recipe-sysroot-native/usr/bin/i586-webos-linux/../../libexec/i586-webos-linux/gcc/i586-webos-linux/7.3.0/ld: error: /OE/build/owpb/webos-ports/tmp-glibc/work/i586-webos-linux/qtwebengine/5.10.1+gitAUTOINC+9dc8dff7a8_c858cc7609-r0/build/src/core/release/obj/content/browser/browser/pepper_truetype_font_list_ozone.o: multiple definition of 'content::GetFontsInFamily_SlowBlocking(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<ppapi::proxy::SerializedTrueTypeFontDesc, std::allocator<ppapi::proxy::SerializedTrueTypeFontDesc> >*)'
-| /OE/build/owpb/webos-ports/tmp-glibc/work/i586-webos-linux/qtwebengine/5.10.1+gitAUTOINC+9dc8dff7a8_c858cc7609-r0/recipe-sysroot-native/usr/bin/i586-webos-linux/../../libexec/i586-webos-linux/gcc/i586-webos-linux/7.3.0/ld: /OE/build/owpb/webos-ports/tmp-glibc/work/i586-webos-linux/qtwebengine/5.10.1+gitAUTOINC+9dc8dff7a8_c858cc7609-r0/build/src/core/release/obj/QtWebEngineCore/chromium_overrides.o: previous definition here
-| collect2: error: ld returned 1 exit status
-| Makefile.core_module:74: recipe for target '../../lib/libQt5WebEngineCore.so.5.10.1' failed
-| make[3]: *** [../../lib/libQt5WebEngineCore.so.5.10.1] Error 1
-| make[3]: Leaving directory '/OE/build/owpb/webos-ports/tmp-glibc/work/i586-webos-linux/qtwebengine/5.10.1+gitAUTOINC+9dc8dff7a8_c858cc7609-r0/build/src/core'
-| Makefile:122: recipe for target 'sub-core_module-pro-make_first' failed
-| make[2]: *** [sub-core_module-pro-make_first] Error 2
-| make[2]: Leaving directory '/OE/build/owpb/webos-ports/tmp-glibc/work/i586-webos-linux/qtwebengine/5.10.1+gitAUTOINC+9dc8dff7a8_c858cc7609-r0/build/src/core'
-| Makefile:78: recipe for target 'sub-core-make_first' failed
-| make[1]: *** [sub-core-make_first] Error 2
-| make[1]: Leaving directory '/OE/build/owpb/webos-ports/tmp-glibc/work/i586-webos-linux/qtwebengine/5.10.1+gitAUTOINC+9dc8dff7a8_c858cc7609-r0/build/src'
-| Makefile:46: recipe for target 'sub-src-make_first' failed
-| make: *** [sub-src-make_first] Error 2
-| ERROR: oe_runmake failed
-| WARNING: /OE/build/owpb/webos-ports/tmp-glibc/work/i586-webos-linux/qtwebengine/5.10.1+gitAUTOINC+9dc8dff7a8_c858cc7609-r0/temp/run.do_compile.10122:1 exit 1 from 'exit 1'
-| ERROR: Function failed: do_compile (log file is located at /OE/build/owpb/webos-ports/tmp-glibc/work/i586-webos-linux/qtwebengine/5.10.1+gitAUTOINC+9dc8dff7a8_c858cc7609-r0/temp/log.do_compile.10122)
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-Signed-off-by: Christophe Chapuis <chris.chapuis@gmail.com>
----
- src/core/chromium_overrides.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/core/chromium_overrides.cpp b/src/core/chromium_overrides.cpp
-index 8f6687ff..994e2799 100644
---- a/src/core/chromium_overrides.cpp
-+++ b/src/core/chromium_overrides.cpp
-@@ -159,7 +159,7 @@ std::unique_ptr<base::ListValue> GetFontList_SlowBlocking()
- return std::move(font_list);
- }
-
--#if BUILDFLAG(ENABLE_PLUGINS)
-+#if BUILDFLAG(ENABLE_PLUGINS) && !defined(USE_OZONE)
- // content/browser/renderer_host/pepper/pepper_truetype_font_list.h
- void GetFontFamilies_SlowBlocking(std::vector<std::string> *font_families)
- {
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/0003-musl-don-t-use-pvalloc-as-it-s-not-available-on-musl.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/0003-musl-don-t-use-pvalloc-as-it-s-not-available-on-musl.patch
index a0a850d5..df52bdc8 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/0003-musl-don-t-use-pvalloc-as-it-s-not-available-on-musl.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/0003-musl-don-t-use-pvalloc-as-it-s-not-available-on-musl.patch
@@ -1,4 +1,4 @@
-From df92af3dd48877c6a58887de563e65279d213a50 Mon Sep 17 00:00:00 2001
+From 455479c661d2ed39882842a623b0aec29bd3c3d9 Mon Sep 17 00:00:00 2001
From: Samuli Piippo <samuli.piippo@qt.io>
Date: Tue, 12 Dec 2017 16:06:14 +0200
Subject: [PATCH] musl: don't use pvalloc as it's not available on musl
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/0004-musl-link-against-libexecinfo.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/0004-musl-link-against-libexecinfo.patch
index 489971ae..337c14ac 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/0004-musl-link-against-libexecinfo.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/0004-musl-link-against-libexecinfo.patch
@@ -1,4 +1,4 @@
-From 0c440d91b394d13188803800b968db28309c1d82 Mon Sep 17 00:00:00 2001
+From 507d6323fe871cee981155675cb5ef7cbd253db1 Mon Sep 17 00:00:00 2001
From: Samuli Piippo <samuli.piippo@qt.io>
Date: Thu, 14 Dec 2017 11:28:10 +0200
Subject: [PATCH] musl: link against libexecinfo
@@ -10,10 +10,10 @@ Signed-off-by: Samuli Piippo <samuli.piippo@qt.io>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/core/core_module.pro b/src/core/core_module.pro
-index d21985e6..eeebeb4f 100644
+index 4b9268e1..be04b160 100644
--- a/src/core/core_module.pro
+++ b/src/core/core_module.pro
-@@ -54,7 +54,7 @@ linux {
+@@ -58,7 +58,7 @@ linux {
POST_TARGETDEPS += $$NINJA_TARGETDEPS
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/0005-mkspecs-Allow-builds-with-libc-glibc.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/0005-mkspecs-Allow-builds-with-libc-glibc.patch
new file mode 100644
index 00000000..06c659c9
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/0005-mkspecs-Allow-builds-with-libc-glibc.patch
@@ -0,0 +1,26 @@
+From 6d2e83489770c2eae6d15d06ca9c04667140bb84 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 12 Nov 2019 19:53:59 -0800
+Subject: [PATCH] mkspecs: Allow builds with libc != glibc
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/buildtools/config/support.pri | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/src/buildtools/config/support.pri b/src/buildtools/config/support.pri
+index 5bdd808d..19540787 100644
+--- a/src/buildtools/config/support.pri
++++ b/src/buildtools/config/support.pri
+@@ -89,11 +89,6 @@ defineTest(qtwebengine_checkErrorForLinux) {
+ return(false)
+ }
+
+- !qtConfig(webengine-system-glibc) {
+- qtwebengine_skipBuild("A suitable version >= 2.27 of libc required to build QtWebEngine could not be found.")
+- return(false)
+- }
+-
+ !qtConfig(webengine-system-khr) {
+ qtwebengine_skipBuild("Khronos development headers required to build QtWebEngine are missing (see mesa/libegl1-mesa-dev)")
+ return(false)
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0001-chromium-Force-host-toolchain-configuration.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0001-chromium-Force-host-toolchain-configuration.patch
deleted file mode 100644
index 8bf2140b..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0001-chromium-Force-host-toolchain-configuration.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From a80fc13086a493cc543e29c5d10e976ac7f680d4 Mon Sep 17 00:00:00 2001
-From: Samuli Piippo <samuli.piippo@qt.io>
-Date: Wed, 15 Mar 2017 13:53:28 +0200
-Subject: [PATCH] chromium: Force host toolchain configuration
-
-Force gcc/g++ to be used for parts using host toolchain, since
-the option(host_build) does not work in yocto builds.
-
-Upstream-Status: Inappropriate [OE specific]
-Signed-off-by: Samuli Piippo <samuli.piippo@qt.io>
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- chromium/tools/gn/bootstrap/bootstrap.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/chromium/tools/gn/bootstrap/bootstrap.py b/chromium/tools/gn/bootstrap/bootstrap.py
-index 93c6446f28c..0fe7e6737d2 100755
---- a/chromium/tools/gn/bootstrap/bootstrap.py
-+++ b/chromium/tools/gn/bootstrap/bootstrap.py
-@@ -352,10 +352,10 @@ def write_gn_ninja(path, root_gen_dir, options):
- ld = os.environ.get('LD', cxx)
- ar = os.environ.get('AR', 'ar -X64')
- else:
-- cc = os.environ.get('CC', 'cc')
-- cxx = os.environ.get('CXX', 'c++')
-+ cc = os.environ.get('CC_host', 'gcc')
-+ cxx = os.environ.get('CXX_host', 'g++')
- ld = cxx
-- ar = os.environ.get('AR', 'ar')
-+ ar = os.environ.get('AR_host', 'ar')
-
- # QTBUG-64759
- # cflags = os.environ.get('CFLAGS', '').split()
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0002-chromium-workaround-for-too-long-.rps-file-name.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0001-chromium-workaround-for-too-long-.rps-file-name.patch
index f80f7b0a..ff2cf2ed 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0002-chromium-workaround-for-too-long-.rps-file-name.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0001-chromium-workaround-for-too-long-.rps-file-name.patch
@@ -1,4 +1,4 @@
-From 70c519aa0eb4da6565ad78914a8687b6f5bf1bb8 Mon Sep 17 00:00:00 2001
+From 8dc7d83d58f6f036d021ed27dd05322b654e21bf Mon Sep 17 00:00:00 2001
From: Samuli Piippo <samuli.piippo@qt.io>
Date: Thu, 30 Mar 2017 11:37:24 +0300
Subject: [PATCH] chromium: workaround for too long .rps file name
@@ -14,14 +14,14 @@ le.rsp): Unable to create file. File name too long
Task-number: QTBUG-59769
Change-Id: I73c5e64ae5174412be2a675e35b0b6047f2bf4c1
---
- chromium/tools/gn/ninja_action_target_writer.cc | 9 +++++++++
+ gn/tools/gn/ninja_action_target_writer.cc | 9 +++++++++
1 file changed, 9 insertions(+)
-diff --git a/chromium/tools/gn/ninja_action_target_writer.cc b/chromium/tools/gn/ninja_action_target_writer.cc
-index bab07c5d2bb..8f889aebc18 100644
---- a/chromium/tools/gn/ninja_action_target_writer.cc
-+++ b/chromium/tools/gn/ninja_action_target_writer.cc
-@@ -117,9 +117,18 @@ std::string NinjaActionTargetWriter::WriteRuleDefinition() {
+diff --git a/gn/tools/gn/ninja_action_target_writer.cc b/gn/tools/gn/ninja_action_target_writer.cc
+index 7e945c0de0e..3deb587668c 100644
+--- a/gn/tools/gn/ninja_action_target_writer.cc
++++ b/gn/tools/gn/ninja_action_target_writer.cc
+@@ -118,9 +118,18 @@ std::string NinjaActionTargetWriter::WriteRuleDefinition() {
// strictly necessary for regular one-shot actions, but it's easier to
// just always define unique_name.
std::string rspfile = custom_rule_name;
@@ -30,7 +30,7 @@ index bab07c5d2bb..8f889aebc18 100644
+ //please note ".$unique_name" is not used at the moment
+ int pos = 0;
+ std::string delimiter("_");
-+ while (rspfile.length() > 251 && (pos = rspfile.find_last_of(delimiter)) != std::string::npos)
++ while (rspfile.length() > 250 && (pos = rspfile.find_last_of(delimiter)) != std::string::npos)
+ rspfile = rspfile.substr(0,pos);
+
if (!target_->sources().empty())
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0002-chromium-stack-pointer-clobber.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0002-chromium-stack-pointer-clobber.patch
new file mode 100644
index 00000000..e2e86212
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0002-chromium-stack-pointer-clobber.patch
@@ -0,0 +1,49 @@
+From dcc7962a9e9eb8fc10728df0b72e91794d1ee9d9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 23 Dec 2018 16:58:04 -0800
+Subject: [PATCH] chromium: stack pointer clobber
+
+Do not add stack pointer to clobber list
+
+it was being ignored until gcc 9.0 became capable
+of flagging this silent ignoring via [1]
+
+[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52813<Paste>
+
+Upstream-Status: Submitted [https://chromium-review.googlesource.com/c/linux-syscall-support/+/1390160]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ chromium/third_party/lss/linux_syscall_support.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/chromium/third_party/lss/linux_syscall_support.h b/chromium/third_party/lss/linux_syscall_support.h
+index 9276f5627af..622cc1fbf7e 100644
+--- a/chromium/third_party/lss/linux_syscall_support.h
++++ b/chromium/third_party/lss/linux_syscall_support.h
+@@ -2012,7 +2012,7 @@ struct kernel_statfs {
+ : "i" (__NR_##name), "ri" ((long)(arg1)), \
+ "c" ((long)(arg2)), "d" ((long)(arg3)), \
+ "S" ((long)(arg4)), "D" ((long)(arg5)) \
+- : "esp", "memory"); \
++ : "memory"); \
+ LSS_RETURN(type,__res); \
+ }
+ #undef _syscall6
+@@ -2034,7 +2034,7 @@ struct kernel_statfs {
+ : "i" (__NR_##name), "0" ((long)(&__s)), \
+ "c" ((long)(arg2)), "d" ((long)(arg3)), \
+ "S" ((long)(arg4)), "D" ((long)(arg5)) \
+- : "esp", "memory"); \
++ : "memory"); \
+ LSS_RETURN(type,__res); \
+ }
+ LSS_INLINE int LSS_NAME(clone)(int (*fn)(void *), void *child_stack,
+@@ -2120,7 +2120,7 @@ struct kernel_statfs {
+ : "0"(-EINVAL), "i"(__NR_clone),
+ "m"(fn), "m"(child_stack), "m"(flags), "m"(arg),
+ "m"(parent_tidptr), "m"(newtls), "m"(child_tidptr)
+- : "esp", "memory", "ecx", "edx", "esi", "edi");
++ : "memory", "ecx", "edx", "esi", "edi");
+ LSS_RETURN(int, __res);
+ }
+
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0003-chromium-Fix-build-with-gcc8.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0003-chromium-Fix-build-with-gcc8.patch
deleted file mode 100644
index 5323a0f1..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0003-chromium-Fix-build-with-gcc8.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From ad0dd667c3459538149de4479d18c1793af91d43 Mon Sep 17 00:00:00 2001
-From: Martin Jansa <Martin.Jansa@gmail.com>
-Date: Tue, 5 Jun 2018 13:58:16 +0000
-Subject: [PATCH] chromium: Fix build with gcc8
-
----
- chromium/mojo/public/c/system/buffer.h | 2 +-
- chromium/mojo/public/c/system/data_pipe.h | 2 +-
- chromium/mojo/public/c/system/message_pipe.h | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/chromium/mojo/public/c/system/buffer.h b/chromium/mojo/public/c/system/buffer.h
-index 09f6d285f3e..e516a09e498 100644
---- a/chromium/mojo/public/c/system/buffer.h
-+++ b/chromium/mojo/public/c/system/buffer.h
-@@ -35,7 +35,7 @@ const MojoCreateSharedBufferOptionsFlags
- ((MojoCreateSharedBufferOptionsFlags)0)
- #endif
-
--MOJO_STATIC_ASSERT(MOJO_ALIGNOF(int64_t) == 8, "int64_t has weird alignment");
-+MOJO_STATIC_ASSERT(MOJO_ALIGNOF(int64_t) == 4 || MOJO_ALIGNOF(int64_t) == 8, "int64_t has weird alignment");
- struct MOJO_ALIGNAS(8) MojoCreateSharedBufferOptions {
- uint32_t struct_size;
- MojoCreateSharedBufferOptionsFlags flags;
-diff --git a/chromium/mojo/public/c/system/data_pipe.h b/chromium/mojo/public/c/system/data_pipe.h
-index 62adbea1ea6..76225858ba8 100644
---- a/chromium/mojo/public/c/system/data_pipe.h
-+++ b/chromium/mojo/public/c/system/data_pipe.h
-@@ -46,7 +46,7 @@ const MojoCreateDataPipeOptionsFlags MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE =
- ((MojoCreateDataPipeOptionsFlags)0)
- #endif
-
--MOJO_STATIC_ASSERT(MOJO_ALIGNOF(int64_t) == 8, "int64_t has weird alignment");
-+MOJO_STATIC_ASSERT(MOJO_ALIGNOF(int64_t) == 4 || MOJO_ALIGNOF(int64_t) == 8, "int64_t has weird alignment");
- struct MOJO_ALIGNAS(8) MojoCreateDataPipeOptions {
- MOJO_ALIGNAS(4) uint32_t struct_size;
- MOJO_ALIGNAS(4) MojoCreateDataPipeOptionsFlags flags;
-diff --git a/chromium/mojo/public/c/system/message_pipe.h b/chromium/mojo/public/c/system/message_pipe.h
-index f0f69d1025f..364a02971e2 100644
---- a/chromium/mojo/public/c/system/message_pipe.h
-+++ b/chromium/mojo/public/c/system/message_pipe.h
-@@ -44,7 +44,7 @@ const MojoCreateMessagePipeOptionsFlags
- ((MojoCreateMessagePipeOptionsFlags)0)
- #endif
-
--MOJO_STATIC_ASSERT(MOJO_ALIGNOF(int64_t) == 8, "int64_t has weird alignment");
-+MOJO_STATIC_ASSERT(MOJO_ALIGNOF(int64_t) == 4 || MOJO_ALIGNOF(int64_t) == 8, "int64_t has weird alignment");
- struct MOJO_ALIGNAS(8) MojoCreateMessagePipeOptions {
- uint32_t struct_size;
- MojoCreateMessagePipeOptionsFlags flags;
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0003-chromium-fix-build-with-clang.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0003-chromium-fix-build-with-clang.patch
new file mode 100644
index 00000000..55f61d03
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0003-chromium-fix-build-with-clang.patch
@@ -0,0 +1,91 @@
+From e44d59aff5c23049ed765d872b167c27f9d2be23 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 2 Feb 2019 19:28:59 -0800
+Subject: [PATCH] chromium: fix build with clang
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ chromium/build/config/compiler/BUILD.gn | 27 ++-----------------------
+ 1 file changed, 2 insertions(+), 25 deletions(-)
+
+diff --git a/chromium/build/config/compiler/BUILD.gn b/chromium/build/config/compiler/BUILD.gn
+index be485fd89b9..7179df05451 100644
+--- a/chromium/build/config/compiler/BUILD.gn
++++ b/chromium/build/config/compiler/BUILD.gn
+@@ -773,8 +773,6 @@ config("compiler_cpu_abi") {
+ }
+ } else if (current_cpu == "arm") {
+ if (is_clang && !is_android && !is_nacl) {
+- cflags += [ "--target=arm-linux-gnueabihf" ]
+- ldflags += [ "--target=arm-linux-gnueabihf" ]
+ }
+ if (!is_nacl) {
+ cflags += [
+@@ -787,8 +785,6 @@ config("compiler_cpu_abi") {
+ }
+ } else if (current_cpu == "arm64") {
+ if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
+- cflags += [ "--target=aarch64-linux-gnu" ]
+- ldflags += [ "--target=aarch64-linux-gnu" ]
+ }
+ } else if (current_cpu == "mipsel" && !is_nacl) {
+ ldflags += [ "-Wl,--hash-style=sysv" ]
+@@ -797,9 +793,6 @@ config("compiler_cpu_abi") {
+ if (is_android) {
+ cflags += [ "--target=mipsel-linux-android" ]
+ ldflags += [ "--target=mipsel-linux-android" ]
+- } else {
+- cflags += [ "--target=mipsel-linux-gnu" ]
+- ldflags += [ "--target=mipsel-linux-gnu" ]
+ }
+ } else {
+ cflags += [ "-EL" ]
+@@ -878,10 +871,7 @@ config("compiler_cpu_abi") {
+ } else if (current_cpu == "mips" && !is_nacl) {
+ ldflags += [ "-Wl,--hash-style=sysv" ]
+ if (custom_toolchain == "") {
+- if (is_clang) {
+- cflags += [ "--target=mips-linux-gnu" ]
+- ldflags += [ "--target=mips-linux-gnu" ]
+- } else {
++ if (!is_clang) {
+ cflags += [ "-EB" ]
+ ldflags += [ "-EB" ]
+ }
+@@ -928,9 +918,6 @@ config("compiler_cpu_abi") {
+ if (is_android) {
+ cflags += [ "--target=mips64el-linux-android" ]
+ ldflags += [ "--target=mips64el-linux-android" ]
+- } else {
+- cflags += [ "--target=mips64el-linux-gnuabi64" ]
+- ldflags += [ "--target=mips64el-linux-gnuabi64" ]
+ }
+ } else {
+ cflags += [
+@@ -987,10 +974,7 @@ config("compiler_cpu_abi") {
+ } else if (current_cpu == "mips64") {
+ ldflags += [ "-Wl,--hash-style=sysv" ]
+ if (custom_toolchain == "") {
+- if (is_clang) {
+- cflags += [ "--target=mips64-linux-gnuabi64" ]
+- ldflags += [ "--target=mips64-linux-gnuabi64" ]
+- } else {
++ if (!is_clang) {
+ cflags += [
+ "-EB",
+ "-mabi=64",
+@@ -1169,13 +1153,6 @@ config("compiler_deterministic") {
+ }
+ }
+ }
+-
+- # Tells the compiler not to use absolute paths when passing the default
+- # paths to the tools it invokes. We don't want this because we don't
+- # really need it and it can mess up the goma cache entries.
+- if (is_clang && !is_nacl) {
+- cflags += [ "-no-canonical-prefixes" ]
+- }
+ }
+
+ config("clang_revision") {
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0004-chromium-Exclude-CRC32-for-32bit-arm.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0004-chromium-Exclude-CRC32-for-32bit-arm.patch
new file mode 100644
index 00000000..e5c1dcbd
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0004-chromium-Exclude-CRC32-for-32bit-arm.patch
@@ -0,0 +1,33 @@
+From fc3765e4f2f8cff17a13736085a402425696e6e7 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 5 Feb 2019 14:32:20 -0800
+Subject: [PATCH] chromium: Exclude CRC32 for 32bit arm
+
+This fixes build issues during cross compiling for linux using clang
+
+Fixes
+src/3rdparty/chromium/third_party/zlib/crc32_simd.c:184: undefined reference to `__crc32d'
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ chromium/third_party/zlib/BUILD.gn | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/chromium/third_party/zlib/BUILD.gn b/chromium/third_party/zlib/BUILD.gn
+index 29dda54ac20..6870dbb9f08 100644
+--- a/chromium/third_party/zlib/BUILD.gn
++++ b/chromium/third_party/zlib/BUILD.gn
+@@ -78,8 +78,11 @@ if (use_arm_neon_optimizations) {
+ # Disabled for iPhone, as described in DDI0487C_a_armv8_arm:
+ # "All implementations of the ARMv8.1 architecture are required to
+ # implement the CRC32* instructions. These are optional in ARMv8.0."
++ defines = []
+ if (!is_ios) {
+- defines = [ "CRC32_ARMV8_CRC32" ]
++ if (current_cpu == "arm64") {
++ defines += [ "CRC32_ARMV8_CRC32" ]
++ }
+ if (is_android) {
+ defines += [ "ARMV8_OS_ANDROID" ]
+ } else if (is_linux || is_chromeos) {
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0005-chromium-Do-not-try-to-set-the-guessed-values-for-ma.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0005-chromium-Do-not-try-to-set-the-guessed-values-for-ma.patch
new file mode 100644
index 00000000..c9df775d
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0005-chromium-Do-not-try-to-set-the-guessed-values-for-ma.patch
@@ -0,0 +1,38 @@
+From 998a4037e9c057c9735d8b0df57c2eca5b452d0b Mon Sep 17 00:00:00 2001
+From: Johannes Pointner <johannes.pointner@br-automation.com>
+Date: Fri, 3 May 2019 09:12:38 +0200
+Subject: [PATCH] chromium: Do not try to set the guessed values for
+ march/mtune/float-abi OE config machinary has computed these values already
+ and fed it via compiler cmdline to chromium build
+
+I think upstream should check for the values on compiler cmdline
+before overriding these
+
+Upstream-Status: Inappropriate [OE-Specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Johannes Pointner <johannes.pointner@br-automation.com>
+---
+ chromium/build/config/compiler/BUILD.gn | 9 ---------
+ 1 file changed, 9 deletions(-)
+
+diff --git a/chromium/build/config/compiler/BUILD.gn b/chromium/build/config/compiler/BUILD.gn
+index 7179df05451..884c9714bbb 100644
+--- a/chromium/build/config/compiler/BUILD.gn
++++ b/chromium/build/config/compiler/BUILD.gn
+@@ -774,15 +774,6 @@ config("compiler_cpu_abi") {
+ } else if (current_cpu == "arm") {
+ if (is_clang && !is_android && !is_nacl) {
+ }
+- if (!is_nacl) {
+- cflags += [
+- "-march=$arm_arch",
+- "-mfloat-abi=$arm_float_abi",
+- ]
+- }
+- if (arm_tune != "") {
+- cflags += [ "-mtune=$arm_tune" ]
+- }
+ } else if (current_cpu == "arm64") {
+ if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
+ }
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0006-chromium-aarch64-skia-build-fix.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0006-chromium-aarch64-skia-build-fix.patch
new file mode 100644
index 00000000..6a659ae9
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0006-chromium-aarch64-skia-build-fix.patch
@@ -0,0 +1,64 @@
+From 2ce7742c9dfde9ccbf2ede0db6359beb18c49189 Mon Sep 17 00:00:00 2001
+From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+Date: Thu, 8 Mar 2018 15:39:55 +0100
+Subject: [PATCH] chromium: aarch64 skia build fix
+
+Upstream-Status: Inappropriate
+
+GCC (tested rocko's 7.3.0) cannot find these intrinsics and the build fails:
+
+../../third_party/skia/src/opts/SkRasterPipeline_opts.h: In function 'neon::F neon::from_half(neon::U16)':
+../../third_party/skia/src/opts/SkRasterPipeline_opts.h:657:26: error: cannot convert 'neon::U16 {aka short unsigned int}' to 'float16x4_ t {aka __vector(4) __ fp16}' for argument '1' to '
+float32x4_t vcvt_f32_f16(float16x4_t)'
+ return vcvt_f32_f16(h);
+ ^
+../../third_party/skia/src/opts/SkRasterPipeline_opts.h: In function 'neon::U16 neon::to_half(neon::F)':
+../../third_party/skia/src/opts/SkRasterPipeline_opts.h:677:26: error: cannot convert 'neon::F {aka float}' to 'float32x4_t {aka __vector (4) float}' for argum ent '1' to 'float16x4_t vcvt
+_f16_f32(float32x4_t)'
+ return vcvt_f16_f32(f);
+ ^
+
+Upstream seems to have had similar issues according to
+https://skia-review.googlesource.com/c/skia/+/84222, but there is no fix at the
+moment.
+
+Signed-off-by: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+---
+ .../skia/src/opts/SkRasterPipeline_opts.h | 17 ++---------------
+ 1 file changed, 2 insertions(+), 15 deletions(-)
+
+diff --git a/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h b/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h
+index b59506dcd6d..b8f22c948c0 100644
+--- a/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h
++++ b/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h
+@@ -972,13 +972,7 @@ SI F approx_powf(F x, F y) {
+ }
+
+ SI F from_half(U16 h) {
+-#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \
+- && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
+- __fp16 fp16;
+- memcpy(&fp16, &h, sizeof(U16));
+- return float(fp16);
+-
+-#elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
++#if defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
+ return _mm256_cvtph_ps(h);
+
+ #else
+@@ -995,14 +989,7 @@ SI F from_half(U16 h) {
+ }
+
+ SI U16 to_half(F f) {
+-#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \
+- && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
+- __fp16 fp16 = __fp16(f);
+- U16 u16;
+- memcpy(&u16, &fp16, sizeof(U16));
+- return u16;
+-
+-#elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
++#if defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
+ return _mm256_cvtps_ph(f, _MM_FROUND_CUR_DIRECTION);
+
+ #else
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0007-chromium-fix-build-after-y2038-changes-in-glibc.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0007-chromium-fix-build-after-y2038-changes-in-glibc.patch
new file mode 100644
index 00000000..aeb496bd
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0007-chromium-fix-build-after-y2038-changes-in-glibc.patch
@@ -0,0 +1,28 @@
+From a0bd9300aa9c405216f504d602c7dd8d5b35eb21 Mon Sep 17 00:00:00 2001
+From: Jiri Slaby <jslaby@suse.cz>
+Date: Thu, 11 Jul 2019 09:35:13 +0200
+Subject: [PATCH] chromium: fix build after y2038 changes in glibc
+
+SIOCGSTAMP is defined in linux/sockios.h since kernel 5.2. Include that
+file wherever needed.
+
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+
+Upstream-Status: Pending
+---
+ chromium/third_party/webrtc/rtc_base/physical_socket_server.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc b/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc
+index c1d6d26acc6..6de81b751dd 100644
+--- a/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc
++++ b/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc
+@@ -71,6 +71,7 @@ typedef void* SockOptArg;
+ #endif // WEBRTC_POSIX
+
+ #if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(__native_client__)
++#include <linux/sockios.h>
+
+ int64_t GetSocketRecvTimestamp(int socket) {
+ struct timeval tv_ioctl;
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0008-chromium-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0008-chromium-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 00000000..0bd4a451
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0008-chromium-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,68 @@
+From b0d3cfec7837dcf818c08454a16eb44d78337a9f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 10:07:43 -0800
+Subject: [PATCH] chromium: Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ chromium/ui/events/ozone/evdev/event_converter_evdev.cc | 4 ++--
+ chromium/ui/events/ozone/evdev/touch_evdev_debug_buffer.cc | 6 +++---
+ chromium/ui/events/ozone/evdev/touch_evdev_debug_buffer.h | 5 +++++
+ 3 files changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/chromium/ui/events/ozone/evdev/event_converter_evdev.cc b/chromium/ui/events/ozone/evdev/event_converter_evdev.cc
+index 5684f4121be..10f6357e6b5 100644
+--- a/chromium/ui/events/ozone/evdev/event_converter_evdev.cc
++++ b/chromium/ui/events/ozone/evdev/event_converter_evdev.cc
+@@ -176,8 +176,8 @@ void EventConverterEvdev::SetPalmSuppressionCallback(
+ base::TimeTicks EventConverterEvdev::TimeTicksFromInputEvent(
+ const input_event& event) {
+ base::TimeTicks timestamp =
+- ui::EventTimeStampFromSeconds(event.time.tv_sec) +
+- base::TimeDelta::FromMicroseconds(event.time.tv_usec);
++ ui::EventTimeStampFromSeconds(event.input_event_sec) +
++ base::TimeDelta::FromMicroseconds(event.input_event_usec);
+ ValidateEventTimeClock(&timestamp);
+ return timestamp;
+ }
+diff --git a/chromium/ui/events/ozone/evdev/touch_evdev_debug_buffer.cc b/chromium/ui/events/ozone/evdev/touch_evdev_debug_buffer.cc
+index 363c3183e05..4fccfd62f84 100644
+--- a/chromium/ui/events/ozone/evdev/touch_evdev_debug_buffer.cc
++++ b/chromium/ui/events/ozone/evdev/touch_evdev_debug_buffer.cc
+@@ -59,11 +59,11 @@ void TouchEventLogEvdev::DumpLog(const char* filename) {
+ for (int i = 0; i < kDebugBufferSize; ++i) {
+ struct TouchEvent* te =
+ &logged_events_[(debug_buffer_tail_ + i) % kDebugBufferSize];
+- if (te->ev.time.tv_sec == 0 && te->ev.time.tv_usec == 0)
++ if (te->ev.input_event_sec == 0 && te->ev.input_event_usec == 0)
+ continue;
+ std::string event_string = base::StringPrintf(
+- "E: %ld.%06ld %04x %04x %d %d\n", te->ev.time.tv_sec,
+- te->ev.time.tv_usec, te->ev.type, te->ev.code, te->ev.value, te->slot);
++ "E: %ld.%06ld %04x %04x %d %d\n", te->ev.input_event_sec,
++ te->ev.input_event_usec, te->ev.type, te->ev.code, te->ev.value, te->slot);
+ report_content += event_string;
+ }
+ file.Write(0, report_content.c_str(), report_content.length());
+diff --git a/chromium/ui/events/ozone/evdev/touch_evdev_debug_buffer.h b/chromium/ui/events/ozone/evdev/touch_evdev_debug_buffer.h
+index ccd3a499a38..5a2da89d09a 100644
+--- a/chromium/ui/events/ozone/evdev/touch_evdev_debug_buffer.h
++++ b/chromium/ui/events/ozone/evdev/touch_evdev_debug_buffer.h
+@@ -14,6 +14,11 @@
+
+ #include "ui/events/ozone/evdev/events_ozone_evdev_export.h"
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ namespace ui {
+
+ class EventDeviceInfo;
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0009-chromium-Include-cstddef-for-size_t-definition.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0009-chromium-Include-cstddef-for-size_t-definition.patch
new file mode 100644
index 00000000..1f4a7c14
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0009-chromium-Include-cstddef-for-size_t-definition.patch
@@ -0,0 +1,48 @@
+From ef41260060293cf53c279b675c470341fd635a4e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 25 Dec 2019 15:41:16 -0800
+Subject: [PATCH] chromium: Include cstddef for size_t definition
+
+Include ctsdint for uintXX_t
+
+Fixes
+In file included from ../../../../git/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.cc:10:
+../../../../git/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h:34:3: error: 'size_t' does not name a type
+ 34 | size_t stability_counter_;
+ | ^~~~~~
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+ccc
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ .../webrtc/modules/audio_processing/aec3/clockdrift_detector.h | 1 +
+ .../third_party/webrtc/modules/video_coding/decoding_state.h | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/chromium/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h b/chromium/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
+index 22528c94892..69e624e8b19 100644
+--- a/chromium/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
++++ b/chromium/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
+@@ -12,6 +12,7 @@
+ #define MODULES_AUDIO_PROCESSING_AEC3_CLOCKDRIFT_DETECTOR_H_
+
+ #include <array>
++#include <cstddef>
+
+ namespace webrtc {
+
+diff --git a/chromium/third_party/webrtc/modules/video_coding/decoding_state.h b/chromium/third_party/webrtc/modules/video_coding/decoding_state.h
+index b87fb2d0345..b3faffcfc79 100644
+--- a/chromium/third_party/webrtc/modules/video_coding/decoding_state.h
++++ b/chromium/third_party/webrtc/modules/video_coding/decoding_state.h
+@@ -14,6 +14,7 @@
+ #include <map>
+ #include <set>
+ #include <vector>
++#include <cstdint>
+
+ namespace webrtc {
+
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0010-chromium-Move-CharAllocator-definition-to-a-header-f.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0010-chromium-Move-CharAllocator-definition-to-a-header-f.patch
new file mode 100644
index 00000000..352e553b
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0010-chromium-Move-CharAllocator-definition-to-a-header-f.patch
@@ -0,0 +1,554 @@
+From d47414a793f9c1bf1eb01fd3a723b2bc871037de Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 2 Jan 2020 17:13:55 -0800
+Subject: [PATCH] chromium: Move CharAllocator definition to a header file
+
+Fixes
+error: invalid application of 'sizeof' to an incomplete type 'cc::ListContainerHelper::CharAllocator'
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ chromium/cc/base/list_container_helper.cc | 251 ---------------------
+ chromium/cc/base/list_container_helper.h | 255 ++++++++++++++++++++++
+ 2 files changed, 255 insertions(+), 251 deletions(-)
+
+diff --git a/chromium/cc/base/list_container_helper.cc b/chromium/cc/base/list_container_helper.cc
+index 3a4c0b6a2f9..89df57a7b8e 100644
+--- a/chromium/cc/base/list_container_helper.cc
++++ b/chromium/cc/base/list_container_helper.cc
+@@ -12,259 +12,8 @@
+ #include "base/logging.h"
+ #include "base/memory/aligned_memory.h"
+
+-namespace {
+-const size_t kDefaultNumElementTypesToReserve = 32;
+-} // namespace
+-
+ namespace cc {
+
+-// CharAllocator
+-////////////////////////////////////////////////////
+-// This class deals only with char* and void*. It does allocation and passing
+-// out raw pointers, as well as memory deallocation when being destroyed.
+-class ListContainerHelper::CharAllocator {
+- public:
+- // CharAllocator::InnerList
+- /////////////////////////////////////////////
+- // This class holds the raw memory chunk, as well as information about its
+- // size and availability.
+- struct InnerList {
+- InnerList(const InnerList&) = delete;
+- InnerList& operator=(const InnerList&) = delete;
+-
+- std::unique_ptr<char[], base::AlignedFreeDeleter> data;
+- // The number of elements in total the memory can hold. The difference
+- // between capacity and size is the how many more elements this list can
+- // hold.
+- size_t capacity;
+- // The number of elements have been put into this list.
+- size_t size;
+- // The size of each element is in bytes. This is used to move from between
+- // elements' memory locations.
+- size_t step;
+-
+- InnerList() : capacity(0), size(0), step(0) {}
+-
+- void Erase(char* position) {
+- // Confident that destructor is called by caller of this function. Since
+- // CharAllocator does not handle construction after
+- // allocation, it doesn't handle desctrution before deallocation.
+- DCHECK_LE(position, LastElement());
+- DCHECK_GE(position, Begin());
+- char* start = position + step;
+- std::copy(start, End(), position);
+-
+- --size;
+- // Decrease capacity to avoid creating not full not last InnerList.
+- --capacity;
+- }
+-
+- void InsertBefore(size_t alignment, char** position, size_t count) {
+- DCHECK_LE(*position, LastElement() + step);
+- DCHECK_GE(*position, Begin());
+-
+- // Adjust the size and capacity
+- size_t old_size = size;
+- size += count;
+- capacity = size;
+-
+- // Allocate the new data and update the iterator's pointer.
+- std::unique_ptr<char[], base::AlignedFreeDeleter> new_data(
+- static_cast<char*>(base::AlignedAlloc(size * step, alignment)));
+- size_t position_offset = *position - Begin();
+- *position = new_data.get() + position_offset;
+-
+- // Copy the data before the inserted segment
+- memcpy(new_data.get(), data.get(), position_offset);
+- // Copy the data after the inserted segment.
+- memcpy(new_data.get() + position_offset + count * step,
+- data.get() + position_offset, old_size * step - position_offset);
+- data = std::move(new_data);
+- }
+-
+- bool IsEmpty() const { return !size; }
+- bool IsFull() { return capacity == size; }
+- size_t NumElementsAvailable() const { return capacity - size; }
+-
+- void* AddElement() {
+- DCHECK_LT(size, capacity);
+- ++size;
+- return LastElement();
+- }
+-
+- void RemoveLast() {
+- DCHECK(!IsEmpty());
+- --size;
+- }
+-
+- char* Begin() const { return data.get(); }
+- char* End() const { return data.get() + size * step; }
+- char* LastElement() const { return data.get() + (size - 1) * step; }
+- char* ElementAt(size_t index) const { return data.get() + index * step; }
+- };
+-
+- CharAllocator(size_t alignment, size_t element_size, size_t element_count)
+- // base::AlignedAlloc does not accept alignment less than sizeof(void*).
+- : alignment_(std::max(sizeof(void*), alignment)),
+- element_size_(element_size),
+- size_(0),
+- last_list_index_(0),
+- last_list_(nullptr) {
+- // If this fails, then alignment of elements after the first could be wrong,
+- // and we need to pad sizes to fix that.
+- DCHECK_EQ(element_size % alignment, 0u);
+- AllocateNewList(element_count > 0 ? element_count
+- : kDefaultNumElementTypesToReserve);
+- last_list_ = storage_[last_list_index_].get();
+- }
+-
+- CharAllocator(const CharAllocator&) = delete;
+- ~CharAllocator() = default;
+-
+- CharAllocator& operator=(const CharAllocator&) = delete;
+-
+- void* Allocate() {
+- if (last_list_->IsFull()) {
+- // Only allocate a new list if there isn't a spare one still there from
+- // previous usage.
+- if (last_list_index_ + 1 >= storage_.size())
+- AllocateNewList(last_list_->capacity * 2);
+-
+- ++last_list_index_;
+- last_list_ = storage_[last_list_index_].get();
+- }
+-
+- ++size_;
+- return last_list_->AddElement();
+- }
+-
+- size_t alignment() const { return alignment_; }
+- size_t element_size() const { return element_size_; }
+- size_t list_count() const { return storage_.size(); }
+- size_t size() const { return size_; }
+- bool IsEmpty() const { return size() == 0; }
+-
+- size_t Capacity() const {
+- size_t capacity_sum = 0;
+- for (const auto& inner_list : storage_)
+- capacity_sum += inner_list->capacity;
+- return capacity_sum;
+- }
+-
+- void Clear() {
+- // Remove all except for the first InnerList.
+- DCHECK(!storage_.empty());
+- storage_.erase(storage_.begin() + 1, storage_.end());
+- last_list_index_ = 0;
+- last_list_ = storage_[0].get();
+- last_list_->size = 0;
+- size_ = 0;
+- }
+-
+- void RemoveLast() {
+- DCHECK(!IsEmpty());
+- last_list_->RemoveLast();
+- if (last_list_->IsEmpty() && last_list_index_ > 0) {
+- --last_list_index_;
+- last_list_ = storage_[last_list_index_].get();
+-
+- // If there are now two empty inner lists, free one of them.
+- if (last_list_index_ + 2 < storage_.size())
+- storage_.pop_back();
+- }
+- --size_;
+- }
+-
+- void Erase(PositionInCharAllocator* position) {
+- DCHECK_EQ(this, position->ptr_to_container);
+-
+- // Update |position| to point to the element after the erased element.
+- InnerList* list = storage_[position->vector_index].get();
+- char* item_iterator = position->item_iterator;
+- if (item_iterator == list->LastElement())
+- position->Increment();
+-
+- list->Erase(item_iterator);
+- // TODO(weiliangc): Free the InnerList if it is empty.
+- --size_;
+- }
+-
+- void InsertBefore(ListContainerHelper::Iterator* position, size_t count) {
+- if (!count)
+- return;
+-
+- // If |position| is End(), then append |count| elements at the end. This
+- // will happen to not invalidate any iterators or memory.
+- if (!position->item_iterator) {
+- // Set |position| to be the first inserted element.
+- Allocate();
+- position->vector_index = storage_.size() - 1;
+- position->item_iterator = storage_[position->vector_index]->LastElement();
+- // Allocate the rest.
+- for (size_t i = 1; i < count; ++i)
+- Allocate();
+- } else {
+- storage_[position->vector_index]->InsertBefore(
+- alignment_, &position->item_iterator, count);
+- size_ += count;
+- }
+- }
+-
+- InnerList* InnerListById(size_t id) const {
+- DCHECK_LT(id, storage_.size());
+- return storage_[id].get();
+- }
+-
+- size_t FirstInnerListId() const {
+- // |size_| > 0 means that at least one vector in |storage_| will be
+- // non-empty.
+- DCHECK_GT(size_, 0u);
+- size_t id = 0;
+- while (storage_[id]->size == 0)
+- ++id;
+- return id;
+- }
+-
+- size_t LastInnerListId() const {
+- // |size_| > 0 means that at least one vector in |storage_| will be
+- // non-empty.
+- DCHECK_GT(size_, 0u);
+- size_t id = storage_.size() - 1;
+- while (storage_[id]->size == 0)
+- --id;
+- return id;
+- }
+-
+- size_t NumAvailableElementsInLastList() const {
+- return last_list_->NumElementsAvailable();
+- }
+-
+- private:
+- void AllocateNewList(size_t list_size) {
+- std::unique_ptr<InnerList> new_list(new InnerList);
+- new_list->capacity = list_size;
+- new_list->size = 0;
+- new_list->step = element_size_;
+- new_list->data.reset(static_cast<char*>(
+- base::AlignedAlloc(list_size * element_size_, alignment_)));
+- storage_.push_back(std::move(new_list));
+- }
+-
+- std::vector<std::unique_ptr<InnerList>> storage_;
+- const size_t alignment_;
+- const size_t element_size_;
+-
+- // The number of elements in the list.
+- size_t size_;
+-
+- // The index of the last list to have had elements added to it, or the only
+- // list if the container has not had elements added since being cleared.
+- size_t last_list_index_;
+-
+- // This is equivalent to |storage_[last_list_index_]|.
+- InnerList* last_list_;
+-};
+-
+ // PositionInCharAllocator
+ //////////////////////////////////////////////////////
+ ListContainerHelper::PositionInCharAllocator::PositionInCharAllocator(
+diff --git a/chromium/cc/base/list_container_helper.h b/chromium/cc/base/list_container_helper.h
+index 31658bc8486..9e65013cbdb 100644
+--- a/chromium/cc/base/list_container_helper.h
++++ b/chromium/cc/base/list_container_helper.h
+@@ -8,9 +8,17 @@
+ #include <stddef.h>
+
+ #include <memory>
++#include <algorithm>
++#include <vector>
+
++#include "base/logging.h"
++#include "base/memory/aligned_memory.h"
+ #include "cc/base/base_export.h"
+
++namespace {
++const size_t kDefaultNumElementTypesToReserve = 32;
++} // namespace
++
+ namespace cc {
+
+ // Helper class for ListContainer non-templated logic. All methods are private,
+@@ -174,6 +182,253 @@ class CC_BASE_EXPORT ListContainerHelper final {
+ std::unique_ptr<CharAllocator> data_;
+ };
+
++// CharAllocator
++////////////////////////////////////////////////////
++// This class deals only with char* and void*. It does allocation and passing
++// out raw pointers, as well as memory deallocation when being destroyed.
++class ListContainerHelper::CharAllocator {
++ public:
++ // CharAllocator::InnerList
++ /////////////////////////////////////////////
++ // This class holds the raw memory chunk, as well as information about its
++ // size and availability.
++ struct InnerList {
++ InnerList(const InnerList&) = delete;
++ InnerList& operator=(const InnerList&) = delete;
++
++ std::unique_ptr<char[], base::AlignedFreeDeleter> data;
++ // The number of elements in total the memory can hold. The difference
++ // between capacity and size is the how many more elements this list can
++ // hold.
++ size_t capacity;
++ // The number of elements have been put into this list.
++ size_t size;
++ // The size of each element is in bytes. This is used to move from between
++ // elements' memory locations.
++ size_t step;
++
++ InnerList() : capacity(0), size(0), step(0) {}
++
++ void Erase(char* position) {
++ // Confident that destructor is called by caller of this function. Since
++ // CharAllocator does not handle construction after
++ // allocation, it doesn't handle desctrution before deallocation.
++ DCHECK_LE(position, LastElement());
++ DCHECK_GE(position, Begin());
++ char* start = position + step;
++ std::copy(start, End(), position);
++
++ --size;
++ // Decrease capacity to avoid creating not full not last InnerList.
++ --capacity;
++ }
++
++ void InsertBefore(size_t alignment, char** position, size_t count) {
++ DCHECK_LE(*position, LastElement() + step);
++ DCHECK_GE(*position, Begin());
++
++ // Adjust the size and capacity
++ size_t old_size = size;
++ size += count;
++ capacity = size;
++
++ // Allocate the new data and update the iterator's pointer.
++ std::unique_ptr<char[], base::AlignedFreeDeleter> new_data(
++ static_cast<char*>(base::AlignedAlloc(size * step, alignment)));
++ size_t position_offset = *position - Begin();
++ *position = new_data.get() + position_offset;
++
++ // Copy the data before the inserted segment
++ memcpy(new_data.get(), data.get(), position_offset);
++ // Copy the data after the inserted segment.
++ memcpy(new_data.get() + position_offset + count * step,
++ data.get() + position_offset, old_size * step - position_offset);
++ data = std::move(new_data);
++ }
++
++ bool IsEmpty() const { return !size; }
++ bool IsFull() { return capacity == size; }
++ size_t NumElementsAvailable() const { return capacity - size; }
++
++ void* AddElement() {
++ DCHECK_LT(size, capacity);
++ ++size;
++ return LastElement();
++ }
++
++ void RemoveLast() {
++ DCHECK(!IsEmpty());
++ --size;
++ }
++
++ char* Begin() const { return data.get(); }
++ char* End() const { return data.get() + size * step; }
++ char* LastElement() const { return data.get() + (size - 1) * step; }
++ char* ElementAt(size_t index) const { return data.get() + index * step; }
++ };
++
++ CharAllocator(size_t alignment, size_t element_size, size_t element_count)
++ // base::AlignedAlloc does not accept alignment less than sizeof(void*).
++ : alignment_(std::max(sizeof(void*), alignment)),
++ element_size_(element_size),
++ size_(0),
++ last_list_index_(0),
++ last_list_(nullptr) {
++ // If this fails, then alignment of elements after the first could be wrong,
++ // and we need to pad sizes to fix that.
++ DCHECK_EQ(element_size % alignment, 0u);
++ AllocateNewList(element_count > 0 ? element_count
++ : kDefaultNumElementTypesToReserve);
++ last_list_ = storage_[last_list_index_].get();
++ }
++
++ CharAllocator(const CharAllocator&) = delete;
++ ~CharAllocator() = default;
++
++ CharAllocator& operator=(const CharAllocator&) = delete;
++
++ void* Allocate() {
++ if (last_list_->IsFull()) {
++ // Only allocate a new list if there isn't a spare one still there from
++ // previous usage.
++ if (last_list_index_ + 1 >= storage_.size())
++ AllocateNewList(last_list_->capacity * 2);
++
++ ++last_list_index_;
++ last_list_ = storage_[last_list_index_].get();
++ }
++
++ ++size_;
++ return last_list_->AddElement();
++ }
++
++ size_t alignment() const { return alignment_; }
++ size_t element_size() const { return element_size_; }
++ size_t list_count() const { return storage_.size(); }
++ size_t size() const { return size_; }
++ bool IsEmpty() const { return size() == 0; }
++
++ size_t Capacity() const {
++ size_t capacity_sum = 0;
++ for (const auto& inner_list : storage_)
++ capacity_sum += inner_list->capacity;
++ return capacity_sum;
++ }
++
++ void Clear() {
++ // Remove all except for the first InnerList.
++ DCHECK(!storage_.empty());
++ storage_.erase(storage_.begin() + 1, storage_.end());
++ last_list_index_ = 0;
++ last_list_ = storage_[0].get();
++ last_list_->size = 0;
++ size_ = 0;
++ }
++
++ void RemoveLast() {
++ DCHECK(!IsEmpty());
++ last_list_->RemoveLast();
++ if (last_list_->IsEmpty() && last_list_index_ > 0) {
++ --last_list_index_;
++ last_list_ = storage_[last_list_index_].get();
++
++ // If there are now two empty inner lists, free one of them.
++ if (last_list_index_ + 2 < storage_.size())
++ storage_.pop_back();
++ }
++ --size_;
++ }
++
++ void Erase(PositionInCharAllocator* position) {
++ DCHECK_EQ(this, position->ptr_to_container);
++
++ // Update |position| to point to the element after the erased element.
++ InnerList* list = storage_[position->vector_index].get();
++ char* item_iterator = position->item_iterator;
++ if (item_iterator == list->LastElement())
++ position->Increment();
++
++ list->Erase(item_iterator);
++ // TODO(weiliangc): Free the InnerList if it is empty.
++ --size_;
++ }
++
++ void InsertBefore(ListContainerHelper::Iterator* position, size_t count) {
++ if (!count)
++ return;
++
++ // If |position| is End(), then append |count| elements at the end. This
++ // will happen to not invalidate any iterators or memory.
++ if (!position->item_iterator) {
++ // Set |position| to be the first inserted element.
++ Allocate();
++ position->vector_index = storage_.size() - 1;
++ position->item_iterator = storage_[position->vector_index]->LastElement();
++ // Allocate the rest.
++ for (size_t i = 1; i < count; ++i)
++ Allocate();
++ } else {
++ storage_[position->vector_index]->InsertBefore(
++ alignment_, &position->item_iterator, count);
++ size_ += count;
++ }
++ }
++
++ InnerList* InnerListById(size_t id) const {
++ DCHECK_LT(id, storage_.size());
++ return storage_[id].get();
++ }
++
++ size_t FirstInnerListId() const {
++ // |size_| > 0 means that at least one vector in |storage_| will be
++ // non-empty.
++ DCHECK_GT(size_, 0u);
++ size_t id = 0;
++ while (storage_[id]->size == 0)
++ ++id;
++ return id;
++ }
++
++ size_t LastInnerListId() const {
++ // |size_| > 0 means that at least one vector in |storage_| will be
++ // non-empty.
++ DCHECK_GT(size_, 0u);
++ size_t id = storage_.size() - 1;
++ while (storage_[id]->size == 0)
++ --id;
++ return id;
++ }
++
++ size_t NumAvailableElementsInLastList() const {
++ return last_list_->NumElementsAvailable();
++ }
++
++ private:
++ void AllocateNewList(size_t list_size) {
++ std::unique_ptr<InnerList> new_list(new InnerList);
++ new_list->capacity = list_size;
++ new_list->size = 0;
++ new_list->step = element_size_;
++ new_list->data.reset(static_cast<char*>(
++ base::AlignedAlloc(list_size * element_size_, alignment_)));
++ storage_.push_back(std::move(new_list));
++ }
++
++ std::vector<std::unique_ptr<InnerList>> storage_;
++ const size_t alignment_;
++ const size_t element_size_;
++
++ // The number of elements in the list.
++ size_t size_;
++
++ // The index of the last list to have had elements added to it, or the only
++ // list if the container has not had elements added since being cleared.
++ size_t last_list_index_;
++
++ // This is equivalent to |storage_[last_list_index_]|.
++ InnerList* last_list_;
++};
++
+ } // namespace cc
+
+ #endif // CC_BASE_LIST_CONTAINER_HELPER_H_
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0011-chromium-Include-cstddef-and-cstdint.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0011-chromium-Include-cstddef-and-cstdint.patch
new file mode 100644
index 00000000..32dde335
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0011-chromium-Include-cstddef-and-cstdint.patch
@@ -0,0 +1,50 @@
+From c2ca4923d5e534789b205968eb01779a90ec1299 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 15 Jan 2020 16:53:46 -0800
+Subject: [PATCH] chromium: Include <cstddef> and <cstdint>
+
+These headers are needed for uintXX_t and size_t definitions
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ chromium/media/cdm/supported_cdm_versions.h | 1 +
+ .../third_party/perfetto/include/perfetto/base/task_runner.h | 1 +
+ chromium/third_party/webrtc/call/rtx_receive_stream.h | 1 +
+ 3 files changed, 3 insertions(+)
+
+diff --git a/chromium/media/cdm/supported_cdm_versions.h b/chromium/media/cdm/supported_cdm_versions.h
+index 3f220da8c71..c54e3bb7d30 100644
+--- a/chromium/media/cdm/supported_cdm_versions.h
++++ b/chromium/media/cdm/supported_cdm_versions.h
+@@ -6,6 +6,7 @@
+ #define MEDIA_CDM_SUPPORTED_CDM_VERSIONS_H_
+
+ #include <array>
++#include <cstddef>
+
+ #include "media/base/media_export.h"
+ #include "media/cdm/api/content_decryption_module.h"
+diff --git a/chromium/third_party/perfetto/include/perfetto/base/task_runner.h b/chromium/third_party/perfetto/include/perfetto/base/task_runner.h
+index cf60401238f..02658e7139b 100644
+--- a/chromium/third_party/perfetto/include/perfetto/base/task_runner.h
++++ b/chromium/third_party/perfetto/include/perfetto/base/task_runner.h
+@@ -18,6 +18,7 @@
+ #define INCLUDE_PERFETTO_BASE_TASK_RUNNER_H_
+
+ #include <functional>
++#include <cstdint>
+
+ #include "perfetto/base/export.h"
+
+diff --git a/chromium/third_party/webrtc/call/rtx_receive_stream.h b/chromium/third_party/webrtc/call/rtx_receive_stream.h
+index 8ffa4400a9c..a389fc2a574 100644
+--- a/chromium/third_party/webrtc/call/rtx_receive_stream.h
++++ b/chromium/third_party/webrtc/call/rtx_receive_stream.h
+@@ -11,6 +11,7 @@
+ #ifndef CALL_RTX_RECEIVE_STREAM_H_
+ #define CALL_RTX_RECEIVE_STREAM_H_
+
++#include <cstdint>
+ #include <map>
+
+ #include "call/rtp_packet_sink_interface.h"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0004-chromium-musl-sandbox-Define-TEMP_FAILURE_RETRY-if-n.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0011-chromium-musl-sandbox-Define-TEMP_FAILURE_RETRY-if-n.patch
index 7879e99a..3e595591 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0004-chromium-musl-sandbox-Define-TEMP_FAILURE_RETRY-if-n.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0011-chromium-musl-sandbox-Define-TEMP_FAILURE_RETRY-if-n.patch
@@ -1,4 +1,4 @@
-From 3931af98b42c87ea474e0e6d0d27753e53d101ca Mon Sep 17 00:00:00 2001
+From d38a63908f5c49705abd85bd9c2aee0ec334221d Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 7 Jul 2017 14:01:12 -0700
Subject: [PATCH] chromium: musl: sandbox: Define TEMP_FAILURE_RETRY if not
@@ -12,10 +12,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 9 insertions(+)
diff --git a/chromium/sandbox/linux/suid/sandbox.c b/chromium/sandbox/linux/suid/sandbox.c
-index 66f68ef1387..9284d0d4fc5 100644
+index 854819bfbb4..a99d32741d0 100644
--- a/chromium/sandbox/linux/suid/sandbox.c
+++ b/chromium/sandbox/linux/suid/sandbox.c
-@@ -44,6 +44,15 @@ static bool DropRoot();
+@@ -46,6 +46,15 @@ static bool DropRoot();
#define HANDLE_EINTR(x) TEMP_FAILURE_RETRY(x)
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0012-chromium-Link-v8-with-libatomic-on-x86.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0012-chromium-Link-v8-with-libatomic-on-x86.patch
new file mode 100644
index 00000000..3bf0c5eb
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0012-chromium-Link-v8-with-libatomic-on-x86.patch
@@ -0,0 +1,32 @@
+From 5b4b896c1c6c79cc7c870a398acf1baf4b6bec7b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 1 Feb 2020 12:17:23 -0800
+Subject: [PATCH] chromium: Link v8 with libatomic on x86
+
+Fixes
+| v8_base_without_compiler_jumbo_47.cc:(.text._ZN2v88internal4wasm12_GLOBAL__N_123ExecuteCompilationUnitsERKSt10shared_ptrINS2_22BackgroundCompileTokenEEPNS0_8CountersEiNS2_19CompileBaselineOnlyE+0x29a): undefined reference to `__atomic_l
+oad'
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ chromium/v8/BUILD.gn | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/chromium/v8/BUILD.gn b/chromium/v8/BUILD.gn
+index e21400265dd..7e56609b9da 100644
+--- a/chromium/v8/BUILD.gn
++++ b/chromium/v8/BUILD.gn
+@@ -3310,7 +3310,8 @@ v8_source_set("v8_base_without_compiler") {
+ if (v8_current_cpu == "mips" || v8_current_cpu == "mipsel" ||
+ v8_current_cpu == "mips64" || v8_current_cpu == "mips64el" ||
+ v8_current_cpu == "ppc" || v8_current_cpu == "ppc64" ||
+- v8_current_cpu == "s390" || v8_current_cpu == "s390x") {
++ v8_current_cpu == "s390" || v8_current_cpu == "s390x" ||
++ v8_current_cpu == "x86") {
+ libs = [ "atomic" ]
+ }
+
+--
+2.25.0
+
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0005-chromium-musl-Avoid-mallinfo-APIs-on-non-glibc-linux.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0012-chromium-musl-Avoid-mallinfo-APIs-on-non-glibc-linux.patch
index 68eaf23e..2fdb0d82 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0005-chromium-musl-Avoid-mallinfo-APIs-on-non-glibc-linux.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0012-chromium-musl-Avoid-mallinfo-APIs-on-non-glibc-linux.patch
@@ -1,4 +1,4 @@
-From 5532d00e7dcec5529b7510386530cc44bf0b094c Mon Sep 17 00:00:00 2001
+From 4b16ad982ff10945a37a7dd90735a5a1be3d6a8b Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 7 Jul 2017 14:09:06 -0700
Subject: [PATCH] chromium: musl: Avoid mallinfo() APIs on non-glibc/linux
@@ -6,15 +6,14 @@ Subject: [PATCH] chromium: musl: Avoid mallinfo() APIs on non-glibc/linux
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
chromium/base/process/process_metrics_posix.cc | 4 ++--
- chromium/base/trace_event/malloc_dump_provider.cc | 3 ++-
- chromium/content/child/content_child_helpers.cc | 2 +-
- 3 files changed, 5 insertions(+), 4 deletions(-)
+ chromium/base/trace_event/malloc_dump_provider.cc | 2 ++
+ 2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/chromium/base/process/process_metrics_posix.cc b/chromium/base/process/process_metrics_posix.cc
-index 73a52d6210d..4867198a503 100644
+index 5763432aa4f..ff00b7307c0 100644
--- a/chromium/base/process/process_metrics_posix.cc
+++ b/chromium/base/process/process_metrics_posix.cc
-@@ -94,14 +94,14 @@ size_t ProcessMetrics::GetMallocUsage() {
+@@ -109,14 +109,14 @@ size_t ProcessMetrics::GetMallocUsage() {
malloc_statistics_t stats = {0};
malloc_zone_statistics(nullptr, &stats);
return stats.size_in_use;
@@ -32,10 +31,10 @@ index 73a52d6210d..4867198a503 100644
return 0;
#endif
diff --git a/chromium/base/trace_event/malloc_dump_provider.cc b/chromium/base/trace_event/malloc_dump_provider.cc
-index ffd519133c2..0c9131e98e4 100644
+index 0077d8b0aec..c69f893f4e9 100644
--- a/chromium/base/trace_event/malloc_dump_provider.cc
+++ b/chromium/base/trace_event/malloc_dump_provider.cc
-@@ -197,6 +197,7 @@ MallocDumpProvider::~MallocDumpProvider() = default;
+@@ -77,6 +77,7 @@ MallocDumpProvider::~MallocDumpProvider() = default;
// the current process.
bool MallocDumpProvider::OnMemoryDump(const MemoryDumpArgs& args,
ProcessMemoryDump* pmd) {
@@ -43,25 +42,11 @@ index ffd519133c2..0c9131e98e4 100644
{
base::AutoLock auto_lock(emit_metrics_on_memory_dump_lock_);
if (!emit_metrics_on_memory_dump_)
-@@ -322,7 +323,7 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDumpArgs& args,
- pmd->DumpHeapUsage(metrics_by_context, overhead, "malloc");
+@@ -172,6 +173,7 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDumpArgs& args,
+ MemoryAllocatorDump::kUnitsBytes,
+ resident_size - allocated_objects_size);
}
- tid_dumping_heap_ = kInvalidThreadId;
--
+#endif // __GLIBC__
return true;
}
-diff --git a/chromium/content/child/content_child_helpers.cc b/chromium/content/child/content_child_helpers.cc
-index 7ddeb4d16a9..b8c73b09c5a 100644
---- a/chromium/content/child/content_child_helpers.cc
-+++ b/chromium/content/child/content_child_helpers.cc
-@@ -25,7 +25,7 @@ namespace content {
- // though, this provides only a partial and misleading value.
- // Unfortunately some telemetry benchmark rely on it and these need to
- // be refactored before getting rid of this. See crbug.com/581365 .
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(__GLIBC__) || defined(OS_ANDROID)
- size_t GetMemoryUsageKB() {
- struct mallinfo minfo = mallinfo();
- uint64_t mem_usage =
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0006-chromium-musl-include-fcntl.h-for-loff_t.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0013-chromium-musl-include-fcntl.h-for-loff_t.patch
index 1f9af27e..05576b02 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0006-chromium-musl-include-fcntl.h-for-loff_t.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0013-chromium-musl-include-fcntl.h-for-loff_t.patch
@@ -1,4 +1,4 @@
-From 87d8eeb36da32940a57ecf9a94c61f7d749e1058 Mon Sep 17 00:00:00 2001
+From e087d26af9bdd2f045f8a81fdd2688c50b77e938 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 7 Jul 2017 14:37:49 -0700
Subject: [PATCH] chromium: musl: include fcntl.h for loff_t
@@ -9,10 +9,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+)
diff --git a/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h b/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h
-index b29ec2d29a7..91f77dd88d4 100644
+index ca5936d6e63..5484dbadfbd 100644
--- a/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h
+++ b/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h
-@@ -150,6 +150,7 @@ extern "C" {
+@@ -154,6 +154,7 @@ extern "C" {
#include <stddef.h>
#include <stdint.h>
#include <string.h>
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0014-chromium-musl-include-asm-generic-ioctl.h-for-TCGETS.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0014-chromium-musl-include-asm-generic-ioctl.h-for-TCGETS.patch
deleted file mode 100644
index c11a7ce8..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0014-chromium-musl-include-asm-generic-ioctl.h-for-TCGETS.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From b9a0991d31f2c88525022690640b5f30a42821b3 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 7 Jul 2017 17:15:34 -0700
-Subject: [PATCH] chromium: musl: include asm-generic/ioctl.h for TCGETS2
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- chromium/device/serial/serial_io_handler_posix.cc | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/chromium/device/serial/serial_io_handler_posix.cc b/chromium/device/serial/serial_io_handler_posix.cc
-index d6ed5e1f889..b550f895ef5 100644
---- a/chromium/device/serial/serial_io_handler_posix.cc
-+++ b/chromium/device/serial/serial_io_handler_posix.cc
-@@ -6,6 +6,7 @@
-
- #include <sys/ioctl.h>
- #include <termios.h>
-+#include <asm-generic/ioctls.h>
-
- #include "base/files/file_util.h"
- #include "base/posix/eintr_wrapper.h"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0007-chromium-musl-use-off64_t-instead-of-the-internal-__.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0014-chromium-musl-use-off64_t-instead-of-the-internal-__.patch
index e7dba73b..ad7a085f 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0007-chromium-musl-use-off64_t-instead-of-the-internal-__.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0014-chromium-musl-use-off64_t-instead-of-the-internal-__.patch
@@ -1,4 +1,4 @@
-From 081561227fb55b9a419632b1f6187d9d7bedd8f9 Mon Sep 17 00:00:00 2001
+From 5cde4d2fb5affc6e739dba412453b4bf076f19e9 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 7 Jul 2017 14:38:37 -0700
Subject: [PATCH] chromium: musl: use off64_t instead of the internal __off64_t
@@ -12,10 +12,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h b/chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h
-index 715c045f66c..edc8cf2db70 100644
+index 17415aaf538..59c1b6fb5f6 100644
--- a/chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h
+++ b/chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h
-@@ -77,7 +77,7 @@ typedef off64_t __off64_t;
+@@ -60,7 +60,7 @@
static inline void* do_mmap64(void *start, size_t length,
int prot, int flags,
@@ -23,8 +23,8 @@ index 715c045f66c..edc8cf2db70 100644
+ int fd, off64_t offset) __THROW {
// The original gperftools uses sys_mmap() here. But, it is not allowed by
// Chromium's sandbox.
- return (void *)syscall(SYS_mmap, start, length, prot, flags, fd, offset);
-@@ -90,7 +90,7 @@ static inline void* do_mmap64(void *start, size_t length,
+ return (void*)syscall(SYS_mmap, start, length, prot, flags, fd, offset);
+@@ -73,7 +73,7 @@ static inline void* do_mmap64(void *start, size_t length,
static inline void* do_mmap64(void *start, size_t length,
int prot, int flags,
@@ -33,7 +33,7 @@ index 715c045f66c..edc8cf2db70 100644
void *result;
// Try mmap2() unless it's not supported
-@@ -161,7 +161,7 @@ static inline void* do_mmap64(void *start, size_t length,
+@@ -144,7 +144,7 @@ static inline void* do_mmap64(void *start, size_t length,
extern "C" {
void* mmap64(void *start, size_t length, int prot, int flags,
@@ -42,7 +42,7 @@ index 715c045f66c..edc8cf2db70 100644
ATTRIBUTE_SECTION(malloc_hook);
void* mmap(void *start, size_t length,int prot, int flags,
int fd, off_t offset) __THROW
-@@ -178,7 +178,7 @@ extern "C" {
+@@ -159,7 +159,7 @@ extern "C" {
}
extern "C" void* mmap64(void *start, size_t length, int prot, int flags,
@@ -51,7 +51,7 @@ index 715c045f66c..edc8cf2db70 100644
MallocHook::InvokePreMmapHook(start, length, prot, flags, fd, offset);
void *result;
if (!MallocHook::InvokeMmapReplacement(
-@@ -189,7 +189,7 @@ extern "C" void* mmap64(void *start, size_t length, int prot, int flags,
+@@ -170,7 +170,7 @@ extern "C" void* mmap64(void *start, size_t length, int prot, int flags,
return result;
}
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0008-chromium-musl-linux-glibc-make-the-distinction.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0015-chromium-musl-linux-glibc-make-the-distinction.patch
index c3069593..2fdc4944 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0008-chromium-musl-linux-glibc-make-the-distinction.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0015-chromium-musl-linux-glibc-make-the-distinction.patch
@@ -1,4 +1,4 @@
-From 0bba2d9a7bbcc97126b1440db71364ff5aa8c5f8 Mon Sep 17 00:00:00 2001
+From 04a11fa6f38987091b6b65244950d3d83579c9a8 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 7 Jul 2017 14:54:38 -0700
Subject: [PATCH] chromium: musl: linux != glibc, make the distinction
@@ -9,7 +9,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/chromium/base/allocator/allocator_check.cc b/chromium/base/allocator/allocator_check.cc
-index 9cd5d2207de..1e700956483 100644
+index 5fb86467dde..9864858eb67 100644
--- a/chromium/base/allocator/allocator_check.cc
+++ b/chromium/base/allocator/allocator_check.cc
@@ -27,7 +27,7 @@ bool IsAllocatorInitialized() {
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0015-chromium-musl-tcmalloc-Use-off64_t-insread-of-__off6.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0015-chromium-musl-tcmalloc-Use-off64_t-insread-of-__off6.patch
deleted file mode 100644
index 1ec4dd2b..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0015-chromium-musl-tcmalloc-Use-off64_t-insread-of-__off6.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From db18f880b833041e3151a3dc8541f7d35d43a4b5 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 8 Jul 2017 09:08:23 -0700
-Subject: [PATCH] chromium: musl: tcmalloc: Use off64_t insread of __off64_t
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- .../tcmalloc/chromium/src/base/linux_syscall_support.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h b/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h
-index 91f77dd88d4..bb84a0b3058 100644
---- a/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h
-+++ b/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h
-@@ -1929,7 +1929,7 @@ typedef unsigned long int ulong;
- #if defined(__x86_64__)
- /* Need to make sure __off64_t isn't truncated to 32-bits under x32. */
- LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d,
-- __off64_t o) {
-+ off64_t o) {
- LSS_BODY(6, void*, mmap, LSS_SYSCALL_ARG(s), LSS_SYSCALL_ARG(l),
- LSS_SYSCALL_ARG(p), LSS_SYSCALL_ARG(f),
- LSS_SYSCALL_ARG(d), (uint64_t)(o));
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0009-chromium-musl-allocator-Do-not-include-glibc_weak_sy.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0016-chromium-musl-allocator-Do-not-include-glibc_weak_sy.patch
index 009e41fd..81d555f9 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0009-chromium-musl-allocator-Do-not-include-glibc_weak_sy.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0016-chromium-musl-allocator-Do-not-include-glibc_weak_sy.patch
@@ -1,4 +1,4 @@
-From 922a3f82d7810d23b4f735f5af4574993bde2974 Mon Sep 17 00:00:00 2001
+From 59ab7f11b90bd2114ff8cc16d6502e0ad6bb6538 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 7 Jul 2017 15:09:02 -0700
Subject: [PATCH] chromium: musl: allocator: Do not include glibc_weak_symbols
@@ -10,10 +10,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/chromium/base/allocator/allocator_shim.cc b/chromium/base/allocator/allocator_shim.cc
-index 4b7de5e1a32..fe565223f2b 100644
+index e6838ebda84..7296cc9ed81 100644
--- a/chromium/base/allocator/allocator_shim.cc
+++ b/chromium/base/allocator/allocator_shim.cc
-@@ -302,7 +302,7 @@ ALWAYS_INLINE void ShimFreeDefiniteSize(void* ptr, size_t size, void* context) {
+@@ -351,7 +351,7 @@ ALWAYS_INLINE void ShimAlignedFree(void* address, void* context) {
// In the case of tcmalloc we also want to plumb into the glibc hooks
// to avoid that allocations made in glibc itself (e.g., strdup()) get
// accidentally performed on the glibc heap instead of the tcmalloc one.
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0010-chromium-musl-Use-correct-member-name-__si_fields-fr.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0017-chromium-musl-Use-correct-member-name-__si_fields-fr.patch
index 65bf1965..b611781b 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0010-chromium-musl-Use-correct-member-name-__si_fields-fr.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0017-chromium-musl-Use-correct-member-name-__si_fields-fr.patch
@@ -1,4 +1,4 @@
-From c3dddfccc66fdceb730674838e1676febc66587c Mon Sep 17 00:00:00 2001
+From b8735496287b7c2a15224f7d837dc74a09434bdb Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 7 Jul 2017 15:12:39 -0700
Subject: [PATCH] chromium: musl: Use correct member name __si_fields from
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0011-chromium-musl-Define-res_ninit-and-res_nclose-for-no.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0018-chromium-musl-Define-res_ninit-and-res_nclose-for-no.patch
index 8582607c..4b531624 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0011-chromium-musl-Define-res_ninit-and-res_nclose-for-no.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0018-chromium-musl-Define-res_ninit-and-res_nclose-for-no.patch
@@ -1,4 +1,4 @@
-From 7638d64991e35b688aa9e1385925bc45f8589246 Mon Sep 17 00:00:00 2001
+From 09c0c63a65770465ef2ec0a3b028e22a9a0164f6 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 7 Jul 2017 15:27:50 -0700
Subject: [PATCH] chromium: musl: Define res_ninit and res_nclose for non-glibc
@@ -13,11 +13,11 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
create mode 100644 chromium/net/dns/resolv_compat.h
diff --git a/chromium/net/dns/dns_config_service_posix.cc b/chromium/net/dns/dns_config_service_posix.cc
-index f2e66331e33..6fe84dd66af 100644
+index ee2d5721425..bcb83b07f6e 100644
--- a/chromium/net/dns/dns_config_service_posix.cc
+++ b/chromium/net/dns/dns_config_service_posix.cc
-@@ -27,6 +27,10 @@
- #include "net/dns/notify_watcher_mac.h"
+@@ -29,6 +29,10 @@
+ #include "net/dns/public/dns_protocol.h"
#include "net/dns/serial_worker.h"
+#if defined(OS_LINUX) && !defined(__GLIBC__)
@@ -28,7 +28,7 @@ index f2e66331e33..6fe84dd66af 100644
#include "net/dns/dns_config_watcher_mac.h"
#endif
diff --git a/chromium/net/dns/dns_reloader.cc b/chromium/net/dns/dns_reloader.cc
-index 322c8a5f0f7..72ff40dbe15 100644
+index 03e248c9878..9ccda82c7e9 100644
--- a/chromium/net/dns/dns_reloader.cc
+++ b/chromium/net/dns/dns_reloader.cc
@@ -9,6 +9,10 @@
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0012-chromium-musl-Do-not-define-__sbrk-on-musl.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0019-chromium-musl-Do-not-define-__sbrk-on-musl.patch
index 5db4834b..b20456b0 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0012-chromium-musl-Do-not-define-__sbrk-on-musl.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0019-chromium-musl-Do-not-define-__sbrk-on-musl.patch
@@ -1,4 +1,4 @@
-From 2a49b947ad8e586229411bdd2a00bd496c9e3d0e Mon Sep 17 00:00:00 2001
+From 57ebdf59c45c70ab13b724a2293fdd78241a8a37 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 7 Jul 2017 15:39:57 -0700
Subject: [PATCH] chromium: musl: Do not define __sbrk on musl
@@ -12,15 +12,15 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h b/chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h
-index edc8cf2db70..a868b50d30f 100644
+index 59c1b6fb5f6..10f0786d829 100644
--- a/chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h
+++ b/chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h
-@@ -233,7 +233,7 @@ extern "C" void* mremap(void* old_addr, size_t old_size, size_t new_size,
+@@ -213,7 +213,7 @@ extern "C" void* mremap(void* old_addr, size_t old_size, size_t new_size,
+ return result;
}
- // Don't hook sbrk() in Android, since it doesn't expose __sbrk.
--#if !defined(__ANDROID__)
-+#if !defined(__ANDROID__) && defined(__GLIBC__)
+-#ifndef __UCLIBC__
++#if !defined(__UCLIBC__) && defined(__GLIBC__)
// libc's version:
- extern "C" void* __sbrk(ptrdiff_t increment);
+ extern "C" void* __sbrk(intptr_t increment);
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0013-chromium-musl-Adjust-default-pthread-stack-size.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0020-chromium-musl-Adjust-default-pthread-stack-size.patch
index c0750a31..62b9531b 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0013-chromium-musl-Adjust-default-pthread-stack-size.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0020-chromium-musl-Adjust-default-pthread-stack-size.patch
@@ -1,4 +1,4 @@
-From 98af1531d71359612bbaa2a8619520ca4b6814bc Mon Sep 17 00:00:00 2001
+From 50d5b6fa29696c873830af7632b51cb4836c2210 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 7 Jul 2017 16:41:23 -0700
Subject: [PATCH] chromium: musl: Adjust default pthread stack size
@@ -6,14 +6,14 @@ Subject: [PATCH] chromium: musl: Adjust default pthread stack size
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
chromium/base/threading/platform_thread_linux.cc | 3 ++-
- chromium/third_party/WebKit/Source/platform/wtf/StackUtil.cpp | 4 ++--
+ .../third_party/blink/renderer/platform/wtf/stack_util.cc | 4 ++--
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/chromium/base/threading/platform_thread_linux.cc b/chromium/base/threading/platform_thread_linux.cc
-index 9917a7b1fd6..cb406659b90 100644
+index 095c49b8dc0..d1479b54d48 100644
--- a/chromium/base/threading/platform_thread_linux.cc
+++ b/chromium/base/threading/platform_thread_linux.cc
-@@ -173,7 +173,8 @@ void TerminateOnThread() {}
+@@ -186,7 +186,8 @@ void TerminateOnThread() {}
size_t GetDefaultThreadStackSize(const pthread_attr_t& attributes) {
#if !defined(THREAD_SANITIZER)
@@ -23,11 +23,11 @@ index 9917a7b1fd6..cb406659b90 100644
#else
// ThreadSanitizer bloats the stack heavily. Evidence has been that the
// default stack size isn't enough for some browser tests.
-diff --git a/chromium/third_party/WebKit/Source/platform/wtf/StackUtil.cpp b/chromium/third_party/WebKit/Source/platform/wtf/StackUtil.cpp
-index 13c3f907f8e..07308e08351 100644
---- a/chromium/third_party/WebKit/Source/platform/wtf/StackUtil.cpp
-+++ b/chromium/third_party/WebKit/Source/platform/wtf/StackUtil.cpp
-@@ -28,7 +28,7 @@ size_t GetUnderestimatedStackSize() {
+diff --git a/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc b/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc
+index b2421649ff3..a31b96e90e6 100644
+--- a/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc
++++ b/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc
+@@ -29,7 +29,7 @@ size_t GetUnderestimatedStackSize() {
// FIXME: On Mac OSX and Linux, this method cannot estimate stack size
// correctly for the main thread.
@@ -35,8 +35,8 @@ index 13c3f907f8e..07308e08351 100644
+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FREEBSD) || \
defined(OS_FUCHSIA)
// pthread_getattr_np() can fail if the thread is not invoked by
- // pthread_create() (e.g., the main thread of webkit_unit_tests).
-@@ -96,7 +96,7 @@ size_t GetUnderestimatedStackSize() {
+ // pthread_create() (e.g., the main thread of blink_unittests).
+@@ -97,7 +97,7 @@ return Threading::ThreadStackSize();
}
void* GetStackStart() {
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0016-chromium-musl-Use-_fpstate-instead-of-_libc_fpstate-.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0021-chromium-musl-Use-_fpstate-instead-of-_libc_fpstate-.patch
index 12bea67f..7ed278b0 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0016-chromium-musl-Use-_fpstate-instead-of-_libc_fpstate-.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0021-chromium-musl-Use-_fpstate-instead-of-_libc_fpstate-.patch
@@ -1,4 +1,4 @@
-From 3b87874627418a66bb082ba7825849c073b2c19d Mon Sep 17 00:00:00 2001
+From 1f839bf6ac48d81a8acbf3def4f57a555a05fa18 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 25 Sep 2018 12:35:07 -0700
Subject: [PATCH] chromium: musl: Use _fpstate instead of _libc_fpstate on
@@ -14,7 +14,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc b/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
-index 052ce37cb44..95b0fb44e12 100644
+index 6ee6cc1e4cd..a8f9ccc72ac 100644
--- a/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
+++ b/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
@@ -49,7 +49,7 @@ uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0017-chromium-musl-elf_reader.cc-include-sys-reg.h-to-get.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0022-chromium-musl-elf_reader.cc-include-sys-reg.h-to-get.patch
index 0ff26e51..34761950 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0017-chromium-musl-elf_reader.cc-include-sys-reg.h-to-get.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0022-chromium-musl-elf_reader.cc-include-sys-reg.h-to-get.patch
@@ -1,4 +1,4 @@
-From c1a7511a323997411728689078946122d176551b Mon Sep 17 00:00:00 2001
+From 8f16cec0583c9de1ceb2c34a3bea527096f34075 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 25 Sep 2018 12:59:05 -0700
Subject: [PATCH] chromium: musl: elf_reader.cc: include <sys/reg.h> to get
@@ -13,7 +13,7 @@ Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
3 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/chromium/third_party/breakpad/breakpad/configure.ac b/chromium/third_party/breakpad/breakpad/configure.ac
-index ec194ddd203..767c2af11ee 100644
+index 492d09038f9..a6403ed8c3c 100644
--- a/chromium/third_party/breakpad/breakpad/configure.ac
+++ b/chromium/third_party/breakpad/breakpad/configure.ac
@@ -72,7 +72,7 @@ AC_ARG_ENABLE(m32,
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0023-chromium-musl-pread-pwrite.patch b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0023-chromium-musl-pread-pwrite.patch
new file mode 100644
index 00000000..631ae8a0
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine/chromium/0023-chromium-musl-pread-pwrite.patch
@@ -0,0 +1,31 @@
+From 725941687b118b90904fbc7e6b25a288b9d3c52b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 23 Dec 2018 16:58:04 -0800
+Subject: [PATCH] chromium: musl: pread pwrite
+
+Redefine pread/pwrite in terms of 64bit variants on musl
+since 32bit variants don't exist and aliases are not defined in
+libc either
+
+Upstream-Status: Submitted [https://codereview.chromium.org/1743093002/]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ chromium/third_party/lss/linux_syscall_support.h | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/chromium/third_party/lss/linux_syscall_support.h b/chromium/third_party/lss/linux_syscall_support.h
+index 622cc1fbf7e..cd561b80c05 100644
+--- a/chromium/third_party/lss/linux_syscall_support.h
++++ b/chromium/third_party/lss/linux_syscall_support.h
+@@ -1239,6 +1239,11 @@ struct kernel_statfs {
+ #ifndef __NR_fallocate
+ #define __NR_fallocate 285
+ #endif
++#undef __NR_pread
++#define __NR_pread __NR_pread64
++#undef __NR_pwrite
++#define __NR_pwrite __NR_pwrite64
++
+ /* End of x86-64 definitions */
+ #elif defined(__mips__)
+ #if _MIPS_SIM == _MIPS_SIM_ABI32
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebengine_git.bb b/external/meta-qt5/recipes-qt/qt5/qtwebengine_git.bb
index 7b157096..b49d6cee 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebengine_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebengine_git.bb
@@ -3,7 +3,6 @@ SUMMARY = "QtWebEngine combines the power of Chromium and Qt"
# Read http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/
LICENSE = "BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( LGPL-3.0 | The-Qt-Company-Commercial )"
LIC_FILES_CHKSUM = " \
- file://src/core/browser_context_qt.cpp;md5=b5193b7d68699260f3b40b201365c8d2;beginline=1;endline=38 \
file://src/3rdparty/chromium/LICENSE;md5=0fca02217a5d49a14dfe2d11837bb34d \
file://LICENSE.LGPL3;md5=8211fde12cc8a4e2477602f5953f5b71 \
file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \
@@ -26,6 +25,7 @@ DEPENDS += " \
libcap \
gperf-native \
${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa-lib', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libxcomposite libxcursor libxi libxrandr libxtst', '', d)} \
"
DEPENDS_append_libc-musl = " libexecinfo"
@@ -43,7 +43,9 @@ SECURITY_STRINGFORMAT = ""
# To use system ffmpeg you need to enable also libwebp, opus, vpx
# Only depenedencies available in oe-core are enabled by default
-PACKAGECONFIG ??= "libwebp libevent libpng"
+PACKAGECONFIG ??= "libwebp libevent libpng \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)}"
+
PACKAGECONFIG[icu] = "-feature-webengine-system-icu,-no-feature-webengine-system-icu,icu"
PACKAGECONFIG[ffmpeg] = "-feature-webengine-system-ffmpeg,-no-feature-webengine-system-ffmpeg,libav"
PACKAGECONFIG[webrtc] = "-feature-webengine-webrtc,-no-feature-webengine-webrtc,libvpx"
@@ -56,13 +58,14 @@ PACKAGECONFIG[harfbuzz] = "-feature-webengine-system-harfbuzz,-no-feature-webeng
PACKAGECONFIG[glib] = "-feature-webengine-system-glib,-no-feature-webengine-system-glib,glib-2.0"
PACKAGECONFIG[zlib] = "-feature-webengine-system-zlib,-no-feature-webengine-system-zlib,zlib"
PACKAGECONFIG[protobuf] = "-feature-webengine-system-protobuf,-no-feature-webengine-system-protobuf,protobuf"
-PACKAGECONFIG[jasoncpp] = "-feature-webengine-system-jsoncpp,-no-feature-webengine-system-jsoncpp,jasoncpp"
+PACKAGECONFIG[jsoncpp] = "-feature-webengine-system-jsoncpp,-no-feature-webengine-system-jsoncpp,jsoncpp"
PACKAGECONFIG[libxml2] = "-feature-webengine-system-libxml2,-no-feature-webengine-system-libxml2,libxml2"
PACKAGECONFIG[minizip] = "-feature-webengine-system-minizip,-no-feature-webengine-system-minizip,minizip"
PACKAGECONFIG[proprietary-codecs] = "-feature-webengine-proprietary-codecs,-no-feature-webengine-proprietary-codecs"
PACKAGECONFIG[pepper-plugins] = "-feature-webengine-pepper-plugins,-no-feature-webengine-pepper-plugins"
PACKAGECONFIG[printing-and-pdf] = "-feature-webengine-printing-and-pdf,-no-feature-webengine-printing-and-pdf"
PACKAGECONFIG[spellchecker] = "-feature-webengine-spellchecker,-no-feature-webengine-spellchecker"
+PACKAGECONFIG[pulseaudio] = "-feature-webengine-pulseaudio,-no-feature-webengine-pulseaudio,pulseaudio"
EXTRA_QMAKEVARS_CONFIGURE += "${PACKAGECONFIG_CONFARGS}"
@@ -76,9 +79,16 @@ COMPATIBLE_MACHINE_aarch64 = "(.*)"
inherit qmake5
inherit gettext
-inherit pythonnative
inherit perlnative
-inherit distro_features_check
+inherit features_check
+
+inherit ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "pythonnative", "", d)}
+
+python() {
+ if 'meta-python2' not in d.getVar('BBFILE_COLLECTIONS').split():
+ raise bb.parse.SkipRecipe('Requires meta-python2 to be present.')
+}
+
# Static builds of QtWebEngine aren't supported.
CONFLICT_DISTRO_FEATURES = "qt5-static"
@@ -112,7 +122,6 @@ do_configure_prepend_libc-musl() {
for f in `find ${S}/src/3rdparty/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ -name config.h -o -name config.asm`; do
sed -i -e "s:define HAVE_SYSCTL 1:define HAVE_SYSCTL 0:g" $f
done
- sed -i -e "s:define HAVE_STRUCT_MALLINFO 1:/*undef HAVE_STRUCT_MALLINFO */:g" ${S}/src/3rdparty/chromium/third_party/tcmalloc/chromium/src/config_linux.h
}
do_compile[progress] = "outof:^\[(\d+)/(\d+)\]\s+"
@@ -120,7 +129,6 @@ do_compile[progress] = "outof:^\[(\d+)/(\d+)\]\s+"
do_install_append() {
sed -i 's@ -Wl,--start-group.*-Wl,--end-group@@g; s@[^ ]*${B}[^ ]* @@g' ${D}${libdir}/pkgconfig/Qt5WebEngineCore.pc
}
-PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"
# for /usr/share/qt5/qtwebengine_resources.pak
FILES_${PN} += "${OE_QMAKE_PATH_QT_TRANSLATIONS} ${OE_QMAKE_PATH_QT_DATA}"
@@ -134,47 +142,55 @@ RDEPENDS_${PN}-examples += " \
qtdeclarative-qmlplugins \
"
-QT_MODULE_BRANCH_CHROMIUM = "65-based"
+QT_MODULE_BRANCH_CHROMIUM = "77-based"
-# Patches from https://github.com/meta-qt5/qtwebengine/commits/b5.11
-# 5.11.meta-qt5.8
+# Patches from https://github.com/meta-qt5/qtwebengine/commits/b5.14
+# 5.14.meta-qt5.3
SRC_URI += " \
${QT_GIT}/qtwebengine-chromium.git;name=chromium;branch=${QT_MODULE_BRANCH_CHROMIUM};protocol=${QT_GIT_PROTOCOL};destsuffix=git/src/3rdparty \
file://0001-Force-host-toolchain-configuration.patch \
- file://0002-chromium_overrides.cpp-Fix-build-with-plugins-and-oz.patch \
"
SRC_URI_append_libc-musl = "\
file://0003-musl-don-t-use-pvalloc-as-it-s-not-available-on-musl.patch \
file://0004-musl-link-against-libexecinfo.patch \
+ file://0005-mkspecs-Allow-builds-with-libc-glibc.patch \
"
-# Patches from https://github.com/meta-qt5/qtwebengine-chromium/commits/65-based
-# 65-based.meta-qt5.7
+# Patches from https://github.com/meta-qt5/qtwebengine-chromium/commits/77-based
+# 77-based.meta-qt5.2
SRC_URI += " \
- file://chromium/0001-chromium-Force-host-toolchain-configuration.patch;patchdir=src/3rdparty \
- file://chromium/0002-chromium-workaround-for-too-long-.rps-file-name.patch;patchdir=src/3rdparty \
- file://chromium/0003-chromium-Fix-build-with-gcc8.patch;patchdir=src/3rdparty \
+ file://chromium/0001-chromium-workaround-for-too-long-.rps-file-name.patch;patchdir=src/3rdparty \
+ file://chromium/0002-chromium-stack-pointer-clobber.patch;patchdir=src/3rdparty \
+ file://chromium/0003-chromium-fix-build-with-clang.patch;patchdir=src/3rdparty \
+ file://chromium/0004-chromium-Exclude-CRC32-for-32bit-arm.patch;patchdir=src/3rdparty \
+ file://chromium/0005-chromium-Do-not-try-to-set-the-guessed-values-for-ma.patch;patchdir=src/3rdparty \
+ file://chromium/0006-chromium-aarch64-skia-build-fix.patch;patchdir=src/3rdparty \
+ file://chromium/0007-chromium-fix-build-after-y2038-changes-in-glibc.patch;patchdir=src/3rdparty \
+ file://chromium/0008-chromium-Fix-build-on-32bit-arches-with-64bit-time_t.patch;patchdir=src/3rdparty \
+ file://chromium/0009-chromium-Include-cstddef-for-size_t-definition.patch;patchdir=src/3rdparty \
+ file://chromium/0010-chromium-Move-CharAllocator-definition-to-a-header-f.patch;patchdir=src/3rdparty \
+ file://chromium/0011-chromium-Include-cstddef-and-cstdint.patch;patchdir=src/3rdparty \
+ file://chromium/0012-chromium-Link-v8-with-libatomic-on-x86.patch;patchdir=src/3rdparty \
"
SRC_URI_append_libc-musl = "\
- file://chromium/0004-chromium-musl-sandbox-Define-TEMP_FAILURE_RETRY-if-n.patch;patchdir=src/3rdparty \
- file://chromium/0005-chromium-musl-Avoid-mallinfo-APIs-on-non-glibc-linux.patch;patchdir=src/3rdparty \
- file://chromium/0006-chromium-musl-include-fcntl.h-for-loff_t.patch;patchdir=src/3rdparty \
- file://chromium/0007-chromium-musl-use-off64_t-instead-of-the-internal-__.patch;patchdir=src/3rdparty \
- file://chromium/0008-chromium-musl-linux-glibc-make-the-distinction.patch;patchdir=src/3rdparty \
- file://chromium/0009-chromium-musl-allocator-Do-not-include-glibc_weak_sy.patch;patchdir=src/3rdparty \
- file://chromium/0010-chromium-musl-Use-correct-member-name-__si_fields-fr.patch;patchdir=src/3rdparty \
- file://chromium/0011-chromium-musl-Define-res_ninit-and-res_nclose-for-no.patch;patchdir=src/3rdparty \
- file://chromium/0012-chromium-musl-Do-not-define-__sbrk-on-musl.patch;patchdir=src/3rdparty \
- file://chromium/0013-chromium-musl-Adjust-default-pthread-stack-size.patch;patchdir=src/3rdparty \
- file://chromium/0014-chromium-musl-include-asm-generic-ioctl.h-for-TCGETS.patch;patchdir=src/3rdparty \
- file://chromium/0015-chromium-musl-tcmalloc-Use-off64_t-insread-of-__off6.patch;patchdir=src/3rdparty \
- file://chromium/0016-chromium-musl-Use-_fpstate-instead-of-_libc_fpstate-.patch;patchdir=src/3rdparty \
- file://chromium/0017-chromium-musl-elf_reader.cc-include-sys-reg.h-to-get.patch;patchdir=src/3rdparty \
+ file://chromium/0011-chromium-musl-sandbox-Define-TEMP_FAILURE_RETRY-if-n.patch;patchdir=src/3rdparty \
+ file://chromium/0012-chromium-musl-Avoid-mallinfo-APIs-on-non-glibc-linux.patch;patchdir=src/3rdparty \
+ file://chromium/0013-chromium-musl-include-fcntl.h-for-loff_t.patch;patchdir=src/3rdparty \
+ file://chromium/0014-chromium-musl-use-off64_t-instead-of-the-internal-__.patch;patchdir=src/3rdparty \
+ file://chromium/0015-chromium-musl-linux-glibc-make-the-distinction.patch;patchdir=src/3rdparty \
+ file://chromium/0016-chromium-musl-allocator-Do-not-include-glibc_weak_sy.patch;patchdir=src/3rdparty \
+ file://chromium/0017-chromium-musl-Use-correct-member-name-__si_fields-fr.patch;patchdir=src/3rdparty \
+ file://chromium/0018-chromium-musl-Define-res_ninit-and-res_nclose-for-no.patch;patchdir=src/3rdparty \
+ file://chromium/0019-chromium-musl-Do-not-define-__sbrk-on-musl.patch;patchdir=src/3rdparty \
+ file://chromium/0020-chromium-musl-Adjust-default-pthread-stack-size.patch;patchdir=src/3rdparty \
+ file://chromium/0021-chromium-musl-Use-_fpstate-instead-of-_libc_fpstate-.patch;patchdir=src/3rdparty \
+ file://chromium/0022-chromium-musl-elf_reader.cc-include-sys-reg.h-to-get.patch;patchdir=src/3rdparty \
+ file://chromium/0023-chromium-musl-pread-pwrite.patch;patchdir=src/3rdparty \
"
-SRCREV_qtwebengine = "18412af977d658f243eb5b25b62284924cfa362f"
-SRCREV_chromium = "2095a35f300bcbe82e968e9a547dff7c79be29d8"
+SRCREV_qtwebengine = "35aa6c30f0e766b8825519e04242b7a4c93b6e0e"
+SRCREV_chromium = "6c9be50c2d901e66119679155fb3c7c9200448d1"
SRCREV = "${SRCREV_qtwebengine}"
SRCREV_FORMAT = "qtwebengine_chromium"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebglplugin_git.bb b/external/meta-qt5/recipes-qt/qt5/qtwebglplugin_git.bb
index 993ad3ff..8c2f5520 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebglplugin_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebglplugin_git.bb
@@ -18,4 +18,4 @@ do_configure_prepend() {
EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('PACKAGECONFIG', 'qtdeclarative', 'CONFIG+=OE_QTDECLARATIVE_ENABLED', '', d)}"
-SRCREV = "b57a3ce9d95f36ca0f1b1d1e9cf1e20030e882d8"
+SRCREV = "55c7e18b7be32a6911631f32d4bfb9029c6ad689"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebkit-examples/0001-Fix-build-with-qt-5.11.patch b/external/meta-qt5/recipes-qt/qt5/qtwebkit-examples/0001-Fix-build-with-qt-5.11.patch
deleted file mode 100644
index 57e318b0..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qtwebkit-examples/0001-Fix-build-with-qt-5.11.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From e07f1fcba5a291ef0ab31fd85fbc4836eda19a66 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 24 Sep 2018 03:14:29 -0700
-Subject: [PATCH] Fix build with qt 5.11
-
-Fixes
-
-examples/webkitwidgets/scroller/wheel/main.cpp:93:84: error: cannot call
-member function 'int QRandomGenerator::bounded(int)' without object
- m_wheel1->scrollTo(m_wheel1->currentIndex() +
-QRandomGenerator::bounded(200));
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- examples/webkitwidgets/scroller/wheel/main.cpp | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/examples/webkitwidgets/scroller/wheel/main.cpp b/examples/webkitwidgets/scroller/wheel/main.cpp
-index 11fad08..9a6a225 100644
---- a/examples/webkitwidgets/scroller/wheel/main.cpp
-+++ b/examples/webkitwidgets/scroller/wheel/main.cpp
-@@ -40,7 +40,7 @@
-
- #include <QtWidgets>
- #include <qmath.h>
--
-+#include <QRandomGenerator>
- #include "wheelwidget.h"
-
- class MainWindow : public QMainWindow
-@@ -90,9 +90,9 @@ public:
- private slots:
- void rotateRandom()
- {
-- m_wheel1->scrollTo(m_wheel1->currentIndex() + QRandomGenerator::bounded(200));
-- m_wheel2->scrollTo(m_wheel2->currentIndex() + QRandomGenerator::bounded(200));
-- m_wheel3->scrollTo(m_wheel3->currentIndex() + QRandomGenerator::bounded(200));
-+ m_wheel1->scrollTo(m_wheel1->currentIndex() + QRandomGenerator::global()->bounded(200));
-+ m_wheel2->scrollTo(m_wheel2->currentIndex() + QRandomGenerator::global()->bounded(200));
-+ m_wheel3->scrollTo(m_wheel3->currentIndex() + QRandomGenerator::global()->bounded(200));
- }
-
- private:
---
-2.19.0
-
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebkit-examples_git.bb b/external/meta-qt5/recipes-qt/qt5/qtwebkit-examples_git.bb
deleted file mode 100644
index 4b635bdf..00000000
--- a/external/meta-qt5/recipes-qt/qt5/qtwebkit-examples_git.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-require qt5.inc
-require qt5-git.inc
-
-LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )"
-LIC_FILES_CHKSUM = " \
- file://LICENSE.GPLv2;md5=05832301944453ec79e40ba3c3cfceec \
- file://LICENSE.LGPLv21;md5=58a180e1cf84c756c29f782b3a485c29 \
- file://LICENSE.LGPLv3;md5=b8c75190712063cde04e1f41b6fdad98 \
- file://LICENSE.GPLv3;md5=40f9bf30e783ddc201497165dfb32afb \
- file://examples/webkitwidgets/scroller/wheel/main.cpp;endline=39;md5=b0739af76072fbe303dc04b6941e054f \
- file://examples/webkitwidgets/imageanalyzer/imageanalyzer.cpp;endline=39;md5=b0739af76072fbe303dc04b6941e054f \
-"
-
-SRC_URI += "file://0001-Fix-build-with-qt-5.11.patch"
-
-PACKAGECONFIG ?= "examples"
-
-DEPENDS += "qtwebkit qtxmlpatterns"
-RDEPENDS_${PN}-examples += "qtwebkit-qmlplugins"
-RDEPENDS_${PN}-examples += "${@bb.utils.contains('PACKAGECONFIG_OPENSSL', 'openssl', 'ca-certificates', '', d)}"
-
-QT_MODULE_BRANCH = "dev"
-
-SRCREV = "2d68492004bf4ba49cf58c9bd72706cb282cf59b"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebkit/0001-Port-build-to-python3.patch b/external/meta-qt5/recipes-qt/qt5/qtwebkit/0001-Port-build-to-python3.patch
new file mode 100644
index 00000000..5c925cd5
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebkit/0001-Port-build-to-python3.patch
@@ -0,0 +1,3845 @@
+From a8bbd89d7a1d3e8ca381c025bc8dd1275c59356a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Tue, 4 Feb 2020 22:41:00 +0100
+Subject: [PATCH] Port build to python3
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Procdure:
+
+* send all py-files through 2to3
+* find inspiration at / steel from (jsmin.py) webkitgtk
+* manual fixes e.g rename builtins to mybuiltins - 'import builtins' does
+ not load what's defined here
+
+Upstream-Status: Pending
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ Source/JavaScriptCore/CMakeLists.txt | 18 +--
+ Source/JavaScriptCore/DerivedSources.make | 18 +--
+ .../JavaScriptCore/KeywordLookupGenerator.py | 28 ++--
+ .../Scripts/builtins/builtins.py | 11 --
+ .../generate-combined-inspector-json.py | 4 +-
+ .../Scripts/generate-js-builtins.py | 12 +-
+ ...line-and-minify-stylesheets-and-scripts.py | 2 +-
+ Source/JavaScriptCore/Scripts/jsmin.py | 23 +--
+ .../Scripts/make-js-file-arrays.py | 59 +++++---
+ .../{builtins => mybuiltins}/__init__.py | 2 +-
+ .../Scripts/mybuiltins/mybuiltins.py | 11 ++
+ .../mybuiltins_generate_combined_header.py} | 4 +-
+ ...ltins_generate_combined_implementation.py} | 6 +-
+ .../mybuiltins_generate_separate_header.py} | 6 +-
+ ...ltins_generate_separate_implementation.py} | 6 +-
+ .../mybuiltins_generator.py} | 4 +-
+ .../mybuiltins_model.py} | 7 +-
+ .../mybuiltins_templates.py} | 0
+ .../disassembler/udis86/ud_itab.py | 10 +-
+ .../disassembler/udis86/ud_opcode.py | 12 +-
+ Source/JavaScriptCore/generate-bytecode-files | 16 +--
+ .../inspector/scripts/codegen/__init__.py | 42 +++---
+ .../scripts/codegen/cpp_generator.py | 20 +--
+ ...cpp_alternate_backend_dispatcher_header.py | 8 +-
+ .../generate_cpp_backend_dispatcher_header.py | 16 +--
+ ...e_cpp_backend_dispatcher_implementation.py | 12 +-
+ ...generate_cpp_frontend_dispatcher_header.py | 12 +-
+ ..._cpp_frontend_dispatcher_implementation.py | 12 +-
+ .../generate_cpp_protocol_types_header.py | 38 ++---
+ ...erate_cpp_protocol_types_implementation.py | 20 +--
+ .../codegen/generate_js_backend_commands.py | 14 +-
+ ...generate_objc_backend_dispatcher_header.py | 14 +-
+ ..._objc_backend_dispatcher_implementation.py | 18 +--
+ .../generate_objc_configuration_header.py | 6 +-
+ ...erate_objc_configuration_implementation.py | 6 +-
+ .../generate_objc_conversion_helpers.py | 12 +-
+ ...objc_frontend_dispatcher_implementation.py | 16 +--
+ .../scripts/codegen/generate_objc_header.py | 28 ++--
+ .../codegen/generate_objc_internal_header.py | 10 +-
+ ...rate_objc_protocol_types_implementation.py | 16 +--
+ .../inspector/scripts/codegen/generator.py | 12 +-
+ .../inspector/scripts/codegen/models.py | 2 +-
+ .../scripts/codegen/objc_generator.py | 74 +++++-----
+ .../generate-inspector-protocol-bindings.py | 2 +-
+ .../scripts/CodeGeneratorReplayInputs.py | 26 ++--
+ .../ANGLE/generate_winrt_projects.py | 4 +-
+ .../ANGLE/src/libANGLE/Float16ToFloat32.py | 26 ++--
+ .../renderer/generate_new_renderer.py | 2 +-
+ .../gtest/scripts/fuse_gtest_files.py | 12 +-
+ .../gtest/scripts/gen_gtest_pred_impl.py | 12 +-
+ Source/ThirdParty/gtest/scripts/pump.py | 30 ++--
+ Source/ThirdParty/gtest/scripts/upload.py | 134 +++++++++---------
+ .../test/gtest_break_on_failure_unittest.py | 2 +-
+ .../ThirdParty/gtest/test/gtest_color_test.py | 66 ++++-----
+ .../gtest/test/gtest_env_var_test.py | 4 +-
+ .../gtest/test/gtest_filter_unittest.py | 14 +-
+ .../ThirdParty/gtest/test/gtest_help_test.py | 16 +--
+ .../gtest/test/gtest_list_tests_unittest.py | 4 +-
+ .../gtest/test/gtest_shuffle_test.py | 40 +++---
+ .../ThirdParty/gtest/test/gtest_test_utils.py | 2 +-
+ .../gtest/test/gtest_throw_on_failure_test.py | 4 +-
+ .../gtest/test/gtest_uninitialized_test.py | 4 +-
+ .../gtest/test/gtest_xml_outfiles_test.py | 6 +-
+ .../gtest/test/gtest_xml_output_unittest.py | 22 +--
+ .../gtest/test/gtest_xml_test_utils.py | 26 ++--
+ .../ThirdParty/gtest/test/run_tests_util.py | 26 ++--
+ .../gtest/test/run_tests_util_test.py | 16 +--
+ .../gtest/xcode/Scripts/versiongenerate.py | 2 +-
+ Source/WebCore/AVFoundationSupport.py | 14 +-
+ Source/WebCore/CMakeLists.txt | 16 +--
+ Source/WebCore/DerivedSources.make | 16 +--
+ .../network/create-http-header-name-table | 2 +-
+ Source/WebInspectorUI/Scripts/jsmin.py | 23 +--
+ .../Scripts/generate-message-receiver.py | 2 +-
+ .../Scripts/generate-messages-header.py | 2 +-
+ .../Scripts/webkit/messages_unittest.py | 46 +++---
+ Source/cmake/WebKitCommon.cmake | 3 -
+ Tools/jhbuild/jhbuildutils.py | 10 +-
+ 78 files changed, 665 insertions(+), 638 deletions(-)
+ delete mode 100644 Source/JavaScriptCore/Scripts/builtins/builtins.py
+ rename Source/JavaScriptCore/Scripts/{builtins => mybuiltins}/__init__.py (72%)
+ create mode 100644 Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins.py
+ rename Source/JavaScriptCore/Scripts/{builtins/builtins_generate_combined_header.py => mybuiltins/mybuiltins_generate_combined_header.py} (98%)
+ rename Source/JavaScriptCore/Scripts/{builtins/builtins_generate_combined_implementation.py => mybuiltins/mybuiltins_generate_combined_implementation.py} (95%)
+ rename Source/JavaScriptCore/Scripts/{builtins/builtins_generate_separate_header.py => mybuiltins/mybuiltins_generate_separate_header.py} (97%)
+ rename Source/JavaScriptCore/Scripts/{builtins/builtins_generate_separate_implementation.py => mybuiltins/mybuiltins_generate_separate_implementation.py} (95%)
+ rename Source/JavaScriptCore/Scripts/{builtins/builtins_generator.py => mybuiltins/mybuiltins_generator.py} (97%)
+ rename Source/JavaScriptCore/Scripts/{builtins/builtins_model.py => mybuiltins/mybuiltins_model.py} (97%)
+ rename Source/JavaScriptCore/Scripts/{builtins/builtins_templates.py => mybuiltins/mybuiltins_templates.py} (100%)
+
+diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt
+index 937b3ed00..a4b5fd432 100644
+--- a/Source/JavaScriptCore/CMakeLists.txt
++++ b/Source/JavaScriptCore/CMakeLists.txt
+@@ -883,7 +883,7 @@ set(JavaScriptCore_SCRIPTS_SOURCES_DIR "${JAVASCRIPTCORE_DIR}/Scripts")
+ set(JavaScriptCore_SCRIPTS_SOURCES_PATHS
+ ${JavaScriptCore_SCRIPTS_SOURCES_DIR}/*.pl
+ ${JavaScriptCore_SCRIPTS_SOURCES_DIR}/*.py
+- ${JavaScriptCore_SCRIPTS_SOURCES_DIR}/builtins/builtins*.py
++ ${JavaScriptCore_SCRIPTS_SOURCES_DIR}/mybuiltins/mybuiltins*.py
+ )
+
+ # Force JavaScriptCore to run scripts from the same staging path as WebCore.
+@@ -1174,14 +1174,14 @@ add_custom_command(
+ # JSCBuiltins
+
+ set(BUILTINS_GENERATOR_SCRIPTS
+- ${JavaScriptCore_SCRIPTS_DIR}/builtins.py
+- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generator.py
+- ${JavaScriptCore_SCRIPTS_DIR}/builtins_model.py
+- ${JavaScriptCore_SCRIPTS_DIR}/builtins_templates.py
+- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_combined_header.py
+- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_combined_implementation.py
+- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_separate_header.py
+- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_separate_implementation.py
++ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins.py
++ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generator.py
++ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_model.py
++ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_templates.py
++ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generate_combined_header.py
++ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generate_combined_implementation.py
++ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generate_separate_header.py
++ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generate_separate_implementation.py
+ ${JavaScriptCore_SCRIPTS_DIR}/generate-js-builtins.py
+ ${JavaScriptCore_SCRIPTS_DIR}/lazywriter.py
+ )
+diff --git a/Source/JavaScriptCore/DerivedSources.make b/Source/JavaScriptCore/DerivedSources.make
+index d5a3fc159..7ef28eff3 100644
+--- a/Source/JavaScriptCore/DerivedSources.make
++++ b/Source/JavaScriptCore/DerivedSources.make
+@@ -66,15 +66,15 @@ all : \
+ # JavaScript builtins.
+
+ BUILTINS_GENERATOR_SCRIPTS = \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins/__init__.py \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins/builtins.py \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins/builtins_generator.py \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins/builtins_model.py \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins/builtins_templates.py \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins/builtins_generate_combined_header.py \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins/builtins_generate_combined_implementation.py \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins/builtins_generate_separate_header.py \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins/builtins_generate_separate_implementation.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/__init__.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/mybuiltins.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/mybuiltins_generator.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/mybuiltins_model.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/mybuiltins_templates.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/mybuiltins_generate_combined_header.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/mybuiltins_generate_combined_implementation.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/mybuiltins_generate_separate_header.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/mybuiltins_generate_separate_implementation.py \
+ $(JavaScriptCore_SCRIPTS_DIR)/generate-js-builtins.py \
+ $(JavaScriptCore_SCRIPTS_DIR)/lazywriter.py \
+ #
+diff --git a/Source/JavaScriptCore/KeywordLookupGenerator.py b/Source/JavaScriptCore/KeywordLookupGenerator.py
+index d13daba61..938d5d6e7 100644
+--- a/Source/JavaScriptCore/KeywordLookupGenerator.py
++++ b/Source/JavaScriptCore/KeywordLookupGenerator.py
+@@ -110,7 +110,7 @@ class Trie:
+
+ def coalesce(self):
+ keys = {}
+- for k, v in self.keys.items():
++ for k, v in list(self.keys.items()):
+ t = v.coalesce()
+ keys[t.prefix] = t
+ self.keys = keys
+@@ -119,7 +119,7 @@ class Trie:
+ if len(self.keys) != 1:
+ return self
+ # Python 3: for() loop for compatibility. Use next() when Python 2.6 is the baseline.
+- for (prefix, suffix) in self.keys.items():
++ for (prefix, suffix) in list(self.keys.items()):
+ res = Trie(self.prefix + prefix)
+ res.value = suffix.value
+ res.keys = suffix.keys
+@@ -131,22 +131,22 @@ class Trie:
+ if self.fullPrefix in keyWordWeights:
+ weight = weight + keyWordWeights[self.fullPrefix]
+ self.selfWeight = weight
+- for trie in self.keys.values():
++ for trie in list(self.keys.values()):
+ trie.fillOut(self.fullPrefix)
+ weight = weight + trie.weight
+- self.keys = [(trie.prefix, trie) for trie in sorted(self.keys.values(), key=operator.attrgetter('weight'), reverse=True)]
++ self.keys = [(trie.prefix, trie) for trie in sorted(list(self.keys.values()), key=operator.attrgetter('weight'), reverse=True)]
+ self.weight = weight
+
+ def printSubTreeAsC(self, typeName, indent):
+ str = makePadding(indent)
+
+ if self.value != None:
+- print(str + "if (!isIdentPartIncludingEscape(code+%d, m_codeEnd)) {" % (len(self.fullPrefix)))
+- print(str + " internalShift<%d>();" % len(self.fullPrefix))
+- print(str + " if (shouldCreateIdentifier)")
+- print(str + (" data->ident = &m_vm->propertyNames->%sKeyword;" % self.fullPrefix))
+- print(str + " return " + self.value + ";")
+- print(str + "}")
++ print((str + "if (!isIdentPartIncludingEscape(code+%d, m_codeEnd)) {" % (len(self.fullPrefix))))
++ print((str + " internalShift<%d>();" % len(self.fullPrefix)))
++ print((str + " if (shouldCreateIdentifier)"))
++ print((str + (" data->ident = &m_vm->propertyNames->%sKeyword;" % self.fullPrefix)))
++ print((str + " return " + self.value + ";"))
++ print((str + "}"))
+ rootIndex = len(self.fullPrefix)
+ itemCount = 0
+ for k, trie in self.keys:
+@@ -163,15 +163,15 @@ class Trie:
+ base = "code + %d" % baseIndex
+ comparison = ("COMPARE_%d%sS(%s, " % (len(test), typeName, base)) + ", ".join(test) + ")"
+ if itemCount == 0:
+- print(str + "if (" + comparison + ") {")
++ print((str + "if (" + comparison + ") {"))
+ else:
+- print(str + "} else if (" + comparison + ") {")
++ print((str + "} else if (" + comparison + ") {"))
+
+ trie.printSubTreeAsC(typeName, indent + 4)
+ itemCount = itemCount + 1
+
+ if itemCount == len(self.keys):
+- print(str + "}")
++ print((str + "}"))
+
+ def maxLength(self):
+ max = len(self.fullPrefix)
+@@ -187,7 +187,7 @@ class Trie:
+ print("static ALWAYS_INLINE bool isIdentPartIncludingEscape(const LChar* code, const LChar* codeEnd);")
+ print("static ALWAYS_INLINE bool isIdentPartIncludingEscape(const UChar* code, const UChar* codeEnd);")
+ # max length + 1 so we don't need to do any bounds checking at all
+- print("static const int maxTokenLength = %d;" % (self.maxLength() + 1))
++ print(("static const int maxTokenLength = %d;" % (self.maxLength() + 1)))
+ print("")
+ print("template <>")
+ print("template <bool shouldCreateIdentifier> ALWAYS_INLINE JSTokenType Lexer<UChar>::parseKeyword(JSTokenData* data)")
+diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins.py b/Source/JavaScriptCore/Scripts/builtins/builtins.py
+deleted file mode 100644
+index 9349eeef6..000000000
+--- a/Source/JavaScriptCore/Scripts/builtins/builtins.py
++++ /dev/null
+@@ -1,11 +0,0 @@
+-# This file is used to simulate the builtins/ directory when generate-js-builtins.py
+-# is run from JavaScriptCore framework's private headers directory, which is flattened.
+-
+-from builtins_model import *
+-from builtins_templates import *
+-
+-from builtins_generator import *
+-from builtins_generate_combined_header import *
+-from builtins_generate_combined_implementation import *
+-from builtins_generate_separate_header import *
+-from builtins_generate_separate_implementation import *
+diff --git a/Source/JavaScriptCore/Scripts/generate-combined-inspector-json.py b/Source/JavaScriptCore/Scripts/generate-combined-inspector-json.py
+index 53660318d..6b0e95dc9 100755
+--- a/Source/JavaScriptCore/Scripts/generate-combined-inspector-json.py
++++ b/Source/JavaScriptCore/Scripts/generate-combined-inspector-json.py
+@@ -29,7 +29,7 @@ import os
+ import sys
+
+ if len(sys.argv) < 2:
+- print("usage: %s [json files or directory of json files ...]" % os.path.basename(sys.argv[0]))
++ print(("usage: %s [json files or directory of json files ...]" % os.path.basename(sys.argv[0])))
+ sys.exit(1)
+
+ files = []
+@@ -64,6 +64,6 @@ for file in files:
+ sys.stderr.write("File \"%s\" does not contain valid JSON:\n" % file)
+ raise
+
+- print(string.rstrip())
++ print((string.rstrip()))
+ print("]}")
+
+diff --git a/Source/JavaScriptCore/Scripts/generate-js-builtins.py b/Source/JavaScriptCore/Scripts/generate-js-builtins.py
+index 554a72ccc..3dce94c5c 100644
+--- a/Source/JavaScriptCore/Scripts/generate-js-builtins.py
++++ b/Source/JavaScriptCore/Scripts/generate-js-builtins.py
+@@ -25,7 +25,7 @@
+ # THE POSSIBILITY OF SUCH DAMAGE.
+
+ # This script generates C++ bindings for JavaScript builtins.
+-# Generators for individual files are located in the builtins/ directory.
++# Generators for individual files are located in the mybuiltins/ directory.
+
+ import fnmatch
+ import logging
+@@ -37,8 +37,8 @@ log = logging.getLogger('global')
+
+ from lazywriter import LazyFileWriter
+
+-import builtins
+-from builtins import *
++#import mybuiltins
++from mybuiltins import *
+
+
+ def generate_bindings_for_builtins_files(builtins_files=[],
+@@ -118,7 +118,7 @@ if __name__ == '__main__':
+ cli_parser.add_option("-t", "--test", action="store_true", help="Enable test mode.")
+
+ arg_options, arg_values = cli_parser.parse_args()
+- if len(arg_values) is 0 and not arg_options.input_directory:
++ if len(arg_values) == 0 and not arg_options.input_directory:
+ raise ParseException("At least one input file or directory expected.")
+
+ if not arg_options.output_directory:
+@@ -132,7 +132,7 @@ if __name__ == '__main__':
+ for filepath in os.listdir(arg_options.input_directory):
+ input_filepaths.append(os.path.join(arg_options.input_directory, filepath))
+
+- input_filepaths = filter(lambda name: fnmatch.fnmatch(name, '*.js'), input_filepaths)
++ input_filepaths = [name for name in input_filepaths if fnmatch.fnmatch(name, '*.js')]
+
+ options = {
+ 'output_path': arg_options.output_directory,
+@@ -144,7 +144,7 @@ if __name__ == '__main__':
+
+ log.debug("Generating code for builtins.")
+ log.debug("Parsed options:")
+- for option, value in options.items():
++ for option, value in list(options.items()):
+ log.debug(" %s: %s" % (option, value))
+ log.debug("")
+ log.debug("Input files:")
+diff --git a/Source/JavaScriptCore/Scripts/inline-and-minify-stylesheets-and-scripts.py b/Source/JavaScriptCore/Scripts/inline-and-minify-stylesheets-and-scripts.py
+index 89200c84e..a4a26c2b4 100755
+--- a/Source/JavaScriptCore/Scripts/inline-and-minify-stylesheets-and-scripts.py
++++ b/Source/JavaScriptCore/Scripts/inline-and-minify-stylesheets-and-scripts.py
+@@ -37,7 +37,7 @@ import sys
+ def main(argv):
+
+ if len(argv) < 2:
+- print('usage: %s inputFile outputFile' % argv[0])
++ print(('usage: %s inputFile outputFile' % argv[0]))
+ return 1
+
+ inputFileName = argv[1]
+diff --git a/Source/JavaScriptCore/Scripts/jsmin.py b/Source/JavaScriptCore/Scripts/jsmin.py
+index 372418b4d..2f9fddfce 100644
+--- a/Source/JavaScriptCore/Scripts/jsmin.py
++++ b/Source/JavaScriptCore/Scripts/jsmin.py
+@@ -23,17 +23,20 @@
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ # THE SOFTWARE.
+
++# stolen from webkitgtk 2.26.2
+
+ import sys
+ is_3 = sys.version_info >= (3, 0)
+ if is_3:
+ import io
++ python_text_type = str
+ else:
+ import StringIO
+ try:
+ import cStringIO
+ except ImportError:
+ cStringIO = None
++ python_text_type = basestring
+
+
+ __all__ = ['jsmin', 'JavascriptMinify']
+@@ -79,14 +82,18 @@ class JavascriptMinify(object):
+ def write(char):
+ # all of this is to support literal regular expressions.
+ # sigh
+- if char in 'return':
++ if str(char) in 'return':
+ self.return_buf += char
+ self.is_return = self.return_buf == 'return'
+ self.outs.write(char)
+ if self.is_return:
+ self.return_buf = ''
+
+- read = self.ins.read
++ def read(n):
++ char = self.ins.read(n)
++ if not isinstance(char, python_text_type):
++ raise ValueError("ERROR: The script jsmin.py can only handle text input, but it received input of type %s" % type(char))
++ return char
+
+ space_strings = "abcdefghijklmnopqrstuvwxyz"\
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$\\"
+@@ -118,8 +125,8 @@ class JavascriptMinify(object):
+ write(previous)
+ elif not previous:
+ return
+- elif previous >= '!':
+- if previous in "'\"":
++ elif str(previous) >= "!":
++ if str(previous) in "'\"":
+ in_quote = previous
+ write(previous)
+ previous_non_space = previous
+@@ -166,7 +173,7 @@ class JavascriptMinify(object):
+ if numslashes % 2 == 0:
+ in_quote = ''
+ write(''.join(quote_buf))
+- elif next1 in '\r\n':
++ elif str(next1) in '\r\n':
+ if previous_non_space in newlineend_strings \
+ or previous_non_space > '~':
+ while 1:
+@@ -179,7 +186,7 @@ class JavascriptMinify(object):
+ or next2 > '~' or next2 == '/':
+ do_newline = True
+ break
+- elif next1 < '!' and not in_re:
++ elif str(next1) < '!' and not in_re:
+ if (previous_non_space in space_strings \
+ or previous_non_space > '~') \
+ and (next2 in space_strings or next2 > '~'):
+@@ -217,14 +224,14 @@ class JavascriptMinify(object):
+ do_newline = False
+
+ write(next1)
+- if not in_re and next1 in "'\"`":
++ if not in_re and str(next1) in "'\"`":
+ in_quote = next1
+ quote_buf = []
+
+ previous = next1
+ next1 = next2
+
+- if previous >= '!':
++ if str(previous) >= '!':
+ previous_non_space = previous
+
+ if previous == '\\':
+diff --git a/Source/JavaScriptCore/Scripts/make-js-file-arrays.py b/Source/JavaScriptCore/Scripts/make-js-file-arrays.py
+index 65056646a..4bb2bfe66 100755
+--- a/Source/JavaScriptCore/Scripts/make-js-file-arrays.py
++++ b/Source/JavaScriptCore/Scripts/make-js-file-arrays.py
+@@ -21,11 +21,15 @@
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
++# stolen from webkitgtk 2.26.2
++
++from __future__ import print_function
+ import io
+ import os
+ from optparse import OptionParser
+-from StringIO import StringIO
+-from jsmin import JavascriptMinify
++import sys
++from jsmin import jsmin
++is_3 = sys.version_info >= (3, 0)
+
+
+ def stringifyCodepoint(code):
+@@ -36,7 +40,7 @@ def stringifyCodepoint(code):
+
+
+ def chunk(list, chunkSize):
+- for i in xrange(0, len(list), chunkSize):
++ for i in range(0, len(list), chunkSize):
+ yield list[i:i + chunkSize]
+
+
+@@ -46,11 +50,11 @@ def main():
+ parser.add_option('-n', '--namespace', help='Namespace to use')
+ (options, arguments) = parser.parse_args()
+ if not options.namespace:
+- print 'Error: must provide a namespace'
++ print('Error: must provide a namespace')
+ parser.print_usage()
+ exit(-1)
+ if len(arguments) < 3:
+- print 'Error: must provide at least 3 arguments'
++ print('Error: must provide at least 3 arguments')
+ parser.print_usage()
+ exit(-1)
+
+@@ -60,38 +64,47 @@ def main():
+ inputPaths = arguments[2:]
+
+ headerFile = open(headerPath, 'w')
+- print >> headerFile, 'namespace {0:s} {{'.format(namespace)
++ print('namespace {0:s} {{'.format(namespace), file=headerFile)
+
+ sourceFile = open(sourcePath, 'w')
+- print >> sourceFile, '#include "{0:s}"'.format(os.path.basename(headerPath))
+- print >> sourceFile, 'namespace {0:s} {{'.format(namespace)
+-
+- jsm = JavascriptMinify()
++ print('#include "{0:s}"'.format(os.path.basename(headerPath)), file=sourceFile)
++ print('namespace {0:s} {{'.format(namespace), file=sourceFile)
+
+ for inputFileName in inputPaths:
+- inputStream = io.FileIO(inputFileName)
+- outputStream = StringIO()
++
++ if is_3:
++ inputStream = io.open(inputFileName, encoding='utf-8')
++ else:
++ inputStream = io.FileIO(inputFileName)
++
++ data = inputStream.read()
+
+ if not options.no_minify:
+- jsm.minify(inputStream, outputStream)
+- characters = outputStream.getvalue()
++ characters = jsmin(data)
++ else:
++ characters = data
++
++ if is_3:
++ codepoints = bytearray(characters, encoding='utf-8')
+ else:
+- characters = inputStream.read()
++ codepoints = list(map(ord, characters))
++
++ # Use the size of codepoints instead of the characters
++ # because UTF-8 characters may need more than one byte.
++ size = len(codepoints)
+
+- size = len(characters)
+ variableName = os.path.splitext(os.path.basename(inputFileName))[0]
+
+- print >> headerFile, 'extern const char {0:s}JavaScript[{1:d}];'.format(variableName, size)
+- print >> sourceFile, 'const char {0:s}JavaScript[{1:d}] = {{'.format(variableName, size)
++ print('extern const char {0:s}JavaScript[{1:d}];'.format(variableName, size), file=headerFile)
++ print('const char {0:s}JavaScript[{1:d}] = {{'.format(variableName, size), file=sourceFile)
+
+- codepoints = map(ord, characters)
+ for codepointChunk in chunk(codepoints, 16):
+- print >> sourceFile, ' {0:s},'.format(','.join(map(stringifyCodepoint, codepointChunk)))
++ print(' {0:s},'.format(','.join(map(stringifyCodepoint, codepointChunk))), file=sourceFile)
+
+- print >> sourceFile, '};'
++ print('};', file=sourceFile)
+
+- print >> headerFile, '}} // namespace {0:s}'.format(namespace)
+- print >> sourceFile, '}} // namespace {0:s}'.format(namespace)
++ print('}} // namespace {0:s}'.format(namespace), file=headerFile)
++ print('}} // namespace {0:s}'.format(namespace), file=sourceFile)
+
+ if __name__ == '__main__':
+ main()
+diff --git a/Source/JavaScriptCore/Scripts/builtins/__init__.py b/Source/JavaScriptCore/Scripts/mybuiltins/__init__.py
+similarity index 72%
+rename from Source/JavaScriptCore/Scripts/builtins/__init__.py
+rename to Source/JavaScriptCore/Scripts/mybuiltins/__init__.py
+index fdfcba981..1b9668023 100644
+--- a/Source/JavaScriptCore/Scripts/builtins/__init__.py
++++ b/Source/JavaScriptCore/Scripts/mybuiltins/__init__.py
+@@ -1,3 +1,3 @@
+ # Required for Python to search this directory for module files
+
+-from builtins import *
++from mybuiltins import *
+diff --git a/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins.py b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins.py
+new file mode 100644
+index 000000000..1bea3da5c
+--- /dev/null
++++ b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins.py
+@@ -0,0 +1,11 @@
++# This file is used to simulate the builtins/ directory when generate-js-builtins.py
++# is run from JavaScriptCore framework's private headers directory, which is flattened.
++
++from mybuiltins_model import *
++from mybuiltins_templates import *
++
++from mybuiltins_generator import *
++from mybuiltins_generate_combined_header import *
++from mybuiltins_generate_combined_implementation import *
++from mybuiltins_generate_separate_header import *
++from mybuiltins_generate_separate_implementation import *
+diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_combined_header.py
+similarity index 98%
+rename from Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py
+rename to Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_combined_header.py
+index 891bd3cb4..6520a5f16 100644
+--- a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py
++++ b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_combined_header.py
+@@ -30,8 +30,8 @@ import re
+ import string
+ from string import Template
+
+-from builtins_generator import BuiltinsGenerator
+-from builtins_templates import BuiltinsGeneratorTemplates as Templates
++from mybuiltins_generator import BuiltinsGenerator
++from mybuiltins_templates import BuiltinsGeneratorTemplates as Templates
+
+ log = logging.getLogger('global')
+
+diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_combined_implementation.py
+similarity index 95%
+rename from Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py
+rename to Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_combined_implementation.py
+index 094434b64..76eed7665 100644
+--- a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py
++++ b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_combined_implementation.py
+@@ -30,9 +30,9 @@ import re
+ import string
+ from string import Template
+
+-from builtins_generator import BuiltinsGenerator
+-from builtins_model import Framework, Frameworks
+-from builtins_templates import BuiltinsGeneratorTemplates as Templates
++from mybuiltins_generator import BuiltinsGenerator
++from mybuiltins_model import Framework, Frameworks
++from mybuiltins_templates import BuiltinsGeneratorTemplates as Templates
+
+ log = logging.getLogger('global')
+
+diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_separate_header.py
+similarity index 97%
+rename from Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py
+rename to Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_separate_header.py
+index b72a94bfe..6cbfbdca1 100644
+--- a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py
++++ b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_separate_header.py
+@@ -30,9 +30,9 @@ import re
+ import string
+ from string import Template
+
+-from builtins_generator import BuiltinsGenerator
+-from builtins_model import Frameworks
+-from builtins_templates import BuiltinsGeneratorTemplates as Templates
++from mybuiltins_generator import BuiltinsGenerator
++from mybuiltins_model import Frameworks
++from mybuiltins_templates import BuiltinsGeneratorTemplates as Templates
+
+ log = logging.getLogger('global')
+
+diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_separate_implementation.py
+similarity index 95%
+rename from Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py
+rename to Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_separate_implementation.py
+index 0443975da..9f811df6a 100644
+--- a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py
++++ b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_separate_implementation.py
+@@ -30,9 +30,9 @@ import re
+ import string
+ from string import Template
+
+-from builtins_generator import BuiltinsGenerator, WK_lcfirst
+-from builtins_model import Framework, Frameworks
+-from builtins_templates import BuiltinsGeneratorTemplates as Templates
++from mybuiltins_generator import BuiltinsGenerator, WK_lcfirst
++from mybuiltins_model import Framework, Frameworks
++from mybuiltins_templates import BuiltinsGeneratorTemplates as Templates
+
+ log = logging.getLogger('global')
+
+diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_generator.py b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generator.py
+similarity index 97%
+rename from Source/JavaScriptCore/Scripts/builtins/builtins_generator.py
+rename to Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generator.py
+index 21ac4c1d9..546eb2e07 100644
+--- a/Source/JavaScriptCore/Scripts/builtins/builtins_generator.py
++++ b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generator.py
+@@ -30,8 +30,8 @@ import re
+ from string import Template
+ import json
+
+-from builtins_model import BuiltinFunction, BuiltinObject
+-from builtins_templates import BuiltinsGeneratorTemplates as Templates
++from mybuiltins_model import BuiltinFunction, BuiltinObject
++from mybuiltins_templates import BuiltinsGeneratorTemplates as Templates
+
+ log = logging.getLogger('global')
+
+diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_model.py b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_model.py
+similarity index 97%
+rename from Source/JavaScriptCore/Scripts/builtins/builtins_model.py
+rename to Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_model.py
+index cdd5f9003..68d7aed06 100755
+--- a/Source/JavaScriptCore/Scripts/builtins/builtins_model.py
++++ b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_model.py
+@@ -122,7 +122,8 @@ class BuiltinFunction:
+ interface = interface + " [Constructor]"
+
+ return interface
+-
++ def __lt__(self, other):
++ return self.function_name < other.function_name
+
+ class BuiltinsCollection:
+ def __init__(self, framework_name):
+@@ -178,7 +179,7 @@ class BuiltinsCollection:
+
+ result = []
+
+- for owner, years in owner_to_years.items():
++ for owner, years in list(owner_to_years.items()):
+ sorted_years = list(years)
+ sorted_years.sort()
+ result.append("%s %s" % (', '.join(sorted_years), owner))
+@@ -271,4 +272,4 @@ class BuiltinsCollection:
+ functionBounds.append((start, end))
+
+ functionStrings = [text[start:end].strip() for (start, end) in functionBounds]
+- return map(BuiltinFunction.fromString, functionStrings)
++ return list(map(BuiltinFunction.fromString, functionStrings))
+diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_templates.py b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_templates.py
+similarity index 100%
+rename from Source/JavaScriptCore/Scripts/builtins/builtins_templates.py
+rename to Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_templates.py
+diff --git a/Source/JavaScriptCore/disassembler/udis86/ud_itab.py b/Source/JavaScriptCore/disassembler/udis86/ud_itab.py
+index ef011d2ec..205dcb1ae 100644
+--- a/Source/JavaScriptCore/disassembler/udis86/ud_itab.py
++++ b/Source/JavaScriptCore/disassembler/udis86/ud_itab.py
+@@ -266,15 +266,15 @@ class UdItabGenerator:
+ pfx_c = []
+ opr = insn.operands
+ for i in range(len(opr)):
+- if not (opr[i] in self.OperandDict.keys()):
+- print("error: invalid operand declaration: %s\n" % opr[i])
++ if not (opr[i] in list(self.OperandDict.keys())):
++ print(("error: invalid operand declaration: %s\n" % opr[i]))
+ opr_c[i] = "O_" + opr[i]
+ opr = "%s %s %s %s" % (opr_c[0] + ",", opr_c[1] + ",",
+ opr_c[2] + ",", opr_c[3])
+
+ for p in insn.prefixes:
+- if not ( p in self.PrefixDict.keys() ):
+- print("error: invalid prefix specification: %s \n" % pfx)
++ if not ( p in list(self.PrefixDict.keys()) ):
++ print(("error: invalid prefix specification: %s \n" % pfx))
+ pfx_c.append( self.PrefixDict[p] )
+ if len(insn.prefixes) == 0:
+ pfx_c.append( "P_none" )
+@@ -346,7 +346,7 @@ class UdItabGenerator:
+ # Macros defining short-names for operands
+ #
+ self.ItabC.write("\n\n/* itab entry operand definitions (for readability) */\n");
+- operands = self.OperandDict.keys()
++ operands = list(self.OperandDict.keys())
+ operands = sorted(operands)
+ for o in operands:
+ self.ItabC.write("#define O_%-7s { %-12s %-8s }\n" %
+diff --git a/Source/JavaScriptCore/disassembler/udis86/ud_opcode.py b/Source/JavaScriptCore/disassembler/udis86/ud_opcode.py
+index fe1833dc7..00961071c 100644
+--- a/Source/JavaScriptCore/disassembler/udis86/ud_opcode.py
++++ b/Source/JavaScriptCore/disassembler/udis86/ud_opcode.py
+@@ -28,7 +28,7 @@ import os
+ # Some compatibility stuff for supporting python 2.x as well as python 3.x
+ def itemslist(dict):
+ try:
+- return dict.iteritems() # python 2.x
++ return iter(dict.items()) # python 2.x
+ except AttributeError:
+ return list(dict.items()) # python 3.x
+
+@@ -180,7 +180,7 @@ class UdOpcodeTable:
+ return itemslist(self._entries)
+
+ def numEntries(self):
+- return len(self._entries.keys())
++ return len(list(self._entries.keys()))
+
+ def label(self):
+ return self._TableInfo[self._typ]['label']
+@@ -248,7 +248,7 @@ class UdOpcodeTable:
+ @classmethod
+ def getLabels(cls):
+ """Returns a list of all labels"""
+- return [cls._TableInfo[k]['label'] for k in cls._TableInfo.keys()]
++ return [cls._TableInfo[k]['label'] for k in list(cls._TableInfo.keys())]
+
+
+ class UdOpcodeTables(object):
+@@ -401,7 +401,7 @@ class UdOpcodeTables(object):
+ self.map(self.root, opcodes, insn)
+ except self.CollisionError as e:
+ self.pprint()
+- print(opcodes, insn, str(e.obj1), str(e.obj2))
++ print((opcodes, insn, str(e.obj1), str(e.obj2)))
+ raise
+ except Exception as e:
+ self.pprint()
+@@ -550,10 +550,10 @@ class UdOpcodeTables(object):
+ entries = tbl.entries()
+ for k, e in entries:
+ if isinstance(e, UdOpcodeTable):
+- self.log("%s |-<%02x> %s" % (indent, k, e))
++ self.log("%s |-<%02x> %s" % (indent, int(k), e))
+ printWalk(e, indent + " |")
+ elif isinstance(e, UdInsnDef):
+- self.log("%s |-<%02x> %s" % (indent, k, e))
++ self.log("%s |-<%02x> %s" % (indent, int(k), e))
+ printWalk(self.root)
+
+
+diff --git a/Source/JavaScriptCore/generate-bytecode-files b/Source/JavaScriptCore/generate-bytecode-files
+index 5666a3f92..371ac5e4e 100644
+--- a/Source/JavaScriptCore/generate-bytecode-files
++++ b/Source/JavaScriptCore/generate-bytecode-files
+@@ -91,14 +91,14 @@ def openOrExit(path, mode):
+ try:
+ return open(path, mode)
+ except IOError as e:
+- print "I/O error opening {0}, ({1}): {2}".format(path, e.errno, e.strerror)
++ print("I/O error opening {0}, ({1}): {2}".format(path, e.errno, e.strerror))
+ exit(1)
+
+ def hashFile(file):
+ sha1 = hashlib.sha1()
+ file.seek(0)
+ for line in file:
+- sha1.update(line)
++ sha1.update(line.encode('utf-8'))
+
+ file.seek(0)
+
+@@ -114,7 +114,7 @@ if __name__ == "__main__":
+ parser.error("missing <bytecode-json-file>")
+
+ bytecodeJSONFile = args[0]
+- bytecodeFile = openOrExit(bytecodeJSONFile, "rb")
++ bytecodeFile = openOrExit(bytecodeJSONFile, "r")
+ sha1Hash = hashFile(bytecodeFile)
+
+ hFileHashString = "// SHA1Hash: {0}\n".format(sha1Hash)
+@@ -131,7 +131,7 @@ if __name__ == "__main__":
+
+ if bytecodeHFilename:
+ try:
+- bytecodeHReadFile = open(bytecodeHFilename, "rb")
++ bytecodeHReadFile = open(bytecodeHFilename, "r")
+
+ hashLine = bytecodeHReadFile.readline()
+ if hashLine != hFileHashString:
+@@ -143,7 +143,7 @@ if __name__ == "__main__":
+
+ if initASMFileName:
+ try:
+- initBytecodesReadFile = open(initASMFileName, "rb")
++ initBytecodesReadFile = open(initASMFileName, "r")
+
+ hashLine = initBytecodesReadFile.readline()
+ if hashLine != asmFileHashString:
+@@ -157,15 +157,15 @@ if __name__ == "__main__":
+ exit(0)
+
+ if bytecodeHFilename:
+- bytecodeHFile = openOrExit(bytecodeHFilename, "wb")
++ bytecodeHFile = openOrExit(bytecodeHFilename, "w")
+
+ if initASMFileName:
+- initBytecodesFile = openOrExit(initASMFileName, "wb")
++ initBytecodesFile = openOrExit(initASMFileName, "w")
+
+ try:
+ bytecodeSections = json.load(bytecodeFile, encoding = "utf-8")
+ except:
+- print "Unexpected error parsing {0}: {1}".format(bytecodeJSONFile, sys.exc_info())
++ print("Unexpected error parsing {0}: {1}".format(bytecodeJSONFile, sys.exc_info()))
+
+ if bytecodeHFilename:
+ bytecodeHFile.write(hFileHashString)
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/__init__.py b/Source/JavaScriptCore/inspector/scripts/codegen/__init__.py
+index 6077fa97a..bd30c817c 100644
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/__init__.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/__init__.py
+@@ -1,24 +1,24 @@
+ # Required for Python to search this directory for module files
+
+-from models import *
+-from generator import *
+-from cpp_generator import *
+-from objc_generator import *
++from .models import *
++from .generator import *
++from .cpp_generator import *
++from .objc_generator import *
+
+-from generate_cpp_alternate_backend_dispatcher_header import *
+-from generate_cpp_backend_dispatcher_header import *
+-from generate_cpp_backend_dispatcher_implementation import *
+-from generate_cpp_frontend_dispatcher_header import *
+-from generate_cpp_frontend_dispatcher_implementation import *
+-from generate_cpp_protocol_types_header import *
+-from generate_cpp_protocol_types_implementation import *
+-from generate_js_backend_commands import *
+-from generate_objc_backend_dispatcher_header import *
+-from generate_objc_backend_dispatcher_implementation import *
+-from generate_objc_configuration_header import *
+-from generate_objc_configuration_implementation import *
+-from generate_objc_conversion_helpers import *
+-from generate_objc_frontend_dispatcher_implementation import *
+-from generate_objc_header import *
+-from generate_objc_internal_header import *
+-from generate_objc_protocol_types_implementation import *
++from .generate_cpp_alternate_backend_dispatcher_header import *
++from .generate_cpp_backend_dispatcher_header import *
++from .generate_cpp_backend_dispatcher_implementation import *
++from .generate_cpp_frontend_dispatcher_header import *
++from .generate_cpp_frontend_dispatcher_implementation import *
++from .generate_cpp_protocol_types_header import *
++from .generate_cpp_protocol_types_implementation import *
++from .generate_js_backend_commands import *
++from .generate_objc_backend_dispatcher_header import *
++from .generate_objc_backend_dispatcher_implementation import *
++from .generate_objc_configuration_header import *
++from .generate_objc_configuration_implementation import *
++from .generate_objc_conversion_helpers import *
++from .generate_objc_frontend_dispatcher_implementation import *
++from .generate_objc_header import *
++from .generate_objc_internal_header import *
++from .generate_objc_protocol_types_implementation import *
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py b/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py
+index edd330da4..43c655b05 100644
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py
+@@ -28,8 +28,8 @@ import logging
+ import os.path
+ import re
+
+-from generator import ucfirst
+-from models import PrimitiveType, ObjectType, ArrayType, EnumType, AliasedType, Frameworks
++from .generator import ucfirst
++from .models import PrimitiveType, ObjectType, ArrayType, EnumType, AliasedType, Frameworks
+
+ log = logging.getLogger('global')
+
+@@ -56,11 +56,11 @@ class CppGenerator:
+ if isinstance(_type, ArrayType):
+ return 'getArray'
+ if isinstance(_type, PrimitiveType):
+- if _type.raw_name() is 'integer':
++ if _type.raw_name() == 'integer':
+ return 'getInteger'
+- elif _type.raw_name() is 'number':
++ elif _type.raw_name() == 'number':
+ return 'getDouble'
+- elif _type.raw_name() is 'any':
++ elif _type.raw_name() == 'any':
+ return 'getValue'
+ else:
+ return 'get' + ucfirst(_type.raw_name())
+@@ -76,11 +76,11 @@ class CppGenerator:
+ if isinstance(_type, ArrayType):
+ return 'setArray'
+ if isinstance(_type, PrimitiveType):
+- if _type.raw_name() is 'integer':
++ if _type.raw_name() == 'integer':
+ return 'setInteger'
+- elif _type.raw_name() is 'number':
++ elif _type.raw_name() == 'number':
+ return 'setDouble'
+- elif _type.raw_name() is 'any':
++ elif _type.raw_name() == 'any':
+ return 'setValue'
+ else:
+ return 'set' + ucfirst(_type.raw_name())
+@@ -95,7 +95,7 @@ class CppGenerator:
+ if isinstance(_type, ObjectType) and len(_type.members) == 0:
+ return 'Inspector::InspectorObject'
+ if isinstance(_type, ArrayType):
+- if _type.raw_name() is None: # Otherwise, fall through and use typedef'd name.
++ if _type.raw_name() == None: # Otherwise, fall through and use typedef'd name.
+ return 'Inspector::Protocol::Array<%s>' % CppGenerator.cpp_protocol_type_for_type(_type.element_type)
+ if isinstance(_type, (ObjectType, AliasedType, EnumType, ArrayType)):
+ return 'Inspector::Protocol::%s::%s' % (_type.type_domain().domain_name, _type.raw_name())
+@@ -119,7 +119,7 @@ class CppGenerator:
+ _type = _type.primitive_type # Fall through to primitive.
+
+ # This handles the 'any' type and objects with defined properties.
+- if isinstance(_type, ObjectType) or _type.qualified_name() is 'object':
++ if isinstance(_type, ObjectType) or _type.qualified_name() == 'object':
+ cpp_name = 'Inspector::InspectorObject'
+ if parameter.is_optional:
+ return 'const %s*' % cpp_name
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_alternate_backend_dispatcher_header.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_alternate_backend_dispatcher_header.py
+index 375ce05ca..916277d31 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_alternate_backend_dispatcher_header.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_alternate_backend_dispatcher_header.py
+@@ -30,9 +30,9 @@ import string
+ import re
+ from string import Template
+
+-from cpp_generator import CppGenerator
+-from cpp_generator_templates import CppGeneratorTemplates as CppTemplates
+-from generator import Generator
++from .cpp_generator import CppGenerator
++from .cpp_generator_templates import CppGeneratorTemplates as CppTemplates
++from .generator import Generator
+
+ log = logging.getLogger('global')
+
+@@ -60,7 +60,7 @@ class CppAlternateBackendDispatcherHeaderGenerator(Generator):
+ sections = []
+ sections.append(self.generate_license())
+ sections.append(Template(CppTemplates.AlternateDispatchersHeaderPrelude).substitute(None, **header_args))
+- sections.append('\n'.join(filter(None, map(self._generate_handler_declarations_for_domain, domains))))
++ sections.append('\n'.join([_f for _f in map(self._generate_handler_declarations_for_domain, domains) if _f]))
+ sections.append(Template(CppTemplates.AlternateDispatchersHeaderPostlude).substitute(None, **header_args))
+ return '\n\n'.join(sections)
+
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py
+index 2e5ff7a6a..25bec9a22 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py
+@@ -30,10 +30,10 @@ import re
+ import string
+ from string import Template
+
+-from cpp_generator import CppGenerator
+-from cpp_generator_templates import CppGeneratorTemplates as CppTemplates
+-from generator import Generator, ucfirst
+-from models import EnumType
++from .cpp_generator import CppGenerator
++from .cpp_generator_templates import CppGeneratorTemplates as CppTemplates
++from .generator import Generator, ucfirst
++from .models import EnumType
+
+ log = logging.getLogger('global')
+
+@@ -46,7 +46,7 @@ class CppBackendDispatcherHeaderGenerator(Generator):
+ return "InspectorBackendDispatchers.h"
+
+ def domains_to_generate(self):
+- return filter(lambda domain: len(domain.commands) > 0, Generator.domains_to_generate(self))
++ return [domain for domain in Generator.domains_to_generate(self) if len(domain.commands) > 0]
+
+ def generate_output(self):
+ headers = [
+@@ -68,8 +68,8 @@ class CppBackendDispatcherHeaderGenerator(Generator):
+ sections.append(self.generate_license())
+ sections.append(Template(CppTemplates.HeaderPrelude).substitute(None, **header_args))
+ sections.append(self._generate_alternate_handler_forward_declarations_for_domains(domains))
+- sections.extend(map(self._generate_handler_declarations_for_domain, domains))
+- sections.extend(map(self._generate_dispatcher_declarations_for_domain, domains))
++ sections.extend(list(map(self._generate_handler_declarations_for_domain, domains)))
++ sections.extend(list(map(self._generate_dispatcher_declarations_for_domain, domains)))
+ sections.append(Template(CppTemplates.HeaderPostlude).substitute(None, **header_args))
+ return "\n\n".join(sections)
+
+@@ -194,7 +194,7 @@ class CppBackendDispatcherHeaderGenerator(Generator):
+ declarations = []
+ if len(domain.commands) > 0:
+ declarations.append('private:')
+- declarations.extend(map(self._generate_dispatcher_declaration_for_command, domain.commands))
++ declarations.extend(list(map(self._generate_dispatcher_declaration_for_command, domain.commands)))
+
+ handler_args = {
+ 'classAndExportMacro': " ".join(classComponents),
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py
+index 8f3df80ee..0c9b30e47 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py
+@@ -29,10 +29,10 @@ import logging
+ import string
+ from string import Template
+
+-from cpp_generator import CppGenerator
+-from cpp_generator_templates import CppGeneratorTemplates as CppTemplates
+-from generator import Generator, ucfirst
+-from models import ObjectType, ArrayType
++from .cpp_generator import CppGenerator
++from .cpp_generator_templates import CppGeneratorTemplates as CppTemplates
++from .generator import Generator, ucfirst
++from .models import ObjectType, ArrayType
+
+ log = logging.getLogger('global')
+
+@@ -45,7 +45,7 @@ class CppBackendDispatcherImplementationGenerator(Generator):
+ return "InspectorBackendDispatchers.cpp"
+
+ def domains_to_generate(self):
+- return filter(lambda domain: len(domain.commands) > 0, Generator.domains_to_generate(self))
++ return [domain for domain in Generator.domains_to_generate(self) if len(domain.commands) > 0]
+
+ def generate_output(self):
+ secondary_headers = [
+@@ -69,7 +69,7 @@ class CppBackendDispatcherImplementationGenerator(Generator):
+ sections.append(self.generate_license())
+ sections.append(Template(CppTemplates.ImplementationPrelude).substitute(None, **header_args))
+ sections.append("\n".join(map(self._generate_handler_class_destructor_for_domain, self.domains_to_generate())))
+- sections.extend(map(self._generate_dispatcher_implementations_for_domain, self.domains_to_generate()))
++ sections.extend(list(map(self._generate_dispatcher_implementations_for_domain, self.domains_to_generate())))
+ sections.append(Template(CppTemplates.ImplementationPostlude).substitute(None, **header_args))
+ return "\n\n".join(sections)
+
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py
+index 58a3cb925..40905d676 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py
+@@ -30,10 +30,10 @@ import re
+ import string
+ from string import Template
+
+-from cpp_generator import CppGenerator
+-from cpp_generator_templates import CppGeneratorTemplates as CppTemplates
+-from generator import Generator, ucfirst
+-from models import EnumType
++from .cpp_generator import CppGenerator
++from .cpp_generator_templates import CppGeneratorTemplates as CppTemplates
++from .generator import Generator, ucfirst
++from .models import EnumType
+
+ log = logging.getLogger('global')
+
+@@ -46,7 +46,7 @@ class CppFrontendDispatcherHeaderGenerator(Generator):
+ return "InspectorFrontendDispatchers.h"
+
+ def domains_to_generate(self):
+- return filter(lambda domain: len(domain.events) > 0, Generator.domains_to_generate(self))
++ return [domain for domain in Generator.domains_to_generate(self) if len(domain.events) > 0]
+
+ def generate_output(self):
+ headers = [
+@@ -63,7 +63,7 @@ class CppFrontendDispatcherHeaderGenerator(Generator):
+ sections = []
+ sections.append(self.generate_license())
+ sections.append(Template(CppTemplates.HeaderPrelude).substitute(None, **header_args))
+- sections.extend(map(self._generate_dispatcher_declarations_for_domain, self.domains_to_generate()))
++ sections.extend(list(map(self._generate_dispatcher_declarations_for_domain, self.domains_to_generate())))
+ sections.append(Template(CppTemplates.HeaderPostlude).substitute(None, **header_args))
+ return "\n\n".join(sections)
+
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py
+index ea46aaf26..132b1c67c 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py
+@@ -29,10 +29,10 @@ import logging
+ import string
+ from string import Template
+
+-from cpp_generator import CppGenerator
+-from cpp_generator_templates import CppGeneratorTemplates as CppTemplates
+-from generator import Generator, ucfirst
+-from models import ObjectType, ArrayType
++from .cpp_generator import CppGenerator
++from .cpp_generator_templates import CppGeneratorTemplates as CppTemplates
++from .generator import Generator, ucfirst
++from .models import ObjectType, ArrayType
+
+ log = logging.getLogger('global')
+
+@@ -45,7 +45,7 @@ class CppFrontendDispatcherImplementationGenerator(Generator):
+ return "InspectorFrontendDispatchers.cpp"
+
+ def domains_to_generate(self):
+- return filter(lambda domain: len(domain.events) > 0, Generator.domains_to_generate(self))
++ return [domain for domain in Generator.domains_to_generate(self) if len(domain.events) > 0]
+
+ def generate_output(self):
+ secondary_headers = [
+@@ -61,7 +61,7 @@ class CppFrontendDispatcherImplementationGenerator(Generator):
+ sections = []
+ sections.append(self.generate_license())
+ sections.append(Template(CppTemplates.ImplementationPrelude).substitute(None, **header_args))
+- sections.extend(map(self._generate_dispatcher_implementations_for_domain, self.domains_to_generate()))
++ sections.extend(list(map(self._generate_dispatcher_implementations_for_domain, self.domains_to_generate())))
+ sections.append(Template(CppTemplates.ImplementationPostlude).substitute(None, **header_args))
+ return "\n\n".join(sections)
+
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_header.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_header.py
+index 6753e2dcf..7bd4375df 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_header.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_header.py
+@@ -30,10 +30,10 @@ import re
+ import string
+ from string import Template
+
+-from cpp_generator import CppGenerator
+-from cpp_generator_templates import CppGeneratorTemplates as CppTemplates
+-from generator import Generator, ucfirst
+-from models import EnumType, ObjectType, PrimitiveType, AliasedType, ArrayType, Frameworks
++from .cpp_generator import CppGenerator
++from .cpp_generator_templates import CppGeneratorTemplates as CppTemplates
++from .generator import Generator, ucfirst
++from .models import EnumType, ObjectType, PrimitiveType, AliasedType, ArrayType, Frameworks
+
+ log = logging.getLogger('global')
+
+@@ -80,8 +80,8 @@ class CppProtocolTypesHeaderGenerator(Generator):
+ ' return getEnumConstantValue(static_cast<int>(enumValue));',
+ '}']))
+
+- builder_sections = map(self._generate_builders_for_domain, domains)
+- sections.extend(filter(lambda section: len(section) > 0, builder_sections))
++ builder_sections = list(map(self._generate_builders_for_domain, domains))
++ sections.extend([section for section in builder_sections if len(section) > 0])
+ sections.append(self._generate_forward_declarations_for_binding_traits())
+ sections.append('} // namespace Protocol')
+ sections.append(Template(CppTemplates.HeaderPostlude).substitute(None, **header_args))
+@@ -96,8 +96,8 @@ class CppProtocolTypesHeaderGenerator(Generator):
+
+ for domain in domains:
+ declaration_types = [decl.type for decl in domain.type_declarations]
+- object_types = filter(lambda _type: isinstance(_type, ObjectType), declaration_types)
+- enum_types = filter(lambda _type: isinstance(_type, EnumType), declaration_types)
++ object_types = [_type for _type in declaration_types if isinstance(_type, ObjectType)]
++ enum_types = [_type for _type in declaration_types if isinstance(_type, EnumType)]
+ if len(object_types) + len(enum_types) == 0:
+ continue
+
+@@ -122,8 +122,8 @@ class CppProtocolTypesHeaderGenerator(Generator):
+ """ % '\n\n'.join(sections)
+
+ def _generate_typedefs(self, domains):
+- sections = map(self._generate_typedefs_for_domain, domains)
+- sections = filter(lambda text: len(text) > 0, sections)
++ sections = list(map(self._generate_typedefs_for_domain, domains))
++ sections = [text for text in sections if len(text) > 0]
+
+ if len(sections) == 0:
+ return ''
+@@ -133,8 +133,8 @@ class CppProtocolTypesHeaderGenerator(Generator):
+ // End of typedefs.""" % '\n\n'.join(sections)
+
+ def _generate_typedefs_for_domain(self, domain):
+- primitive_declarations = filter(lambda decl: isinstance(decl.type, AliasedType), domain.type_declarations)
+- array_declarations = filter(lambda decl: isinstance(decl.type, ArrayType), domain.type_declarations)
++ primitive_declarations = [decl for decl in domain.type_declarations if isinstance(decl.type, AliasedType)]
++ array_declarations = [decl for decl in domain.type_declarations if isinstance(decl.type, ArrayType)]
+ if len(primitive_declarations) == 0 and len(array_declarations) == 0:
+ return ''
+
+@@ -170,7 +170,7 @@ class CppProtocolTypesHeaderGenerator(Generator):
+ elif isinstance(type_declaration.type, ObjectType):
+ sections.append(self._generate_class_for_object_declaration(type_declaration, domain))
+
+- sections = filter(lambda section: len(section) > 0, sections)
++ sections = [section for section in sections if len(section) > 0]
+ if len(sections) == 0:
+ return ''
+
+@@ -184,9 +184,9 @@ class CppProtocolTypesHeaderGenerator(Generator):
+ if len(type_declaration.type_members) == 0:
+ return ''
+
+- enum_members = filter(lambda member: isinstance(member.type, EnumType) and member.type.is_anonymous, type_declaration.type_members)
+- required_members = filter(lambda member: not member.is_optional, type_declaration.type_members)
+- optional_members = filter(lambda member: member.is_optional, type_declaration.type_members)
++ enum_members = [member for member in type_declaration.type_members if isinstance(member.type, EnumType) and member.type.is_anonymous]
++ required_members = [member for member in type_declaration.type_members if not member.is_optional]
++ optional_members = [member for member in type_declaration.type_members if member.is_optional]
+ object_name = type_declaration.type_name
+
+ lines = []
+@@ -244,7 +244,7 @@ class CppProtocolTypesHeaderGenerator(Generator):
+ else:
+ return ' ' + line
+
+- indented_lines = map(apply_indentation, self._generate_struct_for_enum_type(enum_member.member_name, enum_member.type))
++ indented_lines = list(map(apply_indentation, self._generate_struct_for_enum_type(enum_member.member_name, enum_member.type)))
+ return '\n'.join(indented_lines)
+
+ def _generate_struct_for_enum_type(self, enum_name, enum_type):
+@@ -258,7 +258,7 @@ class CppProtocolTypesHeaderGenerator(Generator):
+
+ def _generate_builder_state_enum(self, type_declaration):
+ lines = []
+- required_members = filter(lambda member: not member.is_optional, type_declaration.type_members)
++ required_members = [member for member in type_declaration.type_members if not member.is_optional]
+ enum_values = []
+
+ lines.append(' enum {')
+@@ -323,7 +323,7 @@ class CppProtocolTypesHeaderGenerator(Generator):
+ type_arguments = []
+
+ for domain in self.domains_to_generate():
+- declarations_to_generate = filter(lambda decl: self.type_needs_shape_assertions(decl.type), domain.type_declarations)
++ declarations_to_generate = [decl for decl in domain.type_declarations if self.type_needs_shape_assertions(decl.type)]
+
+ for type_declaration in declarations_to_generate:
+ for type_member in type_declaration.type_members:
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py
+index 2c263b504..903278bfb 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py
+@@ -29,10 +29,10 @@ import logging
+ import string
+ from string import Template
+
+-from cpp_generator import CppGenerator
+-from cpp_generator_templates import CppGeneratorTemplates as CppTemplates
+-from generator import Generator, ucfirst
+-from models import AliasedType, ArrayType, EnumType, ObjectType
++from .cpp_generator import CppGenerator
++from .cpp_generator_templates import CppGeneratorTemplates as CppTemplates
++from .generator import Generator, ucfirst
++from .models import AliasedType, ArrayType, EnumType, ObjectType
+
+ log = logging.getLogger('global')
+
+@@ -61,8 +61,8 @@ class CppProtocolTypesImplementationGenerator(Generator):
+ sections.append('namespace Protocol {')
+ sections.append(self._generate_enum_mapping())
+ sections.append(self._generate_open_field_names())
+- builder_sections = map(self._generate_builders_for_domain, domains)
+- sections.extend(filter(lambda section: len(section) > 0, builder_sections))
++ builder_sections = list(map(self._generate_builders_for_domain, domains))
++ sections.extend([section for section in builder_sections if len(section) > 0])
+ sections.append('} // namespace Protocol')
+ sections.append(Template(CppTemplates.ImplementationPostlude).substitute(None, **header_args))
+
+@@ -84,7 +84,7 @@ class CppProtocolTypesImplementationGenerator(Generator):
+ def _generate_open_field_names(self):
+ lines = []
+ for domain in self.domains_to_generate():
+- for type_declaration in filter(lambda decl: Generator.type_has_open_fields(decl.type), domain.type_declarations):
++ for type_declaration in [decl for decl in domain.type_declarations if Generator.type_has_open_fields(decl.type)]:
+ for type_member in sorted(type_declaration.type_members, key=lambda member: member.member_name):
+ field_name = '::'.join(['Inspector', 'Protocol', domain.domain_name, ucfirst(type_declaration.type_name), ucfirst(type_member.member_name)])
+ lines.append('const char* %s = "%s";' % (field_name, type_member.member_name))
+@@ -93,7 +93,7 @@ class CppProtocolTypesImplementationGenerator(Generator):
+
+ def _generate_builders_for_domain(self, domain):
+ sections = []
+- declarations_to_generate = filter(lambda decl: self.type_needs_shape_assertions(decl.type), domain.type_declarations)
++ declarations_to_generate = [decl for decl in domain.type_declarations if self.type_needs_shape_assertions(decl.type)]
+
+ for type_declaration in declarations_to_generate:
+ for type_member in type_declaration.type_members:
+@@ -114,8 +114,8 @@ class CppProtocolTypesImplementationGenerator(Generator):
+ return Template(CppTemplates.ProtocolObjectRuntimeCast).substitute(None, **args)
+
+ def _generate_assertion_for_object_declaration(self, object_declaration):
+- required_members = filter(lambda member: not member.is_optional, object_declaration.type_members)
+- optional_members = filter(lambda member: member.is_optional, object_declaration.type_members)
++ required_members = [member for member in object_declaration.type_members if not member.is_optional]
++ optional_members = [member for member in object_declaration.type_members if member.is_optional]
+ should_count_properties = not Generator.type_has_open_fields(object_declaration.type)
+ lines = []
+
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_js_backend_commands.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_js_backend_commands.py
+index 3392c7845..bd8f33164 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_js_backend_commands.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_js_backend_commands.py
+@@ -29,9 +29,9 @@ import logging
+ import string
+ from string import Template
+
+-from generator import Generator, ucfirst
+-from generator_templates import GeneratorTemplates as Templates
+-from models import EnumType
++from .generator import Generator, ucfirst
++from .generator_templates import GeneratorTemplates as Templates
++from .models import EnumType
+
+ log = logging.getLogger('global')
+
+@@ -45,15 +45,15 @@ class JSBackendCommandsGenerator(Generator):
+
+ def domains_to_generate(self):
+ def should_generate_domain(domain):
+- domain_enum_types = filter(lambda declaration: isinstance(declaration.type, EnumType), domain.type_declarations)
++ domain_enum_types = [declaration for declaration in domain.type_declarations if isinstance(declaration.type, EnumType)]
+ return len(domain.commands) > 0 or len(domain.events) > 0 or len(domain_enum_types) > 0
+
+- return filter(should_generate_domain, Generator.domains_to_generate(self))
++ return list(filter(should_generate_domain, Generator.domains_to_generate(self)))
+
+ def generate_output(self):
+ sections = []
+ sections.append(self.generate_license())
+- sections.extend(map(self.generate_domain, self.domains_to_generate()))
++ sections.extend(list(map(self.generate_domain, self.domains_to_generate())))
+ return "\n\n".join(sections)
+
+ def generate_domain(self, domain):
+@@ -64,7 +64,7 @@ class JSBackendCommandsGenerator(Generator):
+
+ lines.append('// %(domain)s.' % args)
+
+- has_async_commands = any(map(lambda command: command.is_async, domain.commands))
++ has_async_commands = any([command.is_async for command in domain.commands])
+ if len(domain.events) > 0 or has_async_commands:
+ lines.append('InspectorBackend.register%(domain)sDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "%(domain)s");' % args)
+
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py
+index d56a0b178..809641d38 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py
+@@ -30,11 +30,11 @@ import string
+ import re
+ from string import Template
+
+-from cpp_generator import CppGenerator
+-from generator import Generator
+-from models import Frameworks
+-from objc_generator import ObjCGenerator
+-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
++from .cpp_generator import CppGenerator
++from .generator import Generator
++from .models import Frameworks
++from .objc_generator import ObjCGenerator
++from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
+
+ log = logging.getLogger('global')
+
+@@ -47,7 +47,7 @@ class ObjCBackendDispatcherHeaderGenerator(Generator):
+ return '%sBackendDispatchers.h' % ObjCGenerator.OBJC_PREFIX
+
+ def domains_to_generate(self):
+- return filter(ObjCGenerator.should_generate_domain_command_handler_filter(self.model()), Generator.domains_to_generate(self))
++ return list(filter(ObjCGenerator.should_generate_domain_command_handler_filter(self.model()), Generator.domains_to_generate(self)))
+
+ def generate_output(self):
+ headers = [
+@@ -65,7 +65,7 @@ class ObjCBackendDispatcherHeaderGenerator(Generator):
+ sections = []
+ sections.append(self.generate_license())
+ sections.append(Template(ObjCTemplates.BackendDispatcherHeaderPrelude).substitute(None, **header_args))
+- sections.extend(map(self._generate_objc_handler_declarations_for_domain, domains))
++ sections.extend(list(map(self._generate_objc_handler_declarations_for_domain, domains)))
+ sections.append(Template(ObjCTemplates.BackendDispatcherHeaderPostlude).substitute(None, **header_args))
+ return '\n\n'.join(sections)
+
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py
+index 42afd99cf..d35d3f14a 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py
+@@ -30,11 +30,11 @@ import string
+ import re
+ from string import Template
+
+-from cpp_generator import CppGenerator
+-from generator import Generator
+-from models import PrimitiveType, EnumType, AliasedType, Frameworks
+-from objc_generator import ObjCTypeCategory, ObjCGenerator, join_type_and_name
+-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
++from .cpp_generator import CppGenerator
++from .generator import Generator
++from .models import PrimitiveType, EnumType, AliasedType, Frameworks
++from .objc_generator import ObjCTypeCategory, ObjCGenerator, join_type_and_name
++from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
+
+ log = logging.getLogger('global')
+
+@@ -47,7 +47,7 @@ class ObjCConfigurationImplementationGenerator(Generator):
+ return '%sBackendDispatchers.mm' % ObjCGenerator.OBJC_PREFIX
+
+ def domains_to_generate(self):
+- return filter(ObjCGenerator.should_generate_domain_command_handler_filter(self.model()), Generator.domains_to_generate(self))
++ return list(filter(ObjCGenerator.should_generate_domain_command_handler_filter(self.model()), Generator.domains_to_generate(self)))
+
+ def generate_output(self):
+ secondary_headers = [
+@@ -65,7 +65,7 @@ class ObjCConfigurationImplementationGenerator(Generator):
+ sections = []
+ sections.append(self.generate_license())
+ sections.append(Template(ObjCTemplates.BackendDispatcherImplementationPrelude).substitute(None, **header_args))
+- sections.extend(map(self._generate_handler_implementation_for_domain, domains))
++ sections.extend(list(map(self._generate_handler_implementation_for_domain, domains)))
+ sections.append(Template(ObjCTemplates.BackendDispatcherImplementationPostlude).substitute(None, **header_args))
+ return '\n\n'.join(sections)
+
+@@ -112,7 +112,7 @@ class ObjCConfigurationImplementationGenerator(Generator):
+ if command.return_parameters:
+ lines.append(' Ref<InspectorObject> resultObject = InspectorObject::create();')
+
+- required_pointer_parameters = filter(lambda parameter: not parameter.is_optional and ObjCGenerator.is_type_objc_pointer_type(parameter.type), command.return_parameters)
++ required_pointer_parameters = [parameter for parameter in command.return_parameters if not parameter.is_optional and ObjCGenerator.is_type_objc_pointer_type(parameter.type)]
+ for parameter in required_pointer_parameters:
+ var_name = ObjCGenerator.identifier_to_objc_identifier(parameter.parameter_name)
+ lines.append(' THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(%s, @"%s");' % (var_name, var_name))
+@@ -120,7 +120,7 @@ class ObjCConfigurationImplementationGenerator(Generator):
+ if objc_array_class and objc_array_class.startswith(ObjCGenerator.OBJC_PREFIX):
+ lines.append(' THROW_EXCEPTION_FOR_BAD_TYPE_IN_ARRAY(%s, [%s class]);' % (var_name, objc_array_class))
+
+- optional_pointer_parameters = filter(lambda parameter: parameter.is_optional and ObjCGenerator.is_type_objc_pointer_type(parameter.type), command.return_parameters)
++ optional_pointer_parameters = [parameter for parameter in command.return_parameters if parameter.is_optional and ObjCGenerator.is_type_objc_pointer_type(parameter.type)]
+ for parameter in optional_pointer_parameters:
+ var_name = ObjCGenerator.identifier_to_objc_identifier(parameter.parameter_name)
+ lines.append(' THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(%s, @"%s");' % (var_name, var_name))
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_header.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_header.py
+index 9b93f37f6..00f3860c7 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_header.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_header.py
+@@ -29,9 +29,9 @@ import logging
+ import string
+ from string import Template
+
+-from generator import Generator
+-from objc_generator import ObjCGenerator
+-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
++from .generator import Generator
++from .objc_generator import ObjCGenerator
++from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
+
+ log = logging.getLogger('global')
+
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py
+index 735abbca3..2db503c0b 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py
+@@ -29,9 +29,9 @@ import logging
+ import string
+ from string import Template
+
+-from generator import Generator
+-from objc_generator import ObjCGenerator
+-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
++from .generator import Generator
++from .objc_generator import ObjCGenerator
++from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
+
+ log = logging.getLogger('global')
+
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_conversion_helpers.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_conversion_helpers.py
+index c31e991e3..7a23251b1 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_conversion_helpers.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_conversion_helpers.py
+@@ -29,10 +29,10 @@ import logging
+ import string
+ from string import Template
+
+-from generator import Generator
+-from models import EnumType
+-from objc_generator import ObjCGenerator
+-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
++from .generator import Generator
++from .models import EnumType
++from .objc_generator import ObjCGenerator
++from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
+
+ log = logging.getLogger('global')
+
+@@ -51,7 +51,7 @@ class ObjCConversionHelpersGenerator(Generator):
+ return '%sEnumConversionHelpers.h' % ObjCGenerator.OBJC_PREFIX
+
+ def domains_to_generate(self):
+- return filter(ObjCGenerator.should_generate_domain_types_filter(self.model()), Generator.domains_to_generate(self))
++ return list(filter(ObjCGenerator.should_generate_domain_types_filter(self.model()), Generator.domains_to_generate(self)))
+
+ def generate_output(self):
+ headers = [
+@@ -67,7 +67,7 @@ class ObjCConversionHelpersGenerator(Generator):
+ sections.append(self.generate_license())
+ sections.append(Template(ObjCTemplates.ConversionHelpersPrelude).substitute(None, **header_args))
+ sections.append(Template(ObjCTemplates.ConversionHelpersStandard).substitute(None))
+- sections.extend(map(self._generate_enum_conversion_functions, domains))
++ sections.extend(list(map(self._generate_enum_conversion_functions, domains)))
+ sections.append(Template(ObjCTemplates.ConversionHelpersPostlude).substitute(None, **header_args))
+ return '\n\n'.join(sections)
+
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py
+index 0030ed5ee..101c09e9f 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py
+@@ -29,10 +29,10 @@ import logging
+ import string
+ from string import Template
+
+-from cpp_generator import CppGenerator
+-from generator import Generator, ucfirst
+-from objc_generator import ObjCGenerator
+-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
++from .cpp_generator import CppGenerator
++from .generator import Generator, ucfirst
++from .objc_generator import ObjCGenerator
++from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
+
+ log = logging.getLogger('global')
+
+@@ -45,7 +45,7 @@ class ObjCFrontendDispatcherImplementationGenerator(Generator):
+ return '%sEventDispatchers.mm' % ObjCGenerator.OBJC_PREFIX
+
+ def domains_to_generate(self):
+- return filter(ObjCGenerator.should_generate_domain_event_dispatcher_filter(self.model()), Generator.domains_to_generate(self))
++ return list(filter(ObjCGenerator.should_generate_domain_event_dispatcher_filter(self.model()), Generator.domains_to_generate(self)))
+
+ def generate_output(self):
+ secondary_headers = [
+@@ -62,7 +62,7 @@ class ObjCFrontendDispatcherImplementationGenerator(Generator):
+ sections = []
+ sections.append(self.generate_license())
+ sections.append(Template(ObjCTemplates.ImplementationPrelude).substitute(None, **header_args))
+- sections.extend(map(self._generate_event_dispatcher_implementations, domains))
++ sections.extend(list(map(self._generate_event_dispatcher_implementations, domains)))
+ sections.append(Template(ObjCTemplates.ImplementationPostlude).substitute(None, **header_args))
+ return '\n\n'.join(sections)
+
+@@ -100,7 +100,7 @@ class ObjCFrontendDispatcherImplementationGenerator(Generator):
+ lines.append(' const FrontendRouter& router = _controller->frontendRouter();')
+ lines.append('')
+
+- required_pointer_parameters = filter(lambda parameter: not parameter.is_optional and ObjCGenerator.is_type_objc_pointer_type(parameter.type), event.event_parameters)
++ required_pointer_parameters = [parameter for parameter in event.event_parameters if not parameter.is_optional and ObjCGenerator.is_type_objc_pointer_type(parameter.type)]
+ for parameter in required_pointer_parameters:
+ var_name = ObjCGenerator.identifier_to_objc_identifier(parameter.parameter_name)
+ lines.append(' THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(%s, @"%s");' % (var_name, var_name))
+@@ -108,7 +108,7 @@ class ObjCFrontendDispatcherImplementationGenerator(Generator):
+ if objc_array_class and objc_array_class.startswith(ObjCGenerator.OBJC_PREFIX):
+ lines.append(' THROW_EXCEPTION_FOR_BAD_TYPE_IN_ARRAY(%s, [%s class]);' % (var_name, objc_array_class))
+
+- optional_pointer_parameters = filter(lambda parameter: parameter.is_optional and ObjCGenerator.is_type_objc_pointer_type(parameter.type), event.event_parameters)
++ optional_pointer_parameters = [parameter for parameter in event.event_parameters if parameter.is_optional and ObjCGenerator.is_type_objc_pointer_type(parameter.type)]
+ for parameter in optional_pointer_parameters:
+ var_name = ObjCGenerator.identifier_to_objc_identifier(parameter.parameter_name)
+ lines.append(' THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(%s, @"%s");' % (var_name, var_name))
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_header.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_header.py
+index 7e8e61030..1b0059a7a 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_header.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_header.py
+@@ -29,10 +29,10 @@ import logging
+ import string
+ from string import Template
+
+-from generator import Generator, ucfirst
+-from models import ObjectType, EnumType
+-from objc_generator import ObjCGenerator, join_type_and_name
+-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
++from .generator import Generator, ucfirst
++from .models import ObjectType, EnumType
++from .objc_generator import ObjCGenerator, join_type_and_name
++from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
+
+ log = logging.getLogger('global')
+
+@@ -60,9 +60,9 @@ class ObjCHeaderGenerator(Generator):
+ }
+
+ domains = self.domains_to_generate()
+- type_domains = filter(ObjCGenerator.should_generate_domain_types_filter(self.model()), domains)
+- command_domains = filter(ObjCGenerator.should_generate_domain_command_handler_filter(self.model()), domains)
+- event_domains = filter(ObjCGenerator.should_generate_domain_event_dispatcher_filter(self.model()), domains)
++ type_domains = list(filter(ObjCGenerator.should_generate_domain_types_filter(self.model()), domains))
++ command_domains = list(filter(ObjCGenerator.should_generate_domain_command_handler_filter(self.model()), domains))
++ event_domains = list(filter(ObjCGenerator.should_generate_domain_event_dispatcher_filter(self.model()), domains))
+
+ # FIXME: <https://webkit.org/b/138222> Web Inspector: Reduce unnecessary enums/types generated in ObjC Protocol Interfaces
+ # Currently we generate enums/types for all types in the type_domains. For the built-in
+@@ -72,11 +72,11 @@ class ObjCHeaderGenerator(Generator):
+ sections = []
+ sections.append(self.generate_license())
+ sections.append(Template(ObjCTemplates.HeaderPrelude).substitute(None, **header_args))
+- sections.append('\n'.join(filter(None, map(self._generate_forward_declarations, type_domains))))
+- sections.append('\n'.join(filter(None, map(self._generate_enums, type_domains))))
+- sections.append('\n'.join(filter(None, map(self._generate_types, type_domains))))
+- sections.append('\n\n'.join(filter(None, map(self._generate_command_protocols, command_domains))))
+- sections.append('\n\n'.join(filter(None, map(self._generate_event_interfaces, event_domains))))
++ sections.append('\n'.join([_f for _f in map(self._generate_forward_declarations, type_domains) if _f]))
++ sections.append('\n'.join([_f for _f in map(self._generate_enums, type_domains) if _f]))
++ sections.append('\n'.join([_f for _f in map(self._generate_types, type_domains) if _f]))
++ sections.append('\n\n'.join([_f for _f in map(self._generate_command_protocols, command_domains) if _f]))
++ sections.append('\n\n'.join([_f for _f in map(self._generate_event_interfaces, event_domains) if _f]))
+ sections.append(Template(ObjCTemplates.HeaderPostlude).substitute(None))
+ return '\n\n'.join(sections)
+
+@@ -156,8 +156,8 @@ class ObjCHeaderGenerator(Generator):
+ objc_name = ObjCGenerator.objc_name_for_type(declaration.type)
+ lines.append('__attribute__((visibility ("default")))')
+ lines.append('@interface %s : %s' % (objc_name, ObjCGenerator.OBJC_JSON_OBJECT_BASE))
+- required_members = filter(lambda member: not member.is_optional, declaration.type_members)
+- optional_members = filter(lambda member: member.is_optional, declaration.type_members)
++ required_members = [member for member in declaration.type_members if not member.is_optional]
++ optional_members = [member for member in declaration.type_members if member.is_optional]
+ if required_members:
+ lines.append(self._generate_init_method_for_required_members(domain, declaration, required_members))
+ for member in required_members:
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_internal_header.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_internal_header.py
+index 40802ff17..f21b16222 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_internal_header.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_internal_header.py
+@@ -29,9 +29,9 @@ import logging
+ import string
+ from string import Template
+
+-from generator import Generator, ucfirst
+-from objc_generator import ObjCGenerator
+-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
++from .generator import Generator, ucfirst
++from .objc_generator import ObjCGenerator
++from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
+
+ log = logging.getLogger('global')
+
+@@ -56,12 +56,12 @@ class ObjCInternalHeaderGenerator(Generator):
+ }
+
+ domains = self.domains_to_generate()
+- event_domains = filter(ObjCGenerator.should_generate_domain_event_dispatcher_filter(self.model()), domains)
++ event_domains = list(filter(ObjCGenerator.should_generate_domain_event_dispatcher_filter(self.model()), domains))
+
+ sections = []
+ sections.append(self.generate_license())
+ sections.append(Template(ObjCTemplates.GenericHeaderPrelude).substitute(None, **header_args))
+- sections.append('\n\n'.join(filter(None, map(self._generate_event_dispatcher_private_interfaces, event_domains))))
++ sections.append('\n\n'.join([_f for _f in map(self._generate_event_dispatcher_private_interfaces, event_domains) if _f]))
+ sections.append(Template(ObjCTemplates.GenericHeaderPostlude).substitute(None, **header_args))
+ return '\n\n'.join(sections)
+
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_types_implementation.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_types_implementation.py
+index 95b57f671..8a6aac035 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_types_implementation.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_types_implementation.py
+@@ -29,10 +29,10 @@ import logging
+ import string
+ from string import Template
+
+-from generator import Generator, ucfirst
+-from models import ObjectType
+-from objc_generator import ObjCGenerator
+-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
++from .generator import Generator, ucfirst
++from .models import ObjectType
++from .objc_generator import ObjCGenerator
++from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
+
+ log = logging.getLogger('global')
+
+@@ -51,7 +51,7 @@ class ObjCProtocolTypesImplementationGenerator(Generator):
+ return '%sTypes.mm' % ObjCGenerator.OBJC_PREFIX
+
+ def domains_to_generate(self):
+- return filter(ObjCGenerator.should_generate_domain_types_filter(self.model()), Generator.domains_to_generate(self))
++ return list(filter(ObjCGenerator.should_generate_domain_types_filter(self.model()), Generator.domains_to_generate(self)))
+
+ def generate_output(self):
+ secondary_headers = [
+@@ -69,7 +69,7 @@ class ObjCProtocolTypesImplementationGenerator(Generator):
+ sections = []
+ sections.append(self.generate_license())
+ sections.append(Template(ObjCTemplates.ImplementationPrelude).substitute(None, **header_args))
+- sections.extend(map(self.generate_type_implementations, domains))
++ sections.extend(list(map(self.generate_type_implementations, domains)))
+ sections.append(Template(ObjCTemplates.ImplementationPostlude).substitute(None, **header_args))
+ return '\n\n'.join(sections)
+
+@@ -84,7 +84,7 @@ class ObjCProtocolTypesImplementationGenerator(Generator):
+ def generate_type_implementation(self, domain, declaration):
+ lines = []
+ lines.append('@implementation %s' % ObjCGenerator.objc_name_for_type(declaration.type))
+- required_members = filter(lambda member: not member.is_optional, declaration.type_members)
++ required_members = [member for member in declaration.type_members if not member.is_optional]
+ if required_members:
+ lines.append('')
+ lines.append(self._generate_init_method_for_required_members(domain, declaration, required_members))
+@@ -112,7 +112,7 @@ class ObjCProtocolTypesImplementationGenerator(Generator):
+ lines.append(' return nil;')
+ lines.append('')
+
+- required_pointer_members = filter(lambda member: ObjCGenerator.is_type_objc_pointer_type(member.type), required_members)
++ required_pointer_members = [member for member in required_members if ObjCGenerator.is_type_objc_pointer_type(member.type)]
+ if required_pointer_members:
+ for member in required_pointer_members:
+ var_name = ObjCGenerator.identifier_to_objc_identifier(member.member_name)
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generator.py b/Source/JavaScriptCore/inspector/scripts/codegen/generator.py
+index 4c8f1998e..0ed011136 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/generator.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/generator.py
+@@ -29,8 +29,8 @@ import os.path
+ import re
+ from string import Template
+
+-from generator_templates import GeneratorTemplates as Templates
+-from models import PrimitiveType, ObjectType, ArrayType, EnumType, AliasedType, Frameworks
++from .generator_templates import GeneratorTemplates as Templates
++from .models import PrimitiveType, ObjectType, ArrayType, EnumType, AliasedType, Frameworks
+
+ log = logging.getLogger('global')
+
+@@ -87,7 +87,7 @@ class Generator:
+
+ # These methods are overridden by subclasses.
+ def non_supplemental_domains(self):
+- return filter(lambda domain: not domain.is_supplemental, self.model().domains)
++ return [domain for domain in self.model().domains if not domain.is_supplemental]
+
+ def domains_to_generate(self):
+ return self.non_supplemental_domains()
+@@ -129,7 +129,7 @@ class Generator:
+ # set of types will not be automatically regenerated on subsequent calls to
+ # Generator.types_needing_shape_assertions().
+ def calculate_types_requiring_shape_assertions(self, domains):
+- domain_names = map(lambda domain: domain.domain_name, domains)
++ domain_names = [domain.domain_name for domain in domains]
+ log.debug("> Calculating types that need shape assertions (eligible domains: %s)" % ", ".join(domain_names))
+
+ # Mutates the passed-in set; this simplifies checks to prevent infinite recursion.
+@@ -185,7 +185,7 @@ class Generator:
+ for _type in all_types:
+ if not isinstance(_type, EnumType):
+ continue
+- map(self._assign_encoding_for_enum_value, _type.enum_values())
++ list(map(self._assign_encoding_for_enum_value, _type.enum_values()))
+
+ def _assign_encoding_for_enum_value(self, enum_value):
+ if enum_value in self._enum_value_encodings:
+@@ -219,7 +219,7 @@ class Generator:
+ return match.group(1).upper()
+
+ # Split on hyphen, introduce camelcase, and force uppercasing of acronyms.
+- subwords = map(ucfirst, enum_value.split('-'))
++ subwords = list(map(ucfirst, enum_value.split('-')))
+ return re.sub(re.compile(regex, re.IGNORECASE), replaceCallback, "".join(subwords))
+
+ @staticmethod
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/models.py b/Source/JavaScriptCore/inspector/scripts/codegen/models.py
+index ec16a1291..426ab4b2b 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/models.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/models.py
+@@ -35,7 +35,7 @@ def ucfirst(str):
+
+
+ def find_duplicates(l):
+- return [key for key, count in collections.Counter(l).items() if count > 1]
++ return [key for key, count in list(collections.Counter(l).items()) if count > 1]
+
+
+ _FRAMEWORK_CONFIG_MAP = {
+diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/objc_generator.py b/Source/JavaScriptCore/inspector/scripts/codegen/objc_generator.py
+index f6dd03cb5..00015dc2b 100755
+--- a/Source/JavaScriptCore/inspector/scripts/codegen/objc_generator.py
++++ b/Source/JavaScriptCore/inspector/scripts/codegen/objc_generator.py
+@@ -24,8 +24,8 @@
+ # THE POSSIBILITY OF SUCH DAMAGE.
+
+ import logging
+-from generator import Generator, ucfirst
+-from models import PrimitiveType, ObjectType, ArrayType, EnumType, AliasedType, Frameworks
++from .generator import Generator, ucfirst
++from .models import PrimitiveType, ObjectType, ArrayType, EnumType, AliasedType, Frameworks
+
+ log = logging.getLogger('global')
+
+@@ -50,7 +50,7 @@ _OBJC_IDENTIFIER_RENAME_MAP = {
+ 'id': 'identifier', # Page.Frame.id, Runtime.ExecutionContextDescription.id, Debugger.BreakpointAction.id
+ }
+
+-_OBJC_IDENTIFIER_REVERSE_RENAME_MAP = dict((v, k) for k, v in _OBJC_IDENTIFIER_RENAME_MAP.iteritems())
++_OBJC_IDENTIFIER_REVERSE_RENAME_MAP = dict((v, k) for k, v in list(_OBJC_IDENTIFIER_RENAME_MAP.items()))
+
+
+ class ObjCTypeCategory:
+@@ -62,11 +62,11 @@ class ObjCTypeCategory:
+ @staticmethod
+ def category_for_type(_type):
+ if (isinstance(_type, PrimitiveType)):
+- if _type.raw_name() is 'string':
++ if _type.raw_name() == 'string':
+ return ObjCTypeCategory.String
+ if _type.raw_name() in ['object', 'any']:
+ return ObjCTypeCategory.Object
+- if _type.raw_name() is 'array':
++ if _type.raw_name() == 'array':
+ return ObjCTypeCategory.Array
+ return ObjCTypeCategory.Simple
+ if (isinstance(_type, ObjectType)):
+@@ -192,15 +192,15 @@ class ObjCGenerator:
+
+ @staticmethod
+ def objc_type_for_raw_name(raw_name):
+- if raw_name is 'string':
++ if raw_name == 'string':
+ return 'NSString *'
+- if raw_name is 'array':
++ if raw_name == 'array':
+ return 'NSArray *'
+- if raw_name is 'integer':
++ if raw_name == 'integer':
+ return 'int'
+- if raw_name is 'number':
++ if raw_name == 'number':
+ return 'double'
+- if raw_name is 'boolean':
++ if raw_name == 'boolean':
+ return 'BOOL'
+ if raw_name in ['any', 'object']:
+ return '%s *' % ObjCGenerator.OBJC_JSON_OBJECT_BASE
+@@ -208,9 +208,9 @@ class ObjCGenerator:
+
+ @staticmethod
+ def objc_class_for_raw_name(raw_name):
+- if raw_name is 'string':
++ if raw_name == 'string':
+ return 'NSString'
+- if raw_name is 'array':
++ if raw_name == 'array':
+ return 'NSArray'
+ if raw_name in ['integer', 'number', 'boolean']:
+ return 'NSNumber'
+@@ -222,13 +222,13 @@ class ObjCGenerator:
+
+ @staticmethod
+ def protocol_type_for_raw_name(raw_name):
+- if raw_name is 'string':
++ if raw_name == 'string':
+ return 'String'
+- if raw_name is 'integer':
++ if raw_name == 'integer':
+ return 'int'
+- if raw_name is 'number':
++ if raw_name == 'number':
+ return 'double'
+- if raw_name is 'boolean':
++ if raw_name == 'boolean':
+ return 'bool'
+ if raw_name in ['any', 'object']:
+ return 'InspectorObject'
+@@ -370,11 +370,11 @@ class ObjCGenerator:
+ objc_class = ObjCGenerator.objc_class_for_type(var_type.element_type)
+ if protocol_type == 'Inspector::Protocol::Array<String>':
+ return 'inspectorStringArrayArray(%s)' % var_name
+- if protocol_type is 'String' and objc_class is 'NSString':
++ if protocol_type == 'String' and objc_class == 'NSString':
+ return 'inspectorStringArray(%s)' % var_name
+- if protocol_type is 'int' and objc_class is 'NSNumber':
++ if protocol_type == 'int' and objc_class == 'NSNumber':
+ return 'inspectorIntegerArray(%s)' % var_name
+- if protocol_type is 'double' and objc_class is 'NSNumber':
++ if protocol_type == 'double' and objc_class == 'NSNumber':
+ return 'inspectorDoubleArray(%s)' % var_name
+ return 'inspectorObjectArray(%s)' % var_name
+
+@@ -404,9 +404,9 @@ class ObjCGenerator:
+ return '[[[%s alloc] initWithInspectorObject:%s] autorelease]' % (objc_class, var_name)
+ if category is ObjCTypeCategory.Array:
+ objc_class = ObjCGenerator.objc_class_for_type(var_type.element_type)
+- if objc_class is 'NSString':
++ if objc_class == 'NSString':
+ return 'objcStringArray(%s)' % var_name
+- if objc_class is 'NSNumber': # FIXME: Integer or Double?
++ if objc_class == 'NSNumber': # FIXME: Integer or Double?
+ return 'objcIntegerArray(%s)' % var_name
+ return 'objcArray<%s>(%s)' % (objc_class, var_name)
+
+@@ -425,11 +425,11 @@ class ObjCGenerator:
+ return sub_expression
+ if category is ObjCTypeCategory.Array:
+ objc_class = ObjCGenerator.objc_class_for_type(member.type.element_type)
+- if objc_class is 'NSString':
++ if objc_class == 'NSString':
+ return 'inspectorStringArray(%s)' % sub_expression
+- if objc_class is 'NSNumber':
++ if objc_class == 'NSNumber':
+ protocol_type = ObjCGenerator.protocol_type_for_type(member.type.element_type)
+- if protocol_type is 'double':
++ if protocol_type == 'double':
+ return 'inspectorDoubleArray(%s)' % sub_expression
+ return 'inspectorIntegerArray(%s)' % sub_expression
+ return 'inspectorObjectArray(%s)' % sub_expression
+@@ -449,11 +449,11 @@ class ObjCGenerator:
+ if category is ObjCTypeCategory.Array:
+ protocol_type = ObjCGenerator.protocol_type_for_type(member.type.element_type)
+ objc_class = ObjCGenerator.objc_class_for_type(member.type.element_type)
+- if objc_class is 'NSString':
++ if objc_class == 'NSString':
+ return 'objcStringArray(%s)' % sub_expression
+- if objc_class is 'NSNumber':
++ if objc_class == 'NSNumber':
+ protocol_type = ObjCGenerator.protocol_type_for_type(member.type.element_type)
+- if protocol_type is 'double':
++ if protocol_type == 'double':
+ return 'objcDoubleArray(%s)' % sub_expression
+ return 'objcIntegerArray(%s)' % sub_expression
+ return 'objcArray<%s>(%s)' % (objc_class, sub_expression)
+@@ -470,17 +470,17 @@ class ObjCGenerator:
+ _type = _type.aliased_type
+ if (isinstance(_type, PrimitiveType)):
+ raw_name = _type.raw_name()
+- if raw_name is 'boolean':
++ if raw_name == 'boolean':
+ return 'setBool'
+- if raw_name is 'integer':
++ if raw_name == 'integer':
+ return 'setInteger'
+- if raw_name is 'number':
++ if raw_name == 'number':
+ return 'setDouble'
+- if raw_name is 'string':
++ if raw_name == 'string':
+ return 'setString'
+ if raw_name in ['any', 'object']:
+ return 'setObject'
+- if raw_name is 'array':
++ if raw_name == 'array':
+ return 'setInspectorArray'
+ return None
+ if (isinstance(_type, EnumType)):
+@@ -501,17 +501,17 @@ class ObjCGenerator:
+ _type = _type.aliased_type
+ if (isinstance(_type, PrimitiveType)):
+ raw_name = _type.raw_name()
+- if raw_name is 'boolean':
++ if raw_name == 'boolean':
+ return 'boolForKey'
+- if raw_name is 'integer':
++ if raw_name == 'integer':
+ return 'integerForKey'
+- if raw_name is 'number':
++ if raw_name == 'number':
+ return 'doubleForKey'
+- if raw_name is 'string':
++ if raw_name == 'string':
+ return 'stringForKey'
+ if raw_name in ['any', 'object']:
+ return 'objectForKey'
+- if raw_name is 'array':
++ if raw_name == 'array':
+ return 'inspectorArrayForKey'
+ return None
+ if (isinstance(_type, EnumType)):
+diff --git a/Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py b/Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
+index a1987aa90..86cbd4934 100755
+--- a/Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
++++ b/Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
+@@ -48,7 +48,7 @@ try:
+
+ # When copying generator files to JavaScriptCore's private headers on Mac,
+ # the codegen/ module directory is flattened. So, import directly.
+-except ImportError, e:
++except ImportError as e:
+ # log.error(e) # Uncomment this to debug early import errors.
+ import models
+ from models import *
+diff --git a/Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py b/Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py
+index de32ef6c4..18fff7167 100644
+--- a/Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py
++++ b/Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py
+@@ -410,7 +410,7 @@ class InputsModel:
+ self.inputs_by_name = {}
+
+ def enum_types(self):
+- _enums = filter(lambda x: x.is_enum() or x.is_enum_class(), self.types)
++ _enums = [x for x in self.types if x.is_enum() or x.is_enum_class()]
+ return sorted(_enums, key=lambda _enum: _enum.type_name())
+
+ def get_type_for_member(self, member):
+@@ -424,7 +424,7 @@ class InputsModel:
+ if not isinstance(json['types'], dict):
+ raise ParseException("Malformed specification: types is not a dict of framework->type list")
+
+- for framework_name, type_list in json['types'].iteritems():
++ for framework_name, type_list in json['types'].items():
+ if not isinstance(type_list, list):
+ raise ParseException("Malformed specification: type list for framework %s is not a list" % framework_name)
+
+@@ -436,7 +436,7 @@ class InputsModel:
+ if not isinstance(json['inputs'], dict):
+ raise ParseException("Malformed specification: inputs is not a dict of framework->input list")
+
+- for framework_name, input_list in json['inputs'].iteritems():
++ for framework_name, input_list in json['inputs'].items():
+ if not isinstance(input_list, list):
+ raise ParseException("Malformed specification: input list for framework %s is not a list" % framework_name)
+
+@@ -597,8 +597,8 @@ class Generator:
+ implementation_file.close()
+
+ def generate_header(self):
+- enums_to_generate = filter(self.should_generate_item, self._model.enum_types())
+- inputs_to_generate = filter(self.should_generate_item, self._model.inputs)
++ enums_to_generate = list(filter(self.should_generate_item, self._model.enum_types()))
++ inputs_to_generate = list(filter(self.should_generate_item, self._model.inputs))
+
+ template_arguments = {
+ 'licenseBlock': self.generate_license(),
+@@ -620,8 +620,8 @@ class Generator:
+ return Template(Templates.HeaderSkeleton).substitute(template_arguments)
+
+ def generate_implementation(self):
+- enums_to_generate = filter(self.should_generate_item, self._model.enum_types())
+- inputs_to_generate = filter(self.should_generate_item, self._model.inputs)
++ enums_to_generate = list(filter(self.should_generate_item, self._model.enum_types()))
++ inputs_to_generate = list(filter(self.should_generate_item, self._model.inputs))
+
+ template_arguments = {
+ 'licenseBlock': self.generate_license(),
+@@ -680,7 +680,7 @@ class Generator:
+ lines = []
+
+ decls_by_framework = {}
+- frameworks = [Framework.fromString(s) for s in FRAMEWORK_CONFIG_MAP.keys() if s != Frameworks.Global.name]
++ frameworks = [Framework.fromString(s) for s in list(FRAMEWORK_CONFIG_MAP.keys()) if s != Frameworks.Global.name]
+ for framework in frameworks:
+ decls_by_framework[framework] = []
+
+@@ -808,7 +808,7 @@ class Generator:
+ return Template(template).substitute(template_arguments)
+
+ def generate_for_each_macro(self):
+- inputs_to_generate = filter(self.should_generate_item, self._model.inputs)
++ inputs_to_generate = list(filter(self.should_generate_item, self._model.inputs))
+
+ macro_name = "%s_REPLAY_INPUT_NAMES_FOR_EACH" % self.setting('prefix').upper()
+ lines = []
+@@ -858,7 +858,7 @@ class Generator:
+ }
+ encodeLines.append(Template(encode_template).substitute(template_arguments))
+
+- for guard, guard_values in _type.guard_values_map.iteritems():
++ for guard, guard_values in _type.guard_values_map.items():
+ guardedLines = []
+ for guard_value in guard_values:
+ template_arguments = {
+@@ -880,7 +880,7 @@ class Generator:
+ }
+ decodeLines.append(Template(decode_template).substitute(template_arguments))
+
+- for guard, guard_values in _type.guard_values_map.iteritems():
++ for guard, guard_values in _type.guard_values_map.items():
+ guardedLines = []
+ for i, guard_value in enumerate(guard_values):
+ template_arguments = {
+@@ -999,7 +999,7 @@ def generate_from_specifications(input_filepaths=[], output_prefix="", output_di
+ except ValueError as e:
+ raise Exception("Error parsing valid JSON in file: " + input_filepath)
+
+- specifications = map(parse_json_from_file, input_filepaths)
++ specifications = list(map(parse_json_from_file, input_filepaths))
+
+ model = InputsModel()
+ for spec in specifications:
+@@ -1012,7 +1012,7 @@ def generate_from_specifications(input_filepaths=[], output_prefix="", output_di
+
+
+ if __name__ == '__main__':
+- allowed_framework_names = FRAMEWORK_CONFIG_MAP.keys()
++ allowed_framework_names = list(FRAMEWORK_CONFIG_MAP.keys())
+
+ cli_parser = optparse.OptionParser(usage="usage: %prog [options] <Inputs.json> [, <MoreInputs.json> ]")
+ cli_parser.add_option("-o", "--outputDir", help="Directory where generated files should be written.")
+diff --git a/Source/ThirdParty/ANGLE/generate_winrt_projects.py b/Source/ThirdParty/ANGLE/generate_winrt_projects.py
+index e0e517772..5e18782c1 100644
+--- a/Source/ThirdParty/ANGLE/generate_winrt_projects.py
++++ b/Source/ThirdParty/ANGLE/generate_winrt_projects.py
+@@ -30,8 +30,8 @@ def generateProjects(generation_dir, build_winphone):
+ gyp_cmd += ' -D angle_standalone=1'
+ gyp_cmd += ' ' + os.path.join(script_dir, 'angle.gyp')
+
+- print 'Generating projects to ' + generation_dir + ' from gyp files...'
+- print gyp_cmd
++ print('Generating projects to ' + generation_dir + ' from gyp files...')
++ print(gyp_cmd)
+ sys.stdout.flush()
+ os.system(gyp_cmd)
+
+diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Float16ToFloat32.py b/Source/ThirdParty/ANGLE/src/libANGLE/Float16ToFloat32.py
+index cf039bfc2..951aa146e 100644
+--- a/Source/ThirdParty/ANGLE/src/libANGLE/Float16ToFloat32.py
++++ b/Source/ThirdParty/ANGLE/src/libANGLE/Float16ToFloat32.py
+@@ -42,7 +42,7 @@ def convertOffset(i):
+ else:
+ return 1024
+
+-print """//
++print("""//
+ // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+@@ -52,27 +52,27 @@ print """//
+
+ namespace gl
+ {
+-"""
++""")
+
+-print "const static unsigned g_mantissa[2048] = {"
++print("const static unsigned g_mantissa[2048] = {")
+ for i in range(0, 2048):
+- print " %#010x," % convertMantissa(i)
+-print "};\n"
++ print(" %#010x," % convertMantissa(i))
++print("};\n")
+
+-print "const static unsigned g_exponent[64] = {"
++print("const static unsigned g_exponent[64] = {")
+ for i in range(0, 64):
+- print " %#010x," % convertExponent(i)
+-print "};\n"
++ print(" %#010x," % convertExponent(i))
++print("};\n")
+
+-print "const static unsigned g_offset[64] = {"
++print("const static unsigned g_offset[64] = {")
+ for i in range(0, 64):
+- print " %#010x," % convertOffset(i)
+-print "};\n"
++ print(" %#010x," % convertOffset(i))
++print("};\n")
+
+-print """float float16ToFloat32(unsigned short h)
++print("""float float16ToFloat32(unsigned short h)
+ {
+ unsigned i32 = g_mantissa[g_offset[h >> 10] + (h & 0x3ff)] + g_exponent[h >> 10];
+ return *(float*) &i32;
+ }
+ }
+-"""
++""")
+diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/generate_new_renderer.py b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/generate_new_renderer.py
+index 5d64fbd23..e0be48b55 100644
+--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/generate_new_renderer.py
++++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/generate_new_renderer.py
+@@ -21,7 +21,7 @@ import re
+ import string
+
+ if len(sys.argv) < 3:
+- print('Usage: ' + sys.argv[0] + ' <renderer name> <renderer suffix>')
++ print(('Usage: ' + sys.argv[0] + ' <renderer name> <renderer suffix>'))
+
+ renderer_name = sys.argv[1]
+ renderer_suffix = sys.argv[2]
+diff --git a/Source/ThirdParty/gtest/scripts/fuse_gtest_files.py b/Source/ThirdParty/gtest/scripts/fuse_gtest_files.py
+index 148444ca7..333d55590 100755
+--- a/Source/ThirdParty/gtest/scripts/fuse_gtest_files.py
++++ b/Source/ThirdParty/gtest/scripts/fuse_gtest_files.py
+@@ -90,8 +90,8 @@ def VerifyFileExists(directory, relative_path):
+ """
+
+ if not os.path.isfile(os.path.join(directory, relative_path)):
+- print 'ERROR: Cannot find %s in directory %s.' % (relative_path,
+- directory)
++ print('ERROR: Cannot find %s in directory %s.' % (relative_path,
++ directory))
+ print ('Please either specify a valid project root directory '
+ 'or omit it on the command line.')
+ sys.exit(1)
+@@ -119,11 +119,11 @@ def VerifyOutputFile(output_dir, relative_path):
+ # TODO(wan@google.com): The following user-interaction doesn't
+ # work with automated processes. We should provide a way for the
+ # Makefile to force overwriting the files.
+- print ('%s already exists in directory %s - overwrite it? (y/N) ' %
+- (relative_path, output_dir))
++ print(('%s already exists in directory %s - overwrite it? (y/N) ' %
++ (relative_path, output_dir)))
+ answer = sys.stdin.readline().strip()
+ if answer not in ['y', 'Y']:
+- print 'ABORTED.'
++ print('ABORTED.')
+ sys.exit(1)
+
+ # Makes sure the directory holding the output file exists; creates
+@@ -242,7 +242,7 @@ def main():
+ # fuse_gtest_files.py GTEST_ROOT_DIR OUTPUT_DIR
+ FuseGTest(sys.argv[1], sys.argv[2])
+ else:
+- print __doc__
++ print(__doc__)
+ sys.exit(1)
+
+
+diff --git a/Source/ThirdParty/gtest/scripts/gen_gtest_pred_impl.py b/Source/ThirdParty/gtest/scripts/gen_gtest_pred_impl.py
+index 8307134ad..748bcfeb4 100755
+--- a/Source/ThirdParty/gtest/scripts/gen_gtest_pred_impl.py
++++ b/Source/ThirdParty/gtest/scripts/gen_gtest_pred_impl.py
+@@ -183,7 +183,7 @@ def Title(word):
+ def OneTo(n):
+ """Returns the list [1, 2, 3, ..., n]."""
+
+- return range(1, n + 1)
++ return list(range(1, n + 1))
+
+
+ def Iter(n, format, sep=''):
+@@ -305,13 +305,13 @@ def GenerateFile(path, content):
+ """Given a file path and a content string, overwrites it with the
+ given content."""
+
+- print 'Updating file %s . . .' % path
++ print('Updating file %s . . .' % path)
+
+ f = file(path, 'w+')
+- print >>f, content,
++ print(content, end=' ', file=f)
+ f.close()
+
+- print 'File %s has been updated.' % path
++ print('File %s has been updated.' % path)
+
+
+ def GenerateHeader(n):
+@@ -720,8 +720,8 @@ def _Main():
+ unit test."""
+
+ if len(sys.argv) != 2:
+- print __doc__
+- print 'Author: ' + __author__
++ print(__doc__)
++ print('Author: ' + __author__)
+ sys.exit(1)
+
+ n = int(sys.argv[1])
+diff --git a/Source/ThirdParty/gtest/scripts/pump.py b/Source/ThirdParty/gtest/scripts/pump.py
+index f15c1b6ce..92b70ecec 100755
+--- a/Source/ThirdParty/gtest/scripts/pump.py
++++ b/Source/ThirdParty/gtest/scripts/pump.py
+@@ -236,7 +236,7 @@ def ParseToken(lines, pos, regex, token_type):
+ if m and not m.start():
+ return MakeToken(lines, pos, pos + m.end(), token_type)
+ else:
+- print 'ERROR: %s expected at %s.' % (token_type, pos)
++ print('ERROR: %s expected at %s.' % (token_type, pos))
+ sys.exit(1)
+
+
+@@ -263,8 +263,8 @@ def SkipUntil(lines, pos, regex, token_type):
+ if m:
+ return pos + m.start()
+ else:
+- print ('ERROR: %s expected on line %s after column %s.' %
+- (token_type, pos.line + 1, pos.column))
++ print(('ERROR: %s expected on line %s after column %s.' %
++ (token_type, pos.line + 1, pos.column)))
+ sys.exit(1)
+
+
+@@ -444,8 +444,8 @@ def PushFront(a_list, elem):
+ def PopToken(a_list, token_type=None):
+ token = PopFront(a_list)
+ if token_type is not None and token.token_type != token_type:
+- print 'ERROR: %s expected at %s' % (token_type, token.start)
+- print 'ERROR: %s found instead' % (token,)
++ print('ERROR: %s expected at %s' % (token_type, token.start))
++ print('ERROR: %s found instead' % (token,))
+ sys.exit(1)
+
+ return token
+@@ -609,16 +609,16 @@ class Env:
+ if identifier == var:
+ return value
+
+- print 'ERROR: meta variable %s is undefined.' % (identifier,)
++ print('ERROR: meta variable %s is undefined.' % (identifier,))
+ sys.exit(1)
+
+ def EvalExp(self, exp):
+ try:
+ result = eval(exp.python_exp)
+- except Exception, e:
+- print 'ERROR: caught exception %s: %s' % (e.__class__.__name__, e)
+- print ('ERROR: failed to evaluate meta expression %s at %s' %
+- (exp.python_exp, exp.token.start))
++ except Exception as e:
++ print('ERROR: caught exception %s: %s' % (e.__class__.__name__, e))
++ print(('ERROR: failed to evaluate meta expression %s at %s' %
++ (exp.python_exp, exp.token.start)))
+ sys.exit(1)
+ return result
+
+@@ -627,7 +627,7 @@ class Env:
+ if identifier == var:
+ return (lower, upper)
+
+- print 'ERROR: range %s is undefined.' % (identifier,)
++ print('ERROR: range %s is undefined.' % (identifier,))
+ sys.exit(1)
+
+
+@@ -687,8 +687,8 @@ def RunAtomicCode(env, node, output):
+ elif isinstance(node, CodeNode):
+ RunCode(env.Clone(), node, output)
+ else:
+- print 'BAD'
+- print node
++ print('BAD')
++ print(node)
+ sys.exit(1)
+
+
+@@ -807,7 +807,7 @@ def BeautifyCode(string):
+
+ def main(argv):
+ if len(argv) == 1:
+- print __doc__
++ print(__doc__)
+ sys.exit(1)
+
+ file_path = argv[-1]
+@@ -820,7 +820,7 @@ def main(argv):
+ else:
+ output_file_path = '-'
+ if output_file_path == '-':
+- print output_str,
++ print(output_str, end=' ')
+ else:
+ output_file = file(output_file_path, 'w')
+ output_file.write('// This file was GENERATED by command:\n')
+diff --git a/Source/ThirdParty/gtest/scripts/upload.py b/Source/ThirdParty/gtest/scripts/upload.py
+index 6e6f9a147..4890ea16d 100755
+--- a/Source/ThirdParty/gtest/scripts/upload.py
++++ b/Source/ThirdParty/gtest/scripts/upload.py
+@@ -31,7 +31,7 @@ against by using the '--rev' option.
+ # This code is derived from appcfg.py in the App Engine SDK (open source),
+ # and from ASPN recipe #146306.
+
+-import cookielib
++import http.cookiejar
+ import getpass
+ import logging
+ import md5
+@@ -42,9 +42,9 @@ import re
+ import socket
+ import subprocess
+ import sys
+-import urllib
+-import urllib2
+-import urlparse
++import urllib.request, urllib.parse, urllib.error
++import urllib.request, urllib.error, urllib.parse
++import urllib.parse
+
+ try:
+ import readline
+@@ -79,15 +79,15 @@ def GetEmail(prompt):
+ last_email = last_email_file.readline().strip("\n")
+ last_email_file.close()
+ prompt += " [%s]" % last_email
+- except IOError, e:
++ except IOError as e:
+ pass
+- email = raw_input(prompt + ": ").strip()
++ email = input(prompt + ": ").strip()
+ if email:
+ try:
+ last_email_file = open(last_email_file_name, "w")
+ last_email_file.write(email)
+ last_email_file.close()
+- except IOError, e:
++ except IOError as e:
+ pass
+ else:
+ email = last_email
+@@ -103,20 +103,20 @@ def StatusUpdate(msg):
+ msg: The string to print.
+ """
+ if verbosity > 0:
+- print msg
++ print(msg)
+
+
+ def ErrorExit(msg):
+ """Print an error message to stderr and exit."""
+- print >>sys.stderr, msg
++ print(msg, file=sys.stderr)
+ sys.exit(1)
+
+
+-class ClientLoginError(urllib2.HTTPError):
++class ClientLoginError(urllib.error.HTTPError):
+ """Raised to indicate there was an error authenticating with ClientLogin."""
+
+ def __init__(self, url, code, msg, headers, args):
+- urllib2.HTTPError.__init__(self, url, code, msg, headers, None)
++ urllib.error.HTTPError.__init__(self, url, code, msg, headers, None)
+ self.args = args
+ self.reason = args["Error"]
+
+@@ -162,10 +162,10 @@ class AbstractRpcServer(object):
+ def _CreateRequest(self, url, data=None):
+ """Creates a new urllib request."""
+ logging.debug("Creating request for: '%s' with payload:\n%s", url, data)
+- req = urllib2.Request(url, data=data)
++ req = urllib.request.Request(url, data=data)
+ if self.host_override:
+ req.add_header("Host", self.host_override)
+- for key, value in self.extra_headers.iteritems():
++ for key, value in self.extra_headers.items():
+ req.add_header(key, value)
+ return req
+
+@@ -189,7 +189,7 @@ class AbstractRpcServer(object):
+ account_type = "HOSTED"
+ req = self._CreateRequest(
+ url="https://www.google.com/accounts/ClientLogin",
+- data=urllib.urlencode({
++ data=urllib.parse.urlencode({
+ "Email": email,
+ "Passwd": password,
+ "service": "ah",
+@@ -203,7 +203,7 @@ class AbstractRpcServer(object):
+ response_dict = dict(x.split("=")
+ for x in response_body.split("\n") if x)
+ return response_dict["Auth"]
+- except urllib2.HTTPError, e:
++ except urllib.error.HTTPError as e:
+ if e.code == 403:
+ body = e.read()
+ response_dict = dict(x.split("=", 1) for x in body.split("\n") if x)
+@@ -225,14 +225,14 @@ class AbstractRpcServer(object):
+ continue_location = "http://localhost/"
+ args = {"continue": continue_location, "auth": auth_token}
+ req = self._CreateRequest("http://%s/_ah/login?%s" %
+- (self.host, urllib.urlencode(args)))
++ (self.host, urllib.parse.urlencode(args)))
+ try:
+ response = self.opener.open(req)
+- except urllib2.HTTPError, e:
++ except urllib.error.HTTPError as e:
+ response = e
+ if (response.code != 302 or
+ response.info()["location"] != continue_location):
+- raise urllib2.HTTPError(req.get_full_url(), response.code, response.msg,
++ raise urllib.error.HTTPError(req.get_full_url(), response.code, response.msg,
+ response.headers, response.fp)
+ self.authenticated = True
+
+@@ -255,34 +255,34 @@ class AbstractRpcServer(object):
+ credentials = self.auth_function()
+ try:
+ auth_token = self._GetAuthToken(credentials[0], credentials[1])
+- except ClientLoginError, e:
++ except ClientLoginError as e:
+ if e.reason == "BadAuthentication":
+- print >>sys.stderr, "Invalid username or password."
++ print("Invalid username or password.", file=sys.stderr)
+ continue
+ if e.reason == "CaptchaRequired":
+- print >>sys.stderr, (
++ print((
+ "Please go to\n"
+ "https://www.google.com/accounts/DisplayUnlockCaptcha\n"
+- "and verify you are a human. Then try again.")
++ "and verify you are a human. Then try again."), file=sys.stderr)
+ break
+ if e.reason == "NotVerified":
+- print >>sys.stderr, "Account not verified."
++ print("Account not verified.", file=sys.stderr)
+ break
+ if e.reason == "TermsNotAgreed":
+- print >>sys.stderr, "User has not agreed to TOS."
++ print("User has not agreed to TOS.", file=sys.stderr)
+ break
+ if e.reason == "AccountDeleted":
+- print >>sys.stderr, "The user account has been deleted."
++ print("The user account has been deleted.", file=sys.stderr)
+ break
+ if e.reason == "AccountDisabled":
+- print >>sys.stderr, "The user account has been disabled."
++ print("The user account has been disabled.", file=sys.stderr)
+ break
+ if e.reason == "ServiceDisabled":
+- print >>sys.stderr, ("The user's access to the service has been "
+- "disabled.")
++ print(("The user's access to the service has been "
++ "disabled."), file=sys.stderr)
+ break
+ if e.reason == "ServiceUnavailable":
+- print >>sys.stderr, "The service is not available; try again later."
++ print("The service is not available; try again later.", file=sys.stderr)
+ break
+ raise
+ self._GetAuthCookie(auth_token)
+@@ -319,7 +319,7 @@ class AbstractRpcServer(object):
+ args = dict(kwargs)
+ url = "http://%s%s" % (self.host, request_path)
+ if args:
+- url += "?" + urllib.urlencode(args)
++ url += "?" + urllib.parse.urlencode(args)
+ req = self._CreateRequest(url=url, data=payload)
+ req.add_header("Content-Type", content_type)
+ try:
+@@ -327,7 +327,7 @@ class AbstractRpcServer(object):
+ response = f.read()
+ f.close()
+ return response
+- except urllib2.HTTPError, e:
++ except urllib.error.HTTPError as e:
+ if tries > 3:
+ raise
+ elif e.code == 401:
+@@ -357,35 +357,35 @@ class HttpRpcServer(AbstractRpcServer):
+ Returns:
+ A urllib2.OpenerDirector object.
+ """
+- opener = urllib2.OpenerDirector()
+- opener.add_handler(urllib2.ProxyHandler())
+- opener.add_handler(urllib2.UnknownHandler())
+- opener.add_handler(urllib2.HTTPHandler())
+- opener.add_handler(urllib2.HTTPDefaultErrorHandler())
+- opener.add_handler(urllib2.HTTPSHandler())
++ opener = urllib.request.OpenerDirector()
++ opener.add_handler(urllib.request.ProxyHandler())
++ opener.add_handler(urllib.request.UnknownHandler())
++ opener.add_handler(urllib.request.HTTPHandler())
++ opener.add_handler(urllib.request.HTTPDefaultErrorHandler())
++ opener.add_handler(urllib.request.HTTPSHandler())
+ opener.add_handler(urllib2.HTTPErrorProcessor())
+ if self.save_cookies:
+ self.cookie_file = os.path.expanduser("~/.codereview_upload_cookies")
+- self.cookie_jar = cookielib.MozillaCookieJar(self.cookie_file)
++ self.cookie_jar = http.cookiejar.MozillaCookieJar(self.cookie_file)
+ if os.path.exists(self.cookie_file):
+ try:
+ self.cookie_jar.load()
+ self.authenticated = True
+ StatusUpdate("Loaded authentication cookies from %s" %
+ self.cookie_file)
+- except (cookielib.LoadError, IOError):
++ except (http.cookiejar.LoadError, IOError):
+ # Failed to load cookies - just ignore them.
+ pass
+ else:
+ # Create an empty cookie file with mode 600
+- fd = os.open(self.cookie_file, os.O_CREAT, 0600)
++ fd = os.open(self.cookie_file, os.O_CREAT, 0o600)
+ os.close(fd)
+ # Always chmod the cookie file
+- os.chmod(self.cookie_file, 0600)
++ os.chmod(self.cookie_file, 0o600)
+ else:
+ # Don't save cookies across runs of update.py.
+- self.cookie_jar = cookielib.CookieJar()
+- opener.add_handler(urllib2.HTTPCookieProcessor(self.cookie_jar))
++ self.cookie_jar = http.cookiejar.CookieJar()
++ opener.add_handler(urllib.request.HTTPCookieProcessor(self.cookie_jar))
+ return opener
+
+
+@@ -560,7 +560,7 @@ def RunShellWithReturnCode(command, print_output=False,
+ line = p.stdout.readline()
+ if not line:
+ break
+- print line.strip("\n")
++ print(line.strip("\n"))
+ output_array.append(line)
+ output = "".join(output_array)
+ else:
+@@ -568,7 +568,7 @@ def RunShellWithReturnCode(command, print_output=False,
+ p.wait()
+ errout = p.stderr.read()
+ if print_output and errout:
+- print >>sys.stderr, errout
++ print(errout, file=sys.stderr)
+ p.stdout.close()
+ p.stderr.close()
+ return output, p.returncode
+@@ -614,11 +614,11 @@ class VersionControlSystem(object):
+ """Show an "are you sure?" prompt if there are unknown files."""
+ unknown_files = self.GetUnknownFiles()
+ if unknown_files:
+- print "The following files are not added to version control:"
++ print("The following files are not added to version control:")
+ for line in unknown_files:
+- print line
++ print(line)
+ prompt = "Are you sure to continue?(y/N) "
+- answer = raw_input(prompt).strip()
++ answer = input(prompt).strip()
+ if answer != "y":
+ ErrorExit("User aborted")
+
+@@ -670,13 +670,13 @@ class VersionControlSystem(object):
+ else:
+ type = "current"
+ if len(content) > MAX_UPLOAD_SIZE:
+- print ("Not uploading the %s file for %s because it's too large." %
+- (type, filename))
++ print(("Not uploading the %s file for %s because it's too large." %
++ (type, filename)))
+ file_too_large = True
+ content = ""
+ checksum = md5.new(content).hexdigest()
+ if options.verbose > 0 and not file_too_large:
+- print "Uploading %s file for %s" % (type, filename)
++ print("Uploading %s file for %s" % (type, filename))
+ url = "/%d/upload_content/%d/%d" % (int(issue), int(patchset), file_id)
+ form_fields = [("filename", filename),
+ ("status", status),
+@@ -698,7 +698,7 @@ class VersionControlSystem(object):
+
+ patches = dict()
+ [patches.setdefault(v, k) for k, v in patch_list]
+- for filename in patches.keys():
++ for filename in list(patches.keys()):
+ base_content, new_content, is_binary, status = files[filename]
+ file_id_str = patches.get(filename)
+ if file_id_str.find("nobase") != -1:
+@@ -755,8 +755,8 @@ class SubversionVCS(VersionControlSystem):
+ words = line.split()
+ if len(words) == 2 and words[0] == "URL:":
+ url = words[1]
+- scheme, netloc, path, params, query, fragment = urlparse.urlparse(url)
+- username, netloc = urllib.splituser(netloc)
++ scheme, netloc, path, params, query, fragment = urllib.parse.urlparse(url)
++ username, netloc = urllib.parse.splituser(netloc)
+ if username:
+ logging.info("Removed username from base URL")
+ if netloc.endswith("svn.python.org"):
+@@ -774,12 +774,12 @@ class SubversionVCS(VersionControlSystem):
+ logging.info("Guessed CollabNet base = %s", base)
+ elif netloc.endswith(".googlecode.com"):
+ path = path + "/"
+- base = urlparse.urlunparse(("http", netloc, path, params,
++ base = urllib.parse.urlunparse(("http", netloc, path, params,
+ query, fragment))
+ logging.info("Guessed Google Code base = %s", base)
+ else:
+ path = path + "/"
+- base = urlparse.urlunparse((scheme, netloc, path, params,
++ base = urllib.parse.urlunparse((scheme, netloc, path, params,
+ query, fragment))
+ logging.info("Guessed base = %s", base)
+ return base
+@@ -1187,8 +1187,8 @@ def UploadSeparatePatches(issue, rpc_server, patchset, data, options):
+ rv = []
+ for patch in patches:
+ if len(patch[1]) > MAX_UPLOAD_SIZE:
+- print ("Not uploading the patch for " + patch[0] +
+- " because the file is too large.")
++ print(("Not uploading the patch for " + patch[0] +
++ " because the file is too large."))
+ continue
+ form_fields = [("filename", patch[0])]
+ if not options.download_base:
+@@ -1196,7 +1196,7 @@ def UploadSeparatePatches(issue, rpc_server, patchset, data, options):
+ files = [("data", "data.diff", patch[1])]
+ ctype, body = EncodeMultipartFormData(form_fields, files)
+ url = "/%d/upload_patch/%d" % (int(issue), int(patchset))
+- print "Uploading patch for " + patch[0]
++ print("Uploading patch for " + patch[0])
+ response_body = rpc_server.Send(url, body, content_type=ctype)
+ lines = response_body.splitlines()
+ if not lines or lines[0] != "OK":
+@@ -1223,7 +1223,8 @@ def GuessVCS(options):
+ out, returncode = RunShellWithReturnCode(["hg", "root"])
+ if returncode == 0:
+ return MercurialVCS(options, out.strip())
+- except OSError, (errno, message):
++ except OSError as xxx_todo_changeme:
++ (errno, message) = xxx_todo_changeme.args
+ if errno != 2: # ENOENT -- they don't have hg installed.
+ raise
+
+@@ -1239,7 +1240,8 @@ def GuessVCS(options):
+ "--is-inside-work-tree"])
+ if returncode == 0:
+ return GitVCS(options)
+- except OSError, (errno, message):
++ except OSError as xxx_todo_changeme1:
++ (errno, message) = xxx_todo_changeme1.args
+ if errno != 2: # ENOENT -- they don't have git installed.
+ raise
+
+@@ -1286,12 +1288,12 @@ def RealMain(argv, data=None):
+ data = vcs.GenerateDiff(args)
+ files = vcs.GetBaseFiles(data)
+ if verbosity >= 1:
+- print "Upload server:", options.server, "(change with -s/--server)"
++ print("Upload server:", options.server, "(change with -s/--server)")
+ if options.issue:
+ prompt = "Message describing this patch set: "
+ else:
+ prompt = "New issue subject: "
+- message = options.message or raw_input(prompt).strip()
++ message = options.message or input(prompt).strip()
+ if not message:
+ ErrorExit("A non-empty message is required")
+ rpc_server = GetRpcServer(options)
+@@ -1324,7 +1326,7 @@ def RealMain(argv, data=None):
+ # Send a hash of all the base file so the server can determine if a copy
+ # already exists in an earlier patchset.
+ base_hashes = ""
+- for file, info in files.iteritems():
++ for file, info in files.items():
+ if not info[0] is None:
+ checksum = md5.new(info[0]).hexdigest()
+ if base_hashes:
+@@ -1338,7 +1340,7 @@ def RealMain(argv, data=None):
+ if not options.download_base:
+ form_fields.append(("content_upload", "1"))
+ if len(data) > MAX_UPLOAD_SIZE:
+- print "Patch is large, so uploading file patches separately."
++ print("Patch is large, so uploading file patches separately.")
+ uploaded_diff_file = []
+ form_fields.append(("separate_patches", "1"))
+ else:
+@@ -1378,7 +1380,7 @@ def main():
+ try:
+ RealMain(sys.argv)
+ except KeyboardInterrupt:
+- print
++ print()
+ StatusUpdate("Interrupted.")
+ sys.exit(1)
+
+diff --git a/Source/ThirdParty/gtest/test/gtest_break_on_failure_unittest.py b/Source/ThirdParty/gtest/test/gtest_break_on_failure_unittest.py
+index c81918331..f36abe338 100755
+--- a/Source/ThirdParty/gtest/test/gtest_break_on_failure_unittest.py
++++ b/Source/ThirdParty/gtest/test/gtest_break_on_failure_unittest.py
+@@ -145,7 +145,7 @@ class GTestBreakOnFailureUnitTest(gtest_test_utils.TestCase):
+ msg = ('when %s%s, an assertion failure in "%s" %s cause a seg-fault.' %
+ (BREAK_ON_FAILURE_ENV_VAR, env_var_value_msg, ' '.join(command),
+ should_or_not))
+- self.assert_(has_seg_fault == expect_seg_fault, msg)
++ self.assertTrue(has_seg_fault == expect_seg_fault, msg)
+
+ def testDefaultBehavior(self):
+ """Tests the behavior of the default mode."""
+diff --git a/Source/ThirdParty/gtest/test/gtest_color_test.py b/Source/ThirdParty/gtest/test/gtest_color_test.py
+index d02a53ed8..b69ab0947 100755
+--- a/Source/ThirdParty/gtest/test/gtest_color_test.py
++++ b/Source/ThirdParty/gtest/test/gtest_color_test.py
+@@ -72,58 +72,58 @@ class GTestColorTest(gtest_test_utils.TestCase):
+ """Tests the case when there's neither GTEST_COLOR nor --gtest_color."""
+
+ if not IS_WINDOWS:
+- self.assert_(not UsesColor('dumb', None, None))
+- self.assert_(not UsesColor('emacs', None, None))
+- self.assert_(not UsesColor('xterm-mono', None, None))
+- self.assert_(not UsesColor('unknown', None, None))
+- self.assert_(not UsesColor(None, None, None))
+- self.assert_(UsesColor('linux', None, None))
+- self.assert_(UsesColor('cygwin', None, None))
+- self.assert_(UsesColor('xterm', None, None))
+- self.assert_(UsesColor('xterm-color', None, None))
+- self.assert_(UsesColor('xterm-256color', None, None))
++ self.assertTrue(not UsesColor('dumb', None, None))
++ self.assertTrue(not UsesColor('emacs', None, None))
++ self.assertTrue(not UsesColor('xterm-mono', None, None))
++ self.assertTrue(not UsesColor('unknown', None, None))
++ self.assertTrue(not UsesColor(None, None, None))
++ self.assertTrue(UsesColor('linux', None, None))
++ self.assertTrue(UsesColor('cygwin', None, None))
++ self.assertTrue(UsesColor('xterm', None, None))
++ self.assertTrue(UsesColor('xterm-color', None, None))
++ self.assertTrue(UsesColor('xterm-256color', None, None))
+
+ def testFlagOnly(self):
+ """Tests the case when there's --gtest_color but not GTEST_COLOR."""
+
+- self.assert_(not UsesColor('dumb', None, 'no'))
+- self.assert_(not UsesColor('xterm-color', None, 'no'))
++ self.assertTrue(not UsesColor('dumb', None, 'no'))
++ self.assertTrue(not UsesColor('xterm-color', None, 'no'))
+ if not IS_WINDOWS:
+- self.assert_(not UsesColor('emacs', None, 'auto'))
+- self.assert_(UsesColor('xterm', None, 'auto'))
+- self.assert_(UsesColor('dumb', None, 'yes'))
+- self.assert_(UsesColor('xterm', None, 'yes'))
++ self.assertTrue(not UsesColor('emacs', None, 'auto'))
++ self.assertTrue(UsesColor('xterm', None, 'auto'))
++ self.assertTrue(UsesColor('dumb', None, 'yes'))
++ self.assertTrue(UsesColor('xterm', None, 'yes'))
+
+ def testEnvVarOnly(self):
+ """Tests the case when there's GTEST_COLOR but not --gtest_color."""
+
+- self.assert_(not UsesColor('dumb', 'no', None))
+- self.assert_(not UsesColor('xterm-color', 'no', None))
++ self.assertTrue(not UsesColor('dumb', 'no', None))
++ self.assertTrue(not UsesColor('xterm-color', 'no', None))
+ if not IS_WINDOWS:
+- self.assert_(not UsesColor('dumb', 'auto', None))
+- self.assert_(UsesColor('xterm-color', 'auto', None))
+- self.assert_(UsesColor('dumb', 'yes', None))
+- self.assert_(UsesColor('xterm-color', 'yes', None))
++ self.assertTrue(not UsesColor('dumb', 'auto', None))
++ self.assertTrue(UsesColor('xterm-color', 'auto', None))
++ self.assertTrue(UsesColor('dumb', 'yes', None))
++ self.assertTrue(UsesColor('xterm-color', 'yes', None))
+
+ def testEnvVarAndFlag(self):
+ """Tests the case when there are both GTEST_COLOR and --gtest_color."""
+
+- self.assert_(not UsesColor('xterm-color', 'no', 'no'))
+- self.assert_(UsesColor('dumb', 'no', 'yes'))
+- self.assert_(UsesColor('xterm-color', 'no', 'auto'))
++ self.assertTrue(not UsesColor('xterm-color', 'no', 'no'))
++ self.assertTrue(UsesColor('dumb', 'no', 'yes'))
++ self.assertTrue(UsesColor('xterm-color', 'no', 'auto'))
+
+ def testAliasesOfYesAndNo(self):
+ """Tests using aliases in specifying --gtest_color."""
+
+- self.assert_(UsesColor('dumb', None, 'true'))
+- self.assert_(UsesColor('dumb', None, 'YES'))
+- self.assert_(UsesColor('dumb', None, 'T'))
+- self.assert_(UsesColor('dumb', None, '1'))
++ self.assertTrue(UsesColor('dumb', None, 'true'))
++ self.assertTrue(UsesColor('dumb', None, 'YES'))
++ self.assertTrue(UsesColor('dumb', None, 'T'))
++ self.assertTrue(UsesColor('dumb', None, '1'))
+
+- self.assert_(not UsesColor('xterm', None, 'f'))
+- self.assert_(not UsesColor('xterm', None, 'false'))
+- self.assert_(not UsesColor('xterm', None, '0'))
+- self.assert_(not UsesColor('xterm', None, 'unknown'))
++ self.assertTrue(not UsesColor('xterm', None, 'f'))
++ self.assertTrue(not UsesColor('xterm', None, 'false'))
++ self.assertTrue(not UsesColor('xterm', None, '0'))
++ self.assertTrue(not UsesColor('xterm', None, 'unknown'))
+
+
+ if __name__ == '__main__':
+diff --git a/Source/ThirdParty/gtest/test/gtest_env_var_test.py b/Source/ThirdParty/gtest/test/gtest_env_var_test.py
+index bcc0bfd55..868896831 100755
+--- a/Source/ThirdParty/gtest/test/gtest_env_var_test.py
++++ b/Source/ThirdParty/gtest/test/gtest_env_var_test.py
+@@ -47,8 +47,8 @@ environ = os.environ.copy()
+
+ def AssertEq(expected, actual):
+ if expected != actual:
+- print 'Expected: %s' % (expected,)
+- print ' Actual: %s' % (actual,)
++ print('Expected: %s' % (expected,))
++ print(' Actual: %s' % (actual,))
+ raise AssertionError
+
+
+diff --git a/Source/ThirdParty/gtest/test/gtest_filter_unittest.py b/Source/ThirdParty/gtest/test/gtest_filter_unittest.py
+index 0d1a77005..595b2fa33 100755
+--- a/Source/ThirdParty/gtest/test/gtest_filter_unittest.py
++++ b/Source/ThirdParty/gtest/test/gtest_filter_unittest.py
+@@ -231,10 +231,10 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
+ """Asserts that two sets are equal."""
+
+ for elem in lhs:
+- self.assert_(elem in rhs, '%s in %s' % (elem, rhs))
++ self.assertTrue(elem in rhs, '%s in %s' % (elem, rhs))
+
+ for elem in rhs:
+- self.assert_(elem in lhs, '%s in %s' % (elem, lhs))
++ self.assertTrue(elem in lhs, '%s in %s' % (elem, lhs))
+
+ def AssertPartitionIsValid(self, set_var, list_of_sets):
+ """Asserts that list_of_sets is a valid partition of set_var."""
+@@ -575,13 +575,13 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
+
+ shard_status_file = os.path.join(gtest_test_utils.GetTempDir(),
+ 'shard_status_file')
+- self.assert_(not os.path.exists(shard_status_file))
++ self.assertTrue(not os.path.exists(shard_status_file))
+
+ extra_env = {SHARD_STATUS_FILE_ENV_VAR: shard_status_file}
+ try:
+ InvokeWithModifiedEnv(extra_env, RunAndReturnOutput)
+ finally:
+- self.assert_(os.path.exists(shard_status_file))
++ self.assertTrue(os.path.exists(shard_status_file))
+ os.remove(shard_status_file)
+
+ def testShardStatusFileIsCreatedWithListTests(self):
+@@ -589,7 +589,7 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
+
+ shard_status_file = os.path.join(gtest_test_utils.GetTempDir(),
+ 'shard_status_file2')
+- self.assert_(not os.path.exists(shard_status_file))
++ self.assertTrue(not os.path.exists(shard_status_file))
+
+ extra_env = {SHARD_STATUS_FILE_ENV_VAR: shard_status_file}
+ try:
+@@ -599,12 +599,12 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
+ finally:
+ # This assertion ensures that Google Test enumerated the tests as
+ # opposed to running them.
+- self.assert_('[==========]' not in output,
++ self.assertTrue('[==========]' not in output,
+ 'Unexpected output during test enumeration.\n'
+ 'Please ensure that LIST_TESTS_FLAG is assigned the\n'
+ 'correct flag value for listing Google Test tests.')
+
+- self.assert_(os.path.exists(shard_status_file))
++ self.assertTrue(os.path.exists(shard_status_file))
+ os.remove(shard_status_file)
+
+ if SUPPORTS_DEATH_TESTS:
+diff --git a/Source/ThirdParty/gtest/test/gtest_help_test.py b/Source/ThirdParty/gtest/test/gtest_help_test.py
+index 3cb4c48e0..8aae487b4 100755
+--- a/Source/ThirdParty/gtest/test/gtest_help_test.py
++++ b/Source/ThirdParty/gtest/test/gtest_help_test.py
+@@ -107,17 +107,17 @@ class GTestHelpTest(gtest_test_utils.TestCase):
+ """
+
+ exit_code, output = RunWithFlag(flag)
+- self.assertEquals(0, exit_code)
+- self.assert_(HELP_REGEX.search(output), output)
++ self.assertEqual(0, exit_code)
++ self.assertTrue(HELP_REGEX.search(output), output)
+ if IS_WINDOWS:
+- self.assert_(CATCH_EXCEPTIONS_FLAG in output, output)
++ self.assertTrue(CATCH_EXCEPTIONS_FLAG in output, output)
+ else:
+- self.assert_(CATCH_EXCEPTIONS_FLAG not in output, output)
++ self.assertTrue(CATCH_EXCEPTIONS_FLAG not in output, output)
+
+ if SUPPORTS_DEATH_TESTS and not IS_WINDOWS:
+- self.assert_(DEATH_TEST_STYLE_FLAG in output, output)
++ self.assertTrue(DEATH_TEST_STYLE_FLAG in output, output)
+ else:
+- self.assert_(DEATH_TEST_STYLE_FLAG not in output, output)
++ self.assertTrue(DEATH_TEST_STYLE_FLAG not in output, output)
+
+ def TestNonHelpFlag(self, flag):
+ """Verifies correct behavior when no help flag is specified.
+@@ -130,8 +130,8 @@ class GTestHelpTest(gtest_test_utils.TestCase):
+ """
+
+ exit_code, output = RunWithFlag(flag)
+- self.assert_(exit_code != 0)
+- self.assert_(not HELP_REGEX.search(output), output)
++ self.assertTrue(exit_code != 0)
++ self.assertTrue(not HELP_REGEX.search(output), output)
+
+ def testPrintsHelpWithFullFlag(self):
+ self.TestHelpFlag('--help')
+diff --git a/Source/ThirdParty/gtest/test/gtest_list_tests_unittest.py b/Source/ThirdParty/gtest/test/gtest_list_tests_unittest.py
+index ce8c3ef05..1d3ce746c 100755
+--- a/Source/ThirdParty/gtest/test/gtest_list_tests_unittest.py
++++ b/Source/ThirdParty/gtest/test/gtest_list_tests_unittest.py
+@@ -136,9 +136,9 @@ class GTestListTestsUnitTest(gtest_test_utils.TestCase):
+ (LIST_TESTS_FLAG, flag_expression, ' '.join(args), output))
+
+ if expected_output is not None:
+- self.assert_(output == expected_output, msg)
++ self.assertTrue(output == expected_output, msg)
+ else:
+- self.assert_(output != EXPECTED_OUTPUT_NO_FILTER, msg)
++ self.assertTrue(output != EXPECTED_OUTPUT_NO_FILTER, msg)
+
+ def testDefaultBehavior(self):
+ """Tests the behavior of the default mode."""
+diff --git a/Source/ThirdParty/gtest/test/gtest_shuffle_test.py b/Source/ThirdParty/gtest/test/gtest_shuffle_test.py
+index 30d0303d1..e4902f09a 100755
+--- a/Source/ThirdParty/gtest/test/gtest_shuffle_test.py
++++ b/Source/ThirdParty/gtest/test/gtest_shuffle_test.py
+@@ -179,23 +179,23 @@ class GTestShuffleUnitTest(gtest_test_utils.TestCase):
+ self.assertEqual(len(SHARDED_TESTS), len(SHUFFLED_SHARDED_TESTS))
+
+ def testShuffleChangesTestOrder(self):
+- self.assert_(SHUFFLED_ALL_TESTS != ALL_TESTS, SHUFFLED_ALL_TESTS)
+- self.assert_(SHUFFLED_ACTIVE_TESTS != ACTIVE_TESTS, SHUFFLED_ACTIVE_TESTS)
+- self.assert_(SHUFFLED_FILTERED_TESTS != FILTERED_TESTS,
++ self.assertTrue(SHUFFLED_ALL_TESTS != ALL_TESTS, SHUFFLED_ALL_TESTS)
++ self.assertTrue(SHUFFLED_ACTIVE_TESTS != ACTIVE_TESTS, SHUFFLED_ACTIVE_TESTS)
++ self.assertTrue(SHUFFLED_FILTERED_TESTS != FILTERED_TESTS,
+ SHUFFLED_FILTERED_TESTS)
+- self.assert_(SHUFFLED_SHARDED_TESTS != SHARDED_TESTS,
++ self.assertTrue(SHUFFLED_SHARDED_TESTS != SHARDED_TESTS,
+ SHUFFLED_SHARDED_TESTS)
+
+ def testShuffleChangesTestCaseOrder(self):
+- self.assert_(GetTestCases(SHUFFLED_ALL_TESTS) != GetTestCases(ALL_TESTS),
++ self.assertTrue(GetTestCases(SHUFFLED_ALL_TESTS) != GetTestCases(ALL_TESTS),
+ GetTestCases(SHUFFLED_ALL_TESTS))
+- self.assert_(
++ self.assertTrue(
+ GetTestCases(SHUFFLED_ACTIVE_TESTS) != GetTestCases(ACTIVE_TESTS),
+ GetTestCases(SHUFFLED_ACTIVE_TESTS))
+- self.assert_(
++ self.assertTrue(
+ GetTestCases(SHUFFLED_FILTERED_TESTS) != GetTestCases(FILTERED_TESTS),
+ GetTestCases(SHUFFLED_FILTERED_TESTS))
+- self.assert_(
++ self.assertTrue(
+ GetTestCases(SHUFFLED_SHARDED_TESTS) != GetTestCases(SHARDED_TESTS),
+ GetTestCases(SHUFFLED_SHARDED_TESTS))
+
+@@ -215,29 +215,29 @@ class GTestShuffleUnitTest(gtest_test_utils.TestCase):
+
+ def testShuffleDoesNotCreateNewTest(self):
+ for test in SHUFFLED_ALL_TESTS:
+- self.assert_(test in ALL_TESTS, '%s is an invalid test' % (test,))
++ self.assertTrue(test in ALL_TESTS, '%s is an invalid test' % (test,))
+ for test in SHUFFLED_ACTIVE_TESTS:
+- self.assert_(test in ACTIVE_TESTS, '%s is an invalid test' % (test,))
++ self.assertTrue(test in ACTIVE_TESTS, '%s is an invalid test' % (test,))
+ for test in SHUFFLED_FILTERED_TESTS:
+- self.assert_(test in FILTERED_TESTS, '%s is an invalid test' % (test,))
++ self.assertTrue(test in FILTERED_TESTS, '%s is an invalid test' % (test,))
+ for test in SHUFFLED_SHARDED_TESTS:
+- self.assert_(test in SHARDED_TESTS, '%s is an invalid test' % (test,))
++ self.assertTrue(test in SHARDED_TESTS, '%s is an invalid test' % (test,))
+
+ def testShuffleIncludesAllTests(self):
+ for test in ALL_TESTS:
+- self.assert_(test in SHUFFLED_ALL_TESTS, '%s is missing' % (test,))
++ self.assertTrue(test in SHUFFLED_ALL_TESTS, '%s is missing' % (test,))
+ for test in ACTIVE_TESTS:
+- self.assert_(test in SHUFFLED_ACTIVE_TESTS, '%s is missing' % (test,))
++ self.assertTrue(test in SHUFFLED_ACTIVE_TESTS, '%s is missing' % (test,))
+ for test in FILTERED_TESTS:
+- self.assert_(test in SHUFFLED_FILTERED_TESTS, '%s is missing' % (test,))
++ self.assertTrue(test in SHUFFLED_FILTERED_TESTS, '%s is missing' % (test,))
+ for test in SHARDED_TESTS:
+- self.assert_(test in SHUFFLED_SHARDED_TESTS, '%s is missing' % (test,))
++ self.assertTrue(test in SHUFFLED_SHARDED_TESTS, '%s is missing' % (test,))
+
+ def testShuffleLeavesDeathTestsAtFront(self):
+ non_death_test_found = False
+ for test in SHUFFLED_ACTIVE_TESTS:
+ if 'DeathTest.' in test:
+- self.assert_(not non_death_test_found,
++ self.assertTrue(not non_death_test_found,
+ '%s appears after a non-death test' % (test,))
+ else:
+ non_death_test_found = True
+@@ -295,11 +295,11 @@ class GTestShuffleUnitTest(gtest_test_utils.TestCase):
+ GetTestsForAllIterations(
+ {}, [ShuffleFlag(), RandomSeedFlag(1), RepeatFlag(3)]))
+
+- self.assert_(tests_in_iteration1 != tests_in_iteration2,
++ self.assertTrue(tests_in_iteration1 != tests_in_iteration2,
+ tests_in_iteration1)
+- self.assert_(tests_in_iteration1 != tests_in_iteration3,
++ self.assertTrue(tests_in_iteration1 != tests_in_iteration3,
+ tests_in_iteration1)
+- self.assert_(tests_in_iteration2 != tests_in_iteration3,
++ self.assertTrue(tests_in_iteration2 != tests_in_iteration3,
+ tests_in_iteration2)
+
+ def testShuffleShardedTestsPreservesPartition(self):
+diff --git a/Source/ThirdParty/gtest/test/gtest_test_utils.py b/Source/ThirdParty/gtest/test/gtest_test_utils.py
+index e0f5973e7..80a953ea1 100755
+--- a/Source/ThirdParty/gtest/test/gtest_test_utils.py
++++ b/Source/ThirdParty/gtest/test/gtest_test_utils.py
+@@ -167,7 +167,7 @@ def GetTestExecutablePath(executable_name, build_dir=None):
+ # TODO(vladl@google.com): change mk_test.py to test.py after renaming
+ # the file.
+ 'Please run mk_test.py -h for help.')
+- print >> sys.stderr, message
++ print(message, file=sys.stderr)
+ sys.exit(1)
+
+ return path
+diff --git a/Source/ThirdParty/gtest/test/gtest_throw_on_failure_test.py b/Source/ThirdParty/gtest/test/gtest_throw_on_failure_test.py
+index 5678ffeaf..318e6306c 100755
+--- a/Source/ThirdParty/gtest/test/gtest_throw_on_failure_test.py
++++ b/Source/ThirdParty/gtest/test/gtest_throw_on_failure_test.py
+@@ -70,7 +70,7 @@ def SetEnvVar(env_var, value):
+ def Run(command):
+ """Runs a command; returns True/False if its exit code is/isn't 0."""
+
+- print 'Running "%s". . .' % ' '.join(command)
++ print('Running "%s". . .' % ' '.join(command))
+ p = gtest_test_utils.Subprocess(command)
+ return p.exited and p.exit_code == 0
+
+@@ -123,7 +123,7 @@ class ThrowOnFailureTest(gtest_test_utils.TestCase):
+ 'exit code.' %
+ (THROW_ON_FAILURE, env_var_value_msg, ' '.join(command),
+ should_or_not))
+- self.assert_(failed == should_fail, msg)
++ self.assertTrue(failed == should_fail, msg)
+
+ def testDefaultBehavior(self):
+ """Tests the behavior of the default mode."""
+diff --git a/Source/ThirdParty/gtest/test/gtest_uninitialized_test.py b/Source/ThirdParty/gtest/test/gtest_uninitialized_test.py
+index 6ae57eeed..435837009 100755
+--- a/Source/ThirdParty/gtest/test/gtest_uninitialized_test.py
++++ b/Source/ThirdParty/gtest/test/gtest_uninitialized_test.py
+@@ -46,8 +46,8 @@ def Assert(condition):
+
+ def AssertEq(expected, actual):
+ if expected != actual:
+- print 'Expected: %s' % (expected,)
+- print ' Actual: %s' % (actual,)
++ print('Expected: %s' % (expected,))
++ print(' Actual: %s' % (actual,))
+ raise AssertionError
+
+
+diff --git a/Source/ThirdParty/gtest/test/gtest_xml_outfiles_test.py b/Source/ThirdParty/gtest/test/gtest_xml_outfiles_test.py
+index 0fe947f08..7281864c5 100755
+--- a/Source/ThirdParty/gtest/test/gtest_xml_outfiles_test.py
++++ b/Source/ThirdParty/gtest/test/gtest_xml_outfiles_test.py
+@@ -100,8 +100,8 @@ class GTestXMLOutFilesTest(gtest_xml_test_utils.GTestXMLTestCase):
+ command = [gtest_prog_path, "--gtest_output=xml:%s" % self.output_dir_]
+ p = gtest_test_utils.Subprocess(command,
+ working_dir=gtest_test_utils.GetTempDir())
+- self.assert_(p.exited)
+- self.assertEquals(0, p.exit_code)
++ self.assertTrue(p.exited)
++ self.assertEqual(0, p.exit_code)
+
+ # TODO(wan@google.com): libtool causes the built test binary to be
+ # named lt-gtest_xml_outfiles_test_ instead of
+@@ -112,7 +112,7 @@ class GTestXMLOutFilesTest(gtest_xml_test_utils.GTestXMLTestCase):
+ output_file1 = os.path.join(self.output_dir_, output_file_name1)
+ output_file_name2 = 'lt-' + output_file_name1
+ output_file2 = os.path.join(self.output_dir_, output_file_name2)
+- self.assert_(os.path.isfile(output_file1) or os.path.isfile(output_file2),
++ self.assertTrue(os.path.isfile(output_file1) or os.path.isfile(output_file2),
+ output_file1)
+
+ expected = minidom.parseString(expected_xml)
+diff --git a/Source/ThirdParty/gtest/test/gtest_xml_output_unittest.py b/Source/ThirdParty/gtest/test/gtest_xml_output_unittest.py
+index 6d44929ca..93b67532e 100755
+--- a/Source/ThirdParty/gtest/test/gtest_xml_output_unittest.py
++++ b/Source/ThirdParty/gtest/test/gtest_xml_output_unittest.py
+@@ -145,16 +145,16 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
+ "gtest_no_test_unittest")
+ try:
+ os.remove(output_file)
+- except OSError, e:
++ except OSError as e:
+ if e.errno != errno.ENOENT:
+ raise
+
+ p = gtest_test_utils.Subprocess(
+ [gtest_prog_path, "%s=xml" % GTEST_OUTPUT_FLAG],
+ working_dir=gtest_test_utils.GetTempDir())
+- self.assert_(p.exited)
+- self.assertEquals(0, p.exit_code)
+- self.assert_(os.path.isfile(output_file))
++ self.assertTrue(p.exited)
++ self.assertEqual(0, p.exit_code)
++ self.assertTrue(os.path.isfile(output_file))
+
+ def testSuppressedXmlOutput(self):
+ """
+@@ -174,16 +174,16 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
+ "--shut_down_xml"]
+ p = gtest_test_utils.Subprocess(command)
+ if p.terminated_by_signal:
+- self.assert_(False,
++ self.assertTrue(False,
+ "%s was killed by signal %d" % (gtest_prog_name, p.signal))
+ else:
+- self.assert_(p.exited)
+- self.assertEquals(1, p.exit_code,
++ self.assertTrue(p.exited)
++ self.assertEqual(1, p.exit_code,
+ "'%s' exited with code %s, which doesn't match "
+ "the expected exit code %s."
+ % (command, p.exit_code, 1))
+
+- self.assert_(not os.path.isfile(xml_path))
++ self.assertTrue(not os.path.isfile(xml_path))
+
+
+ def _TestXmlOutput(self, gtest_prog_name, expected_xml, expected_exit_code):
+@@ -200,11 +200,11 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
+ command = [gtest_prog_path, "%s=xml:%s" % (GTEST_OUTPUT_FLAG, xml_path)]
+ p = gtest_test_utils.Subprocess(command)
+ if p.terminated_by_signal:
+- self.assert_(False,
++ self.assertTrue(False,
+ "%s was killed by signal %d" % (gtest_prog_name, p.signal))
+ else:
+- self.assert_(p.exited)
+- self.assertEquals(expected_exit_code, p.exit_code,
++ self.assertTrue(p.exited)
++ self.assertEqual(expected_exit_code, p.exit_code,
+ "'%s' exited with code %s, which doesn't match "
+ "the expected exit code %s."
+ % (command, p.exit_code, expected_exit_code))
+diff --git a/Source/ThirdParty/gtest/test/gtest_xml_test_utils.py b/Source/ThirdParty/gtest/test/gtest_xml_test_utils.py
+index c83c3b7ea..2d6afb359 100755
+--- a/Source/ThirdParty/gtest/test/gtest_xml_test_utils.py
++++ b/Source/ThirdParty/gtest/test/gtest_xml_test_utils.py
+@@ -67,37 +67,37 @@ class GTestXMLTestCase(gtest_test_utils.TestCase):
+ """
+
+ if expected_node.nodeType == Node.CDATA_SECTION_NODE:
+- self.assertEquals(Node.CDATA_SECTION_NODE, actual_node.nodeType)
+- self.assertEquals(expected_node.nodeValue, actual_node.nodeValue)
++ self.assertEqual(Node.CDATA_SECTION_NODE, actual_node.nodeType)
++ self.assertEqual(expected_node.nodeValue, actual_node.nodeValue)
+ return
+
+- self.assertEquals(Node.ELEMENT_NODE, actual_node.nodeType)
+- self.assertEquals(Node.ELEMENT_NODE, expected_node.nodeType)
+- self.assertEquals(expected_node.tagName, actual_node.tagName)
++ self.assertEqual(Node.ELEMENT_NODE, actual_node.nodeType)
++ self.assertEqual(Node.ELEMENT_NODE, expected_node.nodeType)
++ self.assertEqual(expected_node.tagName, actual_node.tagName)
+
+ expected_attributes = expected_node.attributes
+ actual_attributes = actual_node .attributes
+- self.assertEquals(
++ self.assertEqual(
+ expected_attributes.length, actual_attributes.length,
+ "attribute numbers differ in element " + actual_node.tagName)
+ for i in range(expected_attributes.length):
+ expected_attr = expected_attributes.item(i)
+ actual_attr = actual_attributes.get(expected_attr.name)
+- self.assert_(
++ self.assertTrue(
+ actual_attr is not None,
+ "expected attribute %s not found in element %s" %
+ (expected_attr.name, actual_node.tagName))
+- self.assertEquals(expected_attr.value, actual_attr.value,
++ self.assertEqual(expected_attr.value, actual_attr.value,
+ " values of attribute %s in element %s differ" %
+ (expected_attr.name, actual_node.tagName))
+
+ expected_children = self._GetChildren(expected_node)
+ actual_children = self._GetChildren(actual_node)
+- self.assertEquals(
++ self.assertEqual(
+ len(expected_children), len(actual_children),
+ "number of child elements differ in element " + actual_node.tagName)
+- for child_id, child in expected_children.iteritems():
+- self.assert_(child_id in actual_children,
++ for child_id, child in expected_children.items():
++ self.assertTrue(child_id in actual_children,
+ '<%s> is not in <%s> (in element %s)' %
+ (child_id, actual_children, actual_node.tagName))
+ self.AssertEquivalentNodes(child, actual_children[child_id])
+@@ -125,10 +125,10 @@ class GTestXMLTestCase(gtest_test_utils.TestCase):
+ children = {}
+ for child in element.childNodes:
+ if child.nodeType == Node.ELEMENT_NODE:
+- self.assert_(child.tagName in self.identifying_attribute,
++ self.assertTrue(child.tagName in self.identifying_attribute,
+ "Encountered unknown element <%s>" % child.tagName)
+ childID = child.getAttribute(self.identifying_attribute[child.tagName])
+- self.assert_(childID not in children)
++ self.assertTrue(childID not in children)
+ children[childID] = child
+ elif child.nodeType in [Node.TEXT_NODE, Node.CDATA_SECTION_NODE]:
+ if "detail" not in children:
+diff --git a/Source/ThirdParty/gtest/test/run_tests_util.py b/Source/ThirdParty/gtest/test/run_tests_util.py
+index 9e57931eb..1f4d33af2 100755
+--- a/Source/ThirdParty/gtest/test/run_tests_util.py
++++ b/Source/ThirdParty/gtest/test/run_tests_util.py
+@@ -159,8 +159,8 @@ def _GetConfigFromBuildDir(build_dir):
+ if m:
+ return m.group(1)
+ else:
+- print >>sys.stderr, ('%s is an invalid build directory that does not '
+- 'correspond to any configuration.' % (build_dir,))
++ print(('%s is an invalid build directory that does not '
++ 'correspond to any configuration.' % (build_dir,)), file=sys.stderr)
+ return ''
+
+
+@@ -250,7 +250,7 @@ class TestRunner(object):
+ # If this script is run on a Windows machine that has no association
+ # between the .py extension and a python interpreter, simply passing
+ # the script name into subprocess.Popen/os.spawn will not work.
+- print 'Running %s . . .' % (test,)
++ print('Running %s . . .' % (test,))
+ return self._Run([sys.executable, test])
+
+ finally:
+@@ -308,7 +308,7 @@ class TestRunner(object):
+ # A final list of build directories which will be searched for the test
+ # binaries. First, add directories specified directly on the command
+ # line.
+- build_dirs = filter(self.os.path.isdir, normalized_args)
++ build_dirs = list(filter(self.os.path.isdir, normalized_args))
+
+ # Adds build directories specified via their build configurations using
+ # the -c or -a options.
+@@ -374,8 +374,8 @@ class TestRunner(object):
+ config = _GetConfigFromBuildDir(directory)
+ file_name = os.path.basename(test)
+ if python_tests_to_skip and (config, file_name) in python_tests_to_skip:
+- print ('NOTE: %s is skipped for configuration %s, as it does not '
+- 'work there.' % (file_name, config))
++ print(('NOTE: %s is skipped for configuration %s, as it does not '
++ 'work there.' % (file_name, config)))
+ else:
+ python_test_pairs.append((directory, test))
+
+@@ -418,17 +418,17 @@ class TestRunner(object):
+ failed = [(directory, test)
+ for (directory, test, success) in results
+ if not success]
+- print
+- print '%d tests run.' % len(results)
++ print()
++ print('%d tests run.' % len(results))
+ if failed:
+- print 'The following %d tests failed:' % len(failed)
++ print('The following %d tests failed:' % len(failed))
+ for (directory, test) in failed:
+- print '%s in %s' % (test, directory)
++ print('%s in %s' % (test, directory))
+ return 1
+ else:
+- print 'All tests passed!'
++ print('All tests passed!')
+ else: # No tests defined
+- print 'Nothing to test - no tests specified!'
++ print('Nothing to test - no tests specified!')
+
+ return 0
+
+@@ -440,7 +440,7 @@ def ParseArgs(project_name, argv=None, help_callback=None):
+ # required by optparse, even though they are unused.
+ # pylint: disable-msg=W0613
+ def PrintHelp(option, opt, value, parser):
+- print HELP_MSG % {'proj': project_name}
++ print(HELP_MSG % {'proj': project_name})
+ sys.exit(1)
+
+ parser = optparse.OptionParser()
+diff --git a/Source/ThirdParty/gtest/test/run_tests_util_test.py b/Source/ThirdParty/gtest/test/run_tests_util_test.py
+index 9c55726fd..dce27f3ae 100755
+--- a/Source/ThirdParty/gtest/test/run_tests_util_test.py
++++ b/Source/ThirdParty/gtest/test/run_tests_util_test.py
+@@ -144,7 +144,7 @@ class FakeOs(object):
+ # pylint: disable-msg=C6409
+ def listdir(self, path):
+ assert self.path.isdir(path)
+- return self.path.PathElement(path).iterkeys()
++ return iter(self.path.PathElement(path).keys())
+
+ def spawnv(self, wait, executable, *kargs):
+ assert wait == FakeOs.P_WAIT
+@@ -165,7 +165,7 @@ class GetTestsToRunTest(unittest.TestCase):
+ def NormalizeBinaryTestPair(pair):
+ """Normalizes path data in the (directory, binary_executable) pair."""
+
+- directory, executable = map(os.path.normpath, pair)
++ directory, executable = list(map(os.path.normpath, pair))
+
+ # On Windows and Cygwin, the test file names have the .exe extension, but
+ # they can be invoked either by name or by name+extension. Our test must
+@@ -174,8 +174,8 @@ class GetTestsToRunTest(unittest.TestCase):
+ executable = re.sub(r'\.exe$', '', executable)
+ return (directory, executable)
+
+- python_tests = sets.Set(map(NormalizePythonTestPair, results[0]))
+- binary_tests = sets.Set(map(NormalizeBinaryTestPair, results[1]))
++ python_tests = sets.Set(list(map(NormalizePythonTestPair, results[0])))
++ binary_tests = sets.Set(list(map(NormalizeBinaryTestPair, results[1])))
+ return (python_tests, binary_tests)
+
+ def AssertResultsEqual(self, results, expected):
+@@ -472,7 +472,7 @@ class GetTestsToRunTest(unittest.TestCase):
+ def testNonTestBinary(self):
+ """Exercises GetTestsToRun with a non-test parameter."""
+
+- self.assert_(
++ self.assertTrue(
+ not self.test_runner.GetTestsToRun(
+ ['gtest_unittest_not_really'],
+ '',
+@@ -482,7 +482,7 @@ class GetTestsToRunTest(unittest.TestCase):
+ def testNonExistingPythonTest(self):
+ """Exercises GetTestsToRun with a non-existent Python test parameter."""
+
+- self.assert_(
++ self.assertTrue(
+ not self.test_runner.GetTestsToRun(
+ ['nonexistent_test.py'],
+ '',
+@@ -619,7 +619,7 @@ class ParseArgsTest(unittest.TestCase):
+ def testNoOptions(self):
+ options, args = run_tests_util.ParseArgs('gtest', argv=['script.py'])
+ self.assertEqual(args, ['script.py'])
+- self.assert_(options.configurations is None)
++ self.assertTrue(options.configurations is None)
+ self.assertFalse(options.built_configurations)
+
+ def testOptionC(self):
+@@ -638,7 +638,7 @@ class ParseArgsTest(unittest.TestCase):
+ def testOptionB(self):
+ options, args = run_tests_util.ParseArgs('gtest', argv=['script.py', '-b'])
+ self.assertEqual(args, ['script.py'])
+- self.assert_(options.configurations is None)
++ self.assertTrue(options.configurations is None)
+ self.assertTrue(options.built_configurations)
+
+ def testOptionCAndOptionB(self):
+diff --git a/Source/ThirdParty/gtest/xcode/Scripts/versiongenerate.py b/Source/ThirdParty/gtest/xcode/Scripts/versiongenerate.py
+index 81de8c96a..ea24f964c 100644
+--- a/Source/ThirdParty/gtest/xcode/Scripts/versiongenerate.py
++++ b/Source/ThirdParty/gtest/xcode/Scripts/versiongenerate.py
+@@ -54,7 +54,7 @@ import re
+
+ # Read the command line argument (the output directory for Version.h)
+ if (len(sys.argv) < 3):
+- print "Usage: versiongenerate.py input_dir output_dir"
++ print("Usage: versiongenerate.py input_dir output_dir")
+ sys.exit(1)
+ else:
+ input_dir = sys.argv[1]
+diff --git a/Source/WebCore/AVFoundationSupport.py b/Source/WebCore/AVFoundationSupport.py
+index 7f13a8742..a3ab479ad 100644
+--- a/Source/WebCore/AVFoundationSupport.py
++++ b/Source/WebCore/AVFoundationSupport.py
+@@ -42,22 +42,22 @@ def fileContains(relativePath, regexp):
+ return False
+
+
+-print "/* Identifying AVFoundation Support */"
++print("/* Identifying AVFoundation Support */")
+ if lookFor("/include/AVFoundationCF/AVCFBase.h"):
+- print "#define HAVE_AVCF 1"
++ print("#define HAVE_AVCF 1")
+ if lookFor("/include/AVFoundationCF/AVCFPlayerItemLegibleOutput.h"):
+- print "#define HAVE_AVCF_LEGIBLE_OUTPUT 1"
++ print("#define HAVE_AVCF_LEGIBLE_OUTPUT 1")
+ if lookFor("/include/AVFoundationCF/AVCFAssetResourceLoader.h"):
+- print "#define HAVE_AVFOUNDATION_LOADER_DELEGATE 1"
++ print("#define HAVE_AVFOUNDATION_LOADER_DELEGATE 1")
+ if lookFor("/include/AVFoundationCF/AVCFAsset.h"):
+ regexp = re.compile("AVCFURLAssetIsPlayableExtendedMIMEType")
+ if fileContains("/include/AVFoundationCF/AVCFAsset.h", regexp):
+- print "#define HAVE_AVCFURL_PLAYABLE_MIMETYPE 1"
++ print("#define HAVE_AVCFURL_PLAYABLE_MIMETYPE 1")
+ if lookFor("/include/QuartzCore/CACFLayer.h"):
+ regexp = re.compile("CACFLayerSetContentsScale")
+ if fileContains("/include/QuartzCore/CACFLayer.h", regexp):
+- print "#define HAVE_CACFLAYER_SETCONTENTSSCALE 1"
++ print("#define HAVE_CACFLAYER_SETCONTENTSSCALE 1")
+ if lookFor("/include/AVFoundationCF/AVCFPlayerItemLegibleOutput.h"):
+ regexp = re.compile("kAVCFPlayerItemLegibleOutput_CallbacksVersion_2")
+ if fileContains("/include/AVFoundationCF/AVCFPlayerItemLegibleOutput.h", regexp):
+- print "#define HAVE_AVCFPLAYERITEM_CALLBACK_VERSION_2 1"
++ print("#define HAVE_AVCFPLAYERITEM_CALLBACK_VERSION_2 1")
+diff --git a/Source/WebCore/CMakeLists.txt b/Source/WebCore/CMakeLists.txt
+index 56b32563a..feac0dbbb 100644
+--- a/Source/WebCore/CMakeLists.txt
++++ b/Source/WebCore/CMakeLists.txt
+@@ -3671,14 +3671,14 @@ set(WebCore_BUILTINS_SOURCES
+ )
+
+ set(BUILTINS_GENERATOR_SCRIPTS
+- ${JavaScriptCore_SCRIPTS_DIR}/builtins.py
+- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generator.py
+- ${JavaScriptCore_SCRIPTS_DIR}/builtins_model.py
+- ${JavaScriptCore_SCRIPTS_DIR}/builtins_templates.py
+- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_combined_header.py
+- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_combined_implementation.py
+- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_separate_header.py
+- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_separate_implementation.py
++ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins.py
++ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generator.py
++ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_model.py
++ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_templates.py
++ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generate_combined_header.py
++ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generate_combined_implementation.py
++ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generate_separate_header.py
++ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generate_separate_implementation.py
+ ${JavaScriptCore_SCRIPTS_DIR}/generate-js-builtins.py
+ ${JavaScriptCore_SCRIPTS_DIR}/lazywriter.py
+ )
+diff --git a/Source/WebCore/DerivedSources.make b/Source/WebCore/DerivedSources.make
+index 0f5a79fa4..83bf5f96a 100644
+--- a/Source/WebCore/DerivedSources.make
++++ b/Source/WebCore/DerivedSources.make
+@@ -1286,14 +1286,14 @@ WebCore_BUILTINS_SOURCES = \
+ #
+
+ BUILTINS_GENERATOR_SCRIPTS = \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins.py \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins_generator.py \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins_model.py \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins_templates.py \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins_generate_combined_header.py \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins_generate_combined_implementation.py \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins_generate_separate_header.py \
+- $(JavaScriptCore_SCRIPTS_DIR)/builtins_generate_separate_implementation.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins_generator.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins_model.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins_templates.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins_generate_combined_header.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins_generate_combined_implementation.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins_generate_separate_header.py \
++ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins_generate_separate_implementation.py \
+ $(JavaScriptCore_SCRIPTS_DIR)/generate-js-builtins.py \
+ $(JavaScriptCore_SCRIPTS_DIR)/lazywriter.py \
+ #
+diff --git a/Source/WebCore/platform/network/create-http-header-name-table b/Source/WebCore/platform/network/create-http-header-name-table
+index 755d22e94..3dc57a568 100755
+--- a/Source/WebCore/platform/network/create-http-header-name-table
++++ b/Source/WebCore/platform/network/create-http-header-name-table
+@@ -41,7 +41,7 @@ input_file = open(input_path)
+ http_header_name_to_id = { }
+ http_header_names = []
+
+-for line in input_file.xreadlines():
++for line in input_file:
+ http_header_name = line.strip()
+ if not http_header_name or http_header_name[:2] == '//':
+ continue
+diff --git a/Source/WebInspectorUI/Scripts/jsmin.py b/Source/WebInspectorUI/Scripts/jsmin.py
+index 372418b4d..2f9fddfce 100644
+--- a/Source/WebInspectorUI/Scripts/jsmin.py
++++ b/Source/WebInspectorUI/Scripts/jsmin.py
+@@ -23,17 +23,20 @@
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ # THE SOFTWARE.
+
++# stolen from webkitgtk 2.26.2
+
+ import sys
+ is_3 = sys.version_info >= (3, 0)
+ if is_3:
+ import io
++ python_text_type = str
+ else:
+ import StringIO
+ try:
+ import cStringIO
+ except ImportError:
+ cStringIO = None
++ python_text_type = basestring
+
+
+ __all__ = ['jsmin', 'JavascriptMinify']
+@@ -79,14 +82,18 @@ class JavascriptMinify(object):
+ def write(char):
+ # all of this is to support literal regular expressions.
+ # sigh
+- if char in 'return':
++ if str(char) in 'return':
+ self.return_buf += char
+ self.is_return = self.return_buf == 'return'
+ self.outs.write(char)
+ if self.is_return:
+ self.return_buf = ''
+
+- read = self.ins.read
++ def read(n):
++ char = self.ins.read(n)
++ if not isinstance(char, python_text_type):
++ raise ValueError("ERROR: The script jsmin.py can only handle text input, but it received input of type %s" % type(char))
++ return char
+
+ space_strings = "abcdefghijklmnopqrstuvwxyz"\
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$\\"
+@@ -118,8 +125,8 @@ class JavascriptMinify(object):
+ write(previous)
+ elif not previous:
+ return
+- elif previous >= '!':
+- if previous in "'\"":
++ elif str(previous) >= "!":
++ if str(previous) in "'\"":
+ in_quote = previous
+ write(previous)
+ previous_non_space = previous
+@@ -166,7 +173,7 @@ class JavascriptMinify(object):
+ if numslashes % 2 == 0:
+ in_quote = ''
+ write(''.join(quote_buf))
+- elif next1 in '\r\n':
++ elif str(next1) in '\r\n':
+ if previous_non_space in newlineend_strings \
+ or previous_non_space > '~':
+ while 1:
+@@ -179,7 +186,7 @@ class JavascriptMinify(object):
+ or next2 > '~' or next2 == '/':
+ do_newline = True
+ break
+- elif next1 < '!' and not in_re:
++ elif str(next1) < '!' and not in_re:
+ if (previous_non_space in space_strings \
+ or previous_non_space > '~') \
+ and (next2 in space_strings or next2 > '~'):
+@@ -217,14 +224,14 @@ class JavascriptMinify(object):
+ do_newline = False
+
+ write(next1)
+- if not in_re and next1 in "'\"`":
++ if not in_re and str(next1) in "'\"`":
+ in_quote = next1
+ quote_buf = []
+
+ previous = next1
+ next1 = next2
+
+- if previous >= '!':
++ if str(previous) >= '!':
+ previous_non_space = previous
+
+ if previous == '\\':
+diff --git a/Source/WebKit2/Scripts/generate-message-receiver.py b/Source/WebKit2/Scripts/generate-message-receiver.py
+index 6413a8bf3..8702117f0 100644
+--- a/Source/WebKit2/Scripts/generate-message-receiver.py
++++ b/Source/WebKit2/Scripts/generate-message-receiver.py
+@@ -22,7 +22,7 @@
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-from __future__ import with_statement
++
+ import sys
+
+ import webkit.messages
+diff --git a/Source/WebKit2/Scripts/generate-messages-header.py b/Source/WebKit2/Scripts/generate-messages-header.py
+index ad73a5283..b35ee7d51 100644
+--- a/Source/WebKit2/Scripts/generate-messages-header.py
++++ b/Source/WebKit2/Scripts/generate-messages-header.py
+@@ -22,7 +22,7 @@
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-from __future__ import with_statement
++
+ import sys
+
+ import webkit.messages
+diff --git a/Source/WebKit2/Scripts/webkit/messages_unittest.py b/Source/WebKit2/Scripts/webkit/messages_unittest.py
+index 164199fc2..5f58e1919 100644
+--- a/Source/WebKit2/Scripts/webkit/messages_unittest.py
++++ b/Source/WebKit2/Scripts/webkit/messages_unittest.py
+@@ -24,7 +24,7 @@ import os
+ import re
+ import sys
+ import unittest
+-from StringIO import StringIO
++from io import StringIO
+
+ sys.path.append(os.path.dirname(os.path.dirname(__file__)))
+ from webkit import messages
+@@ -255,43 +255,43 @@ class MessagesTest(unittest.TestCase):
+
+ class ParsingTest(MessagesTest):
+ def check_message(self, message, expected_message):
+- self.assertEquals(message.name, expected_message['name'])
+- self.assertEquals(len(message.parameters), len(expected_message['parameters']))
++ self.assertEqual(message.name, expected_message['name'])
++ self.assertEqual(len(message.parameters), len(expected_message['parameters']))
+ for index, parameter in enumerate(message.parameters):
+ expected_parameter = expected_message['parameters'][index]
+- self.assertEquals(parameter.type, expected_parameter[0])
+- self.assertEquals(parameter.name, expected_parameter[1])
++ self.assertEqual(parameter.type, expected_parameter[0])
++ self.assertEqual(parameter.name, expected_parameter[1])
+ if len(expected_parameter) > 2:
+- self.assertEquals(parameter.attributes, frozenset(expected_parameter[2]))
++ self.assertEqual(parameter.attributes, frozenset(expected_parameter[2]))
+ for attribute in expected_parameter[2]:
+ self.assertTrue(parameter.has_attribute(attribute))
+ else:
+- self.assertEquals(parameter.attributes, frozenset())
++ self.assertEqual(parameter.attributes, frozenset())
+ if message.reply_parameters is not None:
+ for index, parameter in enumerate(message.reply_parameters):
+- self.assertEquals(parameter.type, expected_message['reply_parameters'][index][0])
+- self.assertEquals(parameter.name, expected_message['reply_parameters'][index][1])
++ self.assertEqual(parameter.type, expected_message['reply_parameters'][index][0])
++ self.assertEqual(parameter.name, expected_message['reply_parameters'][index][1])
+ else:
+ self.assertFalse('reply_parameters' in expected_message)
+- self.assertEquals(message.condition, expected_message['conditions'])
++ self.assertEqual(message.condition, expected_message['conditions'])
+
+ def test_receiver(self):
+ """Receiver should be parsed as expected"""
+- self.assertEquals(self.receiver.name, _expected_results['name'])
+- self.assertEquals(self.receiver.condition, _expected_results['conditions'])
+- self.assertEquals(len(self.receiver.messages), len(_expected_results['messages']))
++ self.assertEqual(self.receiver.name, _expected_results['name'])
++ self.assertEqual(self.receiver.condition, _expected_results['conditions'])
++ self.assertEqual(len(self.receiver.messages), len(_expected_results['messages']))
+ for index, message in enumerate(self.receiver.messages):
+ self.check_message(message, _expected_results['messages'][index])
+
+- self.assertEquals(self.legacy_receiver.name, _expected_results['name'])
+- self.assertEquals(self.legacy_receiver.condition, _expected_results['conditions'])
+- self.assertEquals(len(self.legacy_receiver.messages), len(_expected_results['messages']))
++ self.assertEqual(self.legacy_receiver.name, _expected_results['name'])
++ self.assertEqual(self.legacy_receiver.condition, _expected_results['conditions'])
++ self.assertEqual(len(self.legacy_receiver.messages), len(_expected_results['messages']))
+ for index, message in enumerate(self.legacy_receiver.messages):
+ self.check_message(message, _expected_results['messages'][index])
+
+- self.assertEquals(self.superclass_receiver.name, _expected_superclass_results['name'])
+- self.assertEquals(self.superclass_receiver.superclass, _expected_superclass_results['superclass'])
+- self.assertEquals(len(self.superclass_receiver.messages), len(_expected_superclass_results['messages']))
++ self.assertEqual(self.superclass_receiver.name, _expected_superclass_results['name'])
++ self.assertEqual(self.superclass_receiver.superclass, _expected_superclass_results['superclass'])
++ self.assertEqual(len(self.superclass_receiver.messages), len(_expected_superclass_results['messages']))
+ for index, message in enumerate(self.superclass_receiver.messages):
+ self.check_message(message, _expected_superclass_results['messages'][index])
+
+@@ -309,9 +309,9 @@ class GeneratedFileContentsTest(unittest.TestCase):
+ expected_line_list = expected_file_contents.splitlines(False)
+
+ for index, actual_line in enumerate(actual_line_list):
+- self.assertEquals(actual_line, expected_line_list[index])
++ self.assertEqual(actual_line, expected_line_list[index])
+
+- self.assertEquals(len(actual_line_list), len(expected_line_list))
++ self.assertEqual(len(actual_line_list), len(expected_line_list))
+
+ def assertHeaderEqual(self, input_messages_file_contents, expected_file_name):
+ actual_file_contents = messages.generate_messages_header(StringIO(input_messages_file_contents))
+@@ -344,11 +344,11 @@ class ReceiverImplementationTest(GeneratedFileContentsTest):
+
+ class UnsupportedPrecompilerDirectiveTest(unittest.TestCase):
+ def test_error_at_else(self):
+- with self.assertRaisesRegexp(Exception, r"ERROR: '#else.*' is not supported in the \*\.in files"):
++ with self.assertRaisesRegex(Exception, r"ERROR: '#else.*' is not supported in the \*\.in files"):
+ messages.generate_message_handler(StringIO("asd\n#else bla\nfoo"))
+
+ def test_error_at_elif(self):
+- with self.assertRaisesRegexp(Exception, r"ERROR: '#elif.*' is not supported in the \*\.in files"):
++ with self.assertRaisesRegex(Exception, r"ERROR: '#elif.*' is not supported in the \*\.in files"):
+ messages.generate_message_handler(StringIO("asd\n#elif bla\nfoo"))
+
+
+diff --git a/Source/cmake/WebKitCommon.cmake b/Source/cmake/WebKitCommon.cmake
+index de4ac8f65..1ba7b58ea 100644
+--- a/Source/cmake/WebKitCommon.cmake
++++ b/Source/cmake/WebKitCommon.cmake
+@@ -25,9 +25,6 @@ if (NOT HAS_RUN_WEBKIT_COMMON)
+ find_package(Perl 5.10.0 REQUIRED)
+
+ find_package(PythonInterp 2.7.0 REQUIRED)
+- if (PYTHON_VERSION_MAJOR GREATER 2)
+- message(FATAL_ERROR "Python 2 is required, but Python ${PYTHON_VERSION_MAJOR} was found.")
+- endif ()
+
+ # We cannot check for RUBY_FOUND because it is set only when the full package is installed and
+ # the only thing we need is the interpreter. Unlike Python, cmake does not provide a macro
+diff --git a/Tools/jhbuild/jhbuildutils.py b/Tools/jhbuild/jhbuildutils.py
+index c00160e7e..f4edc29a2 100644
+--- a/Tools/jhbuild/jhbuildutils.py
++++ b/Tools/jhbuild/jhbuildutils.py
+@@ -1,7 +1,7 @@
+ import glob
+ import os.path
+ import sys
+-import __builtin__
++import builtins
+
+ top_level_dir = None
+
+@@ -35,9 +35,9 @@ def enter_jhbuild_environment_if_available(platform):
+ sys.path.insert(0, source_path)
+
+ # When loading jhbuild from the source checkout it fails if the SRCDIR, PKGDATADIR or DATADIR aren't present.
+- __builtin__.__dict__['SRCDIR'] = source_path
+- __builtin__.__dict__['PKGDATADIR'] = None
+- __builtin__.__dict__['DATADIR'] = None
++ builtins.__dict__['SRCDIR'] = source_path
++ builtins.__dict__['PKGDATADIR'] = None
++ builtins.__dict__['DATADIR'] = None
+
+ # We don't know the Python version, so we just assume that we can safely take the first one in the list.
+ site_packages_path = glob.glob(os.path.join(get_dependencies_path(platform), "Root", "lib", "*", "site-packages"))
+@@ -49,7 +49,7 @@ def enter_jhbuild_environment_if_available(platform):
+ import jhbuild.config
+ from jhbuild.errors import FatalError
+ config = jhbuild.config.Config(get_config_file_for_platform(platform), [])
+- except FatalError, exception:
++ except FatalError as exception:
+ sys.stderr.write('Could not load jhbuild config file: %s\n' % exception.args[0])
+ return False
+
+--
+2.21.0
+
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebkit/0001-Do-not-skip-build-for-cross-compile.patch b/external/meta-qt5/recipes-qt/qt5/qtwebkit/0002-Do-not-skip-build-for-cross-compile.patch
index 4b2b2759..a237d03d 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebkit/0001-Do-not-skip-build-for-cross-compile.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebkit/0002-Do-not-skip-build-for-cross-compile.patch
@@ -1,4 +1,4 @@
-From 1a4e33ac630b0e4f285e238479900f0e10c6d15f Mon Sep 17 00:00:00 2001
+From 34018c2a61045c58f88e09a12ecd62533aa2c2f1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
Date: Mon, 4 Jun 2018 10:35:46 +0200
Subject: [PATCH] Do not skip build for cross-compile
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebkit/0002-Fix-build-with-non-glibc-libc-on-musl.patch b/external/meta-qt5/recipes-qt/qt5/qtwebkit/0003-Fix-build-with-non-glibc-libc-on-musl.patch
index dead46d1..bf79b363 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebkit/0002-Fix-build-with-non-glibc-libc-on-musl.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebkit/0003-Fix-build-with-non-glibc-libc-on-musl.patch
@@ -1,4 +1,4 @@
-From 9db9a8850602c2446b1a7ee96608fd74cf56a342 Mon Sep 17 00:00:00 2001
+From c4ceb318aa1064bfa677cdd800c52155eb1bed3a Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 23 Aug 2018 04:06:17 +0000
Subject: [PATCH] Fix build with non-glibc libc on musl
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebkit/0004-Fix-build-bug-for-armv32-BE.patch b/external/meta-qt5/recipes-qt/qt5/qtwebkit/0004-Fix-build-bug-for-armv32-BE.patch
index 23fed74f..ffd8da0f 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebkit/0004-Fix-build-bug-for-armv32-BE.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebkit/0004-Fix-build-bug-for-armv32-BE.patch
@@ -1,4 +1,4 @@
-From 5aa039af074c20bea1398f7f18712dc494a5f138 Mon Sep 17 00:00:00 2001
+From f6576377f8bf2c854d8079b7f309f570b3d2bde4 Mon Sep 17 00:00:00 2001
From: Lei Maohui <leimaohui@cn.fujitsu.com>
Date: Fri, 31 Aug 2018 15:42:48 +0900
Subject: [PATCH] Fix build bug for armv32 BE.
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebkit/0001-PlatformQt.cmake-Do-not-generate-hardcoded-include-p.patch b/external/meta-qt5/recipes-qt/qt5/qtwebkit/0005-PlatformQt.cmake-Do-not-generate-hardcoded-include-p.patch
index 8c718b47..14cb8aa4 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebkit/0001-PlatformQt.cmake-Do-not-generate-hardcoded-include-p.patch
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebkit/0005-PlatformQt.cmake-Do-not-generate-hardcoded-include-p.patch
@@ -1,4 +1,4 @@
-From c00c61a42f9076aecad195b7f72b7db9b3601181 Mon Sep 17 00:00:00 2001
+From 83aa5b3265d7c9f64e754cb890988cf8a5669ce7 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 24 Sep 2018 02:11:10 -0700
Subject: [PATCH] PlatformQt.cmake: Do not generate hardcoded include paths
@@ -14,10 +14,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Source/WebKit/PlatformQt.cmake b/Source/WebKit/PlatformQt.cmake
-index 3792def6f..b6cb36bb1 100644
+index 9aed9906e..48638aef4 100644
--- a/Source/WebKit/PlatformQt.cmake
+++ b/Source/WebKit/PlatformQt.cmake
-@@ -510,7 +510,7 @@ if (NOT MACOS_BUILD_FRAMEWORKS)
+@@ -512,7 +512,7 @@ if (NOT MACOS_BUILD_FRAMEWORKS)
install(FILES ${WebKit_PKGCONFIG_FILENAME} DESTINATION ${ECM_PKGCONFIG_INSTALL_DIR} COMPONENT Data)
endif ()
@@ -26,7 +26,7 @@ index 3792def6f..b6cb36bb1 100644
set(WebKit_PRI_ARGUMENTS
BIN_INSTALL_DIR "$$QT_MODULE_BIN_BASE"
LIB_INSTALL_DIR "$$QT_MODULE_LIB_BASE"
-@@ -734,7 +734,7 @@ if (NOT MACOS_BUILD_FRAMEWORKS)
+@@ -737,7 +737,7 @@ if (NOT MACOS_BUILD_FRAMEWORKS)
install(FILES ${WebKitWidgets_PKGCONFIG_FILENAME} DESTINATION ${ECM_PKGCONFIG_INSTALL_DIR} COMPONENT Data)
endif ()
@@ -35,6 +35,3 @@ index 3792def6f..b6cb36bb1 100644
set(WebKitWidgets_PRI_ARGUMENTS
BIN_INSTALL_DIR "$$QT_MODULE_BIN_BASE"
LIB_INSTALL_DIR "$$QT_MODULE_LIB_BASE"
---
-2.19.0
-
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebkit_git.bb b/external/meta-qt5/recipes-qt/qt5/qtwebkit_git.bb
index bd0c6aeb..4655d9fd 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebkit_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebkit_git.bb
@@ -7,18 +7,21 @@ LIC_FILES_CHKSUM = " \
file://Source/JavaScriptCore/parser/Parser.h;endline=21;md5=bd69f72183a7af673863f057576e21ee \
"
-DEPENDS += "qtbase qtdeclarative icu ruby-native sqlite3 glib-2.0 libxslt gperf-native bison-native"
+DEPENDS += "qtbase qtdeclarative icu ruby-native sqlite3 glib-2.0 libxslt gperf-native bison-native flex-native"
-# Patches from https://github.com/meta-qt5/qtwebkit/commits/b5.11
-# 5.11.meta-qt5.2
+# Patches from https://github.com/meta-qt5/qtwebkit/commits/b5.13
+# 5.13.meta-qt5.1
SRC_URI += "\
- file://0001-Do-not-skip-build-for-cross-compile.patch \
- file://0002-Fix-build-with-non-glibc-libc-on-musl.patch \
+ file://0001-Port-build-to-python3.patch \
+ file://0002-Do-not-skip-build-for-cross-compile.patch \
+ file://0003-Fix-build-with-non-glibc-libc-on-musl.patch \
file://0004-Fix-build-bug-for-armv32-BE.patch \
- file://0001-PlatformQt.cmake-Do-not-generate-hardcoded-include-p.patch \
+ file://0005-PlatformQt.cmake-Do-not-generate-hardcoded-include-p.patch \
"
-inherit cmake_qt5 perlnative pythonnative
+inherit cmake_qt5 perlnative
+
+inherit python3native
# qemuarm build fails with:
# | {standard input}: Assembler messages:
@@ -45,10 +48,19 @@ EXTRA_OECMAKE += " \
-DCROSS_COMPILE=ON \
-DECM_MKSPECS_INSTALL_DIR=${libdir}${QT_DIR_NAME}/mkspecs/modules \
-DQML_INSTALL_DIR=${OE_QMAKE_PATH_QML} \
+ -DPYTHON_EXECUTABLE=`which python3` \
"
EXTRA_OECMAKE_append_toolchain-clang = " -DCMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES:PATH='${STAGING_INCDIR}'"
+# JIT not supported on MIPS/PPC
+EXTRA_OECMAKE_append_mipsarch = " -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON "
+EXTRA_OECMAKE_append_powerpc = " -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON "
+# Disable gold on mips64/clang
+# mips64-yoe-linux-musl-ld.gold: internal error in get_got_page_offset, at ../../gold/mips.cc:6260
+# mips-yoe-linux-musl-ld.gold: error: Can't find matching LO16 reloc
+EXTRA_OECMAKE_append_toolchain-clang_mipsarch = " -DUSE_LD_GOLD=OFF "
+
PACKAGECONFIG ??= "qtlocation qtmultimedia qtsensors qtwebchannel \
${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} \
fontconfig \
@@ -71,4 +83,4 @@ PACKAGES_remove = "${PN}-examples"
QT_MODULE_BRANCH = "dev"
-SRCREV = "beaeeb99881184fd368c121fcbb1a31c78b794a3"
+SRCREV = "ab1bd15209abaf7effc51dbc2f272c5681af7223"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebsockets_git.bb b/external/meta-qt5/recipes-qt/qt5/qtwebsockets_git.bb
index f5dcfb05..0f9107c8 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebsockets_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebsockets_git.bb
@@ -11,4 +11,4 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtbase qtdeclarative"
-SRCREV = "395c1f1aed90f740f079d8f980c93f459b44733a"
+SRCREV = "13c3b3edc5ce65ae65d7ed13cd4484a26fc74188"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtwebview_git.bb b/external/meta-qt5/recipes-qt/qt5/qtwebview_git.bb
index 10d5f13f..f08c6ae1 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtwebview_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtwebview_git.bb
@@ -19,4 +19,9 @@ COMPATIBLE_MACHINE_armv7a = "(.*)"
COMPATIBLE_MACHINE_armv7ve = "(.*)"
COMPATIBLE_MACHINE_aarch64 = "(.*)"
-SRCREV = "779bf9c3f24365df3f681a029cafd78c7991e929"
+SRCREV = "9f479ce719c03035d93323322e646dca79b9dc39"
+
+python() {
+ if 'meta-python2' not in d.getVar('BBFILE_COLLECTIONS').split():
+ raise bb.parse.SkipRecipe('Requires meta-python2 to be present.')
+}
diff --git a/external/meta-qt5/recipes-qt/qt5/qtx11extras_git.bb b/external/meta-qt5/recipes-qt/qt5/qtx11extras_git.bb
index f768f75b..a427e589 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtx11extras_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtx11extras_git.bb
@@ -12,4 +12,4 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtbase"
-SRCREV = "877c585bc474934e3bb1044293a62c72cb01b9cf"
+SRCREV = "fbed3bc300461823960cfbcb2e1efa80da083b28"
diff --git a/external/meta-qt5/recipes-qt/qt5/qtxmlpatterns_git.bb b/external/meta-qt5/recipes-qt/qt5/qtxmlpatterns_git.bb
index e562bd1c..b8bc6c84 100644
--- a/external/meta-qt5/recipes-qt/qt5/qtxmlpatterns_git.bb
+++ b/external/meta-qt5/recipes-qt/qt5/qtxmlpatterns_git.bb
@@ -14,7 +14,17 @@ LIC_FILES_CHKSUM = " \
DEPENDS += "qtbase"
-SRCREV = "657995db766faa48084024e780c4cd02fa05c527"
+PACKAGECONFIG ?= ""
+PACKAGECONFIG_class-target ?= "qtdeclarative"
+PACKAGECONFIG[qtdeclarative] = ",,qtdeclarative"
-BBCLASSEXTEND =+ "native nativesdk"
+do_configure_prepend() {
+ # disable qtdeclarative test if it isn't enabled by PACKAGECONFIG
+ sed -e 's/qtHaveModule(qml)/OE_QTDECLARATIVE_ENABLED/' -i ${S}/src/src.pro
+}
+
+EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('PACKAGECONFIG', 'qtdeclarative', 'CONFIG+=OE_QTDECLARATIVE_ENABLED', '', d)}"
+SRCREV = "45bf71199c6a5f3c070cad52435ac203c6cd480a"
+
+BBCLASSEXTEND =+ "native nativesdk"
diff --git a/external/meta-qt5/recipes-qt/quazip/quazip/0001-Append-LIB_ARCH-to-lib.patch b/external/meta-qt5/recipes-qt/quazip/quazip/0001-Append-LIB_ARCH-to-lib.patch
new file mode 100644
index 00000000..ca281b75
--- /dev/null
+++ b/external/meta-qt5/recipes-qt/quazip/quazip/0001-Append-LIB_ARCH-to-lib.patch
@@ -0,0 +1,31 @@
+From 7bcf47c1d9ca5eb27da088f93387e42b55d6999c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 13:22:38 -0800
+Subject: [PATCH] Append LIB_ARCH to lib
+
+Creating subdir under lib is not expected in OE, instead it should be
+appending to lib so it becomes lib64 when needed and LIB_ARCH can be set
+in evnironment
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ quazip/quazip.pro | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/quazip/quazip.pro b/quazip/quazip.pro
+index 3e10f36..1ea073e 100644
+--- a/quazip/quazip.pro
++++ b/quazip/quazip.pro
+@@ -42,7 +42,7 @@ CONFIG(debug, debug|release) {
+ unix:!symbian {
+ headers.path=$$PREFIX/include/quazip
+ headers.files=$$HEADERS
+- target.path=$$PREFIX/lib/$${LIB_ARCH}
++ target.path=$$PREFIX/lib$${LIB_ARCH}
+ INSTALLS += headers target
+
+ OBJECTS_DIR=.obj
+--
+2.24.1
+
diff --git a/external/meta-qt5/recipes-qt/quazip/quazip_0.7.3.bb b/external/meta-qt5/recipes-qt/quazip/quazip_0.7.3.bb
index 970204e5..b483ced8 100644
--- a/external/meta-qt5/recipes-qt/quazip/quazip_0.7.3.bb
+++ b/external/meta-qt5/recipes-qt/quazip/quazip_0.7.3.bb
@@ -5,11 +5,13 @@ LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=910d778aab53617cbaf13c4e1810e289"
DEPENDS = "qtbase"
-SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.gz"
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.gz \
+ file://0001-Append-LIB_ARCH-to-lib.patch \
+ "
SRC_URI[md5sum] = "2ba7dd8b1d6dd588374c9fab5c46e76e"
SRC_URI[sha256sum] = "2ad4f354746e8260d46036cde1496c223ec79765041ea28eb920ced015e269b5"
inherit qmake5
-EXTRA_QMAKEVARS_PRE += "PREFIX=${prefix}"
+EXTRA_QMAKEVARS_PRE += "PREFIX=${prefix} LIB_ARCH=${@d.getVar('baselib').replace('lib', '')}"
EXTRA_QMAKEVARS_POST += "SUBDIRS=${BPN}"
diff --git a/external/meta-qt5/recipes-qt/qwt/qwt-qt5_6.1.3.bb b/external/meta-qt5/recipes-qt/qwt/qwt-qt5_6.1.4.bb
index 49f4f9e5..623b45e5 100644
--- a/external/meta-qt5/recipes-qt/qwt/qwt-qt5_6.1.3.bb
+++ b/external/meta-qt5/recipes-qt/qwt/qwt-qt5_6.1.4.bb
@@ -8,14 +8,17 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=dac2743472b0462ff3cfb4af42051c88"
DEPENDS = "qtbase qtsvg qttools"
+COMPATIBLE_HOST_toolchain-clang_riscv32 = "null"
+COMPATIBLE_HOST_toolchain-clang_riscv64 = "null"
+
inherit qmake5
SRC_URI = " \
${SOURCEFORGE_MIRROR}/qwt/qwt-${PV}.tar.bz2;name=qwt \
file://0001-Remove-rpath-from-binaries-they-point-to-buuild-area.patch \
"
-SRC_URI[qwt.md5sum] = "19d1f5fa5e22054d22ee3accc37c54ba"
-SRC_URI[qwt.sha256sum] = "f3ecd34e72a9a2b08422fb6c8e909ca76f4ce5fa77acad7a2883b701f4309733"
+SRC_URI[qwt.md5sum] = "4fb1852f694420e3ab9c583526edecc5"
+SRC_URI[qwt.sha256sum] = "1529215329e51fc562e0009505a838f427919a18b362afff441f035b2d9b5bd9"
S = "${WORKDIR}/qwt-${PV}"
@@ -25,7 +28,11 @@ EXTRA_QMAKEVARS_PRE += " \
"
do_configure_prepend() {
- sed -i 's:/usr/local/qwt-$$QWT_VERSION:${prefix}:' ${S}/*.pri
+ sed -i \
+ -e 's:/usr/local/qwt-$$QWT_VERSION:${prefix}:' \
+ -e 's:^QWT_INSTALL_LIBS.*:QWT_INSTALL_LIBS = ${libdir}:' \
+ ${S}/*.pri
+ export QWT_INSTALL_LIBS=${libdir}
}
do_install_append() {