diff mbox series

[bug#69628,v3] gnu: qt: Update to 6.6.2.

Message ID bc18872a7614d817539858083458054025f132a0.1710154350.git.zhengjunjie@iscas.ac.cn
State New
Headers show
Series [bug#69628,v3] gnu: qt: Update to 6.6.2. | expand

Commit Message

Zheng Junjie March 11, 2024, 10:52 a.m. UTC
* gnu/packages/qt.scm (qtbase, qtsvg, qtshadertools, qtnetworkauth,
qtimageformats, qtlanguageserver, qtpositioning, qtdeclarative, qttools,
qt5compat, qtlottie, qtwebsockets, qttranslations, qtwebchannel, qtwayland,
qtremoteobjects, qtmultimedia, qtspeech, qtsensors, qtwebengine): Update to 6.6.2.
(qt-creator): Update to 12.0.2.
(qtbase)[source]: unbundle pcre2, md4c, remove qtbase-use-TZDIR.patch. Add
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.
(qtbase)[arguments]<#:phase>: adjust 'patch-more-paths phase, skip tst_selftests test.
(qtbase)[inputs]: add libb2.
(qttools)[inputs]: add zstd:lib.
(qtwayland)[arguments]<#:phases>: Adjust set-test-environment phase.
(qtmultimedia)[arguments]<#:phases>: adjust 'disable-integration-tests phase.
(qtwebengine)[source]: Adjust snippet.
[arguments]<#:configure-flags>: Adjust it.
<#:phases>: Add delete-installed-tests phase.

* gnu/packages/patches/qtbase-use-TZDIR.patch: remove this.
* gnu/packages/patches/qtbase-find-tools-in-PATH.patch: New file
* gnu/packages/patches/qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch: New file
* gnu/packages/patches/qtbase-qmake-fix-includedir-in-generated-pkg-config.patch: New file
* gnu/packages/patches/qtbase-check-in-the-QML-folder-of-this-library-does-.patch: New file
* gnu/packages/patches/qtdeclarative-disable-qmlcache.patch: adjust it.

* gnu/local.mk(dist_patch_DATA): remove qtbase-use-TZDIR.patch.
Regist 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.

gnu: Add qtspeech-5.
* gnu/packages/qt.scm(qtspeech-5): New Variable.
(python-pyside-2):
* gnu/packages/games.scm (chessx):
* gnu/packages/kde-frameworks.scm(ktextwidgets):
* gnu/packages/kde-pim.scm(kdepim-runtime,kpimtextedit):
* gnu/packages/kde-utils.scm(kmouth):
* gnu/packages/kde.scm(okular):
* gnu/packages/radio.scm(sdrangel):
Adjust inputs.

gnu: Add qtsensors-5.
* gnu/packages/qt.scm(qtspeech-5): New Variable.
(python-pyqt,python-pyside-2):
* gnu/packages/education.scm(gcompris-qt):
* gnu/packages/kde-plasma.scm(kscreen):
* gnu/packages/geo.scm(openorienteering-mapper):
Adjust inputs.

Change-Id: Ibb30850de615c85dca2cc4d6fd55b18a228e0fc9
---
 gnu/local.mk                                  |   5 +-
 gnu/packages/education.scm                    |   2 +-
 gnu/packages/games.scm                        |   2 +-
 gnu/packages/geo.scm                          |   2 +-
 gnu/packages/kde-frameworks.scm               |   2 +-
 gnu/packages/kde-pim.scm                      |   4 +-
 gnu/packages/kde-plasma.scm                   |   2 +-
 gnu/packages/kde-utils.scm                    |   2 +-
 gnu/packages/kde.scm                          |   2 +-
 ...the-QML-folder-of-this-library-does-.patch |  35 +++
 .../patches/qtbase-find-tools-in-PATH.patch   |  45 ++++
 ...mlimportscanner-the-QML2_IMPORT_PATH.patch |  30 +++
 ...x-includedir-in-generated-pkg-config.patch |  26 +++
 gnu/packages/patches/qtbase-use-TZDIR.patch   | 141 ------------
 .../qtdeclarative-disable-qmlcache.patch      |  27 ++-
 gnu/packages/qt.scm                           | 210 ++++++++++++------
 gnu/packages/radio.scm                        |   2 +-
 17 files changed, 317 insertions(+), 222 deletions(-)
 create mode 100644 gnu/packages/patches/qtbase-check-in-the-QML-folder-of-this-library-does-.patch
 create mode 100644 gnu/packages/patches/qtbase-find-tools-in-PATH.patch
 create mode 100644 gnu/packages/patches/qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch
 create mode 100644 gnu/packages/patches/qtbase-qmake-fix-includedir-in-generated-pkg-config.patch
 delete mode 100644 gnu/packages/patches/qtbase-use-TZDIR.patch


base-commit: b0b988c41c9e0e591274495a1b2d6f27fcdae15a

Comments

Maxim Cournoyer March 12, 2024, 2:44 p.m. UTC | #1
Hi Zheng,

Thanks for this effort!  One nitpick, which you can perhaps overlook for
this time, to spare the effort of splitting everything, is that it's
more customary to have one commit per package update.  It's also the
result you'll get if you use the following commands to do the update of
Qt 6:

--8<---------------cut here---------------start------------->8---
./pre-inst-env guix refresh -u -m etc/teams/qt/qt-manifest.scm
./etc/committer.scm
--8<---------------cut here---------------end--------------->8---

Zheng Junjie <zhengjunjie@iscas.ac.cn> writes:

> * gnu/packages/qt.scm (qtbase, qtsvg, qtshadertools, qtnetworkauth,
> qtimageformats, qtlanguageserver, qtpositioning, qtdeclarative, qttools,
> qt5compat, qtlottie, qtwebsockets, qttranslations, qtwebchannel, qtwayland,
> qtremoteobjects, qtmultimedia, qtspeech, qtsensors, qtwebengine):
> Update to 6.6.2.

nitpick: GNU ChangeLog (info '(standards) Style of Change Logs) says:

       Break long lists of function names by closing continued lines with
    `)', rather than `,', and opening the continuation with `(' as in this
    example:

         * keyboard.c (menu_bar_items, tool_bar_items)
         (Fexecute_extended_command): Deal with 'keymap' property.

> (qt-creator): Update to 12.0.2.

This could be definitely be in a separate commit.

> (qtbase)[source]: unbundle pcre2, md4c, remove qtbase-use-TZDIR.patch. Add
> 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.
> (qtbase)[arguments]<#:phase>: adjust 'patch-more-paths phase, skip tst_selftests test.

nitpick: #:phaseS (plural); Adjust (capitalized).

> (qtbase)[inputs]: add libb2.
> (qttools)[inputs]: add zstd:lib.
> (qtwayland)[arguments]<#:phases>: Adjust set-test-environment phase.
> (qtmultimedia)[arguments]<#:phases>: adjust 'disable-integration-tests phase.

Please punctuate change logs (e.g.: "Add lib2." instead of "add libb2.")

> (qtwebengine)[source]: Adjust snippet.
> [arguments]<#:configure-flags>: Adjust it.
> <#:phases>: Add delete-installed-tests phase.
>
> * gnu/packages/patches/qtbase-use-TZDIR.patch: remove this.
> * gnu/packages/patches/qtbase-find-tools-in-PATH.patch: New file
> * gnu/packages/patches/qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch: New file
> * gnu/packages/patches/qtbase-qmake-fix-includedir-in-generated-pkg-config.patch: New file
> * gnu/packages/patches/qtbase-check-in-the-QML-folder-of-this-library-does-.patch: New file
> * gnu/packages/patches/qtdeclarative-disable-qmlcache.patch: adjust it.

Another nitpick (sorry, apparently I'm a nitpicky reviewer :-)). These
patches file names are a bit on the long side.  It's OK to capture just
the essentials, like 'qtbase-qmlimportscanner-fix.patch.  There used to
be a hard limit of patch file names length; I think 'guix lint' checks
them now.

Also, 'qtbase-check-in-the-QML-folder-of-this-library-does-.patch' is
a long but non-descriptive file name (it appears truncated).

> * gnu/local.mk(dist_patch_DATA): remove qtbase-use-TZDIR.patch.
> Regist qtbase-find-tools-in-PATH.patch,

RegistER

> 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.
>
> gnu: Add qtspeech-5.
> * gnu/packages/qt.scm(qtspeech-5): New Variable.
> (python-pyside-2):
> * gnu/packages/games.scm (chessx):
> * gnu/packages/kde-frameworks.scm(ktextwidgets):
> * gnu/packages/kde-pim.scm(kdepim-runtime,kpimtextedit):
> * gnu/packages/kde-utils.scm(kmouth):
> * gnu/packages/kde.scm(okular):
> * gnu/packages/radio.scm(sdrangel)xb

The above should go to its own commit.

There should be a space between the file name and the opening parens.
There does not need to be trailing colon (:) when there's no message.

> Adjust inputs.
>
> gnu: Add qtsensors-5.
> * gnu/packages/qt.scm(qtspeech-5): New Variable.
> (python-pyqt,python-pyside-2):
> * gnu/packages/education.scm(gcompris-qt):
> * gnu/packages/kde-plasma.scm(kscreen):
> * gnu/packages/geo.scm(openorienteering-mapper):
> Adjust inputs.

Same comment as above, and this change should go to its own commit as
well.

> Change-Id: Ibb30850de615c85dca2cc4d6fd55b18a228e0fc9
> ---
>  gnu/local.mk                                  |   5 +-
>  gnu/packages/education.scm                    |   2 +-
>  gnu/packages/games.scm                        |   2 +-
>  gnu/packages/geo.scm                          |   2 +-
>  gnu/packages/kde-frameworks.scm               |   2 +-
>  gnu/packages/kde-pim.scm                      |   4 +-
>  gnu/packages/kde-plasma.scm                   |   2 +-
>  gnu/packages/kde-utils.scm                    |   2 +-
>  gnu/packages/kde.scm                          |   2 +-
>  ...the-QML-folder-of-this-library-does-.patch |  35 +++
>  .../patches/qtbase-find-tools-in-PATH.patch   |  45 ++++
>  ...mlimportscanner-the-QML2_IMPORT_PATH.patch |  30 +++
>  ...x-includedir-in-generated-pkg-config.patch |  26 +++
>  gnu/packages/patches/qtbase-use-TZDIR.patch   | 141 ------------
>  .../qtdeclarative-disable-qmlcache.patch      |  27 ++-
>  gnu/packages/qt.scm                           | 210 ++++++++++++------
>  gnu/packages/radio.scm                        |   2 +-
>  17 files changed, 317 insertions(+), 222 deletions(-)
>  create mode 100644 gnu/packages/patches/qtbase-check-in-the-QML-folder-of-this-library-does-.patch
>  create mode 100644 gnu/packages/patches/qtbase-find-tools-in-PATH.patch
>  create mode 100644 gnu/packages/patches/qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch
>  create mode 100644 gnu/packages/patches/qtbase-qmake-fix-includedir-in-generated-pkg-config.patch
>  delete mode 100644 gnu/packages/patches/qtbase-use-TZDIR.patch
>
> 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.


This looks like a useful patch, but where does it originate from?  Has
it already been committed to Qt, but not yet released?  Was is taken
from Nix?  Something else?  A link to where it was retrieved would help.

> + 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

This patches a file under the source tree 'macdeployqt'.  Does Guix
benefit from that?  We don't support Mac, so it seems it shouldn't be
useful to carry it.

> 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

That's also probably useless for Guix (macdeployqt), unless 'mac' here
has nothing to do with the fruit company computer.  Did it fix an actual problem
for you?

[...]

> 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}";

[...]

> 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"))))

To stick to the 80 chars limit, the '(origin ...' could be broken on its
own line below '(source ...', same for '(patches (search-patches ...'

>      (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")))

The patching of the tests/... file should be in a different substitute*
call which substitutes it to (which "bash"); this is because when cross
compiling, native-inputs are not merged into inputs and thus bash
wouldn't be found.

>                  (substitute* "src/corelib/CMakeLists.txt"
> @@ -814,6 +817,16 @@ (define-public qtbase
>                      (string-join
>                       (append
>                        (list

This would read better if you provided context, like so: "The
'tst_selftests' fails with the following error: "

> +                       ;; 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"

This issue was reported here:
<https://bugreports.qt.io/browse/QTBUG-113371>, and it seems to have to
do with the environment lacking UTF-8 locale data in its environment.  I
suspect this may not happen anymore on core-updates, where a C.UTF-8
locale is always made available by glibc, but in the meantime, have you
checked if adding the 'glibc-utf8-locales' package to its native-inputs
helped?

>                         ;; 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

For long-term maintenance, I like to mention the name of the failing
test in the message, as when more such tests are skipped later, it
becomes unclear.  E.g.:  'The "qvideoframecolormanagement" tests fail
with an 'offscreen rendering' error.

> +              (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))))


The above LGTM.

> -(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))))

This Qt 6 package inherits from its Qt 5 variant.  I think it should be
the other way around, so that when the time comes, Qt 5 packages can be
simply removed without further complications.

>  (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"

This line is too long; it can be broken with a backslash escape in the
middle of the string.

> +                    "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

That LGTM.  In a separate commit, we could modernize webengine to remove
legacy input labels, unless they are used in the phases (and this can't
be expressed in a new way such as via 'search-input-file').

> @@ -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

Can be in its own commit as mentioned earlier.

Thanks for this series!  It seems well crafted.  My earlier comments are
mostly cosmetic/nitpicks; so hopefully it's not too much work to
implement.  The more annoying part may be to separate your commits a bit
more.  For this time around, I think it's OK to group the Qt 6 upgrades
together, unless you want to try the automatic updates tooling I've
hinted at the beginning and re-apply the additional changes on top, but
I don't think it's worth it.

Thank you!  I'll be expecting a v4 :-)

Maxim
diff mbox series

Patch

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