diff options
Diffstat (limited to 'gnu/packages/linux.scm')
-rw-r--r-- | gnu/packages/linux.scm | 588 |
1 files changed, 381 insertions, 207 deletions
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 1e51dd8d83..7dd565bff8 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -22,7 +22,7 @@ ;;; Copyright © 2017, 2018, 2020, 2021 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 © 2017, 2019, 2021 Mathieu Othacehe <othacehe@gnu.org> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2017 nee <nee-git@hidamari.blue> @@ -52,7 +52,13 @@ ;;; Copyright © 2020 pukkamustard <pukkamustard@posteo.net> ;;; Copyright © 2021 B. Wilson <elaexuotee@wilsonb.com> ;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru> +;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> +;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> +;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> +;;; Copyright © 2021 Felix Gruber <felgru@posteo.net> +;;; Copyright © 2021 Josselin Poiret <josselin.poiret@protonmail.ch> ;;; Copyright © 2021 Olivier Dion <olivier.dion@polymtl.ca> +;;; Copyright © 2021 Solene Rapenne <solene@perso.pw> ;;; ;;; This file is part of GNU Guix. ;;; @@ -76,6 +82,7 @@ #:use-module (gnu packages algebra) #:use-module (gnu packages audio) #:use-module (gnu packages autotools) + #:use-module (gnu packages avahi) #:use-module (gnu packages backup) #:use-module (gnu packages base) #:use-module (gnu packages bash) @@ -144,10 +151,10 @@ #:use-module (gnu packages xdisorg) #:use-module (gnu packages xorg) #:use-module (gnu packages groff) - #:use-module (gnu packages rsync) #:use-module (gnu packages selinux) #:use-module (gnu packages swig) #:use-module (guix build-system cmake) + #:use-module (guix build-system copy) #:use-module (guix build-system gnu) #:use-module (guix build-system go) #:use-module (guix build-system meson) @@ -542,14 +549,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ,@(if (version>=? version "4.16") `(("flex" ,flex) ("bison" ,bison)) - '()) - ,@(if (version>=? version "5.3") - `(("rsync" ,rsync)) '()))) (arguments `(#:modules ((guix build gnu-build-system) (guix build utils) - (srfi srfi-1)) + (srfi srfi-1) + (ice-9 match)) #:phases (modify-phases %standard-phases (delete 'configure) @@ -560,32 +565,37 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (%current-system)))) (defconfig ,(system->defconfig (or (%current-target-system) - (%current-system))))) + (%current-system)))) + (make-target ,(if (version>=? version "5.3") + "headers" + "headers_check"))) (setenv "ARCH" arch) (format #t "`ARCH' set to `~a'~%" (getenv "ARCH")) (invoke "make" defconfig) - (invoke "make" "mrproper" "headers_check")))) + (invoke "make" "mrproper" make-target)))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) - (invoke "make" - (string-append "INSTALL_HDR_PATH=" out) - "headers_install") + + ;; Mimic the quiet_cmd_headers_install target to avoid a + ;; dependency on rsync. + (for-each (lambda (file) + (let ((destination (string-append + out "/include/" + ;; Drop the 'usr/include' prefix. + (match (string-split file #\/) + ((_ _ path ...) + (string-join path "/")))))) + (format #t "`~a' -> `~a'~%" file destination) + (install-file file (dirname destination)))) + (find-files "usr/include" "\\.h$")) (mkdir (string-append out "/include/config")) (call-with-output-file (string-append out "/include/config/kernel.release") (lambda (p) - (format p "~a-default~%" ,version))) - - ;; Remove the '.install' and '..install.cmd' files; the - ;; latter contains store paths, which pulls in bootstrap - ;; binaries in the build environment, and prevents bit - ;; reproducibility for the bootstrap binaries. - (for-each delete-file (find-files out "\\.install")) - - #t)))) + (format p "~a-default~%" ,version))))))) #:allowed-references () #:tests? #f)) (home-page "https://www.gnu.org/software/linux-libre/") @@ -630,11 +640,11 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; The following package is used in the early bootstrap, and thus must be kept ;; stable and with minimal build requirements. -(define-public linux-libre-headers-5.4.20 - (make-linux-libre-headers "5.4.20" "gnu" - "1qxhf6dmcwjblzx8fgn6vr10p38xw10iwh6d1y1v1mxb25y30b47")) +(define-public linux-libre-headers-5.10.35 + (make-linux-libre-headers "5.10.35" "gnu" + "0q2rnchad55d49f3rajrkazz0fcjv1irwrdb1hwjnl01fzm2gjk3")) -(define-public linux-libre-headers linux-libre-headers-5.4.20) +(define-public linux-libre-headers linux-libre-headers-5.10.35) ;;; @@ -804,15 +814,18 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." (add-after 'unpack 'patch-/bin/pwd (lambda _ (substitute* (find-files "." "^Makefile(\\.include)?$") - (("/bin/pwd") "pwd")) - #t)) + (("/bin/pwd") "pwd")))) (replace 'configure (lambda* (#:key inputs native-inputs target #:allow-other-keys) - ;; Avoid introducing timestamps + ;; Avoid introducing timestamps. (setenv "KCONFIG_NOTIMESTAMP" "1") (setenv "KBUILD_BUILD_TIMESTAMP" (getenv "SOURCE_DATE_EPOCH")) - ;; Set ARCH and CROSS_COMPILE + ;; Other variables useful for reproducibility. + (setenv "KBUILD_BUILD_USER" "guix") + (setenv "KBUILD_BUILD_HOST" "guix") + + ;; Set ARCH and CROSS_COMPILE. (let ((arch ,(system->linux-architecture (or (%current-target-system) (%current-system))))) @@ -883,8 +896,7 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." (false-if-file-not-found (delete-file (string-append moddir "/" version "/build"))) (false-if-file-not-found - (delete-file (string-append moddir "/" version "/source")))) - #t)))) + (delete-file (string-append moddir "/" version "/source")))))))) #:tests? #f)) (home-page "https://www.gnu.org/software/linux-libre/") (synopsis "100% free redistribution of a cleaned Linux kernel") @@ -1805,7 +1817,7 @@ providing the system administrator with some help in common tasks.") (define-public util-linux (package (name "util-linux") - (version "2.35.1") + (version "2.37.1") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/linux/utils/" @@ -1813,7 +1825,7 @@ providing the system administrator with some help in common tasks.") "util-linux-" version ".tar.xz")) (sha256 (base32 - "1yfpy6bkab4jw61mpx48gfy24yrqp4a7arvpis8csrkk53fkxpnr")) + "0xkb7vw2040zi4m0sbhs5qn5l8nrq4xsf4sdxf3cy9mpachd8jwf")) (patches (search-patches "util-linux-tests.patch")) (modules '((guix build utils))) (snippet @@ -1831,7 +1843,10 @@ providing the system administrator with some help in common tasks.") "static")) ;2.9 MiB static .a libraries (arguments `(#:configure-flags (list "--disable-use-tty-group" - "--enable-fs-paths-default=/run/current-system/profile/sbin" + (string-append + "--enable-fs-paths-default=" + "/run/setuid-programs" + ":/run/current-system/profile/sbin") ;; Don't try to chown root:root mount and umount "--disable-makeinstall-chown" "--localstatedir=/var" @@ -1857,44 +1872,45 @@ providing the system administrator with some help in common tasks.") ;; libraries below $exec_prefix when $libdir does not ;; match any of the "usual" locations. Fix that. (("usrlib_execdir='\\$\\{exec_prefix\\}'\\$libdir") - "usrlib_execdir=$libdir")) - #t)) + "usrlib_execdir=$libdir")))) (add-before 'build 'set-umount-file-name (lambda* (#:key outputs #:allow-other-keys) ;; Tell 'eject' the right file name of 'umount'. (let ((out (assoc-ref outputs "out"))) (substitute* "sys-utils/eject.c" (("\"/bin/umount\"") - (string-append "\"" out "/bin/umount\""))) - #t))) + (string-append "\"" out "/bin/umount\"")))))) (add-before 'check 'pre-check - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (net (assoc-ref inputs "net-base"))) + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (let ((services (search-input-file (or native-inputs inputs) + "etc/services"))) ;; Change the test to refer to the right file. (substitute* "tests/ts/misc/mcookie" (("/etc/services") - (string-append net "/etc/services"))) + services)) ;; The C.UTF-8 locale does not exist in our libc. (substitute* "tests/ts/column/invalid-multibyte" - (("C\\.UTF-8") "en_US.utf8")) - #t))) - ;; TODO: Remove the conditional on the next rebuild cycle. - ,@(if (string-prefix? "arm" (%current-system)) - '((add-before 'check 'disable-setarch-test - (lambda _ - ;; The setarch tests are unreliable in QEMU's - ;; user-mode emulation, which is our primary - ;; method of building ARMv7 packages. - ;; <https://github.com/karelzak/util-linux/issues/601> - (substitute* "tests/ts/misc/setarch" - (("ts_init_subtest.*" all) - (string-append - all "\n" - "ts_skip \"setarch tests are unreliable under QEMU\""))) - #t))) - '()) + (("C\\.UTF-8") "en_US.utf8"))))) + (add-before 'check 'disable-setarch-test + (lambda _ + ;; The setarch tests are unreliable in QEMU's user-mode + ;; emulation, which is our primary method of building + ;; ARMv7 packages. See + ;; <https://github.com/karelzak/util-linux/issues/601>. + (substitute* "tests/ts/misc/setarch" + (("ts_init_subtest.*" all) + (string-append + all "\n" + "ts_skip \"setarch tests are unreliable under QEMU\""))))) + (add-before 'check 'disable-lsns-test + (lambda _ + ;; The lsns tests can fail due to ioctl(_, NS_GET_USERNS) + ;; returning ENOTTY, indicating this kernel does not + ;; support user namespaces. Curiously, this test can fail + ;; on i686 even if the same test passes on x86_64 on the + ;; same machine. See <https://issues.guix.gnu.org/49933>. + (delete-file "tests/ts/lsns/ioctl_ns"))) (add-after 'install 'move-static-libraries (lambda* (#:key outputs #:allow-other-keys) (let ((lib (assoc-ref outputs "lib")) @@ -1913,9 +1929,7 @@ providing the system administrator with some help in common tasks.") ;; files so that Libtool does the right thing when both ;; the shared and static library is available. (substitute* (find-files "lib" "\\.la$") - (("old_library=.*") "old_library=''\n"))) - - #t))) + (("old_library=.*") "old_library=''\n")))))) (add-after 'install 'adjust-pkg-config-files (lambda* (#:key outputs #:allow-other-keys) (let ((lib (assoc-ref outputs "lib"))) @@ -1923,18 +1937,14 @@ providing the system administrator with some help in common tasks.") ;; the pkg-config files to avoid a cyclic reference on "out". (substitute* (find-files (string-append lib "/lib/pkgconfig") "\\.pc$") - (("^(exec_)?prefix=.*") ""))) - #t))))) - (inputs `(("zlib" ,zlib) - ("ncurses" ,ncurses) - - ;; XXX: This is so that the 'pre-check' phase can find it. - ,@(if (%current-target-system) - `(("net-base" ,net-base)) - '()))) + (("^(exec_)?prefix=.*") "")))))))) + (inputs + (list file ;for libmagic + ncurses + zlib)) (native-inputs - `(("perl" ,perl) - ("net-base" ,net-base))) ;for tests + (list net-base ;for tests + perl)) (home-page "https://www.kernel.org/pub/linux/utils/util-linux/") (synopsis "Collection of utilities for the Linux kernel") (description "Util-linux is a diverse collection of Linux kernel @@ -2163,7 +2173,7 @@ module.") (define-public e2fsprogs (package (name "e2fsprogs") - (version "1.45.6") + (version "1.46.4") (source (origin (method url-fetch) (uri (string-append @@ -2172,7 +2182,7 @@ module.") "e2fsprogs-" version ".tar.xz")) (sha256 (base32 - "0mj2yizwygs7xww8jfy5mxjn8ww4pvc0b1hg1p2vsnirailsx9zz")))) + "04wp77fg842dhribgn0xvbd77idh0n7a839ga4bwy78v7i9l445i")))) (build-system gnu-build-system) (inputs `(("util-linux" ,util-linux "lib"))) (native-inputs `(("pkg-config" ,pkg-config) @@ -2214,8 +2224,7 @@ module.") "INSTALL_SYMLINK = sh")) (substitute* (find-files "." "^Makefile.in$") (("#!/bin/sh") - (string-append "#!" (which "sh")))) - #t)) + (string-append "#!" (which "sh")))))) (add-after 'install 'install-libs (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -2230,8 +2239,7 @@ module.") (let ((archives (find-files lib "\\.a$"))) (for-each (lambda (file) (chmod file #o666)) - archives)) - #t)))))) + archives)))))))) (home-page "http://e2fsprogs.sourceforge.net/") (synopsis "Creating and checking ext2/ext3/ext4 file systems") (description @@ -2267,8 +2275,7 @@ module.") (ice-9 ftw) (srfi srfi-26)) - (let ((e2fsck (string-append (assoc-ref %build-inputs "e2fsprogs") - "/sbin/e2fsck")) + (let ((e2fsck (search-input-file %build-inputs "/sbin/e2fsck")) (bin (string-append (assoc-ref %outputs "out") "/sbin"))) (mkdir-p bin) (with-directory-excursion bin @@ -2343,7 +2350,7 @@ Zerofree requires the file system to be unmounted or mounted read-only.") (define-public strace (package (name "strace") - (version "5.8") + (version "5.13") (home-page "https://strace.io") (source (origin (method url-fetch) @@ -2351,23 +2358,28 @@ Zerofree requires the file system to be unmounted or mounted read-only.") "/strace-" version ".tar.xz")) (sha256 (base32 - "1abs3svkg9985f4jrxx34sj1dcpsf95vv1a0g01c777zgygncjnz")))) + "0mmns22bjjvakxj29si0x4dcylcgy26llpcimkb0llcxif439k2s")) + (patches (search-patches "strace-readlink-tests.patch")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases (add-after 'unpack 'patch-/bin/sh (lambda _ - (substitute* "strace.c" + (substitute* "src/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 \\\\.*") "")) + ;; XXX: These hang forever even if the test time-out is + ;; extended. + (("^\tstrace-DD?D?\\.test \\\\.*") "") + (("^\tpidns-cache.test \\\\.*") "") + (("^\t.*--pidns-translation.test \\\\.*") "")) #t))) - ;; Don't fail if the architecture doesn't support different personalities. + ;; Don't fail if the architecture doesn't support different + ;; personalities. #:configure-flags '("--enable-mpers=check") ;; See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32459>. #:parallel-tests? #f)) ; undeterministic failures @@ -2402,24 +2414,96 @@ an executed process and the signals received by that process. It can also intercept and print the system calls executed by the program.") (license license:gpl2+))) +(define-public alsa-ucm-conf + (package + (name "alsa-ucm-conf") + (version "1.2.4") + (source (origin + (method url-fetch) + (uri (string-append + "ftp://ftp.alsa-project.org/pub/lib/" name "-" + version ".tar.bz2")) + (sha256 + (base32 + "0h6kzi1cfdqyxp4pwpqh5wb89c8s9wrgix315bvamffwfxf56frc")))) + (build-system copy-build-system) + (arguments + '(#:install-plan + '(("ucm" "share/alsa/ucm") + ("ucm2" "share/alsa/ucm2")))) + (home-page "https://www.alsa-project.org/wiki/Main_Page") + (synopsis "The Advanced Linux Sound Architecture Use Case Manager") + (description + "This package contains Advanced Linux Sound Architecture Use Case Manager +configuration of audio input/output names and routing for specific audio +hardware.") + (license license:bsd-3))) + +(define-public alsa-topology-conf + (package + (name "alsa-topology-conf") + (version "1.2.4") + (source (origin + (method url-fetch) + (uri (string-append + "ftp://ftp.alsa-project.org/pub/lib/" name "-" + version ".tar.bz2")) + (sha256 + (base32 + "01zdg6q4s6d01k39z96wi4vbhrfw1i2g4yi5dijwfk6a5vjfdq2m")))) + (build-system copy-build-system) + (arguments + '(#:install-plan + '(("topology" "share/alsa/topology")))) + (home-page "https://www.alsa-project.org/wiki/Main_Page") + (synopsis "The Advanced Linux Sound Architecture libraries") + (description + "This package contains Advanced Linux Sound Architecture topology +configuration files that can be used for specific audio hardware.") + (license license:bsd-3))) + (define-public alsa-lib (package (name "alsa-lib") (version "1.2.4") (source (origin - (method url-fetch) - (uri (string-append - "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-" - version ".tar.bz2")) - (sha256 - (base32 - "1xq8d48wfy59qw4x7383j32n8j5njndw5hcgnmlg9pvclphlnmgp")))) + (method url-fetch) + (uri (string-append + "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-" + version ".tar.bz2")) + (sha256 + (base32 + "1xq8d48wfy59qw4x7383j32n8j5njndw5hcgnmlg9pvclphlnmgp")))) (build-system gnu-build-system) (arguments '(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") - "/lib")))) - (home-page "https://www.alsa-project.org/") + "/lib")) + #:phases + (modify-phases %standard-phases + (add-before 'install 'pre-install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((ucm + (string-append (assoc-ref inputs "alsa-ucm-conf"))) + (topology + (string-append (assoc-ref inputs "alsa-topology-conf"))) + (alsa + (string-append (assoc-ref outputs "out") "/share/alsa")) + (ucm-share + (string-append ucm "/share/alsa/ucm")) + (ucm2-share + (string-append ucm "/share/alsa/ucm2")) + (topology-share + (string-append topology "/share/alsa/topology"))) + (mkdir-p alsa) + (symlink ucm-share (string-append alsa "/ucm")) + (symlink ucm2-share (string-append alsa "/ucm2")) + (symlink topology-share (string-append alsa "/topology"))) + #t))))) + (inputs + `(("alsa-ucm-conf" ,alsa-ucm-conf) + ("alsa-topology-conf" ,alsa-topology-conf))) + (home-page "https://www.alsa-project.org/wiki/Main_Page") (synopsis "The Advanced Linux Sound Architecture libraries") (description "The Advanced Linux Sound Architecture (ALSA) provides audio and @@ -2572,7 +2656,7 @@ external rate conversion.") ("bison" ,bison))) (inputs `(("libmnl" ,libmnl) - ("libnftnl" ,libnftnl))) + ("libnftnl" ,libnftnl/fixed))) (arguments '(#:tests? #f ; no test suite #:configure-flags ; add $libdir to the RUNPATH of executables @@ -2831,10 +2915,10 @@ network hardware types (plipconfig, slattach) and advanced aspects of IP configuration (iptunnel, ipmaddr).") (license license:gpl2+)))) -(define-public libcap-2.31 +(define-public libcap (package (name "libcap") - (version "2.31") + (version "2.51") (source (origin (method url-fetch) (uri (string-append @@ -2842,23 +2926,34 @@ configuration (iptunnel, ipmaddr).") "libcap2/libcap-" version ".tar.xz")) (sha256 (base32 - "0ikwm0kngrqa4ci80lqnrkk17kg09q7dxrz28y0gm5qw3vj8s266")))) - (build-system gnu-build-system) - (arguments '(#:phases - (modify-phases %standard-phases - (replace 'configure - ;; Add $libdir to the RUNPATH of executables. - (lambda _ - (substitute* "Make.Rules" - (("LDFLAGS := #-g") - (string-append "LDFLAGS := -Wl,-rpath=" - %output "/lib"))) - #t))) + "1ych13qc1mvzv8iscbims5b317vxcmy5ffpmfy98zk7bgamz62b6")))) + (build-system gnu-build-system) + (arguments `(#:phases + ,#~(modify-phases %standard-phases + (replace 'configure + ;; Add $libdir to the RUNPATH of executables. + (lambda _ + (substitute* "Make.Rules" + (("LDFLAGS \\?= #-g") + (string-append "LDFLAGS ?= -Wl,-rpath=" + ;; TODO(core-updates): Use #$output + ;; unconditionally. + #$(if (%current-target-system) + #~#$output + '%output) + "/lib")))))) #:test-target "test" - #:make-flags (list "lib=lib" - (string-append "prefix=" - (assoc-ref %outputs "out")) - "RAISE_SETFCAP=no"))) + #:make-flags + (list "lib=lib" + (string-append "prefix=" (assoc-ref %outputs "out")) + "RAISE_SETFCAP=no" + ;; Tell the makefile to use TARGET-gcc and friends + ;; when cross-compiling. + ,@(if (%current-target-system) + `(,(string-append "CROSS_COMPILE=" + (%current-target-system) "-") + "BUILD_CC=gcc") + '())))) (native-inputs `(("perl" ,perl))) (supported-systems (delete "i586-gnu" %supported-systems)) (home-page "https://sites.google.com/site/fullycapable/") @@ -2870,37 +2965,6 @@ Linux-based operating systems.") ;; License is BSD-3 or GPLv2, at the user's choice. (license license:gpl2))) -;; libcap 2.31 has problems with newer kernels, so provide this newer variant. -;; Keep the old libcap around to avoid rebuilding 'coreutils' and 'avahi'. -;; To be merged with libcap on the next rebuild cycle. -(define-public libcap - (package - (inherit libcap-2.31) - (version "2.45") - (source (origin - (method url-fetch) - (uri (string-append - "mirror://kernel.org/linux/libs/security/linux-privs/" - "libcap2/libcap-" version ".tar.xz")) - (sha256 - (base32 - "11ijmi7jik9iw6pdszc6bylhggghr8cza03bcrbhbqf0cpvkjrnn")))) - (arguments - (substitute-keyword-arguments (package-arguments libcap-2.31) - ((#:phases phases) - `(modify-phases ,phases - (replace 'configure - (lambda _ - ;; Add $libdir to the RUNPATH of executables. - (substitute* "Make.Rules" - (("LDFLAGS \\?= #-g") - (string-append "LDFLAGS ?= -Wl,-rpath=" - %output "/lib"))) - #t)))))))) - -(define-deprecated libcap/next libcap) -(export libcap/next) - (define-public bridge-utils (package (name "bridge-utils") @@ -3126,6 +3190,9 @@ settings.") (base32 "0a8fwyxnc5qdxff8sl2sfsbnvgh6pkij4yafiln0fxgg6bal7knj")))) (build-system gnu-build-system) + (arguments + ;; Allow compilation with GCC 10. + '(#:configure-flags '("CFLAGS=-O2 -g -fcommon"))) (inputs `(("ncurses" ,ncurses))) (home-page "http://www.jpj.net/~trevor/aumix.html") (synopsis "Audio mixer for X and the console") @@ -3202,11 +3269,12 @@ processes currently causing I/O.") ;; it refers to the right ones. (substitute* '("lib/mount_util.c" "util/mount_util.c") (("/bin/(u?)mount" _ maybe-u) - (string-append (assoc-ref inputs "util-linux") - "/bin/" maybe-u "mount"))) - (substitute* "util/mount.fuse.c" - (("/bin/sh" command) - (string-append (assoc-ref inputs "bash-minimal") command))) + (search-input-file inputs + (string-append "bin/" + maybe-u "mount")))) + (substitute* '("util/mount.fuse.c") + (("/bin/sh") + (search-input-file inputs "/bin/sh"))) ;; This hack leads libfuse to search for 'fusermount' in ;; $PATH, where it may find a setuid-root binary, instead of @@ -3228,6 +3296,66 @@ user-space processes.") (license (list license:lgpl2.1 ;library license:gpl2+)))) ;command-line utilities +(define-public fuse-3 + (package + (inherit fuse) + (name "fuse") + (version "3.10.5") + (source (origin + (method url-fetch) + (uri + (string-append "https://github.com/libfuse/libfuse/releases/" + "download/fuse-" version + "/fuse-" version ".tar.xz")) + (sha256 + (base32 + "0rlnnsiw614qcmgy8xz67044gqc1pbvvf2yxjv44lh27bm487qmj")))) + (build-system meson-build-system) + (arguments + `(#:configure-flags + ,#~(list + (string-append "-Dudevrulesdir=" #$output "/udev/rules.d") + "-Duseroot=false") + #:tests? #f + #:phases + ,#~(modify-phases %standard-phases + (add-after 'unpack 'set-file-names + (lambda* (#:key inputs #:allow-other-keys) + ;; libfuse calls out to mount(8) and umount(8). Make sure + ;; it refers to the right ones. + (substitute* '("lib/mount_util.c") + (("/bin/(u?)mount" _ maybe-u) + (search-input-file inputs + (string-append "bin/" + maybe-u "mount")))) + (substitute* '("util/mount.fuse.c") + (("/bin/sh") + (search-input-file inputs "/bin/sh"))) + + ;; This hack leads libfuse to search for 'fusermount' in + ;; $PATH, where it may find a setuid-root binary, instead of + ;; trying solely $out/sbin/fusermount and failing because + ;; it's not setuid. + (substitute* "lib/meson.build" + (("-DFUSERMOUNT_DIR=[[:graph:]]+") + "-DFUSERMOUNT_DIR=\"/var/empty\"'")))) + (add-after 'unpack 'fix-install + (lambda* (#:key inputs #:allow-other-keys) + (substitute* '("util/meson.build") + (("install_helper.sh") "true")) + (substitute* '("util/meson.build") + (("fuseconf_path = .*") + "fuseconf_path = '/etc/fuse.conf'")))) + (add-before 'configure 'set-paths + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((dummy-init.d + (string-append (getcwd) "/etc/init.d"))) + (setenv "MOUNT_FUSE_PATH" + (string-append #$output "/sbin")) + (setenv "UDEV_RULES_PATH" + (string-append #$output + "/lib/udev/rules.d")))))))))) + (define-public unionfs-fuse (package (name "unionfs-fuse") @@ -3568,7 +3696,7 @@ to use Linux' inotify mechanism, which allows file accesses to be monitored.") (define-public kmod (package (name "kmod") - (version "27") + (version "29") (source (origin (method url-fetch) (uri @@ -3576,16 +3704,19 @@ to use Linux' inotify mechanism, which allows file accesses to be monitored.") "kmod-" version ".tar.xz")) (sha256 (base32 - "035wzfzjx4nwidk747p8n085mgkvy531ppn16krrajx2dkqzply1")) + "0am54mi5rk72g5q7k6l6f36gw3r9vwgjmyna43ywcjhqmakyx00b")) (patches (search-patches "kmod-module-directory.patch")))) (build-system gnu-build-system) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config) + ;; For tests. + ("zstd" ,zstd))) (inputs `(("xz" ,xz) - ("zlib" ,zlib))) + ("zlib" ,zlib) + ("zstd-lib" ,zstd "lib"))) (arguments - `(#:configure-flags '("--with-xz" "--with-zlib" + `(#:configure-flags '("--with-xz" "--with-zlib" "--with-zstd" "--disable-test-modules") #:phases (modify-phases %standard-phases @@ -4290,27 +4421,28 @@ country-specific regulations for the wireless spectrum.") (substitute* '("prog/pwm/pwmconfig" "prog/pwm/fancontrol") (("gnuplot") - (string-append (assoc-ref inputs "gnuplot") - "/bin/gnuplot")) + (search-input-file inputs "/bin/gnuplot")) (("cat ") - (string-append (assoc-ref inputs "coreutils") - "/bin/cat ")) + (string-append (search-input-file inputs "/bin/cat") + " ")) (("e?grep " match) - (string-append (assoc-ref inputs "grep") - "/bin/" match)) + (string-append (search-input-file inputs + (string-append + "/bin/" + (string-trim-right match))) + " ")) (("sed -e") - (string-append (assoc-ref inputs "sed") - "/bin/sed -e")) + (string-append (search-input-file inputs "/bin/sed") + " -e")) (("cut -d") - (string-append (assoc-ref inputs "coreutils") - "/bin/cut -d")) + (string-append (search-input-file inputs "/bin/cut") + " -d")) (("sleep ") - (string-append (assoc-ref inputs "coreutils") - "/bin/sleep ")) + (string-append (search-input-file inputs "/bin/sleep") + " ")) (("readlink -f") - (string-append (assoc-ref inputs "coreutils") - "/bin/readlink -f"))) - #t))))) + (string-append (search-input-file inputs "/bin/readlink") + " -f")))))))) (home-page "https://hwmon.wiki.kernel.org/lm_sensors") (synopsis "Utilities to read temperature/voltage/fan sensors") (description @@ -5149,7 +5281,7 @@ Bluetooth audio output devices like headphones or loudspeakers.") (define-public bluez (package (name "bluez") - (version "5.55") + (version "5.61") (source (origin (method url-fetch) (uri (string-append @@ -5157,7 +5289,7 @@ Bluetooth audio output devices like headphones or loudspeakers.") version ".tar.xz")) (sha256 (base32 - "124v9s4y1s7s6klx5vlmzpk1jlr4x84ch7r7scm7x2f42dqp2qw8")))) + "0fs2kjsdhylxniqhii63i85fjszbqbz3iddwmgz4nmbr472xdbw3")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -5198,10 +5330,11 @@ Bluetooth audio output devices like headphones or loudspeakers.") (("hid2hci --method") (string-append out "/lib/udev/hid2hci --method")) (("/sbin/udevadm") - (string-append (assoc-ref inputs "eudev") "/bin/udevadm"))) + (search-input-file inputs "/bin/udevadm"))) #t)))))) (native-inputs `(("pkg-config" ,pkg-config) + ("rst2man" ,python-docutils) ("gettext" ,gettext-minimal))) (inputs `(("glib" ,glib) @@ -5520,7 +5653,8 @@ obviously it can be shared with files outside our set).") (build-system gnu-build-system) (arguments - `(#:phases + `(#:configure-flags '("CFLAGS=-fcommon") + #:phases (modify-phases %standard-phases (add-after 'install 'install-headers (lambda* (#:key outputs #:allow-other-keys) @@ -5899,6 +6033,7 @@ invocations of itself.") (native-inputs `(("pkg-config" ,pkg-config))) (arguments '(#:configure-flags (list "--disable-static" + "--disable-ldconfig" ;not necessary "--exec-prefix=${prefix}" "--with-fuse=external" ;use our own FUSE "--enable-mount-helper" @@ -6660,7 +6795,8 @@ monitoring tools for Linux. These include @code{mpstat}, @code{iostat}, (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments - `(#:phases + `(#:configure-flags '("CFLAGS=-fcommon") + #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-udev-rules-absolute-path-bins (lambda* (#:key inputs #:allow-other-keys) @@ -6938,6 +7074,24 @@ libnftnl has been previously known as libnftables. This library is currently used by nftables.") (license license:gpl2+))) +;; This is used in iptables, which contributes to rust. We're pinning this +;; variant to avoid accidental rebuilds of rust. +(define-public libnftnl/fixed + (package (inherit libnftnl) + (version "1.2.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://netfilter.org/libnftnl/" + "libnftnl-" version ".tar.bz2")) + (sha256 + (base32 "1xblq1cbcxhr6qmjpy98i1qdza148idgz99vbhjc7s4vzvfizc4h")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libmnl" ,libmnl))))) + (define-public nftables (package (name "nftables") @@ -7296,6 +7450,11 @@ libraries, which are often integrated directly into libfabric.") (arguments '(#:make-flags `("PSM_USE_SYS_UUID=1" "CC=gcc" "WERROR=" ,(string-append "INSTALL_PREFIX=" %output) + ,(string-append "CFLAGS=-Wall -fpic -fPIC -D_GNU_SOURCE" + " -funwind-tables -O3 -g3" + " -DPSM_USE_SYS_UUID" + " -Wno-strict-aliasing -DNVALGRIND" + " -fcommon") ,(string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")) #:tests? #f #:phases (modify-phases %standard-phases @@ -7922,34 +8081,42 @@ without using the archiver.") (license license:gpl3+))) (define-public fakechroot - (package - (name "fakechroot") - (version "2.20.1") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/dex4er/fakechroot/releases/download/" - version "/fakechroot-" version ".tar.gz")) - (sha256 - (base32 - "1aijkd0b45wav25v01qhw8zxwa3pl0nnp9fabmmy1nlx7hr09gas")))) - (build-system gnu-build-system) - (arguments - ;; XXX: The tests heavily assume they run on an FHS system so for now - ;; skip them. - '(#:tests? #f - #:configure-flags '("--disable-static"))) - (synopsis "Emulate @code{chroot} by overriding file system calls") - (description - "@command{fakechroot} runs a command in an environment were is additional + ;; XXX: Build from the change submitted at + ;; <https://github.com/dex4er/fakechroot/pull/85> to allow compilation + ;; against glibc 2.33. Switch back to the official repository on the next + ;; release. + (let ((commit "e7c1f3a446e594a4d0cce5f5d499c9439ce1d5c5") + (revision "0")) + (package + (name "fakechroot") + (version (git-version "2.20.1" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lipnitsk/fakechroot") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0gac6a6djx3nf343vd33sr5qqngz8ss3aij54zl8x9wb47pc11kb")))) + (build-system gnu-build-system) + (arguments + ;; XXX: The tests heavily assume they run on an FHS system so for now + ;; skip them. + '(#:tests? #f + #:configure-flags '("--disable-static"))) + (native-inputs (list autoconf automake libtool perl)) + (synopsis "Emulate @code{chroot} by overriding file system calls") + (description + "@command{fakechroot} runs a command in an environment were is additional possibility to use @code{chroot} command without root privileges. This is useful for allowing users to create own chrooted environment with possibility to install another packages without need for root privileges. It works by providing @file{libfakechroot.so}, a shared library meant to be set as @code{LD_PRELOAD} to override the C library file system functions.") - (home-page "https://github.com/dex4er/fakechroot/") - (license license:lgpl2.1+))) + (home-page "https://github.com/dex4er/fakechroot/") + (license license:lgpl2.1+)))) (define-public inputattach (package @@ -7972,10 +8139,8 @@ set as @code{LD_PRELOAD} to override the C library file system functions.") (replace 'build (lambda* (#:key inputs #:allow-other-keys) (with-directory-excursion "inputattach" - (invoke (string-append (assoc-ref inputs "gcc") - "/bin/gcc") - "-O2" "-o" "inputattach" "inputattach.c")) - #t)) + (invoke "gcc" "-O2" "-o" "inputattach" + "inputattach.c")))) (delete 'check) (replace 'install (lambda* (#:key outputs #:allow-other-keys) @@ -8005,7 +8170,8 @@ types and interfaces and translates so that the X server can use them.") (file-name (git-file-name name version)) (sha256 (base32 - "1q5wrqnhhs6r49p8yvkw1pl0cnsd4rndxy4h5lvdydwgf1civcwc")))) + "1q5wrqnhhs6r49p8yvkw1pl0cnsd4rndxy4h5lvdydwgf1civcwc")) + (patches (search-patches "pipewire-0.2.7-fno-common.patch")))) (build-system meson-build-system) (arguments '(#:configure-flags '("-Dsystemd=false"))) @@ -8038,7 +8204,7 @@ of Linux application development.") (package (inherit pipewire) (name "pipewire") - (version "0.3.29") + (version "0.3.40") (source (origin (method git-fetch) (uri (git-reference @@ -8047,20 +8213,23 @@ of Linux application development.") (file-name (git-file-name name version)) (sha256 (base32 - "16jjxcnahxqfcawz77ywx837ybhwzcivn7hgqb9cmlp1y2syy8gk")))) + "1c6gni23l5w3ghwqnfs712kjj6l1825f0ib8a6r2xc1ymr0sx3kr")))) (arguments '(#:configure-flags (list (string-append "-Dudevrulesdir=" (assoc-ref %outputs "out") "/lib/udev/rules.d") - "-Dsystemd=disabled") + "-Dsystemd=disabled" + "-Dsession-managers=[]") #:phases (modify-phases %standard-phases ;; Skip shrink-runpath, otherwise validate-runpath fails. (delete 'shrink-runpath)))) (inputs (append (package-inputs pipewire) - `(("bluez" ,bluez) + `(("avahi" ,avahi) + ("bluez" ,bluez) ("jack" ,jack-2) + ("ldacbt" ,ldacbt) ("pulseaudio" ,pulseaudio) ("vulkan-loader" ,vulkan-loader) ("vulkan-headers" ,vulkan-headers)))))) @@ -8266,6 +8435,11 @@ bindings, and the command-line tool @command{babeltrace2}.") (arguments ;; There are no automated tests. '(#:tests? #f)) + ;; This variant of binutils is used for the 64 bit support needed to + ;; assemble the `purgatory/arch/i386/compat_x86_64.S' program on i686-linux. + (native-inputs (list (make-ld-wrapper "ld-wrapper" + #:binutils binutils-next) + binutils-next)) (home-page "https://projects.horms.net/projects/kexec/") (synopsis "Tools for booting directly into different kernels") (description "This package provides the @code{kexec} program and ancillary @@ -8415,7 +8589,7 @@ headers.") (lambda (python-executable) (format #t "Wrapping: ~A.~%" python-executable) (wrap-program python-executable - `("PYTHONPATH" ":" prefix + `("GUIX_PYTHONPATH" ":" prefix (,(string-append lib "/python" ,(version-major+minor |