gnu: kbd: Use 'modify-phases'.
[jackhill/guix/guix.git] / gnu / packages / linux.scm
CommitLineData
233e7676 1;;; GNU Guix --- Functional package management for GNU
400ed6ac 2;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
35dfcdd7 3;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
233e7676 4;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
beed3af5 5;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
31aa4379 6;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
e1e27737 7;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
ebf89f13 8;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
1348185a 9;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
fc686f9a 10;;; Copyright © 2016 Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com>
b53e44fb 11;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
96e9f097 12;;; Copyright © 2016 Raymond Nicholson <rain1@openmailbox.org>
fd76c904 13;;;
233e7676 14;;; This file is part of GNU Guix.
fd76c904 15;;;
233e7676 16;;; GNU Guix is free software; you can redistribute it and/or modify it
fd76c904
LC
17;;; under the terms of the GNU General Public License as published by
18;;; the Free Software Foundation; either version 3 of the License, or (at
19;;; your option) any later version.
20;;;
233e7676 21;;; GNU Guix is distributed in the hope that it will be useful, but
fd76c904
LC
22;;; WITHOUT ANY WARRANTY; without even the implied warranty of
23;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24;;; GNU General Public License for more details.
25;;;
26;;; You should have received a copy of the GNU General Public License
233e7676 27;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
fd76c904 28
1ffa7090 29(define-module (gnu packages linux)
3ac73271 30 #:use-module ((guix licenses) #:prefix license:)
59a43334 31 #:use-module (gnu packages)
f61e0e79 32 #:use-module (gnu packages compression)
3b027388 33 #:use-module (gnu packages gcc)
1ffa7090 34 #:use-module (gnu packages flex)
90a0048f 35 #:use-module (gnu packages bison)
9f533d60 36 #:use-module (gnu packages admin)
d7d42d6b 37 #:use-module (gnu packages gperf)
1ffa7090
LC
38 #:use-module (gnu packages libusb)
39 #:use-module (gnu packages ncurses)
d7d42d6b 40 #:use-module (gnu packages pciutils)
5f96f303 41 #:use-module (gnu packages databases)
1ffa7090
LC
42 #:use-module (gnu packages perl)
43 #:use-module (gnu packages pkg-config)
7c0dbe78 44 #:use-module (gnu packages python)
b1fb4b23 45 #:use-module (gnu packages slang)
e7b38500 46 #:use-module (gnu packages algebra)
1dba6407 47 #:use-module (gnu packages gettext)
db288efa 48 #:use-module (gnu packages glib)
17b293a0 49 #:use-module (gnu packages pulseaudio)
c762e82e 50 #:use-module (gnu packages attr)
17b293a0 51 #:use-module (gnu packages xml)
215b6431 52 #:use-module (gnu packages autotools)
f57d2639 53 #:use-module (gnu packages texinfo)
b10e9ff6 54 #:use-module (gnu packages check)
30016044 55 #:use-module (gnu packages maths)
ce0614dd 56 #:use-module (gnu packages base)
30016044 57 #:use-module (gnu packages rrdtool)
b62fe07f 58 #:use-module (gnu packages elf)
b087d413 59 #:use-module (gnu packages gtk)
d7ece67a
LC
60 #:use-module (gnu packages docbook)
61 #:use-module (gnu packages asciidoc)
eb7c43c3
DT
62 #:use-module (gnu packages readline)
63 #:use-module (gnu packages calendar)
75343704 64 #:use-module (gnu packages tls)
02b80c3f
NK
65 #:use-module (guix packages)
66 #:use-module (guix download)
dc2d59af 67 #:use-module (guix utils)
7c0dbe78 68 #:use-module (guix build-system gnu)
220193ad 69 #:use-module (guix build-system cmake)
e102f940 70 #:use-module (guix build-system python)
a94546ec 71 #:use-module (guix build-system trivial)
adddd5ba 72 #:use-module (srfi srfi-1)
17db0706 73 #:use-module (srfi srfi-2)
a94546ec
LC
74 #:use-module (srfi srfi-26)
75 #:use-module (ice-9 match))
fd76c904 76
aaf4cb20
LC
77(define-public (system->linux-architecture arch)
78 "Return the Linux architecture name for ARCH, a Guix system name such as
79\"x86_64-linux\"."
618cea69
NK
80 (let ((arch (car (string-split arch #\-))))
81 (cond ((string=? arch "i686") "i386")
82 ((string-prefix? "mips" arch) "mips")
aaf4cb20 83 ((string-prefix? "arm" arch) "arm")
503275e9 84 ((string-prefix? "aarch64" arch) "arm64")
618cea69
NK
85 (else arch))))
86
6023cc74
LC
87(define (linux-libre-urls version)
88 "Return a list of URLs for Linux-Libre VERSION."
89 (list (string-append
90 "http://linux-libre.fsfla.org/pub/linux-libre/releases/"
91 version "-gnu/linux-libre-" version "-gnu.tar.xz")
92
93 ;; XXX: Work around <http://bugs.gnu.org/14851>.
94 (string-append
95 "ftp://alpha.gnu.org/gnu/guix/mirror/linux-libre-"
96 version "-gnu.tar.xz")
97
98 ;; Maybe this URL will become valid eventually.
99 (string-append
100 "mirror://gnu/linux-libre/" version "-gnu/linux-libre-"
101 version "-gnu.tar.xz")))
102
80fe5c60 103(define-public linux-libre-headers
e081385a 104 (let* ((version "3.14.37")
80fe5c60 105 (build-phase
618cea69
NK
106 (lambda (arch)
107 `(lambda _
108 (setenv "ARCH" ,(system->linux-architecture arch))
109 (format #t "`ARCH' set to `~a'~%" (getenv "ARCH"))
45298f8f 110
618cea69
NK
111 (and (zero? (system* "make" "defconfig"))
112 (zero? (system* "make" "mrproper" "headers_check"))))))
80fe5c60
LC
113 (install-phase
114 `(lambda* (#:key outputs #:allow-other-keys)
115 (let ((out (assoc-ref outputs "out")))
116 (and (zero? (system* "make"
117 (string-append "INSTALL_HDR_PATH=" out)
118 "headers_install"))
b15389e1
LC
119 (begin
120 (mkdir (string-append out "/include/config"))
121 (call-with-output-file
122 (string-append out
123 "/include/config/kernel.release")
124 (lambda (p)
125 (format p "~a-default~%" ,version)))
126
127 ;; Remove the '.install' and '..install.cmd' files; the
128 ;; latter contains store paths, which pulls in bootstrap
129 ;; binaries in the build environment, and prevents bit
130 ;; reproducibility for the bootstrap binaries.
131 (for-each delete-file (find-files out "\\.install"))
132
133 #t))))))
80fe5c60
LC
134 (package
135 (name "linux-libre-headers")
dfb52abb 136 (version version)
80fe5c60
LC
137 (source (origin
138 (method url-fetch)
6023cc74 139 (uri (linux-libre-urls version))
80fe5c60
LC
140 (sha256
141 (base32
e081385a 142 "1blxr2bsvfqi9khj4cpspv434bmx252zak2wsbi2mgl60zh77gza"))))
80fe5c60
LC
143 (build-system gnu-build-system)
144 (native-inputs `(("perl" ,perl)))
145 (arguments
146 `(#:modules ((guix build gnu-build-system)
147 (guix build utils)
56c092ce 148 (srfi srfi-1))
80fe5c60 149 #:phases (alist-replace
fb6c2fa8
LC
150 'build ,(build-phase (or (%current-target-system)
151 (%current-system)))
80fe5c60
LC
152 (alist-replace
153 'install ,install-phase
56c092ce 154 (alist-delete 'configure %standard-phases)))
b15389e1 155 #:allowed-references ()
80fe5c60
LC
156 #:tests? #f))
157 (synopsis "GNU Linux-Libre kernel headers")
158 (description "Headers of the Linux-Libre kernel.")
3ac73271 159 (license license:gpl2)
80fe5c60
LC
160 (home-page "http://www.gnu.org/software/linux-libre/"))))
161
b4fcb735
LC
162(define-public module-init-tools
163 (package
164 (name "module-init-tools")
165 (version "3.16")
166 (source (origin
167 (method url-fetch)
168 (uri (string-append
169 "mirror://kernel.org/linux/utils/kernel/module-init-tools/module-init-tools-"
170 version ".tar.bz2"))
171 (sha256
172 (base32
d3bbe992 173 "0jxnz9ahfic79rp93l5wxcbgh4pkv85mwnjlbv1gz3jawv5cvwp1"))
fc1adab1 174 (patches (search-patches "module-init-tools-moduledir.patch"))))
b4fcb735 175 (build-system gnu-build-system)
b4fcb735 176 (arguments
5c413a9c
LC
177 ;; FIXME: The upstream tarball lacks man pages, and building them would
178 ;; require DocBook & co. We used to use Gentoo's pre-built man pages,
179 ;; but they vanished. In the meantime, fake it.
b4fcb735 180 '(#:phases (alist-cons-before
5c413a9c
LC
181 'configure 'fake-docbook
182 (lambda _
183 (substitute* "Makefile.in"
184 (("^DOCBOOKTOMAN.*$")
185 "DOCBOOKTOMAN = true\n")))
b4fcb735
LC
186 %standard-phases)))
187 (home-page "http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/")
188 (synopsis "Tools for loading and managing Linux kernel modules")
189 (description
190 "Tools for loading and managing Linux kernel modules, such as `modprobe',
191`insmod', `lsmod', and more.")
3ac73271 192 (license license:gpl2+)))
b4fcb735 193
ac47a7c2
LC
194(define %boot-logo-patch
195 ;; Linux-Libre boot logo featuring Freedo and a gnu.
196 (origin
197 (method url-fetch)
198 (uri (string-append "http://www.fsfla.org/svn/fsfla/software/linux-libre/"
74dde9e9 199 "lemote/gnewsense/branches/3.16/100gnu+freedo.patch"))
ac47a7c2
LC
200 (sha256
201 (base32
202 "1hk9swxxc80bmn2zd2qr5ccrjrk28xkypwhl4z0qx4hbivj7qm06"))))
203
17db0706 204(define* (kernel-config system #:key variant)
a94546ec 205 "Return the absolute file name of the Linux-Libre build configuration file
17db0706
MW
206for SYSTEM and optionally VARIANT, or #f if there is no such configuration."
207 (and-let* ((arch (match system
208 ("i686-linux"
209 "i686")
210 ("x86_64-linux"
211 "x86_64")
212 (_
213 #f)))
214 (name (string-append "linux-libre-"
215 (if variant
216 (string-append variant "-")
217 "")
218 arch
219 ".conf"))
220 (file (string-append "gnu/packages/" name)))
221 (search-path %load-path file)))
a94546ec 222
beacfcab 223(define-public linux-libre
f7cfd80f 224 (let* ((version "4.5.1")
beacfcab 225 (build-phase
ac47a7c2 226 '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
96e9f097
RN
227 ;; Avoid introducing timestamps
228 (setenv "KCONFIG_NOTIMESTAMP" "1")
229 (setenv "KBUILD_BUILD_TIMESTAMP" (getenv "SOURCE_DATE_EPOCH"))
230
ac47a7c2 231 ;; Apply the neat patch.
9a224ac2 232 (system* "patch" "-p1" "--force"
ac47a7c2
LC
233 "-i" (assoc-ref inputs "patch/freedo+gnu"))
234
beacfcab
LC
235 (let ((arch (car (string-split system #\-))))
236 (setenv "ARCH"
237 (cond ((string=? arch "i686") "i386")
726029b2 238 ((string=? arch "mips64el") "mips")
beacfcab
LC
239 (else arch)))
240 (format #t "`ARCH' set to `~a'~%" (getenv "ARCH")))
241
a94546ec
LC
242 (let ((build (assoc-ref %standard-phases 'build))
243 (config (assoc-ref inputs "kconfig")))
1650dd8a
LC
244
245 ;; Use the architecture-specific config if available, and
246 ;; 'defconfig' otherwise.
247 (if config
248 (begin
249 (copy-file config ".config")
250 (chmod ".config" #o666))
251 (system* "make" "defconfig"))
a94546ec
LC
252
253 ;; Appending works even when the option wasn't in the
254 ;; file. The last one prevails if duplicated.
255 (let ((port (open-file ".config" "a")))
256 (display (string-append "CONFIG_NET_9P=m\n"
257 "CONFIG_NET_9P_VIRTIO=m\n"
258 "CONFIG_VIRTIO_BLK=m\n"
259 "CONFIG_VIRTIO_NET=m\n"
260 ;; https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00039.html
261 "CONFIG_DEVPTS_MULTIPLE_INSTANCES=y\n"
262 "CONFIG_VIRTIO_PCI=m\n"
263 "CONFIG_VIRTIO_BALLOON=m\n"
264 "CONFIG_VIRTIO_MMIO=m\n"
265 "CONFIG_FUSE_FS=m\n"
266 "CONFIG_CIFS=m\n"
267 "CONFIG_9P_FS=m\n")
268 port)
269 (close-port port))
270
271 (zero? (system* "make" "oldconfig"))
272
273 ;; Call the default `build' phase so `-j' is correctly
274 ;; passed.
275 (apply build #:make-flags "all" args))))
beacfcab
LC
276 (install-phase
277 `(lambda* (#:key inputs outputs #:allow-other-keys)
278 (let* ((out (assoc-ref outputs "out"))
279 (moddir (string-append out "/lib/modules"))
280 (mit (assoc-ref inputs "module-init-tools")))
281 (mkdir-p moddir)
282 (for-each (lambda (file)
283 (copy-file file
284 (string-append out "/" (basename file))))
44a88ce4 285 (find-files "." "^(bzImage|vmlinuz|System\\.map)$"))
beacfcab
LC
286 (copy-file ".config" (string-append out "/config"))
287 (zero? (system* "make"
288 (string-append "DEPMOD=" mit "/sbin/depmod")
289 (string-append "MODULE_DIR=" moddir)
290 (string-append "INSTALL_PATH=" out)
291 (string-append "INSTALL_MOD_PATH=" out)
cda3d81e 292 "INSTALL_MOD_STRIP=1"
beacfcab
LC
293 "modules_install"))))))
294 (package
295 (name "linux-libre")
dfb52abb 296 (version version)
beacfcab
LC
297 (source (origin
298 (method url-fetch)
6023cc74 299 (uri (linux-libre-urls version))
beacfcab
LC
300 (sha256
301 (base32
f7cfd80f 302 "1x621kvaf842bzpgglfl31zi74ny9w9jgvmkz3z6m3708n8clrdh"))))
beacfcab 303 (build-system gnu-build-system)
6c8d70b0 304 (supported-systems '("x86_64-linux" "i686-linux"))
beacfcab 305 (native-inputs `(("perl" ,perl)
e7b38500 306 ("bc" ,bc)
75343704 307 ("openssl" ,openssl)
ac47a7c2 308 ("module-init-tools" ,module-init-tools)
a94546ec 309 ("patch/freedo+gnu" ,%boot-logo-patch)
1650dd8a 310
75b314a6
MW
311 ,@(let ((conf (kernel-config
312 (or (%current-target-system)
313 (%current-system))
314 #:variant (version-major+minor version))))
1650dd8a
LC
315 (if conf
316 `(("kconfig" ,conf))
317 '()))))
beacfcab
LC
318 (arguments
319 `(#:modules ((guix build gnu-build-system)
320 (guix build utils)
321 (srfi srfi-1)
322 (ice-9 match))
323 #:phases (alist-replace
324 'build ,build-phase
325 (alist-replace
326 'install ,install-phase
327 (alist-delete 'configure %standard-phases)))
328 #:tests? #f))
f50d2669 329 (synopsis "100% free redistribution of a cleaned Linux kernel")
a22dc0c4 330 (description
79c311b8
LC
331 "GNU Linux-Libre is a free (as in freedom) variant of the Linux kernel.
332It has been modified to remove all non-free binary blobs.")
3ac73271 333 (license license:gpl2)
beacfcab
LC
334 (home-page "http://www.gnu.org/software/linux-libre/"))))
335
75b314a6
MW
336(define-public linux-libre-4.4
337 (package
338 (inherit linux-libre)
557a2503 339 (version "4.4.7")
75b314a6
MW
340 (source (origin
341 (method url-fetch)
342 (uri (linux-libre-urls version))
343 (sha256
344 (base32
557a2503 345 "031wh2k204zvshira28bf33sk1bbk19ilgqmkvkwjp6spk5wmvpq"))))
75b314a6
MW
346 (native-inputs
347 (let ((conf (kernel-config (or (%current-target-system)
348 (%current-system))
349 #:variant "4.4")))
350 `(,@(alist-delete "kconfig" (package-native-inputs linux-libre))
351 ("kconfig" ,conf))))))
352
adddd5ba
MW
353(define-public linux-libre-4.1
354 (package
355 (inherit linux-libre)
1a9f5e9f 356 (version "4.1.21")
adddd5ba
MW
357 (source (origin
358 (method url-fetch)
359 (uri (linux-libre-urls version))
360 (sha256
361 (base32
1a9f5e9f 362 "1gfzwiinpxzhqb5xi7b1iv7ay96nrjlhia6bvcyq8ffkx7a2r715"))))
adddd5ba
MW
363 (native-inputs
364 (let ((conf (kernel-config (or (%current-target-system)
365 (%current-system))
366 #:variant "4.1")))
367 `(,@(alist-delete "kconfig" (package-native-inputs linux-libre))
368 ("kconfig" ,conf))))))
369
97121c2a 370\f
c84d0eca
LC
371;;;
372;;; Pluggable authentication modules (PAM).
373;;;
374
fd76c904
LC
375(define-public linux-pam
376 (package
377 (name "linux-pam")
e3780200 378 (version "1.2.1")
fd76c904
LC
379 (source
380 (origin
381 (method url-fetch)
382 (uri (list (string-append "http://www.linux-pam.org/library/Linux-PAM-"
383 version ".tar.bz2")
384 (string-append "mirror://kernel.org/linux/libs/pam/library/Linux-PAM-"
385 version ".tar.bz2")))
386 (sha256
387 (base32
e3780200 388 "1n9lnf9gjs72kbj1g354v1xhi2j27aqaah15vykh7cnkq08i4arl"))))
fd76c904 389 (build-system gnu-build-system)
c4c4cc05 390 (native-inputs
fd76c904
LC
391 `(("flex" ,flex)
392
393 ;; TODO: optional dependencies
394 ;; ("libxcrypt" ,libxcrypt)
395 ;; ("cracklib" ,cracklib)
396 ))
397 (arguments
c134056a
LC
398 '(;; Most users, such as `shadow', expect the headers to be under
399 ;; `security'.
400 #:configure-flags (list (string-append "--includedir="
401 (assoc-ref %outputs "out")
402 "/include/security"))
403
404 ;; XXX: Tests won't run in chroot, presumably because /etc/pam.d
405 ;; isn't available.
406 #:tests? #f))
fd76c904
LC
407 (home-page "http://www.linux-pam.org/")
408 (synopsis "Pluggable authentication modules for Linux")
409 (description
410 "A *Free* project to implement OSF's RFC 86.0.
411Pluggable authentication modules are small shared object files that can
412be used through the PAM API to perform tasks, like authenticating a user
e881752c 413at login. Local and dynamic reconfiguration are its key features.")
3ac73271 414 (license license:bsd-3)))
686f14e8 415
53142109 416
c84d0eca
LC
417;;;
418;;; Miscellaneous.
419;;;
420
686f14e8
LC
421(define-public psmisc
422 (package
423 (name "psmisc")
424 (version "22.20")
425 (source
426 (origin
427 (method url-fetch)
428 (uri (string-append "mirror://sourceforge/psmisc/psmisc/psmisc-"
429 version ".tar.gz"))
430 (sha256
431 (base32
432 "052mfraykmxnavpi8s78aljx8w87hyvpx8mvzsgpjsjz73i28wmi"))))
433 (build-system gnu-build-system)
434 (inputs `(("ncurses" ,ncurses)))
435 (home-page "http://psmisc.sourceforge.net/")
436 (synopsis
35b9e423 437 "Small utilities that use the proc filesystem")
686f14e8
LC
438 (description
439 "This PSmisc package is a set of some small useful utilities that
35b9e423 440use the proc filesystem. We're not about changing the world, but
686f14e8 441providing the system administrator with some help in common tasks.")
3ac73271 442 (license license:gpl2+)))
02b80c3f
NK
443
444(define-public util-linux
445 (package
446 (name "util-linux")
57a66c27 447 (version "2.27")
5a6a3ba4
LC
448 (source (origin
449 (method url-fetch)
450 (uri (string-append "mirror://kernel.org/linux/utils/"
9f533d60
LC
451 name "/v" (version-major+minor version) "/"
452 name "-" version ".tar.xz"))
5a6a3ba4
LC
453 (sha256
454 (base32
57a66c27 455 "1ivdx1bhjbakf77agm9dn3wyxia1wgz9lzxgd61zqxw3xzih9gzw"))
fc1adab1 456 (patches (search-patches "util-linux-tests.patch"))
9d77da2a
LC
457 (modules '((guix build utils)))
458 (snippet
ec2da92c
LC
459 ;; We take the 'logger' program from GNU Inetutils and 'kill'
460 ;; from GNU Coreutils.
8338c241
MW
461 '(begin
462 (substitute* "configure"
463 (("build_logger=yes") "build_logger=no")
464 (("build_kill=yes") "build_kill=no"))
465 #t))))
02b80c3f
NK
466 (build-system gnu-build-system)
467 (arguments
29ec55ee 468 `(#:configure-flags (list "--disable-use-tty-group"
29ec55ee 469
85c7e8e6
DT
470 ;; Do not build .a files to save 2 MiB.
471 "--disable-static"
472
29ec55ee
LC
473 ;; Install completions where our
474 ;; bash-completion package expects them.
475 (string-append "--with-bashcompletiondir="
476 (assoc-ref %outputs "out")
477 "/etc/bash_completion.d"))
1b9cf4ad 478 #:phases (modify-phases %standard-phases
7e512497
LC
479 (add-before
480 'build 'set-umount-file-name
481 (lambda* (#:key outputs #:allow-other-keys)
482 ;; Tell 'eject' the right file name of 'umount'.
483 (let ((out (assoc-ref outputs "out")))
484 (substitute* "sys-utils/eject.c"
485 (("\"/bin/umount\"")
486 (string-append "\"" out "/bin/umount\"")))
487 #t)))
1b9cf4ad
LC
488 (add-before
489 'check 'pre-check
490 (lambda* (#:key inputs outputs #:allow-other-keys)
491 (let ((out (assoc-ref outputs "out"))
492 (net (assoc-ref inputs "net-base")))
493 ;; Change the test to refer to the right file.
494 (substitute* "tests/ts/misc/mcookie"
495 (("/etc/services")
496 (string-append net "/etc/services")))
497 #t))))))
f61e0e79 498 (inputs `(("zlib" ,zlib)
c4c4cc05
JD
499 ("ncurses" ,ncurses)))
500 (native-inputs
9f533d60
LC
501 `(("perl" ,perl)
502 ("net-base" ,net-base))) ;for tests
02b80c3f 503 (home-page "https://www.kernel.org/pub/linux/utils/util-linux/")
35ec07c7 504 (synopsis "Collection of utilities for the Linux kernel")
437d7286
LF
505 (description "Util-linux is a diverse collection of Linux kernel
506utilities. It provides dmesg and includes tools for working with filesystems,
507block devices, UUIDs, TTYs, and many other tools.")
fe8ccfcc 508
02b80c3f 509 ;; Note that util-linux doesn't use the same license for all the
fe8ccfcc 510 ;; code. GPLv2+ is the default license for a code without an
02b80c3f 511 ;; explicitly defined license.
3ac73271
LC
512 (license (list license:gpl3+ license:gpl2+ license:gpl2 license:lgpl2.0+
513 license:bsd-4 license:public-domain))))
5d5c4278 514
e47e3eff
LC
515(define-public procps
516 (package
517 (name "procps")
0cc22848 518 (version "3.3.11")
e47e3eff 519 (source (origin
0cc22848
SB
520 (method url-fetch)
521 (uri (string-append "mirror://sourceforge/procps-ng/Production/"
522 "procps-ng-" version ".tar.xz"))
523 (sha256
524 (base32
525 "1va4n0mpsq327ca9dqp4hnrpgs6821rp0f2m0jyc1bfjl9lk2jg9"))))
e47e3eff 526 (build-system gnu-build-system)
e47e3eff 527 (arguments
80393eed
LC
528 '(#:modules ((guix build utils)
529 (guix build gnu-build-system)
530 (srfi srfi-1)
531 (srfi srfi-26))
0cc22848
SB
532 #:phases
533 (modify-phases %standard-phases
534 (add-after
535 'install 'post-install
536 ;; Remove commands and man pages redudant with
537 ;; Coreutils.
538 (lambda* (#:key outputs #:allow-other-keys)
539 (let* ((out (assoc-ref outputs "out"))
540 (dup (append-map (cut find-files out <>)
541 '("^kill" "^uptime"))))
542 (for-each delete-file dup)
543 #t))))))
544 (inputs `(("ncurses" ,ncurses)))
545 (home-page "https://gitlab.com/procps-ng/procps/")
35ec07c7 546 (synopsis "Utilities that give information about processes")
e47e3eff 547 (description
35b9e423 548 "Procps is the package that has a bunch of small useful utilities
e47e3eff
LC
549that give information about processes using the Linux /proc file system.
550The package includes the programs ps, top, vmstat, w, kill, free,
551slabtop, and skill.")
3ac73271 552 (license license:gpl2)))
e47e3eff 553
5d5c4278
NK
554(define-public usbutils
555 (package
556 (name "usbutils")
557 (version "006")
558 (source
559 (origin
560 (method url-fetch)
561 (uri (string-append "mirror://kernel.org/linux/utils/usb/usbutils/"
562 "usbutils-" version ".tar.xz"))
563 (sha256
564 (base32
565 "03pd57vv8c6x0hgjqcbrxnzi14h8hcghmapg89p8k5zpwpkvbdfr"))))
566 (build-system gnu-build-system)
567 (inputs
c4c4cc05
JD
568 `(("libusb" ,libusb)))
569 (native-inputs
570 `(("pkg-config" ,pkg-config)))
5d5c4278
NK
571 (home-page "http://www.linux-usb.org/")
572 (synopsis
573 "Tools for working with USB devices, such as lsusb")
574 (description
575 "Tools for working with USB devices, such as lsusb.")
3ac73271 576 (license license:gpl2+)))
0750452a
LC
577
578(define-public e2fsprogs
579 (package
580 (name "e2fsprogs")
7409c8d4 581 (version "1.42.13")
0750452a
LC
582 (source (origin
583 (method url-fetch)
7409c8d4
MW
584 (uri (string-append
585 "mirror://kernel.org/linux/kernel/people/tytso/"
586 name "/v" version "/"
587 name "-" version ".tar.xz"))
0750452a
LC
588 (sha256
589 (base32
7409c8d4 590 "1ix0b83zgw5n0p2grh2961c6796m92yr2jqc2sbr23x3lfsp8r71"))
7c594a2c
LC
591 (modules '((guix build utils)))
592 (snippet
593 '(substitute* "MCONFIG.in"
594 (("INSTALL_SYMLINK = /bin/sh")
595 "INSTALL_SYMLINK = sh")))))
0750452a 596 (build-system gnu-build-system)
c4c4cc05 597 (inputs `(("util-linux" ,util-linux)))
f57d2639 598 (native-inputs `(("pkg-config" ,pkg-config)
7c594a2c 599 ("texinfo" ,texinfo))) ;for the libext2fs Info manual
0750452a 600 (arguments
097e012b 601 '(;; util-linux is the preferred source for some of the libraries and
c44ed26c 602 ;; commands, so disable them (see, e.g.,
a124bbd2 603 ;; <http://git.buildroot.net/buildroot/commit/?id=e1ffc2f791b33633>.)
c44ed26c
LC
604 #:configure-flags '("--disable-libblkid"
605 "--disable-libuuid" "--disable-uuidd"
606 "--disable-fsck"
7c594a2c
LC
607
608 ;; Install libext2fs et al.
609 "--enable-elf-shlibs")
610
611 #:make-flags (list (string-append "LDFLAGS=-Wl,-rpath="
612 (assoc-ref %outputs "out")
613 "/lib"))
ddfc2fd8
LC
614
615 #:phases (alist-cons-before
0750452a
LC
616 'configure 'patch-shells
617 (lambda _
618 (substitute* "configure"
619 (("/bin/sh (.*)parse-types.sh" _ dir)
620 (string-append (which "sh") " " dir
621 "parse-types.sh")))
622 (substitute* (find-files "." "^Makefile.in$")
623 (("#!/bin/sh")
624 (string-append "#!" (which "sh")))))
1c975f60
LC
625 (alist-cons-after
626 'install 'install-libs
853c2f18
LC
627 (lambda* (#:key outputs #:allow-other-keys)
628 (let* ((out (assoc-ref outputs "out"))
629 (lib (string-append out "/lib")))
630 (and (zero? (system* "make" "install-libs"))
631
632 ;; Make the .a writable so that 'strip' works.
633 ;; Failing to do that, due to debug symbols, we
634 ;; retain a reference to the final
635 ;; linux-libre-headers, which refer to the
636 ;; bootstrap binaries.
637 (let ((archives (find-files lib "\\.a$")))
638 (for-each (lambda (file)
639 (chmod file #o666))
640 archives)
641 #t))))
1c975f60 642 %standard-phases))
0750452a
LC
643
644 ;; FIXME: Tests work by comparing the stdout/stderr of programs, that
645 ;; they fail because we get an extra line that says "Can't check if
646 ;; filesystem is mounted due to missing mtab file".
647 #:tests? #f))
648 (home-page "http://e2fsprogs.sourceforge.net/")
35ec07c7 649 (synopsis "Creating and checking ext2/ext3/ext4 file systems")
0750452a
LC
650 (description
651 "This package provides tools for manipulating ext2/ext3/ext4 file systems.")
3ac73271
LC
652 (license (list license:gpl2 ;programs
653 license:lgpl2.0 ;libext2fs
654 license:x11)))) ;libuuid
d8482ad0 655
e48977e7
LC
656(define e2fsprogs/static
657 (static-package
658 (package (inherit e2fsprogs)
659 (arguments
660 ;; Do not build shared libraries.
661 (substitute-keyword-arguments (package-arguments e2fsprogs)
662 ((#:configure-flags _)
663 '(list "--disable-blkid"))
664 ((#:make-flags _)
665 '(list)))))))
666
e102f940
LC
667(define-public e2fsck/static
668 (package
669 (name "e2fsck-static")
0997771a 670 (version (package-version e2fsprogs))
e102f940
LC
671 (build-system trivial-build-system)
672 (source #f)
673 (arguments
674 `(#:modules ((guix build utils))
675 #:builder
676 (begin
677 (use-modules (guix build utils)
678 (ice-9 ftw)
679 (srfi srfi-26))
680
681 (let ((source (string-append (assoc-ref %build-inputs "e2fsprogs")
682 "/sbin"))
683 (bin (string-append (assoc-ref %outputs "out") "/sbin")))
684 (mkdir-p bin)
685 (with-directory-excursion bin
686 (for-each (lambda (file)
687 (copy-file (string-append source "/" file)
688 file)
689 (remove-store-references file)
690 (chmod file #o555))
691 (scandir source (cut string-prefix? "fsck." <>))))))))
e48977e7 692 (inputs `(("e2fsprogs" ,e2fsprogs/static)))
e102f940
LC
693 (synopsis "Statically-linked fsck.* commands from e2fsprogs")
694 (description
695 "This package provides statically-linked command of fsck.ext[234] taken
696from the e2fsprogs package. It is meant to be used in initrds.")
0997771a
LC
697 (home-page (package-home-page e2fsprogs))
698 (license (package-license e2fsprogs))))
e102f940 699
7c0a9104
LC
700(define-public extundelete
701 (package
702 (name "extundelete")
703 (version "0.2.4")
704 (source (origin
705 (method url-fetch)
706 (uri (string-append "mirror://sourceforge/extundelete/"
707 version "/extundelete-" version ".tar.bz2"))
708 (sha256
709 (base32
710 "1x0r7ylxlp9lbj3d7sqf6j2a222dwy2nfpff05jd6mkh4ihxvyd1"))))
711 (build-system gnu-build-system)
712 (inputs `(("e2fsprogs" ,e2fsprogs)))
713 (home-page "http://extundelete.sourceforge.net/")
714 (synopsis "Recover deleted files from ext2/3/4 partitions")
715 (description
716 "Extundelete is a set of tools that can recover deleted files from an
717ext3 or ext4 partition.")
3ac73271 718 (license license:gpl2)))
7c0a9104 719
1c975f60
LC
720(define-public zerofree
721 (package
722 (name "zerofree")
723 (version "1.0.3")
724 (home-page "http://intgat.tigress.co.uk/rmy/uml/")
725 (source (origin
726 (method url-fetch)
727 (uri (string-append home-page name "-" version
728 ".tgz"))
729 (sha256
730 (base32
731 "1xncw3dn2cp922ly42m96p6fh7jv8ysg6bwqbk5xvw701f3dmkrs"))))
732 (build-system gnu-build-system)
733 (arguments
734 '(#:phases (alist-replace
735 'install
736 (lambda* (#:key outputs #:allow-other-keys)
737 (let* ((out (assoc-ref outputs "out"))
738 (bin (string-append out "/bin")))
739 (mkdir-p bin)
740 (copy-file "zerofree"
741 (string-append bin "/zerofree"))
742 (chmod (string-append bin "/zerofree")
743 #o555)
744 #t))
745 (alist-delete 'configure %standard-phases))
746 #:tests? #f)) ;no tests
747 (inputs `(("libext2fs" ,e2fsprogs)))
748 (synopsis "Zero non-allocated regions in ext2/ext3/ext4 file systems")
749 (description
750 "The zerofree command scans the free blocks in an ext2 file system and
751fills any non-zero blocks with zeroes. This is a useful way to make disk
752images more compressible.")
3ac73271 753 (license license:gpl2)))
1c975f60 754
d8482ad0
LC
755(define-public strace
756 (package
757 (name "strace")
758 (version "4.7")
759 (source (origin
760 (method url-fetch)
761 (uri (string-append "mirror://sourceforge/strace/strace-"
762 version ".tar.xz"))
763 (sha256
764 (base32
765 "158iwk0pl2mfw93m1843xb7a2zb8p6lh0qim07rca6f1ff4dk764"))))
766 (build-system gnu-build-system)
c4c4cc05 767 (native-inputs `(("perl" ,perl)))
d8482ad0
LC
768 (home-page "http://strace.sourceforge.net/")
769 (synopsis "System call tracer for Linux")
770 (description
771 "strace is a system call tracer, i.e. a debugging tool which prints out a
772trace of all the system calls made by a another process/program.")
3ac73271 773 (license license:bsd-3)))
ba04571a 774
e1e27737
TUBK
775(define-public ltrace
776 (package
777 (name "ltrace")
778 (version "0.7.3")
779 (source (origin
780 (method url-fetch)
781 (uri (string-append "http://www.ltrace.org/ltrace_" version
782 ".orig.tar.bz2"))
783 (sha256
784 (base32
785 "00wmbdghqbz6x95m1mcdd3wd46l6hgcr4wggdp049dbifh3qqvqf"))))
786 (build-system gnu-build-system)
787 (inputs `(("libelf" ,libelf)))
788 (arguments
789 ;; Compilation uses -Werror by default, but it fails.
790 '(#:configure-flags '("--disable-werror")))
791 (home-page "http://www.ltrace.org/")
792 (synopsis "Library call tracer for Linux")
793 (description
794 "ltrace intercepts and records dynamic library calls which are called by
795an executed process and the signals received by that process. It can also
796intercept and print the system calls executed by the program.")
3ac73271 797 (license license:gpl2+)))
e1e27737 798
ba04571a
LC
799(define-public alsa-lib
800 (package
801 (name "alsa-lib")
802 (version "1.0.27.1")
803 (source (origin
804 (method url-fetch)
805 (uri (string-append
806 "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-"
807 version ".tar.bz2"))
808 (sha256
809 (base32
bcd94e19 810 "0fx057746dj7rjdi0jnvx2m9b0y1lgdkh1hks87d8w32xyihf3k9"))
fc1adab1 811 (patches (search-patches "alsa-lib-mips-atomic-fix.patch"))))
ba04571a
LC
812 (build-system gnu-build-system)
813 (home-page "http://www.alsa-project.org/")
814 (synopsis "The Advanced Linux Sound Architecture libraries")
815 (description
816 "The Advanced Linux Sound Architecture (ALSA) provides audio and
817MIDI functionality to the Linux-based operating system.")
3ac73271 818 (license license:lgpl2.1+)))
10afdf50 819
17b293a0
LC
820(define-public alsa-utils
821 (package
822 (name "alsa-utils")
992b527d 823 (version "1.1.0")
17b293a0
LC
824 (source (origin
825 (method url-fetch)
992b527d
EF
826 (uri (string-append "ftp://ftp.alsa-project.org/pub/utils/"
827 name "-" version ".tar.bz2"))
17b293a0
LC
828 (sha256
829 (base32
992b527d 830 "1wa88wvqcfhak9x3y65wzzwxmmyxb5bv2gyj7lnm653fnwsk271v"))))
17b293a0
LC
831 (build-system gnu-build-system)
832 (arguments
833 ;; XXX: Disable man page creation until we have DocBook.
834 '(#:configure-flags (list "--disable-xmlto"
f2817d43
LC
835
836 ;; The udev rule is responsible for restoring
837 ;; the volume.
17b293a0
LC
838 (string-append "--with-udev-rules-dir="
839 (assoc-ref %outputs "out")
840 "/lib/udev/rules.d"))
841 #:phases (alist-cons-before
842 'install 'pre-install
843 (lambda _
844 ;; Don't try to mkdir /var/lib/alsa.
845 (substitute* "Makefile"
846 (("\\$\\(MKDIR_P\\) .*ASOUND_STATE_DIR.*")
847 "true\n")))
848 %standard-phases)))
849 (inputs
850 `(("libsamplerate" ,libsamplerate)
851 ("ncurses" ,ncurses)
852 ("alsa-lib" ,alsa-lib)
853 ("xmlto" ,xmlto)
1dba6407 854 ("gettext" ,gnu-gettext)))
17b293a0
LC
855 (home-page "http://www.alsa-project.org/")
856 (synopsis "Utilities for the Advanced Linux Sound Architecture (ALSA)")
857 (description
858 "The Advanced Linux Sound Architecture (ALSA) provides audio and
859MIDI functionality to the Linux-based operating system.")
860
861 ;; This is mostly GPLv2+ but a few files such as 'alsactl.c' are
862 ;; GPLv2-only.
3ac73271 863 (license license:gpl2)))
17b293a0 864
10afdf50
LC
865(define-public iptables
866 (package
867 (name "iptables")
868 (version "1.4.16.2")
869 (source (origin
870 (method url-fetch)
871 (uri (string-append
872 "http://www.netfilter.org/projects/iptables/files/iptables-"
873 version ".tar.bz2"))
874 (sha256
875 (base32
876 "0vkg5lzkn4l3i1sm6v3x96zzvnv9g7mi0qgj6279ld383mzcws24"))))
877 (build-system gnu-build-system)
50c26d9e
SB
878 (arguments
879 '(#:tests? #f ; no test suite
880 #:configure-flags ; add $libdir to the RUNPATH of executables
881 (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))))
10afdf50
LC
882 (home-page "http://www.netfilter.org/projects/iptables/index.html")
883 (synopsis "Program to configure the Linux IP packet filtering rules")
884 (description
885 "iptables is the userspace command line program used to configure the
886Linux 2.4.x and later IPv4 packet filtering ruleset. It is targeted towards
887system administrators. Since Network Address Translation is also configured
888from the packet filter ruleset, iptables is used for this, too. The iptables
889package also includes ip6tables. ip6tables is used for configuring the IPv6
890packet filter.")
3ac73271 891 (license license:gpl2+)))
90a0048f
LC
892
893(define-public iproute
894 (package
895 (name "iproute2")
75cd4b05 896 (version "4.4.0")
90a0048f 897 (source (origin
75cd4b05
AK
898 (method url-fetch)
899 (uri (string-append
900 "mirror://kernel.org/linux/utils/net/iproute2/iproute2-"
901 version ".tar.xz"))
902 (sha256
903 (base32
904 "05351m4m0whsivlblvs3m0nz5q9v6r06ik80z27gf6ca51kw74dw"))))
90a0048f
LC
905 (build-system gnu-build-system)
906 (arguments
907 `(#:tests? #f ; no test suite
908 #:make-flags (let ((out (assoc-ref %outputs "out")))
909 (list "DESTDIR="
910 (string-append "LIBDIR=" out "/lib")
911 (string-append "SBINDIR=" out "/sbin")
912 (string-append "CONFDIR=" out "/etc")
913 (string-append "DOCDIR=" out "/share/doc/"
914 ,name "-" ,version)
915 (string-append "MANDIR=" out "/share/man")))
b53e44fb
AK
916 #:phases (modify-phases %standard-phases
917 (add-before 'install 'pre-install
918 (lambda _
919 ;; Don't attempt to create /var/lib/arpd.
920 (substitute* "Makefile"
921 (("^.*ARPDDIR.*$") "")))))))
90a0048f
LC
922 (inputs
923 `(("iptables" ,iptables)
c4c4cc05
JD
924 ("db4" ,bdb)))
925 (native-inputs
926 `(("pkg-config" ,pkg-config)
90a0048f
LC
927 ("flex" ,flex)
928 ("bison" ,bison)))
929 (home-page
930 "http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2")
931 (synopsis
9e771e3b 932 "Utilities for controlling TCP/IP networking and traffic in Linux")
90a0048f
LC
933 (description
934 "Iproute2 is a collection of utilities for controlling TCP/IP
935networking and traffic with the Linux kernel.
936
937Most network configuration manuals still refer to ifconfig and route as the
938primary network configuration tools, but ifconfig is known to behave
939inadequately in modern network environments. They should be deprecated, but
940most distros still include them. Most network configuration systems make use
941of ifconfig and thus provide a limited feature set. The /etc/net project aims
942to support most modern network technologies, as it doesn't use ifconfig and
943allows a system administrator to make use of all iproute2 features, including
944traffic control.
945
946iproute2 is usually shipped in a package called iproute or iproute2 and
947consists of several tools, of which the most important are ip and tc. ip
948controls IPv4 and IPv6 configuration and tc stands for traffic control. Both
949tools print detailed usage messages and are accompanied by a set of
950manpages.")
3ac73271 951 (license license:gpl2+)))
85e0dc6a
LC
952
953(define-public net-tools
954 ;; XXX: This package is basically unmaintained, but it provides a few
955 ;; commands not yet provided by Inetutils, such as 'route', so we have to
956 ;; live with it.
957 (package
958 (name "net-tools")
959 (version "1.60")
6b55ee88 960 (home-page "http://net-tools.sourceforge.net/")
85e0dc6a
LC
961 (source (origin
962 (method url-fetch)
6b55ee88
LC
963 (uri (list (string-append
964 "mirror://sourceforge/net-tools/net-tools-"
965 version ".tar.bz2")
966 (string-append
967 "http://distro.ibiblio.org/rootlinux/rootlinux-ports"
968 "/base/net-tools/net-tools-1.60.tar.bz2")))
85e0dc6a
LC
969 (sha256
970 (base32
177088a3 971 "0yvxrzk0mzmspr7sa34hm1anw6sif39gyn85w4c5ywfn8inxvr3s"))
fc1adab1 972 (patches (search-patches "net-tools-bitrot.patch"))))
85e0dc6a
LC
973 (build-system gnu-build-system)
974 (arguments
c9e0a44e
LC
975 '(#:modules ((guix build gnu-build-system)
976 (guix build utils)
977 (srfi srfi-1)
978 (srfi srfi-26))
979 #:phases (alist-cons-after
cd143df0 980 'unpack 'patch
85e0dc6a
LC
981 (lambda* (#:key inputs #:allow-other-keys)
982 (define (apply-patch file)
9a224ac2 983 (zero? (system* "patch" "-p1" "--force"
85e0dc6a
LC
984 "--input" file)))
985
986 (let ((patch.gz (assoc-ref inputs "patch")))
987 (format #t "applying Debian patch set '~a'...~%"
988 patch.gz)
989 (system (string-append "gunzip < " patch.gz " > the-patch"))
85e0dc6a
LC
990 (and (apply-patch "the-patch")
991 (for-each apply-patch
992 (find-files "debian/patches"
993 "\\.patch")))))
994 (alist-replace
995 'configure
996 (lambda* (#:key outputs #:allow-other-keys)
997 (let ((out (assoc-ref outputs "out")))
998 (mkdir-p (string-append out "/bin"))
999 (mkdir-p (string-append out "/sbin"))
1000
1001 ;; Pretend we have everything...
1002 (system "yes | make config")
1003
a153ff80
MW
1004 ;; ... except for the things we don't have.
1005 ;; HAVE_AFDECnet requires libdnet, which we don't have.
1006 ;; HAVE_HWSTRIP and HAVE_HWTR require kernel headers
1007 ;; that have been removed.
85e0dc6a 1008 (substitute* '("config.make" "config.h")
a153ff80 1009 (("^.*HAVE_(AFDECnet|HWSTRIP|HWTR)[ =]1.*$") ""))))
c9e0a44e
LC
1010 (alist-cons-after
1011 'install 'remove-redundant-commands
1012 (lambda* (#:key outputs #:allow-other-keys)
1013 ;; Remove commands and man pages redundant with
1014 ;; Inetutils.
1015 (let* ((out (assoc-ref outputs "out"))
1016 (dup (append-map (cut find-files out <>)
1017 '("^hostname"
1018 "^(yp|nis|dns)?domainname"))))
1019 (for-each delete-file dup)
1020 #t))
1021 %standard-phases)))
85e0dc6a
LC
1022
1023 ;; Binaries that depend on libnet-tools.a don't declare that
1024 ;; dependency, making it parallel-unsafe.
1025 #:parallel-build? #f
1026
1027 #:tests? #f ; no test suite
0d55c356
MW
1028 #:make-flags (let ((out (assoc-ref %outputs "out")))
1029 (list "CC=gcc"
1030 (string-append "BASEDIR=" out)
1031 (string-append "INSTALLNLSDIR=" out "/share/locale")
1032 (string-append "mandir=/share/man")))))
85e0dc6a
LC
1033
1034 ;; Use the big Debian patch set (the thing does not even compile out of
1035 ;; the box.)
1036 (inputs `(("patch" ,(origin
1037 (method url-fetch)
1038 (uri
1039 "http://ftp.de.debian.org/debian/pool/main/n/net-tools/net-tools_1.60-24.2.diff.gz")
1040 (sha256
1041 (base32
1042 "0p93lsqx23v5fv4hpbrydmfvw1ha2rgqpn2zqbs2jhxkzhjc030p"))))))
1dba6407 1043 (native-inputs `(("gettext" ,gnu-gettext)))
85e0dc6a
LC
1044
1045 (synopsis "Tools for controlling the network subsystem in Linux")
1046 (description
1047 "This package includes the important tools for controlling the network
1048subsystem of the Linux kernel. This includes arp, hostname, ifconfig,
1049netstat, rarp and route. Additionally, this package contains utilities
1050relating to particular network hardware types (plipconfig, slattach) and
1051advanced aspects of IP configuration (iptunnel, ipmaddr).")
3ac73271 1052 (license license:gpl2+)))
c762e82e
LC
1053
1054(define-public libcap
1055 (package
1056 (name "libcap")
f6c2d05c 1057 (version "2.24")
c762e82e
LC
1058 (source (origin
1059 (method url-fetch)
c762e82e 1060 (uri (string-append
f6c2d05c
LC
1061 "mirror://kernel.org/linux/libs/security/linux-privs/"
1062 "libcap2/libcap-" version ".tar.xz"))
c762e82e
LC
1063 (sha256
1064 (base32
f6c2d05c 1065 "0rbc9qbqs5bp9am9s9g83wxj5k4ixps2agy9dxr1v1fwg27mdr6f"))))
c762e82e 1066 (build-system gnu-build-system)
6d889daf
SB
1067 (arguments '(#:phases
1068 (modify-phases %standard-phases
1069 (replace 'configure
1070 ;; Add $libdir to the RUNPATH of executables.
1071 (lambda _
1072 (substitute* "Make.Rules"
1073 (("LDFLAGS := #-g")
1074 (string-append "LDFLAGS := -Wl,-rpath="
1075 %output "/lib"))))))
c762e82e
LC
1076 #:tests? #f ; no 'check' target
1077 #:make-flags (list "lib=lib"
1078 (string-append "prefix="
1079 (assoc-ref %outputs "out"))
1080 "RAISE_SETFCAP=no")))
1081 (native-inputs `(("perl" ,perl)))
1082 (inputs `(("attr" ,attr)))
1083 (home-page "https://sites.google.com/site/fullycapable/")
1084 (synopsis "Library for working with POSIX capabilities")
1085 (description
35b9e423 1086 "Libcap2 provides a programming interface to POSIX capabilities on
c762e82e
LC
1087Linux-based operating systems.")
1088
1089 ;; License is BSD-3 or GPLv2, at the user's choice.
3ac73271 1090 (license license:gpl2)))
215b6431
LC
1091
1092(define-public bridge-utils
1093 (package
1094 (name "bridge-utils")
1095 (version "1.5")
1096 (source (origin
1097 (method url-fetch)
1098 (uri (string-append "mirror://sourceforge/bridge/bridge-utils-"
1099 version ".tar.gz"))
1100 (sha256
1101 (base32
1102 "12367cwqmi0yqphi6j8rkx97q8hw52yq2fx4k0xfclkcizxybya2"))))
1103 (build-system gnu-build-system)
1104
1105 ;; The tarball lacks all the generated files.
1106 (native-inputs `(("autoconf" ,autoconf)
1107 ("automake" ,automake)))
1108 (arguments
722ec722
MW
1109 '(#:phases (alist-cons-after
1110 'unpack 'bootstrap
215b6431 1111 (lambda _
e5c8e4f3
DT
1112 ;; Fix "field ‘ip6’ has incomplete type" errors.
1113 (substitute* "libbridge/libbridge.h"
1114 (("#include <linux/if_bridge.h>")
1115 "#include <linux/in6.h>\n#include <linux/if_bridge.h>"))
1116
1117 ;; Ensure that the entire build fails if one of the
1118 ;; sub-Makefiles fails.
1119 (substitute* "Makefile.in"
1120 (("\\$\\(MAKE\\) \\$\\(MFLAGS\\) -C \\$\\$x ;")
1121 "$(MAKE) $(MFLAGS) -C $$x || exit 1;"))
1122
215b6431
LC
1123 (zero? (system* "autoreconf" "-vf")))
1124 %standard-phases)
1125 #:tests? #f)) ; no 'check' target
1126
1127 (home-page
1128 "http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge")
1129 (synopsis "Manipulate Ethernet bridges")
1130 (description
1131 "Utilities for Linux's Ethernet bridging facilities. A bridge is a way
1132to connect two Ethernet segments together in a protocol independent way.
1133Packets are forwarded based on Ethernet address, rather than IP address (like
1134a router). Since forwarding is done at Layer 2, all protocols can go
1135transparently through a bridge.")
3ac73271 1136 (license license:gpl2+)))
3cc20675
LC
1137
1138(define-public libnl
1139 (package
1140 (name "libnl")
bdac3d4b 1141 (version "3.2.25")
3cc20675
LC
1142 (source (origin
1143 (method url-fetch)
1144 (uri (string-append
1145 "http://www.infradead.org/~tgr/libnl/files/libnl-"
1146 version ".tar.gz"))
1147 (sha256
1148 (base32
bdac3d4b 1149 "1icfrv8yihcb74as1gcgmp0wfpdq632q2zvbvqqvjms9cy87bswb"))))
3cc20675
LC
1150 (build-system gnu-build-system)
1151 (native-inputs `(("flex" ,flex) ("bison" ,bison)))
1152 (home-page "http://www.infradead.org/~tgr/libnl/")
1153 (synopsis "NetLink protocol library suite")
1154 (description
1155 "The libnl suite is a collection of libraries providing APIs to netlink
69b4ffcf 1156protocol based Linux kernel interfaces. Netlink is an IPC mechanism primarily
3cc20675
LC
1157between the kernel and user space processes. It was designed to be a more
1158flexible successor to ioctl to provide mainly networking related kernel
1159configuration and monitoring interfaces.")
1160
1161 ;; Most files are LGPLv2.1-only, but some are GPLv2-only (like
1162 ;; 'nl-addr-add.c'), so the result is GPLv2-only.
3ac73271 1163 (license license:gpl2)))
023fef7d 1164
65cd77db
MW
1165(define-public iw
1166 (package
1167 (name "iw")
1168 (version "3.17")
1169 (source (origin
1170 (method url-fetch)
1171 (uri (string-append
1172 "https://www.kernel.org/pub/software/network/iw/iw-"
1173 version ".tar.xz"))
1174 (sha256
1175 (base32
1176 "14zsapqhivk0ws5z21y1ys2c2czi05mzk7bl2yb7qxcfrnsjx9j8"))))
1177 (build-system gnu-build-system)
1178 (native-inputs `(("pkg-config" ,pkg-config)))
1179 (inputs `(("libnl" ,libnl)))
1180 (arguments
1181 `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1182 "CC=gcc")
1183 #:phases (alist-delete 'configure %standard-phases)))
1184 (home-page "http://wireless.kernel.org/en/users/Documentation/iw")
1185 (synopsis "Tool for configuring wireless devices")
1186 (description
1187 "iw is a new nl80211 based CLI configuration utility for wireless
1188devices. It replaces 'iwconfig', which is deprecated.")
3ac73271 1189 (license license:isc)))
65cd77db 1190
023fef7d
LC
1191(define-public powertop
1192 (package
1193 (name "powertop")
ebacb0de 1194 (version "2.8")
023fef7d
LC
1195 (source
1196 (origin
1197 (method url-fetch)
1198 (uri (string-append
bd60e4e2 1199 "https://01.org/sites/default/files/downloads/powertop/powertop-"
023fef7d
LC
1200 version ".tar.gz"))
1201 (sha256
1202 (base32
ebacb0de 1203 "0nlwazxbnn0k6q5f5b09wdhw0f194lpzkp3l7vxansqhfczmcyx8"))))
023fef7d
LC
1204 (build-system gnu-build-system)
1205 (inputs
f61e0e79 1206 `(("zlib" ,zlib)
cfd745d6 1207 ("pciutils" ,pciutils)
023fef7d
LC
1208 ("ncurses" ,ncurses)
1209 ("libnl" ,libnl)))
c4c4cc05 1210 (native-inputs
ebacb0de 1211 `(("pkg-config" ,pkg-config)))
023fef7d
LC
1212 (home-page "https://01.org/powertop/")
1213 (synopsis "Analyze power consumption on Intel-based laptops")
1214 (description
1215 "PowerTOP is a Linux tool to diagnose issues with power consumption and
1216power management. In addition to being a diagnostic tool, PowerTOP also has
1217an interactive mode where the user can experiment various power management
1218settings for cases where the operating system has not enabled these
1219settings.")
3ac73271 1220 (license license:gpl2)))
6869e5c9
LC
1221
1222(define-public aumix
1223 (package
1224 (name "aumix")
1225 (version "2.9.1")
1226 (source (origin
1227 (method url-fetch)
1228 (uri (string-append
1229 "http://www.jpj.net/~trevor/aumix/releases/aumix-"
1230 version ".tar.bz2"))
1231 (sha256
1232 (base32
1233 "0a8fwyxnc5qdxff8sl2sfsbnvgh6pkij4yafiln0fxgg6bal7knj"))))
1234 (build-system gnu-build-system)
1235 (inputs `(("ncurses" ,ncurses)))
1236 (home-page "http://www.jpj.net/~trevor/aumix.html")
1237 (synopsis "Audio mixer for X and the console")
1238 (description
1239 "Aumix adjusts an audio mixer from X, the console, a terminal,
1240the command line or a script.")
3ac73271 1241 (license license:gpl2+)))
7c0dbe78
SHT
1242
1243(define-public iotop
1244 (package
1245 (name "iotop")
1246 (version "0.6")
1247 (source
1248 (origin
1249 (method url-fetch)
1250 (uri (string-append "http://guichaz.free.fr/iotop/files/iotop-"
1251 version ".tar.gz"))
1252 (sha256 (base32
1253 "1kp8mqg2pbxq4xzpianypadfxcsyfgwcaqgqia6h9fsq6zyh4z0s"))))
1254 (build-system python-build-system)
1255 (arguments
35cebf01 1256 ;; The setup.py script expects python-2.
7c0dbe78 1257 `(#:python ,python-2
35cebf01 1258 ;; There are currently no checks in the package.
7c0dbe78
SHT
1259 #:tests? #f))
1260 (native-inputs `(("python" ,python-2)))
1261 (home-page "http://guichaz.free.fr/iotop/")
1262 (synopsis
1263 "Displays the IO activity of running processes")
1264 (description
1265 "Iotop is a Python program with a top like user interface to show the
1266processes currently causing I/O.")
3ac73271 1267 (license license:gpl2+)))
e30835e2
LC
1268
1269(define-public fuse
1270 (package
1271 (name "fuse")
ebf89f13 1272 (version "2.9.5")
e30835e2
LC
1273 (source (origin
1274 (method url-fetch)
b7e7d1b9
LF
1275 (uri (let ((version-with-underscores
1276 (string-join (string-split version #\.) "_")))
1277 (string-append
1278 "https://github.com/libfuse/libfuse/"
826244f0 1279 "releases/download/fuse_" version-with-underscores
b7e7d1b9 1280 "/fuse-" version ".tar.gz")))
e30835e2
LC
1281 (sha256
1282 (base32
ebf89f13 1283 "1dfvbi1p57svbv2sfnbqwpnsk219spvjnlapf35azhgzqlf3g7sp"))))
e30835e2 1284 (build-system gnu-build-system)
b148bd71 1285 (inputs `(("util-linux" ,util-linux)))
e30835e2
LC
1286 (arguments
1287 '(#:configure-flags (list (string-append "MOUNT_FUSE_PATH="
1288 (assoc-ref %outputs "out")
1289 "/sbin")
1290 (string-append "INIT_D_PATH="
1291 (assoc-ref %outputs "out")
1292 "/etc/init.d")
9a4efac9
LC
1293
1294 ;; The rule makes /dev/fuse 666.
e30835e2
LC
1295 (string-append "UDEV_RULES_PATH="
1296 (assoc-ref %outputs "out")
9a4efac9 1297 "/lib/udev/rules.d"))
b148bd71
LC
1298 #:phases (alist-cons-before
1299 'build 'set-file-names
1300 (lambda* (#:key inputs #:allow-other-keys)
1301 ;; libfuse calls out to mount(8) and umount(8). Make sure
1302 ;; it refers to the right ones.
1303 (substitute* '("lib/mount_util.c" "util/mount_util.c")
1304 (("/bin/(u?)mount" _ maybe-u)
1305 (string-append (assoc-ref inputs "util-linux")
1306 "/bin/" maybe-u "mount")))
1307 (substitute* '("util/mount.fuse.c")
1308 (("/bin/sh")
bd663902
LC
1309 (which "sh")))
1310
1311 ;; This hack leads libfuse to search for 'fusermount' in
1312 ;; $PATH, where it may find a setuid-root binary, instead of
1313 ;; trying solely $out/sbin/fusermount and failing because
1314 ;; it's not setuid.
1315 (substitute* "lib/Makefile"
1316 (("-DFUSERMOUNT_DIR=[[:graph:]]+")
1317 "-DFUSERMOUNT_DIR=\\\"/var/empty\\\"")))
b148bd71 1318 %standard-phases)))
e30835e2
LC
1319 (home-page "http://fuse.sourceforge.net/")
1320 (synopsis "Support file systems implemented in user space")
1321 (description
1322 "As a consequence of its monolithic design, file system code for Linux
1323normally goes into the kernel itself---which is not only a robustness issue,
1324but also an impediment to system extensibility. FUSE, for \"file systems in
1325user space\", is a kernel module and user-space library that tries to address
1326part of this problem by allowing users to run file system implementations as
1327user-space processes.")
3ac73271
LC
1328 (license (list license:lgpl2.1 ;library
1329 license:gpl2+)))) ;command-line utilities
220193ad
LC
1330
1331(define-public unionfs-fuse
1332 (package
1333 (name "unionfs-fuse")
1334 (version "0.26")
1335 (source (origin
1336 (method url-fetch)
1337 (uri (string-append
1338 "http://podgorny.cz/unionfs-fuse/releases/unionfs-fuse-"
1339 version ".tar.xz"))
1340 (sha256
1341 (base32
1342 "0qpnr4czgc62vsfnmv933w62nq3xwcbnvqch72qakfgca75rsp4d"))))
1343 (build-system cmake-build-system)
1344 (inputs `(("fuse" ,fuse)))
1345 (arguments '(#:tests? #f)) ; no tests
1346 (home-page "http://podgorny.cz/moin/UnionFsFuse")
1347 (synopsis "User-space union file system")
1348 (description
1349 "UnionFS-FUSE is a flexible union file system implementation in user
1350space, using the FUSE library. Mounting a union file system allows you to
1351\"aggregate\" the contents of several directories into a single mount point.
1352UnionFS-FUSE additionally supports copy-on-write.")
3ac73271 1353 (license license:bsd-3)))
ed748588 1354
0b7a0c20
LC
1355(define fuse-static
1356 (package (inherit fuse)
1357 (name "fuse-static")
1358 (source (origin (inherit (package-source fuse))
1359 (modules '((guix build utils)))
1360 (snippet
1361 ;; Normally libfuse invokes mount(8) so that /etc/mtab is
1362 ;; updated. Change calls to 'mtab_needs_update' to 0 so that
1363 ;; it doesn't do that, allowing us to remove the dependency on
1364 ;; util-linux (something that is useful in initrds.)
1365 '(substitute* '("lib/mount_util.c"
1366 "util/mount_util.c")
1367 (("mtab_needs_update[[:blank:]]*\\([a-z_]+\\)")
1368 "0")
1369 (("/bin/")
1370 "")))))))
1371
ed748588
LC
1372(define-public unionfs-fuse/static
1373 (package (inherit unionfs-fuse)
1374 (synopsis "User-space union file system (statically linked)")
1375 (name (string-append (package-name unionfs-fuse) "-static"))
1376 (source (origin (inherit (package-source unionfs-fuse))
1377 (modules '((guix build utils)))
1378 (snippet
1379 ;; Add -ldl to the libraries, because libfuse.a needs that.
1380 '(substitute* "src/CMakeLists.txt"
1381 (("target_link_libraries(.*)\\)" _ libs)
1382 (string-append "target_link_libraries"
1383 libs " dl)"))))))
1384 (arguments
1385 '(#:tests? #f
1456cff1
LC
1386 #:configure-flags '("-DCMAKE_EXE_LINKER_FLAGS=-static")
1387 #:phases (alist-cons-after
1388 'install 'post-install
1389 (lambda* (#:key outputs #:allow-other-keys)
1390 (let* ((out (assoc-ref outputs "out"))
1391 (exe (string-append out "/bin/unionfs")))
1392 ;; By default, 'unionfs' keeps references to
1393 ;; $glibc/share/locale and similar stuff. Remove them.
1394 (remove-store-references exe)))
1395 %standard-phases)))
0b7a0c20 1396 (inputs `(("fuse" ,fuse-static)))))
67b66003 1397
db288efa
LC
1398(define-public sshfs-fuse
1399 (package
1400 (name "sshfs-fuse")
1401 (version "2.5")
1402 (source (origin
1403 (method url-fetch)
6959a132
LF
1404 (uri (let ((version-with-underscores
1405 (string-join (string-split version #\.) "_")))
1406 (string-append "https://github.com/libfuse/sshfs/releases/"
1407 "download/sshfs_" version-with-underscores
1408 "/sshfs-fuse-" version ".tar.gz")))
db288efa
LC
1409 (sha256
1410 (base32
1411 "0gp6qr33l2p0964j0kds0dfmvyyf5lpgsn11daf0n5fhwm9185z9"))))
1412 (build-system gnu-build-system)
1413 (inputs
1414 `(("fuse" ,fuse)
1415 ("glib" ,glib)))
1416 (native-inputs
1417 `(("pkg-config" ,pkg-config)))
1418 (home-page "http://fuse.sourceforge.net/sshfs.html")
1419 (synopsis "Mount remote file systems over SSH")
1420 (description
1421 "This is a file system client based on the SSH File Transfer Protocol.
1422Since most SSH servers already support this protocol it is very easy to set
1423up: on the server side there's nothing to do; on the client side mounting the
1424file system is as easy as logging into the server with an SSH client.")
3ac73271 1425 (license license:gpl2+)))
db288efa 1426
67b66003
LC
1427(define-public numactl
1428 (package
1429 (name "numactl")
e35dff97 1430 (version "2.0.11")
67b66003
LC
1431 (source (origin
1432 (method url-fetch)
1433 (uri (string-append
1434 "ftp://oss.sgi.com/www/projects/libnuma/download/numactl-"
1435 version
1436 ".tar.gz"))
1437 (sha256
1438 (base32
e35dff97 1439 "0qbqa9gac2vlahrngi553hws2mqgqdwv2lc69a3yx4gq6l90j325"))))
67b66003
LC
1440 (build-system gnu-build-system)
1441 (arguments
e35dff97 1442 '(;; There's a 'test' target, but it requires NUMA support in the kernel
67b66003
LC
1443 ;; to run, which we can't assume to have.
1444 #:tests? #f))
b0015064 1445
35dfcdd7
AE
1446 ;; NUMA is apparently not supported on armhf, see
1447 ;; http://www.spinics.net/lists/linux-numa/msg01157.html
1448 (supported-systems (delete "armhf-linux" %supported-systems))
67b66003
LC
1449 (home-page "http://oss.sgi.com/projects/libnuma/")
1450 (synopsis "Tools for non-uniform memory access (NUMA) machines")
1451 (description
1452 "NUMA stands for Non-Uniform Memory Access, in other words a system whose
1453memory is not all in one place. The numactl program allows you to run your
1454application program on specific CPU's and memory nodes. It does this by
1455supplying a NUMA memory policy to the operating system before running your
1456program.
1457
1458The package contains other commands, such as numademo, numastat and memhog.
1459The numademo command provides a quick overview of NUMA performance on your
1460system.")
3ac73271
LC
1461 (license (list license:gpl2 ;programs
1462 license:lgpl2.1)))) ;library
b10e9ff6
LC
1463
1464(define-public kbd
1465 (package
1466 (name "kbd")
710b4928 1467 (version "2.0.2")
b10e9ff6
LC
1468 (source (origin
1469 (method url-fetch)
1470 (uri (string-append "mirror://kernel.org/linux/utils/kbd/kbd-"
710b4928 1471 version ".tar.xz"))
b10e9ff6
LC
1472 (sha256
1473 (base32
710b4928 1474 "04mrms12nm5sas0nxs94yrr3hz7gmqhnmfgb9ff34bh1jszxmzcx"))
c8f60748
LC
1475 (modules '((guix build utils)))
1476 (snippet
f2cdcafb
LC
1477 '(begin
1478 (substitute* "tests/Makefile.in"
1479 ;; The '%: %.in' rule incorrectly uses @VERSION@.
1480 (("@VERSION@")
1481 "[@]VERSION[@]"))
1482 (substitute* '("src/unicode_start" "src/unicode_stop")
1483 ;; Assume the Coreutils are in $PATH.
1484 (("/usr/bin/tty")
1485 "tty"))))))
b10e9ff6
LC
1486 (build-system gnu-build-system)
1487 (arguments
5953d2b7
AK
1488 '(#:phases
1489 (modify-phases %standard-phases
1490 (add-before 'build 'pre-build
1491 (lambda* (#:key inputs #:allow-other-keys)
1492 (let ((gzip (assoc-ref %build-inputs "gzip"))
1493 (bzip2 (assoc-ref %build-inputs "bzip2")))
1494 (substitute* "src/libkeymap/findfile.c"
1495 (("gzip")
1496 (string-append gzip "/bin/gzip"))
1497 (("bzip2")
1498 (string-append bzip2 "/bin/bzip2"))))))
1499 (add-after 'install 'post-install
1500 (lambda* (#:key outputs #:allow-other-keys)
1501 ;; Make sure these programs find their comrades.
1502 (let* ((out (assoc-ref outputs "out"))
1503 (bin (string-append out "/bin")))
1504 (for-each (lambda (prog)
1505 (wrap-program (string-append bin "/" prog)
1506 `("PATH" ":" prefix (,bin))))
1507 '("unicode_start" "unicode_stop"))))))))
b10e9ff6 1508 (inputs `(("check" ,check)
f61e0e79
LC
1509 ("gzip" ,gzip)
1510 ("bzip2" ,bzip2)
b10e9ff6
LC
1511 ("pam" ,linux-pam)))
1512 (native-inputs `(("pkg-config" ,pkg-config)))
1513 (home-page "ftp://ftp.kernel.org/pub/linux/utils/kbd/")
1514 (synopsis "Linux keyboard utilities and keyboard maps")
1515 (description
1516 "This package contains keytable files and keyboard utilities compatible
1517for systems using the Linux kernel. This includes commands such as
1518'loadkeys', 'setfont', 'kbdinfo', and 'chvt'.")
3ac73271 1519 (license license:gpl2+)))
de0b620e
LC
1520
1521(define-public inotify-tools
1522 (package
1523 (name "inotify-tools")
1524 (version "3.13")
1525 (source (origin
1526 (method url-fetch)
1527 (uri (string-append
1528 "mirror://sourceforge/inotify-tools/inotify-tools/"
1529 version "/inotify-tools-" version ".tar.gz"))
1530 (sha256
1531 (base32
1532 "0icl4bx041axd5dvhg89kilfkysjj86hjakc7bk8n49cxjn4cha6"))))
1533 (build-system gnu-build-system)
1534 (home-page "http://inotify-tools.sourceforge.net/")
1535 (synopsis "Monitor file accesses")
1536 (description
1537 "The inotify-tools packages provides a C library and command-line tools
1538to use Linux' inotify mechanism, which allows file accesses to be monitored.")
3ac73271 1539 (license license:gpl2+)))
e062d542
AE
1540
1541(define-public kmod
1542 (package
1543 (name "kmod")
1544 (version "17")
1545 (source (origin
1546 (method url-fetch)
1547 (uri
1548 (string-append "mirror://kernel.org/linux/utils/kernel/kmod/"
1549 "kmod-" version ".tar.xz"))
1550 (sha256
1551 (base32
528b6a3d 1552 "1yid3a9b64a60ybj66fk2ysrq5klnl0ijl4g624cl16y8404g9rv"))
fc1adab1 1553 (patches (search-patches "kmod-module-directory.patch"))))
e062d542
AE
1554 (build-system gnu-build-system)
1555 (native-inputs
1556 `(("pkg-config" ,pkg-config)))
1557 (inputs
f61e0e79
LC
1558 `(("xz" ,xz)
1559 ("zlib" ,zlib)))
e062d542
AE
1560 (arguments
1561 `(#:tests? #f ; FIXME: Investigate test failures
4a8b4c25
LC
1562 #:configure-flags '("--with-xz" "--with-zlib")
1563 #:phases (alist-cons-after
1564 'install 'install-modprobe&co
1565 (lambda* (#:key outputs #:allow-other-keys)
1566 (let* ((out (assoc-ref outputs "out"))
1567 (bin (string-append out "/bin")))
1568 (for-each (lambda (tool)
1569 (symlink "kmod"
1570 (string-append bin "/" tool)))
1571 '("insmod" "rmmod" "lsmod" "modprobe"
1572 "modinfo" "depmod"))))
1573 %standard-phases)))
e062d542
AE
1574 (home-page "https://www.kernel.org/")
1575 (synopsis "Kernel module tools")
35b9e423 1576 (description "Kmod is a set of tools to handle common tasks with Linux
e062d542
AE
1577kernel modules like insert, remove, list, check properties, resolve
1578dependencies and aliases.
1579
1580These tools are designed on top of libkmod, a library that is shipped with
1581kmod. The aim is to be compatible with tools, configurations and indices
1582from the module-init-tools project.")
3ac73271 1583 (license license:gpl2+))) ; library under lgpl2.1+
d7d42d6b 1584
7fa715e7
LC
1585(define-public eudev
1586 ;; The post-systemd fork, maintained by Gentoo.
fe32c7f7 1587 (package
7fa715e7 1588 (name "eudev")
e75230c1 1589 (version "3.1.5")
7fa715e7
LC
1590 (source (origin
1591 (method url-fetch)
1592 (uri (string-append
1593 "http://dev.gentoo.org/~blueness/eudev/eudev-"
1594 version ".tar.gz"))
1595 (sha256
1596 (base32
e75230c1 1597 "0akg9gcc3c2p56xbhlvbybqavcprly5q0bvk655zwl6d62j8an7p"))
fc1adab1 1598 (patches (search-patches "eudev-rules-directory.patch"))))
fe32c7f7
MW
1599 (build-system gnu-build-system)
1600 (native-inputs
1601 `(("pkg-config" ,pkg-config)
e75230c1
SB
1602 ("perl" ,perl)
1603 ("gperf" ,gperf)))
fe32c7f7 1604 (inputs
255f7308
LC
1605 ;; When linked against libblkid, eudev can populate /dev/disk/by-label
1606 ;; and similar; it also installs the '60-persistent-storage.rules' file,
1607 ;; which contains the rules to do that.
1608 `(("util-linux" ,util-linux) ;for blkid
1609 ("kmod" ,kmod)))
e1921a38 1610 (home-page "https://wiki.gentoo.org/wiki/Project:Eudev")
fe32c7f7
MW
1611 (synopsis "Userspace device management")
1612 (description "Udev is a daemon which dynamically creates and removes
1613device nodes from /dev/, handles hotplug events and loads drivers at boot
1614time.")
3ac73271 1615 (license license:gpl2+)))
7fa715e7 1616
66269d47
LC
1617(define-public lvm2
1618 (package
1619 (name "lvm2")
1620 (version "2.02.109")
1621 (source (origin
1622 (method url-fetch)
1623 (uri (string-append "ftp://sources.redhat.com/pub/lvm2/releases/LVM2."
1624 version ".tgz"))
1625 (sha256
1626 (base32
1627 "1rv5ivg0l1w3nwzwdkqixm96h5bzg7ib4rr196ysb2lw42jmpjbv"))
1628 (modules '((guix build utils)))
1629 (snippet
1630 '(begin
1631 (use-modules (guix build utils))
1632
1633 ;; Honor sysconfdir.
1634 (substitute* "make.tmpl.in"
1635 (("confdir = .*$")
1636 "confdir = @sysconfdir@\n")
1637 (("DEFAULT_SYS_DIR = @DEFAULT_SYS_DIR@")
1638 "DEFAULT_SYS_DIR = @sysconfdir@"))))))
1639 (build-system gnu-build-system)
1640 (native-inputs
1641 `(("pkg-config" ,pkg-config)
1642 ("procps" ,procps))) ;tests use 'pgrep'
1643 (inputs
8fcaf8b1 1644 `(("udev" ,eudev)))
66269d47
LC
1645 (arguments
1646 '(#:phases (alist-cons-after
1647 'configure 'set-makefile-shell
1648 (lambda _
1649 ;; Use 'sh', not 'bash', so that '. lib/utils.sh' works as
1650 ;; expected.
1651 (setenv "SHELL" (which "sh"))
1652
1653 ;; Replace /bin/sh with the right file name.
1654 (patch-makefile-SHELL "make.tmpl"))
1655 %standard-phases)
1656
1657 #:configure-flags (list (string-append "--sysconfdir="
1658 (assoc-ref %outputs "out")
1659 "/etc/lvm")
1660 "--enable-udev_sync"
f2817d43
LC
1661 "--enable-udev_rules"
1662
1663 ;; Make sure programs such as 'dmsetup' can
1664 ;; find libdevmapper.so.
1665 (string-append "LDFLAGS=-Wl,-rpath="
1666 (assoc-ref %outputs "out")
1667 "/lib"))
66269d47
LC
1668
1669 ;; The tests use 'mknod', which requires root access.
1670 #:tests? #f))
1671 (home-page "http://sourceware.org/lvm2/")
1672 (synopsis "Logical volume management for Linux")
1673 (description
1674 "LVM2 is the logical volume management tool set for Linux-based systems.
1675This package includes the user-space libraries and tools, including the device
1676mapper. Kernel components are part of Linux-libre.")
1677
1678 ;; Libraries (liblvm2, libdevmapper) are LGPLv2.1.
1679 ;; Command-line tools are GPLv2.
3ac73271 1680 (license (list license:gpl2 license:lgpl2.1))))
66269d47 1681
000f7559
DT
1682(define-public wireless-tools
1683 (package
1684 (name "wireless-tools")
1685 (version "30.pre9")
1686 (source (origin
1687 (method url-fetch)
1688 (uri (string-append "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools."
1689 version ".tar.gz"))
1690 (sha256
1691 (base32
ec01f22d 1692 "0qscyd44jmhs4k32ggp107hlym1pcyjzihiai48xs7xzib4wbndb"))
ec01f22d 1693 (snippet
c2099a4c
MW
1694 '(begin
1695 ;; Remove the older header files that are not free software.
1696 (for-each (lambda (n)
1697 (delete-file (format #f "wireless.~a.h" n)))
1698 '(10 11 12 13 14 15 16 17 18 19 20))
1699 #t))))
000f7559
DT
1700 (build-system gnu-build-system)
1701 (arguments
c2099a4c
MW
1702 `(#:make-flags
1703 (list (string-append "PREFIX=" %output)
1704 (string-append "INSTALL_MAN=" %output "/share/man")
1705 (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")
1706 "BUILD_STATIC=")
1707 #:phases (modify-phases %standard-phases
1708 (delete 'configure))
000f7559
DT
1709 #:tests? #f))
1710 (synopsis "Tools for manipulating Linux Wireless Extensions")
fb9b7ce2
LC
1711 (description "Wireless Tools are used to manipulate the now-deprecated
1712Linux Wireless Extensions; consider using 'iw' instead. The Wireless
1713Extension was an interface allowing you to set Wireless LAN specific
1714parameters and get the specific stats. It is deprecated in favor the nl80211
1715interface.")
000f7559 1716 (home-page "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html")
c2099a4c
MW
1717 ;; wireless.21.h and wireless.22.h are distributed under lgpl2.1+, the
1718 ;; other files are distributed under gpl2.
3ac73271 1719 (license (list license:gpl2 license:lgpl2.1+))))
30016044 1720
cc205dac
LC
1721(define-public crda
1722 (package
1723 (name "crda")
1724 (version "3.18")
1725 (source (origin
1726 (method url-fetch)
1727 (uri (string-append "mirror://kernel.org/software/network/crda/"
1728 "crda-" version ".tar.xz"))
1729 (sha256
1730 (base32
1731 "1gydiqgb08d9gbx4l6gv98zg3pljc984m50hmn3ysxcbkxkvkz23"))
fc1adab1 1732 (patches (search-patches "crda-optional-gcrypt.patch"))))
cc205dac
LC
1733 (build-system gnu-build-system)
1734 (arguments
1735 '(#:phases (modify-phases %standard-phases
1736 (delete 'configure)
1737 (add-before
1738 'build 'no-werror-no-ldconfig
1739 (lambda _
1740 (substitute* "Makefile"
1741 (("-Werror") "")
1742 (("ldconfig") "true"))
1743 #t))
1744 (add-before
1745 'build 'set-regulator-db-file-name
1746 (lambda* (#:key inputs #:allow-other-keys)
1747 ;; Tell CRDA where to find our database.
1748 (let ((regdb (assoc-ref inputs "wireless-regdb")))
1749 (substitute* "crda.c"
1750 (("\"/lib/crda/regulatory.bin\"")
1751 (string-append "\"" regdb
1752 "/lib/crda/regulatory.bin\"")))
1753 #t))))
1754 #:test-target "verify"
1755 #:make-flags (let ((out (assoc-ref %outputs "out"))
1756 (regdb (assoc-ref %build-inputs "wireless-regdb")))
1757 (list "CC=gcc" "V=1"
1758
1759 ;; Disable signature-checking on 'regulatory.bin'.
1760 ;; The reason is that this simplifies maintenance
1761 ;; on our side (no need to manage a distro key
1762 ;; pair), and we can guarantee integrity of
1763 ;; 'regulatory.bin' by other means anyway, such as
1764 ;; 'guix gc --verify'. See
1765 ;; <https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb>
1766 ;; for a discssion.
1767 "USE_OPENSSL=0"
1768
1769 (string-append "PREFIX=" out)
1770 (string-append "SBINDIR=" out "/sbin/")
1771 (string-append "UDEV_RULE_DIR="
1772 out "/lib/udev/rules.d")
1773 (string-append "LDFLAGS=-Wl,-rpath="
1774 out "/lib -L.")
1775 (string-append "REG_BIN=" regdb
1776 "/lib/crda/regulatory.bin")))))
1777 (native-inputs `(("pkg-config" ,pkg-config)
1778 ("python" ,python-2)
1779 ("wireless-regdb" ,wireless-regdb)))
1780 (inputs `(("libnl" ,libnl)))
1781 (home-page
1782 "https://wireless.wiki.kernel.org/en/developers/Regulatory/CRDA")
1783 (synopsis "Central regulatory domain agent (CRDA) for WiFi")
1784 (description
1785 "The Central Regulatory Domain Agent (CRDA) acts as the udev helper for
1786communication between the kernel Linux and user space for regulatory
1787compliance.")
3ac73271 1788 (license license:copyleft-next)))
cc205dac 1789
c80b4a3e
LC
1790(define-public wireless-regdb
1791 (package
1792 (name "wireless-regdb")
1793 (version "2015.04.06")
1794 (source (origin
1795 (method url-fetch)
1796 (uri (string-append
1797 "mirror://kernel.org/software/network/wireless-regdb/"
1798 "wireless-regdb-" version ".tar.xz"))
1799 (sha256
1800 (base32
5568151f
LC
1801 "0czi83k311fp27z42hxjm8vi88fsbc23mhavv96lkb4pmari0jjc"))
1802
1803 ;; We're building 'regulatory.bin' by ourselves.
1804 (snippet '(delete-file "regulatory.bin"))))
c80b4a3e
LC
1805 (build-system gnu-build-system)
1806 (arguments
1807 '(#:phases (modify-phases %standard-phases
1808 (delete 'configure))
5568151f
LC
1809
1810 ;; The 'all' target of the makefile depends on $(REGDB_CHANGED), which
1811 ;; is computed and can be equal to 'maintainer-clean'; when that
1812 ;; happens, we can end up deleting the 'regulatory.bin' file that we
1813 ;; just built. Thus, build things sequentially.
1814 #:parallel-build? #f
1815
c80b4a3e
LC
1816 #:tests? #f ;no tests
1817 #:make-flags (let ((out (assoc-ref %outputs "out")))
1818 (list (string-append "PREFIX=" out)
1819 (string-append "LSB_ID=GuixSD")
1820 (string-append "DISTRO_PUBKEY=/dev/null")
1821 (string-append "DISTRO_PRIVKEY=/dev/null")
1822 (string-append "REGDB_PUBKEY=/dev/null")
1823
1824 ;; Leave that empty so that db2bin.py doesn't try
1825 ;; to sign 'regulatory.bin'. This allows us to
1826 ;; avoid managing a key pair for the whole distro.
1827 (string-append "REGDB_PRIVKEY=")))))
1828 (native-inputs `(("python" ,python-2)))
1829 (home-page
1830 "https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb")
1831 (synopsis "Wireless regulatory database")
1832 (description
1833 "This package contains the wireless regulatory database Central
1834Regulatory Database Agent (CRDA) daemon. The database contains information on
1835country-specific regulations for the wireless spectrum.")
3ac73271 1836 (license license:isc)))
c80b4a3e 1837
30016044
MW
1838(define-public lm-sensors
1839 (package
1840 (name "lm-sensors")
1841 (version "3.3.5")
1842 (source (origin
1843 (method url-fetch)
1844 (uri (string-append
3a04d5d4 1845 "ftp://ftp.netroedge.com/pub/lm-sensors/lm_sensors-"
30016044
MW
1846 version ".tar.bz2"))
1847 (sha256
1848 (base32
1849 "1ksgrynxgrq590nb2fwxrl1gwzisjkqlyg3ljfd1al0ibrk6mbjx"))
fc1adab1 1850 (patches (search-patches "lm-sensors-hwmon-attrs.patch"))))
30016044
MW
1851 (build-system gnu-build-system)
1852 (inputs `(("rrdtool" ,rrdtool)
1853 ("perl" ,perl)
1854 ("kmod" ,kmod)
1855 ("gnuplot" ,gnuplot)))
1856 (native-inputs `(("pkg-config" ,pkg-config)
1857 ("flex" ,flex)
1858 ("bison" ,bison)
1859 ("which" ,which)))
1860 (arguments
1861 `(#:tests? #f ; no 'check' target
1862 #:make-flags (list (string-append "PREFIX=" %output)
1863 (string-append "ETCDIR=" %output "/etc")
1864 (string-append "MANDIR=" %output "/share/man"))
1865 #:phases
1866 (alist-delete
1867 'configure
1868 (alist-cons-before
1869 'build 'patch-exec-paths
1870 (lambda* (#:key inputs outputs #:allow-other-keys)
1871 (substitute* "prog/detect/sensors-detect"
1872 (("`uname")
1873 (string-append "`" (assoc-ref inputs "coreutils")
1874 "/bin/uname"))
1875 (("(`|\")modprobe" all open-quote)
1876 (string-append open-quote
1877 (assoc-ref inputs "kmod")
1878 "/bin/modprobe")))
1879 (substitute* '("prog/pwm/pwmconfig"
1880 "prog/pwm/fancontrol")
1881 (("gnuplot")
1882 (string-append (assoc-ref inputs "gnuplot")
1883 "/bin/gnuplot"))
1884 (("cat ")
1885 (string-append (assoc-ref inputs "coreutils")
1886 "/bin/cat "))
1887 (("egrep ")
1888 (string-append (assoc-ref inputs "grep")
1889 "/bin/egrep "))
1890 (("sed -e")
1891 (string-append (assoc-ref inputs "sed")
1892 "/bin/sed -e"))
1893 (("cut -d")
1894 (string-append (assoc-ref inputs "coreutils")
1895 "/bin/cut -d"))
1896 (("sleep ")
1897 (string-append (assoc-ref inputs "coreutils")
1898 "/bin/sleep "))
1899 (("readlink -f")
1900 (string-append (assoc-ref inputs "coreutils")
1901 "/bin/readlink -f"))))
1902 %standard-phases))))
3a04d5d4 1903 (home-page "http://jdelvare.nerim.net/devel.html#lmsensors")
30016044
MW
1904 (synopsis "Utilities to read temperature/voltage/fan sensors")
1905 (description
35b9e423 1906 "Lm-sensors is a hardware health monitoring package for Linux. It allows
30016044
MW
1907you to access information from temperature, voltage, and fan speed sensors.
1908It works with most newer systems.")
3ac73271 1909 (license license:gpl2+)))
b087d413 1910
f5b2a53d
RW
1911(define-public i2c-tools
1912 (package
1913 (name "i2c-tools")
1914 (version "3.1.1")
1915 (source (origin
1916 (method url-fetch)
1917 (uri (string-append
f32274a7 1918 "http://jdelvare.nerim.net/mirror/i2c-tools/i2c-tools-"
f5b2a53d
RW
1919 version ".tar.bz2"))
1920 (sha256
1921 (base32
1922 "000pvg995qy1b15ks59gd0klri55hb33kqpg5czy84hw1pbdgm0l"))))
1923 (build-system gnu-build-system)
1924 (arguments
1925 `(#:tests? #f ; no 'check' target
1926 #:make-flags (list (string-append "prefix=" %output)
1927 "CC=gcc")
1928 ;; no configure script
1929 #:phases (alist-delete 'configure %standard-phases)))
bccf27cb
RW
1930 (inputs
1931 `(("perl" ,perl)))
f32274a7 1932 (home-page "http://jdelvare.nerim.net/devel.html#i2ctools")
f5b2a53d
RW
1933 (synopsis "I2C tools for Linux")
1934 (description
1935 "The i2c-tools package contains a heterogeneous set of I2C tools for
1936Linux: a bus probing tool, a chip dumper, register-level SMBus access helpers,
1937EEPROM decoding scripts, EEPROM programming tools, and a python module for
1938SMBus access.")
3ac73271 1939 (license license:gpl2+)))
f5b2a53d 1940
b087d413
MW
1941(define-public xsensors
1942 (package
1943 (name "xsensors")
1944 (version "0.70")
1945 (source (origin
1946 (method url-fetch)
1947 (uri (string-append
1948 "http://www.linuxhardware.org/xsensors/xsensors-"
1949 version ".tar.gz"))
1950 (sha256
1951 (base32
1952 "1siplsfgvcxamyqf44h71jx6jdfmvhfm7mh0y1q8ps4zs6pj2zwh"))))
1953 (build-system gnu-build-system)
1954 (inputs `(("lm-sensors" ,lm-sensors)
1955 ("gtk" ,gtk+-2)))
1956 (native-inputs `(("pkg-config" ,pkg-config)))
1957 (arguments
1958 `(#:phases (alist-cons-before
1959 'configure 'enable-deprecated
1960 (lambda _
1961 (substitute* "src/Makefile.in"
1962 (("-DGDK_DISABLE_DEPRECATED") "")
1963 (("-DGTK_DISABLE_DEPRECATED") "")))
1964 (alist-cons-before
1965 'configure 'remove-Werror
1966 (lambda _
1967 (substitute* '("configure" "src/Makefile.in")
1968 (("-Werror") "")))
1969 %standard-phases))))
1970 (home-page "http://www.linuxhardware.org/xsensors/")
1971 (synopsis "Hardware health information viewer")
1972 (description
35b9e423 1973 "Xsensors reads data from the libsensors library regarding hardware
b087d413
MW
1974health such as temperature, voltage and fan speed and displays the information
1975in a digital read-out.")
3ac73271 1976 (license license:gpl2+)))
b62fe07f
LC
1977
1978(define-public perf
1979 (package
1980 (name "perf")
1981 (version (package-version linux-libre))
1982 (source (package-source linux-libre))
1983 (build-system gnu-build-system)
1984 (arguments
1985 '(#:phases (alist-replace
1986 'configure
1987 (lambda* (#:key inputs #:allow-other-keys)
1988 (setenv "SHELL_PATH" (which "bash"))
1989 (chdir "tools/perf"))
1990 %standard-phases)
1991 #:make-flags (list (string-append "DESTDIR="
1992 (assoc-ref %outputs "out"))
2af29d23
LC
1993 "WERROR=0"
1994
1995 ;; By default, 'config/Makefile' uses lib64 on
1996 ;; x86_64. Work around that.
1997 "lib=lib")
b62fe07f
LC
1998 #:tests? #f)) ;no tests
1999 (native-inputs
2000 `(("pkg-config" ,pkg-config)
2001 ("bison" ,bison)
2002 ("flex" ,flex)
2003
2004 ;; There are build scripts written in these languages.
2005 ("perl" ,perl)
2006 ("python" ,python-2)))
2007 (inputs
b1fb4b23 2008 `(("slang" ,slang) ;for the interactive TUI
b62fe07f 2009 ;; ("newt" ,newt)
6c030d10 2010 ("python" ,python-2) ;'perf' links against libpython
b62fe07f
LC
2011 ("elfutils" ,elfutils)
2012
d7ece67a
LC
2013 ;; Documentation.
2014 ("libxml2" ,libxml2) ;for $XML_CATALOG_FILES
2015 ("libxslt" ,libxslt)
2016 ("docbook-xml" ,docbook-xml)
2017 ("docbook-xsl" ,docbook-xsl)
2018 ("xmlto" ,xmlto)
2019 ("asciidoc" ,asciidoc)))
b62fe07f
LC
2020 (home-page "https://perf.wiki.kernel.org/")
2021 (synopsis "Linux profiling with performance counters")
2022 (description
2023 "perf is a tool suite for profiling using hardware performance counters,
2024with support in the Linux kernel. perf can instrument CPU performance
2025counters, tracepoints, kprobes, and uprobes (dynamic tracing). It is capable
2026of lightweight profiling. This package contains the user-land tools and in
2027particular the 'perf' command.")
2028 (license (package-license linux-libre))))
c09e60e4
DT
2029
2030(define-public pflask
2031 (package
2032 (name "pflask")
2033 (version "0.2")
2034 (source (origin
2035 (method url-fetch)
2036 (uri (string-append "https://github.com/ghedo/pflask/archive/v"
2037 version ".tar.gz"))
f586c877 2038 (file-name (string-append name "-" version ".tar.gz"))
c09e60e4
DT
2039 (sha256
2040 (base32
2041 "1g8fjj67dfkc2s0852l9vqi1pm61gp4rxbpzbzg780f5s5hd1fys"))))
2042 (build-system cmake-build-system)
2043 (arguments
2044 '(#:tests? #f)) ; no tests
2045 (home-page "http://ghedo.github.io/pflask/")
2046 (synopsis "Simple tool for creating Linux namespace containers")
2047 (description "pflask is a simple tool for creating Linux namespace
2048containers. It can be used for running a command or even booting an OS inside
2049an isolated container, created with the help of Linux namespaces. It is
2050similar in functionality to chroot, although pflask provides better isolation
2051thanks to the use of namespaces.")
3ac73271 2052 (license license:bsd-2)))
288084d5
MW
2053
2054(define-public hdparm
2055 (package
2056 (name "hdparm")
2057 (version "9.45")
2058 (source (origin
2059 (method url-fetch)
2060 (uri (string-append "mirror://sourceforge/" name "/"
2061 name "-" version ".tar.gz"))
2062 (sha256
2063 (base32
2064 "0sc6yf3k6sd7n6a2ig2my9fjlqpak3znlyw7jw4cz5d9asm1rc13"))))
2065 (build-system gnu-build-system)
2066 (arguments
2067 `(#:make-flags (let ((out (assoc-ref %outputs "out")))
2068 (list (string-append "binprefix=" out)
2069 (string-append "manprefix=" out)
2070 "CC=gcc"))
2071 #:phases (alist-delete 'configure %standard-phases)
2072 #:tests? #f)) ; no test suite
2073 (home-page "http://sourceforge.net/projects/hdparm/")
e881752c 2074 (synopsis "Tune hard disk parameters for high performance")
288084d5
MW
2075 (description
2076 "Get/set device parameters for Linux SATA/IDE drives. It's primary use
e881752c 2077is for enabling irq-unmasking and IDE multiple-mode.")
3ac73271 2078 (license (license:non-copyleft "file://LICENSE.TXT"))))
288084d5 2079
c755c854
MW
2080(define-public rfkill
2081 (package
2082 (name "rfkill")
2083 (version "0.5")
2084 (source (origin
2085 (method url-fetch)
2086 (uri (string-append "mirror://kernel.org/software/network/"
2087 name "/" name "-" version ".tar.xz"))
2088 (sha256
2089 (base32
2090 "0snqj5h0y991lszbigbyyqb8swj0hxajc1vfqg2scfay44231bp0"))))
2091 (build-system gnu-build-system)
2092 (arguments
2093 `(#:make-flags (list "CC=gcc"
2094 (string-append "PREFIX=" %output))
2095 #:phases (modify-phases %standard-phases
2096 (delete 'configure))
2097 #:tests? #f))
2098 (home-page "https://wireless.wiki.kernel.org/en/users/Documentation/rfkill")
2099 (synopsis "Tool for enabling and disabling wireless devices")
2100 (description
2101 "rfkill is a simple tool for accessing the rfkill device interface,
2102which is used to enable and disable wireless networking devices, typically
2103WLAN, Bluetooth and mobile broadband.")
3ac73271
LC
2104 (license (license:non-copyleft "file://COPYING"
2105 "See COPYING in the distribution."))))
c755c854 2106
57a516d3
LC
2107(define-public acpid
2108 (package
2109 (name "acpid")
2110 (version "2.0.23")
2111 (source (origin
2112 (method url-fetch)
2113 (uri (string-append "mirror://sourceforge/acpid2/acpid-"
2114 version ".tar.xz"))
2115 (sha256
2116 (base32
2117 "1vl7c6vc724v4jwki17czgj6lnrknnj1a6llm8gkl32i2gnam5j3"))))
2118 (build-system gnu-build-system)
2119 (home-page "http://sourceforge.net/projects/acpid2/")
2120 (synopsis "Daemon for delivering ACPI events to user-space programs")
2121 (description
2122 "acpid is designed to notify user-space programs of Advanced
2123Configuration and Power Interface (ACPI) events. acpid should be started
2124during the system boot, and will run as a background process. When an ACPI
2125event is received from the kernel, acpid will examine the list of rules
2126specified in /etc/acpi/events and execute the rules that match the event.")
3ac73271 2127 (license license:gpl2+)))
37f5caec
TUBK
2128
2129(define-public sysfsutils
2130 (package
2131 (name "sysfsutils")
2132 (version "2.1.0")
2133 (source
2134 (origin
2135 (method url-fetch)
2136 (uri
2137 (string-append
2138 "mirror://sourceforge/linux-diag/sysfsutils/" version "/sysfsutils-"
2139 version ".tar.gz"))
2140 (sha256
2141 (base32 "12i0ip11xbfcjzxz4r10cvz7mbzgq1hfcdn97w6zz7sm3wndwrg8"))))
2142 (build-system gnu-build-system)
2143 (home-page "http://linux-diag.sourceforge.net/Sysfsutils.html")
2144 (synopsis "System utilities based on Linux sysfs")
2145 (description
69b4ffcf 2146 "These are a set of utilities built upon sysfs, a virtual filesystem in
37f5caec
TUBK
2147Linux kernel versions 2.5+ that exposes a system's device tree. The package
2148also contains the libsysfs library.")
2149 ;; The library is under lgpl2.1+ (all files say "or any later version").
2150 ;; The rest is mostly gpl2, with a few files indicating gpl2+.
3ac73271 2151 (license (list license:gpl2 license:gpl2+ license:lgpl2.1+))))
a9a1a40b
TUBK
2152
2153(define-public sysfsutils-1
2154 (package
2155 (inherit sysfsutils)
2156 (version "1.3.0")
2157 (source
2158 (origin
2159 (method url-fetch)
2160 (uri
2161 (string-append
2162 "mirror://sourceforge/linux-diag/sysfsutils/sysfsutils-" version
2163 "/sysfsutils-" version ".tar.gz"))
2164 (sha256
2165 (base32 "0kdhs07fm8263pxwd5blwn2x211cg4fk63fyf9ijcdkvzmwxrqq3"))
2166 (modules '((guix build utils)))
2167 (snippet
2168 '(begin
2169 (substitute* "Makefile.in"
2170 (("includedir = /usr/include/sysfs")
2171 "includedir = @includedir@"))
2172 (substitute* "configure"
2173 (("includedir='(\\$\\{prefix\\}/include)'" all orig)
2174 (string-append "includedir='" orig "/sysfs'")))))))
2175 (synopsis "System utilities based on Linux sysfs (version 1.x)")))
e6caa52d
TUBK
2176
2177(define-public cpufrequtils
2178 (package
2179 (name "cpufrequtils")
2180 (version "0.3")
2181 (source
2182 (origin
2183 (method url-fetch)
2184 (uri
2185 (string-append
2186 "https://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufrequtils-"
2187 version ".tar.gz"))
2188 (sha256
2189 (base32 "0qfqv7nqmjfr3p0bwrdlxkiqwqr7vmx053cadaa548ybqbghxmvm"))
fc1adab1 2190 (patches (search-patches "cpufrequtils-fix-aclocal.patch"))))
e6caa52d
TUBK
2191 (build-system gnu-build-system)
2192 (native-inputs
2193 `(("sysfsutils" ,sysfsutils-1)))
2194 (arguments
2195 '(#:make-flags (list (string-append "LDFLAGS=-Wl,-rpath="
2196 (assoc-ref %outputs "out") "/lib"))))
2197 (home-page "https://www.kernel.org/pub/linux/utils/kernel/cpufreq/")
2198 (synopsis "Utilities to get and set CPU frequency on Linux")
2199 (description
e881752c 2200 "The cpufrequtils suite contains utilities to retrieve CPU frequency
e6caa52d
TUBK
2201information, and set the CPU frequency if supported, using the cpufreq
2202capabilities of the Linux kernel.")
3ac73271 2203 (license license:gpl2)))
0a588bf9
SB
2204
2205(define-public libraw1394
2206 (package
2207 (name "libraw1394")
2208 (version "2.1.0")
2209 (source (origin
2210 (method url-fetch)
2211 (uri (string-append
2212 "mirror://kernel.org/linux/libs/ieee1394/"
2213 name "-" version ".tar.xz"))
2214 (sha256
2215 (base32
2216 "0kwnf4ha45c04mhc4yla672aqmvqqihxix1gvblns5cd2pc2cc8b"))))
2217 (build-system gnu-build-system)
2218 (home-page "https://ieee1394.wiki.kernel.org/index.php/Main_Page")
2219 (synopsis "Interface library for the Linux IEEE1394 drivers")
2220 (description
2221 "Libraw1394 is the only supported interface to the kernel side raw1394 of
2222the Linux IEEE-1394 subsystem, which provides direct access to the connected
22231394 buses to user space. Through libraw1394/raw1394, applications can directly
2224send to and receive from other nodes without requiring a kernel driver for the
2225protocol in question.")
3ac73271 2226 (license license:lgpl2.1+)))
68e3c29d
SB
2227
2228(define-public libavc1394
2229 (package
2230 (name "libavc1394")
2231 (version "0.5.4")
2232 (source (origin
2233 (method url-fetch)
2234 (uri (string-append "mirror://sourceforge/libavc1394/"
2235 name "-" version ".tar.gz"))
2236 (sha256
2237 (base32
2238 "0lsv46jdqvdx5hx92v0z2cz3yh6212pz9gk0k3513sbaa04zzcbw"))))
2239 (build-system gnu-build-system)
2240 (native-inputs
2241 `(("pkg-config" ,pkg-config)))
2242 (propagated-inputs
2243 `(("libraw1394" ,libraw1394))) ; required by libavc1394.pc
2244 (home-page "http://sourceforge.net/projects/libavc1394/")
2245 (synopsis "AV/C protocol library for IEEE 1394")
2246 (description
2247 "Libavc1394 is a programming interface to the AV/C specification from
69b4ffcf 2248the 1394 Trade Association. AV/C stands for Audio/Video Control.")
3ac73271 2249 (license license:lgpl2.1+)))
3f7bf86a
SB
2250
2251(define-public libiec61883
2252 (package
2253 (name "libiec61883")
2254 (version "1.2.0")
2255 (source (origin
2256 (method url-fetch)
2257 (uri (string-append
2258 "mirror://kernel.org/linux/libs/ieee1394/"
2259 name "-" version ".tar.xz"))
2260 (sha256
2261 (base32
2262 "17ph458zya2l8dr2xwqnzy195qd9swrir31g78qkgb3g4xz2rq6i"))))
2263 (build-system gnu-build-system)
2264 (native-inputs
2265 `(("pkg-config" ,pkg-config)))
2266 (propagated-inputs
2267 `(("libraw1394" ,libraw1394))) ; required by libiec61883.pc
2268 (home-page "https://ieee1394.wiki.kernel.org/index.php/Main_Page")
2269 (synopsis "Isochronous streaming media library for IEEE 1394")
2270 (description
2271 "The libiec61883 library provides a higher level API for streaming DV,
2272MPEG-2 and audio over Linux IEEE 1394.")
3ac73271 2273 (license license:lgpl2.1+)))
69159125
MW
2274
2275(define-public mdadm
2276 (package
2277 (name "mdadm")
2278 (version "3.3.2")
2279 (source (origin
2280 (method url-fetch)
2281 (uri (string-append
2282 "mirror://kernel.org/linux/utils/raid/mdadm/mdadm-"
2283 version ".tar.xz"))
2284 (sha256
2285 (base32
9a6953d2 2286 "132vdvh3myjgcjn6i9w90ck16ddjxjcszklzkyvr4f5ifqd7wfhg"))
fc1adab1 2287 (patches (search-patches "mdadm-gcc-4.9-fix.patch"))))
69159125
MW
2288 (build-system gnu-build-system)
2289 (inputs
2290 `(("udev" ,eudev)))
2291 (arguments
2292 `(#:make-flags (let ((out (assoc-ref %outputs "out")))
2293 (list "INSTALL=install"
2294 "CHECK_RUN_DIR=0"
2295 ;; TODO: tell it where to find 'sendmail'
2296 ;; (string-append "MAILCMD=" <???> "/sbin/sendmail")
2297 (string-append "BINDIR=" out "/sbin")
2298 (string-append "MANDIR=" out "/share/man")
2299 (string-append "UDEVDIR=" out "/lib/udev")))
2300 #:phases (alist-cons-before
2301 'build 'patch-program-paths
2302 (lambda* (#:key inputs #:allow-other-keys)
2303 (let ((coreutils (assoc-ref inputs "coreutils")))
2304 (substitute* "udev-md-raid-arrays.rules"
2305 (("/usr/bin/(readlink|basename)" all program)
2306 (string-append coreutils "/bin/" program)))))
2307 (alist-delete 'configure %standard-phases))
2308 ;;tests must be done as root
2309 #:tests? #f))
2310 (home-page "http://neil.brown.name/blog/mdadm")
2311 (synopsis "Tool for managing Linux Software RAID arrays")
2312 (description
2313 "mdadm is a tool for managing Linux Software RAID arrays. It can create,
2314assemble, report on, and monitor arrays. It can also move spares between raid
2315arrays when needed.")
3ac73271 2316 (license license:gpl2+)))
01ccdfb6
SB
2317
2318(define-public libaio
2319 (package
2320 (name "libaio")
2321 (version "0.3.110")
2322 (source (origin
2323 (method url-fetch)
2324 (uri (list
2325 (string-append "mirror://debian/pool/main/liba/libaio/"
2326 name "_" version ".orig.tar.gz")
2327 (string-append "https://fedorahosted.org/releases/l/i/libaio/"
2328 name "-" version ".tar.gz")))
2329 (sha256
2330 (base32
2331 "0zjzfkwd1kdvq6zpawhzisv7qbq1ffs343i5fs9p498pcf7046g0"))))
2332 (build-system gnu-build-system)
2333 (arguments
2334 '(#:make-flags
2335 (list "CC=gcc" (string-append "prefix=" %output))
2336 #:test-target "partcheck" ; need root for a full 'check'
2337 #:phases
2338 (alist-delete 'configure %standard-phases))) ; no configure script
2339 (home-page "http://lse.sourceforge.net/io/aio.html")
2340 (synopsis "Linux-native asynchronous I/O access library")
2341 (description
2342 "This library enables userspace to use Linux kernel asynchronous I/O
2343system calls, important for the performance of databases and other advanced
2344applications.")
3ac73271 2345 (license license:lgpl2.1+)))
eb7c43c3
DT
2346
2347(define-public bluez
2348 (package
2349 (name "bluez")
9c1c2a7f 2350 (version "5.36")
eb7c43c3
DT
2351 (source (origin
2352 (method url-fetch)
2353 (uri (string-append
2354 "https://www.kernel.org/pub/linux/bluetooth/bluez-"
2355 version ".tar.xz"))
2356 (sha256
2357 (base32
9c1c2a7f 2358 "1wkqwmi5krr37mxcqqlp5m2xnw7vw70v3ww7j09vvlskxcdflhx3"))))
eb7c43c3
DT
2359 (build-system gnu-build-system)
2360 (arguments
2361 '(#:configure-flags
2362 (let ((out (assoc-ref %outputs "out")))
53142109
AE
2363 (list "--enable-library"
2364 "--disable-systemd"
eb7c43c3
DT
2365 ;; Install dbus/udev files to the correct location.
2366 (string-append "--with-dbusconfdir=" out "/etc")
2367 (string-append "--with-udevdir=" out "/lib/udev")))))
2368 (native-inputs
2369 `(("pkg-config" ,pkg-config)
2370 ("gettext" ,gnu-gettext)))
2371 (inputs
2372 `(("glib" ,glib)
2373 ("dbus" ,dbus)
2374 ("eudev" ,eudev)
2375 ("libical" ,libical)
2376 ("readline" ,readline)))
2377 (home-page "http://www.bluez.org/")
2378 (synopsis "Linux Bluetooth protocol stack")
2379 (description
2380 "BlueZ provides support for the core Bluetooth layers and protocols. It
2381is flexible, efficient and uses a modular implementation.")
3ac73271 2382 (license license:gpl2+)))
3d890318
LC
2383
2384(define-public fuse-exfat
2385 (package
2386 (name "fuse-exfat")
2387 (version "1.1.0")
2388 (source (origin
2389 (method url-fetch)
2390 (uri "https://docs.google.com/uc?export=download&\
2391id=0B7CLI-REKbE3VTdaa0EzTkhYdU0")
2392 (sha256
2393 (base32
2394 "0glmgwrf0nv09am54i6s35ksbvrywrwc51w6q32mv5by8475530r"))
2395 (file-name (string-append name "-" version ".tar.gz"))))
2396 (build-system gnu-build-system)
2397 (native-inputs
2398 `(("scons" ,scons)
2399 ("pkg-config" ,pkg-config)))
2400 (inputs
2401 `(("fuse" ,fuse)))
2402 (arguments
2403 '(#:tests? #f ;no test suite
2404
2405 ;; XXX: Factorize with 'exfat-utils'.
2406 #:phases (modify-phases %standard-phases
2407 (delete 'configure)
2408 (add-after 'unpack 'scons-propagate-environment
2409 (lambda _
2410 ;; Modify the SConstruct file to arrange for
2411 ;; environment variables to be propagated.
2412 (substitute* "SConstruct"
2413 (("^env = Environment\\(")
2414 "env = Environment(ENV=os.environ, "))))
2415 (replace 'build
2416 (lambda _
2417 (zero? (system* "scons"))))
2418 (replace 'install
2419 (lambda* (#:key outputs #:allow-other-keys)
2420 (let* ((out (assoc-ref outputs "out"))
2421 (bin (string-append out "/bin"))
2422 (man8 (string-append out
2423 "/share/man/man8")))
2424 (mkdir-p bin)
2425 (mkdir-p man8)
2426 (for-each (lambda (file)
2427 (copy-file
2428 file
2429 (string-append man8 "/"
2430 (basename file))))
2431 (find-files "." "\\.8$"))
2432 (zero? (system* "scons" "install"
2433 (string-append "DESTDIR="
2434 bin)))))))))
2435 (home-page "http://code.google.com/p/exfat/")
2436 (synopsis "Mount exFAT file systems")
2437 (description
2438 "This package provides a FUSE-based file system that provides read and
2439write access to exFAT devices.")
3ac73271 2440 (license license:gpl2+)))
53ec8d48
LC
2441
2442(define-public gpm
2443 (package
2444 (name "gpm")
2445 (version "1.20.7")
2446 (source (origin
2447 (method url-fetch)
2448 (uri (string-append
2449 "http://www.nico.schottelius.org/software/gpm/archives/gpm-"
2450 version ".tar.bz2"))
2451 (sha256
2452 (base32
2453 "13d426a8h403ckpc8zyf7s2p5rql0lqbg2bv0454x0pvgbfbf4gh"))))
2454 (build-system gnu-build-system)
2455 (arguments
2456 '(#:phases (modify-phases %standard-phases
2457 (add-before 'configure 'bootstrap
2458 (lambda _
2459 ;; The tarball was not generated with 'make dist' so we
2460 ;; need to bootstrap things ourselves.
2461 (and (zero? (system* "./autogen.sh"))
2462 (begin
2463 (patch-makefile-SHELL "Makefile.include.in")
2464 #t)))))
2465
2466 ;; Make sure programs find libgpm.so.
2467 #:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath="
2468 (assoc-ref %outputs "out")
2469 "/lib"))))
2470 (native-inputs
2471 `(("texinfo" ,texinfo)
2472 ("bison" ,bison)
2473 ("flex" ,flex)
2474 ("autoconf" ,autoconf)
2475 ("automake" ,automake)
2476 ("libtool" ,libtool)))
2477 (home-page "http://www.nico.schottelius.org/software/gpm/")
2478 (synopsis "Mouse support for the Linux console")
2479 (description
2480 "The GPM (general-purpose mouse) daemon is a mouse server for
2481applications running on the Linux console. It allows users to select items
2482and copy/paste text in the console and in xterm.")
3ac73271 2483 (license license:gpl2+)))
fc686f9a
TGR
2484
2485(define-public btrfs-progs
2486 (package
2487 (name "btrfs-progs")
916627b4 2488 (version "4.5.1")
fc686f9a
TGR
2489 (source (origin
2490 (method url-fetch)
2491 (uri (string-append "mirror://kernel.org/linux/kernel/"
2492 "people/kdave/btrfs-progs/"
2493 "btrfs-progs-v" version ".tar.xz"))
2494 (sha256
2495 (base32
916627b4 2496 "1znf2zhb56zbmdjk3lq107678xwsqwc5gczspypmc5i31qnppy7f"))))
fc686f9a
TGR
2497 (build-system gnu-build-system)
2498 (arguments
08fbfa8d 2499 '(#:test-target "test"
fc686f9a
TGR
2500 #:parallel-tests? #f)) ; tests fail when run in parallel
2501 (inputs `(("e2fsprogs" ,e2fsprogs)
2502 ("libblkid" ,util-linux)
2503 ("libuuid" ,util-linux)
2504 ("zlib" ,zlib)
2505 ("lzo" ,lzo)))
2506 (native-inputs `(("pkg-config" ,pkg-config)
2507 ("asciidoc" ,asciidoc)
2508 ("xmlto" ,xmlto)
2509 ;; For building documentation
2510 ("libxml2" ,libxml2)
2511 ("docbook-xml" ,docbook-xml)
2512 ("docbook-xsl" ,docbook-xsl)))
2513 (home-page "https://btrfs.wiki.kernel.org/")
2514 (synopsis "Create and manage btrfs copy-on-write file systems")
2515 (description "Btrfs is a copy-on-write (CoW) filesystem for Linux aimed at
2516implementing advanced features while focusing on fault tolerance, repair and
2517easy administration.")
68bcac6b
LF
2518 ;; GPL2+: crc32.c, radix-tree.c, raid6.c, rbtree.c.
2519 ;; GPL2: Everything else.
2520 (license (list license:gpl2 license:gpl2+))))
08e9daf5
TGR
2521
2522(define-public freefall
2523 (package
2524 (name "freefall")
2525 (version (package-version linux-libre))
2526 (source (package-source linux-libre))
2527 (build-system gnu-build-system)
2528 (arguments
2529 '(#:phases (modify-phases %standard-phases
2530 (add-after 'unpack 'enter-subdirectory
2531 (lambda _
2532 (chdir "tools/laptop/freefall")))
2533 (delete 'configure)
2534 (add-before 'build 'increase-timeout
2535 (lambda _
2536 ;; The default of 2 seconds is too low: it assumes an
2537 ;; open lid and AC power without actually checking.
2538 (substitute* "freefall.c"
2539 (("alarm\\(2\\)") "alarm(5)")))))
2540 #:make-flags (list (string-append "PREFIX="
2541 (assoc-ref %outputs "out")))
2542 #:tests? #f)) ;no tests
2543 (home-page (package-home-page linux-libre))
2544 (synopsis "Free-fall protection for spinning laptop hard drives")
2545 (description
2546 "Prevents shock damage to the internal spinning hard drive(s) of some
2547HP and Dell laptops. When sudden movement is detected, all input/output
2548operations on the drive are suspended and its heads are parked on the ramp,
2549where they are less likely to cause damage to the spinning disc. Requires a
2550drive that supports the ATA/ATAPI-7 IDLE IMMEDIATE command with unload
2551feature, and a laptop with an accelerometer. It has no effect on SSDs.")
2552 (license license:gpl2)))