diff --git a/gnu/local.mk b/gnu/local.mk
index 1aa413ebbe..3741cb9cd5 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1951,10 +1951,13 @@ dist_patch_DATA =						\
   %D%/packages/patches/qemu-fix-agent-paths.patch 		\
   %D%/packages/patches/qrcodegen-cpp-make-install.patch		\
   %D%/packages/patches/qtbase-absolute-runpath.patch		\
+  %D%/packages/patches/qtbase-find-tools-in-PATH.patch		\
+  %D%/packages/patches/qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch \
+  %D%/packages/patches/qtbase-qmake-fix-includedir-in-generated-pkg-config.patch \
+  %D%/packages/patches/qtbase-check-in-the-QML-folder-of-this-library-does-.patch \
   %D%/packages/patches/qtbase-moc-ignore-gcc-macro.patch	\
   %D%/packages/patches/qtbase-qmake-use-libname.patch		\
   %D%/packages/patches/qtbase-5-use-TZDIR.patch			\
-  %D%/packages/patches/qtbase-use-TZDIR.patch			\
   %D%/packages/patches/qtscript-disable-tests.patch		\
   %D%/packages/patches/quagga-reproducible-build.patch          \
   %D%/packages/patches/quickswitch-fix-dmenu-check.patch	\
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index 698f15678b..50d4b332ee 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -192,7 +192,7 @@ (define-public gcompris-qt
            qtgraphicaleffects
            qtmultimedia-5
            qtquickcontrols2-5
-           qtsensors
+           qtsensors-5
            qtsvg-5))
     (home-page "https://gcompris.net/index-en.html")
     (synopsis "Educational games for small children")
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 9ff08e5e74..fdc2d53a77 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -10475,7 +10475,7 @@ (define-public chessx
     (native-inputs
      (list qttools-5))
     (inputs
-     (list qtbase-5 qtmultimedia-5 qtspeech qtsvg-5 zlib))
+     (list qtbase-5 qtmultimedia-5 qtspeech-5 qtsvg-5 zlib))
     (arguments
      `(#:tests? #f
        #:phases
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 687effcace..63e66afdb8 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -2575,7 +2575,7 @@ (define-public openorienteering-mapper
            qtbase-5
            qtimageformats-5
            qtlocation
-           qtsensors
+           qtsensors-5
            zlib))
     (native-inputs
      (list doxygen
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 64e41b510d..227f9a28b1 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -3249,7 +3249,7 @@ (define-public ktextwidgets
            kwidgetsaddons
            kwindowsystem
            qtbase-5
-           qtspeech))
+           qtspeech-5))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Text editing widgets")
     (description "KTextWidgets provides widgets for displaying and editing text.
diff --git a/gnu/packages/kde-pim.scm b/gnu/packages/kde-pim.scm
index e95eac4e2f..9a1c0b8d8e 100644
--- a/gnu/packages/kde-pim.scm
+++ b/gnu/packages/kde-pim.scm
@@ -848,7 +848,7 @@ (define-public kdepim-runtime
            qtdeclarative-5
            qtkeychain
            qtnetworkauth-5
-           qtspeech
+           qtspeech-5
            qtwebchannel-5
            qtwebengine-5
            qtxmlpatterns))
@@ -1993,7 +1993,7 @@ (define-public kpimtextedit
            kwidgetsaddons
            kxmlgui
            qtbase-5
-           qtspeech
+           qtspeech-5
            sonnet))
     (arguments
      `(#:tests? #f)) ;; TODO - test suite hangs
diff --git a/gnu/packages/kde-plasma.scm b/gnu/packages/kde-plasma.scm
index cf45fa59f7..1d41d35a56 100644
--- a/gnu/packages/kde-plasma.scm
+++ b/gnu/packages/kde-plasma.scm
@@ -793,7 +793,7 @@ (define-public kscreen
                   libkscreen
                   libxi
                   plasma-wayland-protocols
-                  qtsensors
+                  qtsensors-5
                   qtbase-5
                   qtx11extras
                   xcb-util))
diff --git a/gnu/packages/kde-utils.scm b/gnu/packages/kde-utils.scm
index 4e665da599..6c6a669597 100644
--- a/gnu/packages/kde-utils.scm
+++ b/gnu/packages/kde-utils.scm
@@ -874,7 +874,7 @@ (define-public kmouth
            kxmlgui
            breeze-icons ;; default icon set
            qtbase-5
-           qtspeech))
+           qtspeech-5))
     (home-page "https://apps.kde.org/kmouth/")
     (synopsis "Type-and-say frontend for speech synthesizers")
     (description "KMouth is a program which enables persons that cannot speak
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 8e8bb32fda..385bb42926 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -1557,7 +1557,7 @@ (define-public okular
            kio
            kparts
            kpty
-           qtspeech
+           qtspeech-5
            kwallet
            kwindowsystem
            libkexiv2
diff --git a/gnu/packages/patches/qtbase-check-in-the-QML-folder-of-this-library-does-.patch b/gnu/packages/patches/qtbase-check-in-the-QML-folder-of-this-library-does-.patch
new file mode 100644
index 0000000000..ed749cb238
--- /dev/null
+++ b/gnu/packages/patches/qtbase-check-in-the-QML-folder-of-this-library-does-.patch
@@ -0,0 +1,35 @@
+From c00e310092d9aeb48adf21dd22f1ee4dbdbf5ebb Mon Sep 17 00:00:00 2001
+From: Nick Cao <nickcao@nichi.co>
+Date: Tue, 10 Oct 2023 10:17:00 -0400
+Subject: [PATCH 10/11] qtbase: check in the QML folder of this library does
+ actually exist
+
+In a modularized installation, this folder will be the location where
+`qtbase` itself is installed, but `qtbase` does not have any QML
+code, and `qmlimportscanner` will complain that it does not exist.
+---
+ src/tools/macdeployqt/shared/shared.cpp | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/src/tools/macdeployqt/shared/shared.cpp b/src/tools/macdeployqt/shared/shared.cpp
+index 320095a972d..87ba0d4e24b 100644
+--- a/src/tools/macdeployqt/shared/shared.cpp
++++ b/src/tools/macdeployqt/shared/shared.cpp
+@@ -1297,9 +1297,12 @@ bool deployQmlImports(const QString &appBundlePath, DeploymentInfo deploymentInf
+     }
+     for (const QString &importPath : qmlImportPaths)
+         argumentList << "-importPath" << importPath;
++
+     QString qmlImportsPath = QLibraryInfo::path(QLibraryInfo::QmlImportsPath);
+-    argumentList.append( "-importPath");
+-    argumentList.append(qmlImportsPath);
++    if (QFile::exists(qmlImportsPath)) {
++        argumentList.append( "-importPath");
++        argumentList.append(qmlImportsPath);
++    }
+ 
+     // In a modularized installation of qt as we have in Nix, instead, we will
+     // read the paths from the environment, as they are spread in multiple
+-- 
+2.42.0
+
diff --git a/gnu/packages/patches/qtbase-find-tools-in-PATH.patch b/gnu/packages/patches/qtbase-find-tools-in-PATH.patch
new file mode 100644
index 0000000000..1d60684e07
--- /dev/null
+++ b/gnu/packages/patches/qtbase-find-tools-in-PATH.patch
@@ -0,0 +1,45 @@
+From a8b9fae710a2bd5e743f5e16364eaa8c38dbd784 Mon Sep 17 00:00:00 2001
+From: rewine <luhongxu@deepin.org>
+Date: Wed, 29 Mar 2023 11:51:33 +0800
+Subject: [PATCH 06/11] qtbase-find-tools-in-PATH
+
+1. find qt's tools in `QTTOOLSPATH` env
+   qt assumes that all components use the same install prefix
+   we can't get the real prefix for qttools when build qtbase
+   we will add /libexec to `QTTOOLSPATH` in qtToolsHook
+   find_path will also search in 'PATH' by default
+   see `CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`
+
+2. disable tool_dependencies_enabled
+   We can guarantee the build order of qt components in nixpkgs
+   tools in qttools always build before qtdoc
+   qdoc_bin is not a build target now, since we find it in `QTTOOLSPATH`
+---
+ cmake/QtDocsHelpers.cmake | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/cmake/QtDocsHelpers.cmake b/cmake/QtDocsHelpers.cmake
+index 48ed5a324bf..91d8d41fb1f 100644
+--- a/cmake/QtDocsHelpers.cmake
++++ b/cmake/QtDocsHelpers.cmake
+@@ -47,9 +47,14 @@ function(qt_internal_add_docs)
+         set(doc_tools_libexec "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}/${INSTALL_LIBEXECDIR}")
+     endif()
+ 
+-    set(qdoc_bin "${doc_tools_bin}/qdoc${CMAKE_EXECUTABLE_SUFFIX}")
+-    set(qtattributionsscanner_bin "${doc_tools_libexec}/qtattributionsscanner${CMAKE_EXECUTABLE_SUFFIX}")
+-    set(qhelpgenerator_bin "${doc_tools_libexec}/qhelpgenerator${CMAKE_EXECUTABLE_SUFFIX}")
++    set(tool_dependencies_enabled FALSE)
++
++    find_path(qdoc_path name qdoc PATHS ENV QTTOOLSPATH)
++    find_path(qtattributionsscanner_path name qtattributionsscanner PATHS ENV QTTOOLSPATH)
++    find_path(qhelpgenerator_path name qhelpgenerator PATHS ENV QTTOOLSPATH)
++    set(qdoc_bin "${qdoc_path}/qdoc${CMAKE_EXECUTABLE_SUFFIX}")
++    set(qtattributionsscanner_bin "${qtattributionsscanner_path}/qtattributionsscanner${CMAKE_EXECUTABLE_SUFFIX}")
++    set(qhelpgenerator_bin "${qhelpgenerator_path}/qhelpgenerator${CMAKE_EXECUTABLE_SUFFIX}")
+ 
+     get_target_property(target_type ${target} TYPE)
+     if (NOT target_type STREQUAL "INTERFACE_LIBRARY")
+-- 
+2.42.0
+
diff --git a/gnu/packages/patches/qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch b/gnu/packages/patches/qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch
new file mode 100644
index 0000000000..7bf2193bc2
--- /dev/null
+++ b/gnu/packages/patches/qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch
@@ -0,0 +1,30 @@
+From d7a9a3b0ecdbb1b5829f25954d763d767f1c8794 Mon Sep 17 00:00:00 2001
+From: Nick Cao <nickcao@nichi.co>
+Date: Tue, 10 Oct 2023 10:12:56 -0400
+Subject: [PATCH 07/11] qtbase: pass to qmlimportscanner the QML2_IMPORT_PATH
+
+---
+ src/tools/macdeployqt/shared/shared.cpp | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/src/tools/macdeployqt/shared/shared.cpp b/src/tools/macdeployqt/shared/shared.cpp
+index 2ae4f998944..ba10ae02bcd 100644
+--- a/src/tools/macdeployqt/shared/shared.cpp
++++ b/src/tools/macdeployqt/shared/shared.cpp
+@@ -1297,6 +1297,13 @@ bool deployQmlImports(const QString &appBundlePath, DeploymentInfo deploymentInf
+     argumentList.append( "-importPath");
+     argumentList.append(qmlImportsPath);
+ 
++    // In a modularized installation of qt as we have in Nix, instead, we will
++    // read the paths from the environment, as they are spread in multiple
++    // locations and normally set in the environment like this
++    auto envQmlImportPaths = ::qgetenv("QML2_IMPORT_PATH").split(':');
++    for (const QString &importPath : envQmlImportPaths)
++        argumentList << "-importPath" << importPath;
++
+     // run qmlimportscanner
+     QProcess qmlImportScanner;
+     qmlImportScanner.start(qmlImportScannerPath, argumentList);
+-- 
+2.42.0
+
diff --git a/gnu/packages/patches/qtbase-qmake-fix-includedir-in-generated-pkg-config.patch b/gnu/packages/patches/qtbase-qmake-fix-includedir-in-generated-pkg-config.patch
new file mode 100644
index 0000000000..53f226254a
--- /dev/null
+++ b/gnu/packages/patches/qtbase-qmake-fix-includedir-in-generated-pkg-config.patch
@@ -0,0 +1,26 @@
+From 6088085d3074316dd74639fc6c1233e5862aff11 Mon Sep 17 00:00:00 2001
+From: Nick Cao <nickcao@nichi.co>
+Date: Fri, 14 Apr 2023 09:34:46 +0800
+Subject: [PATCH 03/11] qtbase: qmake: fix includedir in generated pkg-config
+
+---
+ qmake/generators/makefile.cpp | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
+index 11d2f0ff7df..c78ed0d3485 100644
+--- a/qmake/generators/makefile.cpp
++++ b/qmake/generators/makefile.cpp
+@@ -3412,8 +3412,7 @@ MakefileGenerator::writePkgConfigFile()
+       << varGlue("QMAKE_PKGCONFIG_CFLAGS", "", " ", " ")
+         //      << varGlue("DEFINES","-D"," -D"," ")
+          ;
+-    if (!project->values("QMAKE_DEFAULT_INCDIRS").contains(includeDir))
+-        t << "-I${includedir}";
++    t << "-I${includedir}";
+     if (target_mode == TARG_MAC_MODE && project->isActiveConfig("lib_bundle")
+         && libDir != QLatin1String("/Library/Frameworks")) {
+             t << " -F${libdir}";
+-- 
+2.42.0
+
diff --git a/gnu/packages/patches/qtbase-use-TZDIR.patch b/gnu/packages/patches/qtbase-use-TZDIR.patch
deleted file mode 100644
index 98bf7493e9..0000000000
--- a/gnu/packages/patches/qtbase-use-TZDIR.patch
+++ /dev/null
@@ -1,141 +0,0 @@
-From 1075606f8b2f9e153c82f8e50cbd69cea9c72e87 Mon Sep 17 00:00:00 2001
-From: Edward Welbourne <edward.welbourne@qt.io>
-Date: Mon, 11 Sep 2023 11:41:39 +0200
-Subject: [PATCH] Support the TZDIR environment variable
-
-On Linux / glibc, this overrides the default system location for the
-zone info. So check for files there first. Break out a function to
-manage the trying of (now three) zoneinfo directories when opening a
-file by name relative to there.
-
-Pick-to: 6.6 6.5
-Task-number: QTBUG-116017
-Change-Id: I1f97107aabd9015c0a5543639870f1d70654ca67
----
-* Rebased on top of v6.5.2.
-
- src/corelib/time/qtimezoneprivate_tz.cpp | 73 ++++++++++++++++--------
- 1 file changed, 49 insertions(+), 24 deletions(-)
-
-diff --git a/src/corelib/time/qtimezoneprivate_tz.cpp b/src/corelib/time/qtimezoneprivate_tz.cpp
-index 067191d816..a8b2fc894e 100644
---- a/src/corelib/time/qtimezoneprivate_tz.cpp
-+++ b/src/corelib/time/qtimezoneprivate_tz.cpp
-@@ -51,17 +51,41 @@ typedef QHash<QByteArray, QTzTimeZone> QTzTimeZoneHash;
- 
- static bool isTzFile(const QString &name);
- 
-+// Open a named file under the zone info directory:
-+static bool openZoneInfo(QString name, QFile *file)
-+{
-+    // At least on Linux / glibc (see man 3 tzset), $TZDIR overrides the system
-+    // default location for zone info:
-+    const QString tzdir = qEnvironmentVariable("TZDIR");
-+    if (!tzdir.isEmpty()) {
-+        file->setFileName(QDir(tzdir).filePath(name));
-+        if (file->open(QIODevice::ReadOnly))
-+            return true;
-+    }
-+    // Try modern system path first:
-+    constexpr auto zoneShare = "/usr/share/zoneinfo/"_L1;
-+    if (tzdir != zoneShare && tzdir != zoneShare.chopped(1)) {
-+        file->setFileName(zoneShare + name);
-+        if (file->open(QIODevice::ReadOnly))
-+            return true;
-+    }
-+    // Fall back to legacy system path:
-+    constexpr auto zoneLib = "/usr/lib/zoneinfo/"_L1;
-+    if (tzdir != zoneLib && tzdir != zoneLib.chopped(1)) {
-+        file->setFileName(zoneShare + name);
-+        if (file->open(QIODevice::ReadOnly))
-+            return true;
-+    }
-+    return false;
-+}
-+
- // Parse zone.tab table for territory information, read directories to ensure we
- // find all installed zones (many are omitted from zone.tab; even more from
- // zone1970.tab).
- static QTzTimeZoneHash loadTzTimeZones()
- {
--    QString path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
--    if (!QFile::exists(path))
--        path = QStringLiteral("/usr/lib/zoneinfo/zone.tab");
--
--    QFile tzif(path);
--    if (!tzif.open(QIODevice::ReadOnly))
-+    QFile tzif;
-+    if (!openZoneInfo("zone.tab"_L1, &tzif))
-         return QTzTimeZoneHash();
- 
-     QTzTimeZoneHash zonesHash;
-@@ -91,6 +115,7 @@ static QTzTimeZoneHash loadTzTimeZones()
-         }
-     }
- 
-+    const QString path = tzif.fileName();
-     const qsizetype cut = path.lastIndexOf(u'/');
-     Q_ASSERT(cut > 0);
-     const QDir zoneDir = QDir(path.first(cut));
-@@ -761,20 +786,13 @@ QTzTimeZoneCacheEntry QTzTimeZoneCache::findEntry(const QByteArray &ianaId)
-         tzif.setFileName(QStringLiteral("/etc/localtime"));
-         if (!tzif.open(QIODevice::ReadOnly))
-             return ret;
--    } else {
--        // Open named tz, try modern path first, if fails try legacy path
--        tzif.setFileName("/usr/share/zoneinfo/"_L1 + QString::fromLocal8Bit(ianaId));
--        if (!tzif.open(QIODevice::ReadOnly)) {
--            tzif.setFileName("/usr/lib/zoneinfo/"_L1 + QString::fromLocal8Bit(ianaId));
--            if (!tzif.open(QIODevice::ReadOnly)) {
--                // ianaId may be a POSIX rule, taken from $TZ or /etc/TZ
--                auto check = validatePosixRule(ianaId);
--                if (check.isValid) {
--                    ret.m_hasDst = check.hasDst;
--                    ret.m_posixRule = ianaId;
--                }
--                return ret;
--            }
-+    } else if (!openZoneInfo(QString::fromLocal8Bit(ianaId), &tzif)) {
-+        // ianaId may be a POSIX rule, taken from $TZ or /etc/TZ
-+        auto check = validatePosixRule(ianaId);
-+        if (check.isValid) {
-+            ret.m_hasDst = check.hasDst;
-+            ret.m_posixRule = ianaId;
-+            return ret;
-         }
-     }
- 
-@@ -1317,7 +1335,8 @@ private:
-     {
-         // On most distros /etc/localtime is a symlink to a real file so extract
-         // name from the path
--        const auto zoneinfo = "/zoneinfo/"_L1;
-+        const QString tzdir = qEnvironmentVariable("TZDIR");
-+        constexpr auto zoneinfo = "/zoneinfo/"_L1;
-         QString path = QStringLiteral("/etc/localtime");
-         long iteration = getSymloopMax();
-         // Symlink may point to another symlink etc. before being under zoneinfo/
-@@ -1325,9 +1344,15 @@ private:
-         // symlink, like America/Montreal pointing to America/Toronto
-         do {
-             path = QFile::symLinkTarget(path);
--            int index = path.indexOf(zoneinfo);
--            if (index >= 0) // Found zoneinfo file; extract zone name from path:
--                return QStringView{ path }.mid(index + zoneinfo.size()).toUtf8();
-+            // If it's a zoneinfo file, extract the zone name from its path:
-+            int index = tzdir.isEmpty() ? -1 : path.indexOf(tzdir);
-+            if (index >= 0) {
-+                const auto tail = QStringView{ path }.sliced(index + tzdir.size()).toUtf8();
-+                return tail.startsWith(u'/') ? tail.sliced(1) : tail;
-+            }
-+            index = path.indexOf(zoneinfo);
-+            if (index >= 0)
-+                return QStringView{ path }.sliced(index + zoneinfo.size()).toUtf8();
-         } while (!path.isEmpty() && --iteration > 0);
- 
-         return QByteArray();
-
-base-commit: af457a9f0f7eb1a2a7d11f495da508faab91a442
--- 
-2.41.0
-
diff --git a/gnu/packages/patches/qtdeclarative-disable-qmlcache.patch b/gnu/packages/patches/qtdeclarative-disable-qmlcache.patch
index 5f06ec53b4..df76fab910 100644
--- a/gnu/packages/patches/qtdeclarative-disable-qmlcache.patch
+++ b/gnu/packages/patches/qtdeclarative-disable-qmlcache.patch
@@ -1,16 +1,31 @@
 Retrieved from
 https://raw.githubusercontent.com/NixOS/nixpkgs/master/pkgs/development/libraries/qt-6/patches/qtdeclarative-default-disable-qmlcache.patch
 
+From 2d561e0a80f2d123a7348187975ee845f9dcd9e0 Mon Sep 17 00:00:00 2001
+From: Nick Cao <nickcao@nichi.co>
+Date: Tue, 10 Oct 2023 11:12:27 -0400
+Subject: [PATCH] qtdeclarative: disable qml disk cache
+
+---
+ src/qml/jsruntime/qv4engine.cpp | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
 diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp
-index 852cde9e..165f1b57 100644
+index d1b4c4fff6..50f8a07420 100644
 --- a/src/qml/jsruntime/qv4engine.cpp
 +++ b/src/qml/jsruntime/qv4engine.cpp
-@@ -2093,7 +2093,7 @@ void ExecutionEngine::registerModule(const QString &_name, const QJSValue &modul
- 
- bool ExecutionEngine::diskCacheEnabled() const
+@@ -2232,11 +2232,7 @@ ExecutionEngine::DiskCacheOptions ExecutionEngine::diskCacheOptions() const
  {
--    return (!disableDiskCache() && !debugger()) || forceDiskCache();
-+    return forceDiskCache();
+     if (forceDiskCache())
+         return DiskCache::Enabled;
+-    if (disableDiskCache() || debugger())
+-        return DiskCache::Disabled;
+-    static const DiskCacheOptions options = qmlGetConfigOption<
+-            DiskCacheOptions, transFormDiskCache>("QML_DISK_CACHE");
+-    return options;
++    return DiskCache::Disabled;
  }
  
  void ExecutionEngine::callInContext(QV4::Function *function, QObject *self,
+-- 
+2.42.0
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 9df49d7fb3..9e6131f585 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -28,7 +28,7 @@
 ;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
 ;;; Copyright © 2022 Yash Tiwari <yasht@mailbox.org>
 ;;; Copyright © 2023 Sharlatan Hellseher <sharlatanus@gmail.com>
-;;; Copyright © 2022 Zheng Junjie <873216071@qq.com>
+;;; Copyright © 2022, 2024 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2023 Herman Rimm <herman@rimm.ee>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -67,6 +67,7 @@ (define-module (gnu packages qt)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages crypto)
   #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
@@ -654,27 +655,28 @@ (define-public qtbase
   (package
     (inherit qtbase-5)
     (name "qtbase")
-    (version "6.5.2")
+    (version "6.6.2")
     (source (origin
               (inherit (package-source qtbase-5))
               (uri (qt-url name version))
               (sha256
                (base32
-                "0s8jwzdcv97dfy8n3jjm8zzvllv380l73mwdva7rs2nqnhlwgd1x"))
+                "0yv78bwqzy975854h53rbiilsms62f3v02i3jqz7v8ajk1ml56xq"))
               (modules '((guix build utils)))
               (snippet
                ;; corelib uses bundled harfbuzz, md4, md5, sha3
                '(with-directory-excursion "src/3rdparty"
                   (for-each delete-file-recursively
-                            ;; The bundled pcre2 copy is kept, as its headers
-                            ;; are required by some internal bootstrap target
-                            ;; used for the tools.
                             (list "double-conversion" "freetype" "harfbuzz-ng"
-                                  "libpng" "libjpeg" "sqlite" "xcb" "zlib"))))
-              (patches (search-patches "qtbase-use-TZDIR.patch"
-                                       "qtbase-moc-ignore-gcc-macro.patch"
+                                  "pcre2" "md4c" "libpng" "libjpeg"
+                                  "sqlite" "xcb" "zlib"))))
+              (patches (search-patches "qtbase-moc-ignore-gcc-macro.patch"
                                        "qtbase-absolute-runpath.patch"
-                                       "qtbase-qmake-use-libname.patch"))))
+                                       "qtbase-qmake-use-libname.patch"
+                                       "qtbase-find-tools-in-PATH.patch"
+                                       "qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch"
+                                       "qtbase-qmake-fix-includedir-in-generated-pkg-config.patch"
+                                       "qtbase-check-in-the-QML-folder-of-this-library-does-.patch"))))
     (build-system cmake-build-system)
     (arguments
      (substitute-keyword-arguments (package-arguments qtbase-5)
@@ -749,7 +751,8 @@ (define-public qtbase
                   (("\"xdg-open\"")
                    (format #f "~s" (search-input-file inputs "bin/xdg-open"))))
                 (substitute* '("mkspecs/features/qt_functions.prf"
-                               "qmake/library/qmakebuiltins.cpp")
+                               "qmake/library/qmakebuiltins.cpp"
+                               "tests/auto/tools/qt_cmake_create/tst_qt_cmake_create.cpp")
                   (("/bin/sh")
                    (search-input-file inputs "bin/bash")))
                 (substitute* "src/corelib/CMakeLists.txt"
@@ -814,6 +817,16 @@ (define-public qtbase
                     (string-join
                      (append
                       (list
+                       ;; with expansion:
+                       ;; false
+                       ;; with messages:
+                       ;; test := "keyboard"
+                       ;; arguments := QList("-o", "-,tap")
+                       ;; Detected locale "C" with character encoding "ANSI_X3.4-1968", which is not UTF-8.
+                       ;; Qt depends on a UTF-8 locale, but has failed to switch to one.
+                       ;; If this causes problems, reconfigure your locale. See the locale(1) manual
+                       ;; for more information.
+                       "tst_selftests"
                        ;; The 'tst_moc' test fails with "'fi.exists()' returned FALSE".
                        "tst_moc"
 
@@ -984,6 +997,7 @@ (define-public qtbase
                 bash-minimal
                 coreutils-minimal
                 md4c
+                libb2
                 libice
                 libsm
                 libxcb
@@ -1074,13 +1088,13 @@ (define-public qt3d-5
 (define-public qt5compat
   (package
     (name "qt5compat")
-    (version "6.5.2")
+    (version "6.6.2")
     (source (origin
               (method url-fetch)
               (uri (qt-url name version))
               (sha256
                (base32
-                "1i4izabbmf1dayzlj1miz7hsm4cy0qb7i72pwyl2fp05w8pf9axr"))))
+                "0rqr34lqf4mjdgjj09wzlvkxfknz8arjl9p30xpqbr2qfsmhhyz0"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -1172,13 +1186,13 @@ (define-public qtsvg-5
 (define-public qtsvg
   (package
     (name "qtsvg")
-    (version "6.5.2")
+    (version "6.6.2")
     (source (origin
               (method url-fetch)
               (uri (qt-url name version))
               (sha256
                (base32
-                "18v337lfk8krg0hff5jx6fi7gn6x3djn03x3psrhlbmgjc8crd28"))))
+                "10c1dmbv5d39n1q4m67gf2h4n6wfkzrlyk8plnxbyhhvxxcis8ss"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -1231,14 +1245,14 @@ (define-public qtimageformats-5
 (define-public qtimageformats
   (package
     (name "qtimageformats")
-    (version "6.5.2")
+    (version "6.6.2")
     (source (origin
               (inherit (package-source qtimageformats-5))
               (method url-fetch)
               (uri (qt-url name version))
               (sha256
                (base32
-                "0hv7mkn72126rkhy5gmjmbvzy7v17mkk3q2pkmzy99f64j4w1q5a"))))
+                "1cvwm0hnspglydms6qhcp5g0ayz5pamigl52kz8km66l6s8lqn3i"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -1406,14 +1420,14 @@ (define-public qtdeclarative-5
 (define-public qtdeclarative
   (package
     (name "qtdeclarative")
-    (version "6.5.2")
+    (version "6.6.2")
     ;; TODO: Package 'masm' and unbundle from sources.
     (source (origin
               (method url-fetch)
               (uri (qt-url name version))
               (sha256
                (base32
-                "06c7xfqn2a5s2m8j1bcvx3pyjqg1rgqkjvp49737gb4z9vjiz8gk"))
+                "0k6qndjvkkx3g8lr7f64xx86b3cwxzkgpl6fr6cp73s6qjkyk763"))
               (patches (search-patches "qtdeclarative-disable-qmlcache.patch"))))
     (outputs '("out" "debug"))
     (build-system cmake-build-system)
@@ -1483,6 +1497,8 @@ (define-public qtdeclarative
                   "("
                   (string-join
                    (list
+                    ;; FIXME
+                    "tst_qquickiconimage"
                     ;; This test is marked as flaky upstream (see:
                     ;; https://bugreports.qt.io/browse/QTBUG-101488).
                     "tst_qquickfiledialogimpl"
@@ -1599,13 +1615,13 @@ (define-public qtwebsockets-5
 (define-public qtwebsockets
   (package
     (name "qtwebsockets")
-    (version "6.5.2")
+    (version "6.6.2")
     (source (origin
               (method url-fetch)
               (uri (qt-url name version))
               (sha256
                (base32
-                "0xjwifxj2ssshys6f6kjr6ri2vq1wfshxky6mcscjm7vvyqdfjr0"))))
+                "1y9q8jmspxbfxf07jdcg4n8zwmchccyzp0z68fxr0hnvr2dymrn0"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -1636,6 +1652,25 @@ (define-public qtwebsockets
     (license (package-license qtbase))))
 
 (define-public qtsensors
+  (package
+    (inherit qtsvg)
+    (name "qtsensors")
+    (version "6.6.2")
+    (source (origin
+              (method url-fetch)
+              (uri (qt-url name version))
+              (sha256
+               (base32
+                "0a3w50bfnmxndyxnn9lsy1wxffhm2am0yjxqx3vx0gfjwv79yvsa"))))
+    (native-inputs
+     (list qtdeclarative))
+    (inputs (list qtbase))
+    (synopsis "Qt Sensors module")
+    (description "The Qt Sensors API provides access to sensor hardware via QML
+and C++ interfaces.  The Qt Sensors API also provides a motion gesture
+recognition API for devices.")))
+
+(define-public qtsensors-5
   (package
     (inherit qtsvg-5)
     (name "qtsensors")
@@ -1715,7 +1750,7 @@ (define-public qtmultimedia-5
 (define-public qtshadertools
   (package
     (name "qtshadertools")
-    (version "6.5.2")
+    (version "6.6.2")
     (source (origin
               (method url-fetch)
               (uri (qt-url name version))
@@ -1723,7 +1758,7 @@ (define-public qtshadertools
               ;; sources.
               (sha256
                (base32
-                "0g8aziqhds2fkx11y4p2akmyn2p1qqf2fjxv72f9pibnhpdv0gya"))))
+                "0bxrczs9nw6az2p4n8x0f660vsmxxynx4iqgj75l4zsfzzbym2v2"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -1744,13 +1779,13 @@ (define-public qtshadertools
 (define-public qtmultimedia
   (package
     (name "qtmultimedia")
-    (version "6.5.2")
+    (version "6.6.2")
     (source (origin
               (method url-fetch)
               (uri (qt-url name version))
               (sha256
                (base32
-                "0xc9k4mlncscxqbp8q46yjd89k4jb8j0ggbi5ad874lycym013wl"))
+                "1v0430jnv97ws6cizn9mi8zr9hcg7rixd0jg7smhdq8apacjb572"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -1775,7 +1810,10 @@ (define-public qtmultimedia
               ;; session bus, which requires an X11 server, and then is still
               ;; unhappy).
               (substitute* "tests/auto/CMakeLists.txt"
-                (("add_subdirectory\\(integration)") ""))))
+                (("add_subdirectory\\(integration)") ""))
+              ;; fail on offscreen rendering
+              (substitute* "tests/auto/unit/multimedia/CMakeLists.txt"
+                (("add_subdirectory\\(qvideoframecolormanagement\\)") ""))))
           (add-before 'check 'prepare-for-tests
             (lambda _
               (setenv "QT_QPA_PLATFORM" "offscreen")))
@@ -1865,13 +1903,13 @@ (define-public qtwayland-5
 (define-public qtwayland
   (package
     (name "qtwayland")
-    (version "6.5.2")
+    (version "6.6.2")
     (source
      (origin
        (method url-fetch)
        (uri (qt-url name version))
        (sha256
-        (base32 "16iwar19sgjvxgmbr6hmd3hsxp6ahdjwl1lra2wapl3zzf3bw81h"))))
+        (base32 "0y6x84ckcc53ddclnrlzs08b1kvw6saw9nim0hz4wc5fyz7dbkcv"))))
     (build-system cmake-build-system)
     (arguments
      (list #:configure-flags #~(list "-DQT_BUILD_TESTS=ON")
@@ -1888,6 +1926,7 @@ (define-public qtwayland
                      (("QTRY_COMPARE\\(bufferSpy\\.size\\(\\), 1\\);") ""))))
                (add-before 'check 'set-test-environment
                  (lambda _
+                   (setenv "XDG_RUNTIME_DIR" (getcwd))
                    ;; Do not fail just because /etc/machine-id is missing.
                    (setenv "DBUS_FATAL_WARNINGS" "0")
                    ;; Make Qt render "offscreen", required for tests.
@@ -1996,13 +2035,13 @@ (define-public qtwebchannel-5
 (define-public qtwebchannel
   (package
     (name "qtwebchannel")
-    (version "6.5.2")
+    (version "6.6.2")
     (source (origin
               (method url-fetch)
               (uri (qt-url name version))
               (sha256
                (base32
-                "0qwfnwva7v5f2g5is17yy66mnmc9c1yf9aagaw5qanskdvxdk261"))))
+                "1incvisc3j758b4k82vnwci8j1bba8zf6xgmgcrsm553k4wpsz1x"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -2080,13 +2119,13 @@ (define-public qtwebview
 (define-public qtlanguageserver
   (package
     (name "qtlanguageserver")
-    (version "6.5.2")
+    (version "6.6.2")
     (source (origin
               (method url-fetch)
               (uri (qt-url name version))
               (sha256
                (base32
-                "196iicwpqca2ydpca41qs6aqxxq8ycknw6lm2v00h1w3m86frdbk"))))
+                "1bgazi44mwac20biybhp21icgwa8k7jd295j8jsfgzxbw12lq7y3"))))
     (build-system cmake-build-system)
     (arguments
      (list #:phases #~(modify-phases %standard-phases
@@ -2129,13 +2168,13 @@ (define-public qtlocation
 (define-public qtlottie
   (package
     (name "qtlottie")
-    (version "6.5.2")
+    (version "6.6.2")
     (source (origin
               (method url-fetch)
               (uri (qt-url name version))
               (sha256
                (base32
-                "16z8fhaa40ig0cggb689zf8j3cid6fk6pmh91b8342ymy1fdqfh0"))))
+                "1hqhp55jfasavk7p8xb0srbc6lnk70w2q0x4iwn28z5s5kd1cvi7"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -2193,13 +2232,13 @@ (define-public qttools-5
 (define-public qttools
   (package
     (name "qttools")
-    (version "6.5.2")
+    (version "6.6.2")
     (source (origin
               (method url-fetch)
               (uri (qt-url name version))
               (sha256
                (base32
-                "0ha3v488vnm4pgdpyjgf859sak0z2fwmbgcyivcd93qxflign7sm"))))
+                "0ij7djy06xi4v5v29fh31gqq5rnc12vviv3qg3vqf4hiaagrxm76"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -2220,7 +2259,7 @@ (define-public qttools
     (native-inputs (list perl qtdeclarative vulkan-headers))
     ;; Use clang-15, which is built using as a single shared library, which is
     ;; what the build system of qttools expects.
-    (inputs (list clang-15 libxkbcommon mesa qtbase))
+    (inputs (list clang-15 libxkbcommon mesa qtbase `(,zstd "lib")))
     (home-page (package-home-page qtbase))
     (synopsis "Qt Tools and Designer modules")
     (description "The Qt Tools module provides a set of applications to browse
@@ -2233,13 +2272,13 @@ (define-public qttools
 (define-public qttranslations
   (package
     (name "qttranslations")
-    (version "6.5.2")
+    (version "6.6.2")
     (source (origin
               (method url-fetch)
               (uri (qt-url name version))
               (sha256
                (base32
-                "1sxy2ljn5ajvn4yjb8fx86l56viyvqh5r9hf5x67azkmgrilaz1k"))))
+                "0xqcad8aa9lp6wzh1rs46id6r60zdw82qj3bq9k2b89sxy8c0fna"))))
     (build-system cmake-build-system)
     (arguments (list #:tests? #f))
     (native-inputs (list qtbase qttools))
@@ -2391,13 +2430,13 @@ (define-public qtscxml
 (define-public qtpositioning
   (package
     (name "qtpositioning")
-    (version "6.5.2")
+    (version "6.6.2")
     (source (origin
               (method url-fetch)
               (uri (qt-url name version))
               (sha256
                (base32
-                "1yhlfs8izc054qv1krf5qv6zzjlvmz013h74fwamn74dfh1kyjbh"))))
+                "1qn31vps9dj4g8m7d195qlsyj3p4dfqqszdc6yqq097dq5y5d9sd"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -2504,13 +2543,13 @@ (define-public qtnetworkauth-5
 (define-public qtnetworkauth
   (package
     (name "qtnetworkauth")
-    (version "6.5.2")
+    (version "6.6.2")
     (source (origin
               (method url-fetch)
               (uri (qt-url name version))
               (sha256
                (base32
-                "0g18kh3zhcfi9ni8cqbbjdc1l6jf99ijv5shcl42jk6219b4pk2f"))))
+                "1lijsdwbj8gscfllmp358n5ysa8pvhx2msh7gpxvb4x81daxbg9j"))))
     (build-system cmake-build-system)
     (arguments (list #:configure-flags #~(list "-DQT_BUILD_TESTS=ON")))
     (native-inputs (list perl))
@@ -2524,13 +2563,13 @@ (define-public qtnetworkauth
 (define-public qtremoteobjects
   (package
     (name "qtremoteobjects")
-    (version "6.5.2")
+    (version "6.6.2")
     (source (origin
               (method url-fetch)
               (uri (qt-url name version))
               (sha256
                (base32
-                "0k29sk02n54vj1w6vh6xycsjpyfqlijc13fnxh1q7wpgg4gizx60"))))
+                "0fbkjzykxpkz8myr6dy588gcmhyy3lar17v78zfam8kyxq7s5qxa"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -2558,7 +2597,7 @@ (define-public qtremoteobjects
     (home-page (package-home-page qtbase))
     (license (package-license qtbase))))
 
-(define-public qtspeech
+(define-public qtspeech-5
   (package
     (inherit qtsvg-5)
     (name "qtspeech")
@@ -2583,6 +2622,38 @@ (define-public qtspeech
 In such a scenario, the messaging application can read out the incoming
 message.")))
 
+(define-public qtspeech
+  (package
+    (inherit qtspeech-5)
+    (name "qtspeech")
+    (version "6.6.2")
+    (source (origin
+              (method url-fetch)
+              (uri (qt-url name version))
+              (sha256
+               (base32
+                "1qvf3p2p1pc5fw40d8zq0iawaaqkc0dp5yx85b1dnw1j809bn8y0"))))
+    (build-system qt-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (delete 'check)               ;move after the install phase
+               (add-after 'install 'check
+                 (assoc-ref %standard-phases 'check))
+               (add-before 'check 'prepare-for-tests
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (setenv "QML2_IMPORT_PATH"
+                           (string-append (assoc-ref outputs "out")
+                                          "/lib/qt6/qml:"
+                                          (getenv "QML2_IMPORT_PATH")))))
+               (add-after 'install 'delete-installed-tests
+                 (lambda _
+                   (delete-file-recursively
+                    (string-append #$output "/tests")))))))
+    (native-inputs '())
+    (propagated-inputs (list qtmultimedia))
+    (inputs (list qtbase qtdeclarative))))
+
 (define-public qtvirtualkeyboard-5
   (package
     (inherit qtsvg-5)
@@ -3042,14 +3113,14 @@ (define-public qtwebengine-5
 (define-public qtwebengine
   (package
     (name "qtwebengine")
-    (version "6.5.3")
+    (version "6.6.2")
     (source
      (origin
        (method url-fetch)
        (uri (qt-url name version))
        (sha256
         (base32
-         "1ra5hyyg4vymp8pgzv08smjc3fl1axdavnkpj1i5zxym1ndww513"))
+         "15h3hniszfkxv2vnn3fnbgbar8wb41ypgn4b4iz4iy6csar8f7fn"))
        (modules '((ice-9 ftw)
                   (ice-9 match)
                   (srfi srfi-1)
@@ -3081,12 +3152,11 @@ (define-public qtwebengine
                     "net/third_party/uri_template"
                     "third_party/abseil-cpp"
                     "third_party/angle"
-                    "third_party/angle/src/common/third_party/base"
-                    "third_party/angle/src/common/third_party/smhasher"
                     "third_party/angle/src/common/third_party/xxhash"
                     "third_party/angle/src/third_party/libXNVCtrl" ;Expat
-                    "third_party/angle/src/third_party/trace_event"
                     "third_party/angle/src/third_party/volk"
+                    "third_party/angle/src/third_party/systeminfo"
+                    "third_party/angle/src/third_party/ceval"
                     "third_party/axe-core"
                     "third_party/blink"
                     "third_party/boringssl"
@@ -3118,8 +3188,6 @@ (define-public qtwebengine
                     "third_party/dawn/third_party/khronos"
                     "third_party/devtools-frontend"
                     "third_party/devtools-frontend/src/front_end/third_party/i18n"
-                    "third_party/devtools-frontend/src/front_end/third_party/acorn"
-                    "third_party/devtools-frontend/src/front_end/third_party/acorn-loose"
                     "third_party/devtools-frontend/src/front_end/third_party/\
 additional_readme_paths.json"
                     "third_party/devtools-frontend/src/front_end/third_party/axe-core"
@@ -3130,11 +3198,17 @@ (define-public qtwebengine
                     "third_party/devtools-frontend/src/front_end/third_party/i18n"
                     "third_party/devtools-frontend/src/front_end/third_party/intl-messageformat"
                     "third_party/devtools-frontend/src/front_end/third_party/lighthouse"
-                    "third_party/devtools-frontend/src/front_end/third_party/lit-html"
+                    "third_party/devtools-frontend/src/front_end/third_party/lit"
+                    "third_party/devtools-frontend/src/front_end/third_party/acorn"
                     "third_party/devtools-frontend/src/front_end/third_party/marked"
                     "third_party/devtools-frontend/src/front_end/third_party/puppeteer"
+                    "third_party/devtools-frontend/src/front_end/third_party/\
+puppeteer/package/lib/esm/third_party/mitt"
+                    "third_party/devtools-frontend/src/front_end/third_party/vscode.web-custom-data"
+                    "third_party/devtools-frontend/src/third_party/pyjson5"
                     "third_party/devtools-frontend/src/front_end/third_party/wasmparser"
                     "third_party/devtools-frontend/src/third_party/typescript"
+                    "third_party/devtools-frontend/src/third_party/i18n"
                     "third_party/distributed_point_functions"
                     "third_party/dom_distiller_js"
                     "third_party/emoji-segmenter"
@@ -3177,7 +3251,6 @@ (define-public qtwebengine
                     "third_party/libgav1"
                     "third_party/libjingle_xmpp"
                     "third_party/libjpeg_turbo"
-                    "third_party/libjxl"
                     "third_party/libpng" ;TODO: make pdfium use system version
                     "third_party/libsecret" ;LGPL2.1+
                     "third_party/libsrtp"
@@ -3196,6 +3269,7 @@ (define-public qtwebengine
                     "third_party/lss"
                     "third_party/mako"
                     "third_party/markupsafe"
+                    "third_party/material_color_utilities" ;ASL2.0
                     "third_party/mesa_headers"
                     "third_party/metrics_proto"
                     "third_party/minigbm" ;BSD-3
@@ -3215,6 +3289,7 @@ (define-public qtwebengine
                     "third_party/opus/src/include/opus_multistream.h"
                     "third_party/opus/src/include/opus_types.h"
                     "third_party/ots"
+                    "third_party/flac"
                     "third_party/pdfium"
                     "third_party/pdfium/third_party/agg23"
                     "third_party/pdfium/third_party/base"
@@ -3222,7 +3297,6 @@ (define-public qtwebengine
                     "third_party/pdfium/third_party/freetype"
                     "third_party/pdfium/third_party/lcms"
                     "third_party/pdfium/third_party/libopenjpeg"
-                    "third_party/pdfium/third_party/libpng16"
                     "third_party/pdfium/third_party/libtiff"
                     "third_party/pdfium/third_party/skia_shared"
                     "third_party/pdfium/third_party/freetype/include/pstables.h" ;FreeType
@@ -3292,6 +3366,7 @@ (define-public qtwebengine
                     "v8/src/third_party/utf8-decoder"
                     "v8/src/third_party/valgrind"
                     "v8/third_party/inspector_protocol"
+                    "v8/third_party/glibc/src/sysdeps/ieee754/dbl-64"
                     "v8/third_party/v8/builtins")))
 
              (with-directory-excursion "src/3rdparty"
@@ -3359,14 +3434,17 @@ (define-public qtwebengine
               "-DQT_FEATURE_webengine_system_libjpeg=ON"
               "-DQT_FEATURE_webengine_system_libpci=ON"
               "-DQT_FEATURE_webengine_system_libpng=ON"
+              "-DQT_FEATURE_webengine_system_libtiff=ON"
               "-DQT_FEATURE_webengine_system_libwebp=ON"
               "-DQT_FEATURE_webengine_system_libxml=ON"
-              "-DQT_FEATURE_webengine_system_libxslt=ON"
               "-DQT_FEATURE_webengine_system_minizip=ON"
               "-DQT_FEATURE_webengine_system_opus=ON"
               "-DQT_FEATURE_webengine_system_pulseaudio=ON"
               "-DQT_FEATURE_webengine_system_re2=ON"
-              "-DQT_FEATURE_webengine_system_zlib=ON")
+              "-DQT_FEATURE_webengine_system_zlib=ON"
+              "-DQT_FEATURE_webengine_system_glib=ON"
+              "-DQT_FEATURE_webengine_system_libvpx=ON"
+              "-DQT_FEATURE_webengine_system_snappy=ON")
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'patch-paths
@@ -3416,7 +3494,11 @@ (define-public qtwebengine
                          '()))))
           (replace 'install
             (lambda _
-              (invoke "cmake" "--install" "."))))))
+              (invoke "cmake" "--install" ".")))
+          (add-after 'install 'delete-installed-tests
+                 (lambda _
+                   (delete-file-recursively
+                    (string-append #$output "/tests")))))))
     (native-inputs
      (modify-inputs (package-native-inputs qtwebengine-5)
        (delete "python2" "python2-six")
@@ -3684,7 +3766,7 @@ (define-public python-pyqt
        ("qtdeclarative-5" ,qtdeclarative-5)
        ("qtlocation" ,qtlocation)
        ("qtmultimedia-5" ,qtmultimedia-5)
-       ("qtsensors" ,qtsensors)
+       ("qtsensors" ,qtsensors-5)
        ("qtserialport" ,qtserialport)
        ("qtsvg-5" ,qtsvg-5)
        ("qttools-5" ,qttools-5)
@@ -4498,8 +4580,8 @@ (define-public python-pyside-2
            qtquickcontrols2-5
            qtscript
            qtscxml
-           qtsensors
-           qtspeech
+           qtsensors-5
+           qtspeech-5
            qtsvg-5
            qttools-5
            qtwebchannel-5
@@ -5086,7 +5168,7 @@ (define-public clazy
 (define-public qt-creator
   (package
     (name "qt-creator")
-    (version "12.0.1")
+    (version "12.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -5109,7 +5191,7 @@ (define-public qt-creator
                             ((".*marketplace/marketplace.qbs.*") ""))))
               (sha256
                (base32
-                "04h35za3gliai5djxwmzqrbih2g26lcv68pp4wvljkdwkcjsscvb"))))
+                "1lgk547pvg31zzqra7gn9gsszm5wrwxiw06crbr5n2kqfavk9r22"))))
     (build-system qt-build-system)
     (arguments
      (list
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index 9c8225d22b..938b786ae2 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -2671,7 +2671,7 @@ (define-public sdrangel
            qtmultimedia-5
            qtquickcontrols2-5
            qtserialport
-           qtspeech
+           qtspeech-5
            qtwebchannel-5
            qtwebengine-5
            qtwebsockets-5
