X-Git-Url: http://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/50dbc03647170fded9e0bca0cc4b7e1614aa38db..28791c1c8d43e14878f8cc67a15b6036699ec252:/gnu/packages/linux.scm diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 0891c7401e..73c177a07c 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -15,6 +15,7 @@ ;;; Copyright © 2016 Ricardo Wurmus ;;; Copyright © 2016 David Craven ;;; Copyright © 2016 John Darrington +;;; Copyright © 2016 Marius Bakke ;;; ;;; This file is part of GNU Guix. ;;; @@ -33,6 +34,7 @@ (define-module (gnu packages linux) #:use-module (gnu packages) + #:use-module (gnu packages acl) #:use-module (gnu packages admin) #:use-module (gnu packages algebra) #:use-module (gnu packages attr) @@ -61,6 +63,7 @@ #:use-module (gnu packages perl) #:use-module (gnu packages pciutils) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages popt) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) #:use-module (gnu packages readline) @@ -69,6 +72,8 @@ #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) #:use-module (gnu packages xml) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xorg) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system python) @@ -188,7 +193,18 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." (define %default-extra-linux-options `(;; https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00039.html - ("CONFIG_DEVPTS_MULTIPLE_INSTANCES" . #t))) + ("CONFIG_DEVPTS_MULTIPLE_INSTANCES" . #t) + ;; Modules required for initrd: + ("CONFIG_NET_9P" . m) + ("CONFIG_NET_9P_VIRTIO" . m) + ("CONFIG_VIRTIO_BLK" . m) + ("CONFIG_VIRTIO_NET" . m) + ("CONFIG_VIRTIO_PCI" . m) + ("CONFIG_VIRTIO_BALLOON" . m) + ("CONFIG_VIRTIO_MMIO" . m) + ("CONFIG_FUSE_FS" . m) + ("CONFIG_CIFS" . m) + ("CONFIG_9P_FS" . m))) (define (config->string options) (string-join (map (match-lambda @@ -208,7 +224,8 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." (extra-version #f) (configuration-file #f) (defconfig "defconfig") - (extra-options %default-extra-linux-options)) + (extra-options %default-extra-linux-options) + (patches (list %boot-logo-patch))) (package (name (if extra-version (string-append "linux-libre-" extra-version) @@ -218,7 +235,7 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." (method url-fetch) (uri (linux-libre-urls version)) (sha256 (base32 hash)) - (patches (list %boot-logo-patch)))) + (patches patches))) (supported-systems supported-systems) (build-system gnu-build-system) (native-inputs @@ -263,8 +280,8 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." (let ((build (assoc-ref %standard-phases 'build)) (config (assoc-ref inputs "kconfig"))) - ;; Use the architecture-specific config if available, and - ;; 'defconfig' otherwise. + ;; Use a custom kernel configuration file or a default + ;; configuration file. (if config (begin (copy-file config ".config") @@ -283,13 +300,16 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." (lambda* (#:key inputs native-inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (moddir (string-append out "/lib/modules")) - (kmod (assoc-ref (or native-inputs inputs) "kmod"))) + (dtbdir (string-append out "/lib/dtbs")) + (kmod (assoc-ref (or native-inputs inputs) "kmod"))) + ;; Install kernel image, kernel configuration and link map. + (for-each (lambda (file) (install-file file out)) + (find-files "." "^(\\.config|bzImage|zImage|vmlinuz|System\\.map)$")) + ;; Install device tree files + (for-each (lambda (file) (install-file file dtbdir)) + (find-files "." "\\.dtb$")) + ;; Install kernel modules (mkdir-p moddir) - (for-each (lambda (file) - (copy-file file - (string-append out "/" (basename file)))) - (find-files "." "^(bzImage|zImage|vmlinuz|System\\.map)$")) - (copy-file ".config" (string-append out "/config")) (zero? (system* "make" (string-append "DEPMOD=" kmod "/bin/depmod") (string-append "MODULE_DIR=" moddir) @@ -308,26 +328,26 @@ It has been modified to remove all non-free binary blobs.") (define %intel-compatible-systems '("x86_64-linux" "i686-linux")) (define-public linux-libre - (make-linux-libre "4.7.5" - "1v5xzagc7zmf0dszq623h83rzhn2qwcapg2fwlihrrb6h9317xqx" + (make-linux-libre "4.8.6" + "07h618x13yyp3lnf77px4v60pdcz7il0fa7p466wa5gp3h0yhvmi" %intel-compatible-systems #:configuration-file kernel-config)) (define-public linux-libre-4.4 - (make-linux-libre "4.4.22" - "0pwqp5hain26p3wmiqgq3qasyp4j7nl2ai49sq2n8xdi3g2vnmii" + (make-linux-libre "4.4.30" + "16jjcjfbf3s4mrifk6v7kmnm8l7yywispfap98wcv6gw6mv9sxdx" %intel-compatible-systems #:configuration-file kernel-config)) (define-public linux-libre-4.1 - (make-linux-libre "4.1.33" - "1s45vymx7zp7qwj4rx63dpj9xwm8hv5fd9nm27wqvmgnmd3q548h" + (make-linux-libre "4.1.35" + "05zvrld1digqwf9kqf5pxx0mxqmwpr5kamhnks6y4yfy7x7jynyk" %intel-compatible-systems #:configuration-file kernel-config)) ;; Avoid rebuilding kernel variants when there is a minor version bump. -(define %linux-libre-version "4.7.5") -(define %linux-libre-hash "1v5xzagc7zmf0dszq623h83rzhn2qwcapg2fwlihrrb6h9317xqx") +(define %linux-libre-version "4.8.6") +(define %linux-libre-hash "07h618x13yyp3lnf77px4v60pdcz7il0fa7p466wa5gp3h0yhvmi") (define-public linux-libre-arm-generic (make-linux-libre %linux-libre-version @@ -336,13 +356,6 @@ It has been modified to remove all non-free binary blobs.") #:defconfig "multi_v7_defconfig" #:extra-version "arm-generic")) -(define-public linux-libre-beagle-bone-black - (make-linux-libre %linux-libre-version - %linux-libre-hash - '("armhf-linux") - #:defconfig "omap2plus_defconfig" - #:extra-version "beagle-bone-black")) - ;;; ;;; Pluggable authentication modules (PAM). @@ -588,7 +601,11 @@ slabtop, and skill.") (native-inputs `(("pkg-config" ,pkg-config) ("texinfo" ,texinfo))) ;for the libext2fs Info manual (arguments - '(;; util-linux is the preferred source for some of the libraries and + '(;; Parallel building reliably yields a failure like this: + ;; "make[2]: *** No rule to make target '../lib/libss.so', needed by + ;; 'debugfs'. Stop." + #:parallel-build? #f + ;; util-linux is the preferred source for some of the libraries and ;; commands, so disable them (see, e.g., ;; .) #:configure-flags '("--disable-libblkid" @@ -885,7 +902,7 @@ packet filter.") (define-public iproute (package (name "iproute2") - (version "4.4.0") + (version "4.8.0") (source (origin (method url-fetch) (uri (string-append @@ -893,12 +910,14 @@ packet filter.") version ".tar.xz")) (sha256 (base32 - "05351m4m0whsivlblvs3m0nz5q9v6r06ik80z27gf6ca51kw74dw")))) + "12dk5hn1zlraqk2p0z8dv2xgsz0x9v8l3vcvf51fzj0v8b45j2d3")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no test suite #:make-flags (let ((out (assoc-ref %outputs "out"))) (list "DESTDIR=" + (string-append "BASH_COMPDIR=" out + "/etc/bash_completion.d") (string-append "LIBDIR=" out "/lib") (string-append "SBINDIR=" out "/sbin") (string-append "CONFDIR=" out "/etc") @@ -1624,14 +1643,14 @@ time.") (define-public lvm2 (package (name "lvm2") - (version "2.02.109") + (version "2.02.166") (source (origin (method url-fetch) (uri (string-append "ftp://sources.redhat.com/pub/lvm2/releases/LVM2." version ".tgz")) (sha256 (base32 - "1rv5ivg0l1w3nwzwdkqixm96h5bzg7ib4rr196ysb2lw42jmpjbv")) + "150v0mawd2swdvypcmkjd3h3s4n5i1220h6sxx94a8jvp1kb0871")) (modules '((guix build utils))) (snippet '(begin @@ -1650,16 +1669,27 @@ time.") (inputs `(("udev" ,eudev))) (arguments - '(#:phases (alist-cons-after - 'configure 'set-makefile-shell - (lambda _ - ;; Use 'sh', not 'bash', so that '. lib/utils.sh' works as - ;; expected. - (setenv "SHELL" (which "sh")) - - ;; Replace /bin/sh with the right file name. - (patch-makefile-SHELL "make.tmpl")) - %standard-phases) + '(#:phases + (modify-phases %standard-phases + (add-after 'configure 'set-makefile-shell + (lambda _ + ;; Use 'sh', not 'bash', so that '. lib/utils.sh' works as + ;; expected. + (setenv "SHELL" (which "sh")) + + ;; Replace /bin/sh with the right file name. + (patch-makefile-SHELL "make.tmpl") + #t)) + (add-before 'strip 'make-objects-writable + (lambda* (#:key outputs #:allow-other-keys) + ;; Make compiled objects writable so they can be stripped. + (let ((out (assoc-ref outputs "out"))) + (for-each (lambda (file) + (chmod file #o755)) + (append + (find-files (string-append out "/lib")) + (find-files (string-append out "/sbin")))) + #t)))) #:configure-flags (list (string-append "--sysconfdir=" (assoc-ref %outputs "out") @@ -2350,6 +2380,35 @@ assemble, report on, and monitor arrays. It can also move spares between raid arrays when needed.") (license license:gpl2+))) +(define-public mdadm-static + (package + (inherit mdadm) + (name "mdadm-static") + (arguments + (substitute-keyword-arguments (package-arguments mdadm) + ((#:make-flags flags) + `(cons "LDFLAGS = -static" ,flags)) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'install 'remove-cruft + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (precious? (lambda (file) + (member file '("." ".." "sbin")))) + (directories (scandir out (negate precious?)))) + (with-directory-excursion out + (for-each delete-file-recursively directories) + (remove-store-references "sbin/mdadm") + (delete-file "sbin/mdmon") + #t)))))) + ((#:modules modules %gnu-build-system-modules) + `((ice-9 ftw) ,@modules)) + ((#:strip-flags _ '()) + ''("--strip-all")) ;strip a few extra KiB + ((#:allowed-references _ '("out")) + '("out")))) ;refer only self + (synopsis "Statically-linked 'mdadm' command for use in an initrd"))) + (define-public libaio (package (name "libaio") @@ -2566,7 +2625,7 @@ and copy/paste text in the console and in xterm.") (define-public btrfs-progs (package (name "btrfs-progs") - (version "4.7.3") + (version "4.8.2") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/linux/kernel/" @@ -2574,7 +2633,7 @@ and copy/paste text in the console and in xterm.") "btrfs-progs-v" version ".tar.xz")) (sha256 (base32 - "073pvx8vz6rkw2d8mm1m60b3i8743pc712pasvydbgm8wl66zkch")))) + "0pswcfmdnfc586770h74abp67gn2xv8fd46vxlimnmn837sj7h41")))) (build-system gnu-build-system) (outputs '("out" "static")) ; static versions of binaries in "out" (~16MiB!) @@ -2929,14 +2988,14 @@ the default @code{nsswitch} and the experimental @code{umich_ldap}.") (define-public mcelog (package (name "mcelog") - (version "141") + (version "144") (source (origin (method url-fetch) (uri (string-append "https://git.kernel.org/cgit/utils/cpu/mce/" "mcelog.git/snapshot/v" version ".tar.gz")) (sha256 (base32 - "0ws8blq0prj7slcaljyaxxq20kgmlakzac0ri1pvh24xs1jn2xxg")) + "03jyhsl0s59sfqykj5p6gkb03k4w1h9ay31yxym1dnzis5sq99pa")) (file-name (string-append name "-" version ".tar.gz")) (modules '((guix build utils))) (snippet @@ -2963,3 +3022,178 @@ and other hardware errors on x86 systems. It can also perform user-defined tasks, such as bringing bad pages off-line, when configurable error thresholds are exceeded.") (license license:gpl2))) + +(define-public mtd-utils + (package + (name "mtd-utils") + (version "1.5.2") + (source (origin + (method url-fetch) + (uri (string-append + "ftp://ftp.infradead.org/pub/mtd-utils/" + "mtd-utils-" version ".tar.bz2")) + (sha256 + (base32 + "007lhsd8yb34l899r4m37whhzdw815cz4fnjbpnblfha524p7dax")))) + (inputs + `(("acl" ,acl) + ("libuuid" ,util-linux) + ("lzo", lzo) + ("zlib" ,zlib))) + (build-system gnu-build-system) + (arguments + `(#:test-target "tests" + #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:phases (modify-phases %standard-phases + (delete 'configure)))) + (synopsis "MTD Flash Storage Utilities") + (description "This package provides utilities for testing, partitioning, etc +of flash storage.") + (home-page "http://www.linux-mtd.infradead.org/") + (license + (list license:gpl2 ; Almost everything is gpl2 or gpl2+ + license:mpl1.1 ; All ftl* files + license:expat)))) ; libiniparser + +(define-public libseccomp + (package + (name "libseccomp") + (version "2.3.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/seccomp/libseccomp/" + "releases/download/v" version + "/libseccomp-" version ".tar.gz")) + (sha256 + (base32 + "0asnlkzqms520r0dra08dzcz5hh6hs7lkajfw9wij3vrd0hxsnzz")))) + (build-system gnu-build-system) + (native-inputs + `(("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 +libseccomp API is designed to abstract away the underlying BPF based syscall +filter language and present a more conventional function-call based filtering +interface that should be familiar to, and easily adopted by, application +developers.") + (home-page "https://github.com/seccomp/libseccomp") + (license license:lgpl2.1))) + +(define-public radeontop + (package + (name "radeontop") + (version "0.9") + (home-page "https://github.com/clbr/radeontop/") + (source (origin + (method url-fetch) + (uri (string-append home-page "/archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "07fnimn6wwablmdjw0av11hk9a6xilbryh09izq4b2ic4b8md2p7")))) + (build-system gnu-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + ;; getver.sh uses ‘git --describe’, isn't worth an extra git + ;; dependency, and doesn't even work on release(!) tarballs. + (add-after 'unpack 'report-correct-version + (lambda _ (substitute* "getver.sh" + (("ver=unknown") + (string-append "ver=" ,version))))) + (delete 'configure)) ; no configure script + #:make-flags (list "CC=gcc" + (string-append "PREFIX=" %output)) + #:tests? #f)) ; no tests + (native-inputs + `(("gnu-gettext" ,gnu-gettext) + ("pkg-config" ,pkg-config))) + (inputs + `(("libdrm" ,libdrm) + ("libpciaccess" ,libpciaccess) + ("ncurses" ,ncurses))) + (synopsis "Usage monitor for AMD Radeon graphics") + (description "RadeonTop monitors resource consumption on supported AMD +Radeon Graphics Processing Units (GPUs), either in real time as bar graphs on +a terminal or saved to a file for further processing. It measures both the +activity of the GPU as a whole, which is also accurate during OpenCL +computations, as well as separate component statistics that are only meaningful +under OpenGL graphics workloads.") + (license license:gpl3))) + +(define-public efivar + (package + (name "efivar") + (version "30") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/rhinstaller/" name + "/releases/download/" version "/" name + "-" version ".tar.bz2")) + (sha256 + (base32 + "12qjnm44yi55ffqxjpgrxy82s89yjziy84w2rfjjknsd8flj0mqz")))) + (build-system gnu-build-system) + (arguments + `(;; Tests require a UEFI system and is not detected in the chroot. + #:tests? #f + #:make-flags (list (string-append "prefix=" %output) + (string-append "libdir=" %output "/lib") + (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")) + #:phases + (modify-phases %standard-phases + (delete 'configure)))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("popt" ,popt))) + (home-page "https://github.com/rhinstaller/efivar") + (synopsis "Tool and library to manipulate EFI variables") + (description "This package provides a library and a command line +interface to the variable facility of UEFI boot firmware.") + (license license:lgpl2.1+))) + +(define-public efibootmgr + (package + (name "efibootmgr") + (version "14") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/rhinstaller/" name + "/releases/download/" version "/" name + "-" version ".tar.bz2")) + (sha256 + (base32 + "1n3sydvpr6yl040hhf460k7mrxby7laqd9dqs6pq0js1hijc2zip")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; No tests. + #:make-flags (list (string-append "prefix=" %output) + (string-append "libdir=" %output "/lib") + ;; Override CFLAGS to add efivar include directory. + (string-append "CFLAGS=-O2 -g -flto -I" + (assoc-ref %build-inputs "efivar") + "/include/efivar")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'branding + ;; Replace default loader path with something more familiar. + (lambda _ + (substitute* "src/efibootmgr.c" + (("EFI\\\\\\\\redhat") ; Matches 'EFI\\redhat'. + "EFI\\\\gnu")) + #t)) + (delete 'configure)))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("efivar" ,efivar) + ("popt" ,popt))) + (home-page "https://github.com/rhinstaller/efibootmgr") + (synopsis "Modify the Extensible Firmware Interface (EFI) boot manager") + (description + "@code{efibootmgr} is a user-space application to modify the Intel +Extensible Firmware Interface (EFI) Boot Manager. This application can +create and destroy boot entries, change the boot order, change the next +running boot option, and more.") + (license license:gpl2+)))