gnu: graphviz: Fix typo.
[jackhill/guix/guix.git] / gnu / packages / linux.scm
CommitLineData
233e7676 1;;; GNU Guix --- Functional package management for GNU
e47e3eff 2;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
233e7676 3;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
fd76c904 4;;;
233e7676 5;;; This file is part of GNU Guix.
fd76c904 6;;;
233e7676 7;;; GNU Guix is free software; you can redistribute it and/or modify it
fd76c904
LC
8;;; under the terms of the GNU General Public License as published by
9;;; the Free Software Foundation; either version 3 of the License, or (at
10;;; your option) any later version.
11;;;
233e7676 12;;; GNU Guix is distributed in the hope that it will be useful, but
fd76c904
LC
13;;; WITHOUT ANY WARRANTY; without even the implied warranty of
14;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15;;; GNU General Public License for more details.
16;;;
17;;; You should have received a copy of the GNU General Public License
233e7676 18;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
fd76c904 19
1ffa7090 20(define-module (gnu packages linux)
4a44e743 21 #:use-module (guix licenses)
59a43334 22 #:use-module (gnu packages)
1ffa7090 23 #:use-module ((gnu packages compression)
4a44e743 24 #:renamer (symbol-prefix-proc 'guix:))
1ffa7090
LC
25 #:use-module (gnu packages flex)
26 #:use-module (gnu packages libusb)
27 #:use-module (gnu packages ncurses)
28 #:use-module (gnu packages perl)
29 #:use-module (gnu packages pkg-config)
02b80c3f
NK
30 #:use-module (guix packages)
31 #:use-module (guix download)
fd76c904
LC
32 #:use-module (guix build-system gnu))
33
aaf4cb20
LC
34(define-public (system->linux-architecture arch)
35 "Return the Linux architecture name for ARCH, a Guix system name such as
36\"x86_64-linux\"."
618cea69
NK
37 (let ((arch (car (string-split arch #\-))))
38 (cond ((string=? arch "i686") "i386")
39 ((string-prefix? "mips" arch) "mips")
aaf4cb20 40 ((string-prefix? "arm" arch) "arm")
618cea69
NK
41 (else arch))))
42
80fe5c60
LC
43(define-public linux-libre-headers
44 (let* ((version* "3.3.8")
45 (build-phase
618cea69
NK
46 (lambda (arch)
47 `(lambda _
48 (setenv "ARCH" ,(system->linux-architecture arch))
49 (format #t "`ARCH' set to `~a'~%" (getenv "ARCH"))
45298f8f 50
618cea69
NK
51 (and (zero? (system* "make" "defconfig"))
52 (zero? (system* "make" "mrproper" "headers_check"))))))
80fe5c60
LC
53 (install-phase
54 `(lambda* (#:key outputs #:allow-other-keys)
55 (let ((out (assoc-ref outputs "out")))
56 (and (zero? (system* "make"
57 (string-append "INSTALL_HDR_PATH=" out)
58 "headers_install"))
59 (mkdir (string-append out "/include/config"))
60 (call-with-output-file
61 (string-append out
62 "/include/config/kernel.release")
63 (lambda (p)
64 (format p "~a-default~%" ,version*))))))))
65 (package
66 (name "linux-libre-headers")
67 (version version*)
68 (source (origin
69 (method url-fetch)
70 (uri (string-append
71 "http://linux-libre.fsfla.org/pub/linux-libre/releases/3.3.8-gnu/linux-libre-"
72 version "-gnu.tar.xz"))
73 (sha256
74 (base32
75 "0jkfh0z1s6izvdnc3njm39dhzp1cg8i06jv06izwqz9w9qsprvnl"))))
76 (build-system gnu-build-system)
77 (native-inputs `(("perl" ,perl)))
78 (arguments
79 `(#:modules ((guix build gnu-build-system)
80 (guix build utils)
934488cc
LC
81 (srfi srfi-1)
82 ,@(if (%current-target-system)
83 '((guix build gnu-cross-build))
84 '()))
80fe5c60 85 #:phases (alist-replace
618cea69 86 'build ,(build-phase (%current-system))
80fe5c60
LC
87 (alist-replace
88 'install ,install-phase
934488cc
LC
89 (alist-delete 'configure
90 ,(if (%current-target-system)
91 '%standard-cross-phases
92 '%standard-phases))))
80fe5c60
LC
93 #:tests? #f))
94 (synopsis "GNU Linux-Libre kernel headers")
95 (description "Headers of the Linux-Libre kernel.")
38bbd61d 96 (license gpl2)
80fe5c60
LC
97 (home-page "http://www.gnu.org/software/linux-libre/"))))
98
b4fcb735
LC
99(define-public module-init-tools
100 (package
101 (name "module-init-tools")
102 (version "3.16")
103 (source (origin
104 (method url-fetch)
105 (uri (string-append
106 "mirror://kernel.org/linux/utils/kernel/module-init-tools/module-init-tools-"
107 version ".tar.bz2"))
108 (sha256
109 (base32
110 "0jxnz9ahfic79rp93l5wxcbgh4pkv85mwnjlbv1gz3jawv5cvwp1"))))
111 (build-system gnu-build-system)
112 (inputs
113 ;; The upstream tarball lacks man pages, and building them would require
114 ;; DocBook & co. Thus, use Gentoo's pre-built man pages.
115 `(("man-pages"
116 ,(origin
117 (method url-fetch)
118 (uri (string-append
119 "http://distfiles.gentoo.org/distfiles/module-init-tools-" version
120 "-man.tar.bz2"))
121 (sha256
122 (base32
123 "1j1nzi87kgsh4scl645fhwhjvljxj83cmdasa4n4p5krhasgw358"))))))
124 (arguments
125 '(#:phases (alist-cons-before
126 'unpack 'unpack-man-pages
127 (lambda* (#:key inputs #:allow-other-keys)
128 (let ((man-pages (assoc-ref inputs "man-pages")))
129 (zero? (system* "tar" "xvf" man-pages))))
130 %standard-phases)))
131 (home-page "http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/")
132 (synopsis "Tools for loading and managing Linux kernel modules")
133 (description
134 "Tools for loading and managing Linux kernel modules, such as `modprobe',
135`insmod', `lsmod', and more.")
136 (license gpl2+)))
137
beacfcab
LC
138(define-public linux-libre
139 (let* ((version* "3.3.8")
140 (build-phase
141 '(lambda* (#:key system #:allow-other-keys #:rest args)
142 (let ((arch (car (string-split system #\-))))
143 (setenv "ARCH"
144 (cond ((string=? arch "i686") "i386")
145 (else arch)))
146 (format #t "`ARCH' set to `~a'~%" (getenv "ARCH")))
147
148 (let ((build (assoc-ref %standard-phases 'build)))
2e48455d
LC
149 (and (zero? (system* "make" "defconfig"))
150 (begin
151 (format #t "enabling additional modules...~%")
152 (substitute* ".config"
153 (("^# CONFIG_CIFS.*$")
154 "CONFIG_CIFS=m\n"))
155 (zero? (system* "make" "oldconfig")))
beacfcab
LC
156
157 ;; Call the default `build' phase so `-j' is correctly
158 ;; passed.
159 (apply build #:make-flags "all" args)))))
160 (install-phase
161 `(lambda* (#:key inputs outputs #:allow-other-keys)
162 (let* ((out (assoc-ref outputs "out"))
163 (moddir (string-append out "/lib/modules"))
164 (mit (assoc-ref inputs "module-init-tools")))
165 (mkdir-p moddir)
166 (for-each (lambda (file)
167 (copy-file file
168 (string-append out "/" (basename file))))
169 (find-files "." "^(bzImage|System\\.map)$"))
170 (copy-file ".config" (string-append out "/config"))
171 (zero? (system* "make"
172 (string-append "DEPMOD=" mit "/sbin/depmod")
173 (string-append "MODULE_DIR=" moddir)
174 (string-append "INSTALL_PATH=" out)
175 (string-append "INSTALL_MOD_PATH=" out)
176 "modules_install"))))))
177 (package
178 (name "linux-libre")
179 (version version*)
180 (source (origin
181 (method url-fetch)
182 (uri (string-append
183 "http://linux-libre.fsfla.org/pub/linux-libre/releases/3.3.8-gnu/linux-libre-"
184 version "-gnu.tar.xz"))
185 (sha256
186 (base32
187 "0jkfh0z1s6izvdnc3njm39dhzp1cg8i06jv06izwqz9w9qsprvnl"))))
188 (build-system gnu-build-system)
189 (native-inputs `(("perl" ,perl)
190 ("module-init-tools" ,module-init-tools)))
191 (arguments
192 `(#:modules ((guix build gnu-build-system)
193 (guix build utils)
194 (srfi srfi-1)
195 (ice-9 match))
196 #:phases (alist-replace
197 'build ,build-phase
198 (alist-replace
199 'install ,install-phase
200 (alist-delete 'configure %standard-phases)))
201 #:tests? #f))
f50d2669 202 (synopsis "100% free redistribution of a cleaned Linux kernel")
beacfcab
LC
203 (description "Linux-Libre operating system kernel.")
204 (license gpl2)
205 (home-page "http://www.gnu.org/software/linux-libre/"))))
206
fd76c904
LC
207(define-public linux-pam
208 (package
209 (name "linux-pam")
210 (version "1.1.6")
211 (source
212 (origin
213 (method url-fetch)
214 (uri (list (string-append "http://www.linux-pam.org/library/Linux-PAM-"
215 version ".tar.bz2")
216 (string-append "mirror://kernel.org/linux/libs/pam/library/Linux-PAM-"
217 version ".tar.bz2")))
218 (sha256
219 (base32
220 "1hlz2kqvbjisvwyicdincq7nz897b9rrafyzccwzqiqg53b8gf5s"))))
221 (build-system gnu-build-system)
222 (inputs
223 `(("flex" ,flex)
224
225 ;; TODO: optional dependencies
226 ;; ("libxcrypt" ,libxcrypt)
227 ;; ("cracklib" ,cracklib)
228 ))
229 (arguments
230 ;; XXX: Tests won't run in chroot, presumably because /etc/pam.d
231 ;; isn't available.
232 '(#:tests? #f))
233 (home-page "http://www.linux-pam.org/")
234 (synopsis "Pluggable authentication modules for Linux")
235 (description
236 "A *Free* project to implement OSF's RFC 86.0.
237Pluggable authentication modules are small shared object files that can
238be used through the PAM API to perform tasks, like authenticating a user
239at login. Local and dynamic reconfiguration are its key features")
4a44e743 240 (license bsd-3)))
686f14e8
LC
241
242(define-public psmisc
243 (package
244 (name "psmisc")
245 (version "22.20")
246 (source
247 (origin
248 (method url-fetch)
249 (uri (string-append "mirror://sourceforge/psmisc/psmisc/psmisc-"
250 version ".tar.gz"))
251 (sha256
252 (base32
253 "052mfraykmxnavpi8s78aljx8w87hyvpx8mvzsgpjsjz73i28wmi"))))
254 (build-system gnu-build-system)
255 (inputs `(("ncurses" ,ncurses)))
256 (home-page "http://psmisc.sourceforge.net/")
257 (synopsis
258 "set of utilities that use the proc filesystem, such as fuser, killall, and pstree")
259 (description
260 "This PSmisc package is a set of some small useful utilities that
261use the proc filesystem. We're not about changing the world, but
262providing the system administrator with some help in common tasks.")
4a44e743 263 (license gpl2+)))
02b80c3f
NK
264
265(define-public util-linux
266 (package
267 (name "util-linux")
268 (version "2.21")
269 (source
270 (origin
271 (method url-fetch)
272 (uri (string-append "mirror://kernel.org/linux/utils/"
273 name "/v" version "/"
274 name "-" version ".2" ".tar.xz"))
275 (sha256
276 (base32
277 "1rpgghf7n0zx0cdy8hibr41wvkm2qp1yvd8ab1rxr193l1jmgcir"))))
278 (build-system gnu-build-system)
279 (arguments
280 `(#:configure-flags '("--disable-use-tty-group")
281 #:phases (alist-cons-after
282 'install 'patch-chkdupexe
283 (lambda* (#:key outputs #:allow-other-keys)
284 (let ((out (assoc-ref outputs "out")))
285 (substitute* (string-append out "/bin/chkdupexe")
286 ;; Allow 'patch-shebang' to do its work.
287 (("@PERL@") "/bin/perl"))))
288 %standard-phases)))
4a44e743 289 (inputs `(("zlib" ,guix:zlib)
02b80c3f
NK
290 ("ncurses" ,ncurses)
291 ("perl" ,perl)))
292 (home-page "https://www.kernel.org/pub/linux/utils/util-linux/")
35ec07c7 293 (synopsis "Collection of utilities for the Linux kernel")
02b80c3f
NK
294 (description
295 "util-linux is a random collection of utilities for the Linux kernel.")
fe8ccfcc 296
02b80c3f 297 ;; Note that util-linux doesn't use the same license for all the
fe8ccfcc 298 ;; code. GPLv2+ is the default license for a code without an
02b80c3f 299 ;; explicitly defined license.
fe8ccfcc
LC
300 (license (list gpl3+ gpl2+ gpl2 lgpl2.0+
301 bsd-4 public-domain))))
5d5c4278 302
e47e3eff
LC
303(define-public procps
304 (package
305 (name "procps")
306 (version "3.2.8")
307 (source (origin
308 (method url-fetch)
309 (uri (string-append "http://procps.sourceforge.net/procps-"
310 version ".tar.gz"))
311 (sha256
312 (base32
313 "0d8mki0q4yamnkk4533kx8mc0jd879573srxhg6r2fs3lkc6iv8i"))))
314 (build-system gnu-build-system)
315 (inputs `(("ncurses" ,ncurses)
316 ("patch/make-3.82" ,(search-patch "procps-make-3.82.patch"))))
317 (arguments
318 '(#:patches (list (assoc-ref %build-inputs "patch/make-3.82"))
319 #:phases (alist-replace
320 'configure
321 (lambda* (#:key outputs #:allow-other-keys)
322 ;; No `configure', just a single Makefile.
323 (let ((out (assoc-ref outputs "out")))
324 (substitute* "Makefile"
325 (("/usr/") "/")
326 (("--(owner|group) 0") "")
327 (("ldconfig") "true")
328 (("^LDFLAGS[[:blank:]]*:=(.*)$" _ value)
329 ;; Add libproc to the RPATH.
330 (string-append "LDFLAGS := -Wl,-rpath="
331 out "/lib" value))))
332 (setenv "CC" "gcc"))
333 (alist-replace
334 'install
335 (lambda* (#:key outputs #:allow-other-keys)
336 (let ((out (assoc-ref outputs "out")))
337 (and (zero?
338 (system* "make" "install"
339 (string-append "DESTDIR=" out)))
340
341 ;; Sanity check.
342 (zero?
343 (system* (string-append out "/bin/ps")
344 "--version")))))
345 %standard-phases))
346
347 ;; What did you expect? Tests?
348 #:tests? #f))
349 (home-page "http://procps.sourceforge.net/")
35ec07c7 350 (synopsis "Utilities that give information about processes")
e47e3eff
LC
351 (description
352 "procps is the package that has a bunch of small useful utilities
353that give information about processes using the Linux /proc file system.
354The package includes the programs ps, top, vmstat, w, kill, free,
355slabtop, and skill.")
356 (license gpl2)))
357
5d5c4278
NK
358(define-public usbutils
359 (package
360 (name "usbutils")
361 (version "006")
362 (source
363 (origin
364 (method url-fetch)
365 (uri (string-append "mirror://kernel.org/linux/utils/usb/usbutils/"
366 "usbutils-" version ".tar.xz"))
367 (sha256
368 (base32
369 "03pd57vv8c6x0hgjqcbrxnzi14h8hcghmapg89p8k5zpwpkvbdfr"))))
370 (build-system gnu-build-system)
371 (inputs
372 `(("libusb" ,libusb) ("pkg-config" ,pkg-config)))
373 (home-page "http://www.linux-usb.org/")
374 (synopsis
375 "Tools for working with USB devices, such as lsusb")
376 (description
377 "Tools for working with USB devices, such as lsusb.")
4050e5d6 378 (license gpl2+)))
0750452a
LC
379
380(define-public e2fsprogs
381 (package
382 (name "e2fsprogs")
383 (version "1.42.7")
384 (source (origin
385 (method url-fetch)
386 (uri (string-append "mirror://sourceforge/e2fsprogs/e2fsprogs-"
387 version ".tar.gz"))
388 (sha256
389 (base32
390 "0ibkkvp6kan0hn0d1anq4n2md70j5gcm7mwna515w82xwyr02rfw"))))
391 (build-system gnu-build-system)
392 (inputs `(("util-linux" ,util-linux)
393 ("pkg-config" ,pkg-config)))
394 (arguments
395 '(#:phases (alist-cons-before
396 'configure 'patch-shells
397 (lambda _
398 (substitute* "configure"
399 (("/bin/sh (.*)parse-types.sh" _ dir)
400 (string-append (which "sh") " " dir
401 "parse-types.sh")))
402 (substitute* (find-files "." "^Makefile.in$")
403 (("#!/bin/sh")
404 (string-append "#!" (which "sh")))))
405 %standard-phases)
406
407 ;; FIXME: Tests work by comparing the stdout/stderr of programs, that
408 ;; they fail because we get an extra line that says "Can't check if
409 ;; filesystem is mounted due to missing mtab file".
410 #:tests? #f))
411 (home-page "http://e2fsprogs.sourceforge.net/")
35ec07c7 412 (synopsis "Creating and checking ext2/ext3/ext4 file systems")
0750452a
LC
413 (description
414 "This package provides tools for manipulating ext2/ext3/ext4 file systems.")
415 (license (list gpl2 ; programs
416 lgpl2.0 ; libext2fs
417 x11)))) ; libuuid
d8482ad0
LC
418
419(define-public strace
420 (package
421 (name "strace")
422 (version "4.7")
423 (source (origin
424 (method url-fetch)
425 (uri (string-append "mirror://sourceforge/strace/strace-"
426 version ".tar.xz"))
427 (sha256
428 (base32
429 "158iwk0pl2mfw93m1843xb7a2zb8p6lh0qim07rca6f1ff4dk764"))))
430 (build-system gnu-build-system)
431 (inputs `(("perl" ,perl)))
432 (home-page "http://strace.sourceforge.net/")
433 (synopsis "System call tracer for Linux")
434 (description
435 "strace is a system call tracer, i.e. a debugging tool which prints out a
436trace of all the system calls made by a another process/program.")
437 (license bsd-3)))
ba04571a
LC
438
439(define-public alsa-lib
440 (package
441 (name "alsa-lib")
442 (version "1.0.27.1")
443 (source (origin
444 (method url-fetch)
445 (uri (string-append
446 "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-"
447 version ".tar.bz2"))
448 (sha256
449 (base32
450 "0fx057746dj7rjdi0jnvx2m9b0y1lgdkh1hks87d8w32xyihf3k9"))))
451 (build-system gnu-build-system)
452 (home-page "http://www.alsa-project.org/")
453 (synopsis "The Advanced Linux Sound Architecture libraries")
454 (description
455 "The Advanced Linux Sound Architecture (ALSA) provides audio and
456MIDI functionality to the Linux-based operating system.")
457 (license lgpl2.1+)))