gnu: qwt: Use INVOKE.
[jackhill/guix/guix.git] / gnu / packages / qt.scm
index 1ad9687..b6499f3 100644 (file)
@@ -1,14 +1,16 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
-;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Quiliro <quiliro@fsfla.org>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2018 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,7 +31,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (guix build utils)
+  #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages sdl)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages vulkan)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages xml))
+  #:use-module (gnu packages xml)
+  #:use-module (srfi srfi-1))
 
 (define-public grantlee
   (package
@@ -104,7 +110,7 @@ system, and the core design of Django is reused in Grantlee.")
 (define-public qt
   (package
     (name "qt")
-    (version "5.9.4")
+    (version "5.11.2")
     (outputs '("out" "examples"))
     (source (origin
              (method url-fetch)
@@ -113,11 +119,12 @@ system, and the core design of Django is reused in Grantlee.")
                  "http://download.qt.io/official_releases/qt/"
                  (version-major+minor version)
                  "/" version
-                 "/single/qt-everywhere-opensource-src-"
+                 "/single/qt-everywhere-src-"
                  version ".tar.xz"))
              (sha256
               (base32
-               "1mblh8k04l13nk9fhhrr43h5bcph1gbz94j5y7csx8zvxb5xkb73"))
+               "10faac59jvz6dxxljdkaknlxazpnaxgvqdcszabfbbkc1f24n466"))
+             (patches (search-patches "qt-5-renameat2.patch"))
              (modules '((guix build utils)))
              (snippet
               '(begin
@@ -142,10 +149,24 @@ system, and the core design of Django is reused in Grantlee.")
                   (list "qtimageformats/src/3rdparty"
                         "qtmultimedia/examples/multimedia/spectrum/3rdparty"
                         "qtwayland/examples"
+                        "qtscxml/tests/3rdparty"
                         "qtcanvas3d/examples/canvas3d/3rdparty"))
                 ;; Tests depend on this example, which depends on the 3rd party code.
                 (substitute* "qtmultimedia/examples/multimedia/multimedia.pro"
-                  (("spectrum") "#"))))))
+                  (("spectrum") "#"))
+                (substitute* "qtxmlpatterns/tests/auto/auto.pro"
+                  (("qxmlquery") "# qxmlquery")
+                  (("xmlpatterns ") "# xmlpatterns"))
+                (substitute* "qtwebglplugin/tests/plugins/platforms/platforms.pro"
+                  (("webgl") "# webgl"))
+                (substitute* "qtscxml/tests/auto/auto.pro"
+                  (("scion") "#"))
+                (substitute* "qtnetworkauth/tests/auto/auto.pro"
+                  (("oauth1 ") "# oauth1 "))
+                (substitute* "qtremoteobjects/tests/auto/qml/qml.pro"
+                  (("integration") "# integration")
+                  (("usertypes") "# usertypes"))
+                #t))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("mesa" ,mesa)))
@@ -185,13 +206,13 @@ system, and the core design of Django is reused in Grantlee.")
        ("libxslt" ,libxslt)
        ("libxtst" ,libxtst)
        ("mtdev" ,mtdev)
-       ("mysql" ,mysql)
+       ("mariadb" ,mariadb)
        ("nss" ,nss)
        ("openssl" ,openssl)
        ("postgresql" ,postgresql)
        ("pulseaudio" ,pulseaudio)
        ("pcre2" ,pcre2)
-       ("sqlite" ,sqlite)
+       ("sqlite" ,sqlite-with-column-metadata)
        ("udev" ,eudev)
        ("unixodbc" ,unixodbc)
        ("wayland" ,wayland)
@@ -209,9 +230,11 @@ system, and the core design of Django is reused in Grantlee.")
        ("pkg-config" ,pkg-config)
        ("python" ,python-2)
        ("ruby" ,ruby)
+       ("vulkan-headers" ,vulkan-headers)
        ("which" ,(@ (gnu packages base) which))))
     (arguments
-     `(#:phases
+     `(#:parallel-build? #f ; Triggers race condition in qtbase module on Hydra.
+       #:phases
        (modify-phases %standard-phases
          (add-after 'configure 'patch-bin-sh
            (lambda _
@@ -230,40 +253,136 @@ system, and the core design of Django is reused in Grantlee.")
                  (("/bin/ls") (which "ls")))
                ;; do not pass "--enable-fast-install", which makes the
                ;; configure process fail
-               (zero? (system*
-                       "./configure"
-                       "-verbose"
-                       "-prefix" out
-                       "-examplesdir" examples ; 89MiB
-                       "-opensource"
-                       "-confirm-license"
-                       ;; Do not build examples; for the time being, we
-                       ;; prefer to save the space and build time.
-                       "-no-compile-examples"
-                       ;; Most "-system-..." are automatic, but some use
-                       ;; the bundled copy by default.
-                       "-system-sqlite"
-                       "-system-harfbuzz"
-                       ;; explicitly link with openssl instead of dlopening it
-                       "-openssl-linked"
-                       ;; explicitly link with dbus instead of dlopening it
-                       "-dbus-linked"
-                       ;; don't use the precompiled headers
-                       "-no-pch"
-                       ;; drop special machine instructions not supported
-                       ;; on all instances of the target
-                       ,@(if (string-prefix? "x86_64"
-                                             (or (%current-target-system)
-                                                 (%current-system)))
-                             '()
-                             '("-no-sse2"))
-                       "-no-mips_dsp"
-                       "-no-mips_dspr2"))))))))
-    (home-page "https://www.qt.io/")
-    (synopsis "Cross-platform GUI library")
-    (description "Qt is a cross-platform application and UI framework for
-developers using C++ or QML, a CSS & JavaScript like language.")
-    (license license:lgpl2.1)
+               (invoke
+                 "./configure"
+                 "-verbose"
+                 "-prefix" out
+                 "-docdir" (string-append out "/share/doc/qt5")
+                 "-headerdir" (string-append out "/include/qt5")
+                 "-archdatadir" (string-append out "/lib/qt5")
+                 "-datadir" (string-append out "/share/qt5")
+                 "-examplesdir" (string-append
+                                  examples "/share/doc/qt5/examples") ; 151MiB
+                 "-opensource"
+                 "-confirm-license"
+
+                 ;; These features require higher versions of Linux than the
+                 ;; minimum version of the glibc.  See
+                 ;; src/corelib/global/minimum-linux_p.h.  By disabling these
+                 ;; features Qt5 applications can be used on the oldest
+                 ;; kernels that the glibc supports, including the RHEL6
+                 ;; (2.6.32) and RHEL7 (3.10) kernels.
+                 "-no-feature-getentropy"  ; requires Linux 3.17
+                 "-no-feature-renameat2"   ; requires Linux 3.16
+
+                 ;; Do not build examples; for the time being, we
+                 ;; prefer to save the space and build time.
+                 "-no-compile-examples"
+                 ;; Most "-system-..." are automatic, but some use
+                 ;; the bundled copy by default.
+                 "-system-sqlite"
+                 "-system-harfbuzz"
+                 "-system-pcre"
+                 ;; explicitly link with openssl instead of dlopening it
+                 "-openssl-linked"
+                 ;; explicitly link with dbus instead of dlopening it
+                 "-dbus-linked"
+                 ;; don't use the precompiled headers
+                 "-no-pch"
+                 ;; drop special machine instructions not supported
+                 ;; on all instances of the target
+                 ,@(if (string-prefix? "x86_64"
+                                       (or (%current-target-system)
+                                           (%current-system)))
+                       '()
+                       '("-no-sse2"))
+                 "-no-mips_dsp"
+                 "-no-mips_dspr2"))))
+           (add-after 'install 'patch-mkspecs
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (archdata (string-append out "/lib/qt5"))
+                      (mkspecs (string-append archdata "/mkspecs"))
+                      (qt_config.prf (string-append
+                                      mkspecs "/features/qt_config.prf")))
+                 ;; For each Qt module, let `qmake' uses search paths in the
+                 ;; module directory instead of all in QT_INSTALL_PREFIX.
+                 (substitute* qt_config.prf
+                   (("\\$\\$\\[QT_INSTALL_HEADERS\\]")
+                    "$$clean_path($$replace(dir, mkspecs/modules, ../../include/qt5))")
+                   (("\\$\\$\\[QT_INSTALL_LIBS\\]")
+                    "$$clean_path($$replace(dir, mkspecs/modules, ../../lib))")
+                   (("\\$\\$\\[QT_HOST_LIBS\\]")
+                    "$$clean_path($$replace(dir, mkspecs/modules, ../../lib))")
+                   (("\\$\\$\\[QT_INSTALL_BINS\\]")
+                    "$$clean_path($$replace(dir, mkspecs/modules, ../../bin))"))
+
+                 ;; Searches Qt tools in the current PATH instead of QT_HOST_BINS.
+                 (substitute* (string-append mkspecs "/features/qt_functions.prf")
+                   (("cmd = \\$\\$\\[QT_HOST_BINS\\]/\\$\\$2")
+                    "cmd = $$system(which $${2}.pl 2>/dev/null || which $${2})"))
+
+                 ;; Resolve qmake spec files within qtbase by absolute paths.
+                 (substitute*
+                     (map (lambda (file)
+                            (string-append mkspecs "/features/" file))
+                          '("device_config.prf" "moc.prf" "qt_build_config.prf"
+                            "qt_config.prf" "winrt/package_manifest.prf"))
+                   (("\\$\\$\\[QT_HOST_DATA/get\\]") archdata)
+                   (("\\$\\$\\[QT_HOST_DATA/src\\]") archdata))
+                 #t)))
+           (add-after 'unpack 'patch-paths
+             ;; Use the absolute paths for dynamically loaded libs, otherwise
+             ;; the lib will be searched in LD_LIBRARY_PATH which typically is
+             ;; not set in guix.
+             (lambda* (#:key inputs #:allow-other-keys)
+               ;; libresolve
+               (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
+                                                   "cross-libc" "libc"))))
+                 (substitute* '("qtbase/src/network/kernel/qdnslookup_unix.cpp"
+                                "qtbase/src/network/kernel/qhostinfo_unix.cpp")
+                   (("^\\s*(lib.setFileName\\(QLatin1String\\(\")(resolv\"\\)\\);)" _ a b)
+                  (string-append a glibc "/lib/lib" b))))
+               ;; X11/locale (compose path)
+               (substitute* "qtbase/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp"
+                 ;; Don't search in /usr/…/X11/locale, …
+                 (("^\\s*m_possibleLocations.append\\(QStringLiteral\\(\"/usr/.*/X11/locale\"\\)\\);" line)
+                  (string-append "// " line))
+                 ;; … but use libx11's path
+                 (("^\\s*(m_possibleLocations.append\\(QStringLiteral\\()X11_PREFIX \"(/.*/X11/locale\"\\)\\);)" _ a b)
+                  (string-append a "\"" (assoc-ref inputs "libx11") b)))
+               ;; libGL
+               (substitute* "qtbase/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp"
+                 (("^\\s*(QLibrary lib\\(QLatin1String\\(\")(GL\"\\)\\);)" _ a b)
+                  (string-append a (assoc-ref inputs "mesa") "/lib/lib" b)))
+               ;; libXcursor
+               (substitute* "qtbase/src/plugins/platforms/xcb/qxcbcursor.cpp"
+                 (("^\\s*(QLibrary xcursorLib\\(QLatin1String\\(\")(Xcursor\"\\), 1\\);)" _ a b)
+                  (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b))
+                 (("^\\s*(xcursorLib.setFileName\\(QLatin1String\\(\")(Xcursor\"\\)\\);)" _ a b)
+                  (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b)))
+               #t)))))
+      (native-search-paths
+       (list (search-path-specification
+              (variable "QMAKEPATH")
+              (files '("lib/qt5")))
+             (search-path-specification
+              (variable "QML2_IMPORT_PATH")
+              (files '("lib/qt5/qml")))
+             (search-path-specification
+              (variable "QT_PLUGIN_PATH")
+              (files '("lib/qt5/plugins")))
+             (search-path-specification
+              (variable "XDG_DATA_DIRS")
+              (files '("share")))
+             (search-path-specification
+              (variable "XDG_CONFIG_DIRS")
+              (files '("etc/xdg")))))
+      (home-page "https://www.qt.io/")
+      (synopsis "Cross-platform GUI library")
+      (description "Qt is a cross-platform application and UI framework for
+  developers using C++ or QML, a CSS & JavaScript like language.")
+      (license (list license:lgpl2.1 license:lgpl3))
 
     ;; Qt 4: 'QBasicAtomicPointer' leads to build failures on MIPS;
     ;; see <http://hydra.gnu.org/build/112828>.
@@ -287,11 +406,18 @@ developers using C++ or QML, a CSS & JavaScript like language.")
              (modules '((guix build utils)))
              (snippet
               ;; Remove webkit module, which is not built.
-              '(delete-file-recursively "src/3rdparty/webkit"))))
-    (inputs `(,@(alist-delete "harfbuzz"
-                              (alist-delete "libjpeg" (package-inputs qt)))
-              ("libjepg" ,libjpeg-8)
-              ("libsm" ,libsm)))
+              '(begin (delete-file-recursively "src/3rdparty/webkit")
+                      #t))))
+    (inputs
+     `(,@(fold alist-delete
+               (package-inputs qt)
+               '("harfbuzz" "libjpeg"))
+       ("libjpeg" ,libjpeg-8)
+       ("libsm" ,libsm)))
+    (native-inputs
+     `(,@(fold alist-delete
+               (package-native-inputs qt)
+               '("vulkan-headers"))))
 
     ;; Note: there are 37 MiB of examples and a '-exampledir' configure flags,
     ;; but we can't make them a separate output because "out" and "examples"
@@ -308,48 +434,53 @@ developers using C++ or QML, a CSS & JavaScript like language.")
                   (doc (assoc-ref outputs "doc")))
               (substitute* '("configure")
                 (("/bin/pwd") (which "pwd")))
+              (substitute* "src/corelib/global/global.pri"
+                (("/bin/ls") (which "ls")))
 
-              (zero? (system*
-                      "./configure"
-                      "-verbose"
-                      "-prefix" out
-                      ;; Note: Don't pass '-docdir' since 'qmake' and
-                      ;; libQtCore would record its value, thereby defeating
-                      ;; the whole point of having a separate output.
-                      "-datadir" (string-append out "/share/qt-" ,version
-                                                "/data")
-                      "-importdir" (string-append out "/lib/qt-4"
-                                                  "/imports")
-                      "-plugindir" (string-append out "/lib/qt-4"
-                                                  "/plugins")
-                      "-translationdir" (string-append out "/share/qt-" ,version
-                                                       "/translations")
-                      "-demosdir"    (string-append out "/share/qt-" ,version
-                                                    "/demos")
-                      "-examplesdir" (string-append out "/share/qt-" ,version
-                                                    "/examples")
-                      "-opensource"
-                      "-confirm-license"
-                      ;; explicitly link with dbus instead of dlopening it
-                      "-dbus-linked"
-                      ;; Skip the webkit module; it fails to build on armhf
-                      ;; and, apart from that, may pose security risks.
-                      "-no-webkit"
-                      ;; drop special machine instructions not supported
-                      ;; on all instances of the target
-                      ,@(if (string-prefix? "x86_64"
-                                            (or (%current-target-system)
-                                                (%current-system)))
-                            '()
-                            '("-no-mmx"
-                              "-no-3dnow"
-                              "-no-sse"
-                              "-no-sse2"))
-                      "-no-sse3"
-                      "-no-ssse3"
-                      "-no-sse4.1"
-                      "-no-sse4.2"
-                      "-no-avx")))))
+              (invoke
+                "./configure"
+                "-verbose"
+                "-prefix" out
+                "-nomake" "examples demos"
+                ;; Note: Don't pass '-docdir' since 'qmake' and
+                ;; libQtCore would record its value, thereby defeating
+                ;; the whole point of having a separate output.
+                "-datadir" (string-append out "/share/qt-" ,version
+                                          "/data")
+                "-importdir" (string-append out "/lib/qt-4"
+                                            "/imports")
+                "-plugindir" (string-append out "/lib/qt-4"
+                                            "/plugins")
+                "-translationdir" (string-append out "/share/qt-" ,version
+                                                 "/translations")
+                "-demosdir"    (string-append out "/share/qt-" ,version
+                                              "/demos")
+                "-examplesdir" (string-append out "/share/qt-" ,version
+                                              "/examples")
+                "-opensource"
+                "-confirm-license"
+                ;; explicitly link with dbus instead of dlopening it
+                "-dbus-linked"
+                ;; Skip the webkit module; it fails to build on armhf
+                ;; and, apart from that, may pose security risks.
+                "-no-webkit"
+                ;; don't use the precompiled headers
+                "-no-pch"
+                ;; drop special machine instructions not supported
+                ;; on all instances of the target
+                ,@(if (string-prefix? "x86_64"
+                                      (or (%current-target-system)
+                                          (%current-system)))
+                      '()
+                      '("-no-mmx"
+                        "-no-3dnow"
+                        "-no-sse"
+                        "-no-sse2"))
+                "-no-sse3"
+                "-no-ssse3"
+                "-no-sse4.1"
+                "-no-sse4.2"
+                "-no-avx"))))
          (add-after
           'install 'move-doc
           (lambda* (#:key outputs #:allow-other-keys)
@@ -370,16 +501,16 @@ developers using C++ or QML, a CSS & JavaScript like language.")
 (define-public qtbase
   (package
     (name "qtbase")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1kq422vb2zaic099pgzwk7c0qzgc3xap6qahw5vklrq0mgivvrk9"))
+               "01q1rn5rp9biq3z38953z2hgm4nirvp2jfv8wg7isnld8v1yg0b3"))
              ;; Use TZDIR to avoid depending on package "tzdata".
              (patches (search-patches "qtbase-use-TZDIR.patch"))
              (modules '((guix build utils)))
@@ -426,13 +557,13 @@ developers using C++ or QML, a CSS & JavaScript like language.")
        ("libxslt" ,libxslt)
        ("libxtst" ,libxtst)
        ("mtdev" ,mtdev)
-       ("mysql" ,mysql)
+       ("mariadb" ,mariadb)
        ("nss" ,nss)
        ("openssl" ,openssl)
        ("pcre2" ,pcre2)
        ("postgresql" ,postgresql)
        ("pulseaudio" ,pulseaudio)
-       ("sqlite" ,sqlite)
+       ("sqlite" ,sqlite-with-column-metadata)
        ("unixodbc" ,unixodbc)
        ("xcb-util" ,xcb-util)
        ("xcb-util-image" ,xcb-util-image)
@@ -447,6 +578,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("python" ,python-2)
+       ("vulkan-headers" ,vulkan-headers)
        ("ruby" ,ruby)))
     (arguments
      `(#:phases
@@ -475,42 +607,51 @@ developers using C++ or QML, a CSS & JavaScript like language.")
                  (("NO_DEFAULT_PATH") ""))
                ;; do not pass "--enable-fast-install", which makes the
                ;; configure process fail
-               (zero? (system*
-                       "./configure"
-                       "-verbose"
-                       "-prefix" out
-                       "-docdir" (string-append out "/share/doc/qt5")
-                       "-headerdir" (string-append out "/include/qt5")
-                       "-archdatadir" (string-append out "/lib/qt5")
-                       "-datadir" (string-append out "/share/qt5")
-                       "-examplesdir" (string-append
-                                       out "/share/doc/qt5/examples")
-                       "-opensource"
-                       "-confirm-license"
-                       ;; Do not build examples; if desired, these could go
-                       ;; into a separate output, but for the time being, we
-                       ;; prefer to save the space and build time.
-                       "-no-compile-examples"
-                       ;; Most "-system-..." are automatic, but some use
-                       ;; the bundled copy by default.
-                       "-system-sqlite"
-                       "-system-harfbuzz"
-                       "-system-pcre"
-                       ;; explicitly link with openssl instead of dlopening it
-                       "-openssl-linked"
-                       ;; explicitly link with dbus instead of dlopening it
-                       "-dbus-linked"
-                       ;; don't use the precompiled headers
-                       "-no-pch"
-                       ;; drop special machine instructions that do not have
-                       ;; runtime detection
-                       ,@(if (string-prefix? "x86_64"
-                                             (or (%current-target-system)
-                                                 (%current-system)))
-                             '()
-                             '("-no-sse2"))
-                       "-no-mips_dsp"
-                       "-no-mips_dspr2")))))
+               (invoke
+                 "./configure"
+                 "-verbose"
+                 "-prefix" out
+                 "-docdir" (string-append out "/share/doc/qt5")
+                 "-headerdir" (string-append out "/include/qt5")
+                 "-archdatadir" (string-append out "/lib/qt5")
+                 "-datadir" (string-append out "/share/qt5")
+                 "-examplesdir" (string-append
+                                  out "/share/doc/qt5/examples")
+                 "-opensource"
+                 "-confirm-license"
+
+                 ;; These features require higher versions of Linux than the
+                 ;; minimum version of the glibc.  See
+                 ;; src/corelib/global/minimum-linux_p.h.  By disabling these
+                 ;; features Qt5 applications can be used on the oldest
+                 ;; kernels that the glibc supports, including the RHEL6
+                 ;; (2.6.32) and RHEL7 (3.10) kernels.
+                 "-no-feature-getentropy"  ; requires Linux 3.17
+
+                 ;; Do not build examples; if desired, these could go
+                 ;; into a separate output, but for the time being, we
+                 ;; prefer to save the space and build time.
+                 "-no-compile-examples"
+                 ;; Most "-system-..." are automatic, but some use
+                 ;; the bundled copy by default.
+                 "-system-sqlite"
+                 "-system-harfbuzz"
+                 "-system-pcre"
+                 ;; explicitly link with openssl instead of dlopening it
+                 "-openssl-linked"
+                 ;; explicitly link with dbus instead of dlopening it
+                 "-dbus-linked"
+                 ;; don't use the precompiled headers
+                 "-no-pch"
+                 ;; drop special machine instructions that do not have
+                 ;; runtime detection
+                 ,@(if (string-prefix? "x86_64"
+                                       (or (%current-target-system)
+                                           (%current-system)))
+                     '()
+                     '("-no-sse2"))
+                 "-no-mips_dsp"
+                 "-no-mips_dspr2"))))
          (add-after 'install 'patch-mkspecs
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -600,16 +741,16 @@ developers using C++ or QML, a CSS & JavaScript like language.")
 (define-public qtsvg
   (package (inherit qtbase)
     (name "qtsvg")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0yh3an9rc7fh013cw3bm318ap6428icsmnj38hhg1w6lpwr2gwm2"))))
+               "0rni3cdcli91v7k8ra9s9phpznvkza8qqvcrv9yyfrmlapwbn5mw"))))
     (propagated-inputs `())
     (native-inputs `(("perl" ,perl)))
     (inputs
@@ -662,7 +803,7 @@ HostData=lib/qt5
            (lambda* (#:key inputs outputs #:allow-other-keys)
              ;; Valid QT_BUILD_PARTS variables are:
              ;; libs tools tests examples demos docs translations
-             (zero? (system* "qmake" "QT_BUILD_PARTS = libs tools tests"))))
+             (invoke "qmake" "QT_BUILD_PARTS = libs tools tests")))
          (add-before 'check 'set-display
            (lambda _
              ;; make Qt render "offscreen", required for tests
@@ -675,19 +816,21 @@ HostData=lib/qt5
 (define-public qtimageformats
   (package (inherit qtsvg)
     (name "qtimageformats")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1nfxvf96wh1smdmcsk4m9f7zg69fgp844f8772qpv6v4m20p1qb9"))
+               "0s1s33k0wrnf9fi1wlm1kaq9hs1fx89597nhk53vzdfha42x3r97"))
              (modules '((guix build utils)))
              (snippet
-              '(delete-file-recursively "src/3rdparty"))))
+              '(begin
+                 (delete-file-recursively "src/3rdparty")
+                 #t))))
     (native-inputs `())
     (inputs
      `(("jasper" ,jasper)
@@ -704,16 +847,16 @@ support for MNG, TGA, TIFF and WBMP image formats.")))
 (define-public qtx11extras
   (package (inherit qtsvg)
     (name "qtx11extras")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1a125fi7lbxfps207i12jammm4cjbiawmp4sqa3bxqah8p21i6w7"))))
+               "12cha7pd3cjx7zr0l7rbi1j2pfwmfpdwc7w3dsqbyi1d0mhwl1zl"))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
@@ -728,16 +871,16 @@ from within Qt 5.")))
 (define-public qtxmlpatterns
   (package (inherit qtsvg)
     (name "qtxmlpatterns")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0ybz0i3wblvrm958s9ykp3a79bakjbb7k74q71mqaaswkv9imxgs"))))
+               "0ik7m1a0shjsyzs8n9hfx8m9hy1p3wg505slcs0xznj0pa0gdmaz"))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:phases phases)
@@ -757,16 +900,16 @@ xmlpatternsvalidator.")))
 (define-public qtdeclarative
   (package (inherit qtsvg)
     (name "qtdeclarative")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0r9dhfc6qmxlzn2v9r6z6n2mcq6pv1nmyh91g9hcdlkx40xqlqyw"))))
+               "1kgj6q53rk573yi47j32mn1mfk5ag98zvhv9qgrlb78y0gw8c392"))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
@@ -789,27 +932,16 @@ with JavaScript and C++.")))
 (define-public qtconnectivity
   (package (inherit qtsvg)
     (name "qtconnectivity")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "12qckqz6ldvn1czkkigadmgl07yk4gs74hy4ifh4hmpm7cv519yv"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments qtsvg)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (add-after 'unpack 'disable-failing-tests
-             ;; this test fails on armhf and aarch64
-             (lambda _
-               (substitute* "tests/auto/qndefnfcsmartposterrecord/tst_qndefnfcsmartposterrecord.cpp"
-                 (("QCOMPARE\\(record.action\\(\\), QNdefNfcSmartPosterRecord::UnspecifiedAction")
-                 "//QCOMPARE(record.action(), QNdefNfcSmartPosterRecord::UnspecifiedAction"))
-               #t))))))
+               "1ia21llw610wd7licdm81p8zpkrkvkc5yc7y4wplgg6k2jyip42q"))))
     (native-inputs
      `(("perl" ,perl)
        ("pkg-config" ,pkg-config)
@@ -824,16 +956,16 @@ with Bluetooth and NFC.")))
 (define-public qtwebsockets
   (package (inherit qtsvg)
     (name "qtwebsockets")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "00786d9m8skj68n5x9d8151zmmskx7ckhgcdd08hs9nly04h55vj"))))
+               "13cbr2pffv1hwvm8d8kzask0pyc2j3brgq23vi5i1i70kihrfqdf"))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
@@ -851,16 +983,16 @@ consume data received from the server, or both.")))
 (define-public qtsensors
   (package (inherit qtsvg)
     (name "qtsensors")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0n6lkkn7c9x8vcplmfvkx7jq6najh2mrwnfb3blrmkmpash3lgvr"))))
+               "1iv3gmk121myqdr64d9lf2m816ypxrb526gn0ssxx8gp4j4c69qf"))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:parallel-tests? _ #f) #f) ; can lead to race condition
@@ -884,16 +1016,16 @@ recognition API for devices.")))
 (define-public qtmultimedia
   (package (inherit qtsvg)
     (name "qtmultimedia")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0x2f3vpax7rq0lxnncbp5b248bxdicrwn8hv4hsas2g2283s0lj9"))
+               "0vbjrxsdahgbgpc2zcvgg3mpijzd5kknz5clfcw2cq3310yqyq15"))
              (modules '((guix build utils)))
              (snippet
               '(begin
@@ -901,7 +1033,8 @@ recognition API for devices.")))
                    "examples/multimedia/spectrum/3rdparty")
                  ;; We also prevent the spectrum example from being built.
                  (substitute* "examples/multimedia/multimedia.pro"
-                   (("spectrum") "#"))))))
+                   (("spectrum") "#"))
+                 #t))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:phases phases)
@@ -909,9 +1042,9 @@ recognition API for devices.")))
            (replace 'configure
              (lambda* (#:key outputs #:allow-other-keys)
                (let ((out (assoc-ref outputs "out")))
-                 (zero? (system* "qmake" "QT_BUILD_PARTS = libs tools tests"
-                                 (string-append "QMAKE_LFLAGS_RPATH=-Wl,-rpath," out "/lib -Wl,-rpath,")
-                                 (string-append "PREFIX=" out))))))))
+                 (invoke "qmake" "QT_BUILD_PARTS = libs tools tests"
+                         (string-append "QMAKE_LFLAGS_RPATH=-Wl,-rpath," out "/lib -Wl,-rpath,")
+                         (string-append "PREFIX=" out)))))))
        ((#:tests? _ #f) #f)))           ; TODO: Enable the tests
     (native-inputs
      `(("perl" ,perl)
@@ -934,20 +1067,22 @@ set of plugins for interacting with pulseaudio and GStreamer.")))
 (define-public qtwayland
   (package (inherit qtsvg)
     (name "qtwayland")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0x4q17k23akf14i3pyllr96s8lvprk1x006wp0mi5rhk4199cx1z"))
+               "0wdpxjr3zfmgcfg14zlwd8mjbc191pvlchj1xxd0lj30ldfy2daf"))
              (modules '((guix build utils)))
              (snippet
                ;; The examples try to build and cause the build to fail
-              '(delete-file-recursively "examples"))))
+              '(begin
+                 (delete-file-recursively "examples")
+                 #t))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:phases phases)
@@ -984,16 +1119,16 @@ compositor libraries.")))
 (define-public qtserialport
   (package (inherit qtsvg)
     (name "qtserialport")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "172i5cpqnk0c3m0hg08hgj15qvsyd1xvw9yf2dqicg3l10lqwg8c"))))
+               "0vkgvicm67vds2iqmhnjsqwnx1f8zhbzc31w6q198i0x8b76j6xh"))))
     (native-inputs `(("perl" ,perl)))
     (inputs
      `(("qtbase" ,qtbase)
@@ -1018,16 +1153,16 @@ interacting with serial ports from within Qt.")))
 (define-public qtserialbus
   (package (inherit qtsvg)
     (name "qtserialbus")
-    (version "5.9.5")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0gz5xsskv02yy078yffxyn8rdlklf4rsgnqrziyz5ywxwdh96gn5"))))
+               "07k4g5qfh657das2f5i6ph0hl4bva13yzlmxnay7qpzqcb0w4x0p"))))
     (inputs
      `(("qtbase" ,qtbase)
        ("qtserialport" ,qtserialport)))
@@ -1039,16 +1174,16 @@ and others.")))
 (define-public qtwebchannel
   (package (inherit qtsvg)
     (name "qtwebchannel")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1acs0fa5rxm3cir0lydc9a8685qagf1786vkssv51wk3v9r3lc4h"))))
+               "1z02dhrd1h2rpdhww9py9dnhss80xwf45n568y7gr3gay7ldlpwl"))))
     (native-inputs
      `(("perl" ,perl)
        ("qtdeclarative" ,qtdeclarative)
@@ -1060,19 +1195,77 @@ between the host (QML/C++ application) and the client (HTML/JavaScript
 application).  The transport mechanism is supported out of the box by the two
 popular web engines, Qt WebKit 2 and Qt WebEngine.")))
 
+(define-public qtwebglplugin
+  (package (inherit qtsvg)
+    (name "qtwebglplugin")
+    (version "5.11.2")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "https://download.qt.io/official_releases/qt/"
+                                 (version-major+minor version) "/" version
+                                 "/submodules/" name "-everywhere-src-"
+                                 version ".tar.xz"))
+             (sha256
+              (base32
+               "0vazz9yr1qgpcq7p77vg9mrjxy6hjabvwj9irw5l5w7fmsk2ns0n"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments qtsvg)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-after 'unpack 'disable-network-tests
+             (lambda _ (substitute* "tests/plugins/platforms/platforms.pro"
+                         (("webgl") "# webgl"))
+               #t))))))
+    (native-inputs '())
+    (inputs
+     `(("mesa" ,mesa)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtwebsockets" ,qtwebsockets)))
+    (synopsis "QPA plugin for running an application via a browser using
+streamed WebGL commands")
+    (description "Qt back end that uses WebGL for rendering. It allows Qt
+applications (with some limitations) to run in a web browser that supports
+WebGL.  WebGL is a JavaScript API for rendering 2D and 3D graphics within any
+compatible web browser without the use of plug-ins.  The API is similar to
+OpenGL ES 2.0 and can be used in HTML5 canvas elements")))
+
+(define-public qtwebview
+  (package (inherit qtsvg)
+    (name "qtwebview")
+    (version "5.11.2")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "https://download.qt.io/official_releases/qt/"
+                                 (version-major+minor version) "/" version
+                                 "/submodules/" name "-everywhere-src-"
+                                 version ".tar.xz"))
+             (sha256
+              (base32
+               "1r30n9vjcgh2cd2iycfwwwpmbz7grrd3iqrc0afwnri3vylnfqil"))))
+    (native-inputs
+     `(("perl" ,perl)))
+    (inputs
+     `(("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)))
+    (synopsis "Display web content in a QML application")
+    (description "Qt WebView provides a way to display web content in a QML
+application without necessarily including a full web browser stack by using
+native APIs where it makes sense.")))
+
 (define-public qtlocation
   (package (inherit qtsvg)
     (name "qtlocation")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "186jzv19v674n8jmm13v5xwv211lygih5657rlvbhc1s4jq6iv9p"))))
+               "0kh2c2ahg8xkpvqsva13i35ndsc0x0ypnmd6vix5pm5jvwg9366n"))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
@@ -1093,22 +1286,23 @@ positioning and geolocation plugins.")))
 (define-public qttools
   (package (inherit qtsvg)
     (name "qttools")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "11vfk6c8snsqwqj1xk53c0h2mkqr4gfa9kinp8py56x7sn15galm"))))
+               "1f1iqvksrlgkxdbagb6vvjib3argbv9l7iis6ymb8n0rfwn37s7h"))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
     (native-inputs
      `(("perl" ,perl)
-       ("qtdeclarative" ,qtdeclarative)))
+       ("qtdeclarative" ,qtdeclarative)
+       ("vulkan-headers" ,vulkan-headers)))
     (inputs
      `(("mesa" ,mesa)
        ("qtbase" ,qtbase)))
@@ -1120,16 +1314,16 @@ that helps in Qt development.")))
 (define-public qtscript
   (package (inherit qtsvg)
     (name "qtscript")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0lz0iv1baah7cxrpyiqzqp4fxxf75i21qd06ha7r5d80hq3xlia0"))
+               "0xprhd1brn30dqf5vy4inqgzpq48i8nlc428x9rr8fk5hdm4dhmj"))
              (patches (search-patches "qtscript-disable-tests.patch"))))
     (native-inputs
      `(("perl" ,perl)
@@ -1144,16 +1338,16 @@ ECMAScript and Qt.")))
 (define-public qtquickcontrols
   (package (inherit qtsvg)
     (name "qtquickcontrols")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "12yrmv6afjbd1fw3r8zjdrbq5l7cy7k5bxcyiv1m97gykfh0b8hn"))))
+               "1q11nr85436xzrf4mbrbav306hrz0s2qaclqhhb0g88vzcq2wxww"))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
@@ -1168,16 +1362,16 @@ can be used to build complete interfaces in Qt Quick.")))
 (define-public qtquickcontrols2
   (package (inherit qtsvg)
     (name "qtquickcontrols2")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0334ayansm743kf113rs3k9hi9qb6giscfx9xig3y1z7asisfa0m"))))
+               "116b5nhmsx898626s37r446yci7kxd3k7xap1dh9spqklkwlj1da"))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
@@ -1193,16 +1387,16 @@ not available.")))
 (define-public qtgraphicaleffects
   (package (inherit qtsvg)
     (name "qtgraphicaleffects")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1vxq4j7cb5cya1g234rxhfb361n45gp8c70gj8pc03njswkm7xwp"))))
+               "1zd9wjh2hhd6lby0z3ak0ff6zkbv73hh0drrg9qp2yrgjfismp59"))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
@@ -1226,14 +1420,16 @@ coloring, and many more.")))
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
                "0zwch9vn17f3bpy300jcfxx6cx9qymk5j7khx0x9k1xqid4166c3"))
              (modules '((guix build utils)))
              (snippet
-              '(delete-file-recursively "tools/opengldummy/3rdparty"))))
+              '(begin
+                 (delete-file-recursively "tools/opengldummy/3rdparty")
+                 #t))))
     (native-inputs `())
     (inputs
      `(("qtbase" ,qtbase)
@@ -1246,16 +1442,16 @@ backend for QtQuick scene graph.")
 (define-public qtgamepad
   (package (inherit qtsvg)
     (name "qtgamepad")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1ci6aapq0i8qbzkn9xxvxn1n81z3y28yrlyzw0anqzj9qp97cl6f"))))
+               "076874iyadj7pkprlk24h257nb8i4sni9c6kbixm5zrr2y73fbxf"))))
     (native-inputs
      `(("perl" ,perl)
        ("pkg-config" ,pkg-config)))
@@ -1276,23 +1472,24 @@ and mobile applications targeting TV-like form factors.")))
 (define-public qtscxml
   (package (inherit qtsvg)
     (name "qtscxml")
-    (version "5.9.5")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0knp328cinawz6xbhf9wd6h6gbwp74rb5cpmlr8gv3g5a7fjlsh1"))
+               "197p5x1dadgjb39pd2vw60r63lvz68i0pm5i8xbyzgzm94hwn9fn"))
              (modules '((guix build utils)))
              (snippet
               '(begin
                  (delete-file-recursively "tests/3rdparty")
                  ;; the scion test refers to the bundled 3rd party test code.
                  (substitute* "tests/auto/auto.pro"
-                   (("scion") "#"))))))
+                   (("scion") "#"))
+                 #t))))
     (inputs
      `(("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)))
@@ -1306,16 +1503,16 @@ also contains functionality to support data models and executable content.")))
 (define-public qtpurchasing
   (package (inherit qtsvg)
     (name "qtpurchasing")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "08sk8vw16pa1qv36rfr9dsbzlwlv6kznfpsq8wfabhkgbfl6awqs"))))
+               "1xld1yx085mhnqdipy29g2yy5af67hfm0wy4mvj7pl6y5qj8jw9d"))))
     (inputs
      `(("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)))
@@ -1326,19 +1523,21 @@ purchasing goods and services.")))
 (define-public qtcanvas3d
   (package (inherit qtsvg)
     (name "qtcanvas3d")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0agdxgk7knf6zkjdi6316y2k9zq72wcg5zn3cbhw4hzjw81qadgg"))
+               "0h7arss7wr0jwl87kiwgbf0nlcgpbriyf7cnv9j4h7g8d09a777x"))
              (modules '((guix build utils)))
              (snippet
-              '(delete-file-recursively "examples/canvas3d/3rdparty"))))
+              '(begin
+                 (delete-file-recursively "examples/canvas3d/3rdparty")
+                 #t))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
       ;; Building the tests depends on the bundled 3rd party javascript files,
@@ -1349,8 +1548,8 @@ purchasing goods and services.")))
          (replace 'configure
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
-               (zero? (system* "qmake" "QT_BUILD_PARTS = libs tools"
-                               (string-append "PREFIX=" out))))))))
+               (invoke "qmake" "QT_BUILD_PARTS = libs tools"
+                       (string-append "PREFIX=" out)))))))
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
     (native-inputs `())
     (inputs
@@ -1363,16 +1562,16 @@ drawing calls from Qt Quick JavaScript.")))
 (define-public qtcharts
   (package (inherit qtsvg)
     (name "qtcharts")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1rykb72gr95rxd0rvbl846ys8xvyyhrms1jz7l4hlwp6zn1jkxvm"))))
+               "0551qfqnsfiy8kb1ng2v0yn7s6ggy7ghcmis983sbzxzjv2i58zn"))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
@@ -1390,16 +1589,16 @@ selecting one of the charts themes.")
 (define-public qtdatavis3d
   (package (inherit qtsvg)
     (name "qtdatavis3d")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1ggwfnqf17mp5dkfr82q1qrimkb6wv3304vl8mjv1nq0zisckhjv"))))
+               "05pzvrhvxhxjlav4axrhwlnxjzlr7mi8k3f06g59ryrwmb99kd37"))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:tests? _ #f) #f))) ; TODO: Enable the tests
@@ -1417,16 +1616,16 @@ customized by using themes or by adding custom items and labels to them.")
 (define-public qtnetworkauth
   (package (inherit qtsvg)
     (name "qtnetworkauth")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0mqcqkp9h5bgzb3wfy239wh1c9s9zxd7mww11c0jyp56wk5balcx"))))
+               "1zmpvkhf2kmnr8vsa6jq675d5cpnmsg3f8yds6g91yq1g3prqdvr"))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
        ((#:phases phases)
@@ -1446,16 +1645,27 @@ implementation of OAuth and OAuth2 authenticathon methods for Qt.")))
 (define-public qtremoteobjects
   (package (inherit qtsvg)
     (name "qtremoteobjects")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1wb50dapv0l45c0rfmpiaddvwv9na50lmd5zmm052q9d1xb15f6b"))))
+               "06awsaf15rch1y9p2q9kdlmlaa8g28whbzf04b10zfflyijnvg7j"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments qtsvg)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-after 'unpack 'remove-failing-test
+             (lambda _
+               ;; This test can't find its imports.
+               (substitute* "tests/auto/qml/qml.pro"
+                 (("integration") "# integration")
+                 (("usertypes") "# usertypes"))
+               #t))))))
     (inputs
      `(("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)))
@@ -1468,16 +1678,19 @@ processes or computers.")))
 (define-public qtspeech
   (package (inherit qtsvg)
     (name "qtspeech")
-    (version "5.9.4")
+    (version "5.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qt.io/official_releases/qt/"
                                  (version-major+minor version) "/" version
-                                 "/submodules/" name "-opensource-src-"
+                                 "/submodules/" name "-everywhere-src-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "17h8hrixxcsn7pd5iipbj2hxpp5m2dhfq3w04wkamambb49qs80x"))))
+               "110xr2y174sayi9f6swzp1wx7mx4sw9rifcdx2bkbsnbfab6zg8a"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments qtsvg)
+       ((#:tests? _ #f) #f))) ; TODO: Enable the tests
     (inputs
      `(("qtbase" ,qtbase)))
     (native-inputs
@@ -1497,7 +1710,7 @@ message.")))
 (define-public python-sip
   (package
     (name "python-sip")
-    (version "4.19.3")
+    (version "4.19.12")
     (source
       (origin
         (method url-fetch)
@@ -1506,7 +1719,7 @@ message.")))
                          "sip-" version "/sip-" version ".tar.gz"))
         (sha256
          (base32
-          "0x2bghbprwl3az1ni3p87i0bq8r99694la93kg65vi0cz12gh3bl"))))
+          "08iqj9qyanc6a4bllbd87gv8pd1gkplw1jhfa1sz0gcq3g1pyq94"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("python" ,python-wrapper)))
@@ -1531,11 +1744,10 @@ message.")))
                     (lib (string-append out "/lib/python"
                                         python-major+minor
                                         "/site-packages")))
-               (zero?
-                 (system* "python" "configure.py"
-                          "--bindir" bin
-                          "--destdir" lib
-                          "--incdir" include))))))))
+               (invoke "python" "configure.py"
+                       "--bindir" bin
+                       "--destdir" lib
+                       "--incdir" include)))))))
     (home-page "https://www.riverbankcomputing.com/software/sip/intro")
     (synopsis "Python binding creator for C and C++ libraries")
     (description
@@ -1560,7 +1772,7 @@ module provides support functions to the automatically generated code.")
 (define-public python-pyqt
   (package
     (name "python-pyqt")
-    (version "5.9")
+    (version "5.11.2")
     (source
       (origin
         (method url-fetch)
@@ -1570,8 +1782,9 @@ module provides support functions to the automatically generated code.")
                          version ".tar.gz"))
         (sha256
          (base32
-          "15hh4z5vd45dcswjla58q6rrfr6ic7jfz2n7c8lwfb10rycpj3mb"))
-       (patches (search-patches "pyqt-configure.patch"))))
+          "00wn9svgyp0fsrkc4ma15zcxg31pw4gsgaz6nwb3fhy3al8miakw"))
+       (patches (search-patches "pyqt-configure.patch"
+                                "pyqt-public-sip.patch"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("qtbase" ,qtbase))) ; for qmake
@@ -1617,18 +1830,18 @@ module provides support functions to the automatically generated code.")
                                         python-major+minor
                                         "/site-packages"))
                     (stubs (string-append lib "/PyQt5")))
-               (zero? (system* "python" "configure.py"
-                               "--confirm-license"
-                               "--bindir" bin
-                               "--destdir" lib
-                               "--designer-plugindir" designer
-                               "--qml-plugindir" qml
-                               ; Where to install the PEP 484 Type Hints stub
-                               ; files. Without this the stubs are tried to be
-                               ; installed into the python package's
-                               ; site-package directory, which is read-only.
-                               "--stubsdir" stubs
-                               "--sipdir" sip))))))))
+               (invoke "python" "configure.py"
+                       "--confirm-license"
+                       "--bindir" bin
+                       "--destdir" lib
+                       "--designer-plugindir" designer
+                       "--qml-plugindir" qml
+                       ; Where to install the PEP 484 Type Hints stub
+                       ; files. Without this the stubs are tried to be
+                       ; installed into the python package's
+                       ; site-package directory, which is read-only.
+                       "--stubsdir" stubs
+                       "--sipdir" sip)))))))
     (home-page "https://www.riverbankcomputing.com/software/pyqt/intro")
     (synopsis "Python bindings for Qt")
     (description
@@ -1637,6 +1850,15 @@ framework.  The bindings are implemented as a set of Python modules and
 contain over 620 classes.")
     (license license:gpl3)))
 
+;; XXX: This is useful because qtwebkit does not build reliably at this time.
+;; Ultimately, it would be nicer to have a more modular set of python-pyqt-*
+;; packages that could be used together.
+(define-public python-pyqt-without-qtwebkit
+  (package (inherit python-pyqt)
+    (name "python-pyqt-without-qtwebkit")
+    (inputs
+     (alist-delete "qtwebkit" (package-inputs python-pyqt)))))
+
 (define-public python2-pyqt
   (package (inherit python-pyqt)
     (name "python2-pyqt")
@@ -1645,11 +1867,12 @@ contain over 620 classes.")
        ("qtbase" ,qtbase)))
     (inputs
      `(("python" ,python-2)
+       ("python2-enum34" ,python2-enum34)
        ,@(alist-delete "python" (package-inputs python-pyqt))))))
 
-(define-public python-pyqt-4
+(define-public python2-pyqt-4
   (package (inherit python-pyqt)
-    (name "python-pyqt")
+    (name "python2-pyqt")
     (version "4.12")
     (source
       (origin
@@ -1662,9 +1885,9 @@ contain over 620 classes.")
          (base32
           "1nw8r88a5g2d550yvklawlvns8gd5slw53yy688kxnsa65aln79w"))))
     (native-inputs
-     `(("python-sip" ,python-sip)
+     `(("python-sip" ,python2-sip)
        ("qt" ,qt-4)))
-    (inputs `(("python" ,python-wrapper)))
+    (inputs `(("python" ,python-2)))
     (arguments
      `(#:tests? #f ; no check target
        #:modules ((srfi srfi-1)
@@ -1693,19 +1916,10 @@ contain over 620 classes.")
                                "--sipdir" sip))))))))
     (license (list license:gpl2 license:gpl3)))) ; choice of either license
 
-(define-public python2-pyqt-4
-  (package (inherit python-pyqt-4)
-           (name "python2-pyqt")
-           (native-inputs
-            `(("python-sip" ,python2-sip)
-              ("qt" ,qt-4)))
-           (inputs
-            `(("python" ,python-2)))))
-
 (define-public qscintilla
   (package
     (name "qscintilla")
-    (version "2.10.2")
+    (version "2.10.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/pyqt/QScintilla2/"
@@ -1713,7 +1927,7 @@ contain over 620 classes.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1l2ylsv6s3wfhyx7qr5cxgkwwwhvbrpd2k7akgm9bvbyf4h1vcql"))))
+                "06hs6civq13dvzlws0spjb7gwyk6kynpnfwg5plhahnxf7g5h137"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -1770,6 +1984,10 @@ indicators, code completion and call tips.")
                             "Qsci/Makefile")
                (("\\$\\(INSTALL_ROOT\\)/gnu/store/[^/]+")
                 (assoc-ref outputs "out")))
+             ;; And fix the installed.txt file
+             (substitute* "installed.txt"
+               (("/gnu/store/[^/]+")
+                (assoc-ref outputs "out")))
              #t)))))
     (inputs
      `(("qscintilla" ,qscintilla)
@@ -1798,7 +2016,8 @@ This package provides the Python bindings.")))
                    (match %build-inputs
                      (((names . directories) ...)
                       (union-build (assoc-ref %outputs "out")
-                                   directories))))))
+                                   directories)
+                      #t)))))
     (inputs
      `(("python-pyqt" ,python-pyqt)
        ("python-qscintilla" ,python-qscintilla)))
@@ -1809,15 +2028,17 @@ This package provides the Python bindings.")))
 (define-public qtkeychain
   (package
     (name "qtkeychain")
-    (version "0.8.0")
+    (version "0.9.1")
     (source
       (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/frankosterfeld/qtkeychain/"
-                            "archive/v" version ".tar.gz"))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/frankosterfeld/qtkeychain/")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
         (sha256
-         (base32 "0bxi5pfhxdvwk8yxa06lk2d7lcibmfqhahbin82bqf3m341zd4ml"))))
+         (base32
+          "0h4wgngn2yl35hapbjs24amkjfbzsvnna4ixfhn87snjnq5lmjbc"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -1828,12 +2049,11 @@ This package provides the Python bindings.")))
      `(#:tests? #f ; No tests included
        #:phases
        (modify-phases %standard-phases
-         (add-before
-          'configure 'set-qt-trans-dir
+         (add-before 'configure 'set-qt-trans-dir
            (lambda _
              (substitute* "CMakeLists.txt"
               (("\\$\\{qt_translations_dir\\}")
-               "${CMAKE_INSTALL_PREFIX}/share/qt/translations"))
+               "${CMAKE_INSTALL_PREFIX}/share/qt5/translations"))
              #t)))))
     (home-page "https://github.com/frankosterfeld/qtkeychain")
     (synopsis "Qt API to store passwords")
@@ -1883,7 +2103,7 @@ securely.  It will not store any data unencrypted unless explicitly requested.")
              (substitute* '("doc/doc.pro")
                ;; We'll install them in the 'install-man-pages' phase.
                (("^unix:doc\\.files.*") ""))
-             (zero? (system* "qmake")))))
+             (invoke "qmake"))))
        (add-after 'install 'install-man-pages
          (lambda* (#:key outputs #:allow-other-keys)
            (let* ((out (assoc-ref outputs "out"))
@@ -1910,18 +2130,17 @@ different kinds of sliders, and much more.")
 (define-public qtwebkit
   (package
     (name "qtwebkit")
-    (version "5.9.1")
+    (version "5.212.0-alpha2")
     (source
       (origin
         (method url-fetch)
-        (uri (string-append "https://download.qt.io/official_releases/qt/"
-                            (version-major+minor version) "/" version
-                            "/submodules/" name "-opensource-src-"
-                            version ".tar.xz"))
+        (uri (string-append "https://github.com/annulen/webkit/releases/download/"
+                            name "-" version "/" name "-" version ".tar.xz"))
         (sha256
          (base32
-          "1ksjn1vjbfhdm4y4rg08ag4krk87ahp7qcdcpwll42l0rnz61998"))))
-    (build-system gnu-build-system)
+          "12lg7w00d8wsj672s1y5z5gm0xdcgs16nas0b5bgq4byavg03ygq"))
+        (patches (search-patches "qtwebkit-pbutils-include.patch"))))
+    (build-system cmake-build-system)
     (native-inputs
      `(("perl" ,perl)
        ("python" ,python-2.7)
@@ -1932,6 +2151,8 @@ different kinds of sliders, and much more.")
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("icu" ,icu4c)
+       ("glib" ,glib)
+       ("gst-plugins-base" ,gst-plugins-base)
        ("libjpeg" ,libjpeg)
        ("libpng" ,libpng)
        ("libwebp" ,libwebp)
@@ -1940,92 +2161,35 @@ different kinds of sliders, and much more.")
        ("libxrender" ,libxrender)
        ("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)
+       ("qtlocation" ,qtlocation)
        ("qtmultimedia" ,qtmultimedia)
+       ("qtsensors" ,qtsensors)
+       ("qtwebchannel" ,qtwebchannel)
        ("libxml2" ,libxml2)
        ("libxslt" ,libxslt)
        ("libx11" ,libx11)
        ("libxcomposite" ,libxcomposite)))
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'fix-qmlwebkit-plugins-rpath
-           (lambda _
-             (substitute* "Source/WebKit/qt/declarative/experimental/experimental.pri"
-               (("RPATHDIR_RELATIVE_TO_DESTDIR = \\.\\./\\.\\./lib")
-                "RPATHDIR_RELATIVE_TO_DESTDIR = ../../../../../lib"))
-             (substitute* "Source/WebKit/qt/declarative/public.pri"
-               (("RPATHDIR_RELATIVE_TO_DESTDIR = \\.\\./\\.\\./lib")
-                "RPATHDIR_RELATIVE_TO_DESTDIR = ../../../../lib"))
-             #t))
-         (replace 'configure
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let ((out (assoc-ref outputs "out")))
-                      (setenv "QMAKEPATH"
-                              (string-append (getcwd) "/Tools/qmake:"
-                                             (getenv "QMAKEPATH")))
-                      (system* "qmake"))))
-         ;; prevent webkit from trying to install into the qtbase store directory,
-         ;; and replace references to the build directory in linker options:
-         (add-before 'build 'patch-installpaths
-                     (lambda* (#:key outputs inputs #:allow-other-keys)
-                       (let* ((out (assoc-ref outputs "out"))
-                              (qtbase (assoc-ref inputs "qtbase"))
-                              (builddir (getcwd))
-                              (linkbuild (string-append "-L" builddir))
-                              (linkout (string-append "-L" out))
-                              (makefiles
-                               (map-in-order
-                                (lambda (i)
-                                  (let* ((in (car i))
-                                         (mf (string-append (dirname in) "/"
-                                                            (cdr i))))
-                                    ;; by default, these Makefiles are
-                                    ;; generated during install, but we need
-                                    ;; to generate them now
-                                    (system* "qmake" in "-o" mf)
-                                    mf))
-                                '(("Source/api.pri" . "Makefile.api")
-                                  ("Source/widgetsapi.pri"
-                                   . "Makefile.widgetsapi")
-                                  ("Source/WebKit2/WebProcess.pro"
-                                   . "Makefile.WebProcess")
-                                  ("Source/WebKit2/PluginProcess.pro"
-                                   . "Makefile.PluginProcess")
-                                  ("Source/WebKit/qt/declarative/public.pri"
-                                   . "Makefile.declarative.public")
-                                  ("Source/WebKit/qt/declarative/experimental/experimental.pri"
-                                   . "Makefile.declarative.experimental")
-                                  ("Source/WebKit/qt/examples/platformplugin/platformplugin.pro"
-                                   . "Makefile")))))
-                         ;; Order of qmake calls and substitutions matters here.
-                         (system* "qmake" "-prl" "Source/widgetsapi.pri"
-                                  "-o" "Source/Makefile")
-                         (substitute* (find-files "lib" "libQt5.*\\.prl")
-                           ((linkbuild) linkout))
-                         (substitute* (find-files "lib"
-                                                  "libQt5WebKit.*\\.la")
-                           (("libdir='.*'")
-                            (string-append "libdir='" out "/lib'"))
-                           ((linkbuild) linkout))
-                         (substitute* (find-files "lib/pkgconfig"
-                                                  "Qt5WebKit.*\\.pc")
-                           (((string-append "prefix=" qtbase))
-                            (string-append "prefix=" out))
-                           ((linkbuild) linkout))
-                         ;; Makefiles must be modified after .prl/.la/.pc
-                         ;; files, lest they get rebuilt:
-                         (substitute* makefiles
-                           (((string-append "\\$\\(INSTALL_ROOT\\)" qtbase))
-                            out )
-                           (((string-append "-Wl,-rpath," builddir))
-                            (string-append "-Wl,-rpath," out)))))))))
+     `(#:tests? #f ; no apparent tests; it might be necessary to set
+                   ; ENABLE_API_TESTS, see CMakeLists.txt
+       #:configure-flags (list ;"-DENABLE_API_TESTS=TRUE"
+                               "-DPORT=Qt"
+                               "-DUSE_LIBHYPHEN=OFF"
+                               "-DUSE_SYSTEM_MALLOC=ON"
+                               ;; XXX: relative dir installs to build dir?
+                               (string-append "-DECM_MKSPECS_INSTALL_DIR="
+                                              %output "/lib/qt5/mkspecs/modules")
+                               ;; Sacrifice a little speed in order to link
+                               ;; libraries and test executables in a
+                               ;; reasonable amount of memory.
+                               "-DCMAKE_SHARED_LINKER_FLAGS=-Wl,--no-keep-memory"
+                               "-DCMAKE_EXE_LINKER_FLAGS=-Wl,--no-keep-memory")))
     (home-page "https://www.webkit.org")
     (synopsis "Web browser engine and classes to render and interact with web
 content")
     (description "QtWebKit provides a Web browser engine that makes it easy to
 embed content from the World Wide Web into your Qt application.  At the same
 time Web content can be enhanced with native controls.")
-
     (license license:lgpl2.1+)))
 
 (define-public dotherside
@@ -2047,7 +2211,7 @@ time Web content can be enhanced with native controls.")
     (inputs
      `(("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)))
-    (home-page "https://github.com/frankosterfeld/qtkeychain")
+    (home-page "https://filcuc.github.io/DOtherSide/index.html")
     (synopsis "C language library for creating bindings for the Qt QML language")
     (description
      "DOtherSide is a C language library for creating bindings for the