X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/6b8ad47b2afb2b017a4f44471fc460795719d0d7..62f9921c830129ff9f484472a078cf0a35e526dc:/gnu/packages/linux.scm diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index efd02b9902..5329d70ccf 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -12,14 +12,14 @@ ;;; Copyright © 2016 Raymond Nicholson ;;; Copyright © 2016 Mathieu Lirzin ;;; Copyright © 2016, 2018, 2019, 2020 Nicolas Goaziou -;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus +;;; Copyright © 2016, 2018, 2019, 2020 Ricardo Wurmus ;;; Copyright © 2016 David Craven ;;; Copyright © 2016 John Darrington ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Marius Bakke ;;; Copyright © 2016, 2018 Rene Saavedra ;;; Copyright © 2016 Carlos Sánchez de La Lama ;;; Copyright © 2016, 2017 Nikita -;;; Copyright © 2017, 2018 Leo Famulari +;;; Copyright © 2017, 2018, 2020 Leo Famulari ;;; Copyright © 2017 José Miguel Sánchez García ;;; Copyright © 2017 Gábor Boskovits ;;; Copyright © 2017, 2019 Mathieu Othacehe @@ -43,6 +43,12 @@ ;;; Copyright © 2020 Chris Marusich ;;; Copyright © 2020 Vincent Legoll ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen +;;; Copyright © 2020 Brice Waegeneire +;;; Copyright © 2020 Morgan Smith +;;; Copyright © 2020 John Soo +;;; Copyright © 2020 Michael Rohleder +;;; Copyright © 2020 Anders Thuné +;;; Copyright © 2020 Maxim Cournoyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -70,8 +76,10 @@ #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages bison) + #:use-module (gnu packages boost) #:use-module (gnu packages calendar) #:use-module (gnu packages check) + #:use-module (gnu packages cpio) #:use-module (gnu packages crypto) #:use-module (gnu packages cryptsetup) #:use-module (gnu packages compression) @@ -83,6 +91,7 @@ #:use-module (gnu packages flex) #:use-module (gnu packages file) #:use-module (gnu packages freedesktop) + #:use-module (gnu packages gawk) #:use-module (gnu packages gcc) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) @@ -94,6 +103,8 @@ #:use-module (gnu packages haskell-xyz) #:use-module (gnu packages libunwind) #:use-module (gnu packages libusb) + #:use-module (gnu packages llvm) + #:use-module (gnu packages lua) #:use-module (gnu packages man) #:use-module (gnu packages maths) #:use-module (gnu packages multiprecision) @@ -119,6 +130,7 @@ #:use-module (gnu packages tls) #:use-module (gnu packages valgrind) #:use-module (gnu packages video) + #:use-module (gnu packages vulkan) #:use-module (gnu packages web) #:use-module (gnu packages xiph) #:use-module (gnu packages xml) @@ -184,50 +196,17 @@ defconfig. Return the appropriate make target if applicable, otherwise return (uri (string-append "https://linux-libre.fsfla.org" "/pub/linux-libre/releases/" version "-gnu/" "deblob-" (version-major+minor version))) + (file-name (string-append "linux-libre-deblob-" + version)) (sha256 deblob-hash)) (origin (method url-fetch) (uri (string-append "https://linux-libre.fsfla.org" "/pub/linux-libre/releases/" version "-gnu/" "deblob-check")) + (file-name (string-append "linux-libre-deblob-check-" version)) (sha256 deblob-check-hash)))) -(define deblob-scripts-5.6 - (linux-libre-deblob-scripts - "5.6.7" - (base32 "196fdbfy1f8zbmnv0ik720snig2bacsh7hfyvgbmlsfk3cil2zgv") - (base32 "1g0bi3c8xzy1vz6w1xbpkb3a26bqn9d1yphcqz2ki4aikra81wid"))) - -(define deblob-scripts-5.4 - (linux-libre-deblob-scripts - "5.4.37" - (base32 "0ckxn7k5zgcqk30dq943bnamr6a6zjbw2aqjl3x30f4kvh5f6k25") - (base32 "10qb890is4z58vr8czh3xx69q62l3b3j38y410kgiw8nii3zx5lr"))) - -(define deblob-scripts-4.19 - (linux-libre-deblob-scripts - "4.19.103" - (base32 "02zs405awaxydbapka4nz8h6lmnc0dahgczqsrs5s2bmzjyyqkcy") - (base32 "1w2wgxblpq09i33qmqgw5v3r5rm9vkkygr6m0sgv4zgczk9s29wr"))) - -(define deblob-scripts-4.14 - (linux-libre-deblob-scripts - "4.14.170" - (base32 "091jk9jkn9jf39bxpc7395bhcb7p96nkg3a8047380ki06lnfxh6") - (base32 "1qij18inijj6c3ma8hv98yjagnzxdxyn134da9fd23ky8q6hbvky"))) - -(define deblob-scripts-4.9 - (linux-libre-deblob-scripts - "4.9.213" - (base32 "1wvldzlv7q2xdbadas87dh593nxr4a8p5n0f8zpm72lja6w18hmg") - (base32 "0fxajshb75siq39lj5h8xvhdj8lcmddkslwlyj65rhlwk6g2r4b2"))) - -(define deblob-scripts-4.4 - (linux-libre-deblob-scripts - "4.4.213" - (base32 "0x2j1i88am54ih2mk7gyl79g25l9zz4r08xhl482l3fvjj2irwbw") - (base32 "0hhin1jpfkd6nwrb6xqxjzl3hdxy4pn8a15hy2d3d83yw6pflbsf"))) - (define* (computed-origin-method gexp-promise hash-algo hash #:optional (name "source") #:key (system (%current-system)) @@ -265,6 +244,9 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (srfi srfi-1) (ice-9 match) (ice-9 ftw)) + + (setvbuf (current-output-port) 'line) + (let ((dir (string-append "linux-" #$version))) (mkdir "/tmp/bin") @@ -282,11 +264,8 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." #+(canonical-package bzip2) #+(canonical-package gzip) #+(canonical-package tar) - ;; The comments in the 'deblob-check' script - ;; claim that it supports Python 2 and 3, but - ;; in fact it fails when run in Python 3 as - ;; of version 5.1.3. - #+python-2)) + #+(canonical-package gawk) + #+python-wrapper)) (with-directory-excursion "/tmp/bin" @@ -305,12 +284,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (if (file-is-directory? #+upstream-source) (begin (format #t "Copying upstream linux source...~%") - (force-output) (invoke "cp" "--archive" #+upstream-source dir) (invoke "chmod" "--recursive" "u+w" dir)) (begin (format #t "Unpacking upstream linux tarball...~%") - (force-output) (invoke "tar" "xf" #$upstream-source) (match (scandir "." (lambda (name) @@ -323,13 +300,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (error "multiple directories found" dirs))))) (with-directory-excursion dir - (setenv "PYTHON" (which "python")) (format #t "Running deblob script...~%") - (force-output) (invoke "/tmp/bin/deblob")) (format #t "~%Packing new Linux-libre tarball...~%") - (force-output) (invoke "tar" "cvfa" #$output ;; Avoid non-determinism in the archive. "--mtime=@0" @@ -337,7 +311,11 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." "--group=root:0" "--sort=name" "--hard-dereference" - dir)))))))))) + dir) + + (format #t "~%Scanning the generated tarball for blobs...~%") + (invoke "/tmp/bin/deblob-check" "--use-awk" "--list-blobs" + #$output)))))))))) ;;; @@ -369,50 +347,85 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (sha256 hash))) -(define-public linux-libre-5.6-version "5.6.15") -(define-public linux-libre-5.6-pristine-source - (let ((version linux-libre-5.6-version) - (hash (base32 "0kh34f9vdfsi9g83fa1i1926djyzfi466w02c4y4d46ljf9pkav5"))) +;; The current "stable" kernel. That is, the most recently released major +;; version. +(define-public linux-libre-5.8-version "5.8.10") +(define deblob-scripts-5.8 + (linux-libre-deblob-scripts + linux-libre-5.8-version + (base32 "07z7sglyrfh0706icqqf3shadf638pvyid9386r661ds5lbsa2mw") + (base32 "0j6jba5fcddqlb42f95gjl78jisfla4nswqila074gglcrbnl9q7"))) +(define-public linux-libre-5.8-pristine-source + (let ((version linux-libre-5.8-version) + (hash (base32 "1wjsdc93xilag0pk205m2q0ixmpp93ql5qj0fm3qlqddgxm14vlx"))) (make-linux-libre-source version (%upstream-linux-source version hash) - deblob-scripts-5.6))) + deblob-scripts-5.8))) -(define-public linux-libre-5.4-version "5.4.43") +;; The "longterm" kernels — the older releases with long-term upstream support. +;; Here are the support timelines: +;; +(define-public linux-libre-5.4-version "5.4.66") +(define deblob-scripts-5.4 + (linux-libre-deblob-scripts + linux-libre-5.4-version + (base32 "0ckxn7k5zgcqk30dq943bnamr6a6zjbw2aqjl3x30f4kvh5f6k25") + (base32 "1b3q88i2qfdxyvpi9f7jds0qlb8hfpw87mgia096ax6822c2cmyb"))) (define-public linux-libre-5.4-pristine-source (let ((version linux-libre-5.4-version) - (hash (base32 "0i07g72138xdf1l8x593jndq0waf3fx7plz3m6n5f9fl885bjrr6"))) + (hash (base32 "1cnsrz21kcf0h7krpv9p1a7n59mybr5ii0jdi3yc3x3lcwvk06gz"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.4))) -(define-public linux-libre-4.19-version "4.19.125") +(define-public linux-libre-4.19-version "4.19.146") +(define deblob-scripts-4.19 + (linux-libre-deblob-scripts + linux-libre-4.19-version + (base32 "02zs405awaxydbapka4nz8h6lmnc0dahgczqsrs5s2bmzjyyqkcy") + (base32 "1jiaw0as1ippkrjdpd52657w5mz9qczg3y2hlra7m9k0xawwiqlf"))) (define-public linux-libre-4.19-pristine-source (let ((version linux-libre-4.19-version) - (hash (base32 "0zmxs6q2rgssvsh76xq9xgcax7bps19x2448d1q1fj9pzc7g8hwq"))) + (hash (base32 "0jl17yk3fpz0sx203l9l1fj5bly3jgsyr8hy5qa6py99fbk0qnim"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.19))) -(define-public linux-libre-4.14-version "4.14.182") +(define-public linux-libre-4.14-version "4.14.198") +(define deblob-scripts-4.14 + (linux-libre-deblob-scripts + linux-libre-4.14-version + (base32 "091jk9jkn9jf39bxpc7395bhcb7p96nkg3a8047380ki06lnfxh6") + (base32 "1qij18inijj6c3ma8hv98yjagnzxdxyn134da9fd23ky8q6hbvky"))) (define-public linux-libre-4.14-pristine-source (let ((version linux-libre-4.14-version) - (hash (base32 "142v7qnfska86jqzilwq00kxdrq08iaaaw7f47xp9bnhb8fiy7b7"))) + (hash (base32 "00xmij2l4qmx1s07hplxkn9ddlwiyalh2l5fqdk6d8v031cbmyhy"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.14))) -(define-public linux-libre-4.9-version "4.9.225") +(define-public linux-libre-4.9-version "4.9.236") +(define deblob-scripts-4.9 + (linux-libre-deblob-scripts + linux-libre-4.9-version + (base32 "1wvldzlv7q2xdbadas87dh593nxr4a8p5n0f8zpm72lja6w18hmg") + (base32 "0fxajshb75siq39lj5h8xvhdj8lcmddkslwlyj65rhlwk6g2r4b2"))) (define-public linux-libre-4.9-pristine-source (let ((version linux-libre-4.9-version) - (hash (base32 "1s63aymgsc4lsysy9d972ps9cyrf6bncyy5wcpv5a3wbaj678iz5"))) + (hash (base32 "1ma2z0nvby4qyxzi3vxa28f0wvlnl74njk6cryjrqaksq6161qp7"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.9))) -(define-public linux-libre-4.4-version "4.4.226") +(define-public linux-libre-4.4-version "4.4.236") +(define deblob-scripts-4.4 + (linux-libre-deblob-scripts + linux-libre-4.4-version + (base32 "0x2j1i88am54ih2mk7gyl79g25l9zz4r08xhl482l3fvjj2irwbw") + (base32 "0hhin1jpfkd6nwrb6xqxjzl3hdxy4pn8a15hy2d3d83yw6pflbsf"))) (define-public linux-libre-4.4-pristine-source (let ((version linux-libre-4.4-version) - (hash (base32 "1dwvm81i62b06jsl38spfn719zrsbwq5z8viwckrpw4ma4w9k0j1"))) + (hash (base32 "1v1mx16x1crnxf4pix0bhw40lq89n7wpd66gjc2mhxi75h6x6i80"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.4))) @@ -445,14 +458,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (patches (append (origin-patches source) patches)))) -(define-public linux-libre-5.6-source - (source-with-patches linux-libre-5.6-pristine-source +(define-public linux-libre-5.8-source + (source-with-patches linux-libre-5.8-pristine-source (list %boot-logo-patch - %linux-libre-arm-export-__sync_icache_dcache-patch - ;; Pinebook Pro patch from linux-next, - ;; can be dropped for linux-libre 5.7 - (search-patch - "linux-libre-support-for-Pinebook-Pro.patch")))) + %linux-libre-arm-export-__sync_icache_dcache-patch))) (define-public linux-libre-5.4-source (source-with-patches linux-libre-5.4-pristine-source @@ -553,9 +562,9 @@ 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.6 - (make-linux-libre-headers* linux-libre-5.6-version - linux-libre-5.6-source)) +(define-public linux-libre-headers-5.8 + (make-linux-libre-headers* linux-libre-5.8-version + linux-libre-5.8-source)) (define-public linux-libre-headers-5.4 (make-linux-libre-headers* linux-libre-5.4-version @@ -608,6 +617,26 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." ("CONFIG_USER_NS" . #t) ("CONFIG_PID_NS" . #t) ("CONFIG_NET_NS" . #t) + ;; Various options needed for elogind service: + ;; https://issues.guix.gnu.org/43078 + ("CONFIG_CGROUP_FREEZER" . #t) + ("CONFIG_BLK_CGROUP" . #t) + ("CONFIG_CGROUP_WRITEBACK" . #t) + ("CONFIG_CGROUP_SCHED" . #t) + ("CONFIG_CGROUP_PIDS" . #t) + ("CONFIG_CGROUP_FREEZER" . #t) + ("CONFIG_CGROUP_DEVICE" . #t) + ("CONFIG_CGROUP_CPUACCT" . #t) + ("CONFIG_CGROUP_PERF" . #t) + ("CONFIG_SOCK_CGROUP_DATA" . #t) + ("CONFIG_BLK_CGROUP_IOCOST" . #t) + ("CONFIG_CGROUP_NET_PRIO" . #t) + ("CONFIG_CGROUP_NET_CLASSID" . #t) + ("CONFIG_MEMCG" . #t) + ("CONFIG_MEMCG_SWAP" . #t) + ("CONFIG_MEMCG_KMEM" . #t) + ("CONFIG_CPUSETS" . #t) + ("CONFIG_PROC_PID_CPUSET" . #t) ;; Modules required for initrd: ("CONFIG_NET_9P" . m) ("CONFIG_NET_9P_VIRTIO" . m) @@ -620,6 +649,30 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." ("CONFIG_CIFS" . m) ("CONFIG_9P_FS" . m))) +;; See https://github.com/iovisor/bcc/blob/master/INSTALL.md#kernel-configuration +(define %bpf-extra-linux-options + `(;; Needed for probes + ("CONFIG_UPROBE_EVENTS" . #t) + ("CONFIG_KPROBE_EVENTS" . #t) + ;; kheaders module also helpful for tracing + ("CONFIG_IKHEADERS" . #t) + ("CONFIG_BPF" . #t) + ("CONFIG_BPF_SYSCALL" . #t) + ("CONFIG_BPF_JIT_ALWAYS_ON" . #t) + ;; optional, for tc filters + ("CONFIG_NET_CLS_BPF" . m) + ;; optional, for tc actions + ("CONFIG_NET_ACT_BPF" . m) + ("CONFIG_BPF_JIT" . #t) + ;; for Linux kernel versions 4.1 through 4.6 + ;; ("CONFIG_HAVE_BPF_JIT" . y) + ;; for Linux kernel versions 4.7 and later + ("CONFIG_HAVE_EBPF_JIT" . #t) + ;; optional, for kprobes + ("CONFIG_BPF_EVENTS" . #t) + ;; kheaders module + ("CONFIG_IKHEADERS" . #t))) + (define (config->string options) (string-join (map (match-lambda ((option . 'm) @@ -800,17 +853,23 @@ It has been modified to remove all non-free binary blobs.") ;;; Generic kernel packages. ;;; +(define-public linux-libre-5.8 + (make-linux-libre* linux-libre-5.8-version + linux-libre-5.8-source + '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "riscv64-linux") + #:configuration-file kernel-config)) + +(define-public linux-libre-version linux-libre-5.8-version) +(define-public linux-libre-pristine-source linux-libre-5.8-pristine-source) +(define-public linux-libre-source linux-libre-5.8-source) +(define-public linux-libre linux-libre-5.8) + (define-public linux-libre-5.4 (make-linux-libre* linux-libre-5.4-version linux-libre-5.4-source '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "riscv64-linux") #:configuration-file kernel-config)) -(define-public linux-libre-version linux-libre-5.4-version) -(define-public linux-libre-pristine-source linux-libre-5.4-pristine-source) -(define-public linux-libre-source linux-libre-5.4-source) -(define-public linux-libre linux-libre-5.4) - (define-public linux-libre-4.19 (make-linux-libre* linux-libre-4.19-version linux-libre-4.19-source @@ -858,9 +917,12 @@ It has been modified to remove all non-free binary blobs.") ("CONFIG_RTC_DRV_RK808" . #t)) %default-extra-linux-options))) -(define-public linux-libre-arm-generic-5.6 - (make-linux-libre* linux-libre-5.6-version - linux-libre-5.6-source +(define-public linux-libre-arm-veyron + (deprecated-package "linux-libre-arm-veyron" linux-libre-arm-generic)) + +(define-public linux-libre-arm-generic-5.4 + (make-linux-libre* linux-libre-5.4-version + linux-libre-5.4-source '("armhf-linux") #:defconfig "multi_v7_defconfig" #:extra-version "arm-generic" @@ -870,9 +932,6 @@ It has been modified to remove all non-free binary blobs.") ("CONFIG_RTC_DRV_RK808" . #t)) %default-extra-linux-options))) -(define-public linux-libre-arm-veyron - (deprecated-package "linux-libre-arm-veyron" linux-libre-arm-generic)) - (define-public linux-libre-arm-generic-4.19 (make-linux-libre* linux-libre-4.19-version linux-libre-4.19-source @@ -914,15 +973,15 @@ It has been modified to remove all non-free binary blobs.") '("aarch64-linux") #:defconfig "defconfig" #:extra-version "arm64-generic" - #:extra-options + #:extra-options (append `(;; needed to fix the RTC on rockchip platforms ("CONFIG_RTC_DRV_RK808" . #t)) %default-extra-linux-options))) -(define-public linux-libre-arm64-generic-5.6 - (make-linux-libre* linux-libre-5.6-version - linux-libre-5.6-source +(define-public linux-libre-arm64-generic-5.4 + (make-linux-libre* linux-libre-5.4-version + linux-libre-5.4-source '("aarch64-linux") #:defconfig "defconfig" #:extra-version "arm64-generic" @@ -938,6 +997,23 @@ It has been modified to remove all non-free binary blobs.") '("riscv64-linux") #:extra-version "riscv64-generic")) +(define-public linux-libre-with-bpf + (let ((base-linux-libre + (make-linux-libre* + linux-libre-5.4-version + linux-libre-5.4-source + '("x86_64-linux" "i686-linux" "armhf-linux" + "aarch64-linux" "riscv64-linux") + #:extra-version "bpf" + #:configuration-file kernel-config + #:extra-options + (append %bpf-extra-linux-options + %default-extra-linux-options)))) + (package + (inherit base-linux-libre) + (inputs `(("cpio" ,cpio) ,@(package-inputs base-linux-libre)))))) + + ;;; ;;; Linux kernel modules. @@ -953,7 +1029,7 @@ It has been modified to remove all non-free binary blobs.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/teleshoes/acpi_call.git") + (url "https://github.com/teleshoes/acpi_call") (commit commit))) (file-name (git-file-name name version)) (sha256 @@ -987,8 +1063,8 @@ and should be used with caution, especially on untested models.") (license license:gpl3+)))) ; see README.md (no licence headers) (define-public rtl8812au-aircrack-ng-linux-module - (let ((commit "945d6ed6505c32f0993b1dba576388e92e78101b") - (revision "0")) + (let ((commit "df2b8dfd8cb7d9f6cfeb55abaeab8a5372011fc9") + (revision "1")) (package (name "rtl8812au-aircrack-ng-linux-module") (version (git-version "5.6.4.2" revision commit)) @@ -996,11 +1072,11 @@ and should be used with caution, especially on untested models.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/aircrack-ng/rtl8812au.git") + (url "https://github.com/aircrack-ng/rtl8812au") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "1pjws7qb5l4z9k80vgz4zdxmqhbwxjjrmkpf0hijf821byyddvi7")) + (base32 "1qcr0j8yhg8l9l0f5y55zcsk1mgf3qd46yh9xfqgg91szxa3yvca")) (modules '((guix build utils))) (snippet '(begin @@ -1012,15 +1088,15 @@ and should be used with caution, especially on untested models.") #t)))) (build-system linux-module-build-system) (arguments - `(#:phases + `(#:make-flags + (list (string-append "KSRC=" + (assoc-ref %build-inputs "linux-module-builder") + "/lib/modules/build")) + #:phases (modify-phases %standard-phases (replace 'build - (lambda* (#:key inputs make-flags #:allow-other-keys) - (apply invoke "make" - (string-append "KSRC=" - (assoc-ref inputs "linux-module-builder") - "/lib/modules/build") - (or make-flags '()))))) + (lambda* (#:key (make-flags '()) #:allow-other-keys) + (apply invoke "make" make-flags)))) #:tests? #f)) ; no test suite (supported-systems '("x86_64-linux" "i686-linux")) (home-page "https://github.com/aircrack-ng/rtl8812au") @@ -1042,7 +1118,7 @@ RTL8812AU, RTL8821AU, and RTL8814AU chips.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/tomaspinho/rtl8821ce.git") + (url "https://github.com/tomaspinho/rtl8821ce") (commit commit))) (file-name (git-file-name name version)) (sha256 @@ -1050,16 +1126,17 @@ RTL8812AU, RTL8821AU, and RTL8814AU chips.") "17jiw25k74kv5lnvgycvj2g1n06hbrpjz6p4znk4a62g136rhn4s")))) (build-system linux-module-build-system) (arguments - `(#:phases + `(#:make-flags + (list "CC=gcc" + (string-append "KSRC=" + (assoc-ref %build-inputs "linux-module-builder") + "/lib/modules/build")) + #:phases (modify-phases %standard-phases (replace 'build - (lambda* (#:key (make-flags '()) inputs #:allow-other-keys) - (setenv "CC" "gcc") - (invoke "make" - (string-append "KSRC=" - (assoc-ref inputs "linux-module-builder") - "/lib/modules/build"))))) - #:tests? #f)) + (lambda* (#:key (make-flags '()) #:allow-other-keys) + (apply invoke "make" make-flags)))) + #:tests? #f)) ; no test suite (home-page "https://github.com/tomaspinho/rtl8821ce") (synopsis "Linux driver for Realtek RTL8821CE wireless network adapters") (description "This is Realtek's RTL8821CE Linux driver for wireless @@ -1088,6 +1165,29 @@ network adapters.") between the CDemu userspace daemon and linux kernel.") (license license:gpl2+))) +(define-public bbswitch-module + (package + (name "bbswitch-module") + (version "0.8") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Bumblebee-Project/bbswitch") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1glch4j0x1dzlp2yrb67v2r5jg9609jb6p8m251y78m74advqw0l")))) + (build-system linux-module-build-system) + (arguments + ;; No tests. + `(#:tests? #f)) + (home-page "https://github.com/Bumblebee-Project/bbswitch") + (synopsis "Kernel module that disables discrete Nvidia graphics cards") + (description "The bbswitch module provides a way to toggle the Nvidia +graphics card on Optimus laptops.") + (license license:gpl2))) + (define-public ddcci-driver-linux (package (name "ddcci-driver-linux") @@ -1134,6 +1234,35 @@ module allows the control of the backlight level or luminance property when supported under @file{/sys/class/backlight/}.") (license license:gpl2+))) +(define-public v4l2loopback-linux-module + (package + (name "v4l2loopback-linux-module") + (version "0.12.5") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/umlaeute/v4l2loopback") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1qi4l6yam8nrlmc3zwkrz9vph0xsj1cgmkqci4652mbpbzigg7vn")))) + (build-system linux-module-build-system) + (arguments + `(#:tests? #f)) ; no test suite + (home-page "https://github.com/umlaeute/v4l2loopback") + (synopsis "Linux kernel module to create virtual V4L2 video devices") + (description + "This Linux module creates virtual video devices. @acronym{V4L2, Video +for Linux 2} applications will treat these as ordinary video devices but read +video data generated by another application, instead of a hardware device such +as a capture card. + +This lets you apply nifty effects to your Jitsi video, for example, but also +allows some more serious things like adding streaming capabilities to an +application by hooking GStreamer into the loopback device.") + (license license:gpl2+))) + ;;; ;;; Pluggable authentication modules (PAM). @@ -1203,6 +1332,49 @@ at login. Local and dynamic reconfiguration are its key features.") "1n9lnf9gjs72kbj1g354v1xhi2j27aqaah15vykh7cnkq08i4arl")) (patches (search-patches "linux-pam-no-setfsuid.patch")))))) +(define-public python-pamela + (package + (name "python-pamela") + (version "1.0.0") + (source + (origin + ;; Tests not distributed in pypi release. + (method git-fetch) + (uri (git-reference + (url "https://github.com/minrk/pamela.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0cg3w6np1fbjpvzhv54xg567hpf38szwp2d4gvzb9r736nxbv0vr")))) + (build-system python-build-system) + (arguments + '(#:tests? #f ; Test suite isn't designed to be run inside a container. + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'hardcode-pam.so + (lambda* (#:key inputs #:allow-other-keys) + (let ((pam (assoc-ref inputs "linux-pam"))) + (substitute* "pamela.py" + (("find_library\\(\"pam\")") + (string-append "'" pam "/lib/libpam.so'"))) + #t))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (if (file-exists? "test_pamela.py") + (invoke "py.test" "--assert=plain" "test_pamela.py") + (invoke "python" "-m" "pamela" "-a" "`whoami`")) + #t)))))) + (inputs + `(("linux-pam" ,linux-pam))) + (native-inputs + `(("python-pytest" ,python-pytest))) + (home-page "https://github.com/minrk/pamela") + (synopsis "PAM interface using ctypes") + (description "This package provides a PAM interface using @code{ctypes}.") + (license license:expat))) + ;;; ;;; Miscellaneous. @@ -1435,12 +1607,13 @@ block devices, UUIDs, TTYs, and many other tools.") (name "ddate") (version "0.2.2") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/bo0ts/ddate/archive/v" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/bo0ts/ddate") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 "1bbqqq8mswj4bp9083gxjaky5ysfznax4cynsqwmy125z053yg6m")))) + (base32 "1qchxnxvghbma6gp1g78wnjxsri0b72ha9axyk31cplssl7yn73f")))) (build-system cmake-build-system) (arguments '(#:tests? #f)) (home-page "https://github.com/bo0ts/ddate") @@ -1788,7 +1961,7 @@ Zerofree requires the file system to be unmounted or mounted read-only.") (define-public strace (package (name "strace") - (version "5.5") + (version "5.8") (home-page "https://strace.io") (source (origin (method url-fetch) @@ -1796,7 +1969,7 @@ Zerofree requires the file system to be unmounted or mounted read-only.") "/strace-" version ".tar.xz")) (sha256 (base32 - "1zrhpzjlgfwfl8dd53llswmmharm5rbi0zch7lln5sjris69an4z")))) + "1abs3svkg9985f4jrxx34sj1dcpsf95vv1a0g01c777zgygncjnz")))) (build-system gnu-build-system) (arguments '(#:phases @@ -1805,6 +1978,12 @@ Zerofree requires the file system to be unmounted or mounted read-only.") (lambda _ (substitute* "strace.c" (("/bin/sh") (which "sh"))) + #t)) + (add-after 'unpack 'disable-failing-tests + (lambda _ + ;; XXX These hang forever even if the test time-out is extended. + (substitute* "tests/Makefile.in" + (("^\tstrace-DD?D?\\.test \\\\.*") "")) #t))) ;; Don't fail if the architecture doesn't support different personalities. #:configure-flags '("--enable-mpers=check") @@ -1989,15 +2168,17 @@ external rate conversion.") (define-public iptables (package (name "iptables") - (version "1.8.4") - (source (origin - (method url-fetch) - (uri (string-append - "mirror://netfilter.org/iptables/iptables-" - version ".tar.bz2")) - (sha256 - (base32 - "0z0mgs1ghvn3slc868mgbf2g26njgrzcy5ggyb5w4i55j1a3lflr")))) + ;; XXX When updating, remove the ‘install-missing-script’ phase. + (version "1.8.5") + (source + (origin + (method url-fetch) + (uri (list (string-append "mirror://netfilter.org/iptables/iptables-" + version ".tar.bz2") + (string-append "https://www.netfilter.org/projects/iptables/" + "files/iptables-" version ".tar.bz2"))) + (sha256 + (base32 "02a3575ypdpg6a2x752mhk3f7h1381ymkq1n0gss6fp6292xfmyl")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -2009,7 +2190,19 @@ external rate conversion.") (arguments '(#:tests? #f ; no test suite #:configure-flags ; add $libdir to the RUNPATH of executables - (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")))) + (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")) + #:phases + (modify-phases %standard-phases + (add-after 'install 'install-missing-script + ;; A typo prevents installation of /sbin/iptables-apply. It's been + ;; fixed upstream (d4ed0c741fc789bb09d977d74d30875fdd50d08b), but + ;; a patch would require bootstrapping and more inputs. Simply copy + ;; the file ourselves. + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (sbin (string-append out "/sbin"))) + (install-file "iptables/iptables-apply" sbin) + #t)))))) (home-page "https://www.netfilter.org/projects/iptables/index.html") (synopsis "Programs to configure Linux IP packet filtering rules") (description @@ -2072,7 +2265,7 @@ that the Ethernet protocol is much simpler than the IP protocol.") (define-public iproute (package (name "iproute2") - (version "5.5.0") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append @@ -2080,7 +2273,7 @@ that the Ethernet protocol is much simpler than the IP protocol.") version ".tar.xz")) (sha256 (base32 - "0ywg70f98wgfai35jl47xzpjp45a6n7crja4vc8ql85cbi1l7ids")))) + "0vk4vickrpahdhl3zazr2qn2bf99v5549ncirjpwiy4h0a4izkfg")))) (build-system gnu-build-system) (arguments `( ;; There is a test suite, but it wants network namespaces and sudo. @@ -2434,14 +2627,14 @@ devices. It replaces @code{iwconfig}, which is deprecated.") (define-public powertop (package (name "powertop") - (version "2.12") + (version "2.13") (source (origin (method url-fetch) (uri (string-append "https://01.org/sites/default/files/downloads/" "powertop-" version ".tar.gz")) (sha256 - (base32 "1kiiwa5p2r7h1lzcf53xq61ckaa4wk565s9fs6vw4bfk84y3mfsw")))) + (base32 "0y1ixw8v17fdb1ima0zshrd0rh4zxdh10r93nrrvq6d4lhn9jpx6")))) (build-system gnu-build-system) (arguments '(#:phases @@ -2908,16 +3101,16 @@ for systems using the Linux kernel. This includes commands such as (define-public inotify-tools (package (name "inotify-tools") - (version "3.20.1") + (version "3.20.2.2") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/rvoicilas/inotify-tools.git") + (url "https://github.com/rvoicilas/inotify-tools") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 - "14dci1i4mhsd5sa33k8h3ayphk19kizynh5ql9ryibdpmcanfiyq")))) + "1r12bglkb0bkqff6kgxjm81hk6z20nrxq3m7iv15d4nrqf9pm7s0")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) @@ -2933,7 +3126,7 @@ to use Linux' inotify mechanism, which allows file accesses to be monitored.") (define-public kmod (package (name "kmod") - (version "26") + (version "27") (source (origin (method url-fetch) (uri @@ -2941,7 +3134,7 @@ to use Linux' inotify mechanism, which allows file accesses to be monitored.") "kmod-" version ".tar.xz")) (sha256 (base32 - "17dvrls70nr3b3x1wm8pwbqy4r8a5c20m0dhys8mjhsnpg425fsp")) + "035wzfzjx4nwidk747p8n085mgkvy531ppn16krrajx2dkqzply1")) (patches (search-patches "kmod-module-directory.patch")))) (build-system gnu-build-system) (native-inputs @@ -2950,10 +3143,18 @@ to use Linux' inotify mechanism, which allows file accesses to be monitored.") `(("xz" ,xz) ("zlib" ,zlib))) (arguments - `(#:tests? #f ; FIXME: Investigate test failures - #:configure-flags '("--with-xz" "--with-zlib") + `(#:configure-flags '("--with-xz" "--with-zlib" + "--disable-test-modules") #:phases (modify-phases %standard-phases + (add-after 'unpack 'disable-tests + (lambda _ + ;; XXX: These tests need '--sysconfdir=/etc' to pass. + (substitute* "Makefile.in" + (("testsuite/test-modprobe") "") + (("testsuite/test-depmod") "") + (("testsuite/test-blacklist") "")) + #t)) (add-after 'install 'install-modprobe&co (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -2983,7 +3184,7 @@ from the module-init-tools project.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/rfjakob/earlyoom.git") + (url "https://github.com/rfjakob/earlyoom") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -3011,8 +3212,8 @@ from the module-init-tools project.") (string-append "PREFIX=" prefix) (string-append "SYSCONFDIR=" prefix "/etc"))) #:test-target "test")) - (native-inputs `(("go" ,go) ;for the test suite - ("pandoc" ,ghc-pandoc))) ;to generate the manpage + (native-inputs `(("go" ,go) ;for the test suite + ("pandoc" ,pandoc))) ;to generate the manpage (home-page "https://github.com/rfjakob/earlyoom") (synopsis "Simple out of memory (OOM) daemon for the Linux kernel") (description "Early OOM is a minimalist out of memory (OOM) daemon that @@ -3158,16 +3359,16 @@ devices that can inject events directly into the input subsystem.") (define-public lvm2 (package (name "lvm2") - (version "2.03.09") + (version "2.03.10") (source (origin (method url-fetch) - (uri (list (string-append "ftp://sourceware.org/pub/lvm2/LVM2." + (uri (list (string-append "https://sourceware.org/ftp/lvm2/LVM2." version ".tgz") (string-append "ftp://sources.redhat.com/pub/lvm2/releases/LVM2." version ".tgz"))) (sha256 (base32 - "0xdr9qbqw6kja267wmx6ajnfv1nhw056gpxx9v2qmfh3bj6qnfn0")) + "1l0fkn9abrgk5mfn6jfh9qhdr86b59l1c5pk6lp8jh0491d69las")) (modules '((guix build utils))) (snippet '(begin @@ -3271,6 +3472,37 @@ mapper. Kernel components are part of Linux-libre.") #t)))))) (synopsis "Logical volume management for Linux (statically linked)"))) +(define-public thin-provisioning-tools + (package + (name "thin-provisioning-tools") + (version "0.8.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jthornber/thin-provisioning-tools") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "01wl8c0cjbx1smbhj8dx6av5bnw5775m58gasc3vqwvsj0s9hq19")))) + (build-system gnu-build-system) + (arguments + ;; Doesn't build with --enable-testing due to a function name collision + ;; with glibc. Fixed upstream. TODO: Enable tests when 0.9.0 is released. + `(#:tests? #f)) + (native-inputs + `(("automake" ,automake) + ("autoreconf" ,autoconf))) + (inputs + `(("boost" ,boost) + ("expat" ,expat) + ("libaio" ,libaio))) + (synopsis "Tools for manipulating the metadata of device-mapper targets") + (description "A suite of tools for manipulating the metadata of the +dm-thin, dm-cache and dm-era device-mapper targets.") + (home-page "https://github.com/jthornber/thin-provisioning-tools") + (license license:gpl3+))) + (define-public wireless-tools (package (name "wireless-tools") @@ -3412,7 +3644,7 @@ compliance.") (define-public wireless-regdb (package (name "wireless-regdb") - (version "2019.06.03") + (version "2020.04.29") (source (origin (method url-fetch) (uri (string-append @@ -3420,7 +3652,7 @@ compliance.") "wireless-regdb-" version ".tar.xz")) (sha256 (base32 - "1gslvh0aqdkv48jyr2ddq153mw28i7qz2ybrjj9qvkk3dgc7x4fd")) + "0yicda474ygahv8da18h1p4yf42s6x2f208mlwcw4xsrxld07zc9")) ;; We're building 'regulatory.bin' by ourselves. (snippet '(begin @@ -3487,7 +3719,7 @@ country-specific regulations for the wireless spectrum.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/groeck/lm-sensors.git") + (url "https://github.com/groeck/lm-sensors") (commit (string-append "V" (string-join (string-split version #\.) "-"))))) (file-name (git-file-name name version)) @@ -3664,11 +3896,7 @@ in a digital read-out.") #t))) #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")) - ;; Make sure the kernel headers are treated as system - ;; headers to suppress warnings from those. - (string-append "C_INCLUDE_PATH=" - (assoc-ref %build-inputs "kernel-headers") - "/include") + "CC=gcc" "WERROR=0" ;; By default, 'config/Makefile' uses lib64 on @@ -3682,7 +3910,8 @@ in a digital read-out.") ;; There are build scripts written in these languages. ("perl" ,perl) - ("python" ,python-2))) + ("python2" ,python-2) + ("python3" ,python-3))) (inputs `(("slang" ,slang) ;for the interactive TUI ;; ("newt" ,newt) @@ -3712,13 +3941,14 @@ particular the @code{perf} command.") (name "pflask") (version "0.2") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/ghedo/pflask/archive/v" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/ghedo/pflask") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "1g8fjj67dfkc2s0852l9vqi1pm61gp4rxbpzbzg780f5s5hd1fys")))) + "1jikjbhlxlqracnai3v9krzcgd2xwp0p4adw5n07yxc7b857damz")))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ; no tests @@ -3775,12 +4005,20 @@ thanks to the use of namespaces.") `(#:configure-flags '("--localstatedir=/var") #:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-reference-to-squashfs-tools + (add-after 'unpack 'patch-references (lambda _ (substitute* "libexec/cli/build.exec" (("if ! singularity_which mksquashfs") "if 0") (("if ! mksquashfs") (string-append "if ! " (which "mksquashfs")))) + (substitute* (list "libexec/cli/help.exec" + "libexec/bootstrap-scripts/functions" + "libexec/bootstrap-scripts/post.sh" + "libexec/functions") + (("\\| grep ") + (string-append "| " (which "grep") " ")) + (("egrep ") + (string-append (which "egrep") " "))) #t)) (add-after 'install 'set-PATH (lambda* (#:key inputs outputs #:allow-other-keys) @@ -3849,7 +4087,7 @@ Translation (@dfn{SAT}) are also supported.") (define-public nvme-cli (package (name "nvme-cli") - (version "1.10.1") + (version "1.12") (home-page "https://github.com/linux-nvme/nvme-cli") (source (origin (method git-fetch) @@ -3857,7 +4095,7 @@ Translation (@dfn{SAT}) are also supported.") (url home-page) (commit (string-append "v" version)))) (sha256 - (base32 "12wp2wxmsw2v8m9bhvwvdbhdgx1md8iilhbl19sfzz2araiwi2x8")) + (base32 "0ldky34sn0m5c4hgiip0fkzm465nca69bhxicpd5dg8wxhzxqrp3")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments @@ -4257,7 +4495,7 @@ arrays when needed.") ;; For tests. ("cmocka" ,cmocka))) (inputs - `(("json-c" ,json-c) + `(("json-c" ,json-c-0.13) ("libaio" ,libaio) ("liburcu" ,liburcu) ("lvm2" ,lvm2) @@ -4380,16 +4618,15 @@ Bluetooth audio output devices like headphones or loudspeakers.") (define-public bluez (package (name "bluez") - (version "5.53") + (version "5.54") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/linux/bluetooth/bluez-" version ".tar.xz")) - (patches (search-patches "bluez-CVE-2020-0556.patch")) (sha256 (base32 - "1g1qg6dz6hl3csrmz75ixr12lwv836hq3ckb259svvrg62l2vaiq")))) + "1p2ncvjz6alr9n3l5wvq2arqgc7xjs6dqyar1l9jp0z8cfgapkb8")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -4544,7 +4781,7 @@ and copy/paste text in the console and in xterm.") (define-public btrfs-progs (package (name "btrfs-progs") - (version "5.6") + (version "5.7") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/linux/kernel/" @@ -4552,7 +4789,7 @@ and copy/paste text in the console and in xterm.") "btrfs-progs-v" version ".tar.xz")) (sha256 (base32 - "0srg276yccfmqz0skmmga3vbqx4wiqsk1l6h86n6ryhxa9viqcm1")))) + "0p6ycbr8sw5bq3mj84gh9rvh5sk8sjr2l9hb9dhm4j41ij5h8bsw")))) (build-system gnu-build-system) (outputs '("out" "static")) ; static versions of the binaries in "out" @@ -4890,16 +5127,16 @@ feature, and a laptop with an accelerometer. It has no effect on SSDs.") (define-public thinkfan (package (name "thinkfan") - (version "1.1") + (version "1.2.1") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/vmatare/thinkfan.git") + (url "https://github.com/vmatare/thinkfan") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1fxd1w3z65glw6y04myn7ihgswkx6sqnkky159mik4n96pfrsvr5")))) + (base32 "18vgm5w5pjnpipa34j4x87q10695w2jnqwvc2f027afy7mnzw7kz")))) (build-system cmake-build-system) (arguments `(#:modules ((guix build cmake-build-system) @@ -4935,7 +5172,7 @@ feature, and a laptop with an accelerometer. It has no effect on SSDs.") (inputs `(("libatasmart" ,libatasmart) ("yaml-cpp" ,yaml-cpp))) - (home-page "http://thinkfan.sourceforge.net/") + (home-page "https://github.com/vmatare/thinkfan") (synopsis "Simple fan control program") (description "Thinkfan is a simple fan control program. It reads temperatures, @@ -4953,7 +5190,7 @@ from userspace.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/teleshoes/tpacpi-bat.git") + (url "https://github.com/teleshoes/tpacpi-bat") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -5290,16 +5527,16 @@ cpufreq sub-system is enabled or not.") (define-public haveged (package (name "haveged") - (version "1.9.8") + (version "1.9.13") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/jirka-h/haveged.git") + (url "https://github.com/jirka-h/haveged") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1znr58fb3faq4nmrvc3c5whkc1f3chivm4vhicdwr9pdsyqqsd51")))) + (base32 "0g3hcvpky76cabgcfqh65fay7nnjkms32sgmlf33q969833hijqz")))) (build-system gnu-build-system) (home-page "https://www.issihosts.com/haveged") (synopsis "Entropy source for the Linux random number generator") @@ -5466,14 +5703,14 @@ the default @code{nsswitch} and the experimental @code{umich_ldap}.") (define-public mcelog (package (name "mcelog") - (version "168") + (version "170") (source (origin (method url-fetch) (uri (string-append "https://git.kernel.org/cgit/utils/cpu/mce/" "mcelog.git/snapshot/v" version ".tar.gz")) (sha256 (base32 - "1c4faayg1gcm3002b2fdrfnv76z92mvfzccvx8w9crjp0d17sp24")) + "1m11v1y7cvpm7hwsghj23z77ps1w5jzn8000iwiyxpb939h2km5l")) (file-name (string-append name "-" version ".tar.gz")) (modules '((guix build utils))) (snippet @@ -5490,7 +5727,8 @@ the default @code{nsswitch} and the experimental @code{umich_ldap}.") #:make-flags (let ((out (assoc-ref %outputs "out"))) (list "CC=gcc" (string-append "prefix=" out) - (string-append "DOCDIR=" out "/share/doc/mcelog") + (string-append "DOCDIR=" out "/share/doc/" + ,name "-" ,version) "etcprefix=$(DOCDIR)/examples")) ;; The tests will only run as root on certain supported CPU models. #:tests? #f)) @@ -5498,16 +5736,16 @@ the default @code{nsswitch} and the experimental @code{umich_ldap}.") (home-page "https://mcelog.org/") (synopsis "Machine check monitor for x86 Linux systems") (description - "The mcelog daemon is required by the Linux kernel to log memory, I/O, CPU, -and other hardware errors on x86 systems. It can also perform user-defined -tasks, such as bringing bad pages off-line, when configurable error thresholds -are exceeded.") + "The mcelog daemon logs memory, I/O, CPU, and other hardware errors on x86 +systems running the kernel Linux. It can also perform user-defined tasks, such +as bringing bad pages off-line, when configurable error thresholds are +exceeded.") (license license:gpl2))) (define-public mtd-utils (package (name "mtd-utils") - (version "2.1.1") + (version "2.1.2") (source (origin (method url-fetch) (uri (string-append @@ -5515,7 +5753,7 @@ are exceeded.") "mtd-utils-" version ".tar.bz2")) (sha256 (base32 - "1lijl89l7hljx8xx70vrz9srd3h41v5gh4b0lvqnlv831yvyh5cd")))) + "1mp9fqgnz5r69s8ly98ry6k2blqnaqpllwi8m930dm0n8zrwbm4a")))) (arguments '(#:configure-flags '("--enable-unit-tests"))) (native-inputs @@ -5541,7 +5779,7 @@ of flash storage.") (define-public libseccomp (package (name "libseccomp") - (version "2.4.3") + (version "2.5.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/seccomp/libseccomp/" @@ -5549,10 +5787,20 @@ of flash storage.") "/libseccomp-" version ".tar.gz")) (sha256 (base32 - "07crwxqzvl5k2b90a47ii9wgvi09s9hsy5b5jddw9ylp351d25fg")))) + "1wql62cg8f95cwpy057cl764nni9g4sdn5lqj68x22kjs8w71yhz")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static") + #:phases (modify-phases %standard-phases + (add-before 'check 'skip-load-test + (lambda _ + ;; This test does a native system call and fails when + ;; run under QEMU user-mode emulation. Just skip it. + (delete-file "tests/52-basic-load.tests") + #t))))) (native-inputs - `(("which" ,which))) + `(("gperf" ,gperf) + ("which" ,which))) (synopsis "Interface to Linux's seccomp syscall filtering mechanism") (description "The libseccomp library provides an easy to use, platform independent, interface to the Linux Kernel's syscall filtering mechanism. The @@ -5571,7 +5819,7 @@ developers.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/clbr/radeontop.git") + (url "https://github.com/clbr/radeontop") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -5683,17 +5931,17 @@ running boot option, and more.") (define-public sysstat (package (name "sysstat") - (version "12.3.1") + (version "12.4.0") (source (origin (method url-fetch) (uri (string-append "http://pagesperso-orange.fr/sebastien.godard/" "sysstat-" version ".tar.xz")) (sha256 (base32 - "1hf1sy7akribmgavadqccxpy49yv0zfb3m81d2bj6jf8pyzwcrbq")))) + "05idnvkhvzaynj9awx7q54x1v42jblzrxq0fn5zd1v4mjwrnqmbq")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; No test suite. + `(#:tests? #f ; no test suite. ;; Without this flag, it tries to install the man pages with group 'root' ;; and fails because /etc/passwd lacks an entry for the root user. #:configure-flags @@ -5725,7 +5973,7 @@ monitoring tools for Linux. These include @code{mpstat}, @code{iostat}, (origin (method git-fetch) (uri (git-reference - (url "https://github.com/haikarainen/light.git") + (url "https://github.com/haikarainen/light") (commit (string-append "v" version)))) (sha256 (base32 "1a70zcf88ifsnwll486aicjnh48zisdf8f7vi34ihw61kdadsq9s")) @@ -5813,7 +6061,7 @@ interface in sysfs, which can be accomplished with the included udev rules.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/linrunner/TLP.git") + (url "https://github.com/linrunner/TLP") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -5932,7 +6180,7 @@ every time the power supply source is changed.") (define-public lshw (package (name "lshw") - (version "B.02.18") + (version "B.02.19.2") (source (origin (method url-fetch) (uri (string-append "https://www.ezix.org/software/" @@ -5940,7 +6188,7 @@ every time the power supply source is changed.") ".tar.gz")) (sha256 (base32 - "0brwra4jld0d53d7jsgca415ljglmmx1l2iazpj4ndilr48yy8mf")))) + "100gm1c6gb2hkfws22h0xhvv7nz38p49lxd1csikj8qlhyn4gcwv")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases (delete 'configure)) @@ -5983,14 +6231,14 @@ re-use code and to avoid re-inventing the wheel.") (define-public libnftnl (package (name "libnftnl") - (version "1.1.6") + (version "1.1.7") (source (origin (method url-fetch) (uri (string-append "mirror://netfilter.org/libnftnl/" "libnftnl-" version ".tar.bz2")) (sha256 - (base32 "1jhyxsfrfqjascrm5lnxlcyzj6n0gc0qc1bp2asb7m61dxlmmsy1")))) + (base32 "13zd90bfrr0q3j0l0cbc8kiizccw6n8gp727kqnfljh024zw3nr0")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -6007,7 +6255,7 @@ used by nftables.") (define-public nftables (package (name "nftables") - (version "0.9.3") + (version "0.9.6") (source (origin (method url-fetch) @@ -6016,7 +6264,7 @@ used by nftables.") (string-append "https://www.nftables.org/projects/nftables" "/files/nftables-" version ".tar.bz2"))) (sha256 - (base32 "0y6vbqp6x8w165q65h4n9sba1406gaz0d4744gqszbm7w9f92swm")))) + (base32 "0vmn6xwqa1nq6crfxshh049b199d0aj6hfgin7k068xhibzgvmk8")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--disable-man-doc"))) ; FIXME: Needs docbook2x. @@ -6045,7 +6293,7 @@ userspace queueing component and the logging subsystem.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/proot-me/PRoot.git") + (url "https://github.com/proot-me/PRoot") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -6175,14 +6423,14 @@ available in the kernel Linux.") (define-public cpuid (package (name "cpuid") - (version "20200211") + (version "20200427") (source (origin (method url-fetch) (uri (string-append "http://www.etallen.com/cpuid/cpuid-" version ".src.tar.gz")) (sha256 (base32 - "06sjbqqp80l7nhsp6khglkzdp9qy4vhbvjxbfilznhsmrqiwlw55")))) + "1m31238z2ya8f8pzpyklwp0ksf5xicqrw1z941hhhx913wzldaf1")))) (build-system gnu-build-system) (arguments '(#:make-flags '("CC=gcc") @@ -6214,13 +6462,14 @@ NexGen, Rise, and SiS CPUs.") (version "0.5") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/JasonFerrara/jmtpfs/archive/v" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/JasonFerrara/jmtpfs") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "10v8d7mmx8b8123x5f9y9zaaa428ms6wkngwn2ra71n5a53wrjn0")))) + "1pm68agkhrwgrplrfrnbwdcvx5lrivdmqw8pb5gdmm3xppnryji1")))) (build-system gnu-build-system) (inputs `(("file" ,file) @@ -6241,26 +6490,31 @@ the MTP device as a file system.") (version "0.51") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/jamesodhunt/procenv/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/jamesodhunt/procenv") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 "1javw97yw0qvjmj14js8vw6nsfyf2xc0kfiyq5f2hsp0553w2cdq")))) + (base32 "1ilrsw1rc85w29mkbkmm5n5w427gapv43yrjzvkb4kc9xhscgdjn")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--disable-silent-rules"))) - (native-inputs `(("groff" ,groff) ; for tests - ("pkg-config" ,pkg-config))) - (inputs `(("check" ,check) - ("expat" ,expat) - ("libcap" ,libcap) - ("libselinux" ,libselinux))) + (native-inputs + `(("pkg-config" ,pkg-config) + + ;; For tests. + ("check" ,check) + ("groff" ,groff))) + (inputs + `(("expat" ,expat) + ("libcap" ,libcap) + ("libselinux" ,libselinux))) (synopsis "Utility to show process environment") (description "Procenv is a command-line tool that displays as much detail about itself and its environment as possible. It can be used as a test tool, to understand the type of environment a process runs in, and for comparing system environments.") - (home-page "http://github.com/jamesodhunt/procenv/") + (home-page "https://github.com/jamesodhunt/procenv/") (license license:gpl3+))) (define-public libfabric @@ -6486,7 +6740,7 @@ interface to this kernel feature.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/dgraziotin/mbpfan.git") + (url "https://github.com/dgraziotin/mbpfan") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -6521,7 +6775,7 @@ privileges.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/intel/opa-psm2.git") + (url "https://github.com/intel/opa-psm2") (commit (string-append "PSM2_" version)))) (file-name (git-file-name name version)) (sha256 @@ -6639,7 +6893,7 @@ management tools in userspace.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/vishvananda/netlink.git") + (url "https://github.com/vishvananda/netlink") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -6662,7 +6916,7 @@ IP addresses and routes, and configure IPsec.") (define-public xfsprogs (package (name "xfsprogs") - (version "5.2.1") + (version "5.7.0") (source (origin (method url-fetch) (uri (string-append @@ -6670,7 +6924,7 @@ IP addresses and routes, and configure IPsec.") "xfsprogs-" version ".tar.gz")) (sha256 (base32 - "0q5xd4gb9g83h82mg68cx616ifzl8qkzzlgg5xna698117ph3wky")))) + "0bssrfhnw5mhybgaa6d8wp87izi3c9cjpjy7vicm6y76mf7kl8p9")))) (build-system gnu-build-system) (outputs (list "out" "python")) (arguments @@ -6711,7 +6965,7 @@ file systems.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/jeremie-koenig/genext2fs.git") + (url "https://github.com/jeremie-koenig/genext2fs") ;; 1.4.1-3 had a VCS tag but 1.4.1-4 doesn't. (commit "9ee43894634998b0b2b309d636f25c64314c9421"))) (file-name (git-file-name name version)) @@ -6765,12 +7019,18 @@ the superuser to make device nodes.") (substitute* "Makefile" (("/bin/sh") (which "sh"))) #t)) - (add-after 'unpack 'patch-getopt + (add-after 'unpack 'patch-script (lambda* (#:key inputs #:allow-other-keys) (substitute* "scripts/fakeroot.in" (("getopt") (string-append (assoc-ref inputs "util-linux") - "/bin/getopt"))) + "/bin/getopt")) + (("sed") + (string-append (assoc-ref inputs "sed") + "/bin/sed")) + (("cut") + (string-append (assoc-ref inputs "coreutils") + "/bin/cut")) ) #t)) (add-before 'configure 'setenv (lambda _ @@ -6807,7 +7067,9 @@ the superuser to make device nodes.") ("xz" ,xz))) ; for the tests (inputs `(("libcap" ,libcap/next) - ("util-linux" ,util-linux))) + ("util-linux" ,util-linux) + ("sed" ,sed) + ("coreutils" ,coreutils))) (synopsis "Provides a fake root environment") (description "@command{fakeroot} runs a command in an environment where it appears to have root privileges for file manipulation. This is useful @@ -6856,7 +7118,7 @@ set as @code{LD_PRELOAD} to override the C library file system functions.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/linuxwacom/input-wacom.git") + (url "https://github.com/linuxwacom/input-wacom") (commit (string-append "input-wacom-" version)))) (file-name (git-file-name name version)) (sha256 @@ -6932,6 +7194,37 @@ and Flatpak we expect PipeWire to provide a core building block for the future of Linux application development.") (license license:lgpl2.0+))) +(define-public pipewire-0.3 + (package + (inherit pipewire) + (name "pipewire") + (version "0.3.10") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/PipeWire/pipewire") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1y293sfhhmzbgnlvs46bpiyimlii5nk71f8115qxs8sviwlsdr3w")))) + (arguments + '(#:configure-flags + (list (string-append "-Dudevrulesdir=" (assoc-ref %outputs "out") + "/lib/udev/rules.d") + "-Dsystemd=false") + #:phases + (modify-phases %standard-phases + ;; Skip shrink-runpath, otherwise validate-runpath fails. + (delete 'shrink-runpath)))) + (inputs + (append (package-inputs pipewire) + `(("bluez" ,bluez) + ("jack" ,jack-2) + ("pulseaudio" ,pulseaudio) + ("vulkan-loader" ,vulkan-loader) + ("vulkan-headers" ,vulkan-headers)))))) + (define-public ell (package (name "ell") @@ -7052,3 +7345,204 @@ cache data store that is used by network file systems such as @code{AFS} and @code{NFS} to cache data locally on disk. The content of the cache is persistent over reboots.") (license license:gpl2+))) + +(define-public libbpf + (package + (name "libbpf") + (version "0.0.9") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/libbpf/libbpf") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "18l0gff7nm841mwhr7bc7x863xcyvwh58zl7mc0amnsjqlbrvqg7")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libelf" ,libelf) + ("zlib" ,zlib))) + (arguments + `(#:tests? #f ; No tests + #:make-flags + (list + (string-append "PREFIX=''") + (string-append "DESTDIR=" (assoc-ref %outputs "out")) + (string-append "LIBDIR=/lib") + (string-append + "CC=" (assoc-ref %build-inputs "gcc") "/bin/gcc")) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-before 'build 'pre-build + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "scripts/check-reallocarray.sh" + (("/bin/rm" rm) + (string-append (assoc-ref inputs "coreutils") rm))) + (chdir "src") + #t))))) + (home-page "https://github.com/libbpf/libbpf") + (synopsis "BPF CO-RE (Compile Once – Run Everywhere)") + (description + "Libbpf supports building BPF CO-RE-enabled applications, which, in +contrast to BCC, do not require the Clang/LLVM runtime or linux kernel +headers.") + (license `(,license:lgpl2.1 ,license:bsd-2)))) + +(define-public bcc + (package + (name "bcc") + (version "0.15.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/iovisor/bcc") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1d5j9zanffa1c7lpi5fcrdlx1n7hy86xl82fam2xqr0s41q4ipxw")))) + (build-system cmake-build-system) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex))) + (inputs + `(("clang-toolchain" ,clang-toolchain) + ("libbpf" ,(package-source libbpf)) + ;; LibElf required but libelf does not contain + ;; archives, only object files. + ;; https://github.com/iovisor/bcc/issues/504 + ("elfutils" ,elfutils) + ("linux-libre-headers" ,linux-libre-headers) + ("luajit" ,luajit) + ("python-wrapper" ,python-wrapper))) + (arguments + `(;; Tests all require root permissions and a "standard" file hierarchy. + #:tests? #f + #:configure-flags + (let ((revision ,version)) + `(,(string-append "-DREVISION=" revision))) + #:phases + (modify-phases %standard-phases + ;; FIXME: Use "-DCMAKE_USE_LIBBPF_PACKAGE=ON". + (add-after 'unpack 'copy-libbpf + (lambda* (#:key inputs #:allow-other-keys) + (delete-file-recursively "src/cc/libbpf") + (copy-recursively + (assoc-ref inputs "libbpf") "src/cc/libbpf"))) + (add-after 'copy-libbpf 'substitute-libbc + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "src/python/bcc/libbcc.py" + (("(libbcc\\.so.*)\\b" _ libbcc) + (string-append + (assoc-ref outputs "out") "/lib/" libbcc))))) + (add-after 'install 'wrap-tools + (lambda* (#:key outputs #:allow-other-keys) + (use-modules (ice-9 textual-ports)) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib")) + (tools (string-append out "/share/bcc/tools")) + (python-executable? + (lambda (filename _) + (call-with-input-file filename + (lambda (port) + (string-contains (get-line port) + "/bin/python")))))) + (for-each + (lambda (python-executable) + (format #t "Wrapping: ~A.~%" python-executable) + (wrap-program python-executable + `("PYTHONPATH" ":" prefix + (,(string-append lib + "/python" + ,(version-major+minor + (package-version python)) + "/site-packages"))))) + (find-files tools python-executable?)) + #t)))))) + (home-page "https://github.com/iovisor/bcc") + (synopsis "Tools for BPF on Linux") + (description + "BCC is a toolkit for creating efficient kernel tracing and manipulation +programs, and includes several useful tools and examples. It makes use of +extended BPF (Berkeley Packet Filters), formally known as eBPF, a new feature +that was first added to Linux 3.15. Much of what BCC uses requires Linux 4.1 +and above.") + (license license:asl2.0))) + +(define-public bpftrace + (package + (name "bpftrace") + (version "0.10.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/iovisor/bpftrace") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "023ardywbw5w8815j2ny9rrp2xlpxndqaa7v2njjm8109p7ilsdn")) + (patches (search-patches "bpftrace-disable-bfd-disasm.patch")))) + (build-system cmake-build-system) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex))) + (inputs + `(("bcc" ,bcc) + ("clang-toolchain" ,clang-toolchain) + ("elfutils" ,elfutils) + ("libbpf" ,libbpf) + ("linux-libre-headers" ,linux-libre-headers))) + (arguments + `(#:tests? #f ;Tests require googletest sources. + #:configure-flags + '("-DBUILD_TESTING=OFF" + ;; FIXME: libbfd misses some link dependencies, when fixed, remove + ;; the associated patch. + "-DHAVE_BFD_DISASM=OFF"))) + (home-page "https://github.com/iovisor/bpftrace") + (synopsis "High-level tracing language for Linux eBPF") + (description + "bpftrace is a high-level tracing language for Linux enhanced Berkeley +Packet Filter (eBPF) available in recent Linux kernels (4.x). bpftrace uses +LLVM as a backend to compile scripts to BPF-bytecode and makes use of BCC for +interacting with the Linux BPF system, as well as existing Linux tracing +capabilities: kernel dynamic tracing (kprobes), user-level dynamic +tracing (uprobes), and tracepoints. The bpftrace language is inspired by awk +and C, and predecessor tracers such as DTrace and SystemTap. bpftrace was +created by Alastair Robertson.") + (license license:asl2.0))) + +(define-public ttyebus-linux-module + (let ((revision "0") + (commit "fe4332a2281cf79804ef4d8516aa848ca1c58d1f")) + (package + (name "ttyebus-linux-module") + (version (git-version "1.5" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/eBUS/ttyebus.git") + (commit "fe4332a2281cf79804ef4d8516aa848ca1c58d1f"))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1i66xjs9vln5cca6wx7aiiw7jihrlsk9hjdqyczp36fvm1b1bani")))) + (supported-systems '("armhf-linux" "aarch64-linux")) + (build-system linux-module-build-system) + (arguments + `(#:tests? #f)) + (home-page "https://github.com/eBUS/ttyebus") + (synopsis "Low-latency Raspberry Pi UART driver") + (description "This package provides a Linux kernel module that will +provide a serial device @code{/dev/ttyebus} with almost no latency upon +receiving. It is dedicated to the PL011 UART of the Raspberry Pi.") + (license license:gpl3+))))