[Top][All Lists]

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

Re: Building Bash with Geesh

From: Jan Nieuwenhuizen
Subject: Re: Building Bash with Geesh
Date: Sun, 09 Dec 2018 07:58:05 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)

Timothy Sample writes:


Attached are two small patches that allow me to run the Gash test suite
with Geesh, like so

--8<---------------cut here---------------start------------->8---
PATH=$PATH:bin SHELL='../geesh/pre-inst-env geesh' ./ 
--8<---------------cut here---------------end--------------->8---

assuming that both projects live in the same parent directory.

Geesh does much better than Gash, it only fails 11/126 tests.

Moreover, all POSIX tests pass!  The ones that fail involve `echo -e'
and Bash-isms, notably substitutions like ${var/foo} (and all %, %%, #,
##, ...etc).

What a great job!

Interestingly, Gash passes all tests that Geesh fails, and Gash fails
about 20 other tests.

It looks like that once we manage to combine Geesh and Gash, stealing
eachothers code or otherwise, we have a shell that can replace bash and
coreutils&co in the initial bootstrap.


Also put up on:

>From 0aca7e71517b63fc3f67f3a72757f69d7a91158a Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <address@hidden>
Date: Sun, 9 Dec 2018 07:35:18 +0100
Subject: [PATCH 1/2] guix: Use getcwd instead of hard-coded directory.

* guix.scm (make-select): Use getcwd instead of hard-coded directory.
 guix.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/guix.scm b/guix.scm
index 04973a9..3b647dd 100644
--- a/guix.scm
+++ b/guix.scm
@@ -24,7 +24,7 @@
 (define (make-select)
-  (let* ((directory (repository-discover "/home/samplet/code/geesh"))
+  (let* ((directory (repository-discover (getcwd)))
          (repository (repository-open directory))
          (oid (reference-target (repository-head repository)))
          (commit (commit-lookup repository oid))

>From 52d3b6ea3c47a84f58e06e0d09db5ce8f9cf383e Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <address@hidden>
Date: Sun, 9 Dec 2018 07:37:22 +0100
Subject: [PATCH 2/2] Support -e, -x in geesh script.

* scripts/ (options-spec): Support -e, -x.
 scripts/ | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/scripts/ b/scripts/
index fa8001f..e7a0051 100644
--- a/scripts/
+++ b/scripts/
@@ -24,17 +24,26 @@
 (set! %load-compiled-path (cons "@GODIR@" %load-compiled-path))
 (use-modules (geesh repl)
+             (geesh environment)
              (ice-9 getopt-long))
 (define options-spec
   '((command (single-char #\c) (value #t))
-    (stdin (single-char #\s))))
+    (errexit (single-char #\e))
+    (stdin (single-char #\s))
+    (xtrace (single-char #\x))))
 (let* ((options (getopt-long (program-arguments) options-spec
                              #:stop-at-first-non-option #t))
        (command (option-ref options 'command #f))
+       (errexit? (option-ref options 'errexit #f))
        (stdin (option-ref options 'stdin #f))
+       (xtrace? (option-ref options 'xtrace #f))
        (args (option-ref options '() '())))
+  (when errexit?
+    (setopt! 'errexit #t))
+  (when xtrace?
+    (setopt! 'xtrace #t))
    ((and command stdin)
     (format (current-error-port)

reply via email to

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