gnu: bash: Install headers in "include" output.

* gnu/packages/bash.scm (bash)[outputs]: New field.
  [arguments]: Use 'modify-phases'.  Add 'install-headers' phase.
This commit is contained in:
Ludovic Courtès 2015-03-04 23:21:09 +01:00
parent ce0614ddb0
commit 2b34b4b46d

View file

@ -127,6 +127,26 @@ (define-public bash
(let ((out (assoc-ref outputs "out")))
(with-directory-excursion (string-append out "/bin")
(symlink "bash" "sh")))))
(install-headers-phase
'(lambda* (#:key outputs #:allow-other-keys)
;; Install Bash headers so that packages that provide extensions
;; can use them. We install them in include/bash; that's what
;; Debian does and what Bash extensions like recutils or
;; guile-bash expect.
(let ((include (string-append (assoc-ref outputs "include")
"/include/bash"))
(headers "^\\./(builtins/|lib/glob/|lib/tilde/|)[^/]+\\.h$"))
(mkdir-p include)
(for-each (lambda (file)
(when ((@ (ice-9 regex) string-match) headers file)
(let ((directory (string-append include "/"
(dirname file))))
(mkdir-p directory)
(copy-file file
(string-append directory "/"
(basename file))))))
(find-files "." "\\.h$"))
#t)))
(version "4.3"))
(package
(name "bash")
@ -147,6 +167,9 @@ (define-public bash
(version (string-append version "."
(number->string (length %patch-series-4.3))))
(build-system gnu-build-system)
(outputs '("out"
"include")) ;headers used by extensions
(native-inputs `(("bison" ,bison))) ;to rebuild the parser
(inputs `(("readline" ,readline)
("ncurses" ,ncurses))) ;TODO: add texinfo
@ -168,9 +191,10 @@ (define-public bash
;; for now.
#:tests? #f
#:phases (alist-cons-after 'install 'post-install
,post-install-phase
%standard-phases)))
#:phases (modify-phases %standard-phases
(add-after install post-install ,post-install-phase)
(add-after install install-headers
,install-headers-phase))))
(synopsis "The GNU Bourne-Again SHell")
(description
"Bash is the shell, or command-line interpreter, of the GNU system. It