diff options
Diffstat (limited to 'gnu/packages/linux.scm')
-rw-r--r-- | gnu/packages/linux.scm | 410 |
1 files changed, 296 insertions, 114 deletions
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 83921a786a..6e3b43ae66 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -33,7 +33,7 @@ ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com> ;;; Copyright © 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de> -;;; Copyright © 2019, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2019, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2019 Stefan Stefanović <stefanx2ovic@gmail.com> ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2019, 2020, 2021 Brice Waegeneire <brice@waegenei.re> @@ -47,7 +47,6 @@ ;;; 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> ;;; Copyright © 2020, 2021 Greg Hogan <code@greghogan.com> ;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com> ;;; Copyright © 2020 David Dashyan <mail@davie.li> @@ -164,7 +163,8 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-2) #:use-module (srfi srfi-26) - #:use-module (ice-9 match)) + #:use-module (ice-9 match) + #:use-module (ice-9 regex)) (define-public (system->linux-architecture arch) "Return the Linux architecture name for ARCH, a Guix system name such as @@ -355,15 +355,28 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; The current "stable" kernels. That is, the most recently released major ;; versions that are still supported upstream. -(define-public linux-libre-5.12-version "5.12.12") +(define-public linux-libre-5.13-version "5.13.2") +(define deblob-scripts-5.13 + (linux-libre-deblob-scripts + linux-libre-5.13-version + (base32 "1mhc215a1y8bxip2f0sqmyl0rf7cgw22cmg26hg9x0pfm9li2c95") + (base32 "1hkbkyy3myraczaj982z72m0p1yxjwigqhsz2kx9g74qkap0xy9d"))) +(define-public linux-libre-5.13-pristine-source + (let ((version linux-libre-5.13-version) + (hash (base32 "0dx9khk7fh003xyb3xix0kc0rmjncg7ric5p830zhadnrw4hv563"))) + (make-linux-libre-source version + (%upstream-linux-source version hash) + deblob-scripts-5.13))) + +(define-public linux-libre-5.12-version "5.12.17") (define deblob-scripts-5.12 (linux-libre-deblob-scripts linux-libre-5.12-version (base32 "1vdsr9y4gckknrbqcjyfakwva3k0vb5zcivzk3k1s9mh7qp9dils") - (base32 "1p1jzrci97sipjdx3h0vmdnw35z2vyvczinxmp65xi1ja7ww0g14"))) + (base32 "1kb98sbn6lgf5cpd2f8mav93hxh0aywybfjzxx35294ipll1264y"))) (define-public linux-libre-5.12-pristine-source (let ((version linux-libre-5.12-version) - (hash (base32 "1a1ymbgkp8ngrkf7cfjrn56zb9qz1mm1j1pmd60g85ln7nyb4ai1"))) + (hash (base32 "1ghyqxfxslxzr7273vj2yn14pkdnkja3wk50xxhavpvf87i8c40j"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.12))) @@ -371,20 +384,20 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; 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.10-version "5.10.45") +(define-public linux-libre-5.10-version "5.10.50") (define deblob-scripts-5.10 (linux-libre-deblob-scripts linux-libre-5.10-version (base32 "1rmnx1px4sizs2lq831yd2g9dyflg0vmykz3cv9443x2a2vwy81f") - (base32 "1zsr02zmpx3968277sy8pfs2mdlgh86ifymwyj0r56wnhzf5q6hk"))) + (base32 "1fdvjhc048nk8v27bgir0fdjqm8hn4yfdgd3mdjird4ary80ywb2"))) (define-public linux-libre-5.10-pristine-source (let ((version linux-libre-5.10-version) - (hash (base32 "01rmw5rnxyybr8sh0v9rgamrg71ign2nr7m0ilrq9704k6dj9dzj"))) + (hash (base32 "0dmlpy9k7am99495bxcm46i4y6g34d1fzdkzz3wgzb4mgmx35nlb"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.10))) -(define-public linux-libre-5.4-version "5.4.127") +(define-public linux-libre-5.4-version "5.4.132") (define deblob-scripts-5.4 (linux-libre-deblob-scripts linux-libre-5.4-version @@ -392,12 +405,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1xghbbnaisjd0k1klbyn1p7r6r4x5a1bpmkm56a3gh2zvw4s7mj8"))) (define-public linux-libre-5.4-pristine-source (let ((version linux-libre-5.4-version) - (hash (base32 "1gr89x1ymxaslp9fqcchaa7939yvhxy67z3pgskmx6z2vrd9pgd0"))) + (hash (base32 "1vq0dmrn7gl2vprm08l8by5ja3xjgggrcd38vqg7b7jpnfzssrl4"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.4))) -(define-public linux-libre-4.19-version "4.19.195") +(define-public linux-libre-4.19-version "4.19.197") (define deblob-scripts-4.19 (linux-libre-deblob-scripts linux-libre-4.19-version @@ -405,12 +418,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1jiaw0as1ippkrjdpd52657w5mz9qczg3y2hlra7m9k0xawwiqlf"))) (define-public linux-libre-4.19-pristine-source (let ((version linux-libre-4.19-version) - (hash (base32 "02rdy5mdmwxli0cin5n7ab492y9fs01hhqxrjq6b4idwv5baa42m"))) + (hash (base32 "10kj442qaky6rpl65k5rrvd3p6mdgz4p321zvf4s312ixfdja0g6"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.19))) -(define-public linux-libre-4.14-version "4.14.237") +(define-public linux-libre-4.14-version "4.14.239") (define deblob-scripts-4.14 (linux-libre-deblob-scripts linux-libre-4.14-version @@ -418,12 +431,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1qij18inijj6c3ma8hv98yjagnzxdxyn134da9fd23ky8q6hbvky"))) (define-public linux-libre-4.14-pristine-source (let ((version linux-libre-4.14-version) - (hash (base32 "0kib9p61hhwjbr8zhir9aw86qik7k6bm95503n3k09ayyachajpq"))) + (hash (base32 "167zwm3giizv42m0xjz71xnb2swlwiaw0xw0dg8j8mb74hz1drx0"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.14))) -(define-public linux-libre-4.9-version "4.9.273") +(define-public linux-libre-4.9-version "4.9.275") (define deblob-scripts-4.9 (linux-libre-deblob-scripts linux-libre-4.9-version @@ -431,12 +444,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "0fxajshb75siq39lj5h8xvhdj8lcmddkslwlyj65rhlwk6g2r4b2"))) (define-public linux-libre-4.9-pristine-source (let ((version linux-libre-4.9-version) - (hash (base32 "0jjarv3xfkc21j1xhgch53w8wm6rq3xw1i03rjw9fv5i9k4x6qsw"))) + (hash (base32 "08mz7mzmhk5n1gwadrc5fw8s40jk0rayvdpjcricl4sv56574lb6"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.9))) -(define-public linux-libre-4.4-version "4.4.273") +(define-public linux-libre-4.4-version "4.4.275") (define deblob-scripts-4.4 (linux-libre-deblob-scripts linux-libre-4.4-version @@ -444,7 +457,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "0hhin1jpfkd6nwrb6xqxjzl3hdxy4pn8a15hy2d3d83yw6pflbsf"))) (define-public linux-libre-4.4-pristine-source (let ((version linux-libre-4.4-version) - (hash (base32 "1pd39cak0zhda3m9nvn9yxgd070wxvckaha5wl8pi7c8i6jfpclb"))) + (hash (base32 "1aiwq6019sibsw5smj6ii28cr64dv24c19k4n8c09nakhmhcg94i"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.4))) @@ -477,6 +490,14 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (patches (append (origin-patches source) patches)))) +(define-public linux-libre-5.13-source + (source-with-patches linux-libre-5.13-pristine-source + (list %boot-logo-patch + %linux-libre-arm-export-__sync_icache_dcache-patch + ;; Pinebook Pro patch to fix LCD display + (search-patch + "linux-libre-arm64-generic-pinebook-lcd.patch")))) + (define-public linux-libre-5.12-source (source-with-patches linux-libre-5.12-pristine-source (list %boot-logo-patch @@ -595,6 +616,10 @@ 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.13 + (make-linux-libre-headers* linux-libre-5.13-version + linux-libre-5.13-source)) + (define-public linux-libre-headers-5.12 (make-linux-libre-headers* linux-libre-5.12-version linux-libre-5.12-source)) @@ -894,6 +919,12 @@ It has been modified to remove all non-free binary blobs.") ;;; Generic kernel packages. ;;; +(define-public linux-libre-5.13 + (make-linux-libre* linux-libre-5.13-version + linux-libre-5.13-source + '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "riscv64-linux") + #:configuration-file kernel-config)) + (define-public linux-libre-5.12 (make-linux-libre* linux-libre-5.12-version linux-libre-5.12-source @@ -1185,6 +1216,120 @@ It grants direct and undocumented access to your hardware that may cause damage and should be used with caution, especially on untested models.") (license license:gpl3+))) ; see README.md (no licence headers) +(define-public corefreq + (package + (name "corefreq") + (version "1.86.7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cyring/CoreFreq") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1k8pyxcahc78kcc8q1h76dr91i1r33jciqhgkajkz3xa28qx8mhn")))) + (build-system linux-module-build-system) + (outputs (list "out" "linux-module")) + (arguments + `(#:imported-modules ((guix build gnu-build-system) + ,@%linux-module-build-system-modules) + #:modules ((guix build linux-module-build-system) + ((guix build gnu-build-system) #:prefix gnu:) + (guix build utils)) + #:make-flags + (list (string-append "CC=" ,(cc-for-target)) + "OPTIM_LVL=3" + (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:tests? #f ; no test suite + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'untangle-module-targets + ;; Having to build everything in one pass would complicate the + ;; definition. Let each build system handle what it's good at. + (lambda _ + (substitute* "Makefile" + ((".*MAKE.*KERNELDIR.*") "")))) + (add-after 'build 'gnu:build + (assoc-ref gnu:%standard-phases 'build)) + (add-after 'install 'gnu:install + (assoc-ref gnu:%standard-phases 'install)) + (add-after 'install 'separate-module + (lambda* (#:key outputs #:allow-other-keys) + ;; Adding INSTALL_MOD_PATH= to #:make-flags would still create an + ;; empty <out>/lib/modules directory, so just do it all by hand. + (let* ((out (assoc-ref outputs "out")) + (module (assoc-ref outputs "linux-module"))) + (mkdir-p (string-append module "/lib")) + (rename-file (string-append out "/lib/modules") + (string-append module "/lib/modules"))))) + (add-after 'install 'install-README + ;; There is no proper documentation. Provide something. + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (string-append out "/share/doc/" + ,name "-" ,version))) + (install-file "README.md" doc))))))) + (home-page "https://github.com/cyring/CoreFreq") + (synopsis + "Measure performance data & tweak low-level settings on x86-64 CPUs") + (description + "CoreFreq is a CPU monitor that reports low-level processor settings and +performance data with notably high precision by using a loadable Linux kernel +module. Unlike most similar tools, it can be used to modify some settings if +supported by the hardware and at your own risk. It's designed for 64-bit x86 +Intel processors (Atom, Core2, Nehalem, SandyBridge, and newer) and compatible +architectures like AMD@tie{}Zen and Hygon@tie{}Dhyana. + +Supported processor features include: +@enumerate +@item time spent in C-states, including C1/C3 Auto- and UnDemotion; +@item core temperatures, voltage, and tweaking thermal limits; +@item core frequencies, ratios, and base clock rate; +@item enabling, disabling, and testing SpeedStep (EIST), Turbo Boost, and +Hyper-Threading or SMT; +@item enabling or disabling data cache prefetching; +@item kernel assembly code to keep as near as possible readings of performance +counters such as the @acronym{TSC, Time Stamp Counter}, @acronym{UCC, Unhalted +Core Cycles}, and @acronym{URC, Unhalted Reference Cycles}; +@item the number of instructions per cycle or second (IPS, IPC, and CPI); +@item memory controller geometry and RAM timings; +@item running processes' CPU affinity. +@end enumerate + +This package provides the @command{corefreqd} data collection daemon, the +@command{corefreq-cli} client to visualise and control it in real time, and the +@code{corefreqk} kernel module in its own separate output. Read the included +@file{README.md} before loading it.") + (supported-systems (list "x86_64-linux")) + (license license:gpl2))) + +(define-public librem-ec-acpi-linux-module + (package + (name "librem-ec-acpi-linux-module") + (version "0.9.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://source.puri.sm/nicole.faerber/librem-ec-acpi-dkms") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1qnbfj60i8nn2ahgj2zp5ixd79bb0wl1ld36x3igws2f3c0f5pfi")))) + (build-system linux-module-build-system) + (arguments + `(#:tests? #f)) ; no test suite + (home-page "https://source.puri.sm/nicole.faerber/librem-ec-acpi-dkms") + (synopsis "Linux kernel module to control the Librem Embedded Controller") + (description + "This is the Linux kernel @acronym{ACPI, Advanced Configuration and Power +Interface} platform driver for the @acronym{EC, Embedded Controller} firmware +on Purism Librem laptop computers. It allows user-space control over the +battery charging thresholds, keyboard backlight, fans and thermal monitors, +and the notification, WiFi, and Bluetooth LED.") + (license license:gpl2))) + (define-public rtl8812au-aircrack-ng-linux-module (let ((commit "059e06a51be025fde5b2bec6565540b3d9981b0b") (revision "4")) @@ -1269,23 +1414,26 @@ network adapters.") (define-public vhba-module (package (name "vhba-module") - (version "20200106") - (source (origin - (method url-fetch) - (uri (string-append - "http://downloads.sourceforge.net/cdemu/vhba-module/vhba-module-" - version ".tar.bz2")) - (sha256 - (base32 - "10rlvsfj0fw6n0qmwcnvhimqnsnhi7n55lyl7fq1pkwggf5218sr")))) + (version "20210418") + (source + (origin + (method url-fetch) + (uri (string-append + "http://downloads.sourceforge.net/cdemu/vhba-module/vhba-module-" + version ".tar.xz")) + (sha256 + (base32 "119zgav6caialmf3hr096wkf72l9h76sqc9w5dhx26kj4yp85g8q")))) (build-system linux-module-build-system) (arguments - ;; TODO: No tests? - `(#:tests? #f)) + `(#:tests? #f)) ; no test suite (home-page "https://cdemu.sourceforge.io/") - (synopsis "Kernel module that emulates SCSI devices") - (description "VHBA module provides a Virtual (SCSI) HBA, which is the link -between the CDemu userspace daemon and linux kernel.") + (synopsis "Linux kernel module that emulates SCSI devices") + (description + "The @acronym{VHBA, Virtual SCSI Host Bus Adapter} module is the link +between the CDemu user-space daemon and the kernel Linux. It acts as a +low-level SCSI driver that emulates a virtual SCSI adapter which can have +multiple virtual devices attached to it. Its typical use with CDEmu is to +emulate optical devices such as DVD and CD-ROM drives.") (license license:gpl2+))) (define-public bbswitch-module @@ -1509,14 +1657,14 @@ at login. Local and dynamic reconfiguration are its key features.") (define-public powerstat (package (name "powerstat") - (version "0.02.25") + (version "0.02.26") (source (origin (method url-fetch) (uri (string-append "https://kernel.ubuntu.com/~cking/tarballs/" "powerstat/powerstat-" version ".tar.gz")) (sha256 - (base32 "0dmixbxm4qd08ds26i0wvxwyy8nrjzfjj2q9ylx35564g4wh58qb")))) + (base32 "18m85k83hryj05vix63fay1hh0sb9h87hy5r7g1dqg2y9i8lzgxk")))) (build-system gnu-build-system) (arguments `(#:make-flags @@ -1525,12 +1673,6 @@ at login. Local and dynamic reconfiguration are its key features.") #:tests? #f ; no test suite #:phases (modify-phases %standard-phases - (add-after 'unpack 'respect-$prefix - ;; https://bugs.launchpad.net/ubuntu/+source/powerstat/+bug/1877744 - (lambda _ - (substitute* "Makefile" - (("DIR=/usr/") "DIR=$(prefix)/")) - #t)) (delete 'configure)))) ; no configure script (home-page "https://kernel.ubuntu.com/~cking/powerstat/") (synopsis "Measure system power consumption") @@ -2501,7 +2643,7 @@ that the Ethernet protocol is much simpler than the IP protocol.") (define-public iproute (package (name "iproute2") - (version "5.12.0") + (version "5.13.0") (source (origin (method url-fetch) (uri (string-append @@ -2509,7 +2651,7 @@ that the Ethernet protocol is much simpler than the IP protocol.") version ".tar.xz")) (sha256 (base32 - "0vrjbzhwzcvaxyyhkr2ii89w2vznzwp2pfgk7w72mviniawqs9lx")))) + "0dhvdybfm33q9lz73sfnc24pxy2r42xywzb1gdgydjfafhvyb8kj")))) (build-system gnu-build-system) (arguments `( ;; There is a test suite, but it wants network namespaces and sudo. @@ -2978,7 +3120,9 @@ processes currently causing I/O.") "1ddlq6kzxilccgbvxjfx80jx6kamgw4sv49phks2zhlcc1frvrnh")) (patches (search-patches "fuse-overlapping-headers.patch")))) (build-system gnu-build-system) - (inputs `(("util-linux" ,util-linux))) + (inputs + `(("bash-minimal" ,bash-minimal) + ("util-linux" ,util-linux))) (arguments '(#:configure-flags (list (string-append "MOUNT_FUSE_PATH=" (assoc-ref %outputs "out") @@ -3001,9 +3145,9 @@ processes currently causing I/O.") (("/bin/(u?)mount" _ maybe-u) (string-append (assoc-ref inputs "util-linux") "/bin/" maybe-u "mount"))) - (substitute* '("util/mount.fuse.c") - (("/bin/sh") - (which "sh"))) + (substitute* "util/mount.fuse.c" + (("/bin/sh" command) + (string-append (assoc-ref inputs "bash-minimal") command))) ;; This hack leads libfuse to search for 'fusermount' in ;; $PATH, where it may find a setuid-root binary, instead of @@ -3011,8 +3155,7 @@ processes currently causing I/O.") ;; it's not setuid. (substitute* "lib/Makefile" (("-DFUSERMOUNT_DIR=[[:graph:]]+") - "-DFUSERMOUNT_DIR=\\\"/var/empty\\\"")) - #t))))) + "-DFUSERMOUNT_DIR=\\\"/var/empty\\\""))))))) (supported-systems (delete "i586-gnu" %supported-systems)) (home-page "https://github.com/libfuse/libfuse") (synopsis "Support file systems implemented in user space") @@ -3602,7 +3745,7 @@ devices that can inject events directly into the input subsystem.") (define-public interception-tools (package (name "interception-tools") - (version "0.6.4") + (version "0.6.6") (home-page "https://gitlab.com/interception/linux/tools") (source (origin (method git-fetch) @@ -3612,7 +3755,7 @@ devices that can inject events directly into the input subsystem.") (file-name (git-file-name name version)) (sha256 (base32 - "121jy40ynkbzlqnx7g0dqwvkb7dm2ahcy6vwrz6ylsyd0jmi6s5a")))) + "0k9h14a9d65nwvv7pj0kigjgzfv453mm3r4svnxfg1h5lccmy8jj")))) (build-system cmake-build-system) (inputs `(("boost" ,boost) @@ -5134,7 +5277,7 @@ and copy/paste text in the console and in xterm.") (define-public btrfs-progs (package (name "btrfs-progs") - (version "5.12.1") + (version "5.13") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/linux/kernel/" @@ -5142,7 +5285,7 @@ and copy/paste text in the console and in xterm.") "btrfs-progs-v" version ".tar.xz")) (sha256 (base32 - "0n9p8zaz4nrkgc20cp6zj7gp4ib4hd4lbyph74f4pysllkz4c24m")))) + "0hsqbv7kvw5j2669xmp226cf7mgdfyq6xg8vjhm5w9ix43922aaf")))) (build-system gnu-build-system) (outputs '("out" "static")) ; static versions of the binaries in "out" @@ -5855,7 +5998,7 @@ The collection contains a set of bandwidth and latency benchmark such as: (package (name "rng-tools") (home-page "https://github.com/nhorman/rng-tools") - (version "6.12") + (version "6.13") (source (origin (method git-fetch) (uri (git-reference (url home-page) @@ -5863,7 +6006,7 @@ The collection contains a set of bandwidth and latency benchmark such as: (file-name (git-file-name name version)) (sha256 (base32 - "0z4j3kqh9k3zsrx6257hwh4fa51vqg79c6dnfrj6lhpcll0wh0hm")))) + "0m4895f44a668r0z7md5ifq7syndsb2by2dfhk794vmhprsk1406")))) (build-system gnu-build-system) (arguments `(;; Disable support for various hardware entropy sources as they need @@ -6486,6 +6629,8 @@ set the screen to be pitch black at a value of 0 (or higher). (delete 'configure) (add-after 'unpack 'adjust-udev-rules (lambda _ + (substitute* "Makefile" + (("INSTALL_UDEV_RULES=0") "INSTALL_UDEV_RULES=1")) (substitute* "90-brightnessctl.rules" (("/bin/") "/run/current-system/profile/bin/")) #t))))) @@ -6738,7 +6883,9 @@ userspace queueing component and the logging subsystem.") (define-public proot (package (name "proot") - (version "5.1.0") + ;; The last stable release was made in 2015, and fails to build for + ;; the aarch64 platform. + (version "5.2.0-alpha") (source (origin (method git-fetch) @@ -6747,32 +6894,33 @@ userspace queueing component and the logging subsystem.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0azsqis99gxldmbcg43girch85ysg4hwzf0h1b44bmapnsm89fbz")) - (patches (search-patches "proot-test-fhs.patch")))) + (base32 "09vp806y4hqfq2fn2hpi873rh4j6a3c572ph4mkirx1n32wj8srl")))) (build-system gnu-build-system) + ;; The powerpc64le-linux and mips64el-linux architectures are not + ;; supported (see: + ;; https://github.com/proot-me/proot/blob/master/src/arch.h#L51). + (supported-systems '("x86_64-linux" "i686-linux" + "armhf-linux" "aarch64-linux" "i586-gnu")) (arguments - '(#:make-flags '("-C" "src") - + ;; Disable the test suite on ARM platforms, as there are too many + ;; failures to keep track of (see for example: + ;; https://github.com/proot-me/proot/issues/263). + `(#:tests? ,(not (string-match "^(arm|aarch64)" + (or (%current-target-system) + (%current-system)))) + #:make-flags '("-C" "src") #:phases (modify-phases %standard-phases - (delete 'configure) - (add-before 'build 'set-shell-file-name + (add-after 'unpack 'patch-sources (lambda* (#:key inputs #:allow-other-keys) (substitute* (find-files "src" "\\.[ch]$") (("\"/bin/sh\"") - (string-append "\"" - (assoc-ref inputs "bash") + (string-append "\"" (assoc-ref inputs "bash") "/bin/sh\""))) - #t)) - (add-before 'check 'fix-fhs-assumptions-in-tests - (lambda _ - (substitute* "tests/test-c6b77b77.mk" - (("/bin/bash") (which "bash")) - (("/usr/bin/test") (which "test"))) - (substitute* '("tests/test-16573e73.c") - (("/bin/([a-z-]+)" _ program) - (which program))) - (substitute* (find-files "tests" "\\.sh$") + (substitute* "src/GNUmakefile" + (("/bin/echo") (which "echo"))) + + (substitute* (find-files "test" "\\.sh$") ;; Some of the tests try to "bind-mount" /bin/true. (("-b /bin/true:") (string-append "-b " (which "true") ":")) @@ -6782,30 +6930,65 @@ userspace queueing component and the logging subsystem.") (("/bin/sh") (which "sh")) ;; Others assume /etc/fstab exists. (("/etc/fstab") "/etc/passwd")) - - (substitute* "tests/GNUmakefile" + (substitute* "test/GNUmakefile" (("-b /bin:") "-b /gnu:")) + (substitute* "test/test-c6b77b77.mk" + (("/bin/bash") (which "bash")) + (("/usr/bin/test") (which "test"))) + (substitute* "test/test-16573e73.c" + (("/bin/([a-z-]+)" _ program) + (which program))) + (substitute* "test/test-d2175fc3.sh" + (("\\^/bin/true\\$") "$(which true)")) + (substitute* "test/test-5467b986.sh" + (("-w /usr") "-w /gnu") + (("-w usr") "-w gnu") + (("/usr/share") "/gnu/store") + (("share") "store")) + (substitute* "test/test-092c5e26.sh" + (("-q echo ") + "-q $(which echo) ")) + + ;; The following tests are known to fail (see: + ;; https://github.com/proot-me/proot/issues/184). + (delete-file "test/test-0228fbe7.sh") + (delete-file "test/test-2db65cd2.sh") + + ;; This one fails with "bind: Address already in use" + ;; (see: https://github.com/proot-me/proot/issues/260). + (delete-file "test/test-ssssssss.c") + + ;; This one fails on a waitpid call that returns 1 (see: + ;; https://github.com/proot-me/proot/issues/261). + (delete-file "test/test-ptrace01.c") ;; XXX: This test fails in an obscure corner case, just ;; skip it. - (delete-file "tests/test-kkkkkkkk.c") + (delete-file "test/test-kkkkkkkk.c") - #t)) - (replace 'check + ;; The socket tests requires networking. + (for-each delete-file + (find-files "test" "test-socket.*\\.sh$")))) + (delete 'configure) + (add-after 'build 'build-manpage (lambda _ - (let ((n (parallel-job-count))) - ;; For some reason we get lots of segfaults with - ;; seccomp support (x86_64, Linux-libre 4.11.0). - (setenv "PROOT_NO_SECCOMP" "1") - - ;; Most of the tests expect "/bin" to be in $PATH so - ;; they can run things that live in $ROOTFS/bin. - (setenv "PATH" - (string-append (getenv "PATH") ":/bin")) - - (invoke "make" "check" "-C" "tests" - ;;"V=1" - "-j" (number->string n))))) + (with-directory-excursion "doc" + (invoke "make" "proot/man.1" "SUFFIX=.py")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (let ((n (parallel-job-count))) + ;; There are lots of segfaults with seccomp support + ;; (x86_64, Linux-libre 4.11.0) (see: + ;; https://github.com/proot-me/proot/issues/106). + (setenv "PROOT_NO_SECCOMP" "1") + ;; Most of the tests expect "/bin" to be in $PATH so + ;; they can run things that live in $ROOTFS/bin. + (setenv "PATH" + (string-append (getenv "PATH") ":/bin")) + (invoke "make" "check" "-C" "test" + ;;"V=1" + "-j" (number->string n)))))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) ;; The 'install' rule does nearly nothing. @@ -6815,25 +6998,22 @@ userspace queueing component and the logging subsystem.") ;; build currently.) (invoke "make" "-C" "src" "install" (string-append "PREFIX=" out)) - (mkdir-p man1) (copy-file "doc/proot/man.1" - (string-append man1 "/proot.1")) - #t)))))) + (string-append man1 "/proot.1")))))))) (native-inputs `(("which" ,which) - ;; For 'mcookie', used by some of the tests. ("util-linux" ,util-linux) - ;; XXX: Choose the old coreutils because its 'stat' ;; program does not use statx(2) when running 'stat -c - ;; %a' or similar, which PRoot doesn't properly support. + ;; %a' or similar, which PRoot doesn't properly support + ;; (see: https://github.com/proot-me/proot/issues/262). ("coreutils-old" ,coreutils-8.30) - - ;; XXX: 'test-c6b77b77.sh' runs 'make' and that leads - ;; make 4.3 to segfault. - ("make-old" ,gnu-make-4.2))) - (inputs `(("talloc" ,talloc))) + ("pkg-config" ,pkg-config) + ;; For rst2man, used to generate the manual page. + ("python-docutils" ,python-docutils))) + (inputs `(("libarchive" ,libarchive) + ("talloc" ,talloc))) (home-page "https://github.com/proot-me/PRoot") (synopsis "Unprivileged chroot, bind mount, and binfmt_misc") (description @@ -6938,7 +7118,7 @@ the MTP device as a file system.") (define-public procenv (package (name "procenv") - (version "0.55") + (version "0.58") (source (origin (method git-fetch) @@ -6947,7 +7127,7 @@ the MTP device as a file system.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "13fnr4gfj2xlxghw93m5gsxzlwzv3s6jv9hja0w0pb23hlncbmhy")))) + (base32 "137n630qzml4yraqzp2fij8nzn8341nf8d58yzfhk8ddlzi60sfm")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -6960,7 +7140,8 @@ the MTP device as a file system.") ("libcap" ,libcap) ("libselinux" ,libselinux))) (synopsis "Utility to show process environment") - (description "Procenv is a command-line tool that displays as much detail about + (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.") @@ -7710,7 +7891,7 @@ of Linux application development.") (define-public ell (package (name "ell") - (version "0.40") + (version "0.41") (source (origin (method git-fetch) (uri (git-reference @@ -7719,7 +7900,7 @@ of Linux application development.") (file-name (git-file-name name version)) (sha256 (base32 - "1zzpbfdpmfldd7w0h7mwbq0mfqgqwz54nqbq0rmbqlqqpwlkrgb2")))) + "14scs8vqpcf2810gvabsplg9yzh9y4sz47407bjy6vd604z3w8ah")))) (build-system gnu-build-system) (arguments `(#:phases @@ -7750,14 +7931,14 @@ platforms, it is not limited to resource-constrained systems.") (define-public lttng-ust (package (name "lttng-ust") - (version "2.11.0") + (version "2.12.2") (source (origin (method url-fetch) (uri (string-append "https://lttng.org/files/lttng-ust/" "lttng-ust-" version ".tar.bz2")) (sha256 (base32 - "1n646yz7882svf5a4ay3vqiiz3qjn3pgkkij9kk22871wp7q0ck8")))) + "1iwz6p79zvibj8sl8qqw84lcir9a8z1ylq77hhnwg26anrjg1l5w")))) (build-system gnu-build-system) (inputs `(("liburcu" ,liburcu) @@ -8101,7 +8282,7 @@ kernel side implementation.") (define-public erofs-utils (package (name "erofs-utils") - (version "1.2.1") + (version "1.3") (source (origin (method git-fetch) @@ -8110,7 +8291,7 @@ kernel side implementation.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1vb4mxsb59g29x7l22cffsqa8x743sra4j5zbmx89hjwpwm9vvcg")))) + (base32 "0sqiw05zbxr6l0g9gn3whkc4qc5km2qvfg4lnm08nppwskm8yaw8")))) (build-system gnu-build-system) (inputs `(("lz4" ,lz4) @@ -8121,8 +8302,9 @@ kernel side implementation.") ("libtool" ,libtool) ("pkg-config" ,pkg-config))) (home-page "https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/") - (synopsis "User-space tools for EROFS file system") - (description "EROFS (Enhanced Read-Only File System) is a compressed, + (synopsis "User-space tools for the EROFS file system") + (description + "@acronym{EROFS, The Enhanced Read-Only File System} is a compressed, read-only file system optimized for resource-scarce devices. This package provides user-space tools for creating EROFS file systems.") (license license:gpl2+))) |