X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/998e6cdcd2a9fcce18b46676ce47990867227945..71441a3851801a14a3f9d6dedc0a80361c1a7317:/gnu/packages/qt.scm diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 8928c1ddd4..7aa9d0f0f9 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015 Andreas Enge ;;; Copyright © 2015 Sou Bunnbu -;;; Copyright © 2015, 2018, 2019 Ludovic Courtès +;;; Copyright © 2015, 2018, 2019, 2020 Ludovic Courtès ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner ;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016 Thomas Danckaert @@ -11,8 +11,10 @@ ;;; Copyright © 2018 Nicolas Goaziou ;;; Copyright © 2018 Hartmut Goebel ;;; Copyright © 2018 Eric Bavier -;;; Copyright © 2019 Marius Bakke +;;; Copyright © 2019, 2020 Marius Bakke ;;; Copyright © 2018 John Soo +;;; Copyright © 2020 Mike Rosset +;;; Copyright © 2020 Jakub Kądziołka ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,7 +39,9 @@ #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) + #:use-module (guix build-system python) #:use-module (guix packages) + #:use-module (guix deprecation) #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages base) @@ -45,36 +49,48 @@ #:use-module (gnu packages cmake) #:use-module (gnu packages compression) #:use-module (gnu packages cups) + #:use-module (gnu packages curl) #:use-module (gnu packages databases) #:use-module (gnu packages documentation) #:use-module (gnu packages fontutils) #:use-module (gnu packages flex) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gcc) + #:use-module (gnu packages ghostscript) #:use-module (gnu packages gl) #:use-module (gnu packages glib) + #:use-module (gnu packages gnupg) #:use-module (gnu packages gperf) #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) #:use-module (gnu packages icu4c) #:use-module (gnu packages image) + #:use-module (gnu packages libevent) #:use-module (gnu packages linux) #:use-module (gnu packages llvm) #:use-module (gnu packages maths) + #:use-module (gnu packages ninja) #:use-module (gnu packages nss) #:use-module (gnu packages pciutils) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages protobuf) #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) + #:use-module (gnu packages regex) #:use-module (gnu packages ruby) #:use-module (gnu packages sdl) + #:use-module (gnu packages serialization) #:use-module (gnu packages sqlite) + #:use-module (gnu packages telephony) #:use-module (gnu packages tls) + #:use-module (gnu packages valgrind) + #:use-module (gnu packages video) #:use-module (gnu packages vulkan) #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xiph) #:use-module (gnu packages xorg) #:use-module (gnu packages xml) #:use-module (srfi srfi-1)) @@ -100,7 +116,8 @@ ("qtscript" ,qtscript))) (build-system cmake-build-system) (arguments - `(#:phases + `(#:configure-flags '("-DCMAKE_CXX_STANDARD=11") + #:phases (modify-phases %standard-phases (add-after 'unpack 'delete-broken-tests (lambda _ @@ -126,65 +143,26 @@ other text such as code. The syntax uses the syntax of the Django template system, and the core design of Django is reused in Grantlee.") (license license:lgpl2.0+))) -(define-public qt +(define-public qt-4 (package (name "qt") - (version "5.12.5") - (outputs '("out" "examples")) + (version "4.8.7") (source (origin (method url-fetch) - (uri - (string-append - "http://download.qt.io/official_releases/qt/" - (version-major+minor version) - "/" version - "/single/qt-everywhere-src-" - version ".tar.xz")) + (uri (string-append "http://download.qt-project.org/official_releases/qt/" + (string-copy version 0 (string-rindex version #\.)) + "/" version + "/qt-everywhere-opensource-src-" + version ".tar.gz")) (sha256 (base32 - "160jr7w39lpd7cwnlbgf5yj8halan7zpnxj2hbwwlrvpvchrwad2")) + "183fca7n7439nlhxyg1z7aky0izgbyll3iwakw4gwivy16aj5272")) + (patches (search-patches "qt4-ldflags.patch")) (modules '((guix build utils))) (snippet - '(begin - ;; Remove qtwebengine, which relies on a bundled copy of - ;; chromium. Not only does it fail compilation in qt 5.5: - ;; 3rdparty/chromium/ui/gfx/codec/jpeg_codec.cc:362:10: - ;; error: cannot convert ‘bool’ to ‘boolean’ in return - ;; it might also pose security problems. - ;; Alternatively, we could use the "-skip qtwebengine" - ;; configuration option. - (delete-file-recursively "qtwebengine") - ;; The following snippets are copied from their mondular-qt counterparts. - (for-each - (lambda (dir) - (delete-file-recursively (string-append "qtbase/src/3rdparty/" dir))) - (list "double-conversion" "freetype" "harfbuzz-ng" - "libpng" "libjpeg" "pcre2" "sqlite" "xcb" - "zlib")) - (for-each - (lambda (dir) - (delete-file-recursively dir)) - (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") "#")) - (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)))) + ;; Remove webkit module, which is not built. + '(begin (delete-file-recursively "src/3rdparty/webkit") + #t)))) (build-system gnu-build-system) (propagated-inputs `(("mesa" ,mesa))) @@ -200,11 +178,9 @@ system, and the core design of Django is reused in Grantlee.") ("glib" ,glib) ("gstreamer" ,gstreamer) ("gst-plugins-base" ,gst-plugins-base) - ("harfbuzz" ,harfbuzz) ("icu4c" ,icu4c) ("jasper" ,jasper) ("libinput" ,libinput-minimal) - ("libjpeg" ,libjpeg) ("libmng" ,libmng) ("libpci" ,pciutils) ("libpng" ,libpng) @@ -227,7 +203,6 @@ system, and the core design of Django is reused in Grantlee.") ("mariadb" ,mariadb "lib") ("mariadb-dev" ,mariadb "dev") ("nss" ,nss) - ("openssl" ,openssl) ("postgresql" ,postgresql) ("pulseaudio" ,pulseaudio) ("pcre2" ,pcre2) @@ -240,209 +215,23 @@ system, and the core design of Django is reused in Grantlee.") ("xcb-util-keysyms" ,xcb-util-keysyms) ("xcb-util-renderutil" ,xcb-util-renderutil) ("xcb-util-wm" ,xcb-util-wm) - ("zlib" ,zlib))) + ("zlib" ,zlib) + ("libjpeg" ,libjpeg-turbo) + ("libsm" ,libsm) + ("openssl" ,openssl-1.0))) (native-inputs - `(("bison" ,bison) + `(;; XXX: The JavaScriptCore engine does not build with the C++11 standard. + ;; We could build it with -std=gnu++98, but then we'll get in trouble with + ;; ICU later. Just keep using GCC 5 for now. + ("gcc" ,gcc-5) + ("bison" ,bison) ("flex" ,flex) ("gperf" ,gperf) ("perl" ,perl) ("pkg-config" ,pkg-config) ("python" ,python-2) ("ruby" ,ruby) - ("vulkan-headers" ,vulkan-headers) ("which" ,(@ (gnu packages base) which)))) - (arguments - `(#:parallel-build? #f ; Triggers race condition in qtbase module on Hydra. - #:phases - (modify-phases %standard-phases - (add-after 'configure 'patch-bin-sh - (lambda _ - (substitute* '("qtbase/configure" - "qtbase/mkspecs/features/qt_functions.prf" - "qtbase/qmake/library/qmakebuiltins.cpp") - (("/bin/sh") (which "sh"))) - #t)) - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (examples (assoc-ref outputs "examples"))) - (substitute* '("configure" "qtbase/configure") - (("/bin/pwd") (which "pwd"))) - (substitute* "qtbase/src/corelib/global/global.pri" - (("/bin/ls") (which "ls"))) - ;; do not pass "--enable-fast-install", which makes the - ;; configure process fail - (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 . - ;; Qt 5: assembler error; see . - (supported-systems (delete "mips64el-linux" %supported-systems)))) - -(define-public qt-4 - (package (inherit qt) - (version "4.8.7") - (source (origin - (method url-fetch) - (uri (string-append "http://download.qt-project.org/official_releases/qt/" - (string-copy version 0 (string-rindex version #\.)) - "/" version - "/qt-everywhere-opensource-src-" - version ".tar.gz")) - (sha256 - (base32 - "183fca7n7439nlhxyg1z7aky0izgbyll3iwakw4gwivy16aj5272")) - (patches (search-patches "qt4-ldflags.patch")) - (modules '((guix build utils))) - (snippet - ;; Remove webkit module, which is not built. - '(begin (delete-file-recursively "src/3rdparty/webkit") - #t)))) - (inputs - `(,@(fold alist-delete - (package-inputs qt) - '("harfbuzz" "libjpeg" "openssl")) - ("libjpeg" ,libjpeg-8) - ("libsm" ,libsm) - ("openssl" ,openssl-1.0))) - (native-inputs - `(;; XXX: The JavaScriptCore engine does not build with the C++11 standard. - ;; We could build it with -std=gnu++98, but then we'll get in trouble with - ;; ICU later. Just keep using GCC 5 for now. - ("gcc" ,gcc-5) - ,@(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" ;; would refer to each other. @@ -520,12 +309,38 @@ system, and the core design of Django is reused in Grantlee.") ;; different "devices" due to bind-mounts. (copy-recursively olddoc docdir) (delete-file-recursively olddoc) - #t)))))))) + #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 . + ;; Qt 5: assembler error; see . + (supported-systems (delete "mips64el-linux" %supported-systems)))) (define-public qtbase (package (name "qtbase") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -534,7 +349,7 @@ system, and the core design of Django is reused in Grantlee.") version ".tar.xz")) (sha256 (base32 - "09fnwjyxl4fsvlajkdvizw9spfkxq5mvaqld7mckxnm9ppxvz2pw")) + "0pb68d30clksdhgy8n6rrs838bb3qcsfq4pv463yy2nr4p5kk2di")) ;; Use TZDIR to avoid depending on package "tzdata". (patches (search-patches "qtbase-use-TZDIR.patch")) (modules '((guix build utils))) @@ -550,6 +365,7 @@ system, and the core design of Django is reused in Grantlee.") (build-system gnu-build-system) (propagated-inputs `(("mesa" ,mesa) + ;; Use which the package, not the function ("which" ,(@ (gnu packages base) which)))) (inputs `(("alsa-lib" ,alsa-lib) @@ -594,6 +410,7 @@ system, and the core design of Django is reused in Grantlee.") ("xcb-util-keysyms" ,xcb-util-keysyms) ("xcb-util-renderutil" ,xcb-util-renderutil) ("xcb-util-wm" ,xcb-util-wm) + ("xdg-utils" ,xdg-utils) ("zlib" ,zlib))) (native-inputs `(("bison" ,bison) @@ -601,7 +418,7 @@ system, and the core design of Django is reused in Grantlee.") ("gperf" ,gperf) ("perl" ,perl) ("pkg-config" ,pkg-config) - ("python" ,python-2) + ("python" ,python) ("vulkan-headers" ,vulkan-headers) ("ruby" ,ruby))) (arguments @@ -615,6 +432,14 @@ system, and the core design of Django is reused in Grantlee.") "qmake/library/qmakebuiltins.cpp") (("/bin/sh") (which "sh"))) #t)) + (add-after 'configure 'patch-xdg-open + (lambda _ + (substitute* '("src/platformsupport/services/genericunix/qgenericunixservices.cpp") + (("^.*const char \\*browsers.*$" all) + (string-append "*browser = QStringLiteral(\"" + (which "xdg-open") + "\"); return true; \n" all))) + #t)) (replace 'configure (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) @@ -651,6 +476,7 @@ system, and the core design of Django is reused in Grantlee.") ;; 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; if desired, these could go ;; into a separate output, but for the time being, we @@ -709,6 +535,16 @@ system, and the core design of Django is reused in Grantlee.") (("\\$\\$\\[QT_HOST_DATA/get\\]") archdata) (("\\$\\$\\[QT_HOST_DATA/src\\]") archdata)) #t))) + (add-after 'patch-mkspecs 'patch-prl-files + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; Insert absolute references to the qtbase libraries because + ;; QT_INSTALL_LIBS does not always resolve correctly, depending + ;; on context. See + (substitute* (find-files (string-append out "/lib") "\\.prl$") + (("\\$\\$\\[QT_INSTALL_LIBS\\]") + (string-append out "/lib"))) + #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 @@ -762,10 +598,28 @@ system, and the core design of Django is reused in Grantlee.") developers using C++ or QML, a CSS & JavaScript like language.") (license (list license:lgpl2.1 license:lgpl3)))) +;; This variant fixes a problem with the CMake macros shipped by qtbase. See +;; discussion at . +(define-public qtbase-patched + (let ((src (package-source qtbase))) + (hidden-package + (package + (inherit qtbase) + (source + (origin + (inherit src) + (patches + (append (search-patches "qtbase-QTBUG-81715.patch") + (origin-patches src))))))))) + +;; qt used to refer to the monolithic Qt 5.x package +(define-deprecated qt qtbase) + + (define-public qtsvg (package (inherit qtbase) (name "qtsvg") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -774,7 +628,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "0h4qcy5l3gzcgqp53nqqa1wlbxqklly402q9m5z1srwzfk7r39vm")))) + "1f3vqv3s83gjillhgi0wghyf3825fgy1ffhvkxhdk673shb0kxjb")))) (propagated-inputs `()) (native-inputs `(("perl" ,perl))) (inputs @@ -840,7 +694,7 @@ HostData=lib/qt5 (define-public qtimageformats (package (inherit qtsvg) (name "qtimageformats") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -849,7 +703,7 @@ HostData=lib/qt5 version ".tar.xz")) (sha256 (base32 - "02hzkrlqk3waiqgbjx7npyb7y85p2ri6p076ppkbjbsl6143j6cz")) + "02zpcbx71dz6xvga07dnzqwdfz9pjmy673n706fj8pxq9zi9xlcv")) (modules '((guix build utils))) (snippet '(begin @@ -871,7 +725,7 @@ support for MNG, TGA, TIFF and WBMP image formats."))) (define-public qtx11extras (package (inherit qtsvg) (name "qtx11extras") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -880,7 +734,7 @@ support for MNG, TGA, TIFF and WBMP image formats."))) version ".tar.xz")) (sha256 (base32 - "0s1a0sbnf7d415mkdrihjdybi0vsq5ccwjm6qrw0h14bwkrmlhl9")))) + "15hb90n47khsp3qnzyjd3mh8gi9qvy07dqdr4qspiww43r5mz293")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -895,7 +749,7 @@ from within Qt 5."))) (define-public qtxmlpatterns (package (inherit qtsvg) (name "qtxmlpatterns") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -904,9 +758,10 @@ from within Qt 5."))) version ".tar.xz")) (sha256 (base32 - "1gdsm12bfg0xg4g09ar26l8zqqqgbk22z522y7q8wyc7gw8dj1dr")))) + "0ys1kf0zdn8gak1ik9p7i7bdyfz2frvklcyz013s9wm1550h20lh")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) + ((#:tests? _ #f) #f) ; TODO: Enable the tests ((#:phases phases) `(modify-phases ,phases (add-after 'unpack 'disable-network-tests @@ -914,7 +769,8 @@ from within Qt 5."))) (("qxmlquery") "# qxmlquery") (("xmlpatterns ") "# xmlpatterns")) #t)))))) - (native-inputs `(("perl" ,perl))) + (native-inputs `(("perl" ,perl) + ("qtdeclarative" ,qtdeclarative))) (inputs `(("qtbase" ,qtbase))) (synopsis "Qt XML patterns module") (description "The QtXmlPatterns module is a XQuery and XPath engine for @@ -924,7 +780,7 @@ xmlpatternsvalidator."))) (define-public qtdeclarative (package (inherit qtsvg) (name "qtdeclarative") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -933,16 +789,16 @@ xmlpatternsvalidator."))) version ".tar.xz")) (sha256 (base32 - "144i5crdp9szj0906vs01bhgwvcx29a1pvrf6mp9w9819cyk5i92")))) + "1gg9xbv8ah4p55ws97brwn0csl0k3j1x6zdknrrsnh7j6nh0bp2w")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests (native-inputs `(("perl" ,perl) ("pkg-config" ,pkg-config) - ("python" ,python-2) - ("qtsvg" ,qtsvg) - ("qtxmlpatterns" ,qtxmlpatterns))) + ("python" ,python) + ("python-wrapper" ,python-wrapper) + ("qtsvg" ,qtsvg))) (inputs `(("mesa" ,mesa) ("qtbase" ,qtbase))) @@ -956,7 +812,7 @@ with JavaScript and C++."))) (define-public qtconnectivity (package (inherit qtsvg) (name "qtconnectivity") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -965,7 +821,7 @@ with JavaScript and C++."))) version ".tar.xz")) (sha256 (base32 - "12z8ing2bpkk53hgqn0y15j12npqv4sfkpgc2x6prx49srr2rxmx")))) + "06h71pd5w5prh722mcbgmx7l71xvh5xpjrlbg17yblx0n6wlhwb4")))) (native-inputs `(("perl" ,perl) ("pkg-config" ,pkg-config) @@ -980,7 +836,7 @@ with Bluetooth and NFC."))) (define-public qtwebsockets (package (inherit qtsvg) (name "qtwebsockets") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -989,7 +845,7 @@ with Bluetooth and NFC."))) version ".tar.xz")) (sha256 (base32 - "0qij55bifdg0ip9kc5ka6f6cl39nnn2bmplrhada23lwqjbycn2x")))) + "05rv52pp5zg4g14zh7c6jc77l426056b8xyr40ps6cpmb0jkrlbg")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1007,7 +863,7 @@ consume data received from the server, or both."))) (define-public qtsensors (package (inherit qtsvg) (name "qtsensors") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1016,7 +872,7 @@ consume data received from the server, or both."))) version ".tar.xz")) (sha256 (base32 - "118bra2ik3d2ji7cpy14plz25pl2ch15dpklr0zv4ns7dxq6ma73")))) + "0h77h34rn6cgy5qiqq163pj3bhbka1ydkfgjcx01ns1g9sgym6ib")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:parallel-tests? _ #f) #f) ; can lead to race condition @@ -1040,7 +896,7 @@ recognition API for devices."))) (define-public qtmultimedia (package (inherit qtsvg) (name "qtmultimedia") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1049,7 +905,7 @@ recognition API for devices."))) version ".tar.xz")) (sha256 (base32 - "1727wf76nlc6snc9800rky6zz45i240gr8b025j4vwayvkys986m")) + "07fvnjywn3hkrxfbxasmy83jr6jq9lf1grasfwij54hz6y0smg98")) (modules '((guix build utils))) (snippet '(begin @@ -1073,7 +929,7 @@ recognition API for devices."))) (native-inputs `(("perl" ,perl) ("pkg-config" ,pkg-config) - ("python" ,python-2) + ("python" ,python) ("qtdeclarative" ,qtdeclarative))) (inputs `(("alsa-lib" ,alsa-lib) @@ -1091,7 +947,7 @@ set of plugins for interacting with pulseaudio and GStreamer."))) (define-public qtwayland (package (inherit qtsvg) (name "qtwayland") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1100,7 +956,7 @@ set of plugins for interacting with pulseaudio and GStreamer."))) version ".tar.xz")) (sha256 (base32 - "0iiqdwn54y8lsmq3y0w681q6wl0l18g06px1za9iyia9f4k33z99")) + "1ib61zh6jrab3yz592p47ldfgphi4i184kqf14vhwn31akibh6pw")) (modules '((guix build utils))) (snippet ;; The examples try to build and cause the build to fail @@ -1143,7 +999,7 @@ compositor libraries."))) (define-public qtserialport (package (inherit qtsvg) (name "qtserialport") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1152,7 +1008,7 @@ compositor libraries."))) version ".tar.xz")) (sha256 (base32 - "0qmq3yppc54vf7xrwyrwk91h6x04w0hf4bnw5b3y5kwyllhh7vzq")))) + "07vjv3p7n7n5v15wdpi8x5sbnvyjqdh85qfzf9mz8l6ppqp2hk12")))) (native-inputs `(("perl" ,perl))) (inputs `(("qtbase" ,qtbase) @@ -1177,7 +1033,7 @@ interacting with serial ports from within Qt."))) (define-public qtserialbus (package (inherit qtsvg) (name "qtserialbus") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1186,7 +1042,7 @@ interacting with serial ports from within Qt."))) version ".tar.xz")) (sha256 (base32 - "08icq26m8a0pnapwds0mv7haybizchkmqxg0g8r6xi83lxhswx44")))) + "1bkyk1v7bcq657n88a6675lj55vl9y8v46h4kf27v58yjzgiw842")))) (inputs `(("qtbase" ,qtbase) ("qtserialport" ,qtserialport))) @@ -1198,7 +1054,7 @@ and others."))) (define-public qtwebchannel (package (inherit qtsvg) (name "qtwebchannel") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1207,7 +1063,7 @@ and others."))) version ".tar.xz")) (sha256 (base32 - "1s65nfs4y031vldf7dk7rdjsfi8a0z04w787rwz0bvi20z11l7cz")))) + "0xff3fbbpcl0kkq0rg9npj127ycirygicbkxlf0v593sjpjp5bmh")))) (native-inputs `(("perl" ,perl) ("qtdeclarative" ,qtdeclarative) @@ -1222,7 +1078,7 @@ popular web engines, Qt WebKit 2 and Qt WebEngine."))) (define-public qtwebglplugin (package (inherit qtsvg) (name "qtwebglplugin") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1231,7 +1087,7 @@ popular web engines, Qt WebKit 2 and Qt WebEngine."))) version ".tar.xz")) (sha256 (base32 - "1xy45djrc4lcnvd5vq3ds2scpzkpcxhsnvmsmgbnvwmnwnrb5hxa")))) + "0fswnmhb8fm7wqgzv8cjy1j2sgb5mhx80jl411laawn7bf2ysjg0")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:phases phases) @@ -1257,7 +1113,7 @@ OpenGL ES 2.0 and can be used in HTML5 canvas elements"))) (define-public qtwebview (package (inherit qtsvg) (name "qtwebview") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1266,7 +1122,7 @@ OpenGL ES 2.0 and can be used in HTML5 canvas elements"))) version ".tar.xz")) (sha256 (base32 - "09ig6dyvzxl499vplmpdd6shvs2mfvbgqx48cgs3hs6d6p1xim56")))) + "1rvvkg6dl34hklllnlzlcffik746f15lzxdnwggc97dmx8n2vy6k")))) (native-inputs `(("perl" ,perl))) (inputs @@ -1280,7 +1136,7 @@ native APIs where it makes sense."))) (define-public qtlocation (package (inherit qtsvg) (name "qtlocation") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1289,7 +1145,7 @@ native APIs where it makes sense."))) version ".tar.xz")) (sha256 (base32 - "08h10khklf811bqn143pbkcipfn6nwysxs1mw5bcmi5banbvbj0j")))) + "07vq4aycayq2bg8yi4awidb25xyvws2ajbnrmad3rnpg1fw0bsfi")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1310,7 +1166,7 @@ positioning and geolocation plugins."))) (define-public qttools (package (inherit qtsvg) (name "qttools") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1319,7 +1175,7 @@ positioning and geolocation plugins."))) version ".tar.xz")) (sha256 (base32 - "09a0siyiny5wgsnyqxi5y7s1n2dc975wn831sryl71a9gc29bq18")))) + "0j1rl368sjknsmwp2f7bwqcb0sx13l3l4dxbm70873si9l8rf2l6")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1338,7 +1194,7 @@ that helps in Qt development."))) (define-public qtscript (package (inherit qtsvg) (name "qtscript") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1347,7 +1203,7 @@ that helps in Qt development."))) version ".tar.xz")) (sha256 (base32 - "1x0x9zr31ic5yki45r48bkmb9w9pvqawppklnws07117x15770q0")) + "06a02230mj4bd8qvjaf2q97grzbj1c1rq36x7236fnhjsikbq7fa")) (patches (search-patches "qtscript-disable-tests.patch")))) (native-inputs `(("perl" ,perl) @@ -1362,7 +1218,7 @@ ECMAScript and Qt."))) (define-public qtquickcontrols (package (inherit qtsvg) (name "qtquickcontrols") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1371,7 +1227,7 @@ ECMAScript and Qt."))) version ".tar.xz")) (sha256 (base32 - "0n953lnz6gsa8dpa7c93i4qv50jzdyahgs28qxvabnn3vbxsxpj6")))) + "1rar337vv0dx52r2gxwiwy1axn0fpy79rka09xizjlxsdg3vnf0h")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1386,7 +1242,7 @@ can be used to build complete interfaces in Qt Quick."))) (define-public qtquickcontrols2 (package (inherit qtsvg) (name "qtquickcontrols2") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1395,7 +1251,7 @@ can be used to build complete interfaces in Qt Quick."))) version ".tar.xz")) (sha256 (base32 - "13ybd87shs09lpr1rji5k0wik1rmwa8lh78vab5vcva8jb2bsi6p")))) + "0dx2jag6l5a80220fvmf49z1psliqf1ijqx6jsvvzv81mpjjd59s")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1411,7 +1267,7 @@ not available."))) (define-public qtgraphicaleffects (package (inherit qtsvg) (name "qtgraphicaleffects") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1420,7 +1276,7 @@ not available."))) version ".tar.xz")) (sha256 (base32 - "1ba6qr4h16zap9f36dw5qip97s4bv83prncqka043l70w2kxpgdx")))) + "1knapc14a80cn2f5bbfj7lhq9flr3v0gwjg9ka7xl8y642235w02")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1435,38 +1291,10 @@ components. The API consists of over 20 effects provided as separate QML types. The effects cover functional areas such as blending, masking, blurring, coloring, and many more."))) -(define-public qtdeclarative-render2d - ;; As of Qt-5.8.0 this module has been merged into qtdeclarative - (package (inherit qtsvg) - (name "qtdeclarative-render2d") - (version "5.7.1") - (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 - "0zwch9vn17f3bpy300jcfxx6cx9qymk5j7khx0x9k1xqid4166c3")) - (modules '((guix build utils))) - (snippet - '(begin - (delete-file-recursively "tools/opengldummy/3rdparty") - #t)))) - (native-inputs `()) - (inputs - `(("qtbase" ,qtbase) - ("qtdeclarative" ,qtdeclarative))) - (synopsis "Qt Declarative Render module") - (description "The Qt Declarative Render 2D module provides a Raster -backend for QtQuick scene graph.") - (properties `((superseded . ,qtdeclarative))))) - (define-public qtgamepad (package (inherit qtsvg) (name "qtgamepad") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1475,7 +1303,7 @@ backend for QtQuick scene graph.") version ".tar.xz")) (sha256 (base32 - "0czdmmbjc6zpj213pwwgjh0h2awzmrgkqy5gl5a5vk7p8wfz126y")))) + "150y7bc755l9y8w7nkg3gfw5n6rlj9hhq0ibc9g1xgllpr18qqq7")))) (native-inputs `(("perl" ,perl) ("pkg-config" ,pkg-config))) @@ -1496,7 +1324,7 @@ and mobile applications targeting TV-like form factors."))) (define-public qtscxml (package (inherit qtsvg) (name "qtscxml") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1505,7 +1333,7 @@ and mobile applications targeting TV-like form factors."))) version ".tar.xz")) (sha256 (base32 - "034n97nyz9ymjcxzqchvwr1bllzwav9hjpjkqggygcnd010wf7kg")) + "1dpvjkvwc3fj86vay8q8vzym73cix7ri2ianx87ck0gqjny51adg")) (modules '((guix build utils))) (snippet '(begin @@ -1527,7 +1355,7 @@ also contains functionality to support data models and executable content."))) (define-public qtpurchasing (package (inherit qtsvg) (name "qtpurchasing") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1536,7 +1364,7 @@ also contains functionality to support data models and executable content."))) version ".tar.xz")) (sha256 (base32 - "0nv1psq1vsrpvk8y3lqgxl0g1w7ll6nrxhgw9zxg71ykhm4vrkkv")))) + "0xjsn7p629ni68vk4xlw2cvcs53ipcqv1pa4hck0nabddcgcnzkg")))) (inputs `(("qtbase" ,qtbase) ("qtdeclarative" ,qtdeclarative))) @@ -1547,7 +1375,7 @@ purchasing goods and services."))) (define-public qtcanvas3d (package (inherit qtsvg) (name "qtcanvas3d") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1556,7 +1384,7 @@ purchasing goods and services."))) version ".tar.xz")) (sha256 (base32 - "036q2r1disvb8aaiix7p0yn4wwqfq22qnsfkmqvgnnncwdnf0lqm")) + "0l0c1p6jwz5rygyxslfw7jw3wbd23w5n9zg04aqlh5g15qx52fmn")) (modules '((guix build utils))) (snippet '(begin @@ -1586,7 +1414,7 @@ drawing calls from Qt Quick JavaScript."))) (define-public qtcharts (package (inherit qtsvg) (name "qtcharts") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1595,7 +1423,7 @@ drawing calls from Qt Quick JavaScript."))) version ".tar.xz")) (sha256 (base32 - "02361bf59bsnhk0kz767vbg4rbx8qn5z92avcfhh00ds2slk0z2c")))) + "0pyg2lpxmhf4amj57zihp5ry0y9m39xq5hbcx4hqj78bdm96ah23")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1613,7 +1441,7 @@ selecting one of the charts themes.") (define-public qtdatavis3d (package (inherit qtsvg) (name "qtdatavis3d") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1622,7 +1450,7 @@ selecting one of the charts themes.") version ".tar.xz")) (sha256 (base32 - "1ws46ijmxmrgg6rmg9mb5sfa2zx4rpjw1f7vqqcgpirhafznbq8x")))) + "09wbv4g29sq5z2fphk2910albr3iv3l14nch3ml77w6drw9mgzq7")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1640,7 +1468,7 @@ customized by using themes or by adding custom items and labels to them.") (define-public qtnetworkauth (package (inherit qtsvg) (name "qtnetworkauth") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1649,7 +1477,7 @@ customized by using themes or by adding custom items and labels to them.") version ".tar.xz")) (sha256 (base32 - "1wd967sqw0rf8j6wg4qm45rsrzfbg0kcf9j0rrq0qm9h5md4fcq9")))) + "0sspni7zllhspk70yjj2d0li9r4rs3iflnksj8mvjx2yl9qpryyb")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:phases phases) @@ -1669,7 +1497,7 @@ implementation of OAuth and OAuth2 authenticathon methods for Qt."))) (define-public qtremoteobjects (package (inherit qtsvg) (name "qtremoteobjects") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1678,7 +1506,7 @@ implementation of OAuth and OAuth2 authenticathon methods for Qt."))) version ".tar.xz")) (sha256 (base32 - "1kgarxc63jx12ifgjj8cw2033nm1p0lkxq6762zyy7yxjfpk3wdc")))) + "03qjj7l63wn1zqkmlja9yrnc38rf6b3apnmsn0kw0h61x72awskd")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:phases phases) @@ -1702,7 +1530,7 @@ processes or computers."))) (define-public qtspeech (package (inherit qtsvg) (name "qtspeech") - (version "5.12.5") + (version "5.12.7") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1711,7 +1539,8 @@ processes or computers."))) version ".tar.xz")) (sha256 (base32 - "0nzj6vs56qplym1rr1jbybbpr5jwqhbjqk9igpcj06kd4gbhqk7r")))) + "0q30m9l28zsdzdmny7wjskd2fjfrgh1l595wir6bhwhil95g3i0c")))) + (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1731,6 +1560,316 @@ the end-user is driving and cannot attend the incoming messages on the phone. In such a scenario, the messaging application can read out the incoming message."))) +(define-public qtwebengine + (package + (inherit qtsvg) + (name "qtwebengine") + (version (package-version qtbase)) + (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 + "1yj6pcj945fpbc7nihav0plxpx8ikylmxjy7wqdv5znslgf59dw3")) + (modules '((ice-9 ftw) + (ice-9 match) + (srfi srfi-1) + (srfi srfi-26) + (guix build utils))) + (snippet + '(begin + (let ((preserved-third-party-files + '("base/third_party/dmg_fp" + "base/third_party/dynamic_annotations" + "base/third_party/icu" + "base/third_party/libevent" + "base/third_party/nspr" + "base/third_party/superfasthash" + "base/third_party/symbolize" + "base/third_party/xdg_mime" + "base/third_party/xdg_user_dirs" + "net/third_party/http2" + "net/third_party/mozilla_security_manager" + "net/third_party/nss" + "net/third_party/spdy" + "net/third_party/quic" + "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/third_party/compiler" + "third_party/blink" + "third_party/boringssl" + "third_party/boringssl/src/third_party/fiat" + "third_party/breakpad" + "third_party/brotli" + "third_party/ced" + "third_party/crc32c" + "third_party/ffmpeg" + "third_party/googletest" + "third_party/hunspell" + "third_party/iccjpeg" + "third_party/icu" + "third_party/inspector_protocol" + "third_party/jinja2" + "third_party/jstemplate" + "third_party/khronos" + "third_party/leveldatabase" + "third_party/libaddressinput" + "third_party/libjingle_xmpp" + "third_party/libpng" + "third_party/libsrtp" + "third_party/libsync" + "third_party/libudev" + "third_party/libvpx" + "third_party/libwebm" + "third_party/libwebp" + "third_party/libxml" + "third_party/libxslt" + "third_party/libyuv" + "third_party/lss" + "third_party/markupsafe" + "third_party/mesa" + "third_party/metrics_proto" + "third_party/modp_b64" + "third_party/opus" + "third_party/ots" + "third_party/ply" + "third_party/polymer" + "third_party/protobuf" + "third_party/pyjson5" + "third_party/re2" + "third_party/rnnoise" + "third_party/skia" + "third_party/skia/third_party/gif" + "third_party/skia/third_party/skcms" + "third_party/smhasher" + "third_party/snappy" + "third_party/sqlite" + "third_party/usrsctp" + "third_party/web-animations-js" + "third_party/webrtc" + "third_party/webrtc_overrides" + "third_party/widevine/cdm/widevine_cdm_common.h" + "third_party/widevine/cdm/widevine_cdm_version.h" + "third_party/woff2" + "third_party/yasm" + "third_party/zlib" + "url/third_party/mozilla" + "v8/src/third_party/utf8-decoder" + "v8/src/third_party/valgrind" + "v8/third_party/antlr4" + "v8/third_party/inspector_protocol")) + (protected (make-regexp "\\.(gn|gyp)i?$"))) + (define preserved-club + (map (lambda (member) + (string-append "./" member)) + preserved-third-party-files)) + (define (empty? dir) + (equal? (scandir dir) '("." ".."))) + (define (third-party? file) + (string-contains file "third_party/")) + (define (useless? file) + (any (cute string-suffix? <> file) + '(".zip" ".so" ".dll" ".exe" ".jar"))) + (define (parents child) + ;; Return all parent directories of CHILD up to and including + ;; the closest "third_party". + (let* ((dirs (match (string-split child #\/) + ((dirs ... last) dirs))) + (closest (list-index (lambda (dir) + (string=? "third_party" dir)) + (reverse dirs))) + (delim (- (length dirs) closest))) + (fold (lambda (dir prev) + (cons (string-append (car prev) "/" dir) + prev)) + (list (string-join (list-head dirs delim) "/")) + (list-tail dirs delim)))) + (define (remove-loudly file) + (format #t "deleting ~a...~%" file) + (force-output) + (delete-file file)) + (define (delete-unwanted-files child stat flag base level) + (match flag + ((or 'regular 'symlink 'stale-symlink) + (when (third-party? child) + (unless (or (member child preserved-club) + (any (cute member <> preserved-club) + (parents child)) + (regexp-exec protected child)) + (remove-loudly child))) + (when (and (useless? child) (file-exists? child)) + (remove-loudly child)) + #t) + ('directory-processed + (when (empty? child) + (rmdir child)) + #t) + (_ #t))) + + (with-directory-excursion "src/3rdparty" + ;; TODO: Try removing "gn" too for future versions of qtwebengine. + (delete-file-recursively "ninja") + + (with-directory-excursion "chromium" + ;; Delete bundled software and binaries that were not explicitly + ;; preserved above. + (nftw "." delete-unwanted-files 'depth 'physical) + + ;; Assert that each preserved item is present to catch removals. + (for-each (lambda (third-party) + (unless (file-exists? third-party) + (error (format #f "~s does not exist!~%" third-party)))) + preserved-club) + + ;; Use relative header locations instead of hard coded ones. + (substitute* + "base/third_party/dynamic_annotations/dynamic_annotations.c" + (("base/third_party/valgrind") "valgrind")) + (substitute* + "third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h" + (("third_party/curl") "curl")) + + ;; Replace Google Analytics bundle with an empty file and hope + ;; no one notices. + (mkdir-p "third_party/analytics") + (call-with-output-file + "third_party/analytics/google-analytics-bundle.js" + (lambda (port) + (const #t))))) + + ;; Do not enable support for loading the Widevine DRM plugin. + (substitute* "src/core/config/common.pri" + (("enable_widevine=true") + "enable_widevine=false")) + #t))))) + (build-system gnu-build-system) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex) + ("gperf" ,gperf) + ("ninja" ,ninja) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python-2" ,python-2) + ("ruby" ,ruby))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("atk" ,atk) + ("cups-minimal" ,cups-minimal) + ("curl" ,curl) + ("dbus" ,dbus) + ("ffmpeg" ,ffmpeg) + ("fontconfig" ,fontconfig) + ("harbuzz" ,harfbuzz) + ("icu4c" ,icu4c) + ("jsoncpp" ,jsoncpp) + ("lcms" ,lcms) + ("libcap" ,libcap) + ("libevent" ,libevent) + ("libgcrypt" ,libgcrypt) + ("libjpeg" ,libjpeg-turbo) + ("libvpx" ,libvpx) + ;; FIXME: configure does not find system lcms + ;; ("lcms" ,lcms) + ("libwebp" ,libwebp) + ("libx11" ,libx11) + ("libxcb" ,libxcb) + ("libxcomposite" ,libxcomposite) + ("libxcursor" ,libxcursor) + ("libxi" ,libxi) + ("libxkbcommon" ,libxkbcommon) + ;; FIXME: libxml2 needs to built with icu support though it links to + ;; libxml2 configure summary still states "Checking for compatible + ;; system libxml2... no" + ("libxml2" ,libxml2) + ("libxrandr" ,libxrandr) + ("libxrender" ,libxrender) + ("libxslt" ,libxslt) + ("libxtst" ,libxtst) + ("mesa" ,mesa) + ("minizip" ,minizip) + ("nss" ,nss) + ("opus" ,opus) + ("pciutils" ,pciutils) + ("protobuf" ,protobuf) + ("pulseaudio" ,pulseaudio) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtmultimedia" ,qtmultimedia) + ("qtwebchannel" ,qtwebchannel) + ("re2" ,re2) + ("snappy" ,snappy) + ("udev" ,eudev) + ("valgrind" ,valgrind) + ("xcb-util" ,xcb-util))) + (arguments + (substitute-keyword-arguments (package-arguments qtsvg) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'configure 'substitute-source + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (nss (assoc-ref inputs "nss")) + (udev (assoc-ref inputs "udev"))) + ;; Qtwebengine is not installed into the same prefix as + ;; qtbase. Some qtbase QTLibraryInfo constants will not + ;; work. Replace with the full path to the qtwebengine + ;; translations and locales in the store. + (substitute* "src/core/web_engine_library_info.cpp" + (("QLibraryInfo::location\\(QLibraryInfo::TranslationsPath\\)") + (string-append "QLatin1String(\"" out "/share/qt5/translations\")")) + (("QLibraryInfo::location\\(QLibraryInfo::DataPath\\)") + (string-append "QLatin1String(\"" out "/share/qt5\")"))) + ;; Substitute full dynamic library path for nss. + (substitute* "src/3rdparty/chromium/crypto/nss_util.cc" + (("libnssckbi.so") + (string-append nss "/lib/nss/libnssckbi.so"))) + ;; Substitute full dynamic library path for udev. + (substitute* "src/3rdparty/chromium/device/udev_linux/udev1_loader.cc" + (("libudev.so.1") + (string-append udev "/lib/libudev.so.1"))) + #t))) + (add-before 'configure 'set-env + (lambda _ + ;; Avoids potential race conditions. + (setenv "PYTHONDONTWRITEBYTECODE" "1") + (setenv "NINJAFLAGS" + (string-append "-k1" ;less verbose build output + ;; Respect the '--cores' option of 'guix build'. + " -j" (number->string (parallel-job-count)))) + #t)) + (replace 'configure + (lambda _ + ;; Valid QT_BUILD_PARTS variables are: + ;; libs tools tests examples demos docs translations + (invoke "qmake" "QT_BUILD_PARTS = libs tools" "--" + "--webengine-printing-and-pdf=no" + "--webengine-ffmpeg=system" + "--webengine-icu=system" + "--webengine-pepper-plugins=no"))))) + ;; Tests are disabled due to "Could not find QtWebEngineProcess error" + ;; It's possible this can be fixed by setting QTWEBENGINEPROCESS_PATH + ;; before running tests. + ((#:tests? _ #f) #f))) + (native-search-paths + (list (search-path-specification + (file-type 'regular) + (separator #f) + (variable "QTWEBENGINEPROCESS_PATH") + (files '("lib/qt5/libexec/QtWebEngineProcess"))))) + (home-page "https://wiki.qt.io/QtWebEngine") + (synopsis "Qt WebEngine module") + (description "The Qt5WebEngine module provides support for web applications +using the Chromium browser project. The Chromium source code has Google services +and binaries removed, and adds modular support for using system libraries.") + (license license:lgpl2.1+))) + (define-public python-sip (package (name "python-sip") @@ -1834,12 +1973,23 @@ module provides support functions to the automatically generated code.") ,@%gnu-build-system-modules) #:phases (modify-phases %standard-phases + ;; When building python-pyqtwebengine, can not be + ;; included. Here we substitute the full path to the header in the + ;; store. + (add-before 'configure 'substitute-source + (lambda* (#:key inputs #:allow-other-keys) + (let* ((qtbase (assoc-ref inputs "qtbase")) + (qtprinter.h (string-append "\"" qtbase "/include/qt5/QtPrintSupport/qprinter.h\""))) + (substitute* "sip/QtPrintSupport/qprinter.sip" + (("") + qtprinter.h)) + #t))) (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin")) (sip (string-append out "/share/sip")) - (plugins (string-append out "/plugins")) + (plugins (string-append out "/lib/qt5/plugins")) (designer (string-append plugins "/designer")) (qml (string-append plugins "/PyQt5")) (python (assoc-ref inputs "python")) @@ -1873,6 +2023,88 @@ framework. The bindings are implemented as a set of Python modules and contain over 620 classes.") (license license:gpl3))) +(define-public python-pyqtwebengine + (package + (name "python-pyqtwebengine") + (version "5.12.1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://www.riverbankcomputing.com/static/Downloads/PyQtWebEngine/" + version "/PyQtWebEngine_gpl-" version ".tar.gz")) + (sha256 + (base32 + "0wylkd7fh2g27y3710rpxmj9wx0wpi3z7qbv6khiddm15rkh81w6")))) + (build-system gnu-build-system) + (native-inputs + `(("python" ,python) + ("python-sip" ,python-sip) + ;; qtbase is required for qmake + ("qtbase" ,qtbase))) + (inputs + `(("python" ,python-wrapper) + ("python-sip" ,python-sip) + ("python-pyqt" ,python-pyqt) + ("qtbase" ,qtbase) + ("qtsvg" ,qtsvg) + ("qtdeclarative" ,qtdeclarative) + ("qtwebchannel" ,qtwebchannel) + ("python-pyqt" ,python-pyqt) + ("qtwebengine" ,qtwebengine))) + (arguments + `(#:modules ((srfi srfi-1) + ,@%gnu-build-system-modules) + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (sipdir (string-append out "/share/sip")) + (pyqt-sipdir (string-append + (assoc-ref inputs "python-pyqt") "/share/sip")) + (python (assoc-ref inputs "python")) + (python-version + (last (string-split python #\-))) + (python-major+minor + (string-join + (take (string-split python-version #\.) 2) ".")) + (lib (string-append out "/lib/python" + python-major+minor + "/site-packages/PyQt5")) + (stubs (string-append lib "/PyQt5"))) + + (mkdir-p sipdir) + (invoke "python" "configure.py" + "-w" + "--no-dist-info" + "--destdir" lib + "--no-qsci-api" + "--stubsdir" stubs + "--sipdir" sipdir + "--pyqt-sipdir" pyqt-sipdir)))) + ;; Because this has a different prefix than python-pyqt then we need + ;; to make this a namespace of it's own + (add-after 'install 'make-namespace + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((__init__.py (string-append + (assoc-ref outputs "out") + "/lib/python3.7/site-packages/PyQt5/__init__.py"))) + (with-output-to-file __init__.py + (lambda _ (display " +from pkgutil import extend_path +__path__ = extend_path(__path__, __name__) +"))) + #t)))))) + (home-page "https://www.riverbankcomputing.com/software/pyqtwebengine/intro") + (synopsis "Python bindings for QtWebEngine") + (description + "PyQtWebEngine is a set of Python bindings for The Qt Company's Qt +WebEngine libraries. The bindings sit on top of PyQt5 and are implemented as a +set of three modules. Prior to v5.12 these bindings were part of PyQt +itself.") + (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. @@ -2160,7 +2392,7 @@ different kinds of sliders, and much more.") (origin (method url-fetch) (uri (string-append "https://github.com/annulen/webkit/releases/download/" - name "-" version "/" name "-" version ".tar.xz")) + "qtwebkit-" version "/qtwebkit-" version ".tar.xz")) (sha256 (base32 "05syvwi3jw9abwsc93rmjkna0vyh6bkfrsqhwir48ms54icfwzim")) @@ -2181,7 +2413,7 @@ different kinds of sliders, and much more.") ("libjpeg" ,libjpeg) ("libpng" ,libpng) ("libwebp" ,libwebp) - ("sqlite" ,sqlite) + ("sqlite" ,sqlite-with-column-metadata) ("fontconfig" ,fontconfig) ("libxrender" ,libxrender) ("qtbase" ,qtbase) @@ -2234,16 +2466,17 @@ time Web content can be enhanced with native controls.") (define-public dotherside (package (name "dotherside") - (version "0.6.3") + (version "0.6.4") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/filcuc/DOtherSide/" - "archive/v" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/filcuc/DOtherSide") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "0azq7qlsrfdwbd6qsi7d3c1knn42qw0r47g43xf7clwbinapswpz")))) + "09fz6v8rp28997f235yaifj8p4vvsyv45knc1iivgdvx7msgcd0m")))) (build-system cmake-build-system) (native-inputs `(("qttools" ,qttools))) @@ -2317,8 +2550,7 @@ color-related widgets.") "0g8jacm2iqd7lw2m7f1dp1nnrsk38bl3m8pihm8zz9gxs8d31sf5")))) (build-system cmake-build-system) (inputs - `(("llvm-6" ,llvm-6) - ("clang-6" ,clang-6) + `(("clang-toolchain" ,clang-toolchain-6) ("libxml2" ,libxml2) ("libxslt" ,libxslt) ("python-wrapper" ,python-wrapper) @@ -2334,7 +2566,7 @@ color-related widgets.") (lambda _ (chdir "sources/shiboken2") #t)) (add-before 'configure 'set-build-env (lambda* (#:key inputs #:allow-other-keys) - (let ((llvm (assoc-ref inputs "llvm-6"))) + (let ((llvm (assoc-ref inputs "clang-toolchain"))) (setenv "CLANG_INSTALL_DIR" llvm) #t)))))) (home-page "https://wiki.qt.io/Qt_for_Python") @@ -2372,8 +2604,7 @@ color-related widgets.") `(("libcxx" ,libcxx-6) ("libxml2" ,libxml2) ("libxslt" ,libxslt) - ("llvm-6" ,llvm-6) - ("clang-6" ,clang-6) + ("clang-toolchain" ,clang-toolchain-6) ("qtbase" ,qtbase) ("qtdatavis3d" ,qtdatavis3d) ("qtlocation" ,qtlocation) @@ -2399,13 +2630,12 @@ color-related widgets.") ;; FIXME: Building tests fail. #:configure-flags '("-DBUILD_TESTS=FALSE") #:phases - (modify-phases - %standard-phases + (modify-phases %standard-phases (add-after 'unpack 'go-to-source-dir (lambda _ (chdir "sources/pyside2") #t)) (add-before 'configure 'set-clang-dir (lambda* (#:key inputs #:allow-other-keys) - (let ((clang (assoc-ref inputs "clang-6")) + (let ((clang (assoc-ref inputs "clang-toolchain")) (libcxx (assoc-ref inputs "libcxx"))) (setenv "CLANG_INSTALL_DIR" clang) (substitute* "cmake/Macros/PySideModules.cmake"