summary refs log tree commit diff
path: root/gnu/packages/linux.scm
diff options
context:
space:
mode:
authorMarius Bakke <marius@gnu.org>2022-02-13 14:24:53 +0100
committerMarius Bakke <marius@gnu.org>2022-02-13 14:24:53 +0100
commit76b6bbdf232b4b82cdd23cfe0d81331a4fd2edec (patch)
tree0e6a57ba08b9c6f9f5cbcdc5b5d9daeea91e428d /gnu/packages/linux.scm
parent1a5302435ff0d2822b823f5a6fe01faa7a85c629 (diff)
parente8af2ea63a7f497b8f8e19e206645109c0646e72 (diff)
downloadguix-76b6bbdf232b4b82cdd23cfe0d81331a4fd2edec.tar.gz
Merge branch 'master' into staging
Diffstat (limited to 'gnu/packages/linux.scm')
-rw-r--r--gnu/packages/linux.scm308
1 files changed, 174 insertions, 134 deletions
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 94eff5d5c8..98de8eae53 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012-2021, 2021-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Mark H Weaver <mhw@netris.org>
@@ -11,7 +11,7 @@
 ;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 Raymond Nicholson <rain1@openmailbox.org>
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
-;;; Copyright © 2016, 2018–2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2016, 2018-2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
@@ -19,7 +19,7 @@
 ;;; Copyright © 2016, 2018 Rene Saavedra <pacoon@protonmail.com>
 ;;; Copyright © 2016 Carlos Sánchez de La Lama <csanchezdll@gmail.com>
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
-;;; Copyright © 2017, 2018, 2020, 2021 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2017, 2018, 2020, 2021, 2022 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.com>
 ;;; Copyright © 2017 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2017, 2019, 2021 Mathieu Othacehe <othacehe@gnu.org>
@@ -358,116 +358,114 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
 ;; The current "stable" kernels. That is, the most recently released major
 ;; versions that are still supported upstream.
 
-;; Currently, no stable kernels are packaged.
+(define-public linux-libre-5.16-version "5.16.8")
+(define-public linux-libre-5.16-gnu-revision "gnu")
+(define deblob-scripts-5.16
+  (linux-libre-deblob-scripts
+   linux-libre-5.16-version
+   linux-libre-5.16-gnu-revision
+   (base32 "0c9c8zd85p84r8k4xhys8xw15pds71v0ca2b6hm1pr4f6lpzck0g")
+   (base32 "14vb7g784rm1s2a2dzs6pnz3998iwdjwx8665myddr7gd197rkaq")))
+(define-public linux-libre-5.16-pristine-source
+  (let ((version linux-libre-5.16-version)
+        (hash (base32 "05h3b11czr710lilmb5gq84a78cfz3jm03q2q0gcrpcaxq2mzajj")))
+   (make-linux-libre-source version
+                            (%upstream-linux-source version hash)
+                            deblob-scripts-5.16)))
 
 ;; The "longterm" kernels — the older releases with long-term upstream support.
 ;; Here are the support timelines:
 ;; <https://www.kernel.org/category/releases.html>
-(define-public linux-libre-5.15-version "5.15.16")
+(define-public linux-libre-5.15-version "5.15.22")
 (define-public linux-libre-5.15-gnu-revision "gnu")
 (define deblob-scripts-5.15
   (linux-libre-deblob-scripts
    linux-libre-5.15-version
    linux-libre-5.15-gnu-revision
    (base32 "1rfhwfzifmbpnrhmrn3srm736nkm1v6affw915d0fgqzqgi8qfai")
-   (base32 "04fj1x3zmi310cr3m9hxpi26gdcmwfsqciv5yb6q6rrnqjqs1pc0")))
+   (base32 "0mxm0wy3fyg7fn2n8k9b4zh62l4q00b4y9zf46im691zscwgikc2")))
 (define-public linux-libre-5.15-pristine-source
   (let ((version linux-libre-5.15-version)
-        (hash (base32 "150pzxra564z9xaaclmbbd29x4x9il8y78zz7szi50lzx0a0l2ms")))
+        (hash (base32 "1hv3ci37nz79m1dg83ha4hl1jjnl3l52lvdzx514sp8hqihgji1m")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.15)))
 
-(define-public linux-libre-5.10-version "5.10.93")
+(define-public linux-libre-5.10-version "5.10.99")
 (define-public linux-libre-5.10-gnu-revision "gnu1")
 (define deblob-scripts-5.10
   (linux-libre-deblob-scripts
    linux-libre-5.10-version
    linux-libre-5.10-gnu-revision
    (base32 "1swy3y851jnnmk3hc0khllpsifb98camlwyskpn1dyvjsgjljd8x")
-   (base32 "024rz0bp3n3r5nkwbib7byx10d72c2fh5cw9iv00diyzgnp819g7")))
+   (base32 "090y0z4a7b643w0v6c6mbgvl04mrlrhanil38mafl6dlnhad9zbl")))
 (define-public linux-libre-5.10-pristine-source
   (let ((version linux-libre-5.10-version)
-        (hash (base32 "1jxv7can60rc5i2yjgj8frcjvwi1jnba1jl8i3070xmb1d1qqy56")))
+        (hash (base32 "0j84g55d0v3832y9c5gh7bnmhnrb5bc9xdivps5n7n6km9c3b980")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.10)))
 
-(define-public linux-libre-5.4-version "5.4.173")
+(define-public linux-libre-5.4-version "5.4.178")
 (define-public linux-libre-5.4-gnu-revision "gnu1")
 (define deblob-scripts-5.4
   (linux-libre-deblob-scripts
    linux-libre-5.4-version
    linux-libre-5.4-gnu-revision
    (base32 "1nlgk8ajb5wl3aa96h9a0pb9j5a5wmrbpk63varn557x1d00r7wj")
-   (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
+   (base32 "1mp9d0b7mqw7cl65k0a18265cvn4qwcpnvna8r6n5m3y4pz3rik9")))
 (define-public linux-libre-5.4-pristine-source
   (let ((version linux-libre-5.4-version)
-        (hash (base32 "0ff2jvwxj55547wvwp94a8bsd610s72906d4nsyhiirrn9sy5s4r")))
+        (hash (base32 "19k2yzqlr4rarl086sr6vjnh0lq5wmg5n7r2p0cai9yfvq3spp2c")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.4)))
 
-(define-public linux-libre-4.19-version "4.19.225")
+(define-public linux-libre-4.19-version "4.19.228")
 (define-public linux-libre-4.19-gnu-revision "gnu1")
 (define deblob-scripts-4.19
   (linux-libre-deblob-scripts
    linux-libre-4.19-version
    linux-libre-4.19-gnu-revision
    (base32 "06pqv050bkii0hc2v7ymny5264w1bca8db0dp1pw9mfmjg865am5")
-   (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
+   (base32 "1mp9d0b7mqw7cl65k0a18265cvn4qwcpnvna8r6n5m3y4pz3rik9")))
 (define-public linux-libre-4.19-pristine-source
   (let ((version linux-libre-4.19-version)
-        (hash (base32 "15k7b04zx5ggfjagp8sfrylr9xgwgz3hb2bygdml7ka1jnbv76jb")))
+        (hash (base32 "14iis3x3jmfxwqqi7v7ijssqzha8d8nnydi4zqnpk53m45jw7km8")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.262")
+(define-public linux-libre-4.14-version "4.14.265")
 (define-public linux-libre-4.14-gnu-revision "gnu1")
 (define deblob-scripts-4.14
   (linux-libre-deblob-scripts
    linux-libre-4.14-version
    linux-libre-4.14-gnu-revision
    (base32 "02rxvr0gmxb3zfsyyzdmzgfq04gkdkv1cc38md0xfl0mxzdzdfyk")
-   (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
+   (base32 "1mp9d0b7mqw7cl65k0a18265cvn4qwcpnvna8r6n5m3y4pz3rik9")))
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "05yl51r5n3q9l8pq6azx3bbl69l79lk8vkdivy3cvgzdh59pizac")))
+        (hash (base32 "1iwjg2z8818g1sl6l79pm5590hzwpxqcxh7wcdb00y4m3maksr0s")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
 
-(define-public linux-libre-4.9-version "4.9.297")
+(define-public linux-libre-4.9-version "4.9.300")
 (define-public linux-libre-4.9-gnu-revision "gnu1")
 (define deblob-scripts-4.9
   (linux-libre-deblob-scripts
    linux-libre-4.9-version
    linux-libre-4.9-gnu-revision
    (base32 "0nai5m4rbh37qaj1xf2qj7656l2gacfh0847q5d07y22b048fq5n")
-   (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
+   (base32 "0wdaj40pcq9wg5xnz2zj3jj8bawhfgqxcwp6dnavbf9lq0gca48p")))
 (define-public linux-libre-4.9-pristine-source
   (let ((version linux-libre-4.9-version)
-        (hash (base32 "17yqnr6p0prgcw8nikjmi49ll4s77ylaixcja5m15cq9x36shfz4")))
+        (hash (base32 "1bzmnkhxgz093ninqg8bh348d7s4xmkld2bld8nl215gnji0wfdb")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))
 
-(define-public linux-libre-4.4-version "4.4.299")
-(define-public linux-libre-4.4-gnu-revision "gnu1")
-(define deblob-scripts-4.4
-  (linux-libre-deblob-scripts
-   linux-libre-4.4-version
-   linux-libre-4.4-gnu-revision
-   (base32 "1mmnv77432la5dkhpy1n8w59c0v6l08fyf2ggh294gyrx8nbci11")
-   (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
-(define-public linux-libre-4.4-pristine-source
-  (let ((version linux-libre-4.4-version)
-        (hash (base32 "019hmplv1zhghl840qky9awziba3gx7jm80khny44gjfbyzf7d4v")))
-    (make-linux-libre-source version
-                             (%upstream-linux-source version hash)
-                             deblob-scripts-4.4)))
-
 (define %boot-logo-patch
   ;; Linux-Libre boot logo featuring Freedo and a gnu.
   (origin
@@ -496,6 +494,11 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
     (patches (append (origin-patches source)
                      patches))))
 
+(define-public linux-libre-5.16-source
+  (source-with-patches linux-libre-5.16-pristine-source
+                       (list %boot-logo-patch
+                             %linux-libre-arm-export-__sync_icache_dcache-patch)))
+
 (define-public linux-libre-5.15-source
   (source-with-patches linux-libre-5.15-pristine-source
                        (list %boot-logo-patch
@@ -528,10 +531,6 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
   (source-with-patches linux-libre-4.9-pristine-source
                        (list %boot-logo-patch)))
 
-(define-public linux-libre-4.4-source
-  (source-with-patches linux-libre-4.4-pristine-source
-                       (list %boot-logo-patch)))
-
 
 ;;;
 ;;; Kernel headers.
@@ -608,6 +607,11 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
     (description "Headers of the Linux-Libre kernel.")
     (license license:gpl2)))
 
+(define-public linux-libre-headers-5.16
+  (make-linux-libre-headers* linux-libre-5.16-version
+                             linux-libre-5.16-gnu-revision
+                             linux-libre-5.16-source))
+
 (define-public linux-libre-headers-5.15
   (make-linux-libre-headers* linux-libre-5.15-version
                              linux-libre-5.15-gnu-revision
@@ -638,11 +642,6 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
                              linux-libre-4.9-gnu-revision
                              linux-libre-4.9-source))
 
-(define-public linux-libre-headers-4.4
-  (make-linux-libre-headers* linux-libre-4.4-version
-                             linux-libre-4.4-gnu-revision
-                             linux-libre-4.4-source))
-
 ;; The following package is used in the early bootstrap, and thus must be kept
 ;; stable and with minimal build requirements.
 (define-public linux-libre-headers-5.10.35
@@ -665,7 +664,10 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
     (search-auxiliary-file file)))
 
 (define %default-extra-linux-options
-  `(;; Some very mild hardening.
+  `(;; Make the kernel config available at /proc/config.gz
+    ("CONFIG_IKCONFIG" . #t)
+    ("CONFIG_IKCONFIG_PROC" . #t)
+    ;; Some very mild hardening.
     ("CONFIG_SECURITY_DMESG_RESTRICT" . #t)
     ;; All kernels should have NAMESPACES options enabled
     ("CONFIG_NAMESPACES" . #t)
@@ -920,6 +922,13 @@ It has been modified to remove all non-free binary blobs.")
 ;;; Generic kernel packages.
 ;;;
 
+(define-public linux-libre-5.16
+  (make-linux-libre* linux-libre-5.16-version
+                     linux-libre-5.16-gnu-revision
+                     linux-libre-5.16-source
+                     '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "riscv64-linux")
+                     #:configuration-file kernel-config))
+
 (define-public linux-libre-5.15
   (make-linux-libre* linux-libre-5.15-version
                      linux-libre-5.15-gnu-revision
@@ -968,19 +977,6 @@ It has been modified to remove all non-free binary blobs.")
                      '("x86_64-linux" "i686-linux")
                      #:configuration-file kernel-config))
 
-(define-public linux-libre-4.4
-  (make-linux-libre* linux-libre-4.4-version
-                     linux-libre-4.4-gnu-revision
-                     linux-libre-4.4-source
-                     '("x86_64-linux" "i686-linux")
-                     #:configuration-file kernel-config
-                     #:extra-options
-                     (append
-                      `(;; https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00039.html
-                        ;; This option was removed upstream in version 4.7.
-                        ("CONFIG_DEVPTS_MULTIPLE_INSTANCES" . #t))
-                      %default-extra-linux-options)))
-
 ;; Linux-Libre-LTS points to the *newest* released long-term support version of
 ;; Linux-Libre.
 ;; Reference: https://jxself.org/linux-libre/
@@ -1821,6 +1817,7 @@ providing the system administrator with some help in common tasks.")
 (define-public util-linux
   (package
     (name "util-linux")
+    (replacement util-linux/fixed)
     (version "2.37.2")
     (source (origin
               (method url-fetch)
@@ -1955,6 +1952,7 @@ providing the system administrator with some help in common tasks.")
 utilities.  It provides dmesg and includes tools for working with file systems,
 block devices, UUIDs, TTYs, and many other tools.")
 
+    (properties '((upstream-name . "util-linux")))
     ;; Note that util-linux doesn't use the same license for all the
     ;; code.  GPLv2+ is the default license for a code without an
     ;; explicitly defined license.
@@ -1969,8 +1967,23 @@ block devices, UUIDs, TTYs, and many other tools.")
    util-linux
    (name "util-linux-with-udev")
    (inputs
-    `(("udev" ,eudev)
-      ,@(package-inputs util-linux)))))
+    (modify-inputs (package-inputs util-linux)
+      (prepend eudev)))))
+
+;; This is mostly equivalent to the upstream release version v2.37.3, except
+;; that the upstream tarball was generated improperly, which breaks the build.
+;; There will not be a v2.37.3-fixed release or anything like that to fix it:
+;; https://github.com/util-linux/util-linux/issues/1577
+(define-public util-linux/fixed
+  (hidden-package
+    (package
+      (inherit util-linux)
+      (source (origin
+                (inherit (package-source util-linux))
+                (patches (append (search-patches "util-linux-CVE-2021-3995.patch"
+                                                 "util-linux-CVE-2021-3996.patch")
+                                 (origin-patches (package-source util-linux)))))))))
+
 
 (define-public ddate
   (package
@@ -2092,6 +2105,7 @@ parameters.")
 that give information about processes using the Linux /proc file system.
 The package includes the programs free, pgrep, pidof, pkill, pmap, ps, pwdx,
 slabtop, tload, top, vmstat, w, watch and sysctl.")
+    (properties '((upstream-name . "procps-ng")))
     (license license:gpl2)))
 
 (define-public usbutils
@@ -4431,20 +4445,21 @@ create a firmware image suitable for the Linux kernel, and more.")
 (define-public i2c-tools
   (package
     (name "i2c-tools")
-    (version "3.1.1")
+    (version "4.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "http://jdelvare.nerim.net/mirror/i2c-tools/i2c-tools-"
-                    version ".tar.bz2"))
+                    version ".tar.xz"))
               (sha256
                (base32
-                "000pvg995qy1b15ks59gd0klri55hb33kqpg5czy84hw1pbdgm0l"))))
+                "1y0fphjd5ah2j886x8i175r7viq0hmx666hyca0wi4dzrm290qxk"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no 'check' target
        #:make-flags
-       ,#~(list (string-append "prefix=" #$output)
+       ,#~(list (string-append "PREFIX=" #$output)
+                (string-append "LDFLAGS+=-Wl,-rpath=" #$output "/lib")
                 (string-append "CC=" #$(cc-for-target)))
        ;; No configure script.
        #:phases (modify-phases %standard-phases (delete 'configure))))
@@ -4459,6 +4474,24 @@ EEPROM decoding scripts, EEPROM programming tools, and a python module for
 SMBus access.")
     (license license:gpl2+)))
 
+(define-public i2c-tools-3
+  (package
+    (inherit i2c-tools)
+    (name "i2c-tools")
+    (version "3.1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://jdelvare.nerim.net/mirror/i2c-tools/i2c-tools-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32 "0hd4c1w8lnwc3j95h3vpd125170l1d4myspyrlpamqx6wbr6jpnv"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments i2c-tools)
+       ((#:make-flags _)
+        #~(list (string-append "prefix=" #$output)
+                (string-append "CC=" #$(cc-for-target))))))))
+
 (define-public xsensors
   (package
     (name "xsensors")
@@ -4510,7 +4543,15 @@ in a digital read-out.")
            (lambda* (#:key inputs #:allow-other-keys)
              (setenv "SHELL_PATH" (which "bash"))
              (chdir "tools/perf")
-             #t)))
+
+             ;; This file hard-codes file system layouts for specific distros
+             ;; but not for ours; address that.  With this change, one can run
+             ;; "perf report --symfs=$HOME/.guix-profile" (without
+             ;; "/lib/debug") and 'perf' should be able to find separate debug
+             ;; info files.
+             (substitute* "util/dso.c"
+               (("/usr/lib/debug")
+                "/lib/debug")))))
        #:make-flags (list (string-append "prefix="
                                          (assoc-ref %outputs "out"))
                           "CC=gcc"
@@ -4521,28 +4562,26 @@ in a digital read-out.")
                           "lib=lib")
        #:tests? #f))                              ;no tests
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("bison" ,bison)
-       ("flex" ,flex)
-
-       ;; There are build scripts written in these languages.
-       ("perl" ,perl)
-       ("python2" ,python-2)
-       ("python3" ,python-3)))
+     (list pkg-config
+           bison
+           flex
+           ;; There are build scripts written in these languages.
+           perl
+           python-2
+           python-3))
     (inputs
-     `(("slang" ,slang)                        ;for the interactive TUI
-       ;; ("newt" ,newt)
-       ("python" ,python-2)                    ;'perf' links against libpython
-       ("elfutils" ,elfutils)
-       ("libiberty" ,libiberty)      ;used alongside BDF for symbol demangling
-       ("libunwind" ,libunwind)      ;better stack walking
-       ("numactl" ,numactl)          ;for 'perf bench numa mem'
-
-       ;; Documentation.
-       ("libxml2" ,libxml2)                       ;for $XML_CATALOG_FILES
-       ("docbook-xsl" ,docbook-xsl)
-       ("xmlto" ,xmlto)
-       ("asciidoc" ,asciidoc)))
+     (list slang ;for the interactive TUI
+           ;; newt
+           python-2                            ;'perf' links against libpython
+           elfutils
+           libiberty                 ;used alongside BDF for symbol demangling
+           libunwind                 ;better stack walking
+           numactl                   ;for 'perf bench numa mem'
+           ;; Documentation.
+           libxml2                                ;for $XML_CATALOG_FILES
+           docbook-xsl
+           xmlto
+           asciidoc))
     (home-page "https://perf.wiki.kernel.org/")
     (synopsis "Linux profiling with performance counters")
     (description
@@ -5218,7 +5257,19 @@ Linux Device Mapper multipathing driver:
            #:test-target "partcheck"    ; need root for a full 'check'
            #:phases
            #~(modify-phases %standard-phases
-               (delete 'configure)))) ; no configure script
+               (delete 'configure)    ; no configure script
+               ;; TODO: Make this phase unconditional on core-updates.
+               #$@(if (target-riscv64?)
+                    '((add-before 'check 'patch-for-riscv-support
+                        (lambda _
+                          ;; Taken from the upstream repo:
+                          ;; https://pagure.io/libaio/c/f322f467c3cd2ac4d8d08a19bd281eabb65433b1?branch=master
+                          (substitute* "harness/cases/16.t"
+                            (("(elif defined\\(__aarch64__\\))" all)
+                             (string-append all " || defined(__riscv)"))
+                            (("(endif /* __aarch64__)" all)
+                             (string-append all " || __riscv "))))))
+                    '()))))
     (home-page "https://pagure.io/libaio")
     (synopsis "Linux-native asynchronous I/O access library")
     (description
@@ -5810,7 +5861,7 @@ feature, and a laptop with an accelerometer.  It has no effect on SSDs.")
 (define-public thinkfan
   (package
     (name "thinkfan")
-    (version "1.3.0")
+    (version "1.3.1")
     (source
      (origin
        (method git-fetch)
@@ -5819,37 +5870,35 @@ feature, and a laptop with an accelerometer.  It has no effect on SSDs.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1whdhf3aw0g4xwbn1csy2wz6g1hw5nlw64r91nnxba9qn25nl9k4"))))
+        (base32 "07l7cxbsyvy7awa1zk0zxng60749idvsx3535iginhkqxfzij4b9"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:modules ((guix build cmake-build-system)
+     (list
+      #:modules '((guix build cmake-build-system)
                   (guix build utils)
                   (srfi srfi-26))
-       #:tests? #f                      ; no test target
-       #:configure-flags
-       ;; Enable reading temperatures from hard disks via S.M.A.R.T.
-       ;; Upstream ‘defaults to OFF because libatasmart seems to be horribly
-       ;; inefficient’.
-       `("-DUSE_ATASMART:BOOL=ON")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'create-init-scripts
-           ;; CMakeLists.txt relies on build-time symptoms of OpenRC and
-           ;; systemd to patch and install their service files.  Fake their
-           ;; presence rather than duplicating the build system below.  Leave
-           ;; things like ‘/bin/kill’ because they're not worth a dependency.
-           ;; The sysvinit needs manual patching, but since upstream doesn't
-           ;; even provide the option to install it: don't.
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out   (assoc-ref outputs "out"))
-                    (share (string-append out "/share/" ,name)))
-               (substitute* "CMakeLists.txt"
-                 (("pkg_check_modules\\((OPENRC|SYSTEMD) .*" _ package)
-                  (format #f "option(~a_FOUND \"Faked\" ON)\n" package))
-                 ;; That was easy!  Now we just need to fix the destinations.
-                 (("/etc" directory)
-                  (string-append out directory)))
-               #t))))))
+      #:tests? #f                       ; no test target
+      #:configure-flags
+      ;; Enable reading temperatures from hard disks via S.M.A.R.T.
+      ;; Upstream ‘defaults to OFF because libatasmart seems to be horribly
+      ;; inefficient’.
+      #~(list "-DUSE_ATASMART:BOOL=ON")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'create-init-scripts
+            ;; CMakeLists.txt relies on build-time symptoms of OpenRC and
+            ;; systemd to patch and install their service files.  Fake their
+            ;; presence rather than duplicating the build system below.  Leave
+            ;; things like ‘/bin/kill’ because they're not worth a dependency.
+            ;; The sysvinit needs manual patching, but since upstream doesn't
+            ;; even provide the option to install it: don't.
+            (lambda _
+              (substitute* "CMakeLists.txt"
+                (("pkg_check_modules\\((OPENRC|SYSTEMD) .*" _ package)
+                 (format #f "option(~a_FOUND \"Faked\" ON)\n" package))
+                ;; That was easy!  Now we just need to fix the destinations.
+                (("/etc" directory)
+                 (string-append #$output directory))))))))
     (native-inputs
      (list pkg-config))
     (inputs
@@ -8299,7 +8348,7 @@ tools for managing PipeWire.")
 (define-public ell
   (package
     (name "ell")
-    (version "0.46")
+    (version "0.48")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -8308,25 +8357,16 @@ tools for managing PipeWire.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "15hwqicmll23cbrj13h3wd4lgrby416ap7l6w0434jsza4s4yv82"))))
+                "0lxjizby3zdyhzad5a0gbz4m2pp44jf1j4l1pn18d04rw9mr2gqy"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-dbus-tests
-           (lambda _
-             (substitute* '("unit/test-dbus-message-fds.c"
-                            "unit/test-dbus-properties.c"
-                            "unit/test-dbus.c")
-               (("/usr/bin/dbus-daemon") (which "dbus-daemon")))
-             #t)))))
+     ;; Tests launch dbus-daemon instances that all try to bind to
+     ;; "/tmp/ell-test-bus".  Thus, we need to run them sequentially.
+     '(#:parallel-tests? #f))
     (inputs
      (list dbus))
     (native-inputs
-     `(("autoconf" ,autoconf)
-       ("libtool" ,libtool)
-       ("pkgconfig" ,pkg-config)
-       ("automake" ,automake)))
+     (list autoconf automake libtool pkg-config))
     (home-page "https://01.org/ell")
     (synopsis "Embedded Linux Library")
     (description "The Embedded Linux* Library (ELL) provides core, low-level
@@ -8458,7 +8498,7 @@ headers.")
     (native-inputs
      (list bison flex))
     (inputs
-     `(("clang-toolchain" ,clang-toolchain)
+     `(("clang-toolchain" ,clang-toolchain-9)
        ("libbpf" ,(package-source libbpf))
        ;; LibElf required but libelf does not contain
        ;; archives, only object files.
@@ -8538,7 +8578,7 @@ and above.")
     (native-inputs
      (list bison flex))
     (inputs
-     (list bcc clang-toolchain elfutils libbpf))
+     (list bcc clang-toolchain-9 elfutils libbpf))
     (arguments
      `(#:tests? #f ;Tests require googletest sources.
        #:configure-flags