summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
authorMarius Bakke <marius@gnu.org>2022-09-01 23:07:33 +0200
committerMarius Bakke <marius@gnu.org>2022-09-01 23:07:33 +0200
commit0c518f974e64f23846ae51ea2c68b479202fdca9 (patch)
treef7052c4adfc0d3c77b41652cf4f1e4b2e594d02c /gnu/packages
parenta38889b14d74e31c1b74c55d020445b760516c5d (diff)
parent4d361a6b5147e3f91573e9d3c8c540a233e7e142 (diff)
downloadguix-0c518f974e64f23846ae51ea2c68b479202fdca9.tar.gz
Merge branch 'master' into staging
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/audio.scm4
-rw-r--r--gnu/packages/autotools.scm12
-rw-r--r--gnu/packages/chromium.scm81
-rw-r--r--gnu/packages/firmware.scm66
-rw-r--r--gnu/packages/gnome.scm252
-rw-r--r--gnu/packages/graphics.scm22
-rw-r--r--gnu/packages/linux.scm14
-rw-r--r--gnu/packages/patches/cheese-vala-update.patch180
-rw-r--r--gnu/packages/patches/glade-gls-set-script-name.patch32
-rw-r--r--gnu/packages/patches/glade-test-widget-null-icon.patch30
-rw-r--r--gnu/packages/python-xyz.scm19
-rw-r--r--gnu/packages/radio.scm117
-rw-r--r--gnu/packages/version-control.scm3
13 files changed, 335 insertions, 497 deletions
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 8795caef71..663123e638 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -5843,7 +5843,7 @@ and DSD streams.")
 (define-public qpwgraph
   (package
     (name "qpwgraph")
-    (version "0.3.4")
+    (version "0.3.5")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -5852,7 +5852,7 @@ and DSD streams.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1xqmlbqj6ny4cpclzr8xyy6d6i392h9f1vmlbasp6xfy5b0yya94"))))
+                "01f4zabn22dp0yl7szxck6gkbayk1p5iqajfgzls7mdkba7515b6"))))
     (build-system cmake-build-system)
     (arguments (list #:tests? #f)) ;; no tests
     (inputs (list alsa-lib
diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm
index 71f4806b24..118f25ba09 100644
--- a/gnu/packages/autotools.scm
+++ b/gnu/packages/autotools.scm
@@ -519,6 +519,18 @@ complexity of working with shared libraries across platforms.")
     (license gpl3+)
     (home-page "https://www.gnu.org/software/libtool/")))
 
+(define-public libtool-2.4.7
+  (package
+    (inherit libtool)
+    (version "2.4.7")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/libtool/libtool-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "0pb3l4x37k6fj1lwnpzws55gi3pxl0hx56jm4bzmbrkw0mzj2zsg"))))))
+
 (define-public config
   (let ((revision "1")
         (commit "c8ddc8472f8efcadafc1ef53ca1d863415fddd5f"))
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index a5ce51a456..96e3f4d805 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -123,6 +123,7 @@
     "third_party/ced" ;BSD-3
     "third_party/cld_3" ;ASL2.0
     "third_party/closure_compiler" ;ASL2.0
+    "third_party/content_analysis_sdk" ;BSD-3
     "third_party/cpuinfo" ;BSD-2
     "third_party/crashpad" ;ASL2.0
     "third_party/crashpad/crashpad/third_party/lss" ;ASL2.0
@@ -316,7 +317,7 @@
   ;; run the Blink performance tests, just remove everything to save ~70MiB.
   '("third_party/blink/perf_tests"))
 
-(define %chromium-version "104.0.5112.101")
+(define %chromium-version "105.0.5195.52")
 (define %ungoogled-revision (string-append %chromium-version "-1"))
 (define %debian-revision "debian/102.0.5005.61-1")
 
@@ -328,7 +329,7 @@
     (file-name (git-file-name "ungoogled-chromium" %ungoogled-revision))
     (sha256
      (base32
-      "0jy5hjn61p5mnbqns3jlybim7iy8w9cmzm3i84wn68cyyx1bk25m"))))
+      "1smzgnd3zmh57pz7sk9nb7m31wbhx1x9y3ll3m4zaxwrrb41kghn"))))
 
 (define %debian-origin
   (origin
@@ -343,18 +344,45 @@
      (base32
       "1ln6r1qzlr7dsgvcbssvvc34my4mpkwv9hmvlb2dhjncs7isp65j"))))
 
-(define (debian-patch name)
+(define %chromium-gcc-patchset
+  (let ((commit "chromium-105-patchset-1"))
+    (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/stha09/chromium-patches")
+            (commit commit)))
+      (file-name (git-file-name "chromium-gcc-patches"
+                                (string-drop commit 9)))
+      (sha256
+       (base32
+        "08c3pbdqjdqi7rmyqkkh6q429611ikakf4gkzwg1gr07vyknwkfa")))))
+
+(define (origin-file origin file)
   (computed-file
-   (basename name)
-   #~(symlink (string-append #$%debian-origin "/debian/patches/" #$name)
+   (basename file)
+   #~(symlink (string-append #$origin "/" #$file)
               #$output)))
 
+(define (debian-patch name)
+  (origin-file %debian-origin (string-append "/debian/patches/" name)))
+
 (define %debian-patches
   (map debian-patch
        '("system/jsoncpp.patch"
          "system/zlib.patch"
          "system/openjpeg.patch")))
 
+(define (gcc-patch name)
+  (origin-file %chromium-gcc-patchset name))
+
+(define %gcc-patches
+  (map gcc-patch
+       '("chromium-105-AdjustMaskLayerGeometry-ceilf.patch"
+         "chromium-105-Bitmap-include.patch"
+         "chromium-105-browser_finder-include.patch"
+         "chromium-105-raw_ptr-noexcept.patch"
+         "chromium-105-Trap-raw_ptr.patch")))
+
 ;; Take a patch from Arch that reverts a change which requires an unreleased
 ;; version of ffmpeg.
 (define %ungoogled-chromium-unroll-ffmpeg.patch
@@ -405,7 +433,8 @@
           (for-each (lambda (patch)
                       (invoke "patch" "-p1" "--force" "--input"
                               patch "--no-backup-if-mismatch"))
-                    (append '#+%debian-patches '#+%guix-patches))
+                    (append '#+%debian-patches '#+%guix-patches
+                            '#+%gcc-patches))
 
           (invoke "patch" "-Rp1" "--force" "--input" "--no-backup-if-mismatch"
                   "--input" #$%ungoogled-chromium-unroll-ffmpeg.patch)
@@ -477,7 +506,7 @@
                                   %chromium-version ".tar.xz"))
               (sha256
                (base32
-                "0nrghgngxdn9richjnxii9y94dg5zpwc3gd3vx609r4xaphibw30"))
+                "0hkwjilzy0x28knm6nrkywnsmldhz4kgpnxka2iaghihkjzb4wfw"))
               (modules '((guix build utils)))
               (snippet (force ungoogled-chromium-snippet))))
     (build-system gnu-build-system)
@@ -611,25 +640,25 @@
                       "sandbox/linux/syscall_broker/broker_host.cc")
                   (("include \"base/third_party/valgrind/") "include \"valgrind/"))
 
-                (for-each (lambda (file)
-                            (substitute* file
-                              ;; Fix opus include path.
-                              ;; Do not substitute opus_private.h.
-                              (("#include \"opus\\.h\"")
-                               "#include \"opus/opus.h\"")
-                              (("#include \"opus_custom\\.h\"")
-                               "#include \"opus/opus_custom.h\"")
-                              (("#include \"opus_defines\\.h\"")
-                               "#include \"opus/opus_defines.h\"")
-                              (("#include \"opus_multistream\\.h\"")
-                               "#include \"opus/opus_multistream.h\"")
-                              (("#include \"opus_types\\.h\"")
-                               "#include \"opus/opus_types.h\"")))
-                          (find-files (string-append "third_party/webrtc/modules"
-                                                     "/audio_coding/codecs/opus")))
-                (substitute* "media/audio/audio_opus_encoder.h"
-                  (("\"third_party/opus/src/include/opus.h\"")
-                   "<opus/opus.h>"))
+                (substitute*
+                    (append
+                     '("media/audio/audio_opus_encoder.h")
+                     (find-files (string-append "third_party/webrtc/modules"
+                                                "/audio_coding/codecs/opus")))
+                  ;; Fix opus include path.
+                  ;; Do not substitute opus_private.h.
+                  (("#include \"opus\\.h\"")
+                   "#include \"opus/opus.h\"")
+                  (("#include \"opus_custom\\.h\"")
+                   "#include \"opus/opus_custom.h\"")
+                  (("#include \"opus_defines\\.h\"")
+                   "#include \"opus/opus_defines.h\"")
+                  (("#include \"opus_multistream\\.h\"")
+                   "#include \"opus/opus_multistream.h\"")
+                  (("#include \"opus_types\\.h\"")
+                   "#include \"opus/opus_types.h\"")
+                  (("\"third_party/opus/src/include/([a-z_-]+\\.h)\"" _ header)
+                   (string-append "<opus/" header ">")))
 
                 (substitute* "third_party/webrtc/rtc_base/strings/json.h"
                   (("#include \"third_party/jsoncpp/")
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 3a5ade4b77..696814cc71 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -205,32 +205,46 @@ driver.")
                 "02jf052qj1nl47ppqrgz3s9qapq4pajgkf6lbj5rxr5sshlrw44n"))))
     (build-system meson-build-system)
     (arguments
-     (list #:configure-flags #~(list "--wrap-mode=nofallback"
-                                     "-Dsystemd=false"
-                                     (string-append "-Defi_os_dir="
-                                                    #$gnu-efi "/lib")
-                                     "-Defi_binary=false"
-                                     (string-append "-Dudevdir="
-                                                    #$output "/lib/udev")
-                                     "--localstatedir=/var"
-                                     (string-append "--libexecdir="
-                                                    #$output "/libexec")
-                                     "-Dsupported_build=true")
-           #:glib-or-gtk? #t ;To wrap binaries and/or compile schemas
-           #:phases #~(modify-phases %standard-phases
-                        (add-after 'unpack 'make-source-writable
-                          (lambda _
-                            (for-each make-file-writable
-                                      (find-files "."))
-                            (substitute* "src/fu-self-test.c"
-                              (("/bin/sh")
-                               (which "sh")))))
-                        (add-before 'build 'setup-home
-                          (lambda _
-                            (setenv "HOME" "/tmp")))
-                        (add-before 'install 'no-polkit-magic
-                          (lambda _
-                            (setenv "PKEXEC_UID" "something"))))))
+     (list
+      #:configure-flags #~(list "--wrap-mode=nofallback"
+                                "-Dsystemd=false"
+                                (string-append "-Defi_os_dir="
+                                               #$gnu-efi "/lib")
+                                "-Defi_binary=false"
+                                (string-append "-Dudevdir="
+                                               #$output "/lib/udev")
+                                "--localstatedir=/var"
+                                (string-append "--libexecdir="
+                                               #$output "/libexec")
+                                "-Dsupported_build=true"
+                                ;; Disable LVFS, because it contains
+                                ;; nonfree firmwares.
+                                "-Dlvfs=disabled")
+      #:glib-or-gtk? #t               ;To wrap binaries and/or compile schemas
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'make-source-writable
+            (lambda _
+              (for-each make-file-writable
+                        (find-files "."))
+              (substitute* "src/fu-self-test.c"
+                (("/bin/sh")
+                 (which "sh")))))
+          (add-before 'build 'setup-home
+            (lambda _
+              (setenv "HOME" "/tmp")))
+          (add-before 'install 'no-polkit-magic
+            (lambda _
+              (setenv "PKEXEC_UID" "something")))
+          (add-after 'install 'ensure-all-remotes-are-disabled
+            ;; Because no remote currently promises to offer only free
+            ;; software firmwares, disable them to prevent a user to
+            ;; unknowingly install proprietary firmware updates.
+            (lambda _
+              (substitute* (find-files (string-append #$output "/etc")
+                                       "\\.conf$")
+                (("Enabled=true")
+                 "Enabled=false")))))))
     (native-inputs (list gobject-introspection
                          python-pygobject
                          python-pillow
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index fe20a9fa20..5cb577270b 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -977,30 +977,30 @@ cloud integration is offered through GNOME Online Accounts.")
                  `("GUIX_PYTHONPATH" =
                    (,(getenv "GUIX_PYTHONPATH") ,pylib)))))))))
     (native-inputs
-     `(("desktop-file-utils" ,desktop-file-utils)
-       ("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("gtk+:bin" ,gtk+ "bin")
-       ("itstools" ,itstool)
-       ("pkg-config" ,pkg-config)))
+     (list desktop-file-utils
+           gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           `(,gtk+ "bin")
+           itstool
+           pkg-config))
     (inputs
-     `(("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
-       ("grilo" ,grilo)
-       ("grilo-plugins" ,grilo-plugins)
-       ("gst-plugins-base" ,gst-plugins-base)
-       ("gst-plugins-good" ,gst-plugins-good)
-       ("gstreamer" ,gstreamer)
-       ("gvfs" ,gvfs)
-       ("json-glib" ,json-glib)
-       ("libdazzle" ,libdazzle)
-       ("libmediaart" ,libmediaart)
-       ("libsoup" ,libsoup-minimal-2)
-       ("pycairo" ,python-pycairo)
-       ("pygobject" ,python-pygobject)
-       ("python" ,python)
-       ("tracker" ,tracker)
-       ("tracker-miners" ,tracker-miners)))
+     (list `(,gnome-online-accounts "lib")
+           grilo
+           grilo-plugins
+           gst-plugins-base
+           gst-plugins-good
+           gstreamer
+           gvfs
+           json-glib
+           libdazzle
+           libmediaart
+           libsoup-minimal-2
+           python-pycairo
+           python-pygobject
+           python
+           tracker
+           tracker-miners))
     (synopsis "Simple music player for GNOME desktop")
     (description "GNOME Music is the new GNOME music playing application that
 aims to combine an elegant and immersive browsing experience with simple
@@ -3121,7 +3121,7 @@ API add-ons to make GTK+ widgets OpenGL-capable.")
 (define-public glade3
   (package
     (name "glade")
-    (version "3.38.2")
+    (version "3.40.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -3129,68 +3129,56 @@ API add-ons to make GTK+ widgets OpenGL-capable.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1dxsiz9ahqkxg2a1dw9sbd8jg59y5pdz4c1gvnbmql48gmj8gz4q"))
-              (patches (search-patches
-                        "glade-gls-set-script-name.patch"
-                        "glade-test-widget-null-icon.patch"))))
+                "171x7vshhw0nqgnhkcaqfylpr5qrmhclwmkva6wjm5s9m2pavj9i"))))
     (build-system meson-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'skip-gtk-update-icon-cache
-           ;; Don't create 'icon-theme.cache'.
-           (lambda _
-             (substitute* "meson_post_install.py"
-               (("gtk-update-icon-cache") "true"))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'skip-gtk-update-icon-cache
+            ;; Don't create 'icon-theme.cache'.
+            (lambda _
+              (substitute* "meson_post_install.py"
+                (("gtk-update-icon-cache") "true"))))
 
-         ,@(if (this-package-native-input "gjs")
-               '()
-               '((add-after 'unpack 'skip-gjs-test
-                   (lambda _
-                     ;; When the optional dependency on GJS is missing, skip
-                     ;; the GJS plugin tests.
-                     (substitute* "tests/modules.c"
-                       (("g_test_add.*JavaScript.*" all)
-                        (string-append "// " all "\n")))
-                     (delete-file "tests/catalogs/gjsplugin.xml")))))
-
-         (add-before 'configure 'fix-docbook
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "man/meson.build"
-               (("http://docbook.sourceforge.net/release/xsl/\
-current/manpages/docbook.xsl")
-                (string-append (assoc-ref inputs "docbook-xsl")
-                               "/xml/xsl/docbook-xsl-"
-                               ,(package-version docbook-xsl)
-                               "/manpages/docbook.xsl")))))
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "HOME" "/tmp")
-             ;; Tests require a running X server.
-             (system "Xvfb :1 &")
-             (setenv "DISPLAY" ":1"))))))
+          #$@(if (this-package-input "gjs")
+                 '()
+                 '((add-after 'unpack 'skip-gjs-test
+                     (lambda _
+                       ;; When the optional dependency on GJS is missing, skip
+                       ;; the GJS plugin tests.
+                       (substitute* "tests/modules.c"
+                         (("g_test_add.*JavaScript.*" all)
+                          (string-append "// " all "\n")))
+                       (delete-file "tests/catalogs/gjsplugin.xml")))))
+          (add-before 'check 'pre-check
+            (lambda _
+              (setenv "HOME" "/tmp")
+              ;; Tests require a running X server.
+              (system "Xvfb :1 &")
+              (setenv "DISPLAY" ":1"))))))
     (inputs
-     (list gtk+ libxml2))
-    (native-inputs
-     `(("hicolor-icon-theme" ,hicolor-icon-theme)
-       ("intltool" ,intltool)
-       ("itstool" ,itstool)
-       ("libxslt" ,libxslt) ;for xsltproc
-       ("docbook-xml" ,docbook-xml-4.2)
-       ("docbook-xsl" ,docbook-xsl)
-       ("glib:bin" ,glib "bin")
-       ("python" ,python)
-       ("python-pygobject" ,python-pygobject)
-       ("gobject-introspection" ,gobject-introspection)
-
-       ;; GJS depends on Rust, which is x86_64-only so far, so remove the GJS
-       ;; dependency on other platforms (FIXME).
-       ,@(if (target-x86-64?)
-             `(("gjs" ,gjs))
-             '())
-
-       ("pkg-config" ,pkg-config)
-       ("xorg-server" ,xorg-server-for-tests)))
+     (append
+      ;; GJS depends on Rust, which is x86_64-only so far, so remove the GJS
+      ;; dependency on other platforms (FIXME).
+      (if (target-x86-64?)
+          (list gjs)
+          '())
+      (list gtk+ libxml2)))
+    (native-inputs
+     (list docbook-xml-4.2
+           docbook-xsl
+           gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           hicolor-icon-theme
+           itstool
+           libxml2                      ;for XML_CATALOG_FILES
+           libxslt                      ;for xsltproc
+           python
+           python-pygobject
+           pkg-config
+           xorg-server-for-tests))
     (home-page "https://glade.gnome.org")
     (synopsis "GTK+ rapid application development tool")
     (description "Glade is a rapid application development (RAD) tool to
@@ -8202,7 +8190,7 @@ Cisco's AnyConnect SSL VPN.")
 (define-public network-manager-applet
   (package
     (name "network-manager-applet")
-    (version "1.22.0")
+    (version "1.28.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/network-manager-applet/"
@@ -8210,18 +8198,18 @@ Cisco's AnyConnect SSL VPN.")
                                   "network-manager-applet-" version ".tar.xz"))
               (sha256
                (base32
-                "1gj6lqqi613j2m49v9i82lqg1rv7kwwc8z4nxjcwpaa0ins803f7"))))
+                "17742kgmbj9w545zwnirgr0i40zl0xzp8jx7b8c1krp93mc4h0sw"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
        #:configure-flags
        '("-Dappindicator=yes")))
     (native-inputs
-     `(("intltool" ,intltool)
-       ("glib:bin" ,glib "bin") ; for glib-compile-resources, etc.
-       ("gobject-introspection" ,gobject-introspection)
-       ("gtk-doc" ,gtk-doc/stable)
-       ("pkg-config" ,pkg-config)))
+     (list gettext-minimal
+           `(,glib "bin") ; for glib-compile-resources, etc.
+           gobject-introspection
+           gtk-doc/stable
+           pkg-config))
     (propagated-inputs
      ;; libnm-gtk.pc refers to all these.
      (list dbus-glib gtk+ network-manager
@@ -8875,7 +8863,7 @@ like switching to windows and launching applications.")
 (define-public gtk-vnc
   (package
     (name "gtk-vnc")
-    (version "1.0.0")
+    (version "1.2.0")
     (source
      (origin
        (method url-fetch)
@@ -8884,36 +8872,38 @@ like switching to windows and launching applications.")
                        (version-major+minor version) "/"
                        name "-" version ".tar.xz"))
        (sha256
-        (base32 "1060ws037v556rx1qhfrcg02859rscksrzr8fq11himdg4d1y6m8"))))
+        (base32 "0jmr6igyzcj2wmx5v5ywaazvdz3hx6a6rys26yb4l4s71l281bvs"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t))   ; To wrap binaries and/or compile schemas
     (native-inputs
-     `(;; GJS depends on Rust, which is x86_64-only so far, so remove the GJS
-       ;; dependency on other platforms (FIXME).
-       ,@(if (target-x86-64?)
-             `(("gjs" ,gjs))
-             '())
-       ("glib:bin" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("intltool" ,intltool)
-       ("node" ,node)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)
-       ("vala" ,vala)))
+     (append
+      ;; GJS depends on Rust, which is x86_64-only so far, so remove the GJS
+      ;; dependency on other platforms (FIXME).
+       (if (target-x86-64?)
+           (list gjs)
+           '())
+       (list gettext-minimal
+             `(,glib "bin")
+             gobject-introspection
+             node
+             perl
+             pkg-config
+             python-wrapper
+             vala)))
     (inputs
-     `(("cairo" ,cairo)
-       ("librsvg" ,(librsvg-for-system))
-       ("glib" ,glib)
-       ("gnutls" ,gnutls)
-       ("libgcrypt" ,libgcrypt)
-       ("libsasl" ,cyrus-sasl)
-       ("pulseaudio" ,pulseaudio)
-       ("x11" ,libx11)
-       ("zlib" ,zlib)))
+     (list cairo (librsvg-for-system)))
     (propagated-inputs
-     (list gtk+))
+     ;; These are all in Requires or Requires.private of the .pc files.
+     (list cyrus-sasl
+           gdk-pixbuf
+           glib
+           gnutls
+           gtk+
+           libgcrypt
+           libx11
+           pulseaudio
+           zlib))
     (synopsis "VNC client viewer widget for GTK+")
     (description "GTK-VNC is a project providing client side APIs for the RFB
 protocol / VNC remote desktop technology.  It is built using coroutines allowing
@@ -10749,7 +10739,7 @@ photo-booth-like software, such as Cheese.")
 (define-public cheese
   (package
     (name "cheese")
-    (version "3.38.0")
+    (version "41.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -10757,8 +10747,7 @@ photo-booth-like software, such as Cheese.")
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0vyim2avlgq3a48rgdfz5g21kqk11mfb53b2l883340v88mp7ll8"))
-              (patches (search-patches "cheese-vala-update.patch"))))
+                "1y92glc0d6w323x2bdbc0gdh1jdffvkbv6cwlwm1rx0wgvv1svqh"))))
     (arguments
      `(#:glib-or-gtk? #t
        ;; Tests require GDK.
@@ -10771,15 +10760,6 @@ photo-booth-like software, such as Cheese.")
              (substitute* "meson_post_install.py"
                (("gtk-update-icon-cache") (which "true")))
              #t))
-         (add-after 'unpack 'patch-docbook-xml
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; Avoid a network connection attempt during the build.
-             (substitute* '("docs/reference/cheese.xml"
-                            "docs/reference/cheese-docs.xml")
-               (("http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd")
-                (string-append (assoc-ref inputs "docbook-xml")
-                               "/xml/dtd/docbook/docbookx.dtd")))
-             #t))
          (add-after 'install 'wrap-cheese
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((out             (assoc-ref outputs "out"))
@@ -10789,16 +10769,16 @@ photo-booth-like software, such as Cheese.")
              #t)))))
     (build-system meson-build-system)
     (native-inputs
-     `(("docbook-xsl" ,docbook-xsl)
-       ("docbook-xml" ,docbook-xml-4.3)
-       ("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")
-       ("gtk-doc" ,gtk-doc/stable)
-       ("itstool" ,itstool)
-       ("libxml2" ,libxml2)
-       ("libxslt" ,libxslt)
-       ("pkg-config" ,pkg-config)
-       ("vala" ,vala)))
+     (list docbook-xsl
+           docbook-xml-4.3
+           gettext-minimal
+           `(,glib "bin")
+           gtk-doc/stable
+           itstool
+           libxml2
+           libxslt
+           pkg-config
+           vala))
     (propagated-inputs
      (list gnome-video-effects
            clutter
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 931a558e8a..fdc72d5a8d 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2016, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016, 2021, 2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Tomáš Čech <sleep_walker@gnu.org>
 ;;; Copyright © 2016, 2019 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
@@ -771,11 +771,21 @@ applications, including the \"half\" 16-bit floating-point type.")
               (patches (search-patches "ilmbase-fix-tests.patch"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'change-directory
-                    (lambda _
-                      (chdir "IlmBase")
-                      #t)))))
+     (list #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'change-directory
+                          (lambda _
+                            (chdir "IlmBase")
+                            #t))
+                        #$@(if (target-x86-32?)
+                               #~((add-after 'change-directory 'skip-test
+                                    (lambda _
+                                      ;; XXX: This test fails on i686,
+                                      ;; possibly due to excess precision when
+                                      ;; comparing floats.  Skip it.
+                                      (substitute* "ImathTest/testFun.cpp"
+                                        (("assert \\(bit_cast<unsigned>.*" all)
+                                         (string-append "// " all "\n"))))))
+                               #~()))))
     (home-page "https://www.openexr.com/")
     (synopsis "Utility C++ libraries for threads, maths, and exceptions")
     (description
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index b6e87bfd27..b37e8c4580 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -8716,7 +8716,7 @@ of Linux application development.")
   (package
     (inherit pipewire)
     (name "pipewire")
-    (version "0.3.43")
+    (version "0.3.56")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -8725,17 +8725,13 @@ of Linux application development.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0gp2h0sidapcqmnifl0iipdmbzb18bdh8zdi7pfywr9gsksh0cxy"))))
+                "066g4ri2k8pdflclvr2919f6x98gmqrqyj1xyiingw2nn2pwgcf1"))))
     (arguments
      '(#:configure-flags
        (list (string-append "-Dudevrulesdir=" (assoc-ref %outputs "out")
                             "/lib/udev/rules.d")
              "-Dsystemd=disabled"
-             "-Dsession-managers=[]")
-       #:phases
-       (modify-phases %standard-phases
-         ;; Skip shrink-runpath, otherwise validate-runpath fails.
-         (delete 'shrink-runpath))))
+             "-Dsession-managers=[]")))
     (inputs (modify-inputs (package-inputs pipewire)
               (prepend avahi
                        bluez
@@ -8748,7 +8744,7 @@ of Linux application development.")
 (define-public wireplumber
   (package
     (name "wireplumber")
-    (version "0.4.6")
+    (version "0.4.11")
     (source
      (origin
        (method git-fetch)
@@ -8758,7 +8754,7 @@ of Linux application development.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0g7xkgkjlxrhs49hqkwrjk2hb478gq55wwydafvvbsv78vsa7qfb"))))
+        (base32 "09pg5cki1xn9bwn3bcjdc54z7b4iqkk1dhn560qyjcglq8xg7nnw"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Dsystemd=disabled"
diff --git a/gnu/packages/patches/cheese-vala-update.patch b/gnu/packages/patches/cheese-vala-update.patch
deleted file mode 100644
index cb18952ce4..0000000000
--- a/gnu/packages/patches/cheese-vala-update.patch
+++ /dev/null
@@ -1,180 +0,0 @@
-Taken from upstream:
-https://gitlab.gnome.org/GNOME/cheese/-/commit/7cf6268e54620bbbe5e6e61800c50fb0cb4bea57.patch.
-
-From 7cf6268e54620bbbe5e6e61800c50fb0cb4bea57 Mon Sep 17 00:00:00 2001 From:
-=?UTF-8?q?Corentin=20No=C3=ABl?= <corentin@elementary.io> Date: Fri, 16 Oct
-2020 19:56:26 +0200 Subject: [PATCH] Change GLib.PtrArray into
-GLib.GenericArray
-
-This is the vala-friendly way of handling GPtrArray.
-Fix several memory leaks on the go and unnecessary reference increase.
----
- src/cheese-preferences.vala | 26 ++++++++++++--------------
- src/cheese-window.vala      | 22 +++++++++++-----------
- src/vapi/cheese-common.vapi |  2 +-
- 3 files changed, 24 insertions(+), 26 deletions(-)
-
-diff --git a/src/cheese-preferences.vala b/src/cheese-preferences.vala
-index f56af7e0..80a92431 100644
---- a/src/cheese-preferences.vala
-+++ b/src/cheese-preferences.vala
-@@ -100,7 +100,7 @@ public PreferencesDialog (Cheese.Camera camera)
-    */
-   private void initialize_camera_devices ()
-   {
--    unowned GLib.PtrArray devices = camera.get_camera_devices ();
-+    GLib.GenericArray<unowned Cheese.CameraDevice> devices = camera.get_camera_devices ();
-     camera_model = new Gtk.ListStore (2, typeof (string), typeof (Cheese.CameraDevice));
- 
-     source_combo.model = camera_model;
-@@ -357,13 +357,13 @@ public PreferencesDialog (Cheese.Camera camera)
-    */
-   private void on_camera_update_num_camera_devices ()
-   {
--    unowned GLib.PtrArray devices = camera.get_camera_devices ();
--    Cheese.CameraDevice   dev;
-+    GLib.GenericArray<unowned Cheese.CameraDevice> devices = camera.get_camera_devices ();
-+    unowned Cheese.CameraDevice   dev;
- 
-     // Add (if) / Remove (else) a camera device.
--    if (devices.len > camera_model.iter_n_children (null))
-+    if (devices.length > camera_model.iter_n_children (null))
-     {
--      dev = (Cheese.CameraDevice) devices.index (devices.len - 1);
-+      dev = devices.get (devices.length - 1);
-       add_camera_device(dev);
-     }
-     else
-@@ -382,12 +382,11 @@ public PreferencesDialog (Cheese.Camera camera)
-       bool device_removed = false;
-       devices.foreach ((device) =>
-       {
--        var old_device = (Cheese.CameraDevice) device;
-         Cheese.CameraDevice new_device;
-         camera_model.get (iter, 1, out new_device, -1);
- 
-         // Found the device that was removed.
--        if (old_device != new_device)
-+        if (device != new_device)
-         {
-             remove_camera_device (iter, new_device, active_device);
-             device_removed = true;
-@@ -418,17 +417,16 @@ public PreferencesDialog (Cheese.Camera camera)
-    *
-    * @param device a Cheese.CameraDevice to add to the device combo box model
-    */
--  private void add_camera_device (void *device)
-+  private void add_camera_device (Cheese.CameraDevice device)
-   {
-     TreeIter iter;
--    Cheese.CameraDevice dev = (Cheese.CameraDevice) device;
- 
-     camera_model.append (out iter);
-     camera_model.set (iter,
--                      0, dev.get_name (),
--                      1, dev);
-+                      0, device.get_name (),
-+                      1, device);
- 
--    if (camera.get_selected_device () == dev)
-+    if (camera.get_selected_device () == device)
-         source_combo.set_active_iter (iter);
- 
-     if (camera_model.iter_n_children (null) > 1)
-@@ -445,12 +443,12 @@ public PreferencesDialog (Cheese.Camera camera)
-   private void remove_camera_device (TreeIter iter, Cheese.CameraDevice device_node,
-                              Cheese.CameraDevice active_device_node)
-   {
--      unowned GLib.PtrArray devices = camera.get_camera_devices ();
-+      GLib.GenericArray<unowned Cheese.CameraDevice> devices = camera.get_camera_devices ();
- 
-       // Check if the camera that we want to remove, is the active one
-       if (device_node == active_device_node)
-       {
--        if (devices.len > 0)
-+        if (devices.length > 0)
-           set_new_available_camera_device (iter);
-         else
-           this.hide ();
-diff --git a/src/cheese-window.vala b/src/cheese-window.vala
-index ff069808..cc119b68 100644
---- a/src/cheese-window.vala
-+++ b/src/cheese-window.vala
-@@ -1216,9 +1216,9 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow
-    */
-   public void on_switch_camera_clicked ()
-   {
--      Cheese.CameraDevice selected;
--      Cheese.CameraDevice next = null;
--      GLib.PtrArray cameras;
-+      unowned Cheese.CameraDevice selected;
-+      unowned Cheese.CameraDevice next = null;
-+      GLib.GenericArray<unowned Cheese.CameraDevice> cameras;
-       uint i;
- 
-       if (camera == null)
-@@ -1235,9 +1235,9 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow
- 
-       cameras = camera.get_camera_devices ();
- 
--      for (i = 0; i < cameras.len; i++)
-+      for (i = 0; i < cameras.length; i++)
-       {
--          next = (Cheese.CameraDevice )cameras.index (i);
-+          next = cameras.get (i);
- 
-           if (next == selected)
-           {
-@@ -1245,13 +1245,13 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow
-           }
-       }
- 
--      if (i + 1 < cameras.len)
-+      if (i + 1 < cameras.length)
-       {
--          next = (Cheese.CameraDevice )cameras.index (i + 1);
-+          next = cameras.get (i + 1);
-       }
-       else
-       {
--          next = (Cheese.CameraDevice )cameras.index (0);
-+          next = cameras.get (0);
-       }
- 
-       if (next == selected)
-@@ -1269,8 +1269,8 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow
-    */
-   public void set_switch_camera_button_state ()
-   {
--      Cheese.CameraDevice selected;
--      GLib.PtrArray cameras;
-+      unowned Cheese.CameraDevice selected;
-+      GLib.GenericArray<unowned Cheese.CameraDevice> cameras;
- 
-       if (camera == null)
-       {
-@@ -1288,7 +1288,7 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow
- 
-       cameras = camera.get_camera_devices ();
- 
--      if (cameras.len > 1)
-+      if (cameras.length > 1)
-       {
-          switch_camera_button.set_visible (true);
-          return;
-diff --git a/src/vapi/cheese-common.vapi b/src/vapi/cheese-common.vapi
-index 6517cdfc..e4ae7ad3 100644
---- a/src/vapi/cheese-common.vapi
-+++ b/src/vapi/cheese-common.vapi
-@@ -35,7 +35,7 @@ namespace Cheese
-     [CCode (has_construct_function = false)]
-     public Camera (Clutter.Actor video_texture, string camera_device_node, int x_resolution, int y_resolution);
-     public bool                        get_balance_property_range (string property, double min, double max, double def);
--    public unowned GLib.PtrArray       get_camera_devices ();
-+    public GLib.GenericArray<unowned Cheese.CameraDevice> get_camera_devices ();
-     public unowned Cheese.VideoFormat  get_current_video_format ();
-     public int                         get_num_camera_devices ();
-     public unowned Cheese.CameraDevice get_selected_device ();
--- 
-GitLab
-
diff --git a/gnu/packages/patches/glade-gls-set-script-name.patch b/gnu/packages/patches/glade-gls-set-script-name.patch
deleted file mode 100644
index 61fbdf3914..0000000000
--- a/gnu/packages/patches/glade-gls-set-script-name.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Taken from upstream:
-https://gitlab.gnome.org/GNOME/glade/-/commit/eb0429d318c017b57b9e59de1d5b3f142a0f455e.
-
-From 6cf1d3e11d4f8035f33c3003d33f6465896025a5 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
-Date: Tue, 18 May 2021 19:54:50 +0200
-Subject: [PATCH] plugins: Define an invalid but non-null file path as script
- path
-
-This is following the gjs applications behaviors, setting a valid string
-as the script path that will be shown in JS stack traces, even though
-won't load a real file through g_file_new_for_commandline_arg()
----
- plugins/gjs/glade-gjs.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/plugins/gjs/glade-gjs.c b/plugins/gjs/glade-gjs.c
-index e1779665..aeae9906 100644
---- a/plugins/gjs/glade-gjs.c
-+++ b/plugins/gjs/glade-gjs.c
-@@ -93,7 +93,7 @@ glade_gjs_init (const gchar *name)
- 
-   /* Importing the module will create all the GTypes so that glade can use them at runtime */
-   retval = gjs_context_eval (gjs_context_get_current (),
--                             import_sentence, -1, NULL,
-+                             import_sentence, -1, "<glade-gjs>",
-                              &exit_status,
-                              &error);
-   if (!retval && error)
--- 
-GitLab
-
diff --git a/gnu/packages/patches/glade-test-widget-null-icon.patch b/gnu/packages/patches/glade-test-widget-null-icon.patch
deleted file mode 100644
index 75668a2f68..0000000000
--- a/gnu/packages/patches/glade-test-widget-null-icon.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Taken from upstream:
-https://gitlab.gnome.org/GNOME/glade/-/commit/6cf1d3e11d4f8035f33c3003d33f6465896025a5.
-
-From eb0429d318c017b57b9e59de1d5b3f142a0f455e Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
-Date: Wed, 19 May 2021 00:10:29 +0200
-Subject: [PATCH] tests: Do not create a file icon when no filename is provided
-
-This would fail otherwise as GFileIcon requires a GFile parameter on
-construction.
----
- tests/create-widgets.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/tests/create-widgets.c b/tests/create-widgets.c
-index 2094059d..db8311f8 100644
---- a/tests/create-widgets.c
-+++ b/tests/create-widgets.c
-@@ -106,6 +106,8 @@ main (int   argc,
-       if (G_TYPE_IS_INSTANTIATABLE (adaptor_type) && !G_TYPE_IS_ABSTRACT (adaptor_type) &&
-           /* FIXME: can not create a themed icon without a name */
-           !g_type_is_a (adaptor_type, G_TYPE_THEMED_ICON) &&
-+          /* FIXME: can not create a file icon without a file name */
-+          !g_type_is_a (adaptor_type, G_TYPE_FILE_ICON) &&
-           /* FIXME: GtkPopoverMenu gives a few warnings */
-           !g_type_is_a (adaptor_type, GTK_TYPE_POPOVER_MENU) &&
-           /* FIXME: GtkFileChooserNative is hard to test here */
--- 
-GitLab
-
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index eaf88543fd..5f871ff887 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -743,6 +743,25 @@ variables into the markdown template")
 Markdown.  All extensions are found under the module namespace of pymdownx.")
     (license license:expat)))
 
+(define-public python-plotille
+  (package
+    (name "python-plotille")
+    (version "4.0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "plotille" version))
+              (sha256
+               (base32
+                "0fvsk6glxfphhqy405h05rj3v95jd1byl5hv2fyd5l31wln23shj"))))
+    (build-system python-build-system)
+    (native-inputs (list python-six))
+    (home-page "https://github.com/tammoippen/plotille")
+    (synopsis "Plot in the terminal using braille dots")
+    (description
+     "Plotille provides a figure class and graphing functions to create plots,
+scatter plots, histograms and heatmaps in the terminal using braille dots.")
+    (license license:expat)))
+
 (define-public python-mdx-gh-links
   (package
     (name "python-mdx-gh-links")
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index bc2c13b847..132cc95f12 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -1945,59 +1945,76 @@ defined radio with support for rtl-sdr.")
     (license license:gpl2+)))
 
 (define-public csdr
-  ;; No release since 2017, use commit directly.
-  (let ((commit "6ef2a74206887155290a54c7117636f66742f858")
-        (revision "1"))
-    (package
-      (name "csdr")
-      (version (git-version "0.15" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/ha7ilm/csdr")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "0ic35130lf66lk3wawgc5bcg711l7chv9al1hzdc1xrmq9qf9hri"))))
-      (build-system gnu-build-system)
-      (inputs
-       (list fftwf))
-      (arguments
-       `(#:make-flags
-         (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
-               ;; Don't print summary of SIMD optimized functions.
-               "PARSEVECT=no")
-         #:tests? #f  ; No check phase
-         #:phases
-         (modify-phases %standard-phases
-           (replace 'configure
-             (lambda* (#:key outputs #:allow-other-keys)
-               (substitute* "Makefile"
-                 (("PARAMS_MISC = -Wno-unused-result" all)
-                  ;; The 'validate-runpath' phase fails without this.
-                  (string-append
-                   all " -Wl,-rpath=" (assoc-ref outputs "out") "/lib"))
-                 (("PARAMS_SIMD =.*")
-                  ;; Disable to make reproducibility and cross-compilation work.
-                  "")
-                 (("gcc ")
-                  ,(string-append (cc-for-target) " "))
-                 (("g\\+\\+ ")
-                  ,(string-append (cxx-for-target) " ")))))
-           (add-before 'install 'make-installation-directories
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 (mkdir-p (string-append out "/bin"))
-                 (mkdir-p (string-append out "/lib"))))))))
-      (home-page "https://github.com/ha7ilm/csdr")
-      (synopsis "DSP for software defined radio")
-      (description
-       "This package includes the @code{libcsdr} library of
+  (package
+    (name "csdr")
+    (version "0.18.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jketterl/csdr")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0sdni0p9qcf4yw1wf5jz1pyb9wv6wmdblirh2q6s7jblh50vfwz1"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     (list pkg-config))
+    (inputs
+     (list fftwf libsamplerate))
+    (arguments
+     (list #:tests? #f)) ; No check phase
+    (home-page "https://github.com/jketterl/csdr")
+    (synopsis "DSP for software defined radio")
+    (description
+     "This package includes the @code{libcsdr} library of
 @acronym{DSP, Digital Signal Processing} functions for
 @acronym{SDRs, Software Defined Radios}, and the @code{csdr} command line
 program that can be used to build simple signal processing flow graphs.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
+
+(define-public convert-samples
+  (package
+    (name "convert-samples")
+    (version "3.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/glv2/convert-samples")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1d9w9m5agi8fiv1wk8nhjrbm2jkm2fks4ymbxkn0xphbwj3gwr7i"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     (list autoconf automake))
+    (inputs
+     (list liquid-dsp))
+    (synopsis "SDR samples converter")
+    (description
+     "@code{convert-samples} is a command-line program to convert samples
+received from software defined radios from one format to another.
+
+Supported formats:
+@itemize
+@item s8: signed 8 bit integer
+@item u8: unsigned 8 bit integer
+@item s16: signed 16 bit integer
+@item u16: unsigned 16 bit integer
+@item s32: signed 32 bit integer
+@item u32: unsigned 32 bit integer
+@item f32: 32 bit float
+@item cs8: complex made of signed 8 bit integers
+@item cu8: complex made of unsigned 8 bit integers
+@item cs16: complex made of signed 16 bit integers
+@item cu16: complex made of unsigned 16 bit integers
+@item cs32: complex made of signed 32 bit integers
+@item cu32: complex made of unsigned 32 bit integers
+@item cf32: complex made of 32 bit floats
+@end itemize")
+    (home-page "https://github.com/glv2/convert-samples")
+    (license license:gpl3+)))
 
 (define-public serialdv
   (package
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 82df12b55a..15a9278fe8 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -1549,6 +1549,9 @@ also walk each side of a merge and test those changes individually.")
                                         (assoc-ref inputs "inetutils")
                                         "/bin/logger\"")))
 
+                      (substitute* "src/lib/Gitolite/Cache.pm"
+                        (("/usr/sbin/redis-server") "redis-server"))
+
                       (substitute* "src/commands/svnserve"
                         (("/usr/bin/svnserve") "svnserve"))))
                   (replace 'install