guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Ludovic Courtès
Subject: 01/01: gnu: bash: Install headers in "include" output.
Date: Wed, 04 Mar 2015 22:21:37 +0000

civodul pushed a commit to branch core-updates
in repository guix.

commit 2b34b4b46d44b3849b1909892875c56b66cbbdc0
Author: Ludovic Courtès <address@hidden>
Date:   Wed Mar 4 23:21:09 2015 +0100

    gnu: bash: Install headers in "include" output.
    
    * gnu/packages/bash.scm (bash)[outputs]: New field.
      [arguments]: Use 'modify-phases'.  Add 'install-headers' phase.
---
 gnu/packages/bash.scm |   30 +++++++++++++++++++++++++++---
 1 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index c669194..4f92547 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -127,6 +127,26 @@ number/base32-hash tuples, directly usable in the 
'patch-series' form."
              (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 @@ number/base32-hash tuples, directly usable in the 
'patch-series' form."
      (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 @@ number/base32-hash tuples, directly usable in the 
'patch-series' form."
         ;; 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]