diff options
Diffstat (limited to 'gnu/packages/linux.scm')
-rw-r--r-- | gnu/packages/linux.scm | 335 |
1 files changed, 184 insertions, 151 deletions
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index de03e98887..cd3e46504a 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -22,7 +22,7 @@ ;;; 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 © 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> @@ -142,10 +142,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 +542,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 +558,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/") @@ -623,11 +626,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" - "1qxhf6dmcwjblzx8fgn6vr10p38xw10iwh6d1y1v1mxb25y30b47")) +(define-public linux-libre-headers-5.10.35 + (make-linux-libre-headers "5.10.35" + "0q2rnchad55d49f3rajrkazz0fcjv1irwrdb1hwjnl01fzm2gjk3")) -(define-public linux-libre-headers linux-libre-headers-5.4.20) +(define-public linux-libre-headers linux-libre-headers-5.10.35) ;;; @@ -1715,7 +1718,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/" @@ -1723,7 +1726,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 @@ -1741,7 +1744,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" @@ -1767,44 +1773,37 @@ 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-after 'install 'move-static-libraries (lambda* (#:key outputs #:allow-other-keys) (let ((lib (assoc-ref outputs "lib")) @@ -1823,9 +1822,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"))) @@ -1833,18 +1830,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 @@ -2286,24 +2279,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 @@ -2715,10 +2780,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 @@ -2726,7 +2791,7 @@ configuration (iptunnel, ipmaddr).") "libcap2/libcap-" version ".tar.xz")) (sha256 (base32 - "0ikwm0kngrqa4ci80lqnrkk17kg09q7dxrz28y0gm5qw3vj8s266")))) + "1ych13qc1mvzv8iscbims5b317vxcmy5ffpmfy98zk7bgamz62b6")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -2734,10 +2799,9 @@ configuration (iptunnel, ipmaddr).") ;; Add $libdir to the RUNPATH of executables. (lambda _ (substitute* "Make.Rules" - (("LDFLAGS := #-g") - (string-append "LDFLAGS := -Wl,-rpath=" - %output "/lib"))) - #t))) + (("LDFLAGS \\?= #-g") + (string-append "LDFLAGS ?= -Wl,-rpath=" + %output "/lib")))))) #:test-target "test" #:make-flags (list "lib=lib" (string-append "prefix=" @@ -2754,37 +2818,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") @@ -3102,11 +3135,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 @@ -3468,7 +3502,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 @@ -3476,16 +3510,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 @@ -4198,27 +4235,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 @@ -5116,7 +5154,7 @@ 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) @@ -5820,6 +5858,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" @@ -7649,15 +7688,11 @@ the superuser to make device nodes.") (lambda* (#:key inputs #:allow-other-keys) (substitute* "scripts/fakeroot.in" (("getopt") - (string-append (assoc-ref inputs "util-linux") - "/bin/getopt")) + (search-input-file inputs "/bin/getopt")) (("sed") - (string-append (assoc-ref inputs "sed") - "/bin/sed")) + (search-input-file inputs "/bin/sed")) (("cut") - (string-append (assoc-ref inputs "coreutils") - "/bin/cut")) ) - #t)) + (search-input-file inputs "/bin/cut")) ))) (add-before 'configure 'setenv (lambda _ (setenv "LIBS" "-lacl") @@ -7758,10 +7793,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) @@ -8080,7 +8113,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 |