guix-commits
[Top][All Lists]
Advanced

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

07/15: gnu: Add gash. WIP


From: guix-commits
Subject: 07/15: gnu: Add gash. WIP
Date: Wed, 5 Dec 2018 16:57:53 -0500 (EST)

janneke pushed a commit to branch wip-bootstrap
in repository guix.

commit b8d606744843879cd654d304d3b92e802cfe01cb
Author: Jan Nieuwenhuizen <address@hidden>
Date:   Sun Oct 28 00:55:54 2018 +0200

    gnu: Add gash.  WIP
    
    * gnu/packages/guile.scm (guile-gash): New variable.
---
 gnu/packages/guile.scm | 104 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 103 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index bf2f2a1..e37528d 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -2104,7 +2104,7 @@ messaging library.")
       (license license:gpl3+))))
 
 (define-public jupyter-guile-kernel
-  (let ((commit "a7db9245a886e104138474df46c3e88b95cff629")
+  (let ((commit "5d734541a79646d5be02aeb8ba48b48de7d1cca6")
         (revision "1"))
     (package
       (name "jupyter-guile-kernel")
@@ -2243,4 +2243,106 @@ using S-expressions.")
 tracker's SOAP service, such as @url{https://bugs.gnu.org}.";)
     (license license:gpl3+)))
 
+(define-public guile-gash
+  (let ((version "0.1")
+        (commit "5b7f85aa3d15523edd05a07ed2b16b6f69690d53")
+        (revision "0")
+        (builtins '(
+                    "basename"
+                    "cat"
+                    "chmod"
+                    "compress"
+                    "cp"
+                    "dirname"
+                    "find"
+                    "grep"
+                    "ls"
+                    "mkdir"
+                    "mv"
+                    "reboot"
+                    "rm"
+                    "rmdir"
+                    "sed"
+                    "tar"
+                    "touch"
+                    "tr"
+                    "wc"
+                    "which"
+                    ))
+        (shells '("bash" "gash" "sh")))
+    (package
+      (name "guile-gash")
+      (version (string-append version "-" revision "." (string-take commit 7)))
+      (source (origin
+                (method url-fetch)
+                (uri (string-append "https://gitlab.com/janneke/gash";
+                                    "/-/archive/" commit
+                                    "/gash-" commit ".tar.gz"))
+                (sha256
+                 (base32
+                  "05nq0knklgk2iczsqmnhnh1365iv6gs3cxam38qf7dmdlglbf0sa"))))
+      (build-system guile-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'remove-geesh
+             (lambda _
+               (delete-file "guix.scm") ; should not and cannot be compiled
+               (delete-file "gash/geesh.scm") ; no Geesh yet
+               #t))
+           (add-after 'unpack 'configure
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (guile (assoc-ref inputs "guile"))
+                      (bin/guile (string-append guile "/bin/guile"))
+                      (effective (target-guile-effective-version))
+                      (guile-site-dir
+                       (string-append out "/share/guile/site/" effective))
+                      (guile-site-ccache-dir
+                       (string-append out
+                                      "/lib/guile/" effective "/site-ccache")))
+                 (define (make-script source name)
+                   (let ((script (string-append "bin/" name)))
+                     (copy-file source script)
+                     (substitute* script
+                       (("@GUILE@") bin/guile)
+                       (("@guile_site_dir@") guile-site-dir)
+                       (("@guile_site_ccache_dir@") guile-site-ccache-dir)
+                       (("@builtin@") name))
+                     (chmod script #o755)))
+                 (copy-file "gash/config.scm.in" "gash/config.scm")
+                 (substitute* "gash/config.scm"
+                   (("@guile_site_ccache_dir@") guile-site-ccache-dir)
+                   (("@VERSION@") ,version)
+                   (("@COMPRESS@") (string-append out "/bin/compress"))
+                   (("@BZIP2@") (which "bzip2"))
+                   (("@GZIP@") (which "gzip"))
+                   (("@XZ@") (which "xz")))
+                 (for-each
+                  (lambda (s) (make-script "bin/gash.in" s)) ',shells)
+                 (for-each
+                  (lambda (s) (make-script "bin/builtin.in" s)) ',builtins))
+               #t))
+           (add-after 'install 'install-scripts
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin"))
+                      (libexec/gash (string-append out "/libexec/gash")))
+                 (install-file "bin/gash" bin)
+                 (for-each
+                  (lambda (name)
+                    (install-file (string-append "bin/" name) libexec/gash))
+                  ',(append builtins shells)))
+               #t)))))
+      (native-inputs
+       `(("guile" ,guile-2.2)
+         ("guile-readline" ,guile-readline)))
+      (home-page "https://gitlab.com/rutgervanbeusekom/gash";)
+      (synopsis "Guile As SHell")
+      (description
+       "Gash--Guile As SHell-- aims to produce at least a POSIX compliant sh
+replacement or even implement GNU bash.  On top of that it also intends to
+make Scheme available for interactive and scripting application.")
+      (license license:gpl3+))))
+
 ;;; guile.scm ends here



reply via email to

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