gnu: dbus-glib: Propagate inputs dbus and glib.
[jackhill/guix/guix.git] / gnu / packages / linux.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
3 ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
4 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
5 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
6 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
7 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
8 ;;;
9 ;;; This file is part of GNU Guix.
10 ;;;
11 ;;; GNU Guix is free software; you can redistribute it and/or modify it
12 ;;; under the terms of the GNU General Public License as published by
13 ;;; the Free Software Foundation; either version 3 of the License, or (at
14 ;;; your option) any later version.
15 ;;;
16 ;;; GNU Guix is distributed in the hope that it will be useful, but
17 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
18 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 ;;; GNU General Public License for more details.
20 ;;;
21 ;;; You should have received a copy of the GNU General Public License
22 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
23
24 (define-module (gnu packages linux)
25 #:use-module ((guix licenses)
26 #:hide (zlib))
27 #:use-module (gnu packages)
28 #:use-module (gnu packages compression)
29 #:use-module (gnu packages gcc)
30 #:use-module (gnu packages flex)
31 #:use-module (gnu packages bison)
32 #:use-module (gnu packages admin)
33 #:use-module (gnu packages gperf)
34 #:use-module (gnu packages libusb)
35 #:use-module (gnu packages ncurses)
36 #:use-module (gnu packages pciutils)
37 #:use-module (gnu packages databases)
38 #:use-module (gnu packages perl)
39 #:use-module (gnu packages pkg-config)
40 #:use-module (gnu packages python)
41 #:use-module (gnu packages slang)
42 #:use-module (gnu packages algebra)
43 #:use-module (gnu packages gettext)
44 #:use-module (gnu packages glib)
45 #:use-module (gnu packages pulseaudio)
46 #:use-module (gnu packages attr)
47 #:use-module (gnu packages xml)
48 #:use-module (gnu packages autotools)
49 #:use-module (gnu packages texinfo)
50 #:use-module (gnu packages check)
51 #:use-module (gnu packages maths)
52 #:use-module (gnu packages base)
53 #:use-module (gnu packages rrdtool)
54 #:use-module (gnu packages elf)
55 #:use-module (gnu packages gtk)
56 #:use-module (gnu packages docbook)
57 #:use-module (gnu packages asciidoc)
58 #:use-module (gnu packages readline)
59 #:use-module (gnu packages calendar)
60 #:use-module (guix packages)
61 #:use-module (guix download)
62 #:use-module (guix utils)
63 #:use-module (guix build-system gnu)
64 #:use-module (guix build-system cmake)
65 #:use-module (guix build-system python)
66 #:use-module (guix build-system trivial)
67 #:use-module (srfi srfi-26)
68 #:use-module (ice-9 match))
69
70 (define-public (system->linux-architecture arch)
71 "Return the Linux architecture name for ARCH, a Guix system name such as
72 \"x86_64-linux\"."
73 (let ((arch (car (string-split arch #\-))))
74 (cond ((string=? arch "i686") "i386")
75 ((string-prefix? "mips" arch) "mips")
76 ((string-prefix? "arm" arch) "arm")
77 (else arch))))
78
79 (define (linux-libre-urls version)
80 "Return a list of URLs for Linux-Libre VERSION."
81 (list (string-append
82 "http://linux-libre.fsfla.org/pub/linux-libre/releases/"
83 version "-gnu/linux-libre-" version "-gnu.tar.xz")
84
85 ;; XXX: Work around <http://bugs.gnu.org/14851>.
86 (string-append
87 "ftp://alpha.gnu.org/gnu/guix/mirror/linux-libre-"
88 version "-gnu.tar.xz")
89
90 ;; Maybe this URL will become valid eventually.
91 (string-append
92 "mirror://gnu/linux-libre/" version "-gnu/linux-libre-"
93 version "-gnu.tar.xz")))
94
95 (define-public linux-libre-headers
96 (let* ((version "3.14.37")
97 (build-phase
98 (lambda (arch)
99 `(lambda _
100 (setenv "ARCH" ,(system->linux-architecture arch))
101 (format #t "`ARCH' set to `~a'~%" (getenv "ARCH"))
102
103 (and (zero? (system* "make" "defconfig"))
104 (zero? (system* "make" "mrproper" "headers_check"))))))
105 (install-phase
106 `(lambda* (#:key outputs #:allow-other-keys)
107 (let ((out (assoc-ref outputs "out")))
108 (and (zero? (system* "make"
109 (string-append "INSTALL_HDR_PATH=" out)
110 "headers_install"))
111 (mkdir (string-append out "/include/config"))
112 (call-with-output-file
113 (string-append out
114 "/include/config/kernel.release")
115 (lambda (p)
116 (format p "~a-default~%" ,version))))))))
117 (package
118 (name "linux-libre-headers")
119 (version version)
120 (source (origin
121 (method url-fetch)
122 (uri (linux-libre-urls version))
123 (sha256
124 (base32
125 "1blxr2bsvfqi9khj4cpspv434bmx252zak2wsbi2mgl60zh77gza"))))
126 (build-system gnu-build-system)
127 (native-inputs `(("perl" ,perl)))
128 (arguments
129 `(#:modules ((guix build gnu-build-system)
130 (guix build utils)
131 (srfi srfi-1))
132 #:phases (alist-replace
133 'build ,(build-phase (or (%current-target-system)
134 (%current-system)))
135 (alist-replace
136 'install ,install-phase
137 (alist-delete 'configure %standard-phases)))
138 #:tests? #f))
139 (synopsis "GNU Linux-Libre kernel headers")
140 (description "Headers of the Linux-Libre kernel.")
141 (license gpl2)
142 (home-page "http://www.gnu.org/software/linux-libre/"))))
143
144 (define-public module-init-tools
145 (package
146 (name "module-init-tools")
147 (version "3.16")
148 (source (origin
149 (method url-fetch)
150 (uri (string-append
151 "mirror://kernel.org/linux/utils/kernel/module-init-tools/module-init-tools-"
152 version ".tar.bz2"))
153 (sha256
154 (base32
155 "0jxnz9ahfic79rp93l5wxcbgh4pkv85mwnjlbv1gz3jawv5cvwp1"))
156 (patches
157 (list (search-patch "module-init-tools-moduledir.patch")))))
158 (build-system gnu-build-system)
159 (arguments
160 ;; FIXME: The upstream tarball lacks man pages, and building them would
161 ;; require DocBook & co. We used to use Gentoo's pre-built man pages,
162 ;; but they vanished. In the meantime, fake it.
163 '(#:phases (alist-cons-before
164 'configure 'fake-docbook
165 (lambda _
166 (substitute* "Makefile.in"
167 (("^DOCBOOKTOMAN.*$")
168 "DOCBOOKTOMAN = true\n")))
169 %standard-phases)))
170 (home-page "http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/")
171 (synopsis "Tools for loading and managing Linux kernel modules")
172 (description
173 "Tools for loading and managing Linux kernel modules, such as `modprobe',
174 `insmod', `lsmod', and more.")
175 (license gpl2+)))
176
177 (define %boot-logo-patch
178 ;; Linux-Libre boot logo featuring Freedo and a gnu.
179 (origin
180 (method url-fetch)
181 (uri (string-append "http://www.fsfla.org/svn/fsfla/software/linux-libre/"
182 "lemote/gnewsense/branches/3.16/100gnu+freedo.patch"))
183 (sha256
184 (base32
185 "1hk9swxxc80bmn2zd2qr5ccrjrk28xkypwhl4z0qx4hbivj7qm06"))))
186
187 (define (kernel-config system)
188 "Return the absolute file name of the Linux-Libre build configuration file
189 for SYSTEM, or #f if there is no configuration for SYSTEM."
190 (define (lookup file)
191 (let ((file (string-append "gnu/packages/" file)))
192 (search-path %load-path file)))
193
194 (match system
195 ("i686-linux"
196 (lookup "linux-libre-i686.conf"))
197 ("x86_64-linux"
198 (lookup "linux-libre-x86_64.conf"))
199 (_
200 #f)))
201
202 (define-public linux-libre
203 (let* ((version "4.0.4")
204 (build-phase
205 '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
206 ;; Apply the neat patch.
207 (system* "patch" "-p1" "--force"
208 "-i" (assoc-ref inputs "patch/freedo+gnu"))
209
210 (let ((arch (car (string-split system #\-))))
211 (setenv "ARCH"
212 (cond ((string=? arch "i686") "i386")
213 (else arch)))
214 (format #t "`ARCH' set to `~a'~%" (getenv "ARCH")))
215
216 (let ((build (assoc-ref %standard-phases 'build))
217 (config (assoc-ref inputs "kconfig")))
218
219 ;; Use the architecture-specific config if available, and
220 ;; 'defconfig' otherwise.
221 (if config
222 (begin
223 (copy-file config ".config")
224 (chmod ".config" #o666))
225 (system* "make" "defconfig"))
226
227 ;; Appending works even when the option wasn't in the
228 ;; file. The last one prevails if duplicated.
229 (let ((port (open-file ".config" "a")))
230 (display (string-append "CONFIG_NET_9P=m\n"
231 "CONFIG_NET_9P_VIRTIO=m\n"
232 "CONFIG_VIRTIO_BLK=m\n"
233 "CONFIG_VIRTIO_NET=m\n"
234 ;; https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00039.html
235 "CONFIG_DEVPTS_MULTIPLE_INSTANCES=y\n"
236 "CONFIG_VIRTIO_PCI=m\n"
237 "CONFIG_VIRTIO_BALLOON=m\n"
238 "CONFIG_VIRTIO_MMIO=m\n"
239 "CONFIG_FUSE_FS=m\n"
240 "CONFIG_CIFS=m\n"
241 "CONFIG_9P_FS=m\n")
242 port)
243 (close-port port))
244
245 (zero? (system* "make" "oldconfig"))
246
247 ;; Call the default `build' phase so `-j' is correctly
248 ;; passed.
249 (apply build #:make-flags "all" args))))
250 (install-phase
251 `(lambda* (#:key inputs outputs #:allow-other-keys)
252 (let* ((out (assoc-ref outputs "out"))
253 (moddir (string-append out "/lib/modules"))
254 (mit (assoc-ref inputs "module-init-tools")))
255 (mkdir-p moddir)
256 (for-each (lambda (file)
257 (copy-file file
258 (string-append out "/" (basename file))))
259 (find-files "." "^(bzImage|System\\.map)$"))
260 (copy-file ".config" (string-append out "/config"))
261 (zero? (system* "make"
262 (string-append "DEPMOD=" mit "/sbin/depmod")
263 (string-append "MODULE_DIR=" moddir)
264 (string-append "INSTALL_PATH=" out)
265 (string-append "INSTALL_MOD_PATH=" out)
266 "INSTALL_MOD_STRIP=1"
267 "modules_install"))))))
268 (package
269 (name "linux-libre")
270 (version version)
271 (source (origin
272 (method url-fetch)
273 (uri (linux-libre-urls version))
274 (sha256
275 (base32
276 "1czjhyczzaz1dvhy9lrlxlk6gf45wcw3rnpcmh697dxgf37clmzp"))))
277 (build-system gnu-build-system)
278 (native-inputs `(("perl" ,perl)
279 ("bc" ,bc)
280 ("module-init-tools" ,module-init-tools)
281 ("patch/freedo+gnu" ,%boot-logo-patch)
282
283 ,@(let ((conf (kernel-config (or (%current-target-system)
284 (%current-system)))))
285 (if conf
286 `(("kconfig" ,conf))
287 '()))))
288
289 ;; XXX: Work around an ICE with our patched GCC 4.8.3 while compiling
290 ;; 'drivers/staging/vt6656/michael.o': <http://hydra.gnu.org/build/96389/>.
291 (inputs `(("gcc" ,gcc-4.9)))
292
293 (arguments
294 `(#:modules ((guix build gnu-build-system)
295 (guix build utils)
296 (srfi srfi-1)
297 (ice-9 match))
298 #:phases (alist-replace
299 'build ,build-phase
300 (alist-replace
301 'install ,install-phase
302 (alist-delete 'configure %standard-phases)))
303 #:tests? #f))
304 (synopsis "100% free redistribution of a cleaned Linux kernel")
305 (description
306 "GNU Linux-Libre is a free (as in freedom) variant of the Linux kernel.
307 It has been modified to remove all non-free binary blobs.")
308 (license gpl2)
309 (home-page "http://www.gnu.org/software/linux-libre/"))))
310
311 \f
312 ;;;
313 ;;; Pluggable authentication modules (PAM).
314 ;;;
315
316 (define-public linux-pam
317 (package
318 (name "linux-pam")
319 (version "1.1.6")
320 (source
321 (origin
322 (method url-fetch)
323 (uri (list (string-append "http://www.linux-pam.org/library/Linux-PAM-"
324 version ".tar.bz2")
325 (string-append "mirror://kernel.org/linux/libs/pam/library/Linux-PAM-"
326 version ".tar.bz2")))
327 (sha256
328 (base32
329 "1hlz2kqvbjisvwyicdincq7nz897b9rrafyzccwzqiqg53b8gf5s"))))
330 (build-system gnu-build-system)
331 (native-inputs
332 `(("flex" ,flex)
333
334 ;; TODO: optional dependencies
335 ;; ("libxcrypt" ,libxcrypt)
336 ;; ("cracklib" ,cracklib)
337 ))
338 (arguments
339 '(;; Most users, such as `shadow', expect the headers to be under
340 ;; `security'.
341 #:configure-flags (list (string-append "--includedir="
342 (assoc-ref %outputs "out")
343 "/include/security"))
344
345 ;; XXX: Tests won't run in chroot, presumably because /etc/pam.d
346 ;; isn't available.
347 #:tests? #f))
348 (home-page "http://www.linux-pam.org/")
349 (synopsis "Pluggable authentication modules for Linux")
350 (description
351 "A *Free* project to implement OSF's RFC 86.0.
352 Pluggable authentication modules are small shared object files that can
353 be used through the PAM API to perform tasks, like authenticating a user
354 at login. Local and dynamic reconfiguration are its key features")
355 (license bsd-3)))
356
357 \f
358 ;;;
359 ;;; Miscellaneous.
360 ;;;
361
362 (define-public psmisc
363 (package
364 (name "psmisc")
365 (version "22.20")
366 (source
367 (origin
368 (method url-fetch)
369 (uri (string-append "mirror://sourceforge/psmisc/psmisc/psmisc-"
370 version ".tar.gz"))
371 (sha256
372 (base32
373 "052mfraykmxnavpi8s78aljx8w87hyvpx8mvzsgpjsjz73i28wmi"))))
374 (build-system gnu-build-system)
375 (inputs `(("ncurses" ,ncurses)))
376 (home-page "http://psmisc.sourceforge.net/")
377 (synopsis
378 "Small utilities that use the proc filesystem")
379 (description
380 "This PSmisc package is a set of some small useful utilities that
381 use the proc filesystem. We're not about changing the world, but
382 providing the system administrator with some help in common tasks.")
383 (license gpl2+)))
384
385 (define-public util-linux
386 (package
387 (name "util-linux")
388 (version "2.25.2")
389 (source (origin
390 (method url-fetch)
391 (uri (string-append "mirror://kernel.org/linux/utils/"
392 name "/v" (version-major+minor version) "/"
393 name "-" version ".tar.xz"))
394 (sha256
395 (base32
396 "1miwwdq1zwvhf0smrxx3fjddq3mz22s8rc5cw54s7x3kbdqpyig0"))
397 (patches (list (search-patch "util-linux-tests.patch")))
398 (modules '((guix build utils)))
399 (snippet
400 ;; We take the 'logger' program from GNU Inetutils and 'kill'
401 ;; from GNU Coreutils.
402 '(substitute* "configure"
403 (("build_logger=yes") "build_logger=no")
404 (("build_kill=yes") "build_kill=no")))))
405 (build-system gnu-build-system)
406 (arguments
407 `(#:configure-flags (list "--disable-use-tty-group"
408 "--enable-ddate"
409
410 ;; Install completions where our
411 ;; bash-completion package expects them.
412 (string-append "--with-bashcompletiondir="
413 (assoc-ref %outputs "out")
414 "/etc/bash_completion.d"))
415 #:phases (alist-cons-before
416 'check 'pre-check
417 (lambda* (#:key inputs outputs #:allow-other-keys)
418 (let ((out (assoc-ref outputs "out"))
419 (net (assoc-ref inputs "net-base")))
420 ;; Change the test to refer to the right file.
421 (substitute* "tests/ts/misc/mcookie"
422 (("/etc/services")
423 (string-append net "/etc/services")))
424 #t))
425 %standard-phases)))
426 (inputs `(("zlib" ,zlib)
427 ("ncurses" ,ncurses)))
428 (native-inputs
429 `(("perl" ,perl)
430 ("net-base" ,net-base))) ;for tests
431 (home-page "https://www.kernel.org/pub/linux/utils/util-linux/")
432 (synopsis "Collection of utilities for the Linux kernel")
433 (description
434 "Util-linux is a random collection of utilities for the Linux kernel.")
435
436 ;; Note that util-linux doesn't use the same license for all the
437 ;; code. GPLv2+ is the default license for a code without an
438 ;; explicitly defined license.
439 (license (list gpl3+ gpl2+ gpl2 lgpl2.0+
440 bsd-4 public-domain))))
441
442 (define-public procps
443 (package
444 (name "procps")
445 (version "3.2.8")
446 (source (origin
447 (method url-fetch)
448 ;; A mirror://sourceforge URI doesn't work, presumably becuase
449 ;; the SourceForge project is misconfigured.
450 (uri (string-append "http://procps.sourceforge.net/procps-"
451 version ".tar.gz"))
452 (sha256
453 (base32
454 "0d8mki0q4yamnkk4533kx8mc0jd879573srxhg6r2fs3lkc6iv8i"))
455 (patches (list (search-patch "procps-make-3.82.patch")))))
456 (build-system gnu-build-system)
457 (inputs `(("ncurses" ,ncurses)))
458 (arguments
459 '(#:modules ((guix build utils)
460 (guix build gnu-build-system)
461 (srfi srfi-1)
462 (srfi srfi-26))
463 #:phases (alist-replace
464 'configure
465 (lambda* (#:key outputs #:allow-other-keys)
466 ;; No `configure', just a single Makefile.
467 (let ((out (assoc-ref outputs "out")))
468 (substitute* "Makefile"
469 (("/usr/") "/")
470 (("--(owner|group) 0") "")
471 (("ldconfig") "true")
472 (("^LDFLAGS[[:blank:]]*:=(.*)$" _ value)
473 ;; Add libproc to the RPATH.
474 (string-append "LDFLAGS := -Wl,-rpath="
475 out "/lib" value))))
476 (setenv "CC" "gcc"))
477 (alist-replace
478 'install
479 (lambda* (#:key outputs #:allow-other-keys)
480 (let ((out (assoc-ref outputs "out")))
481 (and (zero?
482 (system* "make" "install"
483 (string-append "DESTDIR=" out)))
484
485 ;; Remove commands and man pages redundant with
486 ;; Coreutils.
487 (let ((dup (append-map (cut find-files out <>)
488 '("^kill" "^uptime"))))
489 (for-each delete-file dup)
490 #t)
491
492 ;; Sanity check.
493 (zero?
494 (system* (string-append out "/bin/ps")
495 "--version")))))
496 %standard-phases))
497
498 ;; What did you expect? Tests?
499 #:tests? #f))
500 (home-page "http://procps.sourceforge.net/")
501 (synopsis "Utilities that give information about processes")
502 (description
503 "Procps is the package that has a bunch of small useful utilities
504 that give information about processes using the Linux /proc file system.
505 The package includes the programs ps, top, vmstat, w, kill, free,
506 slabtop, and skill.")
507 (license gpl2)))
508
509 (define-public usbutils
510 (package
511 (name "usbutils")
512 (version "006")
513 (source
514 (origin
515 (method url-fetch)
516 (uri (string-append "mirror://kernel.org/linux/utils/usb/usbutils/"
517 "usbutils-" version ".tar.xz"))
518 (sha256
519 (base32
520 "03pd57vv8c6x0hgjqcbrxnzi14h8hcghmapg89p8k5zpwpkvbdfr"))))
521 (build-system gnu-build-system)
522 (inputs
523 `(("libusb" ,libusb)))
524 (native-inputs
525 `(("pkg-config" ,pkg-config)))
526 (home-page "http://www.linux-usb.org/")
527 (synopsis
528 "Tools for working with USB devices, such as lsusb")
529 (description
530 "Tools for working with USB devices, such as lsusb.")
531 (license gpl2+)))
532
533 (define-public e2fsprogs
534 (package
535 (name "e2fsprogs")
536 (version "1.42.12")
537 (source (origin
538 (method url-fetch)
539 (uri (string-append "mirror://sourceforge/e2fsprogs/e2fsprogs-"
540 version ".tar.gz"))
541 (sha256
542 (base32
543 "0v0qcfyls0dlrjy8gx9m3s2wbkp5z3lbsr5hb7x8kp8f3bclcy71"))
544 (modules '((guix build utils)))
545 (snippet
546 '(substitute* "MCONFIG.in"
547 (("INSTALL_SYMLINK = /bin/sh")
548 "INSTALL_SYMLINK = sh")))))
549 (build-system gnu-build-system)
550 (inputs `(("util-linux" ,util-linux)))
551 (native-inputs `(("pkg-config" ,pkg-config)
552 ("texinfo" ,texinfo))) ;for the libext2fs Info manual
553 (arguments
554 '(;; util-linux is not the preferred source for some of the libraries and
555 ;; commands, so disable them (see, e.g.,
556 ;; <http://git.buildroot.net/buildroot/commit/?id=e1ffc2f791b336339909c90559b7db40b455f172>.)
557 #:configure-flags '("--disable-libblkid"
558 "--disable-libuuid" "--disable-uuidd"
559 "--disable-fsck"
560
561 ;; Install libext2fs et al.
562 "--enable-elf-shlibs")
563
564 #:make-flags (list (string-append "LDFLAGS=-Wl,-rpath="
565 (assoc-ref %outputs "out")
566 "/lib"))
567
568 #:phases (alist-cons-before
569 'configure 'patch-shells
570 (lambda _
571 (substitute* "configure"
572 (("/bin/sh (.*)parse-types.sh" _ dir)
573 (string-append (which "sh") " " dir
574 "parse-types.sh")))
575 (substitute* (find-files "." "^Makefile.in$")
576 (("#!/bin/sh")
577 (string-append "#!" (which "sh")))))
578 (alist-cons-after
579 'install 'install-libs
580 (lambda* (#:key outputs #:allow-other-keys)
581 (let* ((out (assoc-ref outputs "out"))
582 (lib (string-append out "/lib")))
583 (and (zero? (system* "make" "install-libs"))
584
585 ;; Make the .a writable so that 'strip' works.
586 ;; Failing to do that, due to debug symbols, we
587 ;; retain a reference to the final
588 ;; linux-libre-headers, which refer to the
589 ;; bootstrap binaries.
590 (let ((archives (find-files lib "\\.a$")))
591 (for-each (lambda (file)
592 (chmod file #o666))
593 archives)
594 #t))))
595 %standard-phases))
596
597 ;; FIXME: Tests work by comparing the stdout/stderr of programs, that
598 ;; they fail because we get an extra line that says "Can't check if
599 ;; filesystem is mounted due to missing mtab file".
600 #:tests? #f))
601 (home-page "http://e2fsprogs.sourceforge.net/")
602 (synopsis "Creating and checking ext2/ext3/ext4 file systems")
603 (description
604 "This package provides tools for manipulating ext2/ext3/ext4 file systems.")
605 (license (list gpl2 ; programs
606 lgpl2.0 ; libext2fs
607 x11)))) ; libuuid
608
609 (define e2fsprogs/static
610 (static-package
611 (package (inherit e2fsprogs)
612 (arguments
613 ;; Do not build shared libraries.
614 (substitute-keyword-arguments (package-arguments e2fsprogs)
615 ((#:configure-flags _)
616 '(list "--disable-blkid"))
617 ((#:make-flags _)
618 '(list)))))))
619
620 (define-public e2fsck/static
621 (package
622 (name "e2fsck-static")
623 (version (package-version e2fsprogs))
624 (build-system trivial-build-system)
625 (source #f)
626 (arguments
627 `(#:modules ((guix build utils))
628 #:builder
629 (begin
630 (use-modules (guix build utils)
631 (ice-9 ftw)
632 (srfi srfi-26))
633
634 (let ((source (string-append (assoc-ref %build-inputs "e2fsprogs")
635 "/sbin"))
636 (bin (string-append (assoc-ref %outputs "out") "/sbin")))
637 (mkdir-p bin)
638 (with-directory-excursion bin
639 (for-each (lambda (file)
640 (copy-file (string-append source "/" file)
641 file)
642 (remove-store-references file)
643 (chmod file #o555))
644 (scandir source (cut string-prefix? "fsck." <>))))))))
645 (inputs `(("e2fsprogs" ,e2fsprogs/static)))
646 (synopsis "Statically-linked fsck.* commands from e2fsprogs")
647 (description
648 "This package provides statically-linked command of fsck.ext[234] taken
649 from the e2fsprogs package. It is meant to be used in initrds.")
650 (home-page (package-home-page e2fsprogs))
651 (license (package-license e2fsprogs))))
652
653 (define-public zerofree
654 (package
655 (name "zerofree")
656 (version "1.0.3")
657 (home-page "http://intgat.tigress.co.uk/rmy/uml/")
658 (source (origin
659 (method url-fetch)
660 (uri (string-append home-page name "-" version
661 ".tgz"))
662 (sha256
663 (base32
664 "1xncw3dn2cp922ly42m96p6fh7jv8ysg6bwqbk5xvw701f3dmkrs"))))
665 (build-system gnu-build-system)
666 (arguments
667 '(#:phases (alist-replace
668 'install
669 (lambda* (#:key outputs #:allow-other-keys)
670 (let* ((out (assoc-ref outputs "out"))
671 (bin (string-append out "/bin")))
672 (mkdir-p bin)
673 (copy-file "zerofree"
674 (string-append bin "/zerofree"))
675 (chmod (string-append bin "/zerofree")
676 #o555)
677 #t))
678 (alist-delete 'configure %standard-phases))
679 #:tests? #f)) ;no tests
680 (inputs `(("libext2fs" ,e2fsprogs)))
681 (synopsis "Zero non-allocated regions in ext2/ext3/ext4 file systems")
682 (description
683 "The zerofree command scans the free blocks in an ext2 file system and
684 fills any non-zero blocks with zeroes. This is a useful way to make disk
685 images more compressible.")
686 (license gpl2)))
687
688 (define-public strace
689 (package
690 (name "strace")
691 (version "4.7")
692 (source (origin
693 (method url-fetch)
694 (uri (string-append "mirror://sourceforge/strace/strace-"
695 version ".tar.xz"))
696 (sha256
697 (base32
698 "158iwk0pl2mfw93m1843xb7a2zb8p6lh0qim07rca6f1ff4dk764"))))
699 (build-system gnu-build-system)
700 (native-inputs `(("perl" ,perl)))
701 (home-page "http://strace.sourceforge.net/")
702 (synopsis "System call tracer for Linux")
703 (description
704 "strace is a system call tracer, i.e. a debugging tool which prints out a
705 trace of all the system calls made by a another process/program.")
706 (license bsd-3)))
707
708 (define-public ltrace
709 (package
710 (name "ltrace")
711 (version "0.7.3")
712 (source (origin
713 (method url-fetch)
714 (uri (string-append "http://www.ltrace.org/ltrace_" version
715 ".orig.tar.bz2"))
716 (sha256
717 (base32
718 "00wmbdghqbz6x95m1mcdd3wd46l6hgcr4wggdp049dbifh3qqvqf"))))
719 (build-system gnu-build-system)
720 (inputs `(("libelf" ,libelf)))
721 (arguments
722 ;; Compilation uses -Werror by default, but it fails.
723 '(#:configure-flags '("--disable-werror")))
724 (home-page "http://www.ltrace.org/")
725 (synopsis "Library call tracer for Linux")
726 (description
727 "ltrace intercepts and records dynamic library calls which are called by
728 an executed process and the signals received by that process. It can also
729 intercept and print the system calls executed by the program.")
730 (license gpl2+)))
731
732 (define-public alsa-lib
733 (package
734 (name "alsa-lib")
735 (version "1.0.27.1")
736 (source (origin
737 (method url-fetch)
738 (uri (string-append
739 "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-"
740 version ".tar.bz2"))
741 (sha256
742 (base32
743 "0fx057746dj7rjdi0jnvx2m9b0y1lgdkh1hks87d8w32xyihf3k9"))
744 (patches (list (search-patch "alsa-lib-mips-atomic-fix.patch")))))
745 (build-system gnu-build-system)
746 (home-page "http://www.alsa-project.org/")
747 (synopsis "The Advanced Linux Sound Architecture libraries")
748 (description
749 "The Advanced Linux Sound Architecture (ALSA) provides audio and
750 MIDI functionality to the Linux-based operating system.")
751 (license lgpl2.1+)))
752
753 (define-public alsa-utils
754 (package
755 (name "alsa-utils")
756 (version "1.0.27.2")
757 (source (origin
758 (method url-fetch)
759 (uri (string-append "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-"
760 version ".tar.bz2"))
761 (sha256
762 (base32
763 "1sjjngnq50jv5ilwsb4zys6smifni3bd6fn28gbnhfrg14wsrgq2"))))
764 (build-system gnu-build-system)
765 (arguments
766 ;; XXX: Disable man page creation until we have DocBook.
767 '(#:configure-flags (list "--disable-xmlto"
768
769 ;; The udev rule is responsible for restoring
770 ;; the volume.
771 (string-append "--with-udev-rules-dir="
772 (assoc-ref %outputs "out")
773 "/lib/udev/rules.d"))
774 #:phases (alist-cons-before
775 'install 'pre-install
776 (lambda _
777 ;; Don't try to mkdir /var/lib/alsa.
778 (substitute* "Makefile"
779 (("\\$\\(MKDIR_P\\) .*ASOUND_STATE_DIR.*")
780 "true\n")))
781 %standard-phases)))
782 (inputs
783 `(("libsamplerate" ,libsamplerate)
784 ("ncurses" ,ncurses)
785 ("alsa-lib" ,alsa-lib)
786 ("xmlto" ,xmlto)
787 ("gettext" ,gnu-gettext)))
788 (home-page "http://www.alsa-project.org/")
789 (synopsis "Utilities for the Advanced Linux Sound Architecture (ALSA)")
790 (description
791 "The Advanced Linux Sound Architecture (ALSA) provides audio and
792 MIDI functionality to the Linux-based operating system.")
793
794 ;; This is mostly GPLv2+ but a few files such as 'alsactl.c' are
795 ;; GPLv2-only.
796 (license gpl2)))
797
798 (define-public iptables
799 (package
800 (name "iptables")
801 (version "1.4.16.2")
802 (source (origin
803 (method url-fetch)
804 (uri (string-append
805 "http://www.netfilter.org/projects/iptables/files/iptables-"
806 version ".tar.bz2"))
807 (sha256
808 (base32
809 "0vkg5lzkn4l3i1sm6v3x96zzvnv9g7mi0qgj6279ld383mzcws24"))))
810 (build-system gnu-build-system)
811 (arguments
812 '(#:tests? #f ; no test suite
813 #:configure-flags ; add $libdir to the RUNPATH of executables
814 (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))))
815 (home-page "http://www.netfilter.org/projects/iptables/index.html")
816 (synopsis "Program to configure the Linux IP packet filtering rules")
817 (description
818 "iptables is the userspace command line program used to configure the
819 Linux 2.4.x and later IPv4 packet filtering ruleset. It is targeted towards
820 system administrators. Since Network Address Translation is also configured
821 from the packet filter ruleset, iptables is used for this, too. The iptables
822 package also includes ip6tables. ip6tables is used for configuring the IPv6
823 packet filter.")
824 (license gpl2+)))
825
826 (define-public iproute
827 (package
828 (name "iproute2")
829 (version "3.12.0")
830 (source (origin
831 (method url-fetch)
832 (uri (string-append
833 "mirror://kernel.org/linux/utils/net/iproute2/iproute2-"
834 version ".tar.xz"))
835 (sha256
836 (base32
837 "04gi11gh087bg2nlxhj0lxrk8l9qxkpr88nsiil23917bm3h1xj4"))))
838 (build-system gnu-build-system)
839 (arguments
840 `(#:tests? #f ; no test suite
841 #:make-flags (let ((out (assoc-ref %outputs "out")))
842 (list "DESTDIR="
843 (string-append "LIBDIR=" out "/lib")
844 (string-append "SBINDIR=" out "/sbin")
845 (string-append "CONFDIR=" out "/etc")
846 (string-append "DOCDIR=" out "/share/doc/"
847 ,name "-" ,version)
848 (string-append "MANDIR=" out "/share/man")))
849 #:phases (alist-cons-before
850 'install 'pre-install
851 (lambda _
852 ;; Don't attempt to create /var/lib/arpd.
853 (substitute* "Makefile"
854 (("^.*ARPDDIR.*$") "")))
855 %standard-phases)))
856 (inputs
857 `(("iptables" ,iptables)
858 ("db4" ,bdb)))
859 (native-inputs
860 `(("pkg-config" ,pkg-config)
861 ("flex" ,flex)
862 ("bison" ,bison)))
863 (home-page
864 "http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2")
865 (synopsis
866 "Utilities for controlling TCP/IP networking and traffic in Linux")
867 (description
868 "Iproute2 is a collection of utilities for controlling TCP/IP
869 networking and traffic with the Linux kernel.
870
871 Most network configuration manuals still refer to ifconfig and route as the
872 primary network configuration tools, but ifconfig is known to behave
873 inadequately in modern network environments. They should be deprecated, but
874 most distros still include them. Most network configuration systems make use
875 of ifconfig and thus provide a limited feature set. The /etc/net project aims
876 to support most modern network technologies, as it doesn't use ifconfig and
877 allows a system administrator to make use of all iproute2 features, including
878 traffic control.
879
880 iproute2 is usually shipped in a package called iproute or iproute2 and
881 consists of several tools, of which the most important are ip and tc. ip
882 controls IPv4 and IPv6 configuration and tc stands for traffic control. Both
883 tools print detailed usage messages and are accompanied by a set of
884 manpages.")
885 (license gpl2+)))
886
887 (define-public net-tools
888 ;; XXX: This package is basically unmaintained, but it provides a few
889 ;; commands not yet provided by Inetutils, such as 'route', so we have to
890 ;; live with it.
891 (package
892 (name "net-tools")
893 (version "1.60")
894 (home-page "http://www.tazenda.demon.co.uk/phil/net-tools/")
895 (source (origin
896 (method url-fetch)
897 (uri (string-append home-page "/" name "-"
898 version ".tar.bz2"))
899 (sha256
900 (base32
901 "0yvxrzk0mzmspr7sa34hm1anw6sif39gyn85w4c5ywfn8inxvr3s"))
902 (patches
903 (list (search-patch "net-tools-bitrot.patch")))))
904 (build-system gnu-build-system)
905 (arguments
906 '(#:modules ((guix build gnu-build-system)
907 (guix build utils)
908 (srfi srfi-1)
909 (srfi srfi-26))
910 #:phases (alist-cons-after
911 'unpack 'patch
912 (lambda* (#:key inputs #:allow-other-keys)
913 (define (apply-patch file)
914 (zero? (system* "patch" "-p1" "--force"
915 "--input" file)))
916
917 (let ((patch.gz (assoc-ref inputs "patch")))
918 (format #t "applying Debian patch set '~a'...~%"
919 patch.gz)
920 (system (string-append "gunzip < " patch.gz " > the-patch"))
921 (and (apply-patch "the-patch")
922 (for-each apply-patch
923 (find-files "debian/patches"
924 "\\.patch")))))
925 (alist-replace
926 'configure
927 (lambda* (#:key outputs #:allow-other-keys)
928 (let ((out (assoc-ref outputs "out")))
929 (mkdir-p (string-append out "/bin"))
930 (mkdir-p (string-append out "/sbin"))
931
932 ;; Pretend we have everything...
933 (system "yes | make config")
934
935 ;; ... except for the things we don't have.
936 ;; HAVE_AFDECnet requires libdnet, which we don't have.
937 ;; HAVE_HWSTRIP and HAVE_HWTR require kernel headers
938 ;; that have been removed.
939 (substitute* '("config.make" "config.h")
940 (("^.*HAVE_(AFDECnet|HWSTRIP|HWTR)[ =]1.*$") ""))))
941 (alist-cons-after
942 'install 'remove-redundant-commands
943 (lambda* (#:key outputs #:allow-other-keys)
944 ;; Remove commands and man pages redundant with
945 ;; Inetutils.
946 (let* ((out (assoc-ref outputs "out"))
947 (dup (append-map (cut find-files out <>)
948 '("^hostname"
949 "^(yp|nis|dns)?domainname"))))
950 (for-each delete-file dup)
951 #t))
952 %standard-phases)))
953
954 ;; Binaries that depend on libnet-tools.a don't declare that
955 ;; dependency, making it parallel-unsafe.
956 #:parallel-build? #f
957
958 #:tests? #f ; no test suite
959 #:make-flags (let ((out (assoc-ref %outputs "out")))
960 (list "CC=gcc"
961 (string-append "BASEDIR=" out)
962 (string-append "INSTALLNLSDIR=" out "/share/locale")
963 (string-append "mandir=/share/man")))))
964
965 ;; Use the big Debian patch set (the thing does not even compile out of
966 ;; the box.)
967 (inputs `(("patch" ,(origin
968 (method url-fetch)
969 (uri
970 "http://ftp.de.debian.org/debian/pool/main/n/net-tools/net-tools_1.60-24.2.diff.gz")
971 (sha256
972 (base32
973 "0p93lsqx23v5fv4hpbrydmfvw1ha2rgqpn2zqbs2jhxkzhjc030p"))))))
974 (native-inputs `(("gettext" ,gnu-gettext)))
975
976 (synopsis "Tools for controlling the network subsystem in Linux")
977 (description
978 "This package includes the important tools for controlling the network
979 subsystem of the Linux kernel. This includes arp, hostname, ifconfig,
980 netstat, rarp and route. Additionally, this package contains utilities
981 relating to particular network hardware types (plipconfig, slattach) and
982 advanced aspects of IP configuration (iptunnel, ipmaddr).")
983 (license gpl2+)))
984
985 (define-public libcap
986 (package
987 (name "libcap")
988 (version "2.22")
989 (source (origin
990 (method url-fetch)
991
992 ;; Tarballs used to be available from
993 ;; <https://www.kernel.org/pub/linux/libs/security/linux-privs/>
994 ;; but they never came back after kernel.org was compromised.
995 (uri (string-append
996 "mirror://debian/pool/main/libc/libcap2/libcap2_"
997 version ".orig.tar.gz"))
998 (sha256
999 (base32
1000 "07vjhkznm82p8dm4w6j8mmg7h5c70lp5s9bwwfdmgwpbixfydjp1"))))
1001 (build-system gnu-build-system)
1002 (arguments '(#:phases
1003 (modify-phases %standard-phases
1004 (replace 'configure
1005 ;; Add $libdir to the RUNPATH of executables.
1006 (lambda _
1007 (substitute* "Make.Rules"
1008 (("LDFLAGS := #-g")
1009 (string-append "LDFLAGS := -Wl,-rpath="
1010 %output "/lib"))))))
1011 #:tests? #f ; no 'check' target
1012 #:make-flags (list "lib=lib"
1013 (string-append "prefix="
1014 (assoc-ref %outputs "out"))
1015 "RAISE_SETFCAP=no")))
1016 (native-inputs `(("perl" ,perl)))
1017 (inputs `(("attr" ,attr)))
1018 (home-page "https://sites.google.com/site/fullycapable/")
1019 (synopsis "Library for working with POSIX capabilities")
1020 (description
1021 "Libcap2 provides a programming interface to POSIX capabilities on
1022 Linux-based operating systems.")
1023
1024 ;; License is BSD-3 or GPLv2, at the user's choice.
1025 (license gpl2)))
1026
1027 (define-public bridge-utils
1028 (package
1029 (name "bridge-utils")
1030 (version "1.5")
1031 (source (origin
1032 (method url-fetch)
1033 (uri (string-append "mirror://sourceforge/bridge/bridge-utils-"
1034 version ".tar.gz"))
1035 (sha256
1036 (base32
1037 "12367cwqmi0yqphi6j8rkx97q8hw52yq2fx4k0xfclkcizxybya2"))))
1038 (build-system gnu-build-system)
1039
1040 ;; The tarball lacks all the generated files.
1041 (native-inputs `(("autoconf" ,autoconf)
1042 ("automake" ,automake)))
1043 (arguments
1044 '(#:phases (alist-cons-after
1045 'unpack 'bootstrap
1046 (lambda _
1047 ;; Fix "field ‘ip6’ has incomplete type" errors.
1048 (substitute* "libbridge/libbridge.h"
1049 (("#include <linux/if_bridge.h>")
1050 "#include <linux/in6.h>\n#include <linux/if_bridge.h>"))
1051
1052 ;; Ensure that the entire build fails if one of the
1053 ;; sub-Makefiles fails.
1054 (substitute* "Makefile.in"
1055 (("\\$\\(MAKE\\) \\$\\(MFLAGS\\) -C \\$\\$x ;")
1056 "$(MAKE) $(MFLAGS) -C $$x || exit 1;"))
1057
1058 (zero? (system* "autoreconf" "-vf")))
1059 %standard-phases)
1060 #:tests? #f)) ; no 'check' target
1061
1062 (home-page
1063 "http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge")
1064 (synopsis "Manipulate Ethernet bridges")
1065 (description
1066 "Utilities for Linux's Ethernet bridging facilities. A bridge is a way
1067 to connect two Ethernet segments together in a protocol independent way.
1068 Packets are forwarded based on Ethernet address, rather than IP address (like
1069 a router). Since forwarding is done at Layer 2, all protocols can go
1070 transparently through a bridge.")
1071 (license gpl2+)))
1072
1073 (define-public libnl
1074 (package
1075 (name "libnl")
1076 (version "3.2.25")
1077 (source (origin
1078 (method url-fetch)
1079 (uri (string-append
1080 "http://www.infradead.org/~tgr/libnl/files/libnl-"
1081 version ".tar.gz"))
1082 (sha256
1083 (base32
1084 "1icfrv8yihcb74as1gcgmp0wfpdq632q2zvbvqqvjms9cy87bswb"))))
1085 (build-system gnu-build-system)
1086 (native-inputs `(("flex" ,flex) ("bison" ,bison)))
1087 (home-page "http://www.infradead.org/~tgr/libnl/")
1088 (synopsis "NetLink protocol library suite")
1089 (description
1090 "The libnl suite is a collection of libraries providing APIs to netlink
1091 protocol based Linux kernel interfaces. Netlink is an IPC mechanism primarly
1092 between the kernel and user space processes. It was designed to be a more
1093 flexible successor to ioctl to provide mainly networking related kernel
1094 configuration and monitoring interfaces.")
1095
1096 ;; Most files are LGPLv2.1-only, but some are GPLv2-only (like
1097 ;; 'nl-addr-add.c'), so the result is GPLv2-only.
1098 (license gpl2)))
1099
1100 (define-public iw
1101 (package
1102 (name "iw")
1103 (version "3.17")
1104 (source (origin
1105 (method url-fetch)
1106 (uri (string-append
1107 "https://www.kernel.org/pub/software/network/iw/iw-"
1108 version ".tar.xz"))
1109 (sha256
1110 (base32
1111 "14zsapqhivk0ws5z21y1ys2c2czi05mzk7bl2yb7qxcfrnsjx9j8"))))
1112 (build-system gnu-build-system)
1113 (native-inputs `(("pkg-config" ,pkg-config)))
1114 (inputs `(("libnl" ,libnl)))
1115 (arguments
1116 `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1117 "CC=gcc")
1118 #:phases (alist-delete 'configure %standard-phases)))
1119 (home-page "http://wireless.kernel.org/en/users/Documentation/iw")
1120 (synopsis "Tool for configuring wireless devices")
1121 (description
1122 "iw is a new nl80211 based CLI configuration utility for wireless
1123 devices. It replaces 'iwconfig', which is deprecated.")
1124 (license isc)))
1125
1126 (define-public powertop
1127 (package
1128 (name "powertop")
1129 (version "2.5")
1130 (source
1131 (origin
1132 (method url-fetch)
1133 (uri (string-append
1134 "https://01.org/powertop/sites/default/files/downloads/powertop-"
1135 version ".tar.gz"))
1136 (sha256
1137 (base32
1138 "02rwqbpasdayl201v0549gbp2f82rd0hqiv3i111r7npanjhhb4b"))))
1139 (build-system gnu-build-system)
1140 (inputs
1141 ;; TODO: Add pciutils.
1142 `(("zlib" ,zlib)
1143 ;; ("pciutils" ,pciutils)
1144 ("ncurses" ,ncurses)
1145 ("libnl" ,libnl)))
1146 (native-inputs
1147 `(("pkg-config" ,pkg-config)))
1148 (home-page "https://01.org/powertop/")
1149 (synopsis "Analyze power consumption on Intel-based laptops")
1150 (description
1151 "PowerTOP is a Linux tool to diagnose issues with power consumption and
1152 power management. In addition to being a diagnostic tool, PowerTOP also has
1153 an interactive mode where the user can experiment various power management
1154 settings for cases where the operating system has not enabled these
1155 settings.")
1156 (license gpl2)))
1157
1158 (define-public aumix
1159 (package
1160 (name "aumix")
1161 (version "2.9.1")
1162 (source (origin
1163 (method url-fetch)
1164 (uri (string-append
1165 "http://www.jpj.net/~trevor/aumix/releases/aumix-"
1166 version ".tar.bz2"))
1167 (sha256
1168 (base32
1169 "0a8fwyxnc5qdxff8sl2sfsbnvgh6pkij4yafiln0fxgg6bal7knj"))))
1170 (build-system gnu-build-system)
1171 (inputs `(("ncurses" ,ncurses)))
1172 (home-page "http://www.jpj.net/~trevor/aumix.html")
1173 (synopsis "Audio mixer for X and the console")
1174 (description
1175 "Aumix adjusts an audio mixer from X, the console, a terminal,
1176 the command line or a script.")
1177 (license gpl2+)))
1178
1179 (define-public iotop
1180 (package
1181 (name "iotop")
1182 (version "0.6")
1183 (source
1184 (origin
1185 (method url-fetch)
1186 (uri (string-append "http://guichaz.free.fr/iotop/files/iotop-"
1187 version ".tar.gz"))
1188 (sha256 (base32
1189 "1kp8mqg2pbxq4xzpianypadfxcsyfgwcaqgqia6h9fsq6zyh4z0s"))))
1190 (build-system python-build-system)
1191 (arguments
1192 ;; The setup.py script expects python-2.
1193 `(#:python ,python-2
1194 ;; There are currently no checks in the package.
1195 #:tests? #f))
1196 (native-inputs `(("python" ,python-2)))
1197 (home-page "http://guichaz.free.fr/iotop/")
1198 (synopsis
1199 "Displays the IO activity of running processes")
1200 (description
1201 "Iotop is a Python program with a top like user interface to show the
1202 processes currently causing I/O.")
1203 (license gpl2+)))
1204
1205 (define-public fuse
1206 (package
1207 (name "fuse")
1208 (version "2.9.3")
1209 (source (origin
1210 (method url-fetch)
1211 (uri (string-append "mirror://sourceforge/fuse/fuse-"
1212 version ".tar.gz"))
1213 (sha256
1214 (base32
1215 "071r6xjgssy8vwdn6m28qq1bqxsd2bphcd2mzhq0grf5ybm87sqb"))
1216 (patches (list (search-patch "fuse-CVE-2015-3202.patch")))))
1217 (build-system gnu-build-system)
1218 (inputs `(("util-linux" ,util-linux)))
1219 (arguments
1220 '(#:configure-flags (list (string-append "MOUNT_FUSE_PATH="
1221 (assoc-ref %outputs "out")
1222 "/sbin")
1223 (string-append "INIT_D_PATH="
1224 (assoc-ref %outputs "out")
1225 "/etc/init.d")
1226
1227 ;; The rule makes /dev/fuse 666.
1228 (string-append "UDEV_RULES_PATH="
1229 (assoc-ref %outputs "out")
1230 "/lib/udev/rules.d"))
1231 #:phases (alist-cons-before
1232 'build 'set-file-names
1233 (lambda* (#:key inputs #:allow-other-keys)
1234 ;; libfuse calls out to mount(8) and umount(8). Make sure
1235 ;; it refers to the right ones.
1236 (substitute* '("lib/mount_util.c" "util/mount_util.c")
1237 (("/bin/(u?)mount" _ maybe-u)
1238 (string-append (assoc-ref inputs "util-linux")
1239 "/bin/" maybe-u "mount")))
1240 (substitute* '("util/mount.fuse.c")
1241 (("/bin/sh")
1242 (which "sh")))
1243
1244 ;; This hack leads libfuse to search for 'fusermount' in
1245 ;; $PATH, where it may find a setuid-root binary, instead of
1246 ;; trying solely $out/sbin/fusermount and failing because
1247 ;; it's not setuid.
1248 (substitute* "lib/Makefile"
1249 (("-DFUSERMOUNT_DIR=[[:graph:]]+")
1250 "-DFUSERMOUNT_DIR=\\\"/var/empty\\\"")))
1251 %standard-phases)))
1252 (home-page "http://fuse.sourceforge.net/")
1253 (synopsis "Support file systems implemented in user space")
1254 (description
1255 "As a consequence of its monolithic design, file system code for Linux
1256 normally goes into the kernel itself---which is not only a robustness issue,
1257 but also an impediment to system extensibility. FUSE, for \"file systems in
1258 user space\", is a kernel module and user-space library that tries to address
1259 part of this problem by allowing users to run file system implementations as
1260 user-space processes.")
1261 (license (list lgpl2.1 ; library
1262 gpl2+)))) ; command-line utilities
1263
1264 (define-public unionfs-fuse
1265 (package
1266 (name "unionfs-fuse")
1267 (version "0.26")
1268 (source (origin
1269 (method url-fetch)
1270 (uri (string-append
1271 "http://podgorny.cz/unionfs-fuse/releases/unionfs-fuse-"
1272 version ".tar.xz"))
1273 (sha256
1274 (base32
1275 "0qpnr4czgc62vsfnmv933w62nq3xwcbnvqch72qakfgca75rsp4d"))))
1276 (build-system cmake-build-system)
1277 (inputs `(("fuse" ,fuse)))
1278 (arguments '(#:tests? #f)) ; no tests
1279 (home-page "http://podgorny.cz/moin/UnionFsFuse")
1280 (synopsis "User-space union file system")
1281 (description
1282 "UnionFS-FUSE is a flexible union file system implementation in user
1283 space, using the FUSE library. Mounting a union file system allows you to
1284 \"aggregate\" the contents of several directories into a single mount point.
1285 UnionFS-FUSE additionally supports copy-on-write.")
1286 (license bsd-3)))
1287
1288 (define fuse-static
1289 (package (inherit fuse)
1290 (name "fuse-static")
1291 (source (origin (inherit (package-source fuse))
1292 (modules '((guix build utils)))
1293 (snippet
1294 ;; Normally libfuse invokes mount(8) so that /etc/mtab is
1295 ;; updated. Change calls to 'mtab_needs_update' to 0 so that
1296 ;; it doesn't do that, allowing us to remove the dependency on
1297 ;; util-linux (something that is useful in initrds.)
1298 '(substitute* '("lib/mount_util.c"
1299 "util/mount_util.c")
1300 (("mtab_needs_update[[:blank:]]*\\([a-z_]+\\)")
1301 "0")
1302 (("/bin/")
1303 "")))))))
1304
1305 (define-public unionfs-fuse/static
1306 (package (inherit unionfs-fuse)
1307 (synopsis "User-space union file system (statically linked)")
1308 (name (string-append (package-name unionfs-fuse) "-static"))
1309 (source (origin (inherit (package-source unionfs-fuse))
1310 (modules '((guix build utils)))
1311 (snippet
1312 ;; Add -ldl to the libraries, because libfuse.a needs that.
1313 '(substitute* "src/CMakeLists.txt"
1314 (("target_link_libraries(.*)\\)" _ libs)
1315 (string-append "target_link_libraries"
1316 libs " dl)"))))))
1317 (arguments
1318 '(#:tests? #f
1319 #:configure-flags '("-DCMAKE_EXE_LINKER_FLAGS=-static")
1320 #:phases (alist-cons-after
1321 'install 'post-install
1322 (lambda* (#:key outputs #:allow-other-keys)
1323 (let* ((out (assoc-ref outputs "out"))
1324 (exe (string-append out "/bin/unionfs")))
1325 ;; By default, 'unionfs' keeps references to
1326 ;; $glibc/share/locale and similar stuff. Remove them.
1327 (remove-store-references exe)))
1328 %standard-phases)))
1329 (inputs `(("fuse" ,fuse-static)))))
1330
1331 (define-public sshfs-fuse
1332 (package
1333 (name "sshfs-fuse")
1334 (version "2.5")
1335 (source (origin
1336 (method url-fetch)
1337 (uri (string-append "mirror://sourceforge/fuse/sshfs-fuse-"
1338 version ".tar.gz"))
1339 (sha256
1340 (base32
1341 "0gp6qr33l2p0964j0kds0dfmvyyf5lpgsn11daf0n5fhwm9185z9"))))
1342 (build-system gnu-build-system)
1343 (inputs
1344 `(("fuse" ,fuse)
1345 ("glib" ,glib)))
1346 (native-inputs
1347 `(("pkg-config" ,pkg-config)))
1348 (home-page "http://fuse.sourceforge.net/sshfs.html")
1349 (synopsis "Mount remote file systems over SSH")
1350 (description
1351 "This is a file system client based on the SSH File Transfer Protocol.
1352 Since most SSH servers already support this protocol it is very easy to set
1353 up: on the server side there's nothing to do; on the client side mounting the
1354 file system is as easy as logging into the server with an SSH client.")
1355 (license gpl2+)))
1356
1357 (define-public numactl
1358 (package
1359 (name "numactl")
1360 (version "2.0.9")
1361 (source (origin
1362 (method url-fetch)
1363 (uri (string-append
1364 "ftp://oss.sgi.com/www/projects/libnuma/download/numactl-"
1365 version
1366 ".tar.gz"))
1367 (sha256
1368 (base32
1369 "073myxlyyhgxh1w3r757ajixb7s2k69czc3r0g12c3scq7k3784w"))))
1370 (build-system gnu-build-system)
1371 (arguments
1372 '(#:phases (alist-replace
1373 'configure
1374 (lambda* (#:key outputs #:allow-other-keys)
1375 ;; There's no 'configure' script, just a raw makefile.
1376 (substitute* "Makefile"
1377 (("^prefix := .*$")
1378 (string-append "prefix := " (assoc-ref outputs "out")
1379 "\n"))
1380 (("^libdir := .*$")
1381 ;; By default the thing tries to install under
1382 ;; $prefix/lib64 when on a 64-bit platform.
1383 (string-append "libdir := $(prefix)/lib\n"))))
1384 %standard-phases)
1385
1386 #:make-flags (list
1387 ;; By default the thing tries to use 'cc'.
1388 "CC=gcc"
1389
1390 ;; Make sure programs have an RPATH so they can find
1391 ;; libnuma.so.
1392 (string-append "LDLIBS=-Wl,-rpath="
1393 (assoc-ref %outputs "out") "/lib"))
1394
1395 ;; There's a 'test' target, but it requires NUMA support in the kernel
1396 ;; to run, which we can't assume to have.
1397 #:tests? #f))
1398 (home-page "http://oss.sgi.com/projects/libnuma/")
1399 (synopsis "Tools for non-uniform memory access (NUMA) machines")
1400 (description
1401 "NUMA stands for Non-Uniform Memory Access, in other words a system whose
1402 memory is not all in one place. The numactl program allows you to run your
1403 application program on specific CPU's and memory nodes. It does this by
1404 supplying a NUMA memory policy to the operating system before running your
1405 program.
1406
1407 The package contains other commands, such as numademo, numastat and memhog.
1408 The numademo command provides a quick overview of NUMA performance on your
1409 system.")
1410 (license (list gpl2 ; programs
1411 lgpl2.1)))) ; library
1412
1413 (define-public kbd
1414 (package
1415 (name "kbd")
1416 (version "2.0.2")
1417 (source (origin
1418 (method url-fetch)
1419 (uri (string-append "mirror://kernel.org/linux/utils/kbd/kbd-"
1420 version ".tar.xz"))
1421 (sha256
1422 (base32
1423 "04mrms12nm5sas0nxs94yrr3hz7gmqhnmfgb9ff34bh1jszxmzcx"))
1424 (modules '((guix build utils)))
1425 (snippet
1426 '(begin
1427 (substitute* "tests/Makefile.in"
1428 ;; The '%: %.in' rule incorrectly uses @VERSION@.
1429 (("@VERSION@")
1430 "[@]VERSION[@]"))
1431 (substitute* '("src/unicode_start" "src/unicode_stop")
1432 ;; Assume the Coreutils are in $PATH.
1433 (("/usr/bin/tty")
1434 "tty"))))))
1435 (build-system gnu-build-system)
1436 (arguments
1437 '(#:phases (alist-cons-before
1438 'build 'pre-build
1439 (lambda* (#:key inputs #:allow-other-keys)
1440 (let ((gzip (assoc-ref %build-inputs "gzip"))
1441 (bzip2 (assoc-ref %build-inputs "bzip2")))
1442 (substitute* "src/libkeymap/findfile.c"
1443 (("gzip")
1444 (string-append gzip "/bin/gzip"))
1445 (("bzip2")
1446 (string-append bzip2 "/bin/bzip2")))))
1447 (alist-cons-after
1448 'install 'post-install
1449 (lambda* (#:key outputs #:allow-other-keys)
1450 ;; Make sure these programs find their comrades.
1451 (let* ((out (assoc-ref outputs "out"))
1452 (bin (string-append out "/bin")))
1453 (for-each (lambda (prog)
1454 (wrap-program (string-append bin "/" prog)
1455 `("PATH" ":" prefix (,bin))))
1456 '("unicode_start" "unicode_stop"))))
1457 %standard-phases))))
1458 (inputs `(("check" ,check)
1459 ("gzip" ,gzip)
1460 ("bzip2" ,bzip2)
1461 ("pam" ,linux-pam)))
1462 (native-inputs `(("pkg-config" ,pkg-config)))
1463 (home-page "ftp://ftp.kernel.org/pub/linux/utils/kbd/")
1464 (synopsis "Linux keyboard utilities and keyboard maps")
1465 (description
1466 "This package contains keytable files and keyboard utilities compatible
1467 for systems using the Linux kernel. This includes commands such as
1468 'loadkeys', 'setfont', 'kbdinfo', and 'chvt'.")
1469 (license gpl2+)))
1470
1471 (define-public inotify-tools
1472 (package
1473 (name "inotify-tools")
1474 (version "3.13")
1475 (source (origin
1476 (method url-fetch)
1477 (uri (string-append
1478 "mirror://sourceforge/inotify-tools/inotify-tools/"
1479 version "/inotify-tools-" version ".tar.gz"))
1480 (sha256
1481 (base32
1482 "0icl4bx041axd5dvhg89kilfkysjj86hjakc7bk8n49cxjn4cha6"))))
1483 (build-system gnu-build-system)
1484 (home-page "http://inotify-tools.sourceforge.net/")
1485 (synopsis "Monitor file accesses")
1486 (description
1487 "The inotify-tools packages provides a C library and command-line tools
1488 to use Linux' inotify mechanism, which allows file accesses to be monitored.")
1489 (license gpl2+)))
1490
1491 (define-public kmod
1492 (package
1493 (name "kmod")
1494 (version "17")
1495 (source (origin
1496 (method url-fetch)
1497 (uri
1498 (string-append "mirror://kernel.org/linux/utils/kernel/kmod/"
1499 "kmod-" version ".tar.xz"))
1500 (sha256
1501 (base32
1502 "1yid3a9b64a60ybj66fk2ysrq5klnl0ijl4g624cl16y8404g9rv"))
1503 (patches (list (search-patch "kmod-module-directory.patch")))))
1504 (build-system gnu-build-system)
1505 (native-inputs
1506 `(("pkg-config" ,pkg-config)))
1507 (inputs
1508 `(("xz" ,xz)
1509 ("zlib" ,zlib)))
1510 (arguments
1511 `(#:tests? #f ; FIXME: Investigate test failures
1512 #:configure-flags '("--with-xz" "--with-zlib")
1513 #:phases (alist-cons-after
1514 'install 'install-modprobe&co
1515 (lambda* (#:key outputs #:allow-other-keys)
1516 (let* ((out (assoc-ref outputs "out"))
1517 (bin (string-append out "/bin")))
1518 (for-each (lambda (tool)
1519 (symlink "kmod"
1520 (string-append bin "/" tool)))
1521 '("insmod" "rmmod" "lsmod" "modprobe"
1522 "modinfo" "depmod"))))
1523 %standard-phases)))
1524 (home-page "https://www.kernel.org/")
1525 (synopsis "Kernel module tools")
1526 (description "Kmod is a set of tools to handle common tasks with Linux
1527 kernel modules like insert, remove, list, check properties, resolve
1528 dependencies and aliases.
1529
1530 These tools are designed on top of libkmod, a library that is shipped with
1531 kmod. The aim is to be compatible with tools, configurations and indices
1532 from the module-init-tools project.")
1533 (license gpl2+))) ; library under lgpl2.1+
1534
1535 (define-public eudev
1536 ;; The post-systemd fork, maintained by Gentoo.
1537 (package
1538 (name "eudev")
1539 (version "2.1.1")
1540 (source (origin
1541 (method url-fetch)
1542 (uri (string-append
1543 "http://dev.gentoo.org/~blueness/eudev/eudev-"
1544 version ".tar.gz"))
1545 (sha256
1546 (base32
1547 "0shf5vqiz9fdxl95aa1a8vh0xjxwim3psc39wr2xr8lnahf11vva"))
1548 (patches (list (search-patch "eudev-rules-directory.patch")))
1549 (modules '((guix build utils)))
1550 (snippet
1551 ;; 'configure' checks uses <linux/btrfs.h> as an indication of
1552 ;; whether Linux headers are available, but it doesn't actually
1553 ;; use it, and our 'linux-libre-headers' package doesn't
1554 ;; provide it. So just remove that.
1555 '(substitute* "configure"
1556 (("linux/btrfs\\.h")
1557 "")))))
1558 (build-system gnu-build-system)
1559 (native-inputs
1560 `(("pkg-config" ,pkg-config)
1561 ("gperf" ,gperf)
1562 ("glib" ,glib "bin") ; glib-genmarshal, etc.
1563 ("perl" ,perl) ; for the tests
1564 ("python" ,python-2))) ; ditto
1565 (inputs
1566 `(("kmod" ,kmod)
1567 ("pciutils" ,pciutils)
1568 ("usbutils" ,usbutils)
1569 ("util-linux" ,util-linux)
1570 ("glib" ,glib)
1571 ("gobject-introspection" ,gobject-introspection)))
1572 (arguments
1573 `(#:configure-flags (list "--enable-libkmod"
1574
1575 (string-append
1576 "--with-pci-ids-path="
1577 (assoc-ref %build-inputs "pciutils")
1578 "/share/pci.ids.gz")
1579
1580 "--with-firmware-path=/no/firmware"
1581
1582 ;; Work around undefined reference to
1583 ;; 'mq_getattr' in sc-daemon.c.
1584 "LDFLAGS=-lrt")
1585 #:phases
1586 (alist-cons-before
1587 'build 'pre-build
1588 ;; The program 'g-ir-scanner' (part of the package
1589 ;; 'gobject-introspection'), to generate .gir files, makes some
1590 ;; library pre-processing. During that phase it looks for the C
1591 ;; compiler as either 'cc' or as defined by the environment variable
1592 ;; 'CC' (with code in 'giscanner/dumper.py').
1593 (lambda* _
1594 (setenv "CC" "gcc"))
1595 %standard-phases)))
1596 (home-page "http://www.gentoo.org/proj/en/eudev/")
1597 (synopsis "Userspace device management")
1598 (description "Udev is a daemon which dynamically creates and removes
1599 device nodes from /dev/, handles hotplug events and loads drivers at boot
1600 time.")
1601 (license gpl2+)))
1602
1603 (define-public lvm2
1604 (package
1605 (name "lvm2")
1606 (version "2.02.109")
1607 (source (origin
1608 (method url-fetch)
1609 (uri (string-append "ftp://sources.redhat.com/pub/lvm2/releases/LVM2."
1610 version ".tgz"))
1611 (sha256
1612 (base32
1613 "1rv5ivg0l1w3nwzwdkqixm96h5bzg7ib4rr196ysb2lw42jmpjbv"))
1614 (modules '((guix build utils)))
1615 (snippet
1616 '(begin
1617 (use-modules (guix build utils))
1618
1619 ;; Honor sysconfdir.
1620 (substitute* "make.tmpl.in"
1621 (("confdir = .*$")
1622 "confdir = @sysconfdir@\n")
1623 (("DEFAULT_SYS_DIR = @DEFAULT_SYS_DIR@")
1624 "DEFAULT_SYS_DIR = @sysconfdir@"))))))
1625 (build-system gnu-build-system)
1626 (native-inputs
1627 `(("pkg-config" ,pkg-config)
1628 ("procps" ,procps))) ;tests use 'pgrep'
1629 (inputs
1630 `(("udev" ,eudev)))
1631 (arguments
1632 '(#:phases (alist-cons-after
1633 'configure 'set-makefile-shell
1634 (lambda _
1635 ;; Use 'sh', not 'bash', so that '. lib/utils.sh' works as
1636 ;; expected.
1637 (setenv "SHELL" (which "sh"))
1638
1639 ;; Replace /bin/sh with the right file name.
1640 (patch-makefile-SHELL "make.tmpl"))
1641 %standard-phases)
1642
1643 #:configure-flags (list (string-append "--sysconfdir="
1644 (assoc-ref %outputs "out")
1645 "/etc/lvm")
1646 "--enable-udev_sync"
1647 "--enable-udev_rules"
1648
1649 ;; Make sure programs such as 'dmsetup' can
1650 ;; find libdevmapper.so.
1651 (string-append "LDFLAGS=-Wl,-rpath="
1652 (assoc-ref %outputs "out")
1653 "/lib"))
1654
1655 ;; The tests use 'mknod', which requires root access.
1656 #:tests? #f))
1657 (home-page "http://sourceware.org/lvm2/")
1658 (synopsis "Logical volume management for Linux")
1659 (description
1660 "LVM2 is the logical volume management tool set for Linux-based systems.
1661 This package includes the user-space libraries and tools, including the device
1662 mapper. Kernel components are part of Linux-libre.")
1663
1664 ;; Libraries (liblvm2, libdevmapper) are LGPLv2.1.
1665 ;; Command-line tools are GPLv2.
1666 (license (list gpl2 lgpl2.1))))
1667
1668 (define-public wireless-tools
1669 (package
1670 (name "wireless-tools")
1671 (version "30.pre9")
1672 (source (origin
1673 (method url-fetch)
1674 (uri (string-append "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools."
1675 version ".tar.gz"))
1676 (sha256
1677 (base32
1678 "0qscyd44jmhs4k32ggp107hlym1pcyjzihiai48xs7xzib4wbndb"))
1679 (modules '((guix build utils)))
1680 (snippet
1681 ;; Install the manual pages in the right place.
1682 '(substitute* "Makefile"
1683 (("INSTALL_MAN= .*")
1684 "INSTALL_MAN= $(PREFIX)/share/man")))))
1685 (build-system gnu-build-system)
1686 (arguments
1687 `(#:phases (alist-replace
1688 'configure
1689 (lambda* (#:key outputs #:allow-other-keys)
1690 (setenv "PREFIX" (assoc-ref outputs "out")))
1691 %standard-phases)
1692 #:tests? #f))
1693 (synopsis "Tools for manipulating Linux Wireless Extensions")
1694 (description "Wireless Tools are used to manipulate the now-deprecated
1695 Linux Wireless Extensions; consider using 'iw' instead. The Wireless
1696 Extension was an interface allowing you to set Wireless LAN specific
1697 parameters and get the specific stats. It is deprecated in favor the nl80211
1698 interface.")
1699 (home-page "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html")
1700 (license gpl2+)))
1701
1702 (define-public lm-sensors
1703 (package
1704 (name "lm-sensors")
1705 (version "3.3.5")
1706 (source (origin
1707 (method url-fetch)
1708 (uri (string-append
1709 "http://dl.lm-sensors.org/lm-sensors/releases/lm_sensors-"
1710 version ".tar.bz2"))
1711 (sha256
1712 (base32
1713 "1ksgrynxgrq590nb2fwxrl1gwzisjkqlyg3ljfd1al0ibrk6mbjx"))
1714 (patches (list (search-patch "lm-sensors-hwmon-attrs.patch")))))
1715 (build-system gnu-build-system)
1716 (inputs `(("rrdtool" ,rrdtool)
1717 ("perl" ,perl)
1718 ("kmod" ,kmod)
1719 ("gnuplot" ,gnuplot)))
1720 (native-inputs `(("pkg-config" ,pkg-config)
1721 ("flex" ,flex)
1722 ("bison" ,bison)
1723 ("which" ,which)))
1724 (arguments
1725 `(#:tests? #f ; no 'check' target
1726 #:make-flags (list (string-append "PREFIX=" %output)
1727 (string-append "ETCDIR=" %output "/etc")
1728 (string-append "MANDIR=" %output "/share/man"))
1729 #:phases
1730 (alist-delete
1731 'configure
1732 (alist-cons-before
1733 'build 'patch-exec-paths
1734 (lambda* (#:key inputs outputs #:allow-other-keys)
1735 (substitute* "prog/detect/sensors-detect"
1736 (("`uname")
1737 (string-append "`" (assoc-ref inputs "coreutils")
1738 "/bin/uname"))
1739 (("(`|\")modprobe" all open-quote)
1740 (string-append open-quote
1741 (assoc-ref inputs "kmod")
1742 "/bin/modprobe")))
1743 (substitute* '("prog/pwm/pwmconfig"
1744 "prog/pwm/fancontrol")
1745 (("gnuplot")
1746 (string-append (assoc-ref inputs "gnuplot")
1747 "/bin/gnuplot"))
1748 (("cat ")
1749 (string-append (assoc-ref inputs "coreutils")
1750 "/bin/cat "))
1751 (("egrep ")
1752 (string-append (assoc-ref inputs "grep")
1753 "/bin/egrep "))
1754 (("sed -e")
1755 (string-append (assoc-ref inputs "sed")
1756 "/bin/sed -e"))
1757 (("cut -d")
1758 (string-append (assoc-ref inputs "coreutils")
1759 "/bin/cut -d"))
1760 (("sleep ")
1761 (string-append (assoc-ref inputs "coreutils")
1762 "/bin/sleep "))
1763 (("readlink -f")
1764 (string-append (assoc-ref inputs "coreutils")
1765 "/bin/readlink -f"))))
1766 %standard-phases))))
1767 (home-page "http://www.lm-sensors.org/")
1768 (synopsis "Utilities to read temperature/voltage/fan sensors")
1769 (description
1770 "Lm-sensors is a hardware health monitoring package for Linux. It allows
1771 you to access information from temperature, voltage, and fan speed sensors.
1772 It works with most newer systems.")
1773 (license gpl2+)))
1774
1775 (define-public i2c-tools
1776 (package
1777 (name "i2c-tools")
1778 (version "3.1.1")
1779 (source (origin
1780 (method url-fetch)
1781 (uri (string-append
1782 "http://dl.lm-sensors.org/i2c-tools/releases/i2c-tools-"
1783 version ".tar.bz2"))
1784 (sha256
1785 (base32
1786 "000pvg995qy1b15ks59gd0klri55hb33kqpg5czy84hw1pbdgm0l"))))
1787 (build-system gnu-build-system)
1788 (arguments
1789 `(#:tests? #f ; no 'check' target
1790 #:make-flags (list (string-append "prefix=" %output)
1791 "CC=gcc")
1792 ;; no configure script
1793 #:phases (alist-delete 'configure %standard-phases)))
1794 (inputs
1795 `(("perl" ,perl)))
1796 (home-page "http://www.lm-sensors.org/wiki/I2CTools")
1797 (synopsis "I2C tools for Linux")
1798 (description
1799 "The i2c-tools package contains a heterogeneous set of I2C tools for
1800 Linux: a bus probing tool, a chip dumper, register-level SMBus access helpers,
1801 EEPROM decoding scripts, EEPROM programming tools, and a python module for
1802 SMBus access.")
1803 (license gpl2+)))
1804
1805 (define-public xsensors
1806 (package
1807 (name "xsensors")
1808 (version "0.70")
1809 (source (origin
1810 (method url-fetch)
1811 (uri (string-append
1812 "http://www.linuxhardware.org/xsensors/xsensors-"
1813 version ".tar.gz"))
1814 (sha256
1815 (base32
1816 "1siplsfgvcxamyqf44h71jx6jdfmvhfm7mh0y1q8ps4zs6pj2zwh"))))
1817 (build-system gnu-build-system)
1818 (inputs `(("lm-sensors" ,lm-sensors)
1819 ("gtk" ,gtk+-2)))
1820 (native-inputs `(("pkg-config" ,pkg-config)))
1821 (arguments
1822 `(#:phases (alist-cons-before
1823 'configure 'enable-deprecated
1824 (lambda _
1825 (substitute* "src/Makefile.in"
1826 (("-DGDK_DISABLE_DEPRECATED") "")
1827 (("-DGTK_DISABLE_DEPRECATED") "")))
1828 (alist-cons-before
1829 'configure 'remove-Werror
1830 (lambda _
1831 (substitute* '("configure" "src/Makefile.in")
1832 (("-Werror") "")))
1833 %standard-phases))))
1834 (home-page "http://www.linuxhardware.org/xsensors/")
1835 (synopsis "Hardware health information viewer")
1836 (description
1837 "Xsensors reads data from the libsensors library regarding hardware
1838 health such as temperature, voltage and fan speed and displays the information
1839 in a digital read-out.")
1840 (license gpl2+)))
1841
1842 (define-public perf
1843 (package
1844 (name "perf")
1845 (version (package-version linux-libre))
1846 (source (package-source linux-libre))
1847 (build-system gnu-build-system)
1848 (arguments
1849 '(#:phases (alist-replace
1850 'configure
1851 (lambda* (#:key inputs #:allow-other-keys)
1852 (setenv "SHELL_PATH" (which "bash"))
1853 (chdir "tools/perf"))
1854 %standard-phases)
1855 #:make-flags (list (string-append "DESTDIR="
1856 (assoc-ref %outputs "out"))
1857 "WERROR=0"
1858
1859 ;; By default, 'config/Makefile' uses lib64 on
1860 ;; x86_64. Work around that.
1861 "lib=lib")
1862 #:tests? #f)) ;no tests
1863 (native-inputs
1864 `(("pkg-config" ,pkg-config)
1865 ("bison" ,bison)
1866 ("flex" ,flex)
1867
1868 ;; There are build scripts written in these languages.
1869 ("perl" ,perl)
1870 ("python" ,python-2)))
1871 (inputs
1872 `(("slang" ,slang) ;for the interactive TUI
1873 ;; ("newt" ,newt)
1874 ("python" ,python-2) ;'perf' links against libpython
1875 ("elfutils" ,elfutils)
1876
1877 ;; Documentation.
1878 ("libxml2" ,libxml2) ;for $XML_CATALOG_FILES
1879 ("libxslt" ,libxslt)
1880 ("docbook-xml" ,docbook-xml)
1881 ("docbook-xsl" ,docbook-xsl)
1882 ("xmlto" ,xmlto)
1883 ("asciidoc" ,asciidoc)))
1884 (home-page "https://perf.wiki.kernel.org/")
1885 (synopsis "Linux profiling with performance counters")
1886 (description
1887 "perf is a tool suite for profiling using hardware performance counters,
1888 with support in the Linux kernel. perf can instrument CPU performance
1889 counters, tracepoints, kprobes, and uprobes (dynamic tracing). It is capable
1890 of lightweight profiling. This package contains the user-land tools and in
1891 particular the 'perf' command.")
1892 (license (package-license linux-libre))))
1893
1894 (define-public pflask
1895 (package
1896 (name "pflask")
1897 (version "0.2")
1898 (source (origin
1899 (method url-fetch)
1900 (uri (string-append "https://github.com/ghedo/pflask/archive/v"
1901 version ".tar.gz"))
1902 (file-name (string-append name "-" version ".tar.gz"))
1903 (sha256
1904 (base32
1905 "1g8fjj67dfkc2s0852l9vqi1pm61gp4rxbpzbzg780f5s5hd1fys"))))
1906 (build-system cmake-build-system)
1907 (arguments
1908 '(#:tests? #f)) ; no tests
1909 (home-page "http://ghedo.github.io/pflask/")
1910 (synopsis "Simple tool for creating Linux namespace containers")
1911 (description "pflask is a simple tool for creating Linux namespace
1912 containers. It can be used for running a command or even booting an OS inside
1913 an isolated container, created with the help of Linux namespaces. It is
1914 similar in functionality to chroot, although pflask provides better isolation
1915 thanks to the use of namespaces.")
1916 (license bsd-2)))
1917
1918 (define-public hdparm
1919 (package
1920 (name "hdparm")
1921 (version "9.45")
1922 (source (origin
1923 (method url-fetch)
1924 (uri (string-append "mirror://sourceforge/" name "/"
1925 name "-" version ".tar.gz"))
1926 (sha256
1927 (base32
1928 "0sc6yf3k6sd7n6a2ig2my9fjlqpak3znlyw7jw4cz5d9asm1rc13"))))
1929 (build-system gnu-build-system)
1930 (arguments
1931 `(#:make-flags (let ((out (assoc-ref %outputs "out")))
1932 (list (string-append "binprefix=" out)
1933 (string-append "manprefix=" out)
1934 "CC=gcc"))
1935 #:phases (alist-delete 'configure %standard-phases)
1936 #:tests? #f)) ; no test suite
1937 (home-page "http://sourceforge.net/projects/hdparm/")
1938 (synopsis "tune hard disk parameters for high performance")
1939 (description
1940 "Get/set device parameters for Linux SATA/IDE drives. It's primary use
1941 is for enabling irq-unmasking and IDE multiplemode.")
1942 (license (non-copyleft "file://LICENSE.TXT"))))
1943
1944 (define-public acpid
1945 (package
1946 (name "acpid")
1947 (version "2.0.23")
1948 (source (origin
1949 (method url-fetch)
1950 (uri (string-append "mirror://sourceforge/acpid2/acpid-"
1951 version ".tar.xz"))
1952 (sha256
1953 (base32
1954 "1vl7c6vc724v4jwki17czgj6lnrknnj1a6llm8gkl32i2gnam5j3"))))
1955 (build-system gnu-build-system)
1956 (home-page "http://sourceforge.net/projects/acpid2/")
1957 (synopsis "Daemon for delivering ACPI events to user-space programs")
1958 (description
1959 "acpid is designed to notify user-space programs of Advanced
1960 Configuration and Power Interface (ACPI) events. acpid should be started
1961 during the system boot, and will run as a background process. When an ACPI
1962 event is received from the kernel, acpid will examine the list of rules
1963 specified in /etc/acpi/events and execute the rules that match the event.")
1964 (license gpl2+)))
1965
1966 (define-public sysfsutils
1967 (package
1968 (name "sysfsutils")
1969 (version "2.1.0")
1970 (source
1971 (origin
1972 (method url-fetch)
1973 (uri
1974 (string-append
1975 "mirror://sourceforge/linux-diag/sysfsutils/" version "/sysfsutils-"
1976 version ".tar.gz"))
1977 (sha256
1978 (base32 "12i0ip11xbfcjzxz4r10cvz7mbzgq1hfcdn97w6zz7sm3wndwrg8"))))
1979 (build-system gnu-build-system)
1980 (home-page "http://linux-diag.sourceforge.net/Sysfsutils.html")
1981 (synopsis "System utilities based on Linux sysfs")
1982 (description
1983 "These are a set of utilites built upon sysfs, a virtual filesystem in
1984 Linux kernel versions 2.5+ that exposes a system's device tree. The package
1985 also contains the libsysfs library.")
1986 ;; The library is under lgpl2.1+ (all files say "or any later version").
1987 ;; The rest is mostly gpl2, with a few files indicating gpl2+.
1988 (license (list gpl2 gpl2+ lgpl2.1+))))
1989
1990 (define-public sysfsutils-1
1991 (package
1992 (inherit sysfsutils)
1993 (version "1.3.0")
1994 (source
1995 (origin
1996 (method url-fetch)
1997 (uri
1998 (string-append
1999 "mirror://sourceforge/linux-diag/sysfsutils/sysfsutils-" version
2000 "/sysfsutils-" version ".tar.gz"))
2001 (sha256
2002 (base32 "0kdhs07fm8263pxwd5blwn2x211cg4fk63fyf9ijcdkvzmwxrqq3"))
2003 (modules '((guix build utils)))
2004 (snippet
2005 '(begin
2006 (substitute* "Makefile.in"
2007 (("includedir = /usr/include/sysfs")
2008 "includedir = @includedir@"))
2009 (substitute* "configure"
2010 (("includedir='(\\$\\{prefix\\}/include)'" all orig)
2011 (string-append "includedir='" orig "/sysfs'")))))))
2012 ;; XXX sysfsutils-1.3.0's config.guess fails on mips64el
2013 (arguments `(#:configure-flags
2014 '(,@(if (%current-target-system)
2015 '()
2016 (let ((triplet
2017 (nix-system->gnu-triplet (%current-system))))
2018 (list (string-append "--build=" triplet)))))))
2019 (synopsis "System utilities based on Linux sysfs (version 1.x)")))
2020
2021 (define-public cpufrequtils
2022 (package
2023 (name "cpufrequtils")
2024 (version "0.3")
2025 (source
2026 (origin
2027 (method url-fetch)
2028 (uri
2029 (string-append
2030 "https://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufrequtils-"
2031 version ".tar.gz"))
2032 (sha256
2033 (base32 "0qfqv7nqmjfr3p0bwrdlxkiqwqr7vmx053cadaa548ybqbghxmvm"))
2034 (patches (list (search-patch "cpufrequtils-fix-aclocal.patch")))))
2035 (build-system gnu-build-system)
2036 (native-inputs
2037 `(("sysfsutils" ,sysfsutils-1)))
2038 (arguments
2039 '(#:make-flags (list (string-append "LDFLAGS=-Wl,-rpath="
2040 (assoc-ref %outputs "out") "/lib"))))
2041 (home-page "https://www.kernel.org/pub/linux/utils/kernel/cpufreq/")
2042 (synopsis "Utilities to get and set CPU frequency on Linux")
2043 (description
2044 "The cpufrequtils suite contains utilities to retreive CPU frequency
2045 information, and set the CPU frequency if supported, using the cpufreq
2046 capabilities of the Linux kernel.")
2047 (license gpl2)))
2048
2049 (define-public libraw1394
2050 (package
2051 (name "libraw1394")
2052 (version "2.1.0")
2053 (source (origin
2054 (method url-fetch)
2055 (uri (string-append
2056 "mirror://kernel.org/linux/libs/ieee1394/"
2057 name "-" version ".tar.xz"))
2058 (sha256
2059 (base32
2060 "0kwnf4ha45c04mhc4yla672aqmvqqihxix1gvblns5cd2pc2cc8b"))))
2061 (build-system gnu-build-system)
2062 (home-page "https://ieee1394.wiki.kernel.org/index.php/Main_Page")
2063 (synopsis "Interface library for the Linux IEEE1394 drivers")
2064 (description
2065 "Libraw1394 is the only supported interface to the kernel side raw1394 of
2066 the Linux IEEE-1394 subsystem, which provides direct access to the connected
2067 1394 buses to user space. Through libraw1394/raw1394, applications can directly
2068 send to and receive from other nodes without requiring a kernel driver for the
2069 protocol in question.")
2070 (license lgpl2.1+)))
2071
2072 (define-public libavc1394
2073 (package
2074 (name "libavc1394")
2075 (version "0.5.4")
2076 (source (origin
2077 (method url-fetch)
2078 (uri (string-append "mirror://sourceforge/libavc1394/"
2079 name "-" version ".tar.gz"))
2080 (sha256
2081 (base32
2082 "0lsv46jdqvdx5hx92v0z2cz3yh6212pz9gk0k3513sbaa04zzcbw"))))
2083 (build-system gnu-build-system)
2084 (native-inputs
2085 `(("pkg-config" ,pkg-config)))
2086 (propagated-inputs
2087 `(("libraw1394" ,libraw1394))) ; required by libavc1394.pc
2088 (home-page "http://sourceforge.net/projects/libavc1394/")
2089 (synopsis "AV/C protocol library for IEEE 1394")
2090 (description
2091 "Libavc1394 is a programming interface to the AV/C specification from
2092 the 1394 Trade Assocation. AV/C stands for Audio/Video Control.")
2093 (license lgpl2.1+)))
2094
2095 (define-public libiec61883
2096 (package
2097 (name "libiec61883")
2098 (version "1.2.0")
2099 (source (origin
2100 (method url-fetch)
2101 (uri (string-append
2102 "mirror://kernel.org/linux/libs/ieee1394/"
2103 name "-" version ".tar.xz"))
2104 (sha256
2105 (base32
2106 "17ph458zya2l8dr2xwqnzy195qd9swrir31g78qkgb3g4xz2rq6i"))))
2107 (build-system gnu-build-system)
2108 (native-inputs
2109 `(("pkg-config" ,pkg-config)))
2110 (propagated-inputs
2111 `(("libraw1394" ,libraw1394))) ; required by libiec61883.pc
2112 (home-page "https://ieee1394.wiki.kernel.org/index.php/Main_Page")
2113 (synopsis "Isochronous streaming media library for IEEE 1394")
2114 (description
2115 "The libiec61883 library provides a higher level API for streaming DV,
2116 MPEG-2 and audio over Linux IEEE 1394.")
2117 (license lgpl2.1+)))
2118
2119 (define-public mdadm
2120 (package
2121 (name "mdadm")
2122 (version "3.3.2")
2123 (source (origin
2124 (method url-fetch)
2125 (uri (string-append
2126 "mirror://kernel.org/linux/utils/raid/mdadm/mdadm-"
2127 version ".tar.xz"))
2128 (sha256
2129 (base32
2130 "132vdvh3myjgcjn6i9w90ck16ddjxjcszklzkyvr4f5ifqd7wfhg"))))
2131 (build-system gnu-build-system)
2132 (inputs
2133 `(("udev" ,eudev)))
2134 (arguments
2135 `(#:make-flags (let ((out (assoc-ref %outputs "out")))
2136 (list "INSTALL=install"
2137 "CHECK_RUN_DIR=0"
2138 ;; TODO: tell it where to find 'sendmail'
2139 ;; (string-append "MAILCMD=" <???> "/sbin/sendmail")
2140 (string-append "BINDIR=" out "/sbin")
2141 (string-append "MANDIR=" out "/share/man")
2142 (string-append "UDEVDIR=" out "/lib/udev")))
2143 #:phases (alist-cons-before
2144 'build 'patch-program-paths
2145 (lambda* (#:key inputs #:allow-other-keys)
2146 (let ((coreutils (assoc-ref inputs "coreutils")))
2147 (substitute* "udev-md-raid-arrays.rules"
2148 (("/usr/bin/(readlink|basename)" all program)
2149 (string-append coreutils "/bin/" program)))))
2150 (alist-delete 'configure %standard-phases))
2151 ;;tests must be done as root
2152 #:tests? #f))
2153 (home-page "http://neil.brown.name/blog/mdadm")
2154 (synopsis "Tool for managing Linux Software RAID arrays")
2155 (description
2156 "mdadm is a tool for managing Linux Software RAID arrays. It can create,
2157 assemble, report on, and monitor arrays. It can also move spares between raid
2158 arrays when needed.")
2159 (license gpl2+)))
2160
2161 (define-public libaio
2162 (package
2163 (name "libaio")
2164 (version "0.3.110")
2165 (source (origin
2166 (method url-fetch)
2167 (uri (list
2168 (string-append "mirror://debian/pool/main/liba/libaio/"
2169 name "_" version ".orig.tar.gz")
2170 (string-append "https://fedorahosted.org/releases/l/i/libaio/"
2171 name "-" version ".tar.gz")))
2172 (sha256
2173 (base32
2174 "0zjzfkwd1kdvq6zpawhzisv7qbq1ffs343i5fs9p498pcf7046g0"))))
2175 (build-system gnu-build-system)
2176 (arguments
2177 '(#:make-flags
2178 (list "CC=gcc" (string-append "prefix=" %output))
2179 #:test-target "partcheck" ; need root for a full 'check'
2180 #:phases
2181 (alist-delete 'configure %standard-phases))) ; no configure script
2182 (home-page "http://lse.sourceforge.net/io/aio.html")
2183 (synopsis "Linux-native asynchronous I/O access library")
2184 (description
2185 "This library enables userspace to use Linux kernel asynchronous I/O
2186 system calls, important for the performance of databases and other advanced
2187 applications.")
2188 (license lgpl2.1+)))
2189
2190 (define-public bluez
2191 (package
2192 (name "bluez")
2193 (version "5.30")
2194 (source (origin
2195 (method url-fetch)
2196 (uri (string-append
2197 "https://www.kernel.org/pub/linux/bluetooth/bluez-"
2198 version ".tar.xz"))
2199 (sha256
2200 (base32
2201 "0b1qbnq1xzcdw5rajg9yyg31bf21jnff0n6gnf1snz89bbdllfhy"))))
2202 (build-system gnu-build-system)
2203 (arguments
2204 '(#:configure-flags
2205 (let ((out (assoc-ref %outputs "out")))
2206 (list "--disable-systemd"
2207 ;; Install dbus/udev files to the correct location.
2208 (string-append "--with-dbusconfdir=" out "/etc")
2209 (string-append "--with-udevdir=" out "/lib/udev")))))
2210 (native-inputs
2211 `(("pkg-config" ,pkg-config)
2212 ("gettext" ,gnu-gettext)))
2213 (inputs
2214 `(("glib" ,glib)
2215 ("dbus" ,dbus)
2216 ("eudev" ,eudev)
2217 ("libical" ,libical)
2218 ("readline" ,readline)))
2219 (home-page "http://www.bluez.org/")
2220 (synopsis "Linux Bluetooth protocol stack")
2221 (description
2222 "BlueZ provides support for the core Bluetooth layers and protocols. It
2223 is flexible, efficient and uses a modular implementation.")
2224 (license gpl2+)))