summary refs log tree commit diff
path: root/gnu/packages/spice.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/spice.scm')
-rw-r--r--gnu/packages/spice.scm234
1 files changed, 119 insertions, 115 deletions
diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm
index 2be724c455..f492957fb2 100644
--- a/gnu/packages/spice.scm
+++ b/gnu/packages/spice.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2019, 2020, 2022 Marius Bakke <marius@gnu.org>
-;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +22,8 @@
 
 (define-module (gnu packages spice)
   #:use-module (gnu packages)
+  #:use-module (gnu packages acl)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
@@ -39,8 +41,11 @@
   #:use-module (gnu packages nss)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages polkit)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-build)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages security-token)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages virtualization)
@@ -51,6 +56,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system meson)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (guix gexp)
   #:use-module ((guix licenses) #:prefix license:)
@@ -60,19 +66,18 @@
   (package
     (name "usbredir")
     (home-page "https://spice-space.org")
-    (version "0.9.0")
+    (version "0.13.0")
     (source (origin
               (method url-fetch)
               (uri (string-append home-page "/download/" name "/" name "-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "19jnpzlanq0a1m5lmlcsp50wxf7icxvpvclx7hnf0zxw8azngqd3"))))
-    (build-system gnu-build-system)
-    (propagated-inputs
-     (list libusb))
-    (native-inputs
-     (list autoconf automake libtool pkg-config))
+                "0vn4gnd8nmnrvvj2rm7akf4sbcslmdk3v22k9kmxxrha5jhgm9jb"))))
+    (build-system meson-build-system)
+    (propagated-inputs (list libusb))
+    (inputs (list glib))
+    (native-inputs (list pkg-config))
     (synopsis "Tools for sending USB device traffic over a network")
     (description
      "Usbredir is a network protocol for sending USB device traffic over a
@@ -83,50 +88,46 @@ different (virtual) machine than the one to which the USB device is attached.")
 (define-public virglrenderer
   (package
     (name "virglrenderer")
-    (version "0.6.0")
+    (version "0.10.4")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                "https://www.freedesktop.org/software/virgl/"
-                "virglrenderer-" version ".tar.bz2"))
-              (patches (search-patches "virglrenderer-CVE-2017-6386.patch"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.freedesktop.org/virgl/virglrenderer")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "06kf0q4l52gzx5p63l8850hff8pmhp7xv1hk8zgx2apbw18y6jd5"))))
-    (build-system gnu-build-system)
-    (inputs
-      (list libepoxy mesa eudev))
-    (native-inputs
-      (list pkg-config))
+                "06pwavrknyhghlxyh7ckq4scjx47v9fhy08r6pn194whzvzivmqg"))))
+    (build-system meson-build-system)
+    (inputs (list libepoxy mesa))
+    (native-inputs (list pkg-config python))
     (synopsis "Virtual 3D GPU library")
     (description "A virtual 3D GPU library that enables a virtualized operating
 system to use the host GPU to accelerate 3D rendering.")
-    (home-page "https://virgil3d.github.io")
+    (home-page "https://gitlab.freedesktop.org/virgl/virglrenderer")
     (license (list license:expat license:bsd-3))))
 
 (define-public spice-protocol
   (package
     (name "spice-protocol")
-    (version "0.14.3")
+    (version "0.14.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                "https://www.spice-space.org/download/releases/"
-                "spice-protocol-" version ".tar.xz"))
+                    "https://www.spice-space.org/download/releases/"
+                    "spice-protocol-" version ".tar.xz"))
               (sha256
                (base32
-                "0yj8k7gcirrsf21w0q6146n5g4nzn2pqky4p90n5760m5ayfb1pr"))))
+                "04nr2w6ymy5jinfi3lj6205yd5h0swss3ykxqk7l3m4z1mhvmzq4"))))
     (build-system meson-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'install-documentation
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (doc (string-append out "/share/doc/"
-                                        ,name "-" ,version)))
-               (install-file "COPYING" doc)
-               #t))))))
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'install-documentation
+                 (lambda _
+                   (install-file "COPYING"
+                                 (string-append #$output "/share/doc/"
+                                                #$name "-" #$version)))))))
     (synopsis "Protocol headers for the SPICE protocol")
     (description "SPICE (the Simple Protocol for Independent Computing
 Environments) is a remote-display system built for virtual environments
@@ -137,77 +138,88 @@ which allows users to view a desktop computing environment.")
 (define-public spice-gtk
   (package
     (name "spice-gtk")
-    (version "0.37")
+    (version "0.42")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                "https://spice-space.org/download/gtk/"
-                "spice-gtk-" version ".tar.bz2"))
+                    "https://spice-space.org/download/gtk/"
+                    "spice-gtk-" version ".tar.xz"))
               (sha256
                (base32
-                "1drvj8y35gnxbnrxsipwi15yh0vs9ixzv4wslz6r3lra8w3bfa0z"))))
-    (build-system gnu-build-system)
-    (propagated-inputs
-      (list gstreamer
-            gst-plugins-base
-            gst-plugins-good
-            spice-protocol
-            ;; These are required by the pkg-config files.
-            gtk+
-            pixman
-            openssl-1.1))
-    (inputs
-      `(("glib-networking" ,glib-networking)
-        ("gobject-introspection" ,gobject-introspection)
-        ("json-glib" ,json-glib)
-        ("libepoxy" ,libepoxy)
-        ("libjpeg" ,libjpeg-turbo)
-        ("libxcb" ,libxcb)
-        ("lz4" ,lz4)
-        ("mesa" ,mesa)
-        ("pulseaudio" ,pulseaudio)
-        ("python" ,python)
-        ("opus" ,opus)
-        ("usbredir" ,usbredir)))
-    (native-inputs
-      `(("glib:bin" ,glib "bin")
-        ("intltool" ,intltool)
-        ("pkg-config" ,pkg-config)
-        ("vala" ,vala)))
+                "0n3s1rn7yzs28hnl9k6ql3a90qlv8w16djqj32m1zb8i31zi304k"))))
+    (build-system meson-build-system)
     (arguments
-      `(#:configure-flags
-        '("--enable-gstaudio"
-          "--enable-gstvideo"
-          "--enable-pulse"
-          "--enable-vala"
-          "--enable-introspection")
-        #:phases
-         (modify-phases %standard-phases
-           (add-before 'check 'disable-session-test
-             (lambda _
-               ;; XXX: Disable session tests, because they require USB support,
-               ;; which is not available in the build container.
-               (substitute* "tests/Makefile"
-                 (("test-session\\$\\(EXEEXT\\) ") ""))
-               #t))
-           (add-after 'install 'patch-la-files
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out"))
-                     (libjpeg (assoc-ref inputs "libjpeg")))
-                 ;; Add an absolute reference for libjpeg in the .la files
-                 ;; so it does not have to be propagated.
-                 (substitute* (find-files (string-append out "/lib") "\\.la$")
-                   (("-ljpeg")
-                    (string-append "-L" libjpeg "/lib -ljpeg")))
-                 #t)))
-           (add-after
-            'install 'wrap-spicy
-            (lambda* (#:key inputs outputs #:allow-other-keys)
-              (let ((out             (assoc-ref outputs "out"))
-                    (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
-                (wrap-program (string-append out "/bin/spicy")
-                  `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
-              #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-problematic-tests
+            (lambda _
+              ;; XXX: Disable the session and cd-emu tests, because they
+              ;; require USB support, which is not available in the build
+              ;; container.
+              (substitute* "tests/meson.build"
+                ((".*'session.c',.*") "")
+                (("tests_sources \\+= 'cd-emu.c'" all)
+                 (string-append "# " all)))))
+          (add-after 'unpack 'adjust-default-acl-helper-path
+            (lambda _
+              ;; The USB ACL helper used to allow USB redirection as a
+              ;; non-privileged user needs to be setuid, as configured by the
+              ;; gnome-desktop-service-type.  A user can still change the
+              ;; location by specifying the SPICE_USB_ACL_BINARY environment
+              ;; variable.
+              (substitute* "src/usb-acl-helper.c"
+                (("ACL_HELPER_PATH\"/spice-client-glib-usb-acl-helper\"")
+                 "\"/run/setuid-programs/spice-client-glib-usb-acl-helper\""))))
+          (add-before 'configure 'correct-polkit-dir
+            (lambda _
+              (substitute* "meson.build"
+                (("d.get_variable\\(pkgconfig: 'policydir')")
+                 (string-append "'" #$output "/share/polkit-1/actions'")))))
+          (add-before 'install 'fake-pkexec
+            (lambda _ (setenv "PKEXEC_UID" "-1")))
+          (add-after 'install 'wrap-spicy
+            (lambda* (#:key outputs #:allow-other-keys)
+              (wrap-program (search-input-file outputs "bin/spicy")
+                `("GST_PLUGIN_SYSTEM_PATH" ":"
+                  prefix (,(getenv "GST_PLUGIN_SYSTEM_PATH")))))))))
+    (native-inputs
+     (list `(,glib "bin")
+           intltool
+           pkg-config
+           python
+           python-pyparsing
+           python-six
+           vala))
+    (inputs
+     (list cyrus-sasl
+           glib-networking
+           gobject-introspection
+           json-glib
+           acl
+           libcap-ng
+           libepoxy
+           libxcb
+           mesa
+           polkit
+           pulseaudio
+           usbutils))
+    (propagated-inputs
+     (list gstreamer
+           gst-plugins-base
+           gst-plugins-good
+           spice-protocol
+           ;; These are required by the pkg-config files (needed for example
+           ;; when building GNOME Boxes).
+           gtk+
+           openssl-1.1
+           opus
+           libcacard
+           libjpeg-turbo
+           lz4
+           phodav
+           pixman
+           usbredir))
     (synopsis "Gtk client and libraries for SPICE remote desktop servers")
     (description "Gtk client and libraries for SPICE remote desktop servers.")
     (home-page "https://www.spice-space.org")
@@ -216,7 +228,7 @@ which allows users to view a desktop computing environment.")
 (define-public spice
   (package
     (name "spice")
-    (version "0.15.0")
+    (version "0.15.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -224,7 +236,7 @@ which allows users to view a desktop computing environment.")
                 "spice-server/spice-" version ".tar.bz2"))
               (sha256
                (base32
-                "1xd0xffw0g5vvwbq4ksmm3jjfq45f9dw20xpmi82g1fj9f7wy85k"))))
+                "0ym3n60gq0kzzknk5ir8ib09cxsak9hkv7mmgsyic69jmdkszadd"))))
     (build-system gnu-build-system)
     (propagated-inputs
       (list openssl-1.1 pixman spice-protocol))
@@ -270,7 +282,7 @@ Internet and from a wide variety of machine architectures.")
 (define-public spice-vdagent
   (package
     (name "spice-vdagent")
-    (version "0.21.0")
+    (version "0.22.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -278,9 +290,7 @@ Internet and from a wide variety of machine architectures.")
                 "spice-vdagent-" version ".tar.bz2"))
               (sha256
                (base32
-                "0n8jlc1pv6mkry161y656b1nk9hhhminjq6nymzmmyjl7k95ymzx"))
-              (patches
-               (search-patches "spice-vdagent-glib-2.68.patch"))))
+                "18472sqr0gibzgzi48dpcbnvm78l05qrl5wv6xywqqj7r9dd3c4k"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -346,17 +356,11 @@ resolution scaling on graphical console window resize.")
                (base32
                 "1rrjlclm6ad63gah1fa4yfwrz4z6vgq2yrybbvzvvdbxrgl4vgzv"))))
     (build-system meson-build-system)
-    (arguments
-     (list #:configure-flags
-           ;; XXX: For some reason NSS is not automatically added on RUNPATH
-           ;; with newer versions of Meson (after 0.60).
-           #~(list (string-append "-Dc_link_args=-Wl,-rpath="
-                                  (search-input-directory
-                                   %build-inputs "lib/nss")))))
     (propagated-inputs
-     (list glib ; Requires: in the pkg-config file
-           nss ; Requires.private: in the pkg-config
-           pcsc-lite))       ; file
+     ;; The following inputs are required in the pkg-config file.
+     (list glib
+           nss
+           pcsc-lite))
     (native-inputs
      (list openssl
            `(,nss "bin")