[bug#33920] gnu: Add gauche.

Message ID 875zvbjvxv.fsf@gmail.com
State Accepted
Headers show
Series [bug#33920] gnu: Add gauche. | expand

Checks

Context Check Description
cbaines/applying patch fail Apply failed

Commit Message

Gabriel Hondet Dec. 30, 2018, 7:47 a.m. UTC
* gnu/packages/scheme.scm (gauche): New variable.
---
 gnu/packages/scheme.scm | 69 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 69 insertions(+)

Comments

swedebugia Jan. 4, 2019, 10:36 p.m. UTC | #1
On 2018-12-30 08:47, Gabriel Hondet wrote:
> * gnu/packages/scheme.scm (gauche): New variable.
> ---
>  gnu/packages/scheme.scm | 69 +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 69 insertions(+)
> 
> diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
> index 16904dce3..c9bea183e 100644
> --- a/gnu/packages/scheme.scm
> +++ b/gnu/packages/scheme.scm
> @@ -10,6 +10,7 @@
>  ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
>  ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
>  ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
> +;;; Copyright © 2018 Gabriel Hondet <gabrielhondet@gmail.com>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -1164,3 +1165,71 @@ simple, elegant Scheme dialect.  It is a lisp-1
> with lexical scope.
>  The core is 12 builtin special forms and 33 builtin functions.")
>        (home-page "https://github.com/JeffBezanson/femtolisp")
>        (license bsd-3))))
> +
> +(define-public gauche
> +  (package
> +    (name "gauche")
> +    (version "0.9.7")
> +    (home-page "http://practical-scheme.net/gauche/index.html")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append
> +             "http://prdownloads.sourceforge.net/gauche/Gauche-"
> +             version ".tgz"))
> +       (sha256
> +        (base32
> +         "181nycikma0rwrb1h6mi3kys11f8628pq8g5r3fg5hiz5sabscrd"))))
> +    (build-system gnu-build-system)
> +    (native-inputs
> +     `(("texinfo" ,texinfo)
> +       ("openssl" ,openssl))) ;needed for tests
> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (add-after 'unpack 'patch-/bin/sh
> +           ;; needed only for tests
> +           (lambda _
> +             (begin
> +               (setenv "CONFIG_SHELL" (which "sh"))
> +               (substitute* '("configure"
> +                              "test/www.scm"
> +                              "config.guess"
> +                              "ltmain.sh"
> +                              "ext/tls/test.scm"
> +                              "gc/configure"
> +                              "lib/gauche/configure.scm"
> +                              "lib/gauche/package/util.scm"
> +                              "lib/gauche/process.scm")
> +                 (("/bin/sh") (which "sh")))
> +               #t)))
> +         (add-after 'build 'build-doc
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let* ((out (assoc-ref outputs "out")))
> +               (with-directory-excursion "doc"
> +                 (for-each
> +                  (lambda (target)
> +                    (invoke "make" target))
> +                  '("info" "html" "htmls"))))))
> +         (add-before 'check 'patch-normalize-test
> +           ;; neutralize sys-normalize-pathname test as it relies on
> +           ;; the home directory; (setenv "HOME" xx) isn't enough)
> +           (lambda _
> +             (substitute* "test/system.scm"
> +               (("~/abc") "//abc"))))
> +         (add-before 'check 'patch-network-tests
> +           ;; remove net checks
> +           (lambda _
> +             (substitute* "ext/Makefile"
> +               (("binary net termios") "binary termios"))))
> +         (add-after 'install 'install-docs
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let* ((out (assoc-ref outputs "out")))
> +               (with-directory-excursion "doc"
> +                 (invoke "make" "install"))))))))
> +    (synopsis "Scheme scripting engine")
> +    (description "Gauche is a R7RS Scheme scripting engine aiming at being a
> +handy tool that helps programmers and system administrators to write small to
> +large scripts quickly.  Quick startup, built-in system interface, native
> +multilingual support are some of the goals.")
> +    (license bsd-3)))

I found this in COPYING:

Copyright of gc/libatomic_ops/*
---------------------------------------------

GNU GENERAL PUBLIC LICENSE
Version 2, June 1991

Could add a note about that?

I noticed that Gauche comes with a package-manager gauche-package, could
you extend the description and mention this and how many packages are
available (>50 according to
http://practical-scheme.net/wiliki/wiliki.cgi/Gauche:Packages?l=en).

Otherwise LGTM. (i built it and gave it a short spin)

Patch

diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 16904dce3..c9bea183e 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -10,6 +10,7 @@ 
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
+;;; Copyright © 2018 Gabriel Hondet <gabrielhondet@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1164,3 +1165,71 @@  simple, elegant Scheme dialect.  It is a lisp-1 with lexical scope.
 The core is 12 builtin special forms and 33 builtin functions.")
       (home-page "https://github.com/JeffBezanson/femtolisp")
       (license bsd-3))))
+
+(define-public gauche
+  (package
+    (name "gauche")
+    (version "0.9.7")
+    (home-page "http://practical-scheme.net/gauche/index.html")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://prdownloads.sourceforge.net/gauche/Gauche-"
+             version ".tgz"))
+       (sha256
+        (base32
+         "181nycikma0rwrb1h6mi3kys11f8628pq8g5r3fg5hiz5sabscrd"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("texinfo" ,texinfo)
+       ("openssl" ,openssl))) ;needed for tests
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-/bin/sh
+           ;; needed only for tests
+           (lambda _
+             (begin
+               (setenv "CONFIG_SHELL" (which "sh"))
+               (substitute* '("configure"
+                              "test/www.scm"
+                              "config.guess"
+                              "ltmain.sh"
+                              "ext/tls/test.scm"
+                              "gc/configure"
+                              "lib/gauche/configure.scm"
+                              "lib/gauche/package/util.scm"
+                              "lib/gauche/process.scm")
+                 (("/bin/sh") (which "sh")))
+               #t)))
+         (add-after 'build 'build-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (with-directory-excursion "doc"
+                 (for-each
+                  (lambda (target)
+                    (invoke "make" target))
+                  '("info" "html" "htmls"))))))
+         (add-before 'check 'patch-normalize-test
+           ;; neutralize sys-normalize-pathname test as it relies on
+           ;; the home directory; (setenv "HOME" xx) isn't enough)
+           (lambda _
+             (substitute* "test/system.scm"
+               (("~/abc") "//abc"))))
+         (add-before 'check 'patch-network-tests
+           ;; remove net checks
+           (lambda _
+             (substitute* "ext/Makefile"
+               (("binary net termios") "binary termios"))))
+         (add-after 'install 'install-docs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (with-directory-excursion "doc"
+                 (invoke "make" "install"))))))))
+    (synopsis "Scheme scripting engine")
+    (description "Gauche is a R7RS Scheme scripting engine aiming at being a
+handy tool that helps programmers and system administrators to write small to
+large scripts quickly.  Quick startup, built-in system interface, native
+multilingual support are some of the goals.")
+    (license bsd-3)))