gnu: Chibi-Scheme: Update to 0.8.
[jackhill/guix/guix.git] / gnu / packages / scheme.scm
CommitLineData
e117772d 1;;; GNU Guix --- Functional package management for GNU
d4bd8762 2;;; Copyright © 2013, 2014, 2015, 2016, 2018 Ludovic Courtès <ludo@gnu.org>
07f4aef0 3;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
549f9512 4;;; Copyright © 2015, 2016 Federico Beffa <beffa@fbengineering.ch>
d0d94110 5;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
7c028db5 6;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
b9b447be 7;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
47956fa0 8;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
07ef08a7 9;;; Copyright © 2017 John Darrington <jmd@gnu.org>
01d71f62 10;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
a7022852 11;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
44fa8431 12;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
eac7ed19 13;;; Copyright © 2018 Gabriel Hondet <gabrielhondet@gmail.com>
e117772d
LC
14;;;
15;;; This file is part of GNU Guix.
16;;;
17;;; GNU Guix is free software; you can redistribute it and/or modify it
18;;; under the terms of the GNU General Public License as published by
19;;; the Free Software Foundation; either version 3 of the License, or (at
20;;; your option) any later version.
21;;;
22;;; GNU Guix is distributed in the hope that it will be useful, but
23;;; WITHOUT ANY WARRANTY; without even the implied warranty of
24;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25;;; GNU General Public License for more details.
26;;;
27;;; You should have received a copy of the GNU General Public License
28;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
29
1ffa7090 30(define-module (gnu packages scheme)
59a43334 31 #:use-module (gnu packages)
bc73a843 32 #:use-module ((guix licenses)
07ef08a7
JD
33 #:select (gpl2+ lgpl2.0+ lgpl2.1+ lgpl3+ asl2.0 bsd-3
34 cc-by-sa4.0 non-copyleft))
e117772d
LC
35 #:use-module (guix packages)
36 #:use-module (guix download)
b9b447be 37 #:use-module (guix git-download)
07f4aef0 38 #:use-module (guix utils)
e117772d 39 #:use-module (guix build-system gnu)
b9b447be 40 #:use-module (guix build-system trivial)
fbf7b7e9 41 #:use-module (gnu packages autotools)
5e3ea571 42 #:use-module (gnu packages bdw-gc)
549f9512 43 #:use-module (gnu packages compression)
cd0322a3 44 #:use-module (gnu packages databases)
5e3ea571
KK
45 #:use-module (gnu packages libevent)
46 #:use-module (gnu packages libunistring)
1ffa7090
LC
47 #:use-module (gnu packages m4)
48 #:use-module (gnu packages multiprecision)
549f9512 49 #:use-module (gnu packages ncurses)
5e3ea571 50 #:use-module (gnu packages pcre)
1ffa7090 51 #:use-module (gnu packages emacs)
549f9512
FB
52 #:use-module (gnu packages ghostscript)
53 #:use-module (gnu packages netpbm)
1ffa7090 54 #:use-module (gnu packages texinfo)
8f9ac901 55 #:use-module (gnu packages tex)
ce0614dd 56 #:use-module (gnu packages base)
b9b447be 57 #:use-module (gnu packages compression)
cf53ecf5
LC
58 #:use-module (gnu packages pkg-config)
59 #:use-module (gnu packages avahi)
60 #:use-module (gnu packages libphidget)
ffc13e75 61 #:use-module (gnu packages gcc)
30645251 62 #:use-module (gnu packages glib)
9d3c4dae 63 #:use-module (gnu packages gtk)
30645251 64 #:use-module (gnu packages libffi)
d3206af6 65 #:use-module (gnu packages fontutils)
e55354b8 66 #:use-module (gnu packages image)
bc11c72c 67 #:use-module (gnu packages xorg)
cd0322a3 68 #:use-module (gnu packages sqlite)
782170c4
SB
69 #:use-module (gnu packages tls)
70 #:use-module (gnu packages gl)
e0b49c78 71 #:use-module (gnu packages libedit)
e83c7d1a 72 #:use-module (srfi srfi-1)
e117772d
LC
73 #:use-module (ice-9 match))
74
a0efb39a 75(define (mit-scheme-source-directory system version)
ecb26c10
AE
76 (string-append "mit-scheme-"
77 (if (or (string-prefix? "x86_64" system)
a0efb39a 78 (string-prefix? "i686" system))
ecb26c10
AE
79 ""
80 "c-")
81 version))
82
e117772d
LC
83(define-public mit-scheme
84 (package
85 (name "mit-scheme")
d870cc5e 86 (version "10.1.3")
e117772d 87 (source #f) ; see below
f163c290 88 (outputs '("out" "doc"))
e117772d
LC
89 (build-system gnu-build-system)
90 (arguments
fbf7b7e9 91 `(#:modules ((guix build gnu-build-system)
f163c290
FB
92 (guix build utils)
93 (srfi srfi-1))
e117772d 94 #:phases
af00e633
FB
95 (modify-phases %standard-phases
96 (replace 'unpack
97 (lambda* (#:key inputs #:allow-other-keys)
e39631a9
TGR
98 (invoke "tar" "xzvf"
99 (assoc-ref inputs "source"))
100 (chdir ,(mit-scheme-source-directory (%current-system)
101 version))
102 ;; Delete these dangling symlinks since they break
103 ;; `patch-shebangs'.
104 (for-each delete-file
d870cc5e 105 (find-files "src/compiler" "^make\\."))
e39631a9
TGR
106 (chdir "src")
107 #t))
fbf7b7e9
KK
108 (add-after 'unpack 'patch-/bin/sh
109 (lambda _
110 (setenv "CONFIG_SHELL" (which "sh"))
111 (substitute* '("../tests/ffi/autogen.sh"
112 "../tests/ffi/autobuild.sh"
113 "../tests/ffi/test-ffi.sh"
114 "../tests/runtime/test-process.scm"
115 "runtime/unxprm.scm")
116 (("/bin/sh") (which "sh"))
117 (("\\./autogen\\.sh")
118 (string-append (which "sh") " autogen.sh"))
119 (("\\./configure")
120 (string-append (which "sh") " configure")))
121 #t))
9b02a79b
PN
122 ;; FIXME: the texlive-union insists on regenerating fonts. It stores
123 ;; them in HOME, so it needs to be writeable.
124 (add-before 'build 'set-HOME
125 (lambda _ (setenv "HOME" "/tmp") #t))
af00e633
FB
126 (replace 'build
127 (lambda* (#:key system outputs #:allow-other-keys)
128 (let ((out (assoc-ref outputs "out")))
129 (if (or (string-prefix? "x86_64" system)
130 (string-prefix? "i686" system))
e39631a9
TGR
131 (invoke "make" "compile-microcode")
132 (invoke "./etc/make-liarc.sh"
133 (string-append "--prefix=" out)))
134 #t)))
f163c290
FB
135 (add-after 'configure 'configure-doc
136 (lambda* (#:key outputs inputs #:allow-other-keys)
137 (with-directory-excursion "../doc"
138 (let* ((out (assoc-ref outputs "out"))
139 (bash (assoc-ref inputs "bash"))
140 (bin/sh (string-append bash "/bin/sh")))
e39631a9
TGR
141 (invoke bin/sh "./configure"
142 (string-append "--prefix=" out)
143 (string-append "SHELL=" bin/sh))
f163c290
FB
144 #t))))
145 (add-after 'build 'build-doc
146 (lambda* _
147 (with-directory-excursion "../doc"
e39631a9
TGR
148 (invoke "make"))
149 #t))
f163c290
FB
150 (add-after 'install 'install-doc
151 (lambda* (#:key outputs #:allow-other-keys)
152 (let* ((out (assoc-ref outputs "out"))
153 (doc (assoc-ref outputs "doc"))
154 (old-doc-dir (string-append out "/share/doc"))
155 (new-doc/mit-scheme-dir
156 (string-append doc "/share/doc/" ,name "-" ,version)))
157 (with-directory-excursion "../doc"
158 (for-each (lambda (target)
e39631a9 159 (invoke "make" target))
d870cc5e 160 '("install-info-gz" "install-man"
f163c290
FB
161 "install-html" "install-pdf")))
162 (mkdir-p new-doc/mit-scheme-dir)
163 (copy-recursively
d870cc5e 164 (string-append old-doc-dir "/" ,name)
f163c290
FB
165 new-doc/mit-scheme-dir)
166 (delete-file-recursively old-doc-dir)
167 #t))))))
168 (native-inputs
fbf7b7e9
KK
169 `(;; Autoconf, Automake, and Libtool are necessary for the FFI tests.
170 ("autoconf" ,autoconf)
171 ("automake" ,automake)
172 ("libtool" ,libtool)
173 ("texlive" ,(texlive-union (list texlive-tex-texinfo)))
f163c290
FB
174 ("texinfo" ,texinfo)
175 ("m4" ,m4)))
e117772d 176 (inputs
f163c290 177 `(("libx11" ,libx11)
e117772d
LC
178
179 ("source"
dd6b9a37
LC
180
181 ;; MIT/GNU Scheme is not bootstrappable, so it's recommended to
182 ;; compile from the architecture-specific tarballs, which contain
183 ;; pre-built binaries. It leads to more efficient code than when
184 ;; building the tarball that contains generated C code instead of
185 ;; those binaries.
186 ,(origin
187 (method url-fetch)
188 (uri (string-append "mirror://gnu/mit-scheme/stable.pkg/"
189 version "/mit-scheme-"
dd6b9a37 190 (match (%current-system)
ecb26c10
AE
191 ("x86_64-linux"
192 (string-append version "-x86-64"))
193 ("i686-linux"
966629a1
LC
194 (string-append version "-i386"))
195 (_
196 (string-append "c-" version)))
dd6b9a37
LC
197 ".tar.gz"))
198 (sha256
199 (match (%current-system)
200 ("x86_64-linux"
201 (base32
d870cc5e 202 "03m7cc035w3avs91j2pcz9f15ssgvgp3rm045d1vbydqrkzfyw8k"))
dd6b9a37
LC
203 ("i686-linux"
204 (base32
7d6cfa44
EF
205 "05sjyz90xxfnmi87qv8x0yx0fcallnzl1dciygdafp317pn489is"))
206 (_
2f1a01b7
LC
207 (base32
208 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))))))))
75af27f7
LC
209
210 ;; Fails to build on MIPS, see <http://bugs.gnu.org/18221>.
d870cc5e
KK
211 ;; Also, the portable C version of MIT/GNU Scheme did not work in time for
212 ;; release in version 10.1.
213 (supported-systems '("x86_64-linux" "i686-linux"))
75af27f7 214
6fd52309 215 (home-page "https://www.gnu.org/software/mit-scheme/")
a2b63d58 216 (synopsis "A Scheme implementation with integrated editor and debugger")
e117772d 217 (description
79c311b8 218 "GNU/MIT Scheme is an implementation of the Scheme programming
a22dc0c4
LC
219language. It provides an interpreter, a compiler and a debugger. It also
220features an integrated Emacs-like editor and a large runtime library.")
63e8bb12
LC
221 (license gpl2+)
222 (properties '((ftp-directory . "/gnu/mit-scheme/stable.pkg")))))
e117772d
LC
223
224(define-public bigloo
1fe1bb96
LC
225 ;; Upstream modifies source tarballs in place, making significant changes
226 ;; long after the initial publication: <https://bugs.gnu.org/33525>. For
227 ;; transparency, we give this "second 4.3b" release a different version
228 ;; number.
deaf0e7b 229 (let ((upstream-version "4.3e"))
1fe1bb96
LC
230 (package
231 (name "bigloo")
deaf0e7b 232 (version "4.3e1")
1fe1bb96
LC
233 (source (origin
234 (method url-fetch)
235 (uri (string-append "ftp://ftp-sop.inria.fr/indes/fp/Bigloo/bigloo"
236 upstream-version ".tar.gz"))
237 (sha256
238 (base32
deaf0e7b 239 "12k1kxyn3yilba0508xh8wkrw6279gnghzqi0bs2ayf5d2wkqdj3"))
1fe1bb96
LC
240 ;; Remove bundled libraries.
241 (modules '((guix build utils)))
242 (snippet
243 '(begin
244 (for-each delete-file-recursively
245 '("gc" "gmp" "libuv"))
246 #t))))
247 (build-system gnu-build-system)
248 (arguments
249 `(#:test-target "test"
250 #:phases
251 (modify-phases %standard-phases
252 (replace 'configure
253 (lambda* (#:key inputs outputs #:allow-other-keys)
e117772d 254
1fe1bb96
LC
255 (substitute* "configure"
256 (("^shell=.*$")
257 (string-append "shell=" (which "bash") "\n"))
258 (("`date`") "0"))
259 (substitute* "autoconf/runtest.in"
260 ((", @DATE@") ""))
261 (substitute* "autoconf/osversion"
262 (("^version.*$") "version=\"\"\n"))
263 (substitute* "comptime/Makefile"
264 (("\\$\\(LDCOMPLIBS\\)")
265 "$(LDCOMPLIBS) $(LDFLAGS)"))
e117772d 266
1fe1bb96
LC
267 ;; The `configure' script doesn't understand options
268 ;; of those of Autoconf.
269 (let ((out (assoc-ref outputs "out")))
270 (invoke "./configure"
271 (string-append "--prefix=" out)
272 ; use system libraries
273 "--customgc=no"
274 "--customunistring=no"
275 "--customlibuv=no"
276 (string-append"--mv=" (which "mv"))
277 (string-append "--rm=" (which "rm"))
278 "--cflags=-fPIC"
279 (string-append "--ldflags=-Wl,-rpath="
280 (assoc-ref outputs "out")
281 "/lib/bigloo/" ,upstream-version)
282 (string-append "--lispdir=" out
283 "/share/emacs/site-lisp")
284 "--sharedbde=yes"
285 "--sharedcompiler=yes"
286 "--disable-patch"))))
287 (add-after 'install 'install-emacs-modes
288 (lambda* (#:key outputs #:allow-other-keys)
289 (let* ((out (assoc-ref outputs "out"))
290 (dir (string-append out "/share/emacs/site-lisp")))
291 (invoke "make" "-C" "bmacs" "all" "install"
292 (string-append "EMACSBRAND=emacs25")
293 (string-append "EMACSDIR=" dir))))))))
294 (inputs
295 `(("emacs" ,emacs) ;UDE needs the X version of Emacs
296 ("libgc" ,libgc)
297 ("libunistring" ,libunistring)
298 ("libuv" ,libuv)
299 ("openssl" ,openssl)
300 ("sqlite" ,sqlite)
cf53ecf5 301
1fe1bb96
LC
302 ;; Optional APIs for which Bigloo has bindings.
303 ("avahi" ,avahi)
304 ("libphidget" ,libphidget)
305 ("pcre" ,pcre)))
306 (native-inputs
307 `(("pkg-config" ,pkg-config)))
308 (propagated-inputs
309 `(("gmp" ,gmp))) ; bigloo.h refers to gmp.h
310 (home-page "http://www-sop.inria.fr/indes/fp/Bigloo/")
311 (synopsis "Efficient Scheme compiler")
312 (description
313 "Bigloo is a Scheme implementation devoted to one goal: enabling Scheme
314based programming style where C(++) is usually required. Bigloo attempts to
315make Scheme practical by offering features usually presented by traditional
316programming languages but not offered by Scheme and functional programming.
317Bigloo compiles Scheme modules. It delivers small and fast stand alone binary
318executables. Bigloo enables full connections between Scheme and C programs
319and between Scheme and Java programs.")
320 (license gpl2+))))
e6e82f62
LC
321
322(define-public hop
323 (package
324 (name "hop")
697b6ca3 325 (version "3.2.0-pre1")
e6e82f62
LC
326 (source (origin
327 (method url-fetch)
328 (uri (string-append "ftp://ftp-sop.inria.fr/indes/fp/Hop/hop-"
329 version ".tar.gz"))
330 (sha256
331 (base32
697b6ca3 332 "0jf418d0s9imv98s6qrpjxr1mdaxr37knh5qyfl5y4a9cc41mlg5"))))
e6e82f62
LC
333 (build-system gnu-build-system)
334 (arguments
082725b5
KK
335 `(#:test-target "test"
336 #:make-flags '("BIGLOO=bigloo")
337 #:parallel-build? #f
338 #:phases
04014de6
EF
339 (modify-phases %standard-phases
340 (replace 'configure
082725b5 341 (lambda* (#:key inputs outputs #:allow-other-keys)
04014de6 342 (let ((out (assoc-ref outputs "out")))
697b6ca3
KK
343 (substitute* '("tools/Makefile"
344 "test/hopjs/TEST.in")
345 (("/bin/rm") (which "rm")))
24674e61
TGR
346 (invoke "./configure"
347 (string-append "--prefix=" out)
697b6ca3 348 "--hostcc=gcc"
24674e61
TGR
349 (string-append "--blflags="
350 ;; user flags completely override useful
351 ;; default flags, so repeat them here.
352 "-copt \\$(CPICFLAGS) "
353 "-L \\$(BUILDLIBDIR) "
354 "-ldopt -Wl,-rpath," out "/lib"))))))))
a394c60a
AE
355 (inputs `(("avahi" ,avahi)
356 ("bigloo" ,bigloo)
082725b5
KK
357 ("libgc" ,libgc)
358 ("libunistring" ,libunistring)
359 ("libuv" ,libuv)
360 ("pcre" ,pcre)
361 ("sqlite" ,sqlite)
8a629613 362 ("which" ,which)))
e6e82f62 363 (home-page "http://hop.inria.fr/")
9e771e3b 364 (synopsis "Multi-tier programming language for the Web 2.0")
e6e82f62
LC
365 (description
366 "HOP is a multi-tier programming language for the Web 2.0 and the
367so-called diffuse Web. It is designed for programming interactive web
368applications in many fields such as multimedia (web galleries, music players,
369...), ubiquitous and house automation (SmartPhones, personal appliance),
370mashups, office (web agendas, mail clients, ...), etc.")
371 (license gpl2+)))
8cc9e7f9
LC
372
373(define-public chicken
374 (package
375 (name "chicken")
402c36c1 376 (version "5.0.0")
8cc9e7f9 377 (source (origin
b9b6db45 378 (method url-fetch)
359e9c42 379 (uri (string-append "https://code.call-cc.org/releases/"
b9b6db45 380 version "/chicken-" version ".tar.gz"))
b9b6db45
KK
381 (sha256
382 (base32
402c36c1 383 "15b5yrzfa8aimzba79x7v6y282f898rxqxfxrr446sjx9jwlpfd8"))))
8cc9e7f9
LC
384 (build-system gnu-build-system)
385 (arguments
386 `(#:modules ((guix build gnu-build-system)
387 (guix build utils)
388 (srfi srfi-1))
44fa8431 389
8cc9e7f9
LC
390 ;; No `configure' script; run "make check" after "make install" as
391 ;; prescribed by README.
acb38070
RW
392 #:phases
393 (modify-phases %standard-phases
394 (delete 'configure)
395 (delete 'check)
396 (add-after 'install 'check
b9b6db45 397 (assoc-ref %standard-phases 'check)))
8cc9e7f9
LC
398
399 #:make-flags (let ((out (assoc-ref %outputs "out")))
400 (list "PLATFORM=linux"
401 (string-append "PREFIX=" out)
402 (string-append "VARDIR=" out "/var/lib")))
403
404 ;; Parallel builds are not supported, as noted in README.
405 #:parallel-build? #f))
406 (home-page "http://www.call-cc.org/")
407 (synopsis "R5RS Scheme implementation that compiles native code via C")
408 (description
409 "CHICKEN is a compiler for the Scheme programming language. CHICKEN
410produces portable and efficient C, supports almost all of the R5RS Scheme
2c4b49ed 411language standard, and includes many enhancements and extensions.")
8cc9e7f9 412 (license bsd-3)))
f7ce90e7
LC
413
414(define-public scheme48
415 (package
416 (name "scheme48")
5c4d98ab 417 (version "1.9.2")
f7ce90e7
LC
418 (source (origin
419 (method url-fetch)
420 (uri (string-append "http://s48.org/" version
421 "/scheme48-" version ".tgz"))
422 (sha256
423 (base32
5c4d98ab 424 "1x4xfm3lyz2piqcw1h01vbs1iq89zq7wrsfjgh3fxnlm1slj2jcw"))
fc1adab1 425 (patches (search-patches "scheme48-tests.patch"))))
f7ce90e7 426 (build-system gnu-build-system)
f7ce90e7
LC
427 (home-page "http://s48.org/")
428 (synopsis "Scheme implementation using a bytecode interpreter")
429 (description
430 "Scheme 48 is an implementation of Scheme based on a byte-code
431interpreter and is designed to be used as a testbed for experiments in
432implementation techniques and as an expository tool.")
433
434 ;; Most files are BSD-3; see COPYING for the few exceptions.
435 (license bsd-3)))
30645251
LC
436
437(define-public racket
438 (package
439 (name "racket")
948ecc27 440 (version "7.3")
30645251 441 (source (origin
e0b49c78
KH
442 (method url-fetch)
443 (uri (list (string-append "http://mirror.racket-lang.org/installers/"
444 version "/racket-" version "-src.tgz")
445 (string-append
446 "http://mirror.informatik.uni-tuebingen.de/mirror/racket/"
447 version "/racket-" version "-src.tgz")))
448 (sha256
449 (base32
948ecc27 450 "0h6072njhb87rkz4arijvahxgjzn8r14s4wns0ijvxm89bg136yl"))
e0b49c78
KH
451 (patches (search-patches
452 "racket-store-checksum-override.patch"))))
30645251
LC
453 (build-system gnu-build-system)
454 (arguments
455 '(#:phases
dc1d3cde
KK
456 (modify-phases %standard-phases
457 (add-before 'configure 'pre-configure
458 (lambda* (#:key inputs #:allow-other-keys)
459 ;; Patch dynamically loaded libraries with their absolute paths.
460 (let* ((library-path (search-path-as-string->list
461 (getenv "LIBRARY_PATH")))
462 (find-so (lambda (soname)
463 (search-path
464 library-path
465 (format #f "~a.so" soname))))
466 (patch-ffi-libs (lambda (file libs)
467 (for-each
468 (lambda (lib)
469 (substitute* file
470 (((format #f "\"~a\"" lib))
471 (format #f "\"~a\"" (find-so lib)))))
472 libs))))
473 (substitute* "collects/db/private/sqlite3/ffi.rkt"
474 (("ffi-lib sqlite-so")
475 (format #f "ffi-lib \"~a\"" (find-so "libsqlite3"))))
476 (substitute* "collects/openssl/libssl.rkt"
477 (("ffi-lib libssl-so")
478 (format #f "ffi-lib \"~a\"" (find-so "libssl"))))
479 (substitute* "collects/openssl/libcrypto.rkt"
480 (("ffi-lib libcrypto-so")
481 (format #f "ffi-lib \"~a\"" (find-so "libcrypto"))))
482 (substitute* "share/pkgs/math-lib/math/private/bigfloat/gmp.rkt"
483 (("ffi-lib libgmp-so")
484 (format #f "ffi-lib \"~a\"" (find-so "libgmp"))))
485 (substitute* "share/pkgs/math-lib/math/private/bigfloat/mpfr.rkt"
486 (("ffi-lib libmpfr-so")
487 (format #f "ffi-lib \"~a\"" (find-so "libmpfr"))))
26700cae
SB
488 (substitute* "share/pkgs/readline-lib/readline/rktrl.rkt"
489 (("\\(getenv \"PLT_READLINE_LIB\"\\)")
490 (format #f "\"~a\"" (find-so "libedit"))))
dc1d3cde
KK
491 (for-each
492 (lambda (x) (apply patch-ffi-libs x))
493 '(("share/pkgs/draw-lib/racket/draw/unsafe/cairo-lib.rkt"
494 ("libfontconfig" "libcairo"))
495 ("share/pkgs/draw-lib/racket/draw/unsafe/glib.rkt"
496 ("libglib-2.0" "libgmodule-2.0" "libgobject-2.0"))
497 ("share/pkgs/draw-lib/racket/draw/unsafe/jpeg.rkt"
498 ("libjpeg"))
499 ("share/pkgs/draw-lib/racket/draw/unsafe/pango.rkt"
500 ("libpango-1.0" "libpangocairo-1.0"))
501 ("share/pkgs/draw-lib/racket/draw/unsafe/png.rkt"
502 ("libpng"))
503 ("share/pkgs/db-lib/db/private/odbc/ffi.rkt"
504 ("libodbc"))
505 ("share/pkgs/gui-lib/mred/private/wx/gtk/x11.rkt"
506 ("libX11"))
507 ("share/pkgs/gui-lib/mred/private/wx/gtk/gsettings.rkt"
508 ("libgio-2.0"))
509 ("share/pkgs/gui-lib/mred/private/wx/gtk/gtk3.rkt"
510 ("libgdk-3" "libgtk-3"))
511 ("share/pkgs/gui-lib/mred/private/wx/gtk/unique.rkt"
512 ("libunique-1.0"))
513 ("share/pkgs/gui-lib/mred/private/wx/gtk/utils.rkt"
514 ("libgdk-x11-2.0" "libgdk_pixbuf-2.0" "libgtk-x11-2.0"))
515 ("share/pkgs/gui-lib/mred/private/wx/gtk/gl-context.rkt"
516 ("libGL"))
517 ("share/pkgs/sgl/gl.rkt"
26700cae 518 ("libGL" "libGLU")))))
dc1d3cde
KK
519 (chdir "src")
520 #t))
521 (add-after 'unpack 'patch-/bin/sh
522 (lambda _
523 (substitute* "collects/racket/system.rkt"
524 (("/bin/sh") (which "sh")))
525 #t)))
e0b49c78 526 #:tests? #f ; XXX: how to run them?
30645251 527 ))
782170c4
SB
528 (inputs
529 `(("libffi" ,libffi)
530 ;; Hardcode dynamically loaded libraries for better functionality.
531 ;; sqlite and libraries for `racket/draw' are needed to build the doc.
532 ("cairo" ,cairo)
533 ("fontconfig" ,fontconfig)
534 ("glib" ,glib)
535 ("glu" ,glu)
536 ("gmp" ,gmp)
e0b49c78 537 ("gtk+" ,gtk+) ; propagates gdk-pixbuf+svg
782170c4
SB
538 ("libjpeg" ,libjpeg)
539 ("libpng" ,libpng)
540 ("libx11" ,libx11)
541 ("mesa" ,mesa)
542 ("mpfr" ,mpfr)
543 ("openssl" ,openssl)
544 ("pango" ,pango)
545 ("sqlite" ,sqlite)
e0b49c78
KH
546 ("unixodbc" ,unixodbc)
547 ("libedit" ,libedit)))
30645251
LC
548 (home-page "http://racket-lang.org")
549 (synopsis "Implementation of Scheme and related languages")
550 (description
551 "Racket is an implementation of the Scheme programming language (R5RS and
552R6RS) and related languages, such as Typed Racket. It features a compiler and
553a virtual machine with just-in-time native compilation, as well as a large set
554of libraries.")
39d0ce93 555 (license lgpl2.0+)))
07f4aef0
TUBK
556
557(define-public gambit-c
558 (package
559 (name "gambit-c")
a7022852 560 (version "4.9.2")
07f4aef0
TUBK
561 (source
562 (origin
563 (method url-fetch)
564 (uri (string-append
565 "http://www.iro.umontreal.ca/~gambit/download/gambit/v"
9ba88890 566 (version-major+minor version) "/source/gambit-v"
07f4aef0
TUBK
567 (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
568 ".tgz"))
569 (sha256
a7022852 570 (base32 "1cpganh3jgjdw6qsapcbwxdbp1xwgx5gvdl4ymwf8p2c5k018dwy"))))
07f4aef0
TUBK
571 (build-system gnu-build-system)
572 (arguments
573 '(#:configure-flags
574 ;; According to the ./configure script, this makes the build slower and
575 ;; use >= 1 GB memory, but makes Gambit much faster.
4be83af4 576 '("--enable-single-host")))
cb3854cd 577 (home-page "http://dynamo.iro.umontreal.ca/wiki/index.php/Main_Page")
07f4aef0
TUBK
578 (synopsis "Efficient Scheme interpreter and compiler")
579 (description
580 "Gambit consists of two main programs: gsi, the Gambit Scheme
581interpreter, and gsc, the Gambit Scheme compiler. The interpreter contains
582the complete execution and debugging environment. The compiler is the
583interpreter extended with the capability of generating executable files. The
584compiler can produce standalone executables or compiled modules which can be
585loaded at run time. Interpreted code and compiled code can be freely
586mixed.")
587 ;; Dual license.
588 (license (list lgpl2.1+ asl2.0))))
3e92f4f9
TUBK
589
590(define-public chibi-scheme
591 (package
592 (name "chibi-scheme")
cf822f4d 593 (version "0.8")
3e92f4f9
TUBK
594 (source
595 (origin
596 (method url-fetch)
51960939
TUBK
597 (uri (string-append "https://github.com/ashinn/chibi-scheme/archive/"
598 version ".tar.gz"))
3e92f4f9 599 (sha256
cf822f4d 600 (base32 "0mi73543m1gap3bwvivq77vhqk7yn28v6g947h96q893n5cph1wa"))
51960939 601 (file-name (string-append "chibi-scheme-" version ".tar.gz"))))
3e92f4f9
TUBK
602 (build-system gnu-build-system)
603 (arguments
4a187c55
LC
604 `(#:phases (modify-phases %standard-phases
605 (delete 'configure)
606 (add-before 'build 'set-cc
607 (lambda _
608 (setenv "CC" "gcc"))))
3e92f4f9
TUBK
609 #:make-flags (let ((out (assoc-ref %outputs "out")))
610 (list (string-append "PREFIX=" out)
611 (string-append "LDFLAGS=-Wl,-rpath=" out "/lib")))
612 #:test-target "test"))
50995554 613 (home-page "https://github.com/ashinn/chibi-scheme")
3e92f4f9
TUBK
614 (synopsis "Small embeddable Scheme implementation")
615 (description
616 "Chibi-Scheme is a very small library with no external dependencies
617intended for use as an extension and scripting language in C programs. In
618addition to support for lightweight VM-based threads, each VM itself runs in
619an isolated heap allowing multiple VMs to run simultaneously in different OS
620threads.")
621 (license bsd-3)))
c093f9f6 622
b9b447be 623(define-public sicp
2705a97e 624 (let ((commit "225c172f9b859902a64a3c5dd5e1f9ac1a7382de"))
b9b447be
JN
625 (package
626 (name "sicp")
2705a97e 627 (version (string-append "20170703-1." (string-take commit 7)))
b9b447be
JN
628 (source (origin
629 (method git-fetch)
630 (uri (git-reference
631 (url "https://github.com/sarabander/sicp")
632 (commit commit)))
633 (sha256
634 (base32
2705a97e 635 "0bhdrdc1mgdjdsg4jksq9z6x129f3346jbf3zir2a0dfmsj6m10n"))
b9b447be
JN
636 (file-name (string-append name "-" version "-checkout"))))
637 (build-system trivial-build-system)
638 (native-inputs `(("gzip" ,gzip)
639 ("source" ,source)
640 ("texinfo" ,texinfo)))
641 (arguments
642 `(#:modules ((guix build utils)
643 (srfi srfi-1)
644 (srfi srfi-26))
645 #:builder
646 (begin
647 (use-modules (guix build utils)
648 (srfi srfi-1)
649 (srfi srfi-26))
650 (let ((gzip (assoc-ref %build-inputs "gzip"))
651 (source (assoc-ref %build-inputs "source"))
652 (texinfo (assoc-ref %build-inputs "texinfo"))
01d71f62 653 (html-dir (string-append %output "/share/doc/" ,name "/html"))
b9b447be 654 (info-dir (string-append %output "/share/info")))
01d71f62 655 (copy-recursively (string-append source "/html") html-dir)
b9b447be
JN
656 (setenv "PATH" (string-append gzip "/bin"
657 ":" texinfo "/bin"))
658 (mkdir-p info-dir)
09b8c04e
MW
659 (invoke "makeinfo" "--output"
660 (string-append info-dir "/sicp.info")
661 (string-append source "/sicp-pocket.texi"))
662 (for-each (cut invoke "gzip" "-9n" <>)
663 (find-files info-dir))
664 #t))))
0e0015f2 665 (home-page "https://sarabander.github.io/sicp")
b9b447be
JN
666 (synopsis "Structure and Interpretation of Computer Programs")
667 (description "Structure and Interpretation of Computer Programs (SICP) is
668a textbook aiming to teach the principles of computer programming.
669
670Using Scheme, a dialect of the Lisp programming language, the book explains
671core computer science concepts such as abstraction in programming,
672metalinguistic abstraction, recursion, interpreters, and modular programming.")
673 (license cc-by-sa4.0))))
8a0c2552 674
675(define-public scheme48-rx
7108ad5b
TGR
676 (let* ((commit "dd9037f6f9ea01019390614f6b126b7dd293798d")
677 (revision "2"))
8a0c2552 678 (package
679 (name "scheme48-rx")
680 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
681 (source
682 (origin
683 (method git-fetch)
684 (uri (git-reference
685 (url "https://github.com/scheme/rx")
686 (commit commit)))
687 (sha256
688 (base32
7108ad5b 689 "1bvriavxw5kf2izjbil3999vr983vkk2xplfpinafr86m40b2cci"))
8a0c2552 690 (file-name (string-append name "-" version "-checkout"))))
691 (build-system trivial-build-system)
692 (arguments
693 `(#:modules ((guix build utils))
694 #:builder
695 (begin
696 (use-modules (guix build utils))
697 (let ((share (string-append %output
698 "/share/scheme48-"
699 ,(package-version scheme48)
700 "/rx")))
701 (chdir (assoc-ref %build-inputs "source"))
702 (mkdir-p share)
e3cfef22
MW
703 (copy-recursively "." share)
704 #t))))
8a0c2552 705 (native-inputs
706 `(("source" ,source)
707 ("scheme48" ,scheme48)))
708 (home-page "https://github.com/scheme/rx/")
709 (synopsis "SRE String pattern-matching library for scheme48")
710 (description
711 "String pattern-matching library for scheme48 based on the SRE
712regular-expression notation.")
713 (license bsd-3))))
07ef08a7
JD
714
715(define-public slib
716 (package
717 (name "slib")
718 (version "3b5")
719 (source (origin
720 (method url-fetch)
721 (uri (string-append "http://groups.csail.mit.edu/mac/ftpdir/scm/slib-"
722 version ".zip"))
723 (sha256
724 (base32
725 "0q0p2d53p8qw2592yknzgy2y1p5a9k7ppjx0cfrbvk6242c4mdpq"))))
726 (build-system gnu-build-system)
727 (arguments
728 `(#:tests? #f ; There is no check target.
729 #:phases
730 (modify-phases %standard-phases
731 (add-after 'install 'remove-bin-share
732 (lambda* (#:key inputs outputs #:allow-other-keys)
733 (delete-file-recursively
2e14ca19
TGR
734 (string-append (assoc-ref outputs "out") "/bin"))
735 #t))
07ef08a7
JD
736 (replace 'configure
737 (lambda* (#:key inputs outputs #:allow-other-keys)
2e14ca19
TGR
738 (invoke "./configure"
739 (string-append "--prefix="
740 (assoc-ref outputs "out"))))))))
07ef08a7
JD
741 (native-inputs `(("unzip" ,unzip)
742 ("texinfo" ,texinfo)))
30fd958e 743 (home-page "http://people.csail.mit.edu/jaffer/SLIB.html")
07ef08a7
JD
744 (synopsis "Compatibility and utility library for Scheme")
745 (description "SLIB is a portable Scheme library providing compatibility and
746utility functions for all standard Scheme implementations.")
747 (license (non-copyleft
748 "http://people.csail.mit.edu/jaffer/SLIB_COPYING.txt"
749 "Or see COPYING in the distribution."))))
750
8c48d0eb
JD
751(define-public scm
752 (package
753 (name "scm")
754 (version "5f2")
755 (source (origin
756 (method url-fetch)
757 (uri (string-append
758 "http://groups.csail.mit.edu/mac/ftpdir/scm/scm-"
759 version ".zip"))
760 (sha256
761 (base32
762 "050ijb51jm1cij9g3r89zl9rawsrikhbb5y8zb7lspb7bsxq5w99"))))
763 (build-system gnu-build-system)
764 (arguments
765 `(#:phases
766 (modify-phases %standard-phases
767 (replace 'configure
768 (lambda* (#:key inputs outputs #:allow-other-keys)
b44b14cd
TGR
769 (invoke "./configure"
770 (string-append "--prefix="
771 (assoc-ref outputs "out")))))
8c48d0eb
JD
772 (add-before 'build 'pre-build
773 (lambda* (#:key inputs #:allow-other-keys)
774 (substitute* "Makefile"
b44b14cd
TGR
775 (("ginstall-info") "install-info"))
776 #t))
8c48d0eb
JD
777 (replace 'build
778 (lambda* (#:key inputs outputs #:allow-other-keys)
779 (setenv "SCHEME_LIBRARY_PATH"
780 (string-append (assoc-ref inputs "slib")
781 "/lib/slib/"))
b44b14cd
TGR
782 (invoke "make" "scmlit" "CC=gcc")
783 (invoke "make" "all")))
8c48d0eb
JD
784 (add-after 'install 'post-install
785 (lambda* (#:key inputs outputs #:allow-other-keys)
b44b14cd
TGR
786 (let* ((out (assoc-ref outputs "out"))
787 (req (string-append out "/lib/scm/require.scm")))
788 (delete-file req)
789 (format (open req (logior O_WRONLY O_CREAT))
790 "(define (library-vicinity) ~s)\n"
791 (string-append (assoc-ref inputs "slib")
792 "/lib/slib/"))
793
794 ;; We must generate the slibcat file.
795 (invoke (string-append out "/bin/scm")
796 "-br" "new-catalog")))))))
8c48d0eb
JD
797 (inputs `(("slib" ,slib)))
798 (native-inputs `(("unzip" ,unzip)
799 ("texinfo" ,texinfo)))
800 (home-page "http://people.csail.mit.edu/jaffer/SCM")
801 (synopsis "Scheme implementation conforming to R5RS and IEEE P1178")
802 (description "GNU SCM is an implementation of Scheme. This
803implementation includes Hobbit, a Scheme-to-C compiler, which can
804generate C files whose binaries can be dynamically or statically
805linked with a SCM executable.")
806 (license lgpl3+)))
e2f9847b
TGR
807
808(define-public tinyscheme
809 (package
810 (name "tinyscheme")
811 (version "1.41")
812 (source (origin
813 (method url-fetch)
814 (uri (string-append "mirror://sourceforge/" name "/" name "/"
815 name "-" version "/" name "-" version ".zip"))
816 (sha256
817 (base32
818 "0yqma4jrjgj95f3hf30h542x97n8ah234n19yklbqq0phfsa08wf"))))
819 (build-system gnu-build-system)
820 (native-inputs
821 `(("unzip" ,unzip)))
822 (arguments
823 `(#:phases
824 (modify-phases %standard-phases
825 (replace 'unpack
826 (lambda* (#:key source #:allow-other-keys)
827 (invoke "unzip" source)
828 (chdir (string-append ,name "-" ,version))
829 #t))
830 (add-after 'unpack 'set-scm-directory
831 ;; Hard-code ‘our’ init.scm instead of looking in the current
832 ;; working directory, so invoking ‘scheme’ just works.
833 (lambda* (#:key outputs #:allow-other-keys)
834 (let* ((out (assoc-ref outputs "out"))
835 (scm (string-append out "/share/" ,name)))
836 (substitute* "scheme.c"
837 (("init.scm" all)
838 (string-append scm "/" all)))
839 #t)))
840 (delete 'configure) ; no configure script
841 (replace 'install
842 ;; There's no ‘install’ target. Install files manually.
843 (lambda* (#:key outputs #:allow-other-keys)
844 (let* ((out (assoc-ref outputs "out"))
845 (bin (string-append out "/bin"))
846 (doc (string-append out "/share/doc/"
847 ,name "-" ,version))
848 (include (string-append out "/include"))
849 (lib (string-append out "/lib"))
850 (scm (string-append out "/share/" ,name)))
851 (install-file "scheme" bin)
852 (install-file "Manual.txt" doc)
853 (install-file "scheme.h" include)
854 (install-file "libtinyscheme.so" lib)
855 (install-file "init.scm" scm)
856 #t))))
857 #:tests? #f)) ; no tests
858 (home-page "http://tinyscheme.sourceforge.net/")
859 (synopsis "Light-weight interpreter for the Scheme programming language")
860 (description
861 "TinyScheme is a light-weight Scheme interpreter that implements as large a
862subset of R5RS as was possible without getting very large and complicated.
863
864It's meant to be used as an embedded scripting interpreter for other programs.
865As such, it does not offer an Integrated Development Environment (@dfn{IDE}) or
866extensive toolkits, although it does sport a small (and optional) top-level
867loop.
868
869As an embedded interpreter, it allows multiple interpreter states to coexist in
870the same program, without any interference between them. Foreign functions in C
871can be added and values can be defined in the Scheme environment. Being quite a
872small program, it is easy to comprehend, get to grips with, and use.")
873 (license bsd-3))) ; there are no licence headers
44fa8431
AM
874
875(define-public stalin
876 (let ((commit "ed1c9e339c352b7a6fee40bb2a47607c3466f0be"))
877 ;; FIXME: The Stalin "source" contains C code generated by itself:
878 ;; 'stalin-AMD64.c', etc.
879 (package
880 (name "stalin")
881 (version "0.11")
882 (source (origin
883 ;; Use Pearlmutter's upstream branch with AMD64 patches
884 ;; applied. Saves us from including those 20M! patches
885 ;; in Guix. For more info, see:
886 ;; <ftp.ecn.purdue.edu/qobi/stalin-0.11-amd64-patches.tgz>
887 (method git-fetch)
888 (uri (git-reference
889 (url "https://github.com/barak/stalin.git")
890 (commit commit)))
891 (file-name (string-append name "-" version "-checkout"))
892 (sha256
893 (base32
894 "15a5gxj9v7jqlgkg0543gdflw0rbrir7fj5zgifnb33m074wiyhn"))
895 (modules '((guix build utils)))
896 (snippet
897 ;; remove gc libs from build, we have them as input
898 '(begin
899 (delete-file "gc6.8.tar.gz")
900 (delete-file-recursively "benchmarks")
901 (substitute* "build"
902 ((".*gc6.8.*") "")
903 ((" cd \\.\\.") "")
904 ((".*B include/libgc.a") "")
905 ((".*make.*") ""))
906 #t))))
907 (build-system gnu-build-system)
908 (arguments
909 `(#:make-flags (list "ARCH_OPTS=-freg-struct-return")
910 #:phases
911 (modify-phases %standard-phases
912 (replace 'configure
913 (lambda* (#:key outputs #:allow-other-keys)
914 (let* ((out (assoc-ref outputs "out"))
915 (include-out (string-append out "/include")))
916 (invoke "./build")
917 (for-each (lambda (fname)
918 (install-file fname include-out))
919 (find-files "include"))
920 (substitute* "makefile"
921 (("\\./include") include-out))
922 (substitute* "post-make"
923 (("`pwd`") out))
924 #t)))
925 (delete 'check)
926 (replace 'install
927 (lambda* (#:key outputs #:allow-other-keys)
928 (let ((out (assoc-ref outputs "out")))
929 (install-file "stalin.1"
930 (string-append out "/share/man/man1"))
931 (install-file "stalin"
932 (string-append out "/bin"))
933 #t))))))
934 (inputs
935 `(("libx11" ,libx11)))
936 (propagated-inputs
937 `(("libgc" ,libgc)))
938 (supported-systems '("x86_64-linux"))
939 (home-page "https://engineering.purdue.edu/~qobi/papers/fdlcc.pdf")
940 (synopsis "Brutally efficient Scheme compiler")
941 (description
942 "Stalin is an aggressively optimizing whole-program compiler
943for Scheme that does polyvariant interprocedural flow analysis,
944flow-directed interprocedural escape analysis, flow-directed
945lightweight CPS conversion, flow-directed lightweight closure
946conversion, flow-directed interprocedural lifetime analysis, automatic
947in-lining, unboxing, and flow-directed program-specific and
948program-point-specific low-level representation selection and code
949generation.")
950 (license gpl2+))))
e83c7d1a
PN
951
952(define-public femtolisp
953 (let ((commit "68c5b1225572ecf2c52baf62f928063e5a30511b")
954 (revision "1"))
955 (package
956 (name "femtolisp")
957 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
958 (source (origin
959 (method git-fetch)
960 (uri (git-reference
961 (url "https://github.com/JeffBezanson/femtolisp.git")
962 (commit commit)))
963 (file-name (string-append name "-" version "-checkout"))
964 (sha256
965 (base32
966 "04rnwllxnl86zw8c6pwxznn49bvkvh0f1lfliy085vjzvlq3rgja"))))
967 ;; See "utils.h" for supported systems. Upstream bug:
968 ;; https://github.com/JeffBezanson/femtolisp/issues/25
969 (supported-systems
970 (fold delete %supported-systems
971 '("armhf-linux" "mips64el-linux" "aarch64-linux")))
972 (build-system gnu-build-system)
973 (arguments
974 `(#:make-flags '("CC=gcc" "release")
975 #:test-target "test"
976 #:phases
977 (modify-phases %standard-phases
723f3325 978 (delete 'bootstrap)
e83c7d1a
PN
979 (delete 'configure) ; No configure script
980 (replace 'install ; Makefile has no 'install phase
981 (lambda* (#:key outputs #:allow-other-keys)
982 (let* ((out (assoc-ref outputs "out"))
983 (bin (string-append out "/bin")))
984 (install-file "flisp" bin)
985 #t)))
986 ;; The flisp binary is now available, run bootstrap to
987 ;; generate flisp.boot and afterwards runs make test.
988 (add-after 'install 'bootstrap-gen-and-test
989 (lambda* (#:key outputs #:allow-other-keys)
990 (let* ((out (assoc-ref outputs "out"))
991 (bin (string-append out "/bin")))
723f3325
RW
992 (invoke "./bootstrap.sh")
993 (install-file "flisp.boot" bin)
994 #t))))))
e83c7d1a
PN
995 (synopsis "Scheme-like lisp implementation")
996 (description
997 "@code{femtolisp} is a scheme-like lisp implementation with a
998simple, elegant Scheme dialect. It is a lisp-1 with lexical scope.
999The core is 12 builtin special forms and 33 builtin functions.")
1000 (home-page "https://github.com/JeffBezanson/femtolisp")
1001 (license bsd-3))))
eac7ed19
GH
1002
1003(define-public gauche
1004 (package
1005 (name "gauche")
1006 (version "0.9.7")
1007 (home-page "http://practical-scheme.net/gauche/index.html")
1008 (source
1009 (origin
1010 (method url-fetch)
1011 (uri (string-append
1012 "mirror://sourceforge/gauche/Gauche/Gauche-"
1013 version ".tgz"))
1014 (sha256
1015 (base32
1016 "181nycikma0rwrb1h6mi3kys11f8628pq8g5r3fg5hiz5sabscrd"))
1017 (modules '((guix build utils)))
1018 (snippet '(begin
1019 ;; Remove libatomic-ops
1020 (delete-file-recursively "gc/libatomic_ops")
1021 #t))))
1022 (build-system gnu-build-system)
1023 (inputs
1024 `(("libatomic-ops" ,libatomic-ops)
1025 ("zlib" ,zlib)))
1026 (native-inputs
1027 `(("texinfo" ,texinfo)
1028 ("openssl" ,openssl) ; needed for tests
1029 ("pkg-config" ,pkg-config))) ; needed to find external libatomic-ops
1030 (arguments
1031 `(#:phases
1032 (modify-phases %standard-phases
1033 (add-after 'unpack 'patch-/bin/sh
1034 ;; needed only for tests
1035 (lambda _
1036 (substitute* '("configure"
1037 "test/www.scm"
1038 "ext/tls/test.scm"
1039 "gc/configure"
1040 "lib/gauche/configure.scm"
1041 "lib/gauche/package/util.scm"
1042 "lib/gauche/process.scm")
1043 (("/bin/sh") (which "sh")))
1044 #t))
1045 (add-after 'build 'build-doc
6c4a951a
GH
1046 (lambda _
1047 (with-directory-excursion "doc"
1048 (invoke "make" "info"))
eac7ed19
GH
1049 #t))
1050 (add-before 'check 'patch-normalize-test
1051 ;; neutralize sys-normalize-pathname test as it relies on
1052 ;; the home directory; (setenv "HOME" xx) isn't enough)
1053 (lambda _
1054 (substitute* "test/system.scm"
1055 (("~/abc") "//abc"))
1056 #t))
1057 (add-before 'check 'patch-network-tests
1058 ;; remove net checks
1059 (lambda _
1060 (substitute* "ext/Makefile"
1061 (("binary net termios") "binary termios"))
1062 #t))
1063 (add-after 'install 'install-docs
6c4a951a
GH
1064 (lambda _
1065 (with-directory-excursion "doc"
1066 (invoke "make" "install"))
eac7ed19
GH
1067 #t)))))
1068 (synopsis "Scheme scripting engine")
1069 (description "Gauche is a R7RS Scheme scripting engine aiming at being a
1070handy tool that helps programmers and system administrators to write small to
1071large scripts quickly. Quick startup, built-in system interface, native
1072multilingual support are some of the goals. Gauche comes with a package
1073manager/installer @code{gauche-package} which can download, compile, install
6c4a951a 1074and list gauche extension packages.")
eac7ed19 1075 (license bsd-3)))