;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 John Darrington <jmd@gnu.org>
+;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
(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)
#: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)
#: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)
(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
(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)
(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
(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")
(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)
(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
#: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"))
-
\f
;;;
;;; Pluggable authentication modules (PAM).
(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.,
;; <http://git.buildroot.net/buildroot/commit/?id=e1ffc2f791b33633>.)
#:configure-flags '("--disable-libblkid"
(define-public iproute
(package
(name "iproute2")
- (version "4.4.0")
+ (version "4.8.0")
(source (origin
(method url-fetch)
(uri (string-append
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")
(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
(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")
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")
(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/"
"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!)
(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
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+)))