Update license headers.
[jackhill/guix/guix.git] / distro / packages / bash.scm
CommitLineData
233e7676
LC
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
c44899a2 3;;;
233e7676 4;;; This file is part of GNU Guix.
c44899a2 5;;;
233e7676 6;;; GNU Guix is free software; you can redistribute it and/or modify it
c44899a2
LC
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
233e7676 11;;; GNU Guix is distributed in the hope that it will be useful, but
c44899a2
LC
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
233e7676 17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
c44899a2
LC
18
19(define-module (distro packages bash)
4a44e743 20 #:use-module (guix licenses)
c44899a2
LC
21 #:use-module (distro packages ncurses)
22 #:use-module (distro packages readline)
23 #:use-module (guix packages)
87f5d366 24 #:use-module (guix download)
c44899a2
LC
25 #:use-module (guix utils)
26 #:use-module (guix build-system gnu))
27
28(define-public bash
29 (let ((cppflags (string-join '("-DSYS_BASHRC='\"/etc/bashrc\"'"
30 "-DSYS_BASH_LOGOUT='\"/etc/bash_logout\"'"
31 "-DDEFAULT_PATH_VALUE='\"/no-such-path\"'"
32 "-DSTANDARD_UTILS_PATH='\"/no-such-path\"'"
33 "-DNON_INTERACTIVE_LOGIN_SHELLS"
34 "-DSSH_SOURCE_BASHRC")
35 " ")))
36 (package
37 (name "bash")
38 (version "4.2")
39 (source (origin
87f5d366 40 (method url-fetch)
c44899a2 41 (uri (string-append
0db342a5 42 "mirror://gnu/bash/bash-" version ".tar.gz"))
c44899a2
LC
43 (sha256
44 (base32
45 "1n5kbblp5ykbz5q8aq88lsif2z0gnvddg9babk33024wxiwi2ym2"))))
46 (build-system gnu-build-system)
47 (inputs `(("readline" ,readline)
48 ("ncurses" ,ncurses))) ; TODO: add texinfo
49 (arguments
50 `(#:configure-flags `("--with-installed-readline"
51 ,,(string-append "CPPFLAGS=" cppflags)
52 ,(string-append
53 "LDFLAGS=-Wl,-rpath -Wl,"
54 (assoc-ref %build-inputs "readline")
55 "/lib"
56 " -Wl,-rpath -Wl,"
57 (assoc-ref %build-inputs "ncurses")
58 "/lib"))
59
60 ;; Bash is reportedly not parallel-safe. See, for instance,
61 ;; <http://patches.openembedded.org/patch/32745/> and
62 ;; <http://git.buildroot.net/buildroot/commit/?h=79e2d802ae7e376a413c02097790493e1f65c3a4>.
63 #:parallel-build? #f
64 #:parallel-tests? #f
65
66 ;; XXX: The tests have a lot of hard-coded paths, so disable them
67 ;; for now.
68 #:tests? #f
69
70 #:phases
71 (alist-cons-after 'install 'post-install
72 (lambda* (#:key outputs #:allow-other-keys)
73 ;; Add a `bash' -> `sh' link.
74 (let ((out (assoc-ref outputs "out")))
75 (with-directory-excursion
76 (string-append out "/bin")
77 (symlink "bash" "sh"))))
78 %standard-phases)))
79 (synopsis "GNU Bourne-Again Shell")
80 (description
81 "Bash is the shell, or command language interpreter, that will appear in
82the GNU operating system. Bash is an sh-compatible shell that incorporates
83useful features from the Korn shell (ksh) and C shell (csh). It is intended
84to conform to the IEEE POSIX P1003.2/ISO 9945.2 Shell and Tools standard. It
85offers functional improvements over sh for both programming and interactive
86use. In addition, most sh scripts can be run by Bash without
87modification.")
4a44e743 88 (license gpl3+)
c44899a2 89 (home-page "http://www.gnu.org/software/bash/"))))