;;; Copyright © 2016 Raymond Nicholson <rain1@openmailbox.org>
;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2016, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
-;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2018, 2019, 2020 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 Marius Bakke <mbakke@fastmail.com>
;;; 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 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2017, 2018, 2020 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 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
+;;; Copyright © 2020 John Soo <jsoo1@asu.edu>
+;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020 Anders Thuné <asse.97@gmail.com>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
#: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)
#: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)
#: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)
#: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)
(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.7
- (linux-libre-deblob-scripts
- "5.7.1"
- (base32 "1c0n39wg6xij4x63ppg0m80kfcffkn3iilm3chyiix09n9g7vb78")
- (base32 "02is246xaql1br3kizqicrkp982nw4gdwpn7nlzjazvsmyd1hcv2")))
-
-(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))
(srfi srfi-1)
(ice-9 match)
(ice-9 ftw))
+
+ (setvbuf (current-output-port) 'line)
+
(let ((dir (string-append "linux-" #$version)))
(mkdir "/tmp/bin")
#+(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"
(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)
(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"
"--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))))))))))
\f
;;;
(sha256 hash)))
-(define-public linux-libre-5.7-version "5.7.5")
-(define-public linux-libre-5.7-pristine-source
- (let ((version linux-libre-5.7-version)
- (hash (base32 "008bpcvcdbwy3w829zc0s6ighn820nr51y24l6df5qfvah1zjdvc")))
+;; 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.7)))
+ deblob-scripts-5.8)))
-(define-public linux-libre-5.4-version "5.4.47")
+;; 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.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 "0v4d86yci4lq82nb1fgf0g3j0348v6q6m77czpm4b3cs7lwrs2wp")))
+ (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.129")
+(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 "0p0apfviv699mda5zmqphymfybcm932s5yffhvrpqvy2fpas0yx8")))
+ (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.185")
+(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 "1iixxwidp53s2i2br58wbx5s69f2jcllb116z73pv7fmd06b2czk")))
+ (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.228")
+(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 "0d7w2zzs79ywxzfrh4bmk5lw318qbkcb8mcsyyh3cc25qqlz9gwg")))
+ (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.228")
+(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 "0y1xc5lk8j3p5maarksmh18wy921rgcngzsih7q1a82rah1fsjxr")))
+ (hash (base32 "1v1mx16x1crnxf4pix0bhw40lq89n7wpd66gjc2mhxi75h6x6i80")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.4)))
(patches (append (origin-patches source)
patches))))
-(define-public linux-libre-5.7-source
- (source-with-patches linux-libre-5.7-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)))
(description "Headers of the Linux-Libre kernel.")
(license license:gpl2)))
-(define-public linux-libre-headers-5.7
- (make-linux-libre-headers* linux-libre-5.7-version
- linux-libre-5.7-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
("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)
("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)
;;; 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
("CONFIG_RTC_DRV_RK808" . #t))
%default-extra-linux-options)))
-(define-public linux-libre-arm-generic-5.7
- (make-linux-libre* linux-libre-5.7-version
- linux-libre-5.7-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"
("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
'("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.7
- (make-linux-libre* linux-libre-5.7-version
- linux-libre-5.7-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"
'("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))))))
+
+
\f
;;;
;;; Linux kernel modules.
(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
(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
(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
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/umlaeute/v4l2loopback.git")
+ (url "https://github.com/umlaeute/v4l2loopback")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
"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.
(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")
(define-public strace
(package
(name "strace")
- (version "5.7")
+ (version "5.8")
(home-page "https://strace.io")
(source (origin
(method url-fetch)
"/strace-" version ".tar.xz"))
(sha256
(base32
- "1n6cfz3i2krkyvxpdp3kmxhf7sy5xp0danzaiirbk5fdkfgvb15j"))))
+ "1abs3svkg9985f4jrxx34sj1dcpsf95vv1a0g01c777zgygncjnz"))))
(build-system gnu-build-system)
(arguments
'(#:phases
(define-public iproute
(package
(name "iproute2")
- (version "5.7.0")
+ (version "5.8.0")
(source (origin
(method url-fetch)
(uri (string-append
version ".tar.xz"))
(sha256
(base32
- "088gs56iqhdlpw1iqjwrss4zxd4zbl2wl8s2implrrdajjxcfpbj"))))
+ "0vk4vickrpahdhl3zazr2qn2bf99v5549ncirjpwiy4h0a4izkfg"))))
(build-system gnu-build-system)
(arguments
`( ;; There is a test suite, but it wants network namespaces and sudo.
(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
(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)
(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
(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
(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
#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")
(define-public wireless-regdb
(package
(name "wireless-regdb")
- (version "2019.06.03")
+ (version "2020.04.29")
(source (origin
(method url-fetch)
(uri (string-append
"wireless-regdb-" version ".tar.xz"))
(sha256
(base32
- "1gslvh0aqdkv48jyr2ddq153mw28i7qz2ybrjj9qvkk3dgc7x4fd"))
+ "0yicda474ygahv8da18h1p4yf42s6x2f208mlwcw4xsrxld07zc9"))
;; We're building 'regulatory.bin' by ourselves.
(snippet '(begin
(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))
;; 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)
(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
`(#: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)
(define-public nvme-cli
(package
(name "nvme-cli")
- (version "1.11.2")
+ (version "1.12")
(home-page "https://github.com/linux-nvme/nvme-cli")
(source (origin
(method git-fetch)
(url home-page)
(commit (string-append "v" version))))
(sha256
- (base32 "0ngh7zffjf6ac8b22hdi4ry7hjlafih172hrbpw8j17r7c0wjy9i"))
+ (base32 "0ldky34sn0m5c4hgiip0fkzm465nca69bhxicpd5dg8wxhzxqrp3"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments
(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/"
"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"
(define-public thinkfan
(package
(name "thinkfan")
- (version "1.2")
+ (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 "0vmkpj575a1w52zx1jn6kdrk8rc9vp0f1bldi1bajicpgbs6rjd3"))))
+ (base32 "18vgm5w5pjnpipa34j4x87q10695w2jnqwvc2f027afy7mnzw7kz"))))
(build-system cmake-build-system)
(arguments
`(#:modules ((guix build cmake-build-system)
(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
(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")
(define-public mtd-utils
(package
(name "mtd-utils")
- (version "2.1.1")
+ (version "2.1.2")
(source (origin
(method url-fetch)
(uri (string-append
"mtd-utils-" version ".tar.bz2"))
(sha256
(base32
- "1lijl89l7hljx8xx70vrz9srd3h41v5gh4b0lvqnlv831yvyh5cd"))))
+ "1mp9fqgnz5r69s8ly98ry6k2blqnaqpllwi8m930dm0n8zrwbm4a"))))
(arguments
'(#:configure-flags '("--enable-unit-tests")))
(native-inputs
(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/"
"/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
(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
(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
(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"))
(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
(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/"
".tar.gz"))
(sha256
(base32
- "0brwra4jld0d53d7jsgca415ljglmmx1l2iazpj4ndilr48yy8mf"))))
+ "100gm1c6gb2hkfws22h0xhvv7nz38p49lxd1csikj8qlhyn4gcwv"))))
(build-system gnu-build-system)
(arguments
`(#:phases (modify-phases %standard-phases (delete 'configure))
(define-public nftables
(package
(name "nftables")
- (version "0.9.5")
+ (version "0.9.6")
(source
(origin
(method url-fetch)
(string-append "https://www.nftables.org/projects/nftables"
"/files/nftables-" version ".tar.bz2")))
(sha256
- (base32 "05kyri19q776mymkbcxq3786l6nrf4xg7f3n8my0aw63mdz9bhgj"))))
+ (base32 "0vmn6xwqa1nq6crfxshh049b199d0aj6hfgin7k068xhibzgvmk8"))))
(build-system gnu-build-system)
(arguments `(#:configure-flags
'("--disable-man-doc"))) ; FIXME: Needs docbook2x.
(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
(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")
(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)
(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
(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
(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
(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
(define-public xfsprogs
(package
(name "xfsprogs")
- (version "5.2.1")
+ (version "5.7.0")
(source (origin
(method url-fetch)
(uri (string-append
"xfsprogs-" version ".tar.gz"))
(sha256
(base32
- "0q5xd4gb9g83h82mg68cx616ifzl8qkzzlgg5xna698117ph3wky"))))
+ "0bssrfhnw5mhybgaa6d8wp87izi3c9cjpjy7vicm6y76mf7kl8p9"))))
(build-system gnu-build-system)
(outputs (list "out" "python"))
(arguments
(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))
(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 _
("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
(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
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")
@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+))))