summaryrefslogtreecommitdiff
path: root/gnu/packages/linux.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/linux.scm')
-rw-r--r--gnu/packages/linux.scm706
1 files changed, 386 insertions, 320 deletions
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index c9e6ab12c2..6b80688eb7 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,15 +11,15 @@
;;; 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>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2016-2022 Marius Bakke <marius@gnu.org>
;;; 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>
@@ -61,6 +61,8 @@
;;; Copyright © 2021 Olivier Dion <olivier.dion@polymtl.ca>
;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
+
;;;
;;; This file is part of GNU Guix.
;;;
@@ -358,116 +360,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.16")
+(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 "0hpr1qr68xh52gzzw5jbwq4i8qd2a5mfbn8s2jj378550kfsn3c0")))
+(define-public linux-libre-5.16-pristine-source
+ (let ((version linux-libre-5.16-version)
+ (hash (base32 "13qk6cjnjwgnxj25mphyv08pjf1sqz7bxxrr3fpl8gz3aghdd9yc")))
+ (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.30")
(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 "0mwzr1ffrr02pyy4rhwrv8msm9l59mg1d164j6qif7kkax2mdg66")))
(define-public linux-libre-5.15-pristine-source
(let ((version linux-libre-5.15-version)
- (hash (base32 "150pzxra564z9xaaclmbbd29x4x9il8y78zz7szi50lzx0a0l2ms")))
+ (hash (base32 "0ckiz985x88x68psg6wazyk7zpv34k8rbzpzyzj0gaph13za4ki5")))
(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.107")
(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 "051ig1nn45jmm3nk7cxnqabcq3nn62d4dq4ggycsbnx24ckkzfrr")))
(define-public linux-libre-5.10-pristine-source
(let ((version linux-libre-5.10-version)
- (hash (base32 "1jxv7can60rc5i2yjgj8frcjvwi1jnba1jl8i3070xmb1d1qqy56")))
+ (hash (base32 "1snzzhkzdjlj92gqig3sanxlhv0xc0xk2xwjdjr0yds6g43w6ry4")))
(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.186")
(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 "1f9rigm58miq5s98bx7pvylqi9hlzlfnq1nrj4cd8f4arcjcvxv1")))
(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.235")
(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 "1615y3ma9icmqqr7lisl8nd8zvvkh77a81yl39yvy6qi9345l32k")))
(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.272")
(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 "0scx13pc5y5jmm5xa17my242gsgb1mf0cgqzjx656g7kkh4phqcv")))
(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.307")
(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 "1xyhz7hq8yyclxyavzk36sbl41vlb74pccd56240kq34ma1hyis7")))
(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 +496,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 +533,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 +609,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 +644,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 +666,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 +924,19 @@ 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-version linux-libre-5.16-version)
+(define-public linux-libre-gnu-revision linux-libre-5.16-gnu-revision)
+(define-public linux-libre-pristine-source linux-libre-5.16-pristine-source)
+(define-public linux-libre-source linux-libre-5.16-source)
+(define-public linux-libre linux-libre-5.16)
+
(define-public linux-libre-5.15
(make-linux-libre* linux-libre-5.15-version
linux-libre-5.15-gnu-revision
@@ -927,12 +944,6 @@ It has been modified to remove all non-free binary blobs.")
'("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "riscv64-linux")
#:configuration-file kernel-config))
-(define-public linux-libre-version linux-libre-5.15-version)
-(define-public linux-libre-gnu-revision linux-libre-5.15-gnu-revision)
-(define-public linux-libre-pristine-source linux-libre-5.15-pristine-source)
-(define-public linux-libre-source linux-libre-5.15-source)
-(define-public linux-libre linux-libre-5.15)
-
(define-public linux-libre-5.10
(make-linux-libre* linux-libre-5.10-version
linux-libre-5.10-gnu-revision
@@ -968,19 +979,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/
@@ -1162,9 +1160,9 @@ It has been modified to remove all non-free binary blobs.")
(define-public linux-libre-with-bpf
(let ((base-linux-libre
(make-linux-libre*
- linux-libre-5.15-version
- linux-libre-5.15-gnu-revision
- linux-libre-5.15-source
+ 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")
#:extra-version "bpf"
@@ -1386,8 +1384,8 @@ network adapters.")
(license license:gpl2))))
(define-public rtl8812au-aircrack-ng-linux-module
- (let ((commit "307d694076b056588c652c2bdaa543a89eb255d9")
- (revision "6"))
+ (let ((commit "37e27f9165300c89607144b646545fac576ec510")
+ (revision "7"))
(package
(inherit rtl8821ce-linux-module)
(name "rtl8812au-aircrack-ng-linux-module")
@@ -1400,7 +1398,7 @@ network adapters.")
(commit commit)))
(file-name (git-file-name name version))
(sha256
- (base32 "1g2zga7jqzp4azwqpgxxx3lg07ijaaqw3zqnaa3i2brycwlnf8l9"))
+ (base32 "09n814pa6i0b0xkgssymcmbcdic05y9z5bsr6sxjfs40wawsk6af"))
(modules '((guix build utils)))
(snippet
#~(begin
@@ -1822,6 +1820,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)
@@ -1956,6 +1955,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.
@@ -1970,8 +1970,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
@@ -2093,6 +2108,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
@@ -2933,9 +2949,9 @@ configuration (iptunnel, ipmaddr).")
;; Tell the makefile to use TARGET-gcc and friends
;; when cross-compiling.
#$@(if (%current-target-system)
- `((list (string-append "CROSS_COMPILE="
- ,(%current-target-system) "-")
- "BUILD_CC=gcc"))
+ `((string-append "CROSS_COMPILE="
+ ,(%current-target-system) "-")
+ "BUILD_CC=gcc")
'()))))
(native-inputs (list perl))
(supported-systems (delete "i586-gnu" %supported-systems))
@@ -3989,13 +4005,22 @@ one to send arbitrary keycodes when a given key is tapped or held.")
(patches (search-patches "lvm2-static-link.patch"))))
(build-system gnu-build-system)
(native-inputs
- (list pkg-config procps)) ;tests use 'pgrep'
+ (list config
+ pkg-config procps)) ;tests use 'pgrep'
(inputs
`(("libaio" ,libaio)
("udev" ,eudev)))
(arguments
`(#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'update-config
+ (lambda* (#:key inputs native-inputs #:allow-other-keys)
+ (install-file (search-input-file
+ (or native-inputs inputs) "/bin/config.sub")
+ "autoconf")
+ (install-file (search-input-file
+ (or native-inputs inputs) "/bin/config.guess")
+ "autoconf")))
(add-after 'configure 'set-makefile-shell
(lambda _
;; Use 'sh', not 'bash', so that '. lib/utils.sh' works as
@@ -4432,20 +4457,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))))
@@ -4460,6 +4486,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")
@@ -4511,7 +4555,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"
@@ -4522,28 +4574,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
@@ -5219,7 +5269,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
@@ -5811,7 +5873,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)
@@ -5820,37 +5882,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
@@ -6563,7 +6623,10 @@ exceeded.")
(base32
"1mp9fqgnz5r69s8ly98ry6k2blqnaqpllwi8m930dm0n8zrwbm4a"))))
(arguments
- '(#:configure-flags '("--enable-unit-tests")))
+ (list #:configure-flags
+ (if (%current-target-system) ; When cross-compiling.
+ #~(list)
+ #~(list "--enable-unit-tests"))))
(native-inputs
(list cmocka pkg-config))
(inputs
@@ -6661,38 +6724,36 @@ under OpenGL graphics workloads.")
(define-public efivar
(package
(name "efivar")
- (version "37")
+ (version "38")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/rhboot/" name
"/releases/download/" version "/" name
"-" version ".tar.bz2"))
- (patches (search-patches "efivar-gcc-compat.patch"))
(sha256
(base32
- "17vvfivhsrszh7q39b6npjsrhrhsjf1cmmcpp3xrh6wh7ywzwrrw"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Compile everything within a single LTO partition
- ;; to work around ordering issues in the code. Try
- ;; removing this for versions > 37.
- (substitute* "Make.defaults"
- (("-flto")
- "-flto -flto-partition=one"))))))
+ "0jaka7b4lccswjqiv4liclkj6w78gildg7vd6dnw3wf595pfs67h"))))
(build-system gnu-build-system)
(arguments
- `(;; Tests require a UEFI system and is not detected in the chroot.
+ (list
+ ;; Tests require a UEFI system and is not detected in the chroot.
#:tests? #f
- #:make-flags (list (string-append "prefix=" %output)
- (string-append "libdir=" %output "/lib")
- (string-append "CC_FOR_BUILD=" ,(cc-for-target))
- (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))
+ #:make-flags
+ #~(list (string-append "prefix=" #$output)
+ (string-append "libdir=" #$output "/lib")
+ (string-append "CC_FOR_BUILD=" #$(cc-for-target))
+ (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib"))
#:phases
- (modify-phases %standard-phases
- (delete 'configure))))
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'build-deterministically
+ (lambda _
+ (substitute* "src/include/defaults.mk"
+ ;; Don't use -march=native.
+ (("-march=native")
+ ""))))
+ (delete 'configure))))
(native-inputs
- (list pkg-config))
+ (list mandoc pkg-config))
(inputs
(list popt))
(home-page "https://github.com/rhboot/efivar")
@@ -6714,19 +6775,28 @@ interface to the variable facility of UEFI boot firmware.")
(file-name (git-file-name name version))
(sha256
(base32 "1niicijxg59rsmiw3rsjwy4bvi1n42dynvm01lnp9haixdzdpq03"))
- (patches (search-patches "efibootmgr-remove-extra-decl.patch"))))
- (build-system gnu-build-system)
- (arguments
- `(#:tests? #f ;no tests
- #:make-flags (list (string-append "prefix=" %output)
- (string-append "libdir=" %output "/lib")
- ;; EFIDIR denotes a subdirectory relative to the
- ;; EFI System Partition where the loader will be
- ;; installed (known as OS_VENDOR in the code).
- ;; GRUB overrides this, as such it's only used if
- ;; nothing else is specified on the command line.
- "EFIDIR=gnu")
- #:phases (modify-phases %standard-phases (delete 'configure))))
+ (patches (search-patches "efibootmgr-remove-extra-decl.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Cast the first argument to the correct type. Extracted
+ ;; from upstream commit e8ce9fecebd15adb4.
+ (substitute* '("src/efibootdump.c" "src/efibootmgr.c")
+ (("efidp_format_device_path\\(text_path,")
+ "efidp_format_device_path((unsigned char *)text_path,"))))))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:tests? #f ;no tests
+ #:make-flags #~(list (string-append "prefix=" #$output)
+ (string-append "libdir=" #$output "/lib")
+ ;; EFIDIR denotes a subdirectory relative to the
+ ;; EFI System Partition where the loader will be
+ ;; installed (known as OS_VENDOR in the code).
+ ;; GRUB overrides this, as such it's only used if
+ ;; nothing else is specified on the command line.
+ "EFIDIR=gnu")
+ #:phases #~(modify-phases %standard-phases (delete 'configure))))
(native-inputs
(list pkg-config))
(inputs
@@ -7179,140 +7249,114 @@ userspace queueing component and the logging subsystem.")
(license license:gpl2)))
(define-public proot
- (let ((revision "0")
- (commit "a70023ab3db47d011265451b99a1abef7b9d7afc"))
- (package
- (name "proot")
- ;; The last stable release was made in 2015, and fails to build for the
- ;; aarch64 platform. Use the latest commit, which includes fixes for
- ;; the supported ARM architectures and the test suite, among others.
- (version (git-version "5.2.0-alpha" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/proot-me/PRoot")
- (commit (string-append commit))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1kmry3rb967phxnxjfnx310gy1d4gpmjd6fp3hbm9v9jciysxy4z"))))
- (build-system gnu-build-system)
- ;; The powerpc64le-linux and mips64el-linux architectures are not
- ;; supported (see:
- ;; https://github.com/proot-me/proot/blob/master/src/arch.h#L51).
- (supported-systems '("x86_64-linux" "i686-linux"
- "armhf-linux" "aarch64-linux" "i586-gnu"))
- (arguments
- ;; Disable the test suite on armhf-linux, as there are too many
- ;; failures to keep track of (see for example:
- ;; https://github.com/proot-me/proot/issues/286).
- `(#:tests? ,(not (string-prefix? "armhf"
- (or (%current-target-system)
- (%current-system))))
- #:make-flags '("-C" "src")
- #:phases (modify-phases %standard-phases
- (add-after 'unpack 'patch-sources
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* (find-files "src" "\\.[ch]$")
- (("\"/bin/sh\"")
- (string-append "\"" (assoc-ref inputs "bash")
- "/bin/sh\"")))
-
- (substitute* "src/GNUmakefile"
- (("/bin/echo") (which "echo"))
- (("^VERSION = .*")
- (string-append "VERSION := " ,version "\n")))
-
- (substitute* (find-files "test" "\\.sh$")
- ;; Some of the tests try to "bind-mount" /bin/true.
- (("-b /bin/true:")
- (string-append "-b " (which "true") ":"))
- ;; Likewise for /bin.
- (("-b /bin:") "-b /gnu:")
- ;; Others try to run /bin/sh.
- (("/bin/sh") (which "sh"))
- ;; Others assume /etc/fstab exists.
- (("/etc/fstab") "/etc/passwd"))
- (substitute* "test/GNUmakefile"
- (("-b /bin:") "-b /gnu:"))
- (substitute* "test/test-c6b77b77.mk"
- (("/bin/bash") (which "bash"))
- (("/usr/bin/test") (which "test")))
- (substitute* "test/test-16573e73.c"
- (("/bin/([a-z-]+)" _ program)
- (which program)))
- (substitute* "test/test-d2175fc3.sh"
- (("\\^/bin/true\\$") "$(which true)"))
- (substitute* "test/test-5467b986.sh"
- (("-w /usr") "-w /gnu")
- (("-w usr") "-w gnu")
- (("/usr/share") "/gnu/store")
- (("share") "store"))
- (substitute* "test/test-092c5e26.sh"
- (("-q echo ")
- "-q $(which echo) "))
-
- ;; The following tests are known to fail (see:
- ;; https://github.com/proot-me/proot/issues/184).
- (delete-file "test/test-0228fbe7.sh")
- (delete-file "test/test-2db65cd2.sh")
- (delete-file "test/test-cdd39012.sh")
- (delete-file "test/test-d92b57ca.sh")
-
- ;; This one fails on a waitpid call that returns 1 (see:
- ;; https://github.com/proot-me/proot/issues/261).
- (delete-file "test/test-ptrace01.c")
-
- ;; XXX: This test fails in an obscure corner case, just
- ;; skip it.
- (delete-file "test/test-kkkkkkkk.c")
-
- ;; This one requires Docker.
- (delete-file "test/test-docker.sh")
-
- ;; The socket tests requires networking.
- (for-each delete-file
- (find-files "test" "test-socket.*\\.sh$"))))
- (delete 'configure)
- (add-after 'build 'build-manpage
- (lambda _
- (with-directory-excursion "doc"
- (invoke "make" "proot/man.1" "SUFFIX=.py"))))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (let ((n (parallel-job-count)))
- ;; Most of the tests expect "/bin" to be in $PATH so
- ;; they can run things that live in $ROOTFS/bin.
- (setenv "PATH"
- (string-append (getenv "PATH") ":/bin"))
- (invoke "make" "check" "-C" "test"
- ;;"V=1"
- "-j" (number->string n))))))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- ;; The 'install' rule does nearly nothing.
- (let* ((out (assoc-ref outputs "out"))
- (man1 (string-append out "/share/man/man1")))
- ;; TODO: 'make install-care' (does not even
- ;; build currently.)
- (invoke "make" "-C" "src" "install"
- (string-append "PREFIX=" out))
- (mkdir-p man1)
- (copy-file "doc/proot/man.1"
- (string-append man1 "/proot.1"))))))))
- (native-inputs (list which
- ;; For 'mcookie', used by some of the tests.
- util-linux
- coreutils
- pkg-config
- ;; For rst2man, used to generate the manual page.
- python-docutils))
- (inputs (list libarchive talloc))
- (home-page "https://github.com/proot-me/PRoot")
- (synopsis "Unprivileged chroot, bind mount, and binfmt_misc")
- (description
- "PRoot is a user-space implementation of @code{chroot}, @code{mount --bind},
+ (package
+ (name "proot")
+ (version "5.3.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/proot-me/PRoot")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1r1ga3xbwq5kx4i8ihj1p6nmgaa14lfkwxzpsbdcmfh1jimpbmzk"))))
+ (build-system gnu-build-system)
+ ;; Many architectures are not supported (see:
+ ;; https://github.com/proot-me/proot/blob/master/src/arch.h#L51).
+ (supported-systems '("x86_64-linux" "i686-linux"
+ "armhf-linux" "aarch64-linux" "i586-gnu"))
+ (arguments
+ ;; Disable the test suite on armhf-linux, as there are too many
+ ;; failures to keep track of (see for example:
+ ;; https://github.com/proot-me/proot/issues/286).
+ `(#:tests? ,(not (string-prefix? "armhf"
+ (or (%current-target-system)
+ (%current-system))))
+ #:make-flags '("-C" "src")
+ #:phases (modify-phases %standard-phases
+ (add-after 'unpack 'patch-sources
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* (find-files "src" "\\.[ch]$")
+ (("\"/bin/sh\"")
+ (string-append "\"" (assoc-ref inputs "bash")
+ "/bin/sh\"")))
+
+ (substitute* "src/GNUmakefile"
+ (("/bin/echo") (which "echo"))
+ (("^VERSION = .*")
+ (string-append "VERSION := " ,version "\n")))
+
+ (substitute* (find-files "test" "\\.sh$")
+ ;; Some of the tests try to "bind-mount" /bin/true.
+ (("-b /bin/true:")
+ (string-append "-b " (which "true") ":"))
+ ;; Likewise for /bin.
+ (("-b /bin:") "-b /gnu:")
+ ;; Others try to run /bin/sh.
+ (("/bin/sh") (which "sh"))
+ ;; Others assume /etc/fstab exists.
+ (("/etc/fstab") "/etc/passwd"))
+ (substitute* "test/GNUmakefile"
+ (("-b /bin:") "-b /gnu:"))
+ (substitute* "test/test-c6b77b77.mk"
+ (("/bin/bash") (which "bash"))
+ (("/usr/bin/test") (which "test")))
+ (substitute* "test/test-16573e73.c"
+ (("/bin/([a-z-]+)" _ program)
+ (which program)))
+ (substitute* "test/test-5467b986.sh"
+ (("-w /usr") "-w /gnu")
+ (("-w usr") "-w gnu")
+ (("/usr/share") "/gnu/store")
+ (("share") "store"))
+ (substitute* "test/test-092c5e26.sh"
+ (("-q echo ")
+ "-q $(which echo) "))
+
+ ;; The socket tests requires networking.
+ (for-each delete-file
+ (find-files "test" "test-socket.*\\.sh$"))))
+ (delete 'configure)
+ (add-after 'build 'build-manpage
+ (lambda _
+ (with-directory-excursion "doc"
+ (invoke "make" "proot/man.1" "SUFFIX=.py"))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (let ((n (parallel-job-count)))
+ ;; Most of the tests expect "/bin" to be in $PATH so
+ ;; they can run things that live in $ROOTFS/bin.
+ (setenv "PATH"
+ (string-append (getenv "PATH") ":/bin"))
+ (invoke "make" "check" "-C" "test"
+ ;;"V=1"
+ "-j" (number->string n))))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; The 'install' rule does nearly nothing.
+ (let* ((out (assoc-ref outputs "out"))
+ (man1 (string-append out "/share/man/man1")))
+ ;; TODO: 'make install-care' (does not even
+ ;; build currently.)
+ (invoke "make" "-C" "src" "install"
+ (string-append "PREFIX=" out))
+ (mkdir-p man1)
+ (copy-file "doc/proot/man.1"
+ (string-append man1 "/proot.1"))))))))
+ (native-inputs (list which
+ ;; For 'mcookie', used by some of the tests.
+ util-linux
+ coreutils
+ pkg-config
+ ;; For rst2man, used to generate the manual page.
+ python-docutils))
+ (inputs (list libarchive talloc))
+ (home-page "https://github.com/proot-me/PRoot")
+ (synopsis "Unprivileged chroot, bind mount, and binfmt_misc")
+ (description
+ "PRoot is a user-space implementation of @code{chroot}, @code{mount --bind},
and @code{binfmt_misc}. This means that users don't need any privileges or
setup to do things like using an arbitrary directory as the new root
file system, making files accessible somewhere else in the file system
@@ -7321,7 +7365,7 @@ transparently through QEMU user-mode. Also, developers can use PRoot as a
generic process instrumentation engine thanks to its extension mechanism.
Technically PRoot relies on @code{ptrace}, an unprivileged system-call
available in the kernel Linux.")
- (license license:gpl2+))))
+ (license license:gpl2+)))
(define-public proot-static
(package
@@ -8300,7 +8344,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
@@ -8309,25 +8353,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
@@ -8363,6 +8398,7 @@ platforms, it is not limited to resource-constrained systems.")
utilities. Using @code{kexec}, it is possible to boot directly into a new
kernel from the context of an already-running kernel, bypassing the normal
system boot process.")
+ (supported-systems (delete "riscv64-linux" %supported-systems))
(license license:gpl2)))
(define-public cachefilesd
@@ -8459,7 +8495,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.
@@ -8539,7 +8575,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
@@ -8768,3 +8804,33 @@ older system-wide @file{/sys} interface.")
(license (list license:lgpl2.1+ ;; libgpiod
license:gpl2+ ;; gpio-tools
license:lgpl3+)))) ;; C++ bindings
+
+(define-public libtree
+ (package
+ (name "libtree")
+ (version "3.0.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/haampie/libtree")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "072624anz9g01mp5vfkahfmzy0nb7axg5rwk3n1yrdm4hr3d4zrb"))))
+ (arguments
+ (list #:make-flags
+ ;; NOTE: Official documentation recommends to build libtree with
+ ;; "-static" flag.
+ #~(list (string-append "CC=" #$(cc-for-target))
+ (string-append "PREFIX=" #$output))
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure))))
+ (build-system gnu-build-system)
+ (home-page "https://github.com/haampie/libtree")
+ (synopsis "Show output of @command{ldd} as a tree")
+ (description
+ "This tool turns @command{ldd} into a tree and explains how shared
+libraries are found or why they cannot be located.")
+ (license license:expat)))