From db481636a53d250f025f7f96685c97ef783437a3 Mon Sep 17 00:00:00 2001 From: Mike Rosset Date: Wed, 1 Jan 2020 08:03:52 -0800 Subject: gnu: Add qtwebengine. * gnu/packages/qt.scm (qtwebengine): New variable. Signed-off-by: Marius Bakke --- gnu/packages/qt.scm | 145 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index daa35c77cb..1f815f74f5 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -13,6 +13,7 @@ ;;; Copyright © 2018 Eric Bavier ;;; Copyright © 2019 Marius Bakke ;;; Copyright © 2018 John Soo +;;; Copyright © 2020 Mike Rosset ;;; ;;; This file is part of GNU Guix. ;;; @@ -52,30 +53,40 @@ #: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 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)) @@ -1521,6 +1532,140 @@ 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 + "08c60nh95m98mcqk444axs76xi6m9x0wvdxrzk9c2cxwqdbz59fa")))) + (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) + ("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) + ("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") -- cgit v1.2.3