diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index 862eedfd18..48b52c7da8 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -10,6 +10,7 @@ ;;; Copyright © 2017 Clément Lassieur ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Adam Massmann +;;; Copyright © 2018 Gabriel Hondet ;;; ;;; This file is part of GNU Guix. ;;; @@ -1168,3 +1169,83 @@ 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 + "mirror://sourceforge/gauche/Gauche/Gauche-" + version ".tgz")) + (sha256 + (base32 + "181nycikma0rwrb1h6mi3kys11f8628pq8g5r3fg5hiz5sabscrd")) + (modules '((guix build utils))) + (snippet '(begin + ;; Remove libatomic-ops + (delete-file-recursively "gc/libatomic_ops") + #t)))) + (build-system gnu-build-system) + (inputs + `(("libatomic-ops" ,libatomic-ops) + ("zlib" ,zlib))) + (native-inputs + `(("texinfo" ,texinfo) + ("openssl" ,openssl) ; needed for tests + ("pkg-config" ,pkg-config))) ; needed to find external libatomic-ops + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-/bin/sh + ;; needed only for tests + (lambda _ + (substitute* '("configure" + "test/www.scm" + "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")))) + #t)) + (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")) + #t)) + (add-before 'check 'patch-network-tests + ;; remove net checks + (lambda _ + (substitute* "ext/Makefile" + (("binary net termios") "binary termios")) + #t)) + (add-after 'install 'install-docs + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (with-directory-excursion "doc" + (invoke "make" "install"))) + #t))))) + (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. Gauche comes with a package +manager/installer @code{gauche-package} which can download, compile, install +and list gauche extension packages. There are currently 58 packages +available.") + (license bsd-3)))