gnu: guile-newt: Update to revision 4.
[jackhill/guix/guix.git] / gnu / packages / guile.scm
CommitLineData
233e7676 1;;; GNU Guix --- Functional package management for GNU
152d4076 2;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
6cbee49d 3;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
c5793e7e 4;;; Copyright © 2015, 2017 Christopher Allan Webber <cwebber@dustycloud.org>
44a2bdf8 5;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
95906eee 6;;; Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
76e6e663 7;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com>
4176eb19 8;;; Copyright © 2016 Eraim Flashner <efraim@flashner.co.il>
5245399f 9;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
12235a12 10;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
3b5783fc 11;;; Copyright © 2016 Amirouche <amirouche@hypermove.net>
c5793e7e 12;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
aaf1bdc3 13;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
f252d6df 14;;; Copyright © 2017 David Thompson <davet@gnu.org>
581720bc 15;;; Copyright © 2017, 2018 Mathieu Othacehe <m.othacehe@gmail.com>
d109b1e8 16;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
4a78fd46 17;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
20897536 18;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
d4660a54 19;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
34e00c7b 20;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
f858e58f 21;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
c8e3651a 22;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
1722d680 23;;;
233e7676 24;;; This file is part of GNU Guix.
1722d680 25;;;
233e7676 26;;; GNU Guix is free software; you can redistribute it and/or modify it
1722d680
LC
27;;; under the terms of the GNU General Public License as published by
28;;; the Free Software Foundation; either version 3 of the License, or (at
29;;; your option) any later version.
30;;;
233e7676 31;;; GNU Guix is distributed in the hope that it will be useful, but
1722d680
LC
32;;; WITHOUT ANY WARRANTY; without even the implied warranty of
33;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
34;;; GNU General Public License for more details.
35;;;
36;;; You should have received a copy of the GNU General Public License
233e7676 37;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
1722d680 38
1ffa7090 39(define-module (gnu packages guile)
71e0f217 40 #:use-module ((guix licenses) #:prefix license:)
59a43334 41 #:use-module (gnu packages)
472fc855 42 #:use-module (gnu packages aspell)
146c6b62
RW
43 #:use-module (gnu packages autotools)
44 #:use-module (gnu packages base)
9c782445 45 #:use-module (gnu packages bash)
1ffa7090 46 #:use-module (gnu packages bdw-gc)
148585c2 47 #:use-module (gnu packages compression)
255d1bbe 48 #:use-module (gnu packages dbm)
146c6b62
RW
49 #:use-module (gnu packages ed)
50 #:use-module (gnu packages flex)
1ffa7090 51 #:use-module (gnu packages gawk)
146c6b62
RW
52 #:use-module (gnu packages gettext)
53 #:use-module (gnu packages gl)
1ffa7090 54 #:use-module (gnu packages gperf)
ee8ee748 55 #:use-module (gnu packages hurd)
146c6b62 56 #:use-module (gnu packages image)
1ffa7090 57 #:use-module (gnu packages libffi)
1ffa7090 58 #:use-module (gnu packages libunistring)
7119cca8 59 #:use-module (gnu packages linux)
1ffa7090 60 #:use-module (gnu packages m4)
146c6b62
RW
61 #:use-module (gnu packages man)
62 #:use-module (gnu packages maths)
1ffa7090 63 #:use-module (gnu packages multiprecision)
146c6b62
RW
64 #:use-module (gnu packages ncurses)
65 #:use-module (gnu packages networking)
1ffa7090 66 #:use-module (gnu packages pkg-config)
146c6b62 67 #:use-module (gnu packages python)
1ffa7090 68 #:use-module (gnu packages readline)
146c6b62
RW
69 #:use-module (gnu packages sdl)
70 #:use-module (gnu packages slang)
cd0322a3 71 #:use-module (gnu packages sqlite)
f906d30c 72 #:use-module (gnu packages texinfo)
fa6a3bb7 73 #:use-module (gnu packages tls)
bd233722 74 #:use-module (gnu packages version-control)
bd9af610
AK
75 #:use-module (gnu packages xdisorg)
76 #:use-module (gnu packages xorg)
1722d680 77 #:use-module (guix packages)
87f5d366 78 #:use-module (guix download)
6bc24063 79 #:use-module (guix git-download)
32795fcf 80 #:use-module (guix build-system gnu)
977d8666 81 #:use-module (guix build-system guile)
6bc24063 82 #:use-module (guix build-system trivial)
32795fcf 83 #:use-module (guix utils)
d4660a54
MC
84 #:use-module (ice-9 match)
85 #:use-module ((srfi srfi-1) #:prefix srfi-1:))
1722d680
LC
86
87;;; Commentary:
88;;;
c44899a2 89;;; GNU Guile, and modules and extensions.
1722d680
LC
90;;;
91;;; Code:
92
c44899a2
LC
93(define-public guile-1.8
94 (package
95 (name "guile")
96 (version "1.8.8")
97 (source (origin
87f5d366 98 (method url-fetch)
0db342a5 99 (uri (string-append "mirror://gnu/guile/guile-" version
c44899a2
LC
100 ".tar.gz"))
101 (sha256
102 (base32
01eafd38 103 "0l200a0v7h8bh0cwz6v7hc13ds39cgqsmfrks55b1rbj5vniyiy3"))
fc1adab1 104 (patches (search-patches "guile-1.8-cpp-4.5.patch"))))
c44899a2
LC
105 (build-system gnu-build-system)
106 (arguments '(#:configure-flags '("--disable-error-on-warning")
c44899a2
LC
107
108 ;; Insert a phase before `configure' to patch things up.
dc1d3cde
KK
109 #:phases
110 (modify-phases %standard-phases
111 (add-before 'configure 'patch-stuff
112 (lambda* (#:key outputs #:allow-other-keys)
113 ;; Add a call to `lt_dladdsearchdir' so that
114 ;; `libguile-readline.so' & co. are in the
115 ;; loader's search path.
116 (substitute* "libguile/dynl.c"
117 (("lt_dlinit.*$" match)
118 (format #f
119 " ~a~% lt_dladdsearchdir(\"~a/lib\");~%"
120 match
121 (assoc-ref outputs "out"))))
2f4fbe1c 122
dc1d3cde
KK
123 ;; The usual /bin/sh...
124 (substitute* "ice-9/popen.scm"
125 (("/bin/sh") (which "sh")))
126 #t)))))
01eafd38 127 (inputs `(("gawk" ,gawk)
c44899a2
LC
128 ("readline" ,readline)))
129
130 ;; Since `guile-1.8.pc' has "Libs: ... -lgmp -lltdl", these must be
131 ;; propagated.
132 (propagated-inputs `(("gmp" ,gmp)
be11b102 133 ("libltdl" ,libltdl)))
c44899a2
LC
134
135 ;; When cross-compiling, a native version of Guile itself is needed.
136 (self-native-input? #t)
137
9be8d7c8
LC
138 (native-search-paths
139 (list (search-path-specification
140 (variable "GUILE_LOAD_PATH")
af070955 141 (files '("share/guile/site")))))
9be8d7c8 142
f50d2669 143 (synopsis "Scheme implementation intended especially for extensions")
c44899a2 144 (description
a22dc0c4
LC
145 "Guile is the GNU Ubiquitous Intelligent Language for Extensions, the
146official extension language of the GNU system. It is an implementation of
147the Scheme language which can be easily embedded in other applications to
148provide a convenient means of extending the functionality of the application
149without requiring the source code to be rewritten.")
6fd52309 150 (home-page "https://www.gnu.org/software/guile/")
71e0f217 151 (license license:lgpl2.0+)))
c44899a2
LC
152
153(define-public guile-2.0
154 (package
155 (name "guile")
b5efd14a 156 (version "2.0.14")
c44899a2 157 (source (origin
87f5d366 158 (method url-fetch)
0db342a5 159 (uri (string-append "mirror://gnu/guile/guile-" version
c44899a2
LC
160 ".tar.xz"))
161 (sha256
162 (base32
b5efd14a 163 "10lxc6l5alf3lzbs3ihnbfy6dfcrsyf8667wa57f26vf4mk2ai78"))))
c44899a2
LC
164 (build-system gnu-build-system)
165 (native-inputs `(("pkgconfig" ,pkg-config)))
166 (inputs `(("libffi" ,libffi)
88da729f 167 ,@(libiconv-if-needed)
baf549df
LC
168
169 ;; We need Bash when cross-compiling because some of the scripts
170 ;; in bin/ refer to it. Use 'bash-minimal' because we don't need
171 ;; an interactive Bash with Readline and all.
172 ,@(if (target-mingw?) '() `(("bash" ,bash-minimal)))))
c44899a2
LC
173 (propagated-inputs
174 `( ;; These ones aren't normally needed here, but since `libguile-2.0.la'
175 ;; reads `-lltdl -lunistring', adding them here will add the needed
176 ;; `-L' flags. As for why the `.la' file lacks the `-L' flags, see
177 ;; <http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/18903>.
178 ("libunistring" ,libunistring)
be11b102
LC
179
180 ;; Depend on LIBLTDL, not LIBTOOL. That way, we avoid some the extra
181 ;; dependencies that LIBTOOL has, which is helpful during bootstrap.
182 ("libltdl" ,libltdl)
c44899a2
LC
183
184 ;; The headers and/or `guile-2.0.pc' refer to these packages, so they
185 ;; must be propagated.
bda1bc6c 186 ("bdw-gc" ,libgc)
c44899a2
LC
187 ("gmp" ,gmp)))
188
189 (self-native-input? #t)
190
9bf62d9b
LC
191 (outputs '("out" "debug"))
192
8ffaa93b 193 (arguments
20897536
TGR
194 `(#:configure-flags '("--disable-static") ; saves 3 MiB
195 #:phases
196 (modify-phases %standard-phases
197 (add-before 'configure 'pre-configure
198 (lambda* (#:key inputs #:allow-other-keys)
199 ;; Tell (ice-9 popen) the file name of Bash.
200 (let ((bash (assoc-ref inputs "bash")))
201 (substitute* "module/ice-9/popen.scm"
202 ;; If bash is #f allow fallback for user to provide
203 ;; "bash" in PATH. This happens when cross-building to
204 ;; MinGW for which we do not have Bash yet.
205 (("/bin/sh")
206 ,@(if (target-mingw?)
207 '((if bash
208 (string-append bash "/bin/bash")
209 "bash"))
210 '((string-append bash "/bin/bash")))))
211 #t))))))
8ffaa93b 212
9be8d7c8
LC
213 (native-search-paths
214 (list (search-path-specification
215 (variable "GUILE_LOAD_PATH")
af070955 216 (files '("share/guile/site/2.0")))
9be8d7c8
LC
217 (search-path-specification
218 (variable "GUILE_LOAD_COMPILED_PATH")
b03f270e 219 (files '("lib/guile/2.0/site-ccache")))))
9be8d7c8 220
f50d2669 221 (synopsis "Scheme implementation intended especially for extensions")
c44899a2 222 (description
a22dc0c4
LC
223 "Guile is the GNU Ubiquitous Intelligent Language for Extensions, the
224official extension language of the GNU system. It is an implementation of
225the Scheme language which can be easily embedded in other applications to
226provide a convenient means of extending the functionality of the application
227without requiring the source code to be rewritten.")
6fd52309 228 (home-page "https://www.gnu.org/software/guile/")
71e0f217 229 (license license:lgpl3+)))
c44899a2 230
6f1ce09d
EB
231(define-public guile-2.0.13
232 ;; For testing a "minimal" Guix
233 (hidden-package
234 (package (inherit guile-2.0)
235 (name "guile")
236 (version "2.0.13")
237 (source (origin
238 (method url-fetch)
239 (uri (string-append "mirror://gnu/guile/guile-" version
240 ".tar.xz"))
241 (sha256
242 (base32
243 "12yqkr974y91ylgw6jnmci2v90i90s7h9vxa4zk0sai8vjnz4i1p")))))))
244
f6396d86 245(define-public guile-2.2
f906d30c 246 (package (inherit guile-2.0)
f6396d86 247 (name "guile")
2abd76e8 248 (version "2.2.4")
4eae7980
LC
249 (source (origin
250 (method url-fetch)
34d624ce
LC
251
252 ;; Note: we are limited to one of the compression formats
253 ;; supported by the bootstrap binaries, so no lzip here.
80a72572 254 (uri (string-append "mirror://gnu/guile/guile-" version
34d624ce 255 ".tar.xz"))
4eae7980
LC
256 (sha256
257 (base32
2abd76e8 258 "07p3g0v2ba2vlfbfidqzlgbhnzdx46wh2rgc5gszq1mjyx5bks6r"))
d9f0788a
LC
259 (modules '((guix build utils)))
260
261 ;; Remove the pre-built object files. Instead, build everything
262 ;; from source, at the expense of significantly longer build
263 ;; times (almost 3 hours on a 4-core Intel i5).
6cbee49d
MW
264 (snippet '(begin
265 (for-each delete-file
266 (find-files "prebuilt" "\\.go$"))
267 #t))))
4fbd0f4f 268 (properties '((timeout . 72000) ;20 hours
16b0f205 269 (max-silent-time . 36000))) ;10 hours (needed on ARM
1577a658 270 ; when heavily loaded)
dd90ed89
DT
271 (native-search-paths
272 (list (search-path-specification
273 (variable "GUILE_LOAD_PATH")
274 (files '("share/guile/site/2.2")))
275 (search-path-specification
276 (variable "GUILE_LOAD_COMPILED_PATH")
b03f270e 277 (files '("lib/guile/2.2/site-ccache")))))
33c3a214
LC
278
279 (arguments
280 (if (%current-target-system)
281 (substitute-keyword-arguments (package-arguments guile-2.0)
282 ((#:phases phases '%standard-phases)
283 `(modify-phases ,phases
284 (add-after 'unpack 'sacrifice-elisp-support
285 (lambda _
286 ;; Cross-compiling language/elisp/boot.el fails, so
287 ;; sacrifice it. See
288 ;; <https://git.savannah.gnu.org/cgit/guile.git/commit/?h=stable-2.2&id=988aa29238fca862c7e2cb55f15762a69b4c16ce>
289 ;; for the upstream fix.
290 (substitute* "module/Makefile.in"
291 (("language/elisp/boot\\.el")
292 "\n"))
ee8ee748
LC
293 #t))
294 ,@(if (hurd-target?)
295 `((add-after 'unpack 'allow-madvise-ENOSYS
296 (lambda _
297 ;; Do not warn about ENOSYS on 'madvise'. This is
298 ;; what Guile commit
299 ;; 45e4ace6603e00b297e6542362273041aebe7305 does.
300 ;; TODO: Remove for Guile >= 2.2.5.
301 (substitute* "libguile/vm.c"
302 (("perror \\(\"madvise failed\"\\)")
303 "if (errno != ENOSYS) perror (\"madvised failed\");"))
304 #t)))
305 '()))))
33c3a214 306 (package-arguments guile-2.0)))))
4eae7980 307
34d624ce
LC
308(define-public guile-2.2/fixed
309 ;; A package of Guile 2.2 that's rarely changed. It is the one used
310 ;; in the `base' module, and thus changing it entails a full rebuild.
311 (package
312 (inherit guile-2.2)
a9308efe 313 (properties '((hidden? . #t) ;people should install 'guile-2.2'
5a5b3632
MW
314 (timeout . 72000) ;20 hours
315 (max-silent-time . 36000))))) ;10 hours (needed on ARM
316 ; when heavily loaded)
34d624ce 317
5cd074ea 318(define-public guile-next
35f90377 319 ;; This is the upcoming Guile 3.0, with JIT support.
55b616fd
DT
320 (let ((commit "6f3357b0df64c4be17e72079864c09a542f1c779")
321 (revision "1"))
35f90377
LC
322 (package
323 (inherit guile-2.2)
324 (name "guile-next")
121f32a1 325 (version "2.9.1")
35f90377 326 (source (origin
121f32a1
LC
327 (inherit (package-source guile-2.2))
328 (uri (string-append "https://alpha.gnu.org/gnu/guile/guile-"
329 version ".tar.xz"))
35f90377
LC
330 (sha256
331 (base32
121f32a1 332 "0iba93yqn6mvgid0rfsrg4amym36pg9m8cqdplxsy222blrj9gh1"))))
e14b3067
DT
333 (native-search-paths
334 (list (search-path-specification
335 (variable "GUILE_LOAD_PATH")
336 (files '("share/guile/site/3.0")))
337 (search-path-specification
338 (variable "GUILE_LOAD_COMPILED_PATH")
339 (files '("lib/guile/3.0/site-ccache"
121f32a1
LC
340 "share/guile/site/3.0")))))
341 (properties '((ftp-server . "alpha.gnu.org")
342 (upstream-name . "guile"))))))
5cd074ea 343
2ba2c98d
LC
344(define (make-guile-readline guile)
345 (package
346 (name "guile-readline")
347 (version (package-version guile))
348 (source (package-source guile))
349 (build-system gnu-build-system)
350 (arguments
351 '(#:configure-flags '("--disable-silent-rules")
352 #:phases (modify-phases %standard-phases
353 (add-before 'build 'chdir
354 (lambda* (#:key outputs #:allow-other-keys)
355 (invoke "make" "-C" "libguile" "scmconfig.h")
356 (invoke "make" "-C" "lib")
357 (chdir "guile-readline")
358
359 (substitute* "Makefile"
360 (("../libguile/libguile-[[:graph:]]+\\.la")
361 ;; Remove dependency on libguile-X.Y.la.
362 "")
363 (("^READLINE_LIBS = (.*)$" _ libs)
364 ;; Link against the provided libguile.
365 (string-append "READLINE_LIBS = "
366 "-lguile-$(GUILE_EFFECTIVE_VERSION) "
367 libs "\n"))
368 (("\\$\\(top_builddir\\)/meta/build-env")
369 ;; Use the provided Guile, not the one from
370 ;; $(builddir).
371 "")
372
373 ;; Install modules to the 'site' directories.
374 (("^moddir = .*$")
375 "moddir = $(pkgdatadir)/site/$(GUILE_EFFECTIVE_VERSION)\n")
376 (("^ccachedir = .*$")
377 "ccachedir = $(pkglibdir)/$(GUILE_EFFECTIVE_VERSION)/site-ccache\n"))
378
379 ;; Load 'guile-readline.so' from the right place.
380 (substitute* "ice-9/readline.scm"
381 (("load-extension \"guile-readline\"")
382 (format #f "load-extension \
383 (string-append ~s \"/lib/guile/\" (effective-version) \"/extensions/guile-readline\")"
384 (assoc-ref outputs "out"))))
385 #t)))))
386 (home-page (package-home-page guile))
387 (native-inputs (package-native-inputs guile))
388 (inputs
389 `(,@(package-inputs guile) ;to placate 'configure'
390 ,@(package-propagated-inputs guile)
391 ("guile" ,guile)
392 ("readline" ,readline)))
393 (synopsis "Line editing support for GNU Guile")
394 (description
395 "This module provides line editing support via the Readline library for
396GNU@tie{}Guile. Use the @code{(ice-9 readline)} module and call its
397@code{activate-readline} procedure to enable it.")
398 (license license:gpl3+)))
399
400(define-public guile-readline
401 (make-guile-readline guile-2.2))
402
8f4acad7
LC
403(define (guile-variant-package-name prefix)
404 (lambda (name)
405 "Return NAME with PREFIX instead of \"guile-\", when applicable."
406 (if (string-prefix? "guile-" name)
407 (string-append prefix "-"
408 (string-drop name
409 (string-length "guile-")))
410 name)))
947a5d47
LC
411
412(define package-for-guile-2.2
413 ;; A procedure that rewrites the dependency tree of the given package to use
f6396d86
LC
414 ;; GUILE-2.2 instead of GUILE-2.0.
415 (package-input-rewriting `((,guile-2.0 . ,guile-2.2))
8f4acad7
LC
416 (guile-variant-package-name "guile2.2")))
417
418(define package-for-guile-2.0
419 ;; Likewise, but the other way around. :-)
420 (package-input-rewriting `((,guile-2.2 . ,guile-2.0))
421 (guile-variant-package-name "guile2.0")))
947a5d47 422
4eae7980 423(define-public guile-for-guile-emacs
f6396d86 424 (package (inherit guile-2.2)
4eae7980
LC
425 (name "guile-for-guile-emacs")
426 (version "20150510.d8d9a8d")
f906d30c
CAW
427 (source (origin
428 (method git-fetch)
429 (uri (git-reference
4eae7980
LC
430 (url "git://git.hcoop.net/git/bpt/guile.git")
431 (commit "d8d9a8da05ec876acba81a559798eb5eeceb5a17")))
51988e3a 432 (file-name (string-append name "-" version "-checkout"))
f906d30c
CAW
433 (sha256
434 (base32
4eae7980 435 "00sprsshy16y8pxjy126hr2adqcvvzzz96hjyjwgg8swva1qh6b0"))))
f906d30c
CAW
436 (arguments
437 (substitute-keyword-arguments `(;; Tests aren't passing for now.
438 ;; Obviously we should re-enable this!
439 #:tests? #f
f6396d86 440 ,@(package-arguments guile-2.2))
f906d30c
CAW
441 ((#:phases phases)
442 `(modify-phases ,phases
443 (add-after 'unpack 'autogen
444 (lambda _
445 (zero? (system* "sh" "autogen.sh"))))
446 (add-before 'autogen 'patch-/bin/sh
447 (lambda _
448 (substitute* "build-aux/git-version-gen"
449 (("#!/bin/sh") (string-append "#!" (which "sh"))))
450 #t))))))
451 (native-inputs
452 `(("autoconf" ,autoconf)
453 ("automake" ,automake)
454 ("libtool" ,libtool)
455 ("flex" ,flex)
456 ("texinfo" ,texinfo)
b94a6ca0 457 ("gettext" ,gettext-minimal)
f6396d86 458 ,@(package-native-inputs guile-2.2)))
daeb61f7
RW
459 ;; Same as in guile-2.0
460 (native-search-paths
461 (list (search-path-specification
462 (variable "GUILE_LOAD_PATH")
463 (files '("share/guile/site/2.0")))
464 (search-path-specification
465 (variable "GUILE_LOAD_COMPILED_PATH")
31769b9f 466 (files '("lib/guile/2.0/site-ccache"
daeb61f7 467 "share/guile/site/2.0")))))))
be3feafe 468
71311e4e
RW
469;; There has not been any release yet.
470(define-public guildhall
471 (let ((commit "2fe2cc539f4b811bbcd69e58738db03eb5a2b778")
472 (revision "1"))
473 (package
474 (name "guildhall")
475 (version (string-append "0-" revision "." (string-take commit 9)))
476 (source (origin
477 (method git-fetch)
478 (uri (git-reference
479 (url "https://github.com/ijp/guildhall.git")
480 (commit commit)))
481 (file-name (string-append name "-" version "-checkout"))
482 (sha256
483 (base32
484 "115bym7bg66h3gs399yb2vkzc2ygriaqsn4zbrg8f054mgy8wzn1"))))
485 (build-system gnu-build-system)
486 (arguments
487 `(#:phases
488 (modify-phases %standard-phases
489 ;; Tests fail without this fix because they try to load the bash
490 ;; executable as a Scheme file. See bug report at
491 ;; https://github.com/ijp/guildhall/issues/22
492 (add-after 'unpack 'fix-bug-22
493 (lambda _
494 (substitute* "Makefile.am"
495 (("TESTS_ENVIRONMENT=.*")
496 "AM_TESTS_ENVIRONMENT=srcdir=$(abs_top_srcdir)/tests/
497TEST_EXTENSIONS = .scm
498SCM_LOG_COMPILER= $(top_builddir)/env $(GUILE)
499AM_SCM_LOG_FLAGS = --no-auto-compile -s")
500 ;; FIXME: one of the database tests fails for unknown
501 ;; reasons. It does not fail when run outside of Guix.
502 (("tests/database.scm") ""))
2cabd293 503 #t)))))
71311e4e
RW
504 (inputs
505 `(("guile" ,guile-2.0)))
506 (native-inputs
507 `(("zip" ,zip) ; for tests
508 ("autoconf" ,autoconf)
509 ("automake" ,automake)
510 ("texinfo" ,texinfo)))
511 (synopsis "Package manager for Guile")
512 (description
513 "Guildhall is a package manager written for Guile Scheme. A guild is
514an association of independent craftspeople. A guildhall is where they meet.
515This Guildhall aims to make a virtual space for Guile wizards and journeyfolk
516to share code.
517
518On a practical level, Guildhall lets you share Scheme modules and programs
519over the internet, and install code that has been shared by others. Guildhall
520can handle dependencies, so when a program requires several libraries, and
521each of those has further dependencies, all of the prerequisites for the
522program can be installed in one go.")
523 (home-page "https://github.com/ijp/guildhall")
524 (license license:gpl3+))))
525
c44899a2
LC
526\f
527;;;
528;;; Extensions.
529;;;
530
7119cca8 531(define-public artanis
12235a12
AFN
532 (let ((release "0.2.1")
533 (revision 3))
534 (package
535 (name "artanis")
536 (version (if (zero? revision)
537 release
538 (string-append release "-"
539 (number->string revision))))
540 (source (origin
541 (method url-fetch)
542 (uri (string-append "mirror://gnu/artanis/artanis-"
543 release ".tar.gz"))
544 (file-name (string-append name "-" version ".tar.gz"))
545 (sha256
546 (base32
547 "041ajcg2pz918kd9iqcj4inpzddc3impvz3r2nhlpbv8zrz011hn"))
548 (modules '((guix build utils)))
549 (snippet
550 '(begin
551 (delete-file-recursively "artanis/third-party/json.scm")
552 (delete-file-recursively "artanis/third-party/json")
553 (substitute* '("artanis/artanis.scm"
554 "artanis/oht.scm")
555 (("(#:use-module \\()artanis third-party (json\\))" _
556 use-module json)
557 (string-append use-module json)))
558 (substitute* "artanis/oht.scm"
559 (("([[:punct:][:space:]]+)(->json-string)([[:punct:][:space:]]+)"
560 _ pre json-string post)
561 (string-append pre
562 "scm" json-string
563 post)))
564 (substitute* "artanis/artanis.scm"
565 (("[[:punct:][:space:]]+->json-string[[:punct:][:space:]]+")
6cbee49d
MW
566 ""))
567 #t))))
12235a12
AFN
568 (build-system gnu-build-system)
569 ;; TODO: Add guile-dbi and guile-dbd optional dependencies.
570 (inputs `(("guile" ,guile-2.2)
571 ("guile-json" ,guile-json)))
572 (native-inputs `(("bash" ,bash) ;for the `source' builtin
573 ("pkgconfig" ,pkg-config)
574 ("util-linux" ,util-linux))) ;for the `script' command
575 (arguments
576 '(#:make-flags
577 ;; TODO: The documentation must be built with the `docs' target.
578 (let* ((out (assoc-ref %outputs "out"))
579 (scm (string-append out "/share/guile/site/2.2"))
580 (go (string-append out "/lib/guile/2.2/site-ccache")))
581 ;; Don't use (%site-dir) for site paths.
582 (list (string-append "MOD_PATH=" scm)
583 (string-append "MOD_COMPILED_PATH=" go)))
584 #:test-target "test"
585 #:phases
586 (modify-phases %standard-phases
587 (add-before 'install 'substitute-root-dir
588 (lambda* (#:key outputs #:allow-other-keys)
589 (let ((out (assoc-ref outputs "out")))
590 (substitute* "Makefile" ;ignore the execution of bash.bashrc
591 ((" /etc/bash.bashrc") " /dev/null"))
592 (substitute* "Makefile" ;set the root of config files to OUT
593 ((" /etc") (string-append " " out "/etc")))
594 (mkdir-p (string-append out "/bin")) ;for the `art' executable
595 #t)))
596 (add-after 'install 'wrap-art
597 (lambda* (#:key outputs #:allow-other-keys)
598 (let* ((out (assoc-ref outputs "out"))
599 (bin (string-append out "/bin"))
600 (scm (string-append out "/share/guile/site/2.2"))
601 (go (string-append out "/lib/guile/2.2/site-ccache")))
602 (wrap-program (string-append bin "/art")
603 `("GUILE_LOAD_PATH" ":" prefix (,scm))
604 `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,go)))
605 #t))))))
606 (synopsis "Web application framework written in Guile")
607 (description "GNU Artanis is a web application framework written in Guile
7119cca8
ML
608Scheme. A web application framework (WAF) is a software framework that is
609designed to support the development of dynamic websites, web applications, web
610services and web resources. The framework aims to alleviate the overhead
611associated with common activities performed in web development. Artanis
612provides several tools for web development: database access, templating
613frameworks, session management, URL-remapping for RESTful, page caching, and
614more.")
12235a12
AFN
615 (home-page "https://www.gnu.org/software/artanis/")
616 (license (list license:gpl3+ license:lgpl3+))))) ;dual license
7119cca8 617
d6d9f1f7 618(define-public guile-reader
1722d680 619 (package
d6d9f1f7 620 (name "guile-reader")
77aa0887 621 (version "0.6.2")
d6d9f1f7
LC
622 (source (origin
623 (method url-fetch)
624 (uri (string-append "mirror://savannah/guile-reader/guile-reader-"
625 version ".tar.gz"))
626 (sha256
627 (base32
77aa0887 628 "0592s2s8ampqmqwilc4fvcild6rb9gy79di6vxv5kcdmv23abkgx"))))
d6d9f1f7
LC
629 (build-system gnu-build-system)
630 (native-inputs `(("pkgconfig" ,pkg-config)
2fa077f3 631 ("gperf" ,gperf-3.0)))
bdf1022d 632 (inputs `(("guile" ,guile-2.2)))
d6d9f1f7
LC
633 (synopsis "Framework for building readers for GNU Guile")
634 (description
635 "Guile-Reader is a simple framework for building readers for GNU Guile.
1722d680
LC
636
637The idea is to make it easy to build procedures that extend Guile’s read
35b9e423 638procedure. Readers supporting various syntax variants can easily be written,
1722d680 639possibly by re-using existing “token readers” of a standard Scheme
35b9e423 640readers. For example, it is used to implement Skribilo’s R5RS-derived
1722d680
LC
641document syntax.
642
643Guile-Reader’s approach is similar to Common Lisp’s “read table”, but
644hopefully more powerful and flexible (for instance, one may instantiate as
645many readers as needed).")
340978d7 646 (home-page "https://www.nongnu.org/guile-reader/")
71e0f217 647 (license license:gpl3+)))
1722d680 648
bdf1022d
LC
649(define-public guile2.0-reader
650 (package-for-guile-2.0 guile-reader))
517fce63 651(define-public guile2.2-reader
bdf1022d 652 (deprecated-package "guile2.2-reader" guile-reader))
517fce63 653
ef02e1e9
LC
654(define-public guile-ncurses
655 (package
656 (name "guile-ncurses")
958d357a 657 (version "2.2")
ef02e1e9
LC
658 (source (origin
659 (method url-fetch)
660 (uri (string-append "mirror://gnu/guile-ncurses/guile-ncurses-"
661 version ".tar.gz"))
662 (sha256
663 (base32
958d357a 664 "1wvggbr4xv8idh1hzd8caj4xfp4pln78a7w1wqzd4zgzwmnzxr2f"))))
ef02e1e9
LC
665 (build-system gnu-build-system)
666 (inputs `(("ncurses" ,ncurses)
81eaa3f8 667 ("guile" ,guile-2.2)))
0881b616 668 (native-inputs `(("pkg-config" ,pkg-config)))
ef02e1e9 669 (arguments
2c6b7c7d 670 '(#:configure-flags (list "--with-ncursesw" ; Unicode support
0881b616 671 "--with-gnu-filesystem-hierarchy")
fa37f21b
EF
672 #:phases
673 (modify-phases %standard-phases
8c4e99cc 674 (add-before 'build 'fix-libguile-ncurses-file-name
fa37f21b 675 (lambda* (#:key outputs #:allow-other-keys)
8c4e99cc
JD
676 (and (zero? (system* "make" "install"
677 "-C" "src/ncurses"
678 "-j" (number->string
679 (parallel-job-count))))
680 (let* ((out (assoc-ref outputs "out"))
681 (dir "src/ncurses")
682 (files (find-files dir ".scm")))
683 (substitute* files
684 (("\"libguile-ncurses\"")
81eaa3f8 685 (format #f "\"~a/lib/guile/2.2/libguile-ncurses\""
8c4e99cc
JD
686 out)))
687 #t)))))))
d81850d4 688 (home-page "https://www.gnu.org/software/guile-ncurses/")
f50d2669 689 (synopsis "Guile bindings to ncurses")
ef02e1e9 690 (description
12bcf94a 691 "guile-ncurses provides Guile language bindings for the ncurses
79c311b8 692library.")
71e0f217 693 (license license:lgpl3+)))
ef02e1e9 694
4d02e9ff
DM
695(define-public guile-ncurses/gpm
696 (package
697 (inherit guile-ncurses)
698 (name "guile-ncurses-with-gpm")
699 (inputs `(("ncurses" ,ncurses/gpm)
700 ("guile" ,guile-2.2)))))
701
87d836b2
LC
702(define-public mcron
703 (package
704 (name "mcron")
67a51b67 705 (version "1.1.1")
87d836b2 706 (source (origin
cfbf6de1
LC
707 (method url-fetch)
708 (uri (string-append "mirror://gnu/mcron/mcron-"
709 version ".tar.gz"))
710 (sha256
711 (base32
67a51b67 712 "1i9mcp6r6my61zfiydsm3n6my41mwvl7dfala4q29qx0zn1ynlm4"))))
87d836b2 713 (build-system gnu-build-system)
cfbf6de1
LC
714 (arguments
715 '(#:phases (modify-phases %standard-phases
716 (add-before 'check 'set-timezone
717 (lambda* (#:key inputs #:allow-other-keys)
67a51b67
LC
718 ;; 'tests/job-specifier.scm' expects to be running in
719 ;; UTC-2 or something.
720 ;; FIXME: This issue is being investigated upstream, for
721 ;; now we'll just skip the tests (see below):
722 ;; <https://lists.gnu.org/archive/html/bug-mcron/2018-04/msg00005.html>.
cfbf6de1
LC
723 (let ((tzdata (assoc-ref inputs "tzdata")))
724 (setenv "TZDIR"
725 (string-append tzdata
726 "/share/zoneinfo"))
67a51b67 727 (setenv "TZ" "UTC-2")
cfbf6de1 728 #t)))
67a51b67 729 (add-before 'check 'adjust-tests
cfbf6de1 730 (lambda _
67a51b67
LC
731 (substitute* "tests/job-specifier.scm"
732 ;; (getpw) fails with "entry not found" in the build
733 ;; environment, so pass an argument.
734 (("\\(getpw\\)")
735 "(getpwnam (getuid))")
736 ;; The build environment lacks an entry for root in
737 ;; /etc/passwd.
738 (("\\(getpw 0\\)")
739 "(getpwnam \"nobody\")")
740
741 ;; FIXME: Skip the 4 faulty tests (see above).
742 (("\\(test-equal \"next-year\"" all)
743 (string-append "(test-skip 4)\n" all)))
744 #t)))))
cfbf6de1
LC
745 (native-inputs `(("pkg-config" ,pkg-config)
746 ("tzdata" ,tzdata-for-tests)))
747 (inputs `(("ed" ,ed) ("which" ,which) ("guile" ,guile-2.2)))
6fd52309 748 (home-page "https://www.gnu.org/software/mcron/")
f50d2669 749 (synopsis "Run jobs at scheduled times")
87d836b2 750 (description
79c311b8 751 "GNU Mcron is a complete replacement for Vixie cron. It is used to run
a22dc0c4 752tasks on a schedule, such as every hour or every Monday. Mcron is written in
79c311b8
LC
753Guile, so its configuration can be written in Scheme; the original cron
754format is also supported.")
71e0f217 755 (license license:gpl3+)))
87d836b2 756
01497dfe 757(define-public mcron2
cfbf6de1
LC
758 ;; This was mthl's mcron development branch, and it became mcron 1.1.
759 (deprecated-package "mcron2" mcron))
01497dfe 760
dfee30c7
AS
761(define-public guile-hall
762 (package
763 (name "guile-hall")
764 (version "0.1.1")
765 (source
766 (origin
767 (method git-fetch)
768 (uri (git-reference
769 (url "https://gitlab.com/a-sassmannshausen/guile-hall")
770 (commit "7d1094a12fe917209ce5b76c681cc8c862d4c65b")))
771 (file-name "guile-hall-0.1.1-checkout")
772 (sha256
773 (base32
774 "03kb09cjca98hlbx9mj12mqinzsnnvp6ci6i975n88pjhaxigyp1"))))
775 (build-system gnu-build-system)
776 (arguments
777 `(#:modules
778 ((ice-9 match)
779 (ice-9 ftw)
780 ,@%gnu-build-system-modules)
781 #:phases
782 (modify-phases
783 %standard-phases
784 (add-after
785 'install
786 'hall-wrap-binaries
787 (lambda* (#:key outputs #:allow-other-keys)
788 (let* ((out (assoc-ref outputs "out"))
789 (bin (string-append out "/bin/"))
790 (site (string-append out "/share/guile/site")))
791 (match (scandir site)
792 (("." ".." version)
793 (let ((modules (string-append site "/" version))
794 (compiled-modules
795 (string-append
796 out
797 "/lib/guile/"
798 version
799 "/site-ccache")))
800 (for-each
801 (lambda (file)
802 (wrap-program
803 (string-append bin file)
804 `("GUILE_LOAD_PATH" ":" prefix (,modules))
805 `("GUILE_LOAD_COMPILED_PATH"
806 ":"
807 prefix
808 (,compiled-modules))))
809 ,(list 'list "hall"))
810 #t)))))))))
811 (native-inputs
812 `(("autoconf" ,autoconf)
813 ("automake" ,automake)
814 ("pkg-config" ,pkg-config)
815 ("texinfo" ,texinfo)))
816 (inputs `(("guile" ,guile-2.2)))
817 (propagated-inputs
818 `(("guile-config" ,guile-config)))
819 (synopsis "Guile project tooling")
820 (description
821 "Hall is a command-line application and a set of Guile libraries that
822allow you to quickly create and publish Guile projects. It allows you to
823transparently support the GNU build system, manage a project hierarchy &
824provides tight coupling to Guix.")
825 (home-page
826 "https://gitlab.com/a-sassmannshausen/guile-hall")
827 (license license:gpl3+)))
828
814b18e5
AS
829(define-public guile-ics
830 (package
831 (name "guile-ics")
291c2d57 832 (version "0.2.0")
814b18e5
AS
833 (source (origin
834 (method git-fetch)
835 (uri (git-reference
836 (url "https://github.com/artyom-poptsov/guile-ics")
291c2d57 837 (commit (string-append "v" version))))
814b18e5
AS
838 (file-name (string-append name "-" version "-checkout"))
839 (sha256
840 (base32
291c2d57 841 "0qjjvadr7gibdq9jvwkmlkb4afsw9n2shfj9phpiadinxk3p4m2g"))))
814b18e5 842 (build-system gnu-build-system)
814b18e5 843 (native-inputs
464f5447 844 `(("autoconf" ,autoconf-wrapper)
814b18e5
AS
845 ("automake" ,automake)
846 ("texinfo" ,texinfo)
847 ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
848 ("gettext" ,gettext-minimal)
849 ("pkg-config" ,pkg-config)))
d573d892
LC
850 (inputs `(("guile" ,guile-2.2) ("which" ,which)))
851 (propagated-inputs `(("guile-lib" ,guile-lib)))
814b18e5
AS
852 (home-page "https://github.com/artyom-poptsov/guile-ics")
853 (synopsis "Guile parser library for the iCalendar format")
854 (description
855 "Guile-ICS is an iCalendar (RFC5545) format parser library written in
856pure Scheme. The library can be used to read and write iCalendar data.
857
858The library is shipped with documentation in Info format and usage examples.")
71e0f217 859 (license license:gpl3+)))
814b18e5 860
3e9066fc
LC
861(define-public guile-lib
862 (package
863 (name "guile-lib")
6a9a50fd 864 (version "0.2.6.1")
3e9066fc 865 (source (origin
af126875
MC
866 (method url-fetch)
867 (uri (string-append "mirror://savannah/guile-lib/guile-lib-"
868 version ".tar.gz"))
869 (sha256
870 (base32
6a9a50fd 871 "0aizxdif5dpch9cvs8zz5g8ds5s4xhfnwza2il5ji7fv2h7ks7bd"))))
3e9066fc
LC
872 (build-system gnu-build-system)
873 (arguments
af126875 874 '(#:make-flags
6a9a50fd 875 '("GUILE_AUTO_COMPILE=0") ; to prevent guild errors
af126875
MC
876 #:phases
877 (modify-phases %standard-phases
878 (add-before 'configure 'patch-module-dir
879 (lambda _
880 (substitute* "src/Makefile.in"
881 (("^moddir = ([[:graph:]]+)")
882 "moddir = $(datadir)/guile/site/@GUILE_EFFECTIVE_VERSION@\n")
883 (("^godir = ([[:graph:]]+)")
884 "godir = \
bf62b8ff 885$(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))
af126875 886 #t)))))
bf62b8ff 887 (native-inputs `(("pkg-config" ,pkg-config)))
1b0f266e 888 (inputs `(("guile" ,guile-2.2)))
340978d7 889 (home-page "https://www.nongnu.org/guile-lib/")
3e9066fc
LC
890 (synopsis "Collection of useful Guile Scheme modules")
891 (description
35b9e423 892 "Guile-Lib is intended as an accumulation place for pure-scheme Guile
3e9066fc
LC
893modules, allowing for people to cooperate integrating their generic Guile
894modules into a coherent library. Think \"a down-scaled, limited-scope CPAN
895for Guile\".")
896
897 ;; The whole is under GPLv3+, but some modules are under laxer
898 ;; distribution terms such as LGPL and public domain. See `COPYING' for
899 ;; details.
71e0f217 900 (license license:gpl3+)))
3e9066fc 901
1b0f266e
LC
902(define-public guile2.0-lib
903 (package-for-guile-2.0 guile-lib))
904
12773de3 905(define-public guile2.2-lib
1b0f266e 906 (deprecated-package "guile2.2-lib" guile-lib))
12773de3 907
6050a1fb
CR
908(define-public guile-json
909 (package
910 (name "guile-json")
15214828 911 (version "1.2.0")
f52ef55e 912 (home-page "https://github.com/aconchillo/guile-json")
6050a1fb 913 (source (origin
ffc72ec6 914 (method url-fetch)
6efccabe
EB
915 (uri (string-append "https://download.savannah.nongnu.org/releases/"
916 name "/" name "-" version ".tar.gz"))
ffc72ec6
LC
917 (sha256
918 (base32
6efccabe 919 "15gnb84d7hpazqhskkf3g9z4r6knw54wfj4ch5270kakz1lp70c9"))))
6050a1fb 920 (build-system gnu-build-system)
6efccabe 921 (native-inputs `(("pkg-config" ,pkg-config)
f52ef55e
LC
922 ("guile" ,guile-2.2)))
923 (inputs `(("guile" ,guile-2.2)))
6050a1fb
CR
924 (synopsis "JSON module for Guile")
925 (description
0f31d4f0
LC
926 "Guile-JSON supports parsing and building JSON documents according to the
927specification. These are the main features:
928
929@itemize
930@item Strictly complies to @uref{http://json.org, specification}.
931@item Build JSON documents programmatically via macros.
932@item Unicode support for strings.
933@item Allows JSON pretty printing.
934@end itemize\n")
15214828
LC
935
936 ;; Version 1.2.0 switched to GPLv3+ (from LGPLv3+).
937 (license license:gpl3+)))
6050a1fb 938
947a5d47 939(define-public guile2.2-json
2252f087
LC
940 (deprecated-package "guile2.2-json" guile-json))
941
942(define-public guile2.0-json
943 (package-for-guile-2.0 guile-json))
947a5d47 944
152d4076
LC
945(define-public guile-json-3
946 ;; This version is incompatible with 1.x; see the 'NEWS' file.
947 (package
948 (inherit guile-json)
949 (name "guile-json")
950 (version "3.1.0")
951 (source (origin
952 (method url-fetch)
953 (uri (string-append "https://download.savannah.nongnu.org/releases/"
954 name "/" name "-" version ".tar.gz"))
955 (sha256
956 (base32
957 "1yfqscz74i4vxylabd3s9l0wbdp8bg9qxnv1ixdm3b1l7zdx00z3"))))))
958
6bc24063
CAW
959(define-public guile-minikanren
960 (package
961 (name "guile-minikanren")
962 (version "20150424.e844d85")
963 (source (origin
964 (method git-fetch)
965 (uri (git-reference
966 (url "https://github.com/ijp/minikanren.git")
967 (commit "e844d85512f8c055d3f96143ee506007389a25e3")))
821f4dc2 968 (file-name (string-append name "-" version "-checkout"))
6bc24063
CAW
969 (sha256
970 (base32
971 "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6"))))
977d8666
LC
972 (build-system guile-build-system)
973 (native-inputs
d58ee08d 974 `(("guile" ,guile-2.2)))
6bc24063 975 (home-page "https://github.com/ijp/minikanren")
e881752c 976 (synopsis "MiniKanren declarative logic system, packaged for Guile")
6bc24063
CAW
977 (description
978 "MiniKanren is a relational programming extension to the Scheme
979programming Language, written as a smaller version of Kanren suitable for
980pedagogical purposes. It is featured in the book, The Reasoned Schemer,
981written by Dan Friedman, William Byrd, and Oleg Kiselyov.
982
e881752c 983This is Ian Price's r6rs packaged version of miniKanren, which deviates
6bc24063
CAW
984slightly from miniKanren mainline.
985
986See http://minikanren.org/ for more on miniKanren generally.")
71e0f217 987 (license license:expat)))
6bc24063 988
d58ee08d
LC
989(define-public guile2.0-minikanren
990 (package-for-guile-2.0 guile-minikanren))
991
947a5d47 992(define-public guile2.2-minikanren
d58ee08d 993 (deprecated-package "guile2.2-minikanren" guile-minikanren))
947a5d47 994
28a1041f
AP
995(define-public guile-miniadapton
996 (let ((commit "1b5749422304567c96ac5367f2221dda9eff5880")
997 (revision "1"))
998 (package
999 (name "guile-miniadapton")
1000 (version (string-append "0-" revision "." (string-take commit 9)))
1001 (source (origin
1002 (method git-fetch)
1003 (uri (git-reference
1004 (url "https://github.com/fisherdj/miniAdapton.git")
1005 (commit commit)))
1006 (file-name (string-append name "-" version "-checkout"))
1007 (sha256
1008 (base32
1009 "09q51zkw2fypad5xixskfzw2cjhjgs5cswdp3i7cpp651rb3zndh"))))
977d8666
LC
1010 (build-system guile-build-system)
1011 (native-inputs
28a1041f
AP
1012 `(("guile" ,guile-2.2)))
1013 (home-page "https://github.com/fisherdj/miniAdapton")
1014 (synopsis "Minimal implementation of incremental computation in Guile
1015Scheme")
1016 (description "This package provides a complete Scheme implementation of
1017miniAdapton, which implements the core functionality of the Adapton system for
1018incremental computation (also known as self-adjusting computation). Like
1019Adapton, miniAdapton allows programmers to safely combine mutation and
1020memoization. miniAdapton is built on top of an even simpler system,
1021microAdapton. Both miniAdapton and microAdapton are designed to be easy to
1022understand, extend, and port to host languages other than Scheme.")
1023 (license license:expat))))
1024
32e14fc1
CAW
1025(define-public guile-irregex
1026 (package
1027 (name "guile-irregex")
fb73f07a 1028 (version "0.9.6")
32e14fc1
CAW
1029 (source (origin
1030 (method url-fetch)
1031 (uri (string-append
1032 "http://synthcode.com/scheme/irregex/irregex-"
d03f9446 1033 version ".tar.gz"))
32e14fc1
CAW
1034 (sha256
1035 (base32
fb73f07a 1036 "1ia3m7dp3lcxa048q0gqbiwwsyvn99baw6xkhb4bhhzn4k7bwyqq"))))
977d8666 1037 (build-system guile-build-system)
32e14fc1 1038 (arguments
977d8666
LC
1039 '(#:phases (modify-phases %standard-phases
1040 (add-after 'unpack 'move-files-around
1041 (lambda _
1042 ;; Move the relevant source files to src/ and create the
1043 ;; rx/ directory to match the expected module hierarchy.
1044 (mkdir-p "src/rx/source")
1045 (rename-file "irregex-guile.scm"
1046 "src/rx/irregex.scm")
1047 (rename-file "irregex.scm"
1048 "src/rx/source/irregex.scm")
1049 ;; Not really reachable via guile's packaging system,
1050 ;; but nice to have around.
1051 (rename-file "irregex-utils.scm"
1052 "src/rx/source/irregex-utils.scm")
1053 #t)))
1054 #:source-directory "src"))
1055 (native-inputs
2863860b 1056 `(("guile" ,guile-2.2)))
32e14fc1
CAW
1057 (home-page "http://synthcode.com/scheme/irregex")
1058 (synopsis "S-expression based regular expressions")
1059 (description
1060 "Irregex is an s-expression based alternative to your classic
1061string-based regular expressions. It implements SRFI 115 and is deeply
1062inspired by the SCSH regular expression system.")
71e0f217 1063 (license license:bsd-3)))
93e7199b 1064
2863860b
LC
1065(define-public guile2.0-irregex
1066 (package-for-guile-2.0 guile-irregex))
1067
947a5d47 1068(define-public guile2.2-irregex
2863860b 1069 (deprecated-package "guile2.2-irregex" guile-irregex))
947a5d47 1070
93e7199b
CAW
1071;; There are two guile-gdbm packages, one using the FFI and one with
1072;; direct C bindings, hence the verbose name.
1073
1074(define-public guile-gdbm-ffi
1075 (package
1076 (name "guile-gdbm-ffi")
1077 (version "20120209.fa1d5b6")
1078 (source (origin
1079 (method git-fetch)
1080 (uri (git-reference
1081 (url "https://github.com/ijp/guile-gdbm.git")
1082 (commit "fa1d5b6231d0e4d096687b378c025f2148c5f246")))
821f4dc2 1083 (file-name (string-append name "-" version "-checkout"))
977d8666
LC
1084 (patches (search-patches
1085 "guile-gdbm-ffi-support-gdbm-1.14.patch"))
93e7199b
CAW
1086 (sha256
1087 (base32
1088 "1j8wrsw7v9w6qkl47xz0rdikg50v16nn6kbs3lgzcymjzpa7babj"))))
977d8666
LC
1089 (build-system guile-build-system)
1090 (arguments
1091 '(#:phases (modify-phases %standard-phases
1092 (add-after 'unpack 'move-examples
1093 (lambda* (#:key outputs #:allow-other-keys)
1094 ;; Move examples where they belong.
1095 (let* ((out (assoc-ref outputs "out"))
1096 (doc (string-append out "/share/doc/"
1097 (strip-store-file-name out)
1098 "/examples")))
1099 (copy-recursively "examples" doc)
1100 (delete-file-recursively "examples")
1101 #t)))
1102 (add-after 'unpack 'set-libgdbm-file-name
1103 (lambda* (#:key inputs #:allow-other-keys)
1104 (substitute* "gdbm.scm"
1105 (("\\(dynamic-link \"libgdbm\"\\)")
1106 (format #f "(dynamic-link \"~a/lib/libgdbm.so\")"
1107 (assoc-ref inputs "gdbm"))))
1108 #t)))))
1109 (native-inputs
1110 `(("guile" ,guile-2.2)))
56f31a9f 1111 (inputs
56f31a9f 1112 `(("gdbm" ,gdbm)))
93e7199b
CAW
1113 (home-page "https://github.com/ijp/guile-gdbm")
1114 (synopsis "Guile bindings to the GDBM library via Guile's FFI")
1115 (description
1116 "Guile bindings to the GDBM key-value storage system, using
1117Guile's foreign function interface.")
71e0f217 1118 (license license:gpl3+)))
93e7199b 1119
5bd3a841
LC
1120(define-public guile2.0-gdbm-ffi
1121 (package-for-guile-2.0 guile-gdbm-ffi))
1122
2737bcff 1123(define-public guile2.2-gdbm-ffi
5bd3a841 1124 (deprecated-package "guile2.2-gdbm-ffi" guile-gdbm-ffi))
93e7199b 1125
e8ac1f8f 1126(define-public guile-sqlite3
319e26e4
LC
1127 (package
1128 (name "guile-sqlite3")
1129 (version "0.1.0")
3527f600 1130 (home-page "https://notabug.org/guile-sqlite3/guile-sqlite3.git")
319e26e4
LC
1131 (source (origin
1132 (method git-fetch)
1133 (uri (git-reference
1134 (url home-page)
1135 (commit (string-append "v" version))))
1136 (sha256
1137 (base32
1138 "1nv8j7wk6b5n4p22szyi8lv8fs31rrzxhzz16gyj8r38c1fyp9qp"))
1139 (file-name (string-append name "-" version "-checkout"))))
1140 (build-system gnu-build-system)
1141 (native-inputs
1142 `(("autoconf" ,autoconf)
1143 ("automake" ,automake)
1144 ("pkg-config" ,pkg-config)))
1145 (inputs
1146 `(("guile" ,guile-2.2)
1147 ("sqlite" ,sqlite)))
1148 (synopsis "Access SQLite databases from Guile")
1149 (description
1150 "This package provides Guile bindings to the SQLite database system.")
1151 (license license:gpl3+)))
e8ac1f8f 1152
c8e3651a
EB
1153(define-public guile2.0-sqlite3
1154 (package-for-guile-2.0 guile-sqlite3))
1155
27f5e13e
DT
1156(define-public haunt
1157 (package
1158 (name "haunt")
19ad4504 1159 (version "0.2.4")
27f5e13e
DT
1160 (source (origin
1161 (method url-fetch)
4960beaa 1162 (uri (string-append "https://files.dthompson.us/haunt/haunt-"
27f5e13e
DT
1163 version ".tar.gz"))
1164 (sha256
1165 (base32
19ad4504 1166 "056z4znikk83nr5mr0x2ac3iinqbywa2bvb37mhr566a1q50isfc"))))
27f5e13e 1167 (build-system gnu-build-system)
4ecbf6d2
LC
1168 (arguments
1169 `(#:modules ((ice-9 match) (ice-9 ftw)
1170 ,@%gnu-build-system-modules)
1e406301 1171 #:tests? #f ; test suite is non-deterministic :(
4ecbf6d2
LC
1172 #:phases (modify-phases %standard-phases
1173 (add-after 'install 'wrap-haunt
296ad592 1174 (lambda* (#:key inputs outputs #:allow-other-keys)
4ecbf6d2
LC
1175 ;; Wrap the 'haunt' command to refer to the right
1176 ;; modules.
1177 (let* ((out (assoc-ref outputs "out"))
1178 (bin (string-append out "/bin"))
1179 (site (string-append
296ad592
LC
1180 out "/share/guile/site"))
1181 (deps (list (assoc-ref inputs "guile-reader")
1182 (assoc-ref inputs "guile-commonmark"))))
4ecbf6d2
LC
1183 (match (scandir site)
1184 (("." ".." version)
907254e5
DT
1185 (let ((modules (string-append site "/" version))
1186 (compiled-modules (string-append
1187 out "/lib/guile/" version
1188 "/site-ccache")))
4ecbf6d2
LC
1189 (wrap-program (string-append bin "/haunt")
1190 `("GUILE_LOAD_PATH" ":" prefix
296ad592
LC
1191 (,modules
1192 ,@(map (lambda (dep)
1193 (string-append dep
1194 "/share/guile/site/"
1195 version))
1196 deps)))
4ecbf6d2 1197 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
296ad592
LC
1198 (,compiled-modules
1199 ,@(map (lambda (dep)
1200 (string-append dep "/lib/guile/"
1201 version
1202 "/site-ccache"))
1203 deps))))
4ecbf6d2 1204 #t)))))))))
4960beaa
DT
1205 (native-inputs
1206 `(("pkg-config" ,pkg-config)
1207 ("texinfo" ,texinfo)))
27f5e13e 1208 (inputs
bd19f65a 1209 `(("guile" ,guile-2.2)))
4960beaa 1210 (propagated-inputs
9b1a497e
AP
1211 `(("guile-reader" ,guile-reader)
1212 ("guile-commonmark" ,guile-commonmark)))
27f5e13e
DT
1213 (synopsis "Functional static site generator")
1214 (description "Haunt is a static site generator written in Guile
1215Scheme. Haunt features a functional build system and an extensible
1216interface for reading articles in any format.")
1217 (home-page "http://haunt.dthompson.us")
71e0f217 1218 (license license:gpl3+)))
27f5e13e 1219
bd19f65a
LC
1220(define-public guile2.0-haunt
1221 (package-for-guile-2.0
1222 (package (inherit haunt) (name "guile2.0-haunt"))))
64f34aef 1223(define-public guile2.2-haunt
bd19f65a 1224 (deprecated-package "guile2.2-haunt" haunt))
64f34aef 1225
44a2bdf8
AS
1226(define-public guile-config
1227 (package
1228 (name "guile-config")
7c6468c9
AS
1229 (version "0.3")
1230 (source
1231 (origin
1232 (method git-fetch)
1233 (uri (git-reference
1234 (url "https://gitlab.com/a-sassmannshausen/guile-config")
1235 (commit "ce12de3f438c6b2b59c43ee21bcd58251835fdf3")))
1236 (file-name "guile-config-0.3-checkout")
1237 (sha256 (base32 "02zbpin0r9m2vxmr7mv68v3xdn247dcck56kbzjn0gj4c2rhih85"))))
44a2bdf8 1238 (build-system gnu-build-system)
43d5df98
AS
1239 (native-inputs
1240 `(("autoconf" ,autoconf)
1241 ("automake" ,automake)
1242 ("pkg-config" ,pkg-config)
1243 ("texinfo" ,texinfo)))
7c6468c9
AS
1244 (inputs `(("guile" ,guile-2.2)))
1245 (synopsis
1246 "Guile application configuration parsing library.")
44a2bdf8
AS
1247 (description
1248 "Guile Config is a library providing a declarative approach to
1249application configuration specification. The library provides clean
1250configuration declaration forms, and processors that take care of:
1251configuration file creation; configuration file parsing; command-line
1252parameter parsing using getopt-long; basic GNU command-line parameter
1253generation (--help, --usage, --version); automatic output generation for the
1254above command-line parameters.")
7c6468c9
AS
1255 (home-page
1256 "https://gitlab.com/a-sassmannshausen/guile-config")
43d5df98 1257 (license license:gpl3+)))
44a2bdf8 1258
36548111
DT
1259(define-public guile-redis
1260 (package
1261 (name "guile-redis")
a50eed20
LC
1262 (version "1.0.0")
1263 (home-page "https://github.com/aconchillo/guile-redis")
36548111
DT
1264 (source (origin
1265 (method url-fetch)
a50eed20 1266 (uri (string-append home-page "/archive/" version ".tar.gz"))
36548111
DT
1267 (sha256
1268 (base32
a50eed20 1269 "1dp5fmqvma59pvp1nfpq6hqgbmjici8sd1y8llahl87fynw1dvr9"))))
36548111
DT
1270 (build-system gnu-build-system)
1271 (native-inputs
a50eed20
LC
1272 `(("autoconf" ,autoconf)
1273 ("automake" ,automake)
1274 ("pkg-config" ,pkg-config)
1275 ("guile" ,guile-2.2)))
36548111
DT
1276 (synopsis "Redis client library for Guile")
1277 (description "Guile-redis provides a Scheme interface to the Redis
1278key-value cache and store.")
71e0f217 1279 (license license:lgpl3+)))
36548111 1280
d5eacecc
LC
1281(define-public guile2.0-redis
1282 (package-for-guile-2.0 guile-redis))
1283
85313be8 1284(define-public guile2.2-redis
d5eacecc 1285 (deprecated-package "guile2.2-redis" guile-redis))
85313be8 1286
9d373377
CAW
1287(define-public guile-wisp
1288 (package
1289 (name "guile-wisp")
e0840905 1290 (version "0.9.8")
9d373377
CAW
1291 (source (origin
1292 (method url-fetch)
1293 (uri (string-append "https://bitbucket.org/ArneBab/"
1294 "wisp/downloads/wisp-"
1295 version ".tar.gz"))
1296 (sha256
1297 (base32
e0840905 1298 "1f2bbicq1rxnwmiplrm4r75wj06w385mjkyvi7g4k740bgwcrzxr"))))
9d373377
CAW
1299 (build-system gnu-build-system)
1300 (arguments
e8374e69
LC
1301 `(#:modules ((guix build gnu-build-system)
1302 (guix build utils)
1303 (ice-9 rdelim)
1304 (ice-9 popen))
1305
9d373377
CAW
1306 #:phases
1307 (modify-phases %standard-phases
e0840905 1308 (add-before 'configure 'substitute-before-config
9d373377
CAW
1309
1310 (lambda* (#:key inputs #:allow-other-keys)
1311 (let ((bash (assoc-ref inputs "bash")))
9d373377
CAW
1312 ;; Puts together some test files with /bin/bash hardcoded
1313 (substitute* "Makefile.in"
e0840905
LC
1314 (("/usr/bin/env bash")
1315 (string-append bash "/bin/bash"))
1316 (("\\$\\(GUILE_EFFECTIVE_VERSION\\)/site")
1317 "site/$(GUILE_EFFECTIVE_VERSION)")) ;use the right order
9d373377
CAW
1318 #t)))
1319
1320 ;; auto compilation breaks, but if we set HOME to /tmp,
1321 ;; that works ok
1322 (add-before
1323 'check 'auto-compile-hacky-workaround
1324 (lambda _
1325 (setenv "HOME" "/tmp")
1326 #t))
e0840905 1327 (add-after 'install 'install-go-files
9d373377
CAW
1328 (lambda* (#:key outputs inputs #:allow-other-keys)
1329 (let* ((out (assoc-ref outputs "out"))
e8374e69
LC
1330 (effective (read-line
1331 (open-pipe* OPEN_READ
1332 "guile" "-c"
1333 "(display (effective-version))")))
1334 (module-dir (string-append out "/share/guile/site/"
1335 effective))
1336 (object-dir (string-append out "/lib/guile/" effective
1337 "/site-ccache"))
1338 (prefix (string-length module-dir)))
9d373377 1339 ;; compile to the destination
e0840905 1340 (for-each (lambda (file)
e8374e69
LC
1341 (let* ((base (string-drop (string-drop-right file 4)
1342 prefix))
1343 (go (string-append object-dir base ".go")))
1344 (invoke "guild" "compile" "-L" module-dir
1345 file "-o" go)))
e0840905 1346 (find-files module-dir "\\.scm$"))
9d373377
CAW
1347 #t))))))
1348 (home-page "http://draketo.de/english/wisp")
1349 (inputs
89c4bfe7 1350 `(("guile" ,guile-2.2)))
e0840905
LC
1351 (native-inputs
1352 `(("python" ,python)
1353 ("pkg-config" ,pkg-config)))
a124bbd2
SB
1354 (synopsis "Whitespace to lisp syntax for Guile")
1355 (description "Wisp is a syntax for Guile which provides a Python-like
9d373377
CAW
1356whitespace-significant language. It may be easier on the eyes for some
1357users and in some situations.")
71e0f217 1358 (license license:gpl3+)))
9d373377 1359
5649c8cd
DT
1360(define-public guile-sly
1361 (package
1362 (name "guile-sly")
1363 (version "0.1")
1364 (source (origin
1365 (method url-fetch)
8d5e7ad2 1366 (uri (string-append "https://files.dthompson.us/sly/sly-"
5649c8cd
DT
1367 version ".tar.gz"))
1368 (sha256
1369 (base32
44394ef9
LC
1370 "1svzlbz2vripmyq2kjh0rig16bsrnbkwbsm558pjln9l65mcl4qq"))
1371 (modules '((guix build utils)))
1372 (snippet
1373 '(begin
1374 (substitute* "configure"
1375 (("_guile_required_version=\"2.0.11\"")
1376 "_guile_required_version=\"2\"")
1377 (("ac_subst_vars='")
1378 "ac_subst_vars='GUILE_EFFECTIVE_VERSION\n"))
1379 (substitute* (find-files "." "Makefile.in")
1380 (("moddir = .*$")
1381 (string-append
1382 "moddir = "
1383 "$(prefix)/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n"))
1384 (("godir = .*$")
1385 (string-append
1386 "godir = "
6cbee49d
MW
1387 "$(prefix)/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")))
1388 #t))))
5649c8cd
DT
1389 (build-system gnu-build-system)
1390 (arguments
1391 '(#:configure-flags
1392 (list (string-append "--with-libfreeimage-prefix="
1393 (assoc-ref %build-inputs "freeimage"))
1394 (string-append "--with-libgslcblas-prefix="
1395 (assoc-ref %build-inputs "gsl")))))
1396 (native-inputs
1397 `(("pkg-config" ,pkg-config)))
1398 (propagated-inputs
2e7825bc 1399 `(("guile-sdl" ,guile-sdl)
5649c8cd
DT
1400 ("guile-opengl" ,guile-opengl)))
1401 (inputs
2e7825bc
LC
1402 `(("guile" ,guile-2.2)
1403 ("gsl" ,gsl)
5649c8cd
DT
1404 ("freeimage" ,freeimage)
1405 ("mesa" ,mesa)))
1406 (synopsis "2D/3D game engine for GNU Guile")
1407 (description "Sly is a 2D/3D game engine written in Guile Scheme. Sly
1408features a functional reactive programming interface and live coding
1409capabilities.")
0eb3b8c0 1410 (home-page "https://dthompson.us/projects/sly.html")
71e0f217 1411 (license license:gpl3+)))
5649c8cd 1412
dec1e2b3
AB
1413(define-public g-wrap
1414 (package
1415 (name "g-wrap")
1416 (version "1.9.15")
1417 (source (origin
1418 (method url-fetch)
1419 (uri (string-append "mirror://savannah/g-wrap/g-wrap-"
1420 version ".tar.gz"))
1421 (sha256
1422 (base32
1423 "0ak0bha37dfpj9kmyw1r8fj8nva639aw5xr66wr5gd3l1rqf5xhg"))))
1424 (build-system gnu-build-system)
1425 (native-inputs
1426 `(("pkg-config" ,pkg-config)))
1427 (propagated-inputs
61583094 1428 `(("guile" ,guile-2.2)
dec1e2b3
AB
1429 ("guile-lib" ,guile-lib)))
1430 (inputs
1431 `(("libffi" ,libffi)))
9e8599a3 1432 (arguments
61583094
TF
1433 `(#:configure-flags '("--disable-Werror")
1434 #:phases
1435 (modify-phases %standard-phases
1436 (add-before 'configure 'pre-configure
1437 (lambda* (#:key outputs #:allow-other-keys)
1438 (let ((out (assoc-ref outputs "out")))
1439 (substitute* (find-files "." "^Makefile.in$")
1440 (("guilemoduledir =.*guile/site" all)
1441 (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
1442 #t))))))
dec1e2b3
AB
1443 (synopsis "Generate C bindings for Guile")
1444 (description "G-Wrap is a tool and Guile library for generating function
1445wrappers for inter-language calls. It currently only supports generating Guile
1446wrappers for C functions. Given a definition of the types and prototypes for
1447a given C interface, G-Wrap will automatically generate the C code that
1448provides access to that interface and its types from the Scheme level.")
340978d7 1449 (home-page "https://www.nongnu.org/g-wrap/index.html")
71e0f217 1450 (license license:lgpl2.1+)))
dec1e2b3 1451
01497dfe
LC
1452(define-public guile-dbi
1453 (package
1454 (name "guile-dbi")
1455 (version "2.1.6")
1456 (source (origin
1457 (method url-fetch)
1458 (uri (string-append
1459 "http://download.gna.org/guile-dbi/guile-dbi-"
1460 version ".tar.gz"))
1461 (sha256
1462 (base32
1463 "116njrprhgrsv1qm904sp3b02rq01fx639r433d657gyhw3x159n"))))
1464 (build-system gnu-build-system)
1465 (arguments
1466 '(#:configure-flags
1467 (list (string-append
b989c3e3 1468 "--with-guile-site-dir=" %output "/share/guile/site/2.2"))
34e00c7b
AI
1469 #:make-flags
1470 (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib:"
1471 (assoc-ref %build-inputs "guile-dbd-sqlite3") "/lib"))
01497dfe
LC
1472 #:phases
1473 (modify-phases %standard-phases
1474 (add-after 'install 'patch-extension-path
1475 (lambda* (#:key outputs #:allow-other-keys)
1476 (let* ((out (assoc-ref outputs "out"))
1477 (dbi.scm (string-append
b989c3e3 1478 out "/share/guile/site/2.2/dbi/dbi.scm"))
01497dfe
LC
1479 (ext (string-append out "/lib/libguile-dbi")))
1480 (substitute* dbi.scm (("libguile-dbi") ext))
1481 #t))))))
34e00c7b
AI
1482 (inputs
1483 `(("guile-dbd-sqlite3" ,guile-dbd-sqlite3))) ; only shared library, no scheme files
01497dfe 1484 (propagated-inputs
b989c3e3 1485 `(("guile" ,guile-2.2)))
01497dfe
LC
1486 (synopsis "Guile database abstraction layer")
1487 (home-page "http://home.gna.org/guile-dbi/guile-dbi.html")
1488 (description
1489 "guile-dbi is a library for Guile that provides a convenient interface to
1490SQL databases. Database programming with guile-dbi is generic in that the same
1491programming interface is presented regardless of which database system is used.
1492It currently supports MySQL, Postgres and SQLite3.")
71e0f217 1493 (license license:gpl2+)))
01497dfe 1494
34e00c7b
AI
1495(define guile-dbi-bootstrap
1496 (package
1497 (inherit guile-dbi)
1498 (name "guile-dbi-bootstrap")
1499 (inputs '())
1500 (arguments
1501 (substitute-keyword-arguments (package-arguments guile-dbi)
1502 ((#:make-flags _) '(list))))))
1503
01497dfe
LC
1504(define-public guile-dbd-sqlite3
1505 (package
1506 (name "guile-dbd-sqlite3")
1507 (version "2.1.6")
1508 (source (origin
1509 (method url-fetch)
1510 (uri (string-append
1511 "http://download.gna.org/guile-dbi/guile-dbd-sqlite3-"
1512 version ".tar.gz"))
1513 (sha256
1514 (base32
1515 "0rg71jchxd2y8x496s8zmfmikr5g8zxi8zv2ar3f7a23pph92iw2"))))
1516 (build-system gnu-build-system)
1517 (native-inputs
34e00c7b
AI
1518 `(("pkg-config" ,pkg-config)
1519 ("guile-dbi-bootstrap" ,guile-dbi-bootstrap))) ; only required for headers
01497dfe
LC
1520 (inputs
1521 `(("sqlite" ,sqlite)
1522 ("zlib" ,(@ (gnu packages compression) zlib))))
01497dfe
LC
1523 (synopsis "Guile DBI driver for SQLite")
1524 (home-page "https://github.com/jkalbhenn/guile-dbd-sqlite3")
1525 (description
1526 "guile-dbi is a library for Guile that provides a convenient interface to
1527SQL databases. This package implements the interface for SQLite.")
71e0f217 1528 (license license:gpl2+)))
01497dfe 1529
e9291eaa
AS
1530(define-public guile-dsv
1531 (package
1532 (name "guile-dsv")
8c80f8ef 1533 (version "0.2.1")
e9291eaa
AS
1534 (source (origin
1535 (method git-fetch)
1536 (uri (git-reference
1537 (url "https://github.com/artyom-poptsov/guile-dsv")
8c80f8ef 1538 (commit "bdc5267d007478abc20ea96d7c459b7dd9560b3d")))
e9291eaa
AS
1539 (file-name (string-append name "-" version "-checkout"))
1540 (sha256
1541 (base32
8c80f8ef 1542 "1irw6mz8998nwyhzrw9g94jcz60b9zljgqfmipaz1ybn8579qjx0"))))
e9291eaa
AS
1543 (build-system gnu-build-system)
1544 (native-inputs
1545 `(("autoconf" ,autoconf)
1546 ("automake" ,automake)
1547 ("pkg-config" ,pkg-config)
1548 ("texinfo" ,texinfo)))
1549 (inputs `(("guile" ,guile-2.2)))
1550 (propagated-inputs `(("guile-lib" ,guile-lib)))
1551 (arguments
1552 '(#:phases (modify-phases %standard-phases
1553 (add-before 'configure 'set-guilesitedir
1554 (lambda _
1555 (substitute* "Makefile.in"
1556 (("^guilesitedir =.*$")
1557 "guilesitedir = \
1558$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
1559 (substitute* "modules/Makefile.in"
1560 (("^guilesitedir =.*$")
1561 "guilesitedir = \
1562$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
1563 (substitute* "modules/dsv/Makefile.in"
1564 (("^guilesitedir =.*$")
1565 "guilesitedir = \
1566$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
34da5c39 1567 #t)))))
e9291eaa
AS
1568 (home-page "https://github.com/artyom-poptsov/guile-dsv")
1569 (synopsis "DSV module for Guile")
1570 (description
1571 "Guile-DSV is a GNU Guile module for working with the
1572delimiter-separated values (DSV) data format. Guile-DSV supports the
1573Unix-style DSV format and RFC 4180 format.")
1574 (license license:gpl3+)))
1575
bd9af610
AK
1576(define-public guile-xosd
1577 (package
1578 (name "guile-xosd")
4b2b7135 1579 (version "0.2.1")
bd9af610
AK
1580 (source (origin
1581 (method url-fetch)
1582 (uri (string-append "https://github.com/alezost/" name
1583 "/releases/download/v" version
1584 "/" name "-" version ".tar.gz"))
1585 (sha256
1586 (base32
4b2b7135 1587 "1ri5065c16kmgrf2pysn2ymxjqi5302lhpb07wkl1jr75ym8fn8p"))))
bd9af610
AK
1588 (build-system gnu-build-system)
1589 (native-inputs
1590 `(("pkg-config" ,pkg-config)))
1591 (inputs
c6726a5f 1592 `(("guile" ,guile-2.2)
bd9af610
AK
1593 ("libx11" ,libx11)
1594 ("libxext" ,libxext)
1595 ("libxinerama" ,libxinerama)
1596 ("xosd" ,xosd)))
1597 (home-page "https://github.com/alezost/guile-xosd")
1598 (synopsis "XOSD bindings for Guile")
1599 (description
1600 "Guile-XOSD provides Guile bindings for @code{libxosd},
1601@uref{http://sourceforge.net/projects/libxosd/, the X On Screen Display
1602library}.")
71e0f217 1603 (license license:gpl3+)))
bd9af610 1604
07f7cc03
AK
1605(define-public guile-daemon
1606 (package
1607 (name "guile-daemon")
5245399f 1608 (version "0.1.2")
07f7cc03
AK
1609 (source (origin
1610 (method url-fetch)
1611 (uri (string-append "https://github.com/alezost/" name
1612 "/releases/download/v" version
1613 "/" name "-" version ".tar.gz"))
1614 (sha256
1615 (base32
5245399f 1616 "0hh6gq6b6phpxm0b1dkxyzj3f4sxdf7dji63609lzypa5v1ad2gv"))))
07f7cc03
AK
1617 (build-system gnu-build-system)
1618 (native-inputs
1619 `(("pkg-config" ,pkg-config)))
1620 (inputs
c6726a5f 1621 `(("guile" ,guile-2.2)))
07f7cc03
AK
1622 (home-page "https://github.com/alezost/guile-daemon")
1623 (synopsis "Evaluate code in a running Guile process")
1624 (description
1625 "Guile-Daemon is a small Guile program that loads your initial
1626configuration file, and then reads and evaluates Guile expressions that
1627you send to a FIFO file.")
71e0f217 1628 (license license:gpl3+)))
07f7cc03 1629
e28e74a5
EE
1630(define-public guile-commonmark
1631 (package
1632 (name "guile-commonmark")
1d7fb035 1633 (version "0.1.1")
e28e74a5
EE
1634 (source (origin
1635 (method url-fetch)
1636 (uri (string-append "https://github.com/OrangeShark/" name
1637 "/releases/download/v" version
1638 "/" name "-" version ".tar.gz"))
1639 (sha256
1640 (base32
74a8b2cc
LC
1641 "0kzclwkfijj8xka3g9kfj53y67c34ndfy84swdbw3j7y962ndxq6"))
1642 (modules '((guix build utils)))
1643 (snippet
1644 ;; Install .scm files in the right place (see
1645 ;; <https://github.com/OrangeShark/guile-commonmark/issues/12>.)
1646 '(begin
1647 (substitute* "Makefile.in"
1648 (("^moddir = \\$\\(datadir\\)/share")
1649 "moddir = $(datadir)"))
1650 #t))))
e28e74a5
EE
1651 (build-system gnu-build-system)
1652 (inputs
7c86c031 1653 `(("guile" ,guile-2.2)))
1d7fb035
LC
1654 (native-inputs
1655 `(("pkg-config" ,pkg-config)))
e28e74a5
EE
1656 (synopsis "CommonMark parser for Guile")
1657 (description
1658 "guile-commonmark is a library for parsing CommonMark, a fully specified
1659variant of Markdown. The library is written in Guile Scheme and is designed
1660to transform a CommonMark document to SXML. guile-commonmark tries to closely
1661follow the @uref{http://commonmark.org/, CommonMark spec}, the main difference
1662is no support for parsing block and inline level HTML.")
1663 (home-page "https://github.com/OrangeShark/guile-commonmark")
71e0f217 1664 (license license:lgpl3+)))
e28e74a5 1665
7c86c031
LC
1666(define-public guile2.0-commonmark
1667 (package-for-guile-2.0 guile-commonmark))
947a5d47 1668(define-public guile2.2-commonmark
7c86c031 1669 (deprecated-package "guile2.2-commonmark" guile-commonmark))
947a5d47 1670
3b5783fc
AB
1671(define-public guile-bytestructures
1672 (package
1673 (name "guile-bytestructures")
90977eb5 1674 (version "1.0.3")
3b5783fc 1675 (source (origin
4f85f7f7 1676 (method url-fetch)
1677 (uri (string-append "https://github.com/TaylanUB/scheme-bytestructures"
1678 "/releases/download/v" version
1679 "/bytestructures-" version ".tar.gz"))
3b5783fc
AB
1680 (sha256
1681 (base32
90977eb5 1682 "0xf6s8gd3656j8k2ar6y7i62r68azawyzxhsagsk8nvldnrs1r18"))))
4f85f7f7 1683 (build-system gnu-build-system)
726ecfeb 1684 (native-inputs
4f85f7f7 1685 `(("pkg-config" ,pkg-config)))
3b5783fc 1686 (inputs
aabece2e 1687 `(("guile" ,guile-2.2)))
3b5783fc
AB
1688 (home-page "https://github.com/TaylanUB/scheme-bytestructures")
1689 (synopsis "Structured access to bytevector contents for Guile")
1690 (description
1691 "Guile bytestructures offers a system imitating the type system
1692of the C programming language, to be used on bytevectors. C's type
1693system works on raw memory, and Guile works on bytevectors which are
1694an abstraction over raw memory. It's also more powerful than the C
1695type system, elevating types to first-class status.")
71e0f217 1696 (license license:gpl3+)))
3b5783fc 1697
726ecfeb
LC
1698(define-public guile2.0-bytestructures
1699 (package-for-guile-2.0 guile-bytestructures))
1700
472fc855
LC
1701(define-public guile-aspell
1702 (package
1703 (name "guile-aspell")
234ea3d6 1704 (version "0.4")
472fc855
LC
1705 (source (origin
1706 (method url-fetch)
1707 (uri (string-append
1708 "http://lonelycactus.com/tarball/guile_aspell-"
1709 version ".tar.gz"))
1710 (sha256
1711 (base32
234ea3d6 1712 "0vpk5xj9m9qc702z3khmkwhgpb949qbsyz8kw2qycda6qnxk0077"))))
472fc855
LC
1713 (build-system gnu-build-system)
1714 (arguments
7295087e
LC
1715 '(#:phases (modify-phases %standard-phases
1716 (add-before 'configure 'set-guilesitedir
1717 (lambda _
1718 (substitute* "Makefile.in"
1719 (("^guilesitedir =.*$")
1720 "guilesitedir = \
1721$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
1722 #t))
472fc855
LC
1723 (add-before 'build 'set-libaspell-file-name
1724 (lambda* (#:key inputs #:allow-other-keys)
1725 (let ((aspell (assoc-ref inputs "aspell")))
234ea3d6 1726 (substitute* "aspell.scm"
472fc855
LC
1727 (("\"libaspell\\.so\"")
1728 (string-append "\"" aspell
1729 "/lib/libaspell\"")))
1730 #t))))))
1731 (native-inputs `(("pkg-config" ,pkg-config)))
cb5be6df 1732 (inputs `(("guile" ,guile-2.2)
472fc855
LC
1733 ("aspell" ,aspell)))
1734 (home-page "https://github.com/spk121/guile-aspell")
1735 (synopsis "Spell-checking from Guile")
1736 (description
1737 "guile-aspell is a Guile Scheme library for comparing a string against a
1738dictionary and suggesting spelling corrections.")
71e0f217 1739 (license license:gpl3+)))
472fc855 1740
a614ce38
LC
1741(define-public guile-bash
1742 ;; This project is currently retired. It was initially announced here:
1743 ;; <https://lists.gnu.org/archive/html/guile-user/2015-02/msg00003.html>.
1744 (let ((commit "1eabc563ca5692b3e08d84f1f0e6fd2283284469")
1745 (revision "0"))
1746 (package
1747 (name "guile-bash")
1748 (version (string-append "0.1.6-" revision "." (string-take commit 7)))
1749 (home-page
1750 "https://anonscm.debian.org/cgit/users/kaction-guest/retired/dev.guile-bash.git")
1751 (source (origin
1752 (method git-fetch)
1753 (uri (git-reference
1754 (commit commit)
1755 (url home-page)))
1756 (sha256
1757 (base32
1758 "097vny990wp2qpjij6a5a5gwc6fxzg5wk56inhy18iki5v6pif1p"))
1759 (file-name (string-append name "-" version "-checkout"))))
1760 (build-system gnu-build-system)
1761 (arguments
189be331 1762 '(#:configure-flags
a614ce38
LC
1763 ;; Add -I to match 'bash.pc' of Bash 4.4.
1764 (list (string-append "CPPFLAGS=-I"
1765 (assoc-ref %build-inputs "bash:include")
1766 "/include/bash/include")
1767
1768 ;; The '.a' file is useless.
1769 "--disable-static"
1770
1771 ;; Install 'lib/bash' as Bash 4.4 expects.
1772 (string-append "--libdir=" (assoc-ref %outputs "out")
1773 "/lib/bash"))))
1774 (native-inputs `(("pkg-config" ,pkg-config)
464f5447 1775 ("autoconf" ,autoconf-wrapper)
a614ce38
LC
1776 ("automake" ,automake)
1777 ("libtool" ,libtool)
1778 ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
b7158b76
LC
1779 ("gettext" ,gettext-minimal)
1780
1781 ;; Bash with loadable module support, for the test
1782 ;; suite.
1783 ("bash-full" ,bash)))
a614ce38
LC
1784 (inputs `(("guile" ,guile-2.0)
1785 ("bash:include" ,bash "include")))
1786 (synopsis "Extend Bash using Guile")
1787 (description
1788 "Guile-Bash provides a shared library and set of Guile modules,
1789allowing you to extend Bash in Scheme. Scheme interfaces allow you to access
1790the following aspects of Bash:
1791
1792@itemize
1793@item aliases;
1794@item setting and getting Bash variables;
1795@item creating dynamic variables;
1796@item creating Bash functions with a Scheme implementation;
1797@item reader macro for output capturing;
1798@item reader macro for evaluating raw Bash commands.
1799@end itemize
1800
1801To enable it, run:
1802
1803@example
1804enable -f ~/.guix-profile/lib/bash/libguile-bash.so scm
1805@end example
1806
1807and then run @command{scm example.scm}.")
71e0f217 1808 (license license:gpl3+))))
a614ce38 1809
c5793e7e
CAW
1810(define-public guile-8sync
1811 (package
1812 (name "guile-8sync")
525acb6e 1813 (version "0.4.2")
c5793e7e
CAW
1814 (source (origin
1815 (method url-fetch)
1816 (uri (string-append "mirror://gnu/8sync/8sync-" version
1817 ".tar.gz"))
1818 (sha256
1819 (base32
525acb6e 1820 "031wm13srak3wsnll7j2mbbi29g1pcm4swdb71ds9yn567pn20qw"))))
c5793e7e
CAW
1821 (build-system gnu-build-system)
1822 (native-inputs `(("autoconf" ,autoconf)
1823 ("automake" ,automake)
f6396d86 1824 ("guile" ,guile-2.2)
c5793e7e
CAW
1825 ("pkg-config" ,pkg-config)
1826 ("texinfo" ,texinfo)))
1827 (arguments
1828 `(#:phases (modify-phases %standard-phases
1829 (add-before 'configure 'setenv
1830 (lambda _
1831 ;; quiet warnings
ab4a1731
CAW
1832 (setenv "GUILE_AUTO_COMPILE" "0")
1833 #t)))))
c5793e7e
CAW
1834 (home-page "https://gnu.org/s/8sync/")
1835 (synopsis "Asynchronous actor model library for Guile")
1836 (description
1837 "GNU 8sync (pronounced \"eight-sync\") is an asynchronous programming
1838library for GNU Guile based on the actor model.
1839
f6396d86 1840Note that 8sync is only available for Guile 2.2.")
71e0f217 1841 (license license:lgpl3+)))
c5793e7e 1842
aaf1bdc3
CAW
1843(define-public guile-fibers
1844 (package
1845 (name "guile-fibers")
1846 (version "1.0.0")
1847 (source (origin
1848 (method url-fetch)
1849 (uri (string-append "https://wingolog.org/pub/fibers/fibers-"
1850 version ".tar.gz"))
1851 (sha256
1852 (base32
1853 "0vjkg72ghgdgphzbjz9ig8al8271rq8974viknb2r1rg4lz92ld0"))))
1854 (build-system gnu-build-system)
5e3082df
LC
1855 (arguments
1856 '(#:phases (modify-phases %standard-phases
1857 (add-after 'install 'mode-guile-objects
1858 (lambda* (#:key outputs #:allow-other-keys)
1859 ;; .go files are installed to "lib/guile/X.Y/cache".
1860 ;; This phase moves them to "…/site-ccache".
1861 (let* ((out (assoc-ref outputs "out"))
1862 (lib (string-append out "/lib/guile"))
1863 (old (car (find-files lib "^ccache$"
1864 #:directories? #t)))
1865 (new (string-append (dirname old)
1866 "/site-ccache")))
1867 (rename-file old new)
1868 #t))))))
aaf1bdc3
CAW
1869 (native-inputs
1870 `(("texinfo" ,texinfo)
1871 ("pkg-config" ,pkg-config)))
1872 (inputs
f6396d86 1873 `(("guile" ,guile-2.2)))
aaf1bdc3
CAW
1874 (synopsis "Lightweight concurrency facility for Guile")
1875 (description
1876 "Fibers is a Guile library that implements a a lightweight concurrency
1877facility, inspired by systems like Concurrent ML, Go, and Erlang. A fiber is
1878like a \"goroutine\" from the Go language: a lightweight thread-like
1879abstraction. Systems built with Fibers can scale up to millions of concurrent
1880fibers, tens of thousands of concurrent socket connections, and many parallel
1881cores. The Fibers library also provides Concurrent ML-like channels for
1882communication between fibers.
1883
1884Note that Fibers makes use of some Guile 2.1/2.2-specific features and
1885is not available for Guile 2.0.")
1886 (home-page "https://github.com/wingo/fibers")
1887 (license license:lgpl3+)))
1888
bd233722 1889(define-public guile-git
e85035c9
LC
1890 (package
1891 (name "guile-git")
1892 (version "0.1.0")
1893 (home-page "https://gitlab.com/guile-git/guile-git.git")
1894 (source (origin
1895 (method git-fetch)
1896 (uri (git-reference (url home-page)
1897 (commit (string-append "v" version))))
1898 (sha256
1899 (base32
1900 "1z3awa3i5il08dl2swbnli2j7cawdpray11zx4844j27bxqddcs2"))
1901 (file-name (git-file-name name version))))
1902 (build-system gnu-build-system)
1903 (native-inputs
1904 `(("autoconf" ,autoconf)
1905 ("automake" ,automake)
1906 ("texinfo" ,texinfo)
1907 ("pkg-config" ,pkg-config)))
1908 (inputs
1909 `(("guile" ,guile-2.2)
1910 ("libgit2" ,libgit2)))
1911 (propagated-inputs
1912 `(("guile-bytestructures" ,guile-bytestructures)))
1913 (synopsis "Guile bindings for libgit2")
1914 (description
1915 "This package provides Guile bindings to libgit2, a library to
bd233722 1916manipulate repositories of the Git version control system.")
e85035c9 1917 (license license:gpl3+)))
c5793e7e 1918
70bc6085
LC
1919(define-public guile2.0-git
1920 (package-for-guile-2.0 guile-git))
1921
f252d6df 1922(define-public guile-syntax-highlight
3c90c7ae
DT
1923 (package
1924 (name "guile-syntax-highlight")
1925 (version "0.1")
1926 (source (origin
1927 (method url-fetch)
1928 (uri (string-append "https://files.dthompson.us/"
1929 "guile-syntax-highlight/"
1930 "guile-syntax-highlight-"
1931 version ".tar.gz"))
1932 (sha256
1933 (base32
1934 "1p771kq15x83483m23bhah1sz6vkalg3drm7x279f4j1cxligkzi"))))
1935 (build-system gnu-build-system)
1936 (native-inputs
1937 `(("pkg-config" ,pkg-config)))
1938 (inputs
1939 `(("guile" ,guile-2.2)))
8c72ed92
RW
1940 (synopsis "General-purpose syntax highlighter for GNU Guile")
1941 (description "Guile-syntax-highlight is a general-purpose syntax
f252d6df
DT
1942highlighting library for GNU Guile. It can parse code written in various
1943programming languages into a simple s-expression that can be converted to
1944HTML (via SXML) or any other format for rendering.")
3c90c7ae
DT
1945 (home-page "http://dthompson.us/projects/guile-syntax-highlight.html")
1946 (license license:lgpl3+)))
f252d6df 1947
d26ae96c
CAW
1948(define-public guile-sjson
1949 (package
1950 (name "guile-sjson")
a62a16a4 1951 (version "0.2.1")
d26ae96c
CAW
1952 (source (origin
1953 (method url-fetch)
1954 (uri (string-append "https://dustycloud.org/misc/sjson-" version
1955 ".tar.gz"))
1956 (sha256
1957 (base32
a62a16a4 1958 "1mzmapln79vv10qxaggz9qwcdbag3jnrj19xx8bgkmxss8h03sv3"))))
d26ae96c 1959 (build-system gnu-build-system)
d26ae96c
CAW
1960 (native-inputs
1961 `(("autoconf" ,autoconf)
1962 ("automake" ,automake)
1963 ("pkg-config" ,pkg-config)))
1964 (inputs
1965 `(("guile" ,guile-2.2)))
1966 (home-page "https://gitlab.com/dustyweb/guile-sjson")
1967 (synopsis "S-expression based json reader/writer for Guile")
1968 (description "guile-sjson is a json reader/writer for Guile.
1969It has a nice, simple s-expression based syntax.")
1970 (license license:lgpl3+)))
1971
e076d56a 1972(define-public guile-colorized
1973 (package
1974 (name "guile-colorized")
1975 (version "0.1")
1976 (source (origin
1977 (method url-fetch)
1978 (uri (string-append "https://github.com/NalaGinrut/guile-colorized/"
1979 "archive/v" version ".tar.gz"))
1980 (file-name (string-append name "-" version ".tar.gz"))
1981 (sha256
1982 (base32
1983 "16xhc3an6aglnca8xl3mvgi8hsqzqn68vsl5ga4bz8bvbap5fn4p"))))
977d8666
LC
1984 (build-system guile-build-system)
1985 (native-inputs
e076d56a 1986 `(("guile" ,guile-2.2)))
1987 (home-page "https://github.com/NalaGinrut/guile-colorized")
1988 (synopsis "Colorized REPL for Guile")
1989 (description
1990 "Guile-colorized provides you with a colorized REPL for GNU Guile.")
1991 (license license:gpl3+)))
1992
fef7baba
LC
1993(define-public guile-pfds
1994 (package
1995 (name "guile-pfds")
1996 (version "0.3")
1997 (home-page "https://github.com/ijp/pfds")
1998 (source (origin
1999 (method git-fetch)
2000 (uri (git-reference
2001 (url home-page)
2002 (commit (string-append "v" version))))
2003 (sha256
2004 (base32
2005 "19y33wg94pf0n98dkfqd1zbw93fgky4sawxsxl6s3vyqwl0yi5vh"))
2006 (file-name (string-append name "-" version "-checkout"))))
2007 (build-system guile-build-system)
2008 (arguments
2009 '(#:source-directory "src"
2010 #:phases (modify-phases %standard-phases
2011 (add-after 'unpack 'move-files-around
2012 (lambda _
2013 ;; Move files under a pfds/ directory to reflect the
2014 ;; module hierarchy.
2015 (mkdir-p "src/pfds")
2016 (for-each (lambda (file)
2017 (rename-file file
2018 (string-append "src/pfds/"
2019 file)))
2020 '("bbtrees.sls"
2021 "deques"
2022 "deques.sls"
2023 "dlists.sls"
2024 "fingertrees.sls"
2025 "hamts.sls"
2026 "heaps.sls"
2027 "private"
2028 "psqs.sls"
2029 "queues"
2030 "queues.sls"
2031 "sequences.sls"
2032 "sets.sls"))
2033
2034 ;; In Guile <= 2.2.4, there's no way to tell 'guild
2035 ;; compile' to accept the ".sls" extension. So...
2036 (for-each (lambda (file)
2037 (rename-file file
2038 (string-append
2039 (string-drop-right file 4)
2040 ".scm")))
2041 (find-files "." "\\.sls$"))
2042 #t)))))
2043 (native-inputs
2044 `(("guile" ,guile-2.2)))
2045 (synopsis "Purely functional data structures for Guile")
2046 (description
2047 "This package provides purely functional data structures written in R6RS
2048Scheme and compiled for Guile. It has been tested with Racket, Guile 2,
2049Vicare Scheme and IronScheme. Right now it contains:
2050
2051@itemize
2052@item queues
2053@item deques
2054@item bbtrees
2055@item sets
2056@item dlists
2057@item priority search queues (PSQs)
2058@item finger trees
2059@item sequences
2060@item heaps
2061@item hash array mapped tries (HAMTs).
2062@end itemize\n")
2063 (license license:bsd-3)))
2064
69502b5e
LC
2065(define-public guile-aa-tree
2066 (package
2067 (name "guile-aa-tree")
2068 (version "3.1.1")
2069 (source (origin
2070 (method url-fetch)
2071 (uri (string-append "mirror://savannah/guile-aa-tree/guile-aa-tree-"
2072 version ".tar.gz"))
2073 (sha256
2074 (base32
2075 "0044c105r3q9vpl17pv3phl1b79kjm1llhkakqgiasixyav01blh"))))
2076 (build-system guile-build-system)
2077 (native-inputs `(("guile" ,guile-2.2)))
2078 ;; https://savannah.nongnu.org/projects/guile-aa-tree
2079 (home-page "https://qlfiles.net/guile-aa-tree/")
2080 (synopsis "AA tree data structure for Guile")
2081 (description
2082 "This package provides an implementation of @dfn{AA trees}, a
2083self-balancing binary tree data structure, for Guile. It ensure @math{O(log
2084n)} worst case performance for core operations. The module provides
2085non-mutating insert, delete, and search operations, with support for
2086convenient nested tree operations.")
2087 (license license:gpl3+)))
2088
f858e58f 2089(define-public guile-simple-zmq
88e1e9cd
LC
2090 (let ((commit "68bedb6679716214fb9d3472da57544526f7a618")
2091 (revision "3"))
f858e58f
PAR
2092 (package
2093 (name "guile-simple-zmq")
2094 (version (git-version "0.0.0" revision commit))
2095 (source
2096 (origin
2097 (method git-fetch)
2098 (uri (git-reference
2099 (url "https://github.com/jerry40/guile-simple-zmq")
2100 (commit commit)))
2101 (sha256
2102 (base32
88e1e9cd 2103 "1ad3xg69qqviy1f6dnlw0ysmfdbmp1jq65rfqb8nfd8dsrq2syli"))
f858e58f 2104 (file-name (git-file-name name version))))
977d8666 2105 (build-system guile-build-system)
f858e58f 2106 (arguments
977d8666
LC
2107 `(#:source-directory "src"
2108 #:phases (modify-phases %standard-phases
2109 (add-after 'unpack 'set-libzmq-file-name
2110 (lambda* (#:key inputs #:allow-other-keys)
2111 (substitute* "src/simple-zmq.scm"
2112 (("\\(dynamic-link \"libzmq\"\\)")
2113 (format #f "(dynamic-link \"~a/lib/libzmq.so\")"
2114 (assoc-ref inputs "zeromq"))))
2115 #t)))))
2116 (native-inputs
e46b84e3 2117 `(("guile" ,guile-2.2)))
977d8666 2118 (inputs
e46b84e3 2119 `(("zeromq" ,zeromq)))
f858e58f
PAR
2120 (home-page "https://github.com/jerry40/guile-simple-zmq")
2121 (synopsis "Guile wrapper over ZeroMQ library")
2122 (description
2123 "This package provides a Guile programming interface to the ZeroMQ
2124messaging library.")
2125 (license license:gpl3+))))
2126
fa6a3bb7 2127(define-public jupyter-guile-kernel
828fa94d
LC
2128 (let ((commit "a7db9245a886e104138474df46c3e88b95cff629")
2129 (revision "1"))
fa6a3bb7
PAR
2130 (package
2131 (name "jupyter-guile-kernel")
2132 (version (git-version "0.0.0" revision commit))
2133 (source
2134 (origin
2135 (method git-fetch)
2136 (uri (git-reference
2137 (url "https://github.com/jerry40/guile-kernel")
2138 (commit commit)))
2139 (sha256
2140 (base32
828fa94d 2141 "0aj04853bqm47ivfcmrgpb7w3wkis847kc7qrwsa5zcn9h38qh2f"))))
977d8666 2142 (build-system guile-build-system)
fa6a3bb7 2143 (arguments
977d8666
LC
2144 '(#:phases (modify-phases %standard-phases
2145 (add-after 'unpack 'set-openssl-file-name
2146 (lambda* (#:key inputs #:allow-other-keys)
2147 ;; Record the absolute file name of the 'openssl'
2148 ;; command.
2149 (substitute* "src/hmac.scm"
2150 (("openssl")
2151 (string-append (assoc-ref inputs "openssl")
2152 "/bin/openssl")))
2153 #t))
2154
2155 ;; XXX: The code uses 'include' to include its own source
2156 ;; files, and "-L src" isn't enough in this case.
2157 (add-before 'build 'chdir
2158 (lambda _ (chdir "src") #t))
2159 (add-after 'build 'chdir-back
2160 (lambda _ (chdir "..") #t))
2161
2162 (add-after 'install 'install-kernel
2163 (lambda* (#:key inputs outputs #:allow-other-keys)
8539eb5c
LC
2164 (let* ((out (assoc-ref outputs "out"))
2165 (json (assoc-ref inputs "guile-json"))
2166 (zmq (assoc-ref inputs "guile-simple-zmq"))
2167 (deps (list json zmq))
2168 (dir (string-append
2169 out "/share/jupyter/kernels/guile"))
2170 (effective (target-guile-effective-version)))
977d8666
LC
2171 ;; Install kernel.
2172 (install-file "src/kernel.json" dir)
2173
2174 ;; Fix hard-coded file name in the kernel.
2175 (substitute* (string-append dir "/kernel.json")
2176 (("/home/.*/guile-jupyter-kernel.scm")
2177 (string-append out "/share/guile/site/"
2178 (target-guile-effective-version)
2179 "/guile-jupyter-kernel.scm"))
2180 (("\"guile\"")
2181 (string-append "\"" (assoc-ref inputs "guile")
2182 "/bin/guile\""))
2183 (("-s")
8539eb5c
LC
2184 ;; Add '-L' and '-C' flags so that the kernel
2185 ;; finds its dependencies.
2186 (let ((-L (map (lambda (item)
2187 (string-append "\"" item
2188 "/share/guile/site/"
2189 effective "\""))
2190 deps))
2191 (-C (map (lambda (item)
2192 (string-append "\"" item
2193 "/lib/guile/"
2194 effective
2195 "/site-ccache\""))
2196 deps)))
2197 (string-append "--no-auto-compile\""
2198 (string-join -L ", \"-L\", "
2199 'prefix)
2200 (string-join -C ", \"-C\", "
2201 'prefix)
2202 ", \"-s"))))
977d8666 2203 #t))))))
fa6a3bb7
PAR
2204 (inputs
2205 `(("openssl" ,openssl)
8539eb5c
LC
2206 ("guile" ,guile-2.2)
2207 ("guile-json" ,guile-json)
fa6a3bb7
PAR
2208 ("guile-simple-zmq" ,guile-simple-zmq)))
2209 (synopsis "Guile kernel for the Jupyter Notebook")
2210 (description
2211 "This package provides a Guile 2.x kernel for the Jupyter Notebook. It
2212allows users to interact with the Guile REPL through Jupyter.")
2213 (home-page "https://github.com/jerry40/guile-kernel")
2214 (license license:gpl3+))))
2215
89f8c2ac
RJ
2216(define-public guile-sparql
2217 (package
2218 (name "guile-sparql")
2219 (version "0.0.7")
2220 (source (origin
2221 (method url-fetch)
2222 (uri (string-append
2223 "https://github.com/roelj/guile-sparql/releases/download/"
2224 version "/guile-sparql-" version ".tar.gz"))
2225 (sha256
2226 (base32 "1drnvhsgl0gc5crmb16yyw1j98nkhwwcgssv9vgm36ng43nnzffd"))))
2227 (build-system gnu-build-system)
2228 (arguments `(#:tests? #f)) ; There are no tests.
2229 (native-inputs
2230 `(("pkg-config" ,pkg-config)))
2231 (inputs
2232 `(("guile" ,guile-2.2)))
2233 (home-page "https://github.com/roelj/guile-sparql")
2234 (synopsis "SPARQL module for Guile")
2235 (description "This package provides the functionality to query a SPARQL
2236endpoint. Additionally, it provides an interface to write SPARQL queries
2237using S-expressions.")
2238 (license license:gpl3+)))
2239
0058888c
LC
2240(define-public guile-debbugs
2241 (package
2242 (name "guile-debbugs")
2243 (version "0.0.2")
2244 (source (origin
2245 (method url-fetch)
2246 (uri (string-append "mirror://gnu/guile-debbugs/guile-debbugs-"
2247 version ".tar.gz"))
2248 (sha256
2249 (base32
2250 "16l8910p57im6s3j93xhdaqvgfy6ms5n97177mrch3y961z5hy0i"))
2251 (modules '((guix build utils)))
2252 (snippet
2253 '(substitute* "Makefile.in"
2254 (("^godir = (.*)/ccache" _ prefix)
2255 (string-append "godir = " prefix "/site-ccache"))))))
2256 (build-system gnu-build-system)
2257 (native-inputs
2258 `(("guile" ,guile-2.2)
2259 ("pkg-config" ,pkg-config)))
2260 (home-page "https://savannah.gnu.org/projects/guile-debbugs/")
2261 (synopsis "Guile interface to the Debbugs bug tracking service")
2262 (description
2263 "This package provides a Guile library to communicate with a Debbugs bug
2264tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
2265 (license license:gpl3+)))
2266
74537856
RW
2267(define-public guile-email
2268 (let ((commit "fa52eac55e5946db89621a6c583d2aa357864dee")
2269 (revision "1"))
2270 (package
2271 (name "guile-email")
2272 (version (git-version "0.1.0" revision commit))
2273 (source
2274 (origin
2275 (method git-fetch)
2276 (uri (git-reference
2277 (url "https://git.systemreboot.net/guile-email")
2278 (commit commit)))
2279 (file-name (git-file-name name version))
2280 (sha256
2281 (base32
2282 "1037mbz7qd9bzaqp8ysyhnl9ipd97fmj3b9jr8qfzx9179vvsj63"))))
2283 (build-system gnu-build-system)
2284 (native-inputs
2285 `(("pkg-config" ,pkg-config)
2286 ("autoconf" ,autoconf)
2287 ("automake" ,automake)))
2288 (inputs
79ee97a1 2289 `(("guile" ,guile-2.2)))
74537856
RW
2290 (home-page "https://git.systemreboot.net/guile-email")
2291 (synopsis "Guile email parser")
2292 (description "This package provides an email parser written in pure
2293Guile.")
2294 (license license:agpl3+))))
2295
2d900b04
RW
2296(define-public guile-debbugs-next
2297 (let ((commit "75a331d561c8b6f8efcf16216dab961c17759efe")
2298 (revision "1"))
2299 (package (inherit guile-debbugs)
2300 (name "guile-debbugs")
2301 (version (git-version "0.0.3" revision commit))
2302 (source (origin
2303 (method git-fetch)
2304 (uri (git-reference
2305 (url "https://git.savannah.gnu.org/git/guile-debbugs.git")
2306 (commit commit)))
2307 (file-name (git-file-name name version))
2308 (sha256
2309 (base32
2310 "0br3mgbw41bpc9x57jlghl0i8dz9nl63r4wzs5l47aqszf84870y"))))
2311 (build-system gnu-build-system)
2312 (native-inputs
2313 `(("pkg-config" ,pkg-config)
2314 ("autoconf" ,autoconf)
2315 ("automake" ,automake)
2316 ("texinfo" ,texinfo)))
2317 (inputs
79ee97a1 2318 `(("guile" ,guile-2.2)
2d900b04
RW
2319 ("guile-email" ,guile-email))))))
2320
581720bc
MO
2321;; There has not been any release yet.
2322(define-public guile-newt
7e3e6d72
MO
2323 (let ((commit "80c1e9e71945f833386d1632b52573e59325804f")
2324 (revision "4"))
581720bc
MO
2325 (package
2326 (name "guile-newt")
2327 (version (string-append "0-" revision "." (string-take commit 9)))
2328 (source (origin
2329 (method git-fetch)
2330 (uri (git-reference
2331 (url "https://gitlab.com/mothacehe/guile-newt")
2332 (commit commit)))
2333 (file-name (string-append name "-" version "-checkout"))
2334 (sha256
2335 (base32
7e3e6d72 2336 "1w7qy4dw1f4bx622l6hw8mv49sf1ha8kch8j4nganyk8fj0wn695"))))
581720bc
MO
2337 (build-system gnu-build-system)
2338 (arguments
2339 '(#:make-flags
2340 '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
2341 (inputs
2342 `(("guile" ,guile-2.2)
2343 ("newt" ,newt)))
2344 (native-inputs
2345 `(("autoconf" ,autoconf)
2346 ("automake" ,automake)
2347 ("pkg-config" ,pkg-config)))
2348 (synopsis "Guile bindings to Newt")
2349 (description
2350 "This package provides bindings for Newt, a programming library for
2351color text mode, widget based user interfaces. The bindings are written in pure
2352Scheme by using Guile’s foreign function interface.")
2353 (home-page "https://gitlab.com/mothacehe/guile-newt")
2354 (license license:gpl3+))))
2355
039ccc71
PAR
2356(define-public guile-mastodon
2357 (package
2358 (name "guile-mastodon")
2359 (version "0.0.1")
2360 (source (origin
2361 (method git-fetch)
2362 (uri (git-reference
2363 (url "https://framagit.org/prouby/guile-mastodon.git")
2364 (commit (string-append "v" version))))
2365 (file-name (git-file-name name version))
2366 (sha256
2367 (base32
2368 "1vblf3d1bbwna3l09p2ap5y8ycvl549bz6whgk78imyfmn28ygry"))))
2369 (build-system gnu-build-system)
2370 (native-inputs
2371 `(("autoconf" ,autoconf)
2372 ("automake" ,automake)
2373 ("pkg-config" ,pkg-config)))
2374 (inputs
2375 `(("guile" ,guile-2.2)
2376 ("gnutls" ,gnutls)
2377 ("guile-json" ,guile-json)))
2378 (home-page "https://framagit.org/prouby/guile-mastodon")
2379 (synopsis "Guile Mastodon REST API module")
2380 (description "This package provides Guile modules to access the
2381@uref{https://docs.joinmastodon.org/api/, REST API of Mastodon}, a federated
2382microblogging service.")
2383 (license license:gpl3+)))
2384
1722d680 2385;;; guile.scm ends here