gnu: r-fields: Update to 11.4.
[jackhill/guix/guix.git] / gnu / packages / guile-xyz.scm
CommitLineData
0791437f 1;;; GNU Guix --- Functional package management for GNU
f918a8d9 2;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
0791437f
RW
3;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
4;;; Copyright © 2015, 2017 Christopher Allan Webber <cwebber@dustycloud.org>
5;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
195e1c1b 6;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
0791437f 7;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com>
a52aa7fd 8;;; Copyright © 2016, 2019, 2020 Eraim Flashner <efraim@flashner.co.il>
0791437f
RW
9;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
10;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
11;;; Copyright © 2016 Amirouche <amirouche@hypermove.net>
bdf2dd79 12;;; Copyright © 2016, 2019 Jan Nieuwenhuizen <janneke@gnu.org>
0791437f
RW
13;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
14;;; Copyright © 2017 David Thompson <davet@gnu.org>
f6145358 15;;; Copyright © 2017, 2018, 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
0791437f 16;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
3c986a7d 17;;; Copyright © 2017 Nikita <nikita@n0.is>
0791437f
RW
18;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
19;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
69bb61f1 20;;; Copyright © 2018, 2019, 2020 Arun Isaac <arunisaac@systemreboot.net>
0791437f
RW
21;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
22;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
cd81199c 23;;; Copyright © 2019 swedebugia <swedebugia@riseup.net>
be789065 24;;; Copyright © 2019, 2020 Amar Singh <nly@disroot.org>
f9ec89f4 25;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
3c566eba 26;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net>
8ffc20ef 27;;; Copyright © 2020 Evan Straw <evan.straw99@gmail.com>
b7e1e556 28;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
c08f235b 29;;; Copyright © 2020 Julien Lepiler <julien@lepiller.eu>
3a71dac0 30;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
d282a82c 31;;; Copyright © 2020 Masaya Tojo <masaya@tojo.tokyo>
c984b70c 32;;; Copyright © 2020 Jesse Gibbons <jgibbons2357@gmail.com>
a987f128 33;;; Copyright © 2020 Mike Rosset <mike.rosset@gmail.com>
0791437f
RW
34;;;
35;;; This file is part of GNU Guix.
36;;;
37;;; GNU Guix is free software; you can redistribute it and/or modify it
38;;; under the terms of the GNU General Public License as published by
39;;; the Free Software Foundation; either version 3 of the License, or (at
40;;; your option) any later version.
41;;;
42;;; GNU Guix is distributed in the hope that it will be useful, but
43;;; WITHOUT ANY WARRANTY; without even the implied warranty of
44;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
45;;; GNU General Public License for more details.
46;;;
47;;; You should have received a copy of the GNU General Public License
48;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
49
50(define-module (gnu packages guile-xyz)
51 #:use-module ((guix licenses) #:prefix license:)
52 #:use-module (gnu packages)
7ff157c1 53 #:use-module (gnu packages algebra)
0791437f
RW
54 #:use-module (gnu packages aspell)
55 #:use-module (gnu packages autotools)
56 #:use-module (gnu packages base)
57 #:use-module (gnu packages bash)
58 #:use-module (gnu packages compression)
406ef442 59 #:use-module (gnu packages databases)
0791437f 60 #:use-module (gnu packages disk)
15218d4e 61 #:use-module (gnu packages emacs)
5531782d 62 #:use-module (gnu packages emacs-xyz)
0791437f
RW
63 #:use-module (gnu packages gawk)
64 #:use-module (gnu packages gettext)
65 #:use-module (gnu packages gl)
bdf2dd79 66 #:use-module (gnu packages glib)
5531782d 67 #:use-module (gnu packages gnome)
e8c2da41 68 #:use-module (gnu packages gnupg)
0791437f 69 #:use-module (gnu packages gperf)
a987f128 70 #:use-module (gnu packages gstreamer)
bdf2dd79 71 #:use-module (gnu packages gtk)
0791437f
RW
72 #:use-module (gnu packages guile)
73 #:use-module (gnu packages hurd)
74 #:use-module (gnu packages image)
d1a3a8e1 75 #:use-module (gnu packages imagemagick)
0791437f
RW
76 #:use-module (gnu packages libffi)
77 #:use-module (gnu packages libunistring)
78 #:use-module (gnu packages linux)
79 #:use-module (gnu packages man)
80 #:use-module (gnu packages maths)
81 #:use-module (gnu packages multiprecision)
82 #:use-module (gnu packages ncurses)
83 #:use-module (gnu packages networking)
f0de9544 84 #:use-module (gnu packages noweb)
1a37fd1e 85 #:use-module (gnu packages nss)
e8c2da41 86 #:use-module (gnu packages password-utils)
406ef442 87 #:use-module (gnu packages perl)
0791437f
RW
88 #:use-module (gnu packages pkg-config)
89 #:use-module (gnu packages python)
90 #:use-module (gnu packages readline)
91 #:use-module (gnu packages sdl)
69bb61f1 92 #:use-module (gnu packages search)
0791437f
RW
93 #:use-module (gnu packages slang)
94 #:use-module (gnu packages sqlite)
69bb61f1 95 #:use-module (gnu packages swig)
f0de9544 96 #:use-module (gnu packages tex)
0791437f
RW
97 #:use-module (gnu packages texinfo)
98 #:use-module (gnu packages tls)
99 #:use-module (gnu packages version-control)
bdf2dd79 100 #:use-module (gnu packages webkit)
0791437f
RW
101 #:use-module (gnu packages xdisorg)
102 #:use-module (gnu packages xorg)
103 #:use-module (guix packages)
104 #:use-module (guix download)
105 #:use-module (guix git-download)
dec4b3aa 106 #:use-module (guix hg-download)
e4ef0d7c 107 #:use-module (guix build-system glib-or-gtk)
0791437f
RW
108 #:use-module (guix build-system gnu)
109 #:use-module (guix build-system guile)
110 #:use-module (guix utils)
111 #:use-module (ice-9 match)
112 #:use-module ((srfi srfi-1) #:select (alist-delete)))
113
114(define-public artanis
1a37fd1e
RW
115 (package
116 (name "artanis")
117 (version "0.4.1")
118 (source (origin
119 (method url-fetch)
120 (uri (string-append "mirror://gnu/artanis/artanis-"
121 version ".tar.gz"))
122 (sha256
123 (base32
124 "0nnmdfx5xwcc3kck64var7msz7g3qk817d7bv9l159nkmic0v9w4"))
125 (modules '((guix build utils)))
126 (snippet
127 '(begin
128 ;; Unbundle guile-redis and guile-json
129 (delete-file-recursively "artanis/third-party/json.scm")
130 (delete-file-recursively "artanis/third-party/json")
131 (delete-file-recursively "artanis/third-party/redis.scm")
132 (delete-file-recursively "artanis/third-party/redis")
133 (substitute* '("artanis/artanis.scm"
134 "artanis/lpc.scm"
135 "artanis/oht.scm")
136 (("(#:use-module \\()artanis third-party (json\\))" _
137 use-module json)
138 (string-append use-module json)))
139 (substitute* '("artanis/lpc.scm"
140 "artanis/session.scm")
141 (("(#:use-module \\()artanis third-party (redis\\))" _
142 use-module redis)
143 (string-append use-module redis)))
144 (substitute* "artanis/oht.scm"
145 (("([[:punct:][:space:]]+)(->json-string)([[:punct:][:space:]]+)"
146 _ pre json-string post)
147 (string-append pre
148 "scm" json-string
149 post)))
150 (substitute* "artanis/artanis.scm"
151 (("[[:punct:][:space:]]+->json-string[[:punct:][:space:]]+")
152 ""))
153 #t))))
154 (build-system gnu-build-system)
155 (inputs
156 `(("guile" ,guile-2.2)
157 ("nss" ,nss)))
158 ;; FIXME the bundled csv contains one more exported procedure
159 ;; (sxml->csv-string) than guile-csv. The author is maintainer of both
160 ;; projects.
161 ;; TODO: Add guile-dbi and guile-dbd optional dependencies.
162 (propagated-inputs
d282a82c 163 `(("guile-json" ,guile-json-1) ; This ia already using guile-2.2.
a7a8337b 164 ("guile-readline" ,guile2.2-readline)
d282a82c 165 ("guile-redis" ,guile2.2-redis)))
1a37fd1e
RW
166 (native-inputs
167 `(("bash" ,bash) ;for the `source' builtin
168 ("pkgconfig" ,pkg-config)
169 ("util-linux" ,util-linux))) ;for the `script' command
170 (arguments
171 '(#:make-flags
172 ;; TODO: The documentation must be built with the `docs' target.
173 (let* ((out (assoc-ref %outputs "out"))
174 (scm (string-append out "/share/guile/site/2.2"))
175 (go (string-append out "/lib/guile/2.2/site-ccache")))
176 ;; Don't use (%site-dir) for site paths.
177 (list (string-append "MOD_PATH=" scm)
178 (string-append "MOD_COMPILED_PATH=" go)))
179 #:test-target "test"
180 #:phases
181 (modify-phases %standard-phases
182 (add-after 'unpack 'patch-site-dir
183 (lambda* (#:key outputs #:allow-other-keys)
184 (substitute* "artanis/commands/help.scm"
185 (("\\(%site-dir\\)")
186 (string-append "\""
187 (assoc-ref outputs "out")
188 "/share/guile/site/2.2\"")))))
189 (add-after 'unpack 'patch-reference-to-libnss
190 (lambda* (#:key inputs #:allow-other-keys)
191 (substitute* "artanis/security/nss.scm"
192 (("ffi-binding \"libnss3\"")
193 (string-append
194 "ffi-binding \""
195 (assoc-ref inputs "nss") "/lib/nss/libnss3.so"
196 "\"")))
197 #t))
198 (add-before 'install 'substitute-root-dir
199 (lambda* (#:key outputs #:allow-other-keys)
200 (let ((out (assoc-ref outputs "out")))
201 (substitute* "Makefile" ;ignore the execution of bash.bashrc
202 ((" /etc/bash.bashrc") " /dev/null"))
203 (substitute* "Makefile" ;set the root of config files to OUT
204 ((" /etc") (string-append " " out "/etc")))
205 (mkdir-p (string-append out "/bin")) ;for the `art' executable
206 #t)))
207 (add-after 'install 'wrap-art
208 (lambda* (#:key inputs outputs #:allow-other-keys)
209 (let* ((out (assoc-ref outputs "out"))
210 (bin (string-append out "/bin"))
211 (scm (string-append out "/share/guile/site/2.2"))
212 (go (string-append out "/lib/guile/2.2/site-ccache")))
213 (wrap-program (string-append bin "/art")
214 `("GUILE_LOAD_PATH" ":" prefix
215 (,scm ,(getenv "GUILE_LOAD_PATH")))
216 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
217 (,go ,(getenv "GUILE_LOAD_COMPILED_PATH"))))
218 #t))))))
219 (synopsis "Web application framework written in Guile")
220 (description "GNU Artanis is a web application framework written in Guile
0791437f
RW
221Scheme. A web application framework (WAF) is a software framework that is
222designed to support the development of dynamic websites, web applications, web
223services and web resources. The framework aims to alleviate the overhead
224associated with common activities performed in web development. Artanis
225provides several tools for web development: database access, templating
226frameworks, session management, URL-remapping for RESTful, page caching, and
227more.")
1a37fd1e
RW
228 (home-page "https://www.gnu.org/software/artanis/")
229 (license (list license:gpl3+ license:lgpl3+)))) ;dual license
0791437f
RW
230
231;; There has not been any release yet.
232(define-public guildhall
233 (let ((commit "2fe2cc539f4b811bbcd69e58738db03eb5a2b778")
234 (revision "1"))
235 (package
236 (name "guildhall")
237 (version (string-append "0-" revision "." (string-take commit 9)))
238 (source (origin
239 (method git-fetch)
240 (uri (git-reference
b0e7b699 241 (url "https://github.com/ijp/guildhall")
0791437f
RW
242 (commit commit)))
243 (file-name (string-append name "-" version "-checkout"))
244 (sha256
245 (base32
246 "115bym7bg66h3gs399yb2vkzc2ygriaqsn4zbrg8f054mgy8wzn1"))))
247 (build-system gnu-build-system)
248 (arguments
249 `(#:phases
250 (modify-phases %standard-phases
251 ;; Tests fail without this fix because they try to load the bash
252 ;; executable as a Scheme file. See bug report at
253 ;; https://github.com/ijp/guildhall/issues/22
254 (add-after 'unpack 'fix-bug-22
255 (lambda _
256 (substitute* "Makefile.am"
257 (("TESTS_ENVIRONMENT=.*")
258 "AM_TESTS_ENVIRONMENT=srcdir=$(abs_top_srcdir)/tests/
259TEST_EXTENSIONS = .scm
260SCM_LOG_COMPILER= $(top_builddir)/env $(GUILE)
261AM_SCM_LOG_FLAGS = --no-auto-compile -s")
262 ;; FIXME: one of the database tests fails for unknown
263 ;; reasons. It does not fail when run outside of Guix.
264 (("tests/database.scm") ""))
265 #t)))))
266 (inputs
267 `(("guile" ,guile-2.0)))
268 (native-inputs
269 `(("zip" ,zip) ; for tests
270 ("autoconf" ,autoconf)
271 ("automake" ,automake)
272 ("texinfo" ,texinfo)))
273 (synopsis "Package manager for Guile")
274 (description
275 "Guildhall is a package manager written for Guile Scheme. A guild is
276an association of independent craftspeople. A guildhall is where they meet.
277This Guildhall aims to make a virtual space for Guile wizards and journeyfolk
278to share code.
279
280On a practical level, Guildhall lets you share Scheme modules and programs
281over the internet, and install code that has been shared by others. Guildhall
282can handle dependencies, so when a program requires several libraries, and
283each of those has further dependencies, all of the prerequisites for the
284program can be installed in one go.")
285 (home-page "https://github.com/ijp/guildhall")
286 (license license:gpl3+))))
287
288(define-public guile-aspell
289 (package
290 (name "guile-aspell")
291 (version "0.4")
292 (source (origin
293 (method url-fetch)
294 (uri (string-append
295 "http://lonelycactus.com/tarball/guile_aspell-"
296 version ".tar.gz"))
297 (sha256
298 (base32
299 "0vpk5xj9m9qc702z3khmkwhgpb949qbsyz8kw2qycda6qnxk0077"))))
300 (build-system gnu-build-system)
301 (arguments
302 '(#:phases (modify-phases %standard-phases
303 (add-before 'configure 'set-guilesitedir
304 (lambda _
305 (substitute* "Makefile.in"
306 (("^guilesitedir =.*$")
307 "guilesitedir = \
308$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
309 #t))
310 (add-before 'build 'set-libaspell-file-name
311 (lambda* (#:key inputs #:allow-other-keys)
312 (let ((aspell (assoc-ref inputs "aspell")))
313 (substitute* "aspell.scm"
314 (("\"libaspell\\.so\"")
315 (string-append "\"" aspell
316 "/lib/libaspell\"")))
317 #t))))))
318 (native-inputs `(("pkg-config" ,pkg-config)))
319 (inputs `(("guile" ,guile-2.2)
320 ("aspell" ,aspell)))
321 (home-page "https://github.com/spk121/guile-aspell")
322 (synopsis "Spell-checking from Guile")
323 (description
324 "guile-aspell is a Guile Scheme library for comparing a string against a
325dictionary and suggesting spelling corrections.")
326 (license license:gpl3+)))
327
328(define-public guile-bash
329 ;; This project is currently retired. It was initially announced here:
330 ;; <https://lists.gnu.org/archive/html/guile-user/2015-02/msg00003.html>.
331 (let ((commit "1eabc563ca5692b3e08d84f1f0e6fd2283284469")
332 (revision "0"))
333 (package
334 (name "guile-bash")
335 (version (string-append "0.1.6-" revision "." (string-take commit 7)))
336 (home-page
337 "https://anonscm.debian.org/cgit/users/kaction-guest/retired/dev.guile-bash.git")
338 (source (origin
339 (method git-fetch)
340 (uri (git-reference
341 (commit commit)
342 (url home-page)))
343 (sha256
344 (base32
345 "097vny990wp2qpjij6a5a5gwc6fxzg5wk56inhy18iki5v6pif1p"))
346 (file-name (string-append name "-" version "-checkout"))))
347 (build-system gnu-build-system)
348 (arguments
349 '(#:configure-flags
350 ;; Add -I to match 'bash.pc' of Bash 4.4.
351 (list (string-append "CPPFLAGS=-I"
352 (assoc-ref %build-inputs "bash:include")
353 "/include/bash/include")
354
355 ;; The '.a' file is useless.
356 "--disable-static"
357
358 ;; Install 'lib/bash' as Bash 4.4 expects.
359 (string-append "--libdir=" (assoc-ref %outputs "out")
360 "/lib/bash"))))
361 (native-inputs `(("pkg-config" ,pkg-config)
362 ("autoconf" ,autoconf-wrapper)
363 ("automake" ,automake)
364 ("libtool" ,libtool)
365 ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
366 ("gettext" ,gettext-minimal)
367
368 ;; Bash with loadable module support, for the test
369 ;; suite.
370 ("bash-full" ,bash)))
371 (inputs `(("guile" ,guile-2.0)
372 ("bash:include" ,bash "include")))
373 (synopsis "Extend Bash using Guile")
374 (description
375 "Guile-Bash provides a shared library and set of Guile modules,
376allowing you to extend Bash in Scheme. Scheme interfaces allow you to access
377the following aspects of Bash:
378
379@itemize
380@item aliases;
381@item setting and getting Bash variables;
382@item creating dynamic variables;
383@item creating Bash functions with a Scheme implementation;
384@item reader macro for output capturing;
385@item reader macro for evaluating raw Bash commands.
386@end itemize
387
388To enable it, run:
389
390@example
391enable -f ~/.guix-profile/lib/bash/libguile-bash.so scm
392@end example
393
394and then run @command{scm example.scm}.")
395 (license license:gpl3+))))
396
397(define-public guile-8sync
398 (package
399 (name "guile-8sync")
400 (version "0.4.2")
401 (source (origin
402 (method url-fetch)
403 (uri (string-append "mirror://gnu/8sync/8sync-" version
404 ".tar.gz"))
405 (sha256
406 (base32
407 "031wm13srak3wsnll7j2mbbi29g1pcm4swdb71ds9yn567pn20qw"))))
408 (build-system gnu-build-system)
409 (native-inputs `(("autoconf" ,autoconf)
410 ("automake" ,automake)
411 ("guile" ,guile-2.2)
412 ("pkg-config" ,pkg-config)
413 ("texinfo" ,texinfo)))
414 (arguments
415 `(#:phases (modify-phases %standard-phases
416 (add-before 'configure 'setenv
417 (lambda _
418 ;; quiet warnings
419 (setenv "GUILE_AUTO_COMPILE" "0")
420 #t)))))
421 (home-page "https://gnu.org/s/8sync/")
422 (synopsis "Asynchronous actor model library for Guile")
423 (description
424 "GNU 8sync (pronounced \"eight-sync\") is an asynchronous programming
425library for GNU Guile based on the actor model.
426
427Note that 8sync is only available for Guile 2.2.")
eee4173c 428 (properties '((upstream-name . "8sync")))
0791437f
RW
429 (license license:lgpl3+)))
430
431(define-public guile-daemon
432 (package
433 (name "guile-daemon")
f975f82d 434 (version "0.1.3")
0791437f
RW
435 (source (origin
436 (method url-fetch)
437 (uri (string-append "https://github.com/alezost/" name
438 "/releases/download/v" version
439 "/" name "-" version ".tar.gz"))
440 (sha256
441 (base32
f975f82d 442 "08gaqrgjlly9k5si72vvpbr4xhq5v52l5ma5y6a7spid5dd057cy"))))
0791437f
RW
443 (build-system gnu-build-system)
444 (native-inputs
445 `(("pkg-config" ,pkg-config)))
446 (inputs
447 `(("guile" ,guile-2.2)))
448 (home-page "https://github.com/alezost/guile-daemon")
449 (synopsis "Evaluate code in a running Guile process")
450 (description
451 "Guile-Daemon is a small Guile program that loads your initial
452configuration file, and then reads and evaluates Guile expressions that
453you send to a FIFO file.")
454 (license license:gpl3+)))
455
456(define-public guile-dsv
457 (package
458 (name "guile-dsv")
14b92004 459 (version "0.3.0")
0791437f
RW
460 (source (origin
461 (method git-fetch)
462 (uri (git-reference
463 (url "https://github.com/artyom-poptsov/guile-dsv")
14b92004 464 (commit "6c867915dc4198eacc548a4834ef0e1aef852795")))
0791437f
RW
465 (file-name (string-append name "-" version "-checkout"))
466 (sha256
467 (base32
14b92004 468 "1mxbbcsmbjfnh4yydqz44ihbkdnzdwz38xanaam128arlb7hwr8n"))))
0791437f
RW
469 (build-system gnu-build-system)
470 (native-inputs
471 `(("autoconf" ,autoconf)
472 ("automake" ,automake)
473 ("pkg-config" ,pkg-config)
474 ("texinfo" ,texinfo)))
f81ce752
JH
475 (inputs `(("guile" ,guile-3.0)))
476 (propagated-inputs `(("guile-lib" ,guile-lib)))
0791437f 477 (arguments
b7e1e556
JH
478 `(#:modules (((guix build guile-build-system)
479 #:select (target-guile-effective-version))
480 ,@%gnu-build-system-modules)
481 #:imported-modules ((guix build guile-build-system)
482 ,@%gnu-build-system-modules)
483 #:phases (modify-phases %standard-phases
f81ce752
JH
484 ;; Support Guile 3.0 in configure from upstream commit
485 ;; 4c724577ccf19bb88580f72f2f6b166a0447ce3f
486 (add-before 'bootstrap 'configure-support-guile3.0
487 (lambda _
488 (substitute* "configure.ac"
489 (("GUILE_PKG.*")
490 "GUILE_PKG([3.0 2.0 2.2])"))
491 #t))
0791437f
RW
492 (add-before 'configure 'set-guilesitedir
493 (lambda _
494 (substitute* "Makefile.in"
495 (("^guilesitedir =.*$")
496 "guilesitedir = \
497$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
498 (substitute* "modules/Makefile.in"
499 (("^guilesitedir =.*$")
500 "guilesitedir = \
501$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
502 (substitute* "modules/dsv/Makefile.in"
503 (("^guilesitedir =.*$")
504 "guilesitedir = \
505$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
b7e1e556
JH
506 #t))
507 (add-after 'install 'wrap-program
508 (lambda* (#:key inputs outputs #:allow-other-keys)
509 (let* ((out (assoc-ref outputs "out"))
510 (bin (string-append out "/bin"))
f81ce752 511 (guile-lib (assoc-ref inputs "guile-lib"))
b7e1e556
JH
512 (version (target-guile-effective-version))
513 (scm (string-append "/share/guile/site/"
514 version))
515 (go (string-append "/lib/guile/"
516 version "/site-ccache")))
517 (wrap-program (string-append bin "/dsv")
518 `("GUILE_LOAD_PATH" prefix
519 (,(string-append out scm)
520 ,(string-append guile-lib scm)))
521 `("GUILE_LOAD_COMPILED_PATH" prefix
522 (,(string-append out go)
523 ,(string-append guile-lib go)))))
0791437f
RW
524 #t)))))
525 (home-page "https://github.com/artyom-poptsov/guile-dsv")
526 (synopsis "DSV module for Guile")
527 (description
528 "Guile-DSV is a GNU Guile module for working with the
529delimiter-separated values (DSV) data format. Guile-DSV supports the
530Unix-style DSV format and RFC 4180 format.")
531 (license license:gpl3+)))
532
f81ce752
JH
533(define-public guile2.2-dsv
534 (package
535 (inherit guile-dsv)
536 (name "guile2.2-dsv")
537 (inputs `(("guile" ,guile-2.2)))
538 (propagated-inputs `(("guile-lib" ,guile2.2-lib)))))
539
0791437f
RW
540(define-public guile-fibers
541 (package
542 (name "guile-fibers")
543 (version "1.0.0")
544 (source (origin
545 (method url-fetch)
546 (uri (string-append "https://wingolog.org/pub/fibers/fibers-"
547 version ".tar.gz"))
548 (sha256
549 (base32
9e016129
LC
550 "0vjkg72ghgdgphzbjz9ig8al8271rq8974viknb2r1rg4lz92ld0"))
551 (modules '((guix build utils)))
552 (snippet
553 '(begin
554 ;; Allow builds with Guile 3.0.
555 (substitute* "configure"
556 (("search=\"2\\.2\"")
557 "search=\"3.0 2.2\""))
558
559 ;; Explicitly include system headers rather than relying on
560 ;; <libguile.h> to do it for us.
561 (substitute* "epoll.c"
562 (("#include.*libguile\\.h.*$" all)
563 (string-append "#include <unistd.h>\n"
564 "#include <string.h>\n"
565 all "\n")))
566
567 ;; Import (ice-9 threads) for 'current-processor-count'.
568 (substitute* "tests/channels.scm"
569 (("#:use-module \\(fibers\\)")
570 (string-append "#:use-module (fibers)\n"
571 "#:use-module (ice-9 threads)\n")))
9af90aaf
CR
572 #t))
573 (patches
574 ;; fixes a resource leak that causes crashes in the tests
575 (search-patches "guile-fibers-destroy-peer-schedulers.patch"))))
0791437f
RW
576 (build-system gnu-build-system)
577 (arguments
b6bee63b
LC
578 '(;; The code uses 'scm_t_uint64' et al., which are deprecated in 3.0.
579 #:configure-flags '("CFLAGS=-Wno-error=deprecated-declarations")
580 #:phases (modify-phases %standard-phases
0791437f
RW
581 (add-after 'install 'mode-guile-objects
582 (lambda* (#:key outputs #:allow-other-keys)
583 ;; .go files are installed to "lib/guile/X.Y/cache".
584 ;; This phase moves them to "…/site-ccache".
585 (let* ((out (assoc-ref outputs "out"))
586 (lib (string-append out "/lib/guile"))
587 (old (car (find-files lib "^ccache$"
588 #:directories? #t)))
589 (new (string-append (dirname old)
590 "/site-ccache")))
591 (rename-file old new)
592 #t))))))
593 (native-inputs
594 `(("texinfo" ,texinfo)
595 ("pkg-config" ,pkg-config)))
596 (inputs
b6bee63b 597 `(("guile" ,guile-3.0)))
0791437f
RW
598 (synopsis "Lightweight concurrency facility for Guile")
599 (description
600 "Fibers is a Guile library that implements a a lightweight concurrency
601facility, inspired by systems like Concurrent ML, Go, and Erlang. A fiber is
602like a \"goroutine\" from the Go language: a lightweight thread-like
603abstraction. Systems built with Fibers can scale up to millions of concurrent
604fibers, tens of thousands of concurrent socket connections, and many parallel
605cores. The Fibers library also provides Concurrent ML-like channels for
606communication between fibers.
607
608Note that Fibers makes use of some Guile 2.1/2.2-specific features and
609is not available for Guile 2.0.")
610 (home-page "https://github.com/wingo/fibers")
611 (license license:lgpl3+)))
612
b6bee63b 613(define-public guile2.0-fibers
9e016129
LC
614 (package
615 (inherit guile-fibers)
b6bee63b
LC
616 (name "guile2.2-fibers")
617 (inputs `(("guile" ,guile-2.2)))))
618
619(define-public guile3.0-fibers
620 (deprecated-package "guile3.0-fibers" guile-fibers))
9e016129 621
0791437f
RW
622(define-public guile-syntax-highlight
623 (package
624 (name "guile-syntax-highlight")
625 (version "0.1")
626 (source (origin
627 (method url-fetch)
628 (uri (string-append "https://files.dthompson.us/"
629 "guile-syntax-highlight/"
630 "guile-syntax-highlight-"
631 version ".tar.gz"))
632 (sha256
633 (base32
fb8a77f4
LC
634 "1p771kq15x83483m23bhah1sz6vkalg3drm7x279f4j1cxligkzi"))
635 (modules '((guix build utils)))
636 (snippet
637 '(begin
638 ;; Allow builds with Guile 3.0.
639 (substitute* "configure"
640 (("2\\.2 2\\.0")
641 "3.0 2.2 2.0"))
642 #t))))
0791437f
RW
643 (build-system gnu-build-system)
644 (native-inputs
645 `(("pkg-config" ,pkg-config)))
646 (inputs
b6bee63b 647 `(("guile" ,guile-3.0)))
0791437f
RW
648 (synopsis "General-purpose syntax highlighter for GNU Guile")
649 (description "Guile-syntax-highlight is a general-purpose syntax
650highlighting library for GNU Guile. It can parse code written in various
651programming languages into a simple s-expression that can be converted to
652HTML (via SXML) or any other format for rendering.")
02e052ba 653 (home-page "https://dthompson.us/projects/guile-syntax-highlight.html")
0791437f
RW
654 (license license:lgpl3+)))
655
b6bee63b 656(define-public guile2.2-syntax-highlight
fb8a77f4
LC
657 (package
658 (inherit guile-syntax-highlight)
b6bee63b
LC
659 (name "guile2.2-syntax-highlight")
660 (inputs `(("guile" ,guile-2.2)))))
661
662(define-public guile3.0-syntax-highlight
663 (deprecated-package "guile3.0-syntax-highlight" guile-syntax-highlight))
fb8a77f4 664
0791437f
RW
665(define-public guile-sjson
666 (package
667 (name "guile-sjson")
668 (version "0.2.1")
669 (source (origin
670 (method url-fetch)
671 (uri (string-append "https://dustycloud.org/misc/sjson-" version
672 ".tar.gz"))
673 (sha256
674 (base32
eef54583
RW
675 "1mzmapln79vv10qxaggz9qwcdbag3jnrj19xx8bgkmxss8h03sv3"))
676 (modules '((guix build utils)))
677 (snippet
678 '(begin
679 ;; Allow builds with Guile 3.0.
680 (substitute* "configure"
681 (("2\\.2 2\\.0")
682 "3.0 2.2 2.0"))
683 #t))))
0791437f
RW
684 (build-system gnu-build-system)
685 (native-inputs
686 `(("autoconf" ,autoconf)
687 ("automake" ,automake)
688 ("pkg-config" ,pkg-config)))
689 (inputs
eef54583 690 `(("guile" ,guile-3.0)))
0791437f
RW
691 (home-page "https://gitlab.com/dustyweb/guile-sjson")
692 (synopsis "S-expression based json reader/writer for Guile")
693 (description "guile-sjson is a json reader/writer for Guile.
694It has a nice, simple s-expression based syntax.")
695 (license license:lgpl3+)))
696
eef54583
RW
697(define-public guile2.2-sjson
698 (package
699 (inherit guile-sjson)
700 (name "guile2.2-sjson")
701 (inputs `(("guile" ,guile-2.2)))))
702
61dafdc0
CB
703(define-public guile-squee
704 (let ((commit "a85902a92bf6f58a1d35fd974a01ade163deda8d")
705 (revision "0"))
706 (package
707 (name "guile-squee")
708 (version (string-append "0-" revision "." (string-take commit 7)))
709 (source (origin
710 (method git-fetch)
711 (uri (git-reference
712 (url "https://notabug.org/cwebber/guile-squee.git")
713 (commit commit)))
714 (file-name (git-file-name name version))
715 (sha256
716 (base32
717 "0p1lpsp4kx57j3ai1dkxilm4ziavzzx8wbbc42m3hpziq0a7qz5z"))))
718 (build-system guile-build-system)
719 (arguments
720 '(#:phases
721 (modify-phases %standard-phases
722 (add-after 'unpack 'patch
723 (lambda* (#:key inputs #:allow-other-keys)
724 (substitute* "squee.scm"
725 (("dynamic-link \"libpq\"")
726 (string-append
727 "dynamic-link \""
728 (assoc-ref inputs "postgresql") "/lib/libpq.so"
729 "\"")))
730 #t)))))
731 (inputs
732 `(("postgresql" ,postgresql)))
733 (native-inputs
ca03dca5 734 `(("guile" ,guile-3.0)))
61dafdc0
CB
735 (home-page "https://notabug.org/cwebber/guile-squee")
736 (synopsis "Connect to PostgreSQL using Guile")
737 (description
738 "@code{squee} is a Guile library for connecting to PostgreSQL databases
739using Guile's foreign function interface.")
6fd72f70 740 (license license:lgpl3+))))
61dafdc0 741
ca03dca5 742(define-public guile2.2-squee
945a73d8
CB
743 (package
744 (inherit guile-squee)
ca03dca5
LC
745 (name "guile2.2-squee")
746 (native-inputs `(("guile" ,guile-2.2)
cfe35814
CB
747 ,@(alist-delete "guile"
748 (package-native-inputs guile-squee))))))
945a73d8 749
ca03dca5
LC
750(define-public guile3.0-squee
751 (deprecated-package "guile3.0-squee" guile-squee))
752
0791437f
RW
753(define-public guile-colorized
754 (package
755 (name "guile-colorized")
756 (version "0.1")
1340ce28
TGR
757 (source
758 (origin
759 (method git-fetch)
760 (uri (git-reference
55f4282e 761 (url "https://gitlab.com/NalaGinrut/guile-colorized.git")
1340ce28
TGR
762 (commit (string-append "v" version))))
763 (file-name (git-file-name name version))
764 (sha256
765 (base32 "10mv8c63159r3qvwwdvsgnsvdg7nc2ghak85zapwqpv4ywrqp9zc"))))
0791437f
RW
766 (build-system guile-build-system)
767 (native-inputs
b6bee63b 768 `(("guile" ,guile-3.0)))
55f4282e 769 (home-page "https://gitlab.com/NalaGinrut/guile-colorized")
0791437f
RW
770 (synopsis "Colorized REPL for Guile")
771 (description
772 "Guile-colorized provides you with a colorized REPL for GNU Guile.")
773 (license license:gpl3+)))
774
b6bee63b 775(define-public guile2.2-colorized
fc870a0d
LC
776 (package
777 (inherit guile-colorized)
b6bee63b
LC
778 (name "guile2.2-colorized")
779 (native-inputs `(("guile" ,guile-2.2)))))
780
781(define-public guile3.0-colorized
782 (deprecated-package "guile3.0-colorized" guile-colorized))
fc870a0d 783
0791437f
RW
784(define-public guile-pfds
785 (package
786 (name "guile-pfds")
787 (version "0.3")
788 (home-page "https://github.com/ijp/pfds")
789 (source (origin
790 (method git-fetch)
791 (uri (git-reference
792 (url home-page)
793 (commit (string-append "v" version))))
794 (sha256
795 (base32
796 "19y33wg94pf0n98dkfqd1zbw93fgky4sawxsxl6s3vyqwl0yi5vh"))
797 (file-name (string-append name "-" version "-checkout"))))
798 (build-system guile-build-system)
799 (arguments
800 '(#:source-directory "src"
45231d17 801 #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
0791437f
RW
802 #:phases (modify-phases %standard-phases
803 (add-after 'unpack 'move-files-around
804 (lambda _
805 ;; Move files under a pfds/ directory to reflect the
806 ;; module hierarchy.
807 (mkdir-p "src/pfds")
808 (for-each (lambda (file)
809 (rename-file file
45231d17 810 (string-append "src/pfds/" file)))
0791437f
RW
811 '("bbtrees.sls"
812 "deques"
813 "deques.sls"
814 "dlists.sls"
815 "fingertrees.sls"
816 "hamts.sls"
817 "heaps.sls"
818 "private"
819 "psqs.sls"
820 "queues"
821 "queues.sls"
822 "sequences.sls"
823 "sets.sls"))
0791437f
RW
824 #t)))))
825 (native-inputs
b6bee63b 826 `(("guile" ,guile-3.0)))
0791437f
RW
827 (synopsis "Purely functional data structures for Guile")
828 (description
829 "This package provides purely functional data structures written in R6RS
830Scheme and compiled for Guile. It has been tested with Racket, Guile 2,
831Vicare Scheme and IronScheme. Right now it contains:
832
833@itemize
834@item queues
835@item deques
836@item bbtrees
837@item sets
838@item dlists
839@item priority search queues (PSQs)
840@item finger trees
841@item sequences
842@item heaps
843@item hash array mapped tries (HAMTs).
844@end itemize\n")
845 (license license:bsd-3)))
846
15c3fe24
CB
847(define-public guile-prometheus
848 (let ((commit "cbc6e1b03512443a03d66414c426adb8470b5f2b")
849 (revision "0"))
850 (package
851 (name "guile-prometheus")
852 (version (git-version "0" revision commit))
853 (source (origin
854 (method git-fetch)
855 (uri (git-reference
856 (url "https://git.cbaines.net/git/guile/prometheus")
857 (commit commit)))
858 (sha256
859 (base32
860 "1k1qg4ia87w2ipnf8cpikdc67lxi5bmahkhgk2x0i9ibdyvqb7np"))
861 (file-name (string-append name "-" version "-checkout"))))
862 (build-system gnu-build-system)
863 (native-inputs
864 `(("pkg-config" ,pkg-config)
865 ("autoconf" ,autoconf)
866 ("automake" ,automake)))
867 (inputs
868 `(("guile" ,guile-3.0)))
869 (home-page "https://git.cbaines.net/guile/prometheus")
870 (synopsis "Prometheus client library for Guile")
871 (description
872 "This Guile library provides instrumentation code intended to be used
873with the Prometheus time series service. Counter, gauge and histogram metric
874types are supported.")
875 (license license:gpl3+))))
876
b6bee63b 877(define-public guile2.2-pfds
77c95ee6
RW
878 (package
879 (inherit guile-pfds)
b6bee63b
LC
880 (name "guile2.2-pfds")
881 (native-inputs `(("guile" ,guile-2.2)))
77c95ee6 882 (arguments
0dd1e277
RW
883 (substitute-keyword-arguments (package-arguments guile-pfds)
884 ((#:phases phases)
885 `(modify-phases ,phases
45231d17
MB
886 (delete 'work-around-guile-bug)
887 (add-after 'move-files-around 'sls->scm
888 (lambda _
889 ;; In Guile <= 2.2.4, there's no way to tell 'guild
890 ;; compile' to accept the ".sls" extension. So...
891 (for-each (lambda (file)
892 (rename-file file
893 (string-append
894 (string-drop-right file 4)
895 ".scm")))
896 (find-files "." "\\.sls$"))
897 #t))))))))
b6bee63b
LC
898
899(define-public guile3.0-pfds
900 (deprecated-package "guile3.0-pfds" guile-pfds))
77c95ee6 901
0791437f
RW
902(define-public guile-aa-tree
903 (package
904 (name "guile-aa-tree")
905 (version "3.1.1")
906 (source (origin
907 (method url-fetch)
908 (uri (string-append "mirror://savannah/guile-aa-tree/guile-aa-tree-"
909 version ".tar.gz"))
910 (sha256
911 (base32
912 "0044c105r3q9vpl17pv3phl1b79kjm1llhkakqgiasixyav01blh"))))
913 (build-system guile-build-system)
914 (native-inputs `(("guile" ,guile-2.2)))
915 ;; https://savannah.nongnu.org/projects/guile-aa-tree
916 (home-page "https://qlfiles.net/guile-aa-tree/")
917 (synopsis "AA tree data structure for Guile")
918 (description
919 "This package provides an implementation of @dfn{AA trees}, a
920self-balancing binary tree data structure, for Guile. It ensure @math{O(log
921n)} worst case performance for core operations. The module provides
922non-mutating insert, delete, and search operations, with support for
923convenient nested tree operations.")
924 (license license:gpl3+)))
925
926(define-public guile-simple-zmq
927 (let ((commit "68bedb6679716214fb9d3472da57544526f7a618")
928 (revision "3"))
929 (package
930 (name "guile-simple-zmq")
931 (version (git-version "0.0.0" revision commit))
932 (source
933 (origin
934 (method git-fetch)
935 (uri (git-reference
936 (url "https://github.com/jerry40/guile-simple-zmq")
937 (commit commit)))
938 (sha256
939 (base32
940 "1ad3xg69qqviy1f6dnlw0ysmfdbmp1jq65rfqb8nfd8dsrq2syli"))
941 (file-name (git-file-name name version))))
942 (build-system guile-build-system)
943 (arguments
944 `(#:source-directory "src"
945 #:phases (modify-phases %standard-phases
946 (add-after 'unpack 'set-libzmq-file-name
947 (lambda* (#:key inputs #:allow-other-keys)
948 (substitute* "src/simple-zmq.scm"
949 (("\\(dynamic-link \"libzmq\"\\)")
950 (format #f "(dynamic-link \"~a/lib/libzmq.so\")"
951 (assoc-ref inputs "zeromq"))))
952 #t)))))
953 (native-inputs
b6bee63b 954 `(("guile" ,guile-3.0)))
0791437f
RW
955 (inputs
956 `(("zeromq" ,zeromq)))
957 (home-page "https://github.com/jerry40/guile-simple-zmq")
958 (synopsis "Guile wrapper over ZeroMQ library")
959 (description
960 "This package provides a Guile programming interface to the ZeroMQ
961messaging library.")
962 (license license:gpl3+))))
963
b6bee63b 964(define-public guile2.2-simple-zmq
015bb1c8
LC
965 (package
966 (inherit guile-simple-zmq)
b6bee63b
LC
967 (name "guile2.2-simple-zmq")
968 (native-inputs `(("guile" ,guile-2.2)))))
969
970(define-public guile3.0-simple-zmq
971 (deprecated-package "guile3.0-simple-zmq" guile-simple-zmq))
015bb1c8 972
0791437f 973(define-public jupyter-guile-kernel
c984b70c
JG
974 (let ((commit "f25fb90b95529b17a006a807bd04e6aee12ea304")
975 (revision "2"))
0791437f
RW
976 (package
977 (name "jupyter-guile-kernel")
978 (version (git-version "0.0.0" revision commit))
979 (source
980 (origin
981 (method git-fetch)
982 (uri (git-reference
983 (url "https://github.com/jerry40/guile-kernel")
984 (commit commit)))
f1d4d79f 985 (file-name (git-file-name name version))
0791437f
RW
986 (sha256
987 (base32
c984b70c 988 "0zr1fasdb2yv9kn21yll993y9higqss4jnfs030ndhjb93raa9sr"))))
0791437f
RW
989 (build-system guile-build-system)
990 (arguments
991 '(#:phases (modify-phases %standard-phases
992 (add-after 'unpack 'set-openssl-file-name
993 (lambda* (#:key inputs #:allow-other-keys)
994 ;; Record the absolute file name of the 'openssl'
995 ;; command.
996 (substitute* "src/hmac.scm"
997 (("openssl")
998 (string-append (assoc-ref inputs "openssl")
999 "/bin/openssl")))
1000 #t))
1001
1002 ;; XXX: The code uses 'include' to include its own source
1003 ;; files, and "-L src" isn't enough in this case.
1004 (add-before 'build 'chdir
1005 (lambda _ (chdir "src") #t))
1006 (add-after 'build 'chdir-back
1007 (lambda _ (chdir "..") #t))
1008
1009 (add-after 'install 'install-kernel
1010 (lambda* (#:key inputs outputs #:allow-other-keys)
1011 (let* ((out (assoc-ref outputs "out"))
1012 (json (assoc-ref inputs "guile-json"))
1013 (zmq (assoc-ref inputs "guile-simple-zmq"))
1014 (deps (list json zmq))
1015 (dir (string-append
1016 out "/share/jupyter/kernels/guile"))
1017 (effective (target-guile-effective-version)))
1018 ;; Install kernel.
1019 (install-file "src/kernel.json" dir)
1020
1021 ;; Fix hard-coded file name in the kernel.
1022 (substitute* (string-append dir "/kernel.json")
c984b70c 1023 (("/usr/local/.*/guile-jupyter-kernel.scm")
0791437f
RW
1024 (string-append out "/share/guile/site/"
1025 (target-guile-effective-version)
1026 "/guile-jupyter-kernel.scm"))
1027 (("\"guile\"")
1028 (string-append "\"" (assoc-ref inputs "guile")
1029 "/bin/guile\""))
1030 (("-s")
1031 ;; Add '-L' and '-C' flags so that the kernel
1032 ;; finds its dependencies.
1033 (let ((-L (map (lambda (item)
1034 (string-append "\"" item
1035 "/share/guile/site/"
1036 effective "\""))
1037 deps))
1038 (-C (map (lambda (item)
1039 (string-append "\"" item
1040 "/lib/guile/"
1041 effective
1042 "/site-ccache\""))
1043 deps)))
c984b70c
JG
1044 (string-append "--no-auto-compile\""
1045 (string-join -L ", \"-L\", "
1046 'prefix)
1047 (string-join -C ", \"-C\", "
1048 'prefix)
1049 ", \"-s"))))
0791437f
RW
1050 #t))))))
1051 (inputs
1052 `(("openssl" ,openssl)
c984b70c
JG
1053 ("guile" ,guile-3.0)
1054 ("guile-json" ,guile-json-3)
0791437f
RW
1055 ("guile-simple-zmq" ,guile-simple-zmq)))
1056 (synopsis "Guile kernel for the Jupyter Notebook")
1057 (description
1058 "This package provides a Guile 2.x kernel for the Jupyter Notebook. It
1059allows users to interact with the Guile REPL through Jupyter.")
1060 (home-page "https://github.com/jerry40/guile-kernel")
1061 (license license:gpl3+))))
1062
1063(define-public guile-sparql
1064 (package
1065 (name "guile-sparql")
1066 (version "0.0.7")
1067 (source (origin
1068 (method url-fetch)
1069 (uri (string-append
1070 "https://github.com/roelj/guile-sparql/releases/download/"
1071 version "/guile-sparql-" version ".tar.gz"))
1072 (sha256
1073 (base32 "1drnvhsgl0gc5crmb16yyw1j98nkhwwcgssv9vgm36ng43nnzffd"))))
1074 (build-system gnu-build-system)
1075 (arguments `(#:tests? #f)) ; There are no tests.
1076 (native-inputs
1077 `(("pkg-config" ,pkg-config)))
1078 (inputs
1079 `(("guile" ,guile-2.2)))
1080 (home-page "https://github.com/roelj/guile-sparql")
1081 (synopsis "SPARQL module for Guile")
1082 (description "This package provides the functionality to query a SPARQL
1083endpoint. Additionally, it provides an interface to write SPARQL queries
1084using S-expressions.")
1085 (license license:gpl3+)))
1086
1087(define-public guile-debbugs
1088 (package
1089 (name "guile-debbugs")
5144f542 1090 (version "0.0.3")
0791437f
RW
1091 (source (origin
1092 (method url-fetch)
1093 (uri (string-append "mirror://gnu/guile-debbugs/guile-debbugs-"
1094 version ".tar.gz"))
1095 (sha256
1096 (base32
5144f542 1097 "1cc63nw3xdfjrfk8c58r6d5lidmfq5cpqcy32yd5xp81yccprvn9"))))
0791437f 1098 (build-system gnu-build-system)
5144f542
RW
1099 (propagated-inputs
1100 `(("guile-email" ,guile-email)))
0791437f 1101 (native-inputs
cd23eb06 1102 `(("guile" ,guile-3.0)
0791437f
RW
1103 ("pkg-config" ,pkg-config)))
1104 (home-page "https://savannah.gnu.org/projects/guile-debbugs/")
1105 (synopsis "Guile interface to the Debbugs bug tracking service")
1106 (description
1107 "This package provides a Guile library to communicate with a Debbugs bug
1108tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
1109 (license license:gpl3+)))
1110
1111(define-public guile-email
50771f5b
AI
1112 (package
1113 (name "guile-email")
223cb7c6 1114 (version "0.2.2")
50771f5b
AI
1115 (source
1116 (origin
1117 (method url-fetch)
1118 (uri (string-append
db18d87a
AI
1119 "https://guile-email.systemreboot.net/releases/guile-email-"
1120 version ".tar.lz"))
50771f5b
AI
1121 (sha256
1122 (base32
223cb7c6 1123 "1rc8r0fgvflnyq5ckl7ii8sghpsgpkzxa8vskjr1ak2kyar6m35k"))))
50771f5b
AI
1124 (build-system gnu-build-system)
1125 (native-inputs
1126 `(("pkg-config" ,pkg-config)
db18d87a 1127 ("lzip" ,lzip)))
50771f5b 1128 (inputs
ca6c1509 1129 `(("guile" ,guile-3.0)))
db18d87a 1130 (arguments
2c33a849 1131 '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
db18d87a 1132 (home-page "https://guile-email.systemreboot.net")
50771f5b 1133 (synopsis "Guile email parser")
db18d87a
AI
1134 (description "guile-email is a collection of email utilities implemented
1135in pure guile. It supports parsing MIME (Multipurpose Internet Mail
1136Extensions) compliant email messages and reading emails from the mbox
1137format.")
50771f5b 1138 (license license:agpl3+)))
0791437f 1139
ca6c1509 1140(define-public guile2.2-email
63a847cb
CB
1141 (package
1142 (inherit guile-email)
ca6c1509
LC
1143 (name "guile2.2-email")
1144 (inputs `(("guile" ,guile-2.2)
63a847cb
CB
1145 ,@(alist-delete "guile" (package-inputs guile-email))))))
1146
ca6c1509
LC
1147(define-public guile3.0-email
1148 (deprecated-package "guile3.0-email" guile-email))
1149
0791437f 1150(define-public guile-newt
442a11f6
MO
1151 (package
1152 (name "guile-newt")
f52c1f5f 1153 (version "0.0.2")
442a11f6
MO
1154 (source (origin
1155 (method git-fetch)
1156 (uri (git-reference
1157 (url "https://gitlab.com/mothacehe/guile-newt")
1158 (commit version)))
1159 (file-name (git-file-name name version))
1160 (sha256
1161 (base32
f52c1f5f 1162 "1gksd1lzgjjh1p9vczghg8jw995d22hm34kbsiv8rcryirv2xy09"))))
442a11f6
MO
1163 (build-system gnu-build-system)
1164 (arguments
1165 '(#:make-flags
1166 '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
1167 (inputs
b6bee63b 1168 `(("guile" ,guile-3.0)
442a11f6
MO
1169 ("newt" ,newt)))
1170 (native-inputs
1171 `(("autoconf" ,autoconf)
1172 ("automake" ,automake)
1173 ("pkg-config" ,pkg-config)))
1174 (synopsis "Guile bindings to Newt")
1175 (description
1176 "This package provides bindings for Newt, a programming library for
0791437f
RW
1177color text mode, widget based user interfaces. The bindings are written in pure
1178Scheme by using Guile’s foreign function interface.")
442a11f6
MO
1179 (home-page "https://gitlab.com/mothacehe/guile-newt")
1180 (license license:gpl3+)))
0791437f 1181
b6bee63b 1182(define-public guile2.2-newt
e7fc7746
LC
1183 (package
1184 (inherit guile-newt)
b6bee63b 1185 (name "guile2.2-newt")
318e1a93 1186 (inputs `(("guile" ,guile-2.2)
e7fc7746
LC
1187 ,@(alist-delete "guile" (package-inputs guile-newt))))))
1188
b6bee63b
LC
1189(define-public guile3.0-newt
1190 (deprecated-package "guile3.0-newt" guile-newt))
1191
0791437f
RW
1192(define-public guile-mastodon
1193 (package
1194 (name "guile-mastodon")
1195 (version "0.0.1")
1196 (source (origin
1197 (method git-fetch)
1198 (uri (git-reference
1199 (url "https://framagit.org/prouby/guile-mastodon.git")
1200 (commit (string-append "v" version))))
1201 (file-name (git-file-name name version))
1202 (sha256
1203 (base32
1204 "1vblf3d1bbwna3l09p2ap5y8ycvl549bz6whgk78imyfmn28ygry"))))
1205 (build-system gnu-build-system)
1206 (native-inputs
1207 `(("autoconf" ,autoconf)
1208 ("automake" ,automake)
1209 ("pkg-config" ,pkg-config)))
1210 (inputs
1211 `(("guile" ,guile-2.2)
1212 ("gnutls" ,gnutls)
91f55717 1213 ("guile-json" ,guile-json-1)))
0791437f
RW
1214 (home-page "https://framagit.org/prouby/guile-mastodon")
1215 (synopsis "Guile Mastodon REST API module")
1216 (description "This package provides Guile modules to access the
1217@uref{https://docs.joinmastodon.org/api/, REST API of Mastodon}, a federated
1218microblogging service.")
1219 (license license:gpl3+)))
1220
0791437f 1221(define-public guile-parted
dbcd503c
MO
1222 (package
1223 (name "guile-parted")
575032c8 1224 (version "0.0.4")
dbcd503c
MO
1225 (source (origin
1226 (method git-fetch)
1227 (uri (git-reference
1228 (url "https://gitlab.com/mothacehe/guile-parted")
1229 (commit version)))
1230 (file-name (git-file-name name version))
1231 (sha256
1232 (base32
575032c8 1233 "0b7h8psfm9gmmwb65pp5zwzglvwnfmw5j40g09hhf3f7kwxc0mv2"))
f6145358 1234 (modules '((guix build utils)))))
dbcd503c
MO
1235 (build-system gnu-build-system)
1236 (arguments
1237 '(#:make-flags
1238 '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
1239 (inputs
b6bee63b 1240 `(("guile" ,guile-3.0)
dbcd503c
MO
1241 ("parted" ,parted)))
1242 (propagated-inputs
1243 `(("guile-bytestructures" ,guile-bytestructures)))
1244 (native-inputs
1245 `(("autoconf" ,autoconf)
1246 ("automake" ,automake)
1247 ("pkg-config" ,pkg-config)))
1248 (synopsis "Guile bindings to GNU Parted")
1249 (description
1250 "This package provides bindings for GNU Parted library, a C library
1251allowing disk partition tables creation and manipulation. The bindings are
0791437f 1252written in pure Scheme by using Guile's foreign function interface.")
dbcd503c
MO
1253 (home-page "https://gitlab.com/mothacehe/guile-parted")
1254 (license license:gpl3+)))
0791437f 1255
b6bee63b 1256(define-public guile2.2-parted
e5b95558
LC
1257 (package
1258 (inherit guile-parted)
b6bee63b 1259 (name "guile2.2-parted")
318e1a93 1260 (inputs `(("guile" ,guile-2.2)
e5b95558
LC
1261 ,@(alist-delete "guile" (package-inputs guile-parted))))
1262 (propagated-inputs
b6bee63b
LC
1263 `(("guile-bytestructures" ,guile2.2-bytestructures)))))
1264
1265(define-public guile3.0-parted
1266 (deprecated-package "guile3.0-parted" guile-parted))
e5b95558 1267
0791437f
RW
1268(define-public guile-xosd
1269 (package
1270 (name "guile-xosd")
1271 (version "0.2.1")
1272 (source (origin
1273 (method url-fetch)
1274 (uri (string-append "https://github.com/alezost/" name
1275 "/releases/download/v" version
1276 "/" name "-" version ".tar.gz"))
1277 (sha256
1278 (base32
1279 "1ri5065c16kmgrf2pysn2ymxjqi5302lhpb07wkl1jr75ym8fn8p"))))
1280 (build-system gnu-build-system)
1281 (native-inputs
1282 `(("pkg-config" ,pkg-config)))
1283 (inputs
1284 `(("guile" ,guile-2.2)
1285 ("libx11" ,libx11)
1286 ("libxext" ,libxext)
1287 ("libxinerama" ,libxinerama)
1288 ("xosd" ,xosd)))
1289 (home-page "https://github.com/alezost/guile-xosd")
1290 (synopsis "XOSD bindings for Guile")
1291 (description
1292 "Guile-XOSD provides Guile bindings for @code{libxosd},
1293@uref{http://sourceforge.net/projects/libxosd/, the X On Screen Display
1294library}.")
1295 (license license:gpl3+)))
1296
1297(define-public guile-dbi
1298 (package
1299 (name "guile-dbi")
1300 (version "2.1.6")
1301 (source (origin
1302 (method url-fetch)
1303 (uri (string-append
1304 "http://download.gna.org/guile-dbi/guile-dbi-"
1305 version ".tar.gz"))
1306 (sha256
1307 (base32
1308 "116njrprhgrsv1qm904sp3b02rq01fx639r433d657gyhw3x159n"))))
1309 (build-system gnu-build-system)
1310 (arguments
1311 '(#:configure-flags
1312 (list (string-append
1313 "--with-guile-site-dir=" %output "/share/guile/site/2.2"))
1314 #:make-flags
406ef442
CB
1315 (list (string-append
1316 "LDFLAGS=-Wl,-rpath=" %output "/lib:"
1317 (assoc-ref %build-inputs "guile-dbd-sqlite3") "/lib" ":"
1318 (assoc-ref %build-inputs "guile-dbd-postgresql") "/lib"))
0791437f
RW
1319 #:phases
1320 (modify-phases %standard-phases
1321 (add-after 'install 'patch-extension-path
1322 (lambda* (#:key outputs #:allow-other-keys)
1323 (let* ((out (assoc-ref outputs "out"))
1324 (dbi.scm (string-append
1325 out "/share/guile/site/2.2/dbi/dbi.scm"))
1326 (ext (string-append out "/lib/libguile-dbi")))
1327 (substitute* dbi.scm (("libguile-dbi") ext))
1328 #t))))))
1329 (inputs
406ef442
CB
1330 `(("guile-dbd-sqlite3" ,guile-dbd-sqlite3)
1331 ("guile-dbd-postgresql" ,guile-dbd-postgresql))) ; only shared library, no scheme files
0791437f
RW
1332 (propagated-inputs
1333 `(("guile" ,guile-2.2)))
1334 (synopsis "Guile database abstraction layer")
1335 (home-page "http://home.gna.org/guile-dbi/guile-dbi.html")
1336 (description
1337 "guile-dbi is a library for Guile that provides a convenient interface to
1338SQL databases. Database programming with guile-dbi is generic in that the same
1339programming interface is presented regardless of which database system is used.
1340It currently supports MySQL, Postgres and SQLite3.")
1341 (license license:gpl2+)))
1342
1343(define guile-dbi-bootstrap
1344 (package
1345 (inherit guile-dbi)
1346 (name "guile-dbi-bootstrap")
1347 (inputs '())
1348 (arguments
1349 (substitute-keyword-arguments (package-arguments guile-dbi)
1350 ((#:make-flags _) '(list))))))
1351
1352(define-public guile-dbd-sqlite3
1353 (package
1354 (name "guile-dbd-sqlite3")
1355 (version "2.1.6")
1356 (source (origin
1357 (method url-fetch)
1358 (uri (string-append
1359 "http://download.gna.org/guile-dbi/guile-dbd-sqlite3-"
1360 version ".tar.gz"))
1361 (sha256
1362 (base32
1363 "0rg71jchxd2y8x496s8zmfmikr5g8zxi8zv2ar3f7a23pph92iw2"))))
1364 (build-system gnu-build-system)
1365 (native-inputs
1366 `(("pkg-config" ,pkg-config)
1367 ("guile-dbi-bootstrap" ,guile-dbi-bootstrap))) ; only required for headers
1368 (inputs
1369 `(("sqlite" ,sqlite)
1370 ("zlib" ,(@ (gnu packages compression) zlib))))
1371 (synopsis "Guile DBI driver for SQLite")
1372 (home-page "https://github.com/jkalbhenn/guile-dbd-sqlite3")
1373 (description
1374 "guile-dbi is a library for Guile that provides a convenient interface to
1375SQL databases. This package implements the interface for SQLite.")
1376 (license license:gpl2+)))
1377
406ef442
CB
1378(define-public guile-dbd-postgresql
1379 (let ((commit "e97589b6b018b206c901e4cc24db463407a4036b")
1380 (revision 0))
1381 (package
1382 (name "guile-dbd-postgresql")
1383 (version (string-append
1384 "2.1.6-" (number->string revision) "." (string-take commit 7)))
1385 (source
1386 (origin
1387 (method git-fetch)
1388 (uri (git-reference
b0e7b699 1389 (url "https://github.com/opencog/guile-dbi")
406ef442
CB
1390 (commit commit)))
1391 (file-name (git-file-name name version))
1392 (sha256
1393 (base32 "0n1gv9a0kdys10a4qmnrwvg5sydwb03880asri4gqdchcj3fimni"))))
1394 (build-system gnu-build-system)
1395 (arguments
1396 '(#:phases
1397 (modify-phases %standard-phases
1398 (add-after 'unpack 'chdir
1399 (lambda _
1400 ;; The upstream Git repository contains all the code, so change
1401 ;; to the relevant directory.
1402 (chdir "guile-dbd-postgresql")
1403 #t))
1404 (add-after 'chdir 'patch-src/Makefile.am
1405 (lambda* (#:key inputs #:allow-other-keys)
1406 (substitute* "src/Makefile.am"
1407 (("/usr/include")
1408 (string-append (assoc-ref inputs "postgresql") "/include")))
1409 #t))
1410 (add-after 'patch-src/Makefile.am 'patch-src
1411 (lambda _
1412 (substitute* "src/guile-dbd-postgresql.c"
1413 (("postgresql/libpq-fe\\.h") "libpq-fe.h"))
1414 #t)))))
1415 (native-inputs
1416 `(("pkg-config" ,pkg-config)
1417 ("automake" ,automake)
1418 ("autoconf" ,autoconf)
1419 ("perl" ,perl)
1420 ("libtool" ,libtool)
1421 ("guile-dbi-bootstrap" ,guile-dbi-bootstrap)))
1422 (inputs
1423 `(("postgresql" ,postgresql)
1424 ("zlib" ,zlib)))
1425 (synopsis "Guile DBI driver for PostgreSQL")
1426 (home-page
1427 "https://github.com/opencog/guile-dbi/tree/master/guile-dbd-postgresql")
1428 (description
1429 "@code{guile-dbi} is a library for Guile that provides a convenient
1430interface to SQL databases. This package implements the interface for
1431PostgreSQL.")
1432 (license license:gpl2+))))
1433
0791437f
RW
1434(define-public guile-config
1435 (package
1436 (name "guile-config")
aed0d0fd 1437 (version "0.4.2")
0791437f
RW
1438 (source
1439 (origin
1440 (method git-fetch)
1441 (uri (git-reference
1442 (url "https://gitlab.com/a-sassmannshausen/guile-config")
529d1d96 1443 (commit version)))
91e29547
AS
1444 (file-name (git-file-name name version))
1445 (sha256 (base32
aed0d0fd 1446 "09028ylbddjdp3d67zdjz3pnsjqz6zs2bfck5rr3dfaa0qjap40n"))))
0791437f
RW
1447 (build-system gnu-build-system)
1448 (native-inputs
1449 `(("autoconf" ,autoconf)
1450 ("automake" ,automake)
1451 ("pkg-config" ,pkg-config)
1452 ("texinfo" ,texinfo)))
b6bee63b 1453 (inputs `(("guile" ,guile-3.0)))
0791437f
RW
1454 (synopsis
1455 "Guile application configuration parsing library.")
1456 (description
1457 "Guile Config is a library providing a declarative approach to
1458application configuration specification. The library provides clean
1459configuration declaration forms, and processors that take care of:
1460configuration file creation; configuration file parsing; command-line
1461parameter parsing using getopt-long; basic GNU command-line parameter
1462generation (--help, --usage, --version); automatic output generation for the
1463above command-line parameters.")
1464 (home-page
1465 "https://gitlab.com/a-sassmannshausen/guile-config")
1466 (license license:gpl3+)))
1467
b6bee63b 1468(define-public guile2.2-config
0ac6b836
AS
1469 (package
1470 (inherit guile-config)
b6bee63b
LC
1471 (name "guile2.2-config")
1472 (inputs `(("guile" ,guile-2.2)
0ac6b836
AS
1473 ,@(alist-delete "guile" (package-inputs guile-config))))))
1474
b6bee63b
LC
1475(define-public guile3.0-config
1476 (deprecated-package "guile3.0-config" guile-config))
1477
0791437f
RW
1478(define-public guile-hall
1479 (package
1480 (name "guile-hall")
63fe1dc0 1481 (version "0.3.1")
0791437f 1482 (source
feb11b08
RW
1483 (origin
1484 (method git-fetch)
1485 (uri (git-reference
1486 (url "https://gitlab.com/a-sassmannshausen/guile-hall")
a3dfe052 1487 (commit version)))
63fe1dc0 1488 (file-name "guile-hall-0.3.1-checkout")
a3dfe052 1489 (sha256
63fe1dc0 1490 (base32 "1s24nigdra6rvclvy15l2aw00c3aq9vv8qwxylzs60darbl36206"))))
0791437f
RW
1491 (build-system gnu-build-system)
1492 (arguments
63bf0afd
AS
1493 `(#:modules
1494 ((ice-9 match)
1495 (ice-9 ftw)
1496 ,@%gnu-build-system-modules)
1497 #:phases
1498 (modify-phases
1499 %standard-phases
1500 (add-after 'install 'hall-wrap-binaries
1501 (lambda* (#:key inputs outputs #:allow-other-keys)
1502 (let* ((compiled-dir
1503 (lambda (out version)
1504 (string-append
1505 out "/lib/guile/" version "/site-ccache")))
1506 (uncompiled-dir
1507 (lambda (out version)
1508 (string-append
1509 out "/share/guile/site"
1510 (if (string-null? version) "" "/") version)))
1511 (dep-path
1512 (lambda (env modules path)
1513 (list env ":" 'prefix
1514 (cons modules
1515 (map (lambda (input)
1516 (string-append
1517 (assoc-ref inputs input)
1518 path))
1519 ,''("guile-config"))))))
1520 (out (assoc-ref outputs "out"))
1521 (bin (string-append out "/bin/"))
1522 (site (uncompiled-dir out "")))
1523 (match (scandir site)
1524 (("." ".." version)
1525 (for-each
1526 (lambda (file)
1527 (wrap-program
1528 (string-append bin file)
1529 (dep-path
1530 "GUILE_LOAD_PATH"
1531 (uncompiled-dir out version)
1532 (uncompiled-dir "" version))
1533 (dep-path
1534 "GUILE_LOAD_COMPILED_PATH"
1535 (compiled-dir out version)
1536 (compiled-dir "" version))))
1537 ,''("hall"))
1538 #t))))))))
0791437f 1539 (native-inputs
63bf0afd
AS
1540 `(("autoconf" ,autoconf)
1541 ("automake" ,automake)
1542 ("pkg-config" ,pkg-config)
1543 ("texinfo" ,texinfo)))
b6bee63b 1544 (inputs `(("guile" ,guile-3.0)))
0791437f 1545 (propagated-inputs
3c3e6620 1546 `(("guile-config" ,guile-config)))
0791437f
RW
1547 (synopsis "Guile project tooling")
1548 (description
3c3e6620
RW
1549 "Hall is a command-line application and a set of Guile libraries that
1550allow you to quickly create and publish Guile projects. It allows you to
1551transparently support the GNU build system, manage a project hierarchy &
1552provides tight coupling to Guix.")
1553 (home-page "https://gitlab.com/a-sassmannshausen/guile-hall")
06085fac 1554 (license license:gpl3+)))
0791437f 1555
b6bee63b 1556(define-public guile2.2-hall
df18ea6f
AS
1557 (package
1558 (inherit guile-hall)
b6bee63b
LC
1559 (name "guile2.2-hall")
1560 (inputs `(("guile" ,guile-2.2)
df18ea6f
AS
1561 ,@(alist-delete "guile" (package-inputs guile-hall))))
1562 (propagated-inputs
b6bee63b 1563 `(("guile-config" ,guile2.2-config)
df18ea6f
AS
1564 ,@(alist-delete "guile-config"
1565 (package-propagated-inputs guile-hall))))))
1566
b6bee63b
LC
1567(define-public guile3.0-hall
1568 (deprecated-package "guile3.0-hall" guile-hall))
1569
0791437f
RW
1570(define-public guile-ics
1571 (package
1572 (name "guile-ics")
1573 (version "0.2.0")
1574 (source (origin
1575 (method git-fetch)
1576 (uri (git-reference
1577 (url "https://github.com/artyom-poptsov/guile-ics")
1578 (commit (string-append "v" version))))
1579 (file-name (string-append name "-" version "-checkout"))
1580 (sha256
1581 (base32
6713589d
LC
1582 "0qjjvadr7gibdq9jvwkmlkb4afsw9n2shfj9phpiadinxk3p4m2g"))
1583 (modules '((guix build utils)))
1584 (snippet
1585 '(begin
1586 ;; Allow builds with Guile 3.0.
1587 (substitute* "configure.ac"
1588 (("^GUILE_PKG.*")
1589 "GUILE_PKG([3.0 2.2 2.0])\n"))
1590 #t))))
0791437f
RW
1591 (build-system gnu-build-system)
1592 (native-inputs
1593 `(("autoconf" ,autoconf-wrapper)
1594 ("automake" ,automake)
1595 ("texinfo" ,texinfo)
1596 ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
1597 ("gettext" ,gettext-minimal)
1598 ("pkg-config" ,pkg-config)))
b6bee63b 1599 (inputs `(("guile" ,guile-3.0) ("which" ,which)))
0791437f
RW
1600 (propagated-inputs `(("guile-lib" ,guile-lib)))
1601 (home-page "https://github.com/artyom-poptsov/guile-ics")
1602 (synopsis "Guile parser library for the iCalendar format")
1603 (description
1604 "Guile-ICS is an iCalendar (RFC5545) format parser library written in
1605pure Scheme. The library can be used to read and write iCalendar data.
1606
1607The library is shipped with documentation in Info format and usage examples.")
1608 (license license:gpl3+)))
1609
b6bee63b 1610(define-public guile2.2-ics
6713589d
LC
1611 (package
1612 (inherit guile-ics)
b6bee63b
LC
1613 (name "guile2.2-ics")
1614 (inputs `(("guile" ,guile-2.2)
6713589d 1615 ,@(alist-delete "guile" (package-inputs guile-ics))))
b6bee63b
LC
1616 (propagated-inputs `(("guile-lib" ,guile2.2-lib)))))
1617
1618(define-public guile3.0-ics
1619 (deprecated-package "guile3.0-ics" guile-ics))
6713589d 1620
0791437f
RW
1621(define-public guile-wisp
1622 (package
1623 (name "guile-wisp")
65610f73 1624 (version "1.0.2")
0791437f
RW
1625 (source (origin
1626 (method url-fetch)
1627 (uri (string-append "https://bitbucket.org/ArneBab/"
1628 "wisp/downloads/wisp-"
1629 version ".tar.gz"))
1630 (sha256
1631 (base32
65610f73 1632 "03pz7pj9jyallynhflp5s7qax8dj1fs8la434wrfgz7g1kgjnvf6"))))
0791437f
RW
1633 (build-system gnu-build-system)
1634 (arguments
1635 `(#:modules ((guix build gnu-build-system)
15218d4e 1636 ((guix build emacs-build-system) #:prefix emacs:)
0791437f 1637 (guix build utils)
15218d4e 1638 (guix build emacs-utils)
0791437f
RW
1639 (ice-9 rdelim)
1640 (ice-9 popen))
15218d4e
RW
1641 #:imported-modules (,@%gnu-build-system-modules
1642 (guix build emacs-build-system)
1643 (guix build emacs-utils))
0791437f
RW
1644 #:phases
1645 (modify-phases %standard-phases
b6bee63b
LC
1646 (add-after 'unpack 'support-guile-3.0
1647 (lambda _
1648 (substitute* "configure"
1649 (("_guile_versions_to_search=\"2.2")
1650 "_guile_versions_to_search=\"3.0 2.2"))
1651 #t))
0791437f
RW
1652 (add-before 'configure 'patch-/usr/bin/env
1653 (lambda _
1654 (substitute* "Makefile.in"
65610f73 1655 (("/usr/bin/env bash") (which "bash")))
0791437f
RW
1656 #t))
1657 ;; auto compilation breaks, but if we set HOME to /tmp,
1658 ;; that works ok
1659 (add-before 'check 'auto-compile-hacky-workaround
1660 (lambda _ (setenv "HOME" "/tmp") #t))
1661 (add-after 'install 'install-go-files
1662 (lambda* (#:key outputs inputs #:allow-other-keys)
1663 (let* ((out (assoc-ref outputs "out"))
1664 (effective (read-line
1665 (open-pipe* OPEN_READ
1666 "guile" "-c"
1667 "(display (effective-version))")))
1668 (module-dir (string-append out "/share/guile/site/"
1669 effective))
1670 (object-dir (string-append out "/lib/guile/" effective
1671 "/site-ccache"))
1672 (prefix (string-length module-dir)))
1673 ;; compile to the destination
1674 (for-each (lambda (file)
1675 (let* ((base (string-drop (string-drop-right file 4)
1676 prefix))
1677 (go (string-append object-dir base ".go")))
1678 (invoke "guild" "compile" "-L" module-dir
1679 file "-o" go)))
1680 (find-files module-dir "\\.scm$"))
15218d4e
RW
1681 #t)))
1682 (add-after 'install 'install-emacs-files
1683 (assoc-ref emacs:%standard-phases 'install))
1684 (add-after 'install-emacs-files 'compile-emacs-files
1685 (assoc-ref emacs:%standard-phases 'build))
1686 (add-after 'compile-emacs-files 'make-autoloads
1687 (assoc-ref emacs:%standard-phases 'make-autoloads)))))
17f90b67 1688 (home-page "https://www.draketo.de/english/wisp")
0791437f 1689 (inputs
b6bee63b 1690 `(("guile" ,guile-3.0)))
0791437f 1691 (native-inputs
15218d4e
RW
1692 `(("emacs" ,emacs-minimal)
1693 ("python" ,python)
0791437f
RW
1694 ("pkg-config" ,pkg-config)))
1695 (synopsis "Whitespace to lisp syntax for Guile")
1696 (description "Wisp is a syntax for Guile which provides a Python-like
1697whitespace-significant language. It may be easier on the eyes for some
1698users and in some situations.")
1699 (license license:gpl3+)))
1700
b6bee63b 1701(define-public guile2.2-wisp
b0b725ed
RW
1702 (package
1703 (inherit guile-wisp)
b6bee63b
LC
1704 (name "guile2.2-wisp")
1705 (inputs `(("guile" ,guile-2.2)))))
1706
1707(define-public guile3.0-wisp
1708 (deprecated-package "guile3.0-wisp" guile-wisp))
b0b725ed 1709
0791437f
RW
1710(define-public guile-sly
1711 (package
1712 (name "guile-sly")
1713 (version "0.1")
1714 (source (origin
1715 (method url-fetch)
1716 (uri (string-append "https://files.dthompson.us/sly/sly-"
1717 version ".tar.gz"))
1718 (sha256
1719 (base32
1720 "1svzlbz2vripmyq2kjh0rig16bsrnbkwbsm558pjln9l65mcl4qq"))
1721 (modules '((guix build utils)))
1722 (snippet
1723 '(begin
1724 (substitute* "configure"
1725 (("_guile_required_version=\"2.0.11\"")
1726 "_guile_required_version=\"2\"")
1727 (("ac_subst_vars='")
1728 "ac_subst_vars='GUILE_EFFECTIVE_VERSION\n"))
1729 (substitute* (find-files "." "Makefile.in")
1730 (("moddir = .*$")
1731 (string-append
1732 "moddir = "
1733 "$(prefix)/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n"))
1734 (("godir = .*$")
1735 (string-append
1736 "godir = "
1737 "$(prefix)/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")))
1738 #t))))
1739 (build-system gnu-build-system)
1740 (arguments
1741 '(#:configure-flags
1742 (list (string-append "--with-libfreeimage-prefix="
1743 (assoc-ref %build-inputs "freeimage"))
1744 (string-append "--with-libgslcblas-prefix="
1745 (assoc-ref %build-inputs "gsl")))))
1746 (native-inputs
1747 `(("pkg-config" ,pkg-config)))
1748 (propagated-inputs
1749 `(("guile-sdl" ,guile-sdl)
1750 ("guile-opengl" ,guile-opengl)))
1751 (inputs
1752 `(("guile" ,guile-2.2)
1753 ("gsl" ,gsl)
1754 ("freeimage" ,freeimage)
1755 ("mesa" ,mesa)))
1756 (synopsis "2D/3D game engine for GNU Guile")
1757 (description "Sly is a 2D/3D game engine written in Guile Scheme. Sly
1758features a functional reactive programming interface and live coding
1759capabilities.")
1760 (home-page "https://dthompson.us/projects/sly.html")
1761 (license license:gpl3+)))
1762
dfe277a5 1763(define-public g-golf
30d59b31
MR
1764 (let ((commit "84e894eb7945c3bcdf7f8d5135c1be3efa524c92")
1765 (revision "822"))
dfe277a5
VS
1766 (package
1767 (name "g-golf")
30d59b31
MR
1768 (version (git-version "0.1.0" revision commit))
1769 (source
1770 (origin
1771 (method git-fetch)
1772 (uri (git-reference
1773 (url "https://git.savannah.gnu.org/git/g-golf.git")
1774 (commit commit)))
1775 (file-name (git-file-name name version))
1776 (sha256
1777 (base32 "1pkcij65zy2lkip5yrfzj85nq17pp9mrf0d4sk6hpjqr4kd0bxd5"))))
dfe277a5
VS
1778 (build-system gnu-build-system)
1779 (native-inputs
1780 `(("autoconf" ,autoconf)
1781 ("automake" ,automake)
1782 ("texinfo" ,texinfo)
1783 ("gettext" ,gettext-minimal)
1784 ("libtool" ,libtool)
85fcceee
MR
1785 ("pkg-config" ,pkg-config)
1786 ("xorg-server" ,xorg-server)))
dfe277a5
VS
1787 (inputs
1788 `(("guile" ,guile-2.2)
85fcceee 1789 ("guile-lib" ,guile2.2-lib)
dfe277a5
VS
1790 ("clutter" ,clutter)
1791 ("gtk" ,gtk+)
1792 ("glib" ,glib)))
1793 (propagated-inputs
1794 `(("gobject-introspection" ,gobject-introspection)))
1795 (arguments
1796 `(#:phases
1797 (modify-phases %standard-phases
1798 (add-before 'configure 'tests-work-arounds
1799 (lambda* (#:key inputs #:allow-other-keys)
1800 ;; In build environment, There is no /dev/tty
1801 (substitute*
1802 "test-suite/tests/gobject.scm"
1803 (("/dev/tty") "/dev/null"))))
1804 (add-before 'configure 'substitute-libs
1805 (lambda* (#:key inputs outputs #:allow-other-keys)
1806 (let* ((get (lambda (key lib)
1807 (string-append (assoc-ref inputs key) "/lib/" lib)))
1808 (libgi (get "gobject-introspection" "libgirepository-1.0"))
1809 (libglib (get "glib" "libglib-2.0"))
1810 (libgobject (get "glib" "libgobject-2.0"))
1811 (libgdk (get "gtk" "libgdk-3")))
1812 (substitute* "configure"
1813 (("SITEDIR=\"\\$datadir/g-golf\"")
1814 "SITEDIR=\"$datadir/guile/site/$GUILE_EFFECTIVE_VERSION\"")
1815 (("SITECCACHEDIR=\"\\$libdir/g-golf/")
1816 "SITECCACHEDIR=\"$libdir/"))
1817 (substitute* "g-golf/init.scm"
1818 (("libgirepository-1.0") libgi)
1819 (("libglib-2.0") libglib)
1820 (("libgdk-3") libgdk)
1821 (("libgobject-2.0") libgobject)
1822 (("\\(dynamic-link \"libg-golf\"\\)")
1823 (format #f "~s"
1824 `(dynamic-link
1825 (format #f "~alibg-golf"
1826 (if (getenv "GUILE_GGOLF_UNINSTALLED")
1827 ""
1828 ,(format #f "~a/lib/"
1829 (assoc-ref outputs "out"))))))))
1830 (setenv "GUILE_AUTO_COMPILE" "0")
1831 (setenv "GUILE_GGOLF_UNINSTALLED" "1")
85fcceee
MR
1832 #t)))
1833 (add-before 'check 'start-xorg-server
1834 (lambda* (#:key inputs #:allow-other-keys)
1835 ;; The test suite requires a running X server.
1836 (system (format #f "~a/bin/Xvfb :1 &"
1837 (assoc-ref inputs "xorg-server")))
1838 (setenv "DISPLAY" ":1")
1839 #t)))))
dfe277a5
VS
1840 (home-page "https://www.gnu.org/software/g-golf/")
1841 (synopsis "Guile bindings for GObject Introspection")
1842 (description
1843 "G-Golf (Gnome: (Guile Object Library for)) is a library for developing
1844modern applications in Guile Scheme. It comprises a direct binding to the
1845GObject Introspection API and higher-level functionality for importing Gnome
1846libraries and making GObject classes (and methods) available in Guile's
1847object-oriented programming system, GOOPS.")
1848 (license license:lgpl3+))))
1849
0791437f
RW
1850(define-public g-wrap
1851 (package
1852 (name "g-wrap")
1853 (version "1.9.15")
1854 (source (origin
1855 (method url-fetch)
1856 (uri (string-append "mirror://savannah/g-wrap/g-wrap-"
1857 version ".tar.gz"))
1858 (sha256
1859 (base32
1860 "0ak0bha37dfpj9kmyw1r8fj8nva639aw5xr66wr5gd3l1rqf5xhg"))))
1861 (build-system gnu-build-system)
1862 (native-inputs
1863 `(("pkg-config" ,pkg-config)))
1864 (propagated-inputs
1865 `(("guile" ,guile-2.2)
1866 ("guile-lib" ,guile-lib)))
1867 (inputs
1868 `(("libffi" ,libffi)))
1869 (arguments
1870 `(#:configure-flags '("--disable-Werror")
1871 #:phases
1872 (modify-phases %standard-phases
1873 (add-before 'configure 'pre-configure
1874 (lambda* (#:key outputs #:allow-other-keys)
1875 (let ((out (assoc-ref outputs "out")))
1876 (substitute* (find-files "." "^Makefile.in$")
1877 (("guilemoduledir =.*guile/site" all)
1878 (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
1879 #t))))))
1880 (synopsis "Generate C bindings for Guile")
1881 (description "G-Wrap is a tool and Guile library for generating function
1882wrappers for inter-language calls. It currently only supports generating Guile
1883wrappers for C functions. Given a definition of the types and prototypes for
1884a given C interface, G-Wrap will automatically generate the C code that
1885provides access to that interface and its types from the Scheme level.")
1886 (home-page "https://www.nongnu.org/g-wrap/index.html")
1887 (license license:lgpl2.1+)))
1888
1889(define-public guile-miniadapton
1890 (let ((commit "1b5749422304567c96ac5367f2221dda9eff5880")
1891 (revision "1"))
1892 (package
1893 (name "guile-miniadapton")
1894 (version (string-append "0-" revision "." (string-take commit 9)))
1895 (source (origin
1896 (method git-fetch)
1897 (uri (git-reference
b0e7b699 1898 (url "https://github.com/fisherdj/miniAdapton")
0791437f
RW
1899 (commit commit)))
1900 (file-name (string-append name "-" version "-checkout"))
1901 (sha256
1902 (base32
1903 "09q51zkw2fypad5xixskfzw2cjhjgs5cswdp3i7cpp651rb3zndh"))))
1904 (build-system guile-build-system)
1905 (native-inputs
1906 `(("guile" ,guile-2.2)))
1907 (home-page "https://github.com/fisherdj/miniAdapton")
1908 (synopsis "Minimal implementation of incremental computation in Guile
1909Scheme")
1910 (description "This package provides a complete Scheme implementation of
1911miniAdapton, which implements the core functionality of the Adapton system for
1912incremental computation (also known as self-adjusting computation). Like
1913Adapton, miniAdapton allows programmers to safely combine mutation and
1914memoization. miniAdapton is built on top of an even simpler system,
1915microAdapton. Both miniAdapton and microAdapton are designed to be easy to
1916understand, extend, and port to host languages other than Scheme.")
1917 (license license:expat))))
1918
1919(define-public guile-reader
1920 (package
1921 (name "guile-reader")
a7c69419 1922 (version "0.6.3")
0791437f
RW
1923 (source (origin
1924 (method url-fetch)
1925 (uri (string-append "mirror://savannah/guile-reader/guile-reader-"
1926 version ".tar.gz"))
1927 (sha256
1928 (base32
a7c69419 1929 "1fyjckmygkhq22lq8nqc86yl5zzbqd7a944dnz5c1f6vx92b9hiq"))))
0791437f
RW
1930 (build-system gnu-build-system)
1931 (native-inputs `(("pkgconfig" ,pkg-config)
a7c69419 1932 ("gperf" ,gperf)))
c20e697e 1933 (inputs `(("guile" ,guile-3.0)))
0791437f
RW
1934 (synopsis "Framework for building readers for GNU Guile")
1935 (description
1936 "Guile-Reader is a simple framework for building readers for GNU Guile.
1937
1938The idea is to make it easy to build procedures that extend Guile’s read
1939procedure. Readers supporting various syntax variants can easily be written,
1940possibly by re-using existing “token readers” of a standard Scheme
1941readers. For example, it is used to implement Skribilo’s R5RS-derived
1942document syntax.
1943
1944Guile-Reader’s approach is similar to Common Lisp’s “read table”, but
1945hopefully more powerful and flexible (for instance, one may instantiate as
1946many readers as needed).")
1947 (home-page "https://www.nongnu.org/guile-reader/")
1948 (license license:gpl3+)))
1949
c20e697e
LC
1950(define-public guile2.2-reader
1951 (package
1952 (inherit guile-reader)
1953 (name "guile2.2-reader")
1954 (inputs `(("guile" ,guile-2.2)))))
1955
0791437f
RW
1956(define-public guile-ncurses
1957 (package
1958 (name "guile-ncurses")
2b155e3a 1959 (version "3.0")
0791437f
RW
1960 (source (origin
1961 (method url-fetch)
1962 (uri (string-append "mirror://gnu/guile-ncurses/guile-ncurses-"
1963 version ".tar.gz"))
1964 (sha256
1965 (base32
2b155e3a 1966 "038xbffalhymg26lvmzgf7ljilxz2f2zmqg5r5nfzbipfbprwjhf"))))
0791437f
RW
1967 (build-system gnu-build-system)
1968 (inputs `(("ncurses" ,ncurses)
b01a73b0 1969 ("guile" ,guile-3.0)))
0791437f
RW
1970 (native-inputs `(("pkg-config" ,pkg-config)))
1971 (arguments
3c566eba
MB
1972 `(#:modules ((guix build gnu-build-system)
1973 ((guix build guile-build-system)
1974 #:select (target-guile-effective-version))
1975 (guix build utils))
1976 #:imported-modules ((guix build guile-build-system)
1977 ,@%gnu-build-system-modules)
1978 #:configure-flags (list "--with-ncursesw" ; Unicode support
0791437f
RW
1979 "--with-gnu-filesystem-hierarchy")
1980 #:phases
1981 (modify-phases %standard-phases
1982 (add-before 'build 'fix-libguile-ncurses-file-name
1983 (lambda* (#:key outputs #:allow-other-keys)
1984 (invoke "make" "install"
1985 "-C" "src/ncurses"
1986 "-j" (number->string
1987 (parallel-job-count)))
1988 (let* ((out (assoc-ref outputs "out"))
1989 (dir "src/ncurses")
1990 (files (find-files dir ".scm")))
1991 (substitute* files
1992 (("\"libguile-ncurses\"")
3c566eba
MB
1993 (format #f "\"~a/lib/guile/~a/libguile-ncurses\""
1994 out (target-guile-effective-version))))
0791437f
RW
1995 #t))))))
1996 (home-page "https://www.gnu.org/software/guile-ncurses/")
1997 (synopsis "Guile bindings to ncurses")
1998 (description
1999 "guile-ncurses provides Guile language bindings for the ncurses
2000library.")
2001 (license license:lgpl3+)))
2002
b01a73b0 2003(define-public guile2.2-ncurses
3c566eba
MB
2004 (package
2005 (inherit guile-ncurses)
b01a73b0 2006 (name "guile2.2-ncurses")
3c566eba 2007 (inputs `(("ncurses" ,ncurses)
b01a73b0
RW
2008 ("guile" ,guile-2.2)))))
2009
2010(define-public guile3.0-ncurses
2011 (deprecated-package "guile3.0-ncurses" guile-ncurses))
3c566eba 2012
0791437f
RW
2013(define-public guile-ncurses/gpm
2014 (package
2015 (inherit guile-ncurses)
2016 (name "guile-ncurses-with-gpm")
2017 (inputs `(("ncurses" ,ncurses/gpm)
2018 ("guile" ,guile-2.2)))))
2019
87001355
MB
2020(define-public guile3.0-ncurses/gpm
2021 (package
2022 (inherit guile3.0-ncurses)
2023 (name "guile3.0-ncurses-with-gpm")
2024 (inputs `(("ncurses" ,ncurses/gpm)
2025 ("guile" ,guile-3.0)))))
2026
0791437f
RW
2027(define-public guile-lib
2028 (package
2029 (name "guile-lib")
2030 (version "0.2.6.1")
2031 (source (origin
2032 (method url-fetch)
2033 (uri (string-append "mirror://savannah/guile-lib/guile-lib-"
2034 version ".tar.gz"))
2035 (sha256
2036 (base32
675f1940
LC
2037 "0aizxdif5dpch9cvs8zz5g8ds5s4xhfnwza2il5ji7fv2h7ks7bd"))
2038 (modules '((guix build utils)))
2039 (snippet
2040 '(begin
2041 ;; Work around miscompilation on Guile 3.0.0 at -O2:
2042 ;; <https://bugs.gnu.org/39251>.
2043 (substitute* "src/md5.scm"
2044 (("\\(define f-ash ash\\)")
2045 "(define f-ash (@ (guile) ash))\n")
2046 (("\\(define f-add \\+\\)")
2047 "(define f-add (@ (guile) +))\n"))
2048 #t))))
0791437f
RW
2049 (build-system gnu-build-system)
2050 (arguments
2051 '(#:make-flags
2052 '("GUILE_AUTO_COMPILE=0") ; to prevent guild errors
2053 #:phases
2054 (modify-phases %standard-phases
2055 (add-before 'configure 'patch-module-dir
2056 (lambda _
2057 (substitute* "src/Makefile.in"
2058 (("^moddir = ([[:graph:]]+)")
2059 "moddir = $(datadir)/guile/site/@GUILE_EFFECTIVE_VERSION@\n")
2060 (("^godir = ([[:graph:]]+)")
2061 "godir = \
2062$(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))
2063 #t)))))
2064 (native-inputs `(("pkg-config" ,pkg-config)))
b6bee63b 2065 (inputs `(("guile" ,guile-3.0)))
0791437f
RW
2066 (home-page "https://www.nongnu.org/guile-lib/")
2067 (synopsis "Collection of useful Guile Scheme modules")
2068 (description
2069 "Guile-Lib is intended as an accumulation place for pure-scheme Guile
2070modules, allowing for people to cooperate integrating their generic Guile
2071modules into a coherent library. Think \"a down-scaled, limited-scope CPAN
2072for Guile\".")
2073
2074 ;; The whole is under GPLv3+, but some modules are under laxer
2075 ;; distribution terms such as LGPL and public domain. See `COPYING' for
2076 ;; details.
2077 (license license:gpl3+)))
2078
2079(define-public guile2.0-lib
2080 (package
2081 (inherit guile-lib)
2082 (name "guile2.0-lib")
2083 (inputs `(("guile" ,guile-2.0)))))
2084
b6bee63b 2085(define-public guile2.2-lib
675f1940
LC
2086 (package
2087 (inherit guile-lib)
b6bee63b
LC
2088 (name "guile2.2-lib")
2089 (inputs `(("guile" ,guile-2.2)))))
2090
2091(define-public guile3.0-lib
2092 (deprecated-package "guile3.0-lib" guile-lib))
675f1940 2093
0791437f
RW
2094(define-public guile-minikanren
2095 (package
2096 (name "guile-minikanren")
2097 (version "20150424.e844d85")
2098 (source (origin
2099 (method git-fetch)
2100 (uri (git-reference
b0e7b699 2101 (url "https://github.com/ijp/minikanren")
0791437f
RW
2102 (commit "e844d85512f8c055d3f96143ee506007389a25e3")))
2103 (file-name (string-append name "-" version "-checkout"))
2104 (sha256
2105 (base32
2106 "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6"))))
2107 (build-system guile-build-system)
2108 (native-inputs
b6bee63b 2109 `(("guile" ,guile-3.0)))
0791437f
RW
2110 (home-page "https://github.com/ijp/minikanren")
2111 (synopsis "MiniKanren declarative logic system, packaged for Guile")
2112 (description
2113 "MiniKanren is a relational programming extension to the Scheme
2114programming Language, written as a smaller version of Kanren suitable for
2115pedagogical purposes. It is featured in the book, The Reasoned Schemer,
2116written by Dan Friedman, William Byrd, and Oleg Kiselyov.
2117
2118This is Ian Price's r6rs packaged version of miniKanren, which deviates
2119slightly from miniKanren mainline.
2120
2121See http://minikanren.org/ for more on miniKanren generally.")
2122 (license license:expat)))
2123
2124(define-public guile2.0-minikanren
2125 (package
2126 (inherit guile-minikanren)
2127 (name "guile2.0-minikanren")
2128 (native-inputs `(("guile" ,guile-2.0)))))
2129
b6bee63b 2130(define-public guile2.2-minikanren
89a99d53
LC
2131 (package
2132 (inherit guile-minikanren)
b6bee63b
LC
2133 (name "guile2.2-minikanren")
2134 (native-inputs `(("guile" ,guile-2.2)))))
2135
2136(define-public guile3.0-minikanren
2137 (deprecated-package "guile3.0-minikanren" guile-minikanren))
89a99d53 2138
0791437f
RW
2139(define-public guile-irregex
2140 (package
2141 (name "guile-irregex")
2142 (version "0.9.6")
2143 (source (origin
2144 (method url-fetch)
2145 (uri (string-append
2146 "http://synthcode.com/scheme/irregex/irregex-"
2147 version ".tar.gz"))
2148 (sha256
2149 (base32
2150 "1ia3m7dp3lcxa048q0gqbiwwsyvn99baw6xkhb4bhhzn4k7bwyqq"))))
2151 (build-system guile-build-system)
2152 (arguments
2153 '(#:phases (modify-phases %standard-phases
2154 (add-after 'unpack 'move-files-around
2155 (lambda _
2156 ;; Move the relevant source files to src/ and create the
2157 ;; rx/ directory to match the expected module hierarchy.
2158 (mkdir-p "src/rx/source")
2159 (rename-file "irregex-guile.scm"
2160 "src/rx/irregex.scm")
2161 (rename-file "irregex.scm"
2162 "src/rx/source/irregex.scm")
2163 ;; Not really reachable via guile's packaging system,
2164 ;; but nice to have around.
2165 (rename-file "irregex-utils.scm"
2166 "src/rx/source/irregex-utils.scm")
2167 #t)))
2168 #:source-directory "src"))
2169 (native-inputs
b6bee63b 2170 `(("guile" ,guile-3.0)))
0791437f
RW
2171 (home-page "http://synthcode.com/scheme/irregex")
2172 (synopsis "S-expression based regular expressions")
2173 (description
2174 "Irregex is an s-expression based alternative to your classic
2175string-based regular expressions. It implements SRFI 115 and is deeply
2176inspired by the SCSH regular expression system.")
2177 (license license:bsd-3)))
2178
2179(define-public guile2.0-irregex
2180 (package
2181 (inherit guile-irregex)
2182 (name "guile2.0-irregex")
2183 (native-inputs `(("guile" ,guile-2.0)))))
2184
b6bee63b 2185(define-public guile2.2-irregex
89a99d53
LC
2186 (package
2187 (inherit guile-irregex)
b6bee63b
LC
2188 (name "guile2.2-irregex")
2189 (native-inputs `(("guile" ,guile-2.2)))))
2190
2191(define-public guile3.0-irregex
2192 (deprecated-package "guile3.0-irregex" guile-irregex))
89a99d53 2193
0791437f
RW
2194(define-public haunt
2195 (package
2196 (name "haunt")
2197 (version "0.2.4")
2198 (source (origin
2199 (method url-fetch)
2200 (uri (string-append "https://files.dthompson.us/haunt/haunt-"
2201 version ".tar.gz"))
2202 (sha256
2203 (base32
93d94134
LC
2204 "056z4znikk83nr5mr0x2ac3iinqbywa2bvb37mhr566a1q50isfc"))
2205 (modules '((guix build utils)))
2206 (snippet
2207 '(begin
2208 ;; Allow builds with Guile 3.0.
2209 (substitute* "configure"
2210 (("2\\.2 2\\.0")
2211 "3.0 2.2 2.0"))
2212 #t))))
0791437f
RW
2213 (build-system gnu-build-system)
2214 (arguments
2215 `(#:modules ((ice-9 match) (ice-9 ftw)
2216 ,@%gnu-build-system-modules)
2217 #:tests? #f ; test suite is non-deterministic :(
2218 #:phases (modify-phases %standard-phases
2219 (add-after 'install 'wrap-haunt
2220 (lambda* (#:key inputs outputs #:allow-other-keys)
2221 ;; Wrap the 'haunt' command to refer to the right
2222 ;; modules.
2223 (let* ((out (assoc-ref outputs "out"))
2224 (bin (string-append out "/bin"))
2225 (site (string-append
2226 out "/share/guile/site"))
93d94134
LC
2227 (guile-reader (assoc-ref inputs "guile-reader"))
2228 (deps `(,@(if guile-reader
2229 (list guile-reader)
2230 '())
2231 ,(assoc-ref inputs "guile-commonmark"))))
0791437f
RW
2232 (match (scandir site)
2233 (("." ".." version)
2234 (let ((modules (string-append site "/" version))
2235 (compiled-modules (string-append
2236 out "/lib/guile/" version
2237 "/site-ccache")))
2238 (wrap-program (string-append bin "/haunt")
2239 `("GUILE_LOAD_PATH" ":" prefix
2240 (,modules
2241 ,@(map (lambda (dep)
2242 (string-append dep
2243 "/share/guile/site/"
2244 version))
2245 deps)))
2246 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
2247 (,compiled-modules
2248 ,@(map (lambda (dep)
2249 (string-append dep "/lib/guile/"
2250 version
2251 "/site-ccache"))
2252 deps))))
2253 #t)))))))))
2254 (native-inputs
2255 `(("pkg-config" ,pkg-config)
2256 ("texinfo" ,texinfo)))
2257 (inputs
b6bee63b 2258 `(("guile" ,guile-3.0)))
0791437f 2259 (propagated-inputs
c20e697e 2260 `(("guile-reader" ,guile-reader)
0791437f
RW
2261 ("guile-commonmark" ,guile-commonmark)))
2262 (synopsis "Functional static site generator")
2263 (description "Haunt is a static site generator written in Guile
2264Scheme. Haunt features a functional build system and an extensible
2265interface for reading articles in any format.")
2266 (home-page "http://haunt.dthompson.us")
2267 (license license:gpl3+)))
2268
b6bee63b 2269(define-public guile2.2-haunt
93d94134
LC
2270 (package
2271 (inherit haunt)
b6bee63b
LC
2272 (name "guile2.2-haunt")
2273 (inputs `(("guile" ,guile-2.2)))
93d94134 2274 (propagated-inputs
c20e697e 2275 `(("guile-reader" ,guile2.2-reader)
b6bee63b 2276 ("guile-commonmark" ,guile2.2-commonmark)))))
93d94134 2277
0791437f
RW
2278(define-public guile2.0-haunt
2279 (package
2280 (inherit haunt)
2281 (name "guile2.0-haunt")
2282 (inputs `(("guile" ,guile-2.0)))))
2283
b6bee63b
LC
2284(define-public guile3.0-haunt
2285 (deprecated-package "guile3.0-haunt" haunt))
2286
0791437f
RW
2287(define-public guile-redis
2288 (package
2289 (name "guile-redis")
f57bf15c 2290 (version "1.3.0")
0791437f
RW
2291 (home-page "https://github.com/aconchillo/guile-redis")
2292 (source (origin
29fde3bf
EF
2293 (method git-fetch)
2294 (uri (git-reference
2295 (url home-page)
2296 (commit version)))
2297 (file-name (git-file-name name version))
0791437f
RW
2298 (sha256
2299 (base32
29fde3bf 2300 "14izs8daxh7pb7vwpxi5g427qa31137jkaxrb1cy5rpjkwchy723"))))
0791437f
RW
2301 (build-system gnu-build-system)
2302 (native-inputs
2303 `(("autoconf" ,autoconf)
2304 ("automake" ,automake)
2305 ("pkg-config" ,pkg-config)
24e38f24 2306 ("guile" ,guile-3.0)))
0791437f
RW
2307 (synopsis "Redis client library for Guile")
2308 (description "Guile-redis provides a Scheme interface to the Redis
2309key-value cache and store.")
2310 (license license:lgpl3+)))
2311
24e38f24
RW
2312(define-public guile2.2-redis
2313 (package
2314 (inherit guile-redis)
2315 (name "guile2.2-redis")
2316 (native-inputs `(("guile" ,guile-2.2)
2317 ,@(alist-delete "guile"
2318 (package-native-inputs guile-redis))))))
2319
0791437f
RW
2320(define-public guile2.0-redis
2321 (package
2322 (inherit guile-redis)
2323 (name "guile2.0-redis")
2324 (native-inputs `(("guile" ,guile-2.0)
2325 ,@(alist-delete "guile"
2326 (package-native-inputs guile-redis))))))
2327
0791437f
RW
2328(define-public guile-commonmark
2329 (package
2330 (name "guile-commonmark")
b552e307 2331 (version "0.1.2")
0791437f
RW
2332 (source (origin
2333 (method url-fetch)
2334 (uri (string-append "https://github.com/OrangeShark/" name
2335 "/releases/download/v" version
2336 "/" name "-" version ".tar.gz"))
2337 (sha256
2338 (base32
1fa34232
LC
2339 "17lrsdisa3kckh24q114vfmzdc4wkqa6ccwl4hdlrng5wpn1iman"))
2340 (modules '((guix build utils)))
2341 (snippet
2342 '(begin
2343 ;; Allow builds with Guile 3.0.
2344 (substitute* "configure"
2345 (("2\\.2 2\\.0")
2346 "3.0 2.2 2.0"))
2347 #t))))
0791437f
RW
2348 (build-system gnu-build-system)
2349 (inputs
b6bee63b 2350 `(("guile" ,guile-3.0)))
0791437f
RW
2351 (native-inputs
2352 `(("pkg-config" ,pkg-config)))
2353 (synopsis "CommonMark parser for Guile")
2354 (description
2355 "guile-commonmark is a library for parsing CommonMark, a fully specified
2356variant of Markdown. The library is written in Guile Scheme and is designed
2357to transform a CommonMark document to SXML. guile-commonmark tries to closely
2358follow the @uref{http://commonmark.org/, CommonMark spec}, the main difference
2359is no support for parsing block and inline level HTML.")
2360 (home-page "https://github.com/OrangeShark/guile-commonmark")
2361 (license license:lgpl3+)))
2362
b6bee63b 2363(define-public guile2.2-commonmark
1fa34232
LC
2364 (package
2365 (inherit guile-commonmark)
b6bee63b
LC
2366 (name "guile2.2-commonmark")
2367 (inputs `(("guile" ,guile-2.2)))))
1fa34232 2368
0791437f
RW
2369(define-public guile2.0-commonmark
2370 (package
2371 (inherit guile-commonmark)
2372 (name "guile2.0-commonmark")
2373 (inputs `(("guile" ,guile-2.0)))))
2374
b6bee63b
LC
2375(define-public guile3.0-commonmark
2376 (deprecated-package "guile3.0-commonmark" guile-commonmark))
2377
0791437f
RW
2378(define-public mcron
2379 (package
2380 (name "mcron")
8b3b1988 2381 (version "1.2.0")
0791437f
RW
2382 (source (origin
2383 (method url-fetch)
2384 (uri (string-append "mirror://gnu/mcron/mcron-"
2385 version ".tar.gz"))
2386 (sha256
2387 (base32
8b3b1988 2388 "1midrn15d5kqy4zd2029bj1db6gnfhxg8mcgfy4bkp5p9nl4v4rd"))))
0791437f
RW
2389 (build-system gnu-build-system)
2390 (arguments
2391 '(#:phases (modify-phases %standard-phases
0791437f
RW
2392 (add-before 'check 'adjust-tests
2393 (lambda _
2394 (substitute* "tests/job-specifier.scm"
2395 ;; (getpw) fails with "entry not found" in the build
2396 ;; environment, so pass an argument.
2397 (("\\(getpw\\)")
2398 "(getpwnam (getuid))")
2399 ;; The build environment lacks an entry for root in
2400 ;; /etc/passwd.
2401 (("\\(getpw 0\\)")
2402 "(getpwnam \"nobody\")")
2403
2404 ;; FIXME: Skip the 4 faulty tests (see above).
2405 (("\\(test-equal \"next-year\"" all)
2406 (string-append "(test-skip 4)\n" all)))
2407 #t)))))
30ebff69 2408 (native-inputs `(("pkg-config" ,pkg-config)
bbd9c9c9
LC
2409 ("tzdata" ,tzdata-for-tests)
2410 ("guile-native" ;for 'guild compile'
2411 ,@(assoc-ref (package-inputs this-package) "guile"))))
b6bee63b 2412 (inputs `(("guile" ,guile-3.0)))
0791437f
RW
2413 (home-page "https://www.gnu.org/software/mcron/")
2414 (synopsis "Run jobs at scheduled times")
2415 (description
2416 "GNU Mcron is a complete replacement for Vixie cron. It is used to run
2417tasks on a schedule, such as every hour or every Monday. Mcron is written in
2418Guile, so its configuration can be written in Scheme; the original cron
2419format is also supported.")
2420 (license license:gpl3+)))
2421
b6bee63b 2422(define-public guile2.2-mcron
3de0d20b
LC
2423 (package
2424 (inherit mcron)
b6bee63b
LC
2425 (name "guile2.2-mcron")
2426 (inputs `(("guile" ,guile-2.2)))))
2427
2428(define-public guile3.0-mcron
2429 (deprecated-package "guile3.0-mcron" mcron))
3de0d20b 2430
6bb5f88e 2431(define-public guile-picture-language
d1a3a8e1
RW
2432 (let ((commit "91d10c96708d732145006dd2802acc4de08b632e")
2433 (revision "1"))
6bb5f88e
RW
2434 (package
2435 (name "guile-picture-language")
d1a3a8e1 2436 (version (git-version "0.0.1" revision commit))
6bb5f88e
RW
2437 (source (origin
2438 (method git-fetch)
2439 (uri (git-reference
2440 (url "https://git.elephly.net/software/guile-picture-language.git")
2441 (commit commit)))
f1d4d79f 2442 (file-name (git-file-name name version))
6bb5f88e
RW
2443 (sha256
2444 (base32
d1a3a8e1
RW
2445 "1ydvw9dvssdvlvhh1dr8inyzy2x6m41qgp8hsivca1xysr4gc23a"))))
2446 (build-system gnu-build-system)
6bb5f88e 2447 (inputs
b6bee63b 2448 `(("guile" ,guile-3.0)))
d1a3a8e1
RW
2449 (native-inputs
2450 `(("autoconf" ,autoconf)
2451 ("automake" ,automake)
2452 ("imagemagick" ,imagemagick)
2453 ("pkg-config" ,pkg-config)
2454 ("texinfo" ,texinfo)))
6bb5f88e
RW
2455 (home-page "https://git.elephly.net/software/guile-picture-language.git")
2456 (synopsis "Picture language for Guile")
2457 (description
2458 "This package provides a simple SVG-based picture language for Guile.
2459The picture values can directly be displayed in Geiser.")
2460 (license license:lgpl3+))))
5531782d 2461
b6bee63b 2462(define-public guile2.2-picture-language
4f408684
LC
2463 (package
2464 (inherit guile-picture-language)
b6bee63b
LC
2465 (name "guile2.2-picture-language")
2466 (inputs `(("guile" ,guile-2.2)))))
2467
2468(define-public guile3.0-picture-language
2469 (deprecated-package "guile3.0-picture-language"
2470 guile-picture-language))
4f408684 2471
5531782d 2472(define-public guile-studio
0e7731ba 2473 (let ((commit "5c05b03e8a5c450f7358ceec7ea602f29c49d54e")
c6607797
RW
2474 (revision "1"))
2475 (package
2476 (name "guile-studio")
0e7731ba 2477 (version (git-version "0.0.3" revision commit))
c6607797
RW
2478 (source (origin
2479 (method git-fetch)
2480 (uri (git-reference
2481 (url "https://git.elephly.net/software/guile-studio.git")
2482 (commit commit)))
2483 (file-name (git-file-name name version))
2484 (sha256
2485 (base32
0e7731ba 2486 "11wyf6x7mhyhimv0cd57pl39zgav9hc9ljqi3g2g35b264hylpnx"))))
c6607797
RW
2487 (build-system gnu-build-system)
2488 (arguments
2489 `(#:modules
2490 ((ice-9 match)
2491 (srfi srfi-1)
2492 ,@%gnu-build-system-modules)
2493 #:tests? #f ; there are none
2494 #:make-flags
2495 (list (string-append "ICONS_DIR="
2496 (assoc-ref %build-inputs "adwaita-icon-theme")
2497 "/share/icons/Adwaita/")
2498 (string-append "PICT_DIR="
2499 (assoc-ref %build-inputs "guile-picture-language"))
2500 (string-append "EMACS_DIR="
2501 (assoc-ref %build-inputs "emacs"))
2502 (string-append "GUILE_DIR="
2503 (assoc-ref %build-inputs "guile"))
2504 (string-join (cons "INPUTS="
2505 (filter-map
2506 (lambda (input)
2507 (match input
2508 ((label . pkg)
2509 (and (string-prefix? "emacs" label) pkg))))
2510 %build-inputs)))
2511 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2512 #:phases
2513 (modify-phases %standard-phases
2514 (delete 'configure)
2515 (delete 'install))))
2516 (inputs
2517 `(("guile" ,guile-3.0)
2518 ("guile-picture-language" ,guile-picture-language)
2519 ("emacs" ,emacs)
2520 ("emacs-geiser" ,emacs-geiser)
2521 ("emacs-company" ,emacs-company)
2522 ("emacs-flycheck" ,emacs-flycheck)
0e7731ba 2523 ("emacs-flycheck-guile" ,emacs-flycheck-guile)
c6607797
RW
2524 ("emacs-smart-mode-line" ,emacs-smart-mode-line)
2525 ("emacs-paren-face" ,emacs-paren-face)
2526 ("adwaita-icon-theme" ,adwaita-icon-theme)))
2527 (native-inputs
2528 `(("texinfo" ,texinfo)))
2529 (home-page "https://gnu.org/software/guile")
2530 (synopsis "IDE for Guile")
2531 (description
2532 "This is Emacs with a few settings that make working with Guile easier
5531782d
RW
2533for people new to Emacs. Features include: CUA mode, Geiser, tool bar icons
2534to evaluate Guile buffers, support for Guile's very own picture language, code
2535completion, a simple mode line, etc.")
c6607797 2536 (license license:gpl3+))))
9f8698ad
RW
2537
2538(define-public guile-stis-parser
3a71dac0
MB
2539 (package
2540 (name "guile-stis-parser")
2541 (version "1.2.4.1")
2542 (source (origin
2543 (method git-fetch)
2544 (uri (git-reference
2545 (url "https://gitlab.com/tampe/stis-parser")
2546 (commit (string-append "v" version))))
2547 (file-name (git-file-name name version))
2548 (sha256
2549 (base32
2550 "1fvxdfvc80zqhwzq5x3kxyr6j8p4b51yx85fx1gr3d4gy2ddpx5w"))))
2551 (build-system gnu-build-system)
2552 (arguments
2553 `(#:parallel-build? #f ; not supported
2554 #:phases
2555 (modify-phases %standard-phases
2556 (add-after 'unpack 'chdir
2557 (lambda _ (chdir "modules") #t))
2558 (add-after 'chdir 'delete-broken-symlink
2559 (lambda _
2560 (delete-file "parser/stis-parser/lang/.#calc.scm")
2561 #t)))))
2562 (inputs
2563 `(("guile" ,guile-3.0)))
2564 (native-inputs
2565 `(("autoconf" ,autoconf)
2566 ("automake" ,automake)
2567 ("pkg-config" ,pkg-config)))
2568 (home-page "https://gitlab.com/tampe/stis-parser")
2569 (synopsis "Parser combinator framework")
2570 (description
2571 "This package provides a functional parser combinator library that
9f8698ad
RW
2572supports backtracking and a small logical framework. The idea is to build up
2573chunks that are memoized and there is no clear scanner/parser separation,
2574chunks can be expressions as well as simple tokens.")
3a71dac0 2575 (license license:lgpl2.0+)))
12d73f9c
RW
2576
2577(define-public guile-persist
09f0bc87
MB
2578 (package
2579 (name "guile-persist")
2580 (version "1.2.3")
2581 (source (origin
2582 (method git-fetch)
2583 (uri (git-reference
2584 (url "https://gitlab.com/tampe/guile-persist")
2585 (commit (string-append "v" version))))
2586 (file-name (git-file-name name version))
2587 (sha256
2588 (base32
2589 "19f8hqcax4v40858kx2j8fy1cvzc2djj99r0n17dy1xxmwa097qi"))))
2590 (build-system gnu-build-system)
2591 (arguments
2592 `(#:phases
2593 (modify-phases %standard-phases
2594 (add-after 'unpack 'patch-prefix
2595 (lambda* (#:key inputs outputs #:allow-other-keys)
2596 (substitute* "src/Makefile.am"
2597 (("/usr/local/lib/guile")
2598 (string-append (assoc-ref outputs "out") "/lib/guile"))
2599 (("/usr/local/include/guile")
2600 (string-append (assoc-ref inputs "guile") "/include/guile"))
2601 (("-L/usr/local/lib")
2602 (string-append "-L" (assoc-ref inputs "guile") "/lib")))
2603 #t))
2604 (add-after 'unpack 'patch-library-reference
2605 (lambda* (#:key outputs #:allow-other-keys)
2606 (let ((out (assoc-ref outputs "out")))
2607 (substitute* "persist/persistance.scm"
2608 (("\"libguile-persist\"")
2609 (format #f "\"~a/lib/guile/3.0/extensions/libguile-persist\"" out)))
2610 #t))))))
2611 (inputs
2612 `(("guile" ,guile-3.0)))
2613 (native-inputs
2614 `(("autoconf" ,autoconf)
2615 ("automake" ,automake)
2616 ("libtool" ,libtool)
2617 ("pkg-config" ,pkg-config)))
2618 (home-page "https://gitlab.com/tampe/guile-persist")
2619 (synopsis "Persistence programming framework for Guile")
2620 (description
2621 "This is a serialization library for serializing objects like classes
12d73f9c
RW
2622and objects, closures and structs. This currently does not support
2623serializing continuations or delimited continuations.")
09f0bc87 2624 (license license:lgpl2.0+)))
6d37301b
RW
2625
2626(define-public python-on-guile
ac944584
MB
2627 (package
2628 (name "python-on-guile")
cdf6a118 2629 (version "1.2.3.5")
ac944584
MB
2630 (home-page "https://gitlab.com/python-on-guile/python-on-guile")
2631 (source (origin
2632 (method git-fetch)
2633 (uri (git-reference (url home-page)
2634 (commit (string-append "v" version))))
2635 (file-name (git-file-name name version))
2636 (sha256
2637 (base32
cdf6a118 2638 "05xrvcj6a4gzq1ybyin270qz8wamgc7w2skyi9iy6hkpgdhxy8vf"))))
ac944584
MB
2639 (build-system gnu-build-system)
2640 (arguments
2641 `(#:parallel-build? #f ;not supported
2642 #:make-flags '("GUILE_AUTO_COMPILE=0") ;to prevent guild warnings
2643 #:phases
2644 (modify-phases %standard-phases
2645 (add-after 'unpack 'chdir
2646 (lambda _ (chdir "modules") #t))
2647 (add-after 'chdir 'augment-GUILE_LOAD_PATH
2648 (lambda _
2649 ;; TODO: It would be better to patch the Makefile.
2650 (setenv "GUILE_LOAD_PATH"
2651 (string-append ".:"
2652 (getenv "GUILE_LOAD_PATH")))
2653 #t))
2654 (add-after 'install 'wrap
2655 (lambda* (#:key outputs #:allow-other-keys)
2656 ;; Wrap the 'python' executable so it can find its
862d6a91
MB
2657 ;; dependencies and own modules.
2658 (let* ((out (assoc-ref outputs "out"))
2659 (guile-version ,(version-major+minor
2660 (package-version guile-3.0)))
2661 (scm (string-append out "/share/guile/site/"
2662 guile-version))
2663 (ccache (string-append out "/lib/guile/" guile-version
2664 "/site-ccache"))
2665 (load-path (string-join
2666 (cons scm
2667 ;; XXX: cdr because we augment it above.
2668 (cdr (string-split
2669 (getenv "GUILE_LOAD_PATH") #\:)))
2670 ":"))
2671 (compiled-path (string-append
2672 ccache ":"
2673 (getenv "GUILE_LOAD_COMPILED_PATH"))))
ac944584
MB
2674 (wrap-program (string-append out "/bin/python")
2675 `("GUILE_LOAD_PATH" ":" prefix
862d6a91 2676 (,load-path))
ac944584 2677 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
862d6a91 2678 (,compiled-path)))
ac944584
MB
2679 #t))))))
2680 (inputs
4f33bf57
MB
2681 `(("guile" ,guile-3.0)
2682 ("guile-persist" ,guile-persist)
ac944584
MB
2683 ("guile-readline" ,guile-readline)
2684 ("guile-stis-parser" ,guile-stis-parser)))
2685 (native-inputs
2686 `(("autoconf" ,autoconf)
2687 ("automake" ,automake)
2688 ("libtool" ,libtool)
2689 ("pkg-config" ,pkg-config)))
2690 (synopsis "Python implementation in Guile")
2691 (description
2692 "This package allows you to compile a Guile Python file to any target
6d37301b 2693from @code{tree-il}.")
ac944584 2694 (license license:lgpl2.0+)))
b97b4624
RW
2695
2696(define-public guile-file-names
2697 (package
2698 (name "guile-file-names")
72a0706f 2699 (version "0.3")
b97b4624
RW
2700 (source (origin
2701 (method url-fetch)
2702 (uri (string-append "http://brandon.invergo.net/software/download/"
2703 "guile-file-names/guile-file-names-"
2704 version ".tar.gz"))
2705 (sha256
2706 (base32
72a0706f 2707 "01chizdxkhw6aqv629vxka9f5x3534ij7r0jqndawsg2vxm1r9sz"))))
b97b4624
RW
2708 (build-system gnu-build-system)
2709 (arguments
2710 `(#:phases
2711 (modify-phases %standard-phases
481eca80 2712 (add-after 'unpack 'fix-target-directory
b97b4624 2713 (lambda _
481eca80 2714 (substitute* "src/Makefile.in"
b97b4624
RW
2715 (("guilemoddir = \\$\\(GUILE_SITE\\)")
2716 "guilemoddir = $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
2717 #t)))))
2718 (inputs
2719 `(("guile" ,guile-2.2)))
2720 (native-inputs
2721 `(("pkg-config" ,pkg-config)))
2722 (home-page "https://gitlab.com/brandoninvergo/guile-file-names")
2723 (synopsis "Manipulate file names")
2724 (description
2725 "The @code{(file-names)} module provides tools for manipulating file
2726names. The module was built on the idea that doing anything more than a
2727non-trivial modification of a file name string is a pain (making sure all
2728slashes are present and accounted for, resolving @code{.} and @code{..}, etc).
2729Inevitably, you have to break the string up into chunks and operate on that
2730list of components. This module takes care of that for you.")
2731 (license license:lgpl3+)))
bdf2dd79
JN
2732
2733(define-public guile-gi
bb6c8f20
RW
2734 (package
2735 (name "guile-gi")
c67db509 2736 (version "0.3.0")
bb6c8f20
RW
2737 (source (origin
2738 (method url-fetch)
2739 (uri (string-append "http://lonelycactus.com/tarball/guile_gi-"
2740 version ".tar.gz"))
2741 (sha256
2742 (base32
c67db509 2743 "05xbwrk50h4f9fh8la8fk2wsxbnm0jcyb9phnpkkjq4sqkhkxlbj"))))
e4ef0d7c 2744 (build-system glib-or-gtk-build-system)
bb6c8f20 2745 (arguments
b5d4d5b9 2746 `(#:configure-flags '("--with-gnu-filesystem-hierarchy")
e4ef0d7c 2747 #:modules ((guix build glib-or-gtk-build-system)
a431a635
RW
2748 (guix build utils)
2749 (ice-9 popen)
2750 (ice-9 rdelim))
b5d4d5b9
RW
2751 #:phases
2752 (modify-phases %standard-phases
a431a635
RW
2753 (add-after 'unpack 'patch-references-to-extension
2754 (lambda* (#:key outputs #:allow-other-keys)
2755 (let ((effective (read-line
2756 (open-pipe* OPEN_READ
2757 "guile" "-c"
2758 "(display (effective-version))"))))
2759 (substitute* '("module/gi.scm"
2760 "module/gi/oop.scm"
2761 "module/gi/documentation.scm"
2762 "module/gi/types.scm"
2763 "module/gi/repository.scm")
2764 (("\\(load-extension \"libguile-gi\" \"(.*)\"\\)" m arg)
2765 (format #f "~s"
2766 `(load-extension
2767 (format #f "~alibguile-gi"
2768 (if (getenv "GUILE_GI_UNINSTALLED")
2769 ""
e4ef0d7c 2770 ,(format #f "~a/lib/guile/~a/extensions/"
a431a635
RW
2771 (assoc-ref outputs "out")
2772 effective)))
2773 ,arg)))))
2774 (setenv "GUILE_GI_UNINSTALLED" "1")
2775 #t))
b5d4d5b9
RW
2776 (add-before 'check 'start-xorg-server
2777 (lambda* (#:key inputs #:allow-other-keys)
2778 ;; The init_check test requires a running X server.
2779 (system (format #f "~a/bin/Xvfb :1 &"
2780 (assoc-ref inputs "xorg-server")))
2781 (setenv "DISPLAY" ":1")
2782 #t)))))
bb6c8f20 2783 (native-inputs
f2d97d57 2784 `(("gettext" ,gettext-minimal)
6153fa0a 2785 ("glib:bin" ,glib "bin") ; for glib-compile-resources
bb6c8f20 2786 ("libtool" ,libtool)
b5d4d5b9
RW
2787 ("pkg-config" ,pkg-config)
2788 ("xorg-server" ,xorg-server)))
bb6c8f20
RW
2789 (propagated-inputs
2790 `(("glib" ,glib)
2791 ("gobject-introspection" ,gobject-introspection)
2792 ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)
2793 ("gtk+" ,gtk+)
2794 ("guile-lib" ,guile-lib)
2795 ("webkitgtk" ,webkitgtk)))
b6bee63b 2796 (inputs `(("guile" ,guile-3.0)))
bb6c8f20
RW
2797 (home-page "https://github.com/spk121/guile-gi")
2798 (synopsis "GObject bindings for Guile")
2799 (description
2800 "Guile-GI is a library for Guile that allows using GObject-based
bdf2dd79
JN
2801libraries, such as GTK+3. Its README comes with the disclaimer: This is
2802pre-alpha code.")
bb6c8f20 2803 (license license:gpl3+)))
dec4b3aa 2804
b6bee63b 2805(define-public guile2.2-gi
bfb51f5e
RW
2806 (package
2807 (inherit guile-gi)
b6bee63b 2808 (name "guile2.2-gi")
3d633a1e 2809 (inputs
b6bee63b 2810 `(("guile" ,guile-2.2)
3d633a1e 2811 ,@(alist-delete "guile" (package-inputs guile-gi))))))
bfb51f5e 2812
b6bee63b
LC
2813(define-public guile3.0-gi
2814 (deprecated-package "guile3.0-gi" guile-gi))
2815
fb6b9f3b
MB
2816(define-public guile-srfi-89
2817 (package
2818 (name "guile-srfi-89")
2819 (version "0.0.1")
2820 (source
2821 (origin
2822 (method git-fetch)
2823 (uri (git-reference
2824 (url "https://gitlab.com/mjbecze/guile-srfi-89.git")
2825 (commit version)))
2826 (sha256
2827 (base32
2828 "1981c0rrzxqx3md9jx8ir7j3m2mzg9m72b33p5jvw36zirbzpl20"))
2829 (file-name (git-file-name name version))))
2830 (build-system guile-build-system)
2831 (native-inputs
2832 `(("guile" ,guile-3.0)))
2833 (home-page "https://gitlab.com/mjbecze/guile-srfi-89")
2834 (synopsis "Hygienic implementation of SRFI-89 for Guile")
2835 (description
2836 "This package provides SRFI-89 optional positional and named
2837parameters, which define* and lambda* special forms")
2838 (license license:gpl3+)))
2839
7afbaefe
MB
2840(define-public guile-srfi-145
2841 (package
2842 (name "guile-srfi-145")
2843 (version "0.0.1")
2844 (source
2845 (origin
2846 (method git-fetch)
2847 (uri (git-reference
2848 (url "https://gitlab.com/mjbecze/guile-srfi-145.git")
2849 (commit version)))
2850 (sha256
2851 (base32
2852 "1gssa8cmcp8640fil9z8dpil8v5l279wlalqjcx3fls5jwv13q1b"))
2853 (file-name (git-file-name name version))))
2854 (build-system guile-build-system)
2855 (native-inputs
2856 `(("guile" ,guile-3.0)))
2857 (home-page "https://gitlab.com/mjbecze/guile-srfi-145")
2858 (synopsis "SRFI-145 port for Guile")
2859 (description
2860 "This package provides SRFI-145. This provides the means to
2861denote the invalidity of certain code paths in a Scheme program.")
2862 (license license:gpl3+)))
2863
e0607093
MB
2864(define-public guile-srfi-158
2865 (package
2866 (name "guile-srfi-158")
2867 (version "0.0.1")
2868 (source
2869 (origin
2870 (method git-fetch)
2871 (uri (git-reference
2872 (url "https://gitlab.com/mjbecze/guile-srfi-158.git")
2873 (commit version)))
2874 (sha256
2875 (base32
2876 "0b8hlv1bldbcwkcxi9y8mm6xp5gbgpg7b15bwqxv70iynl9d9a7c"))
2877 (file-name (git-file-name name version))))
2878 (build-system gnu-build-system)
2879 (native-inputs
2880 `(("autoconf" ,autoconf)
2881 ("automake" ,automake)
2882 ("pkg-config" ,pkg-config)))
2883 (inputs
2884 `(("guile" ,guile-3.0)))
2885 (home-page "https://gitlab.com/samplet/guile-srfi-158")
2886 (synopsis "SRFI 158 (Generators and Accumulators) for Guile")
2887 (description "This package provides an implementation of SRFI 158
2888for Guile. SRFI 158 defines utility procedures that create,
2889transform, and consume generators. It also defines procedures that
2890return accumulators. It is implemented by wrapping the sample
2891implementation in a thin Guile compatibility layer.")
2892 (license license:gpl3+)))
2893
dec4b3aa
LC
2894(define-public guile-srfi-159
2895 (let ((commit "1bd98abda2ae4ef8f36761a167903e55c6bda7bb")
2896 (revision "0"))
2897 (package
2898 (name "guile-srfi-159")
2899 (version (git-version "0" revision commit))
2900 (home-page "https://bitbucket.org/bjoli/guile-srfi-159")
2901 (source (origin
2902 (method hg-fetch)
2903 (uri (hg-reference (changeset commit)
2904 (url home-page)))
2905 (sha256
2906 (base32
2907 "1zw6cmcy7xdbfiz3nz9arqnn7l2daidaps6ixkcrc9b6k51fdv3p"))
2908 (file-name (git-file-name name version))))
2909 (build-system guile-build-system)
2910 (arguments
2911 ;; The *-impl.scm files are actually included from module files; they
2912 ;; should not be compiled separately, but they must be installed.
2913 '(#:not-compiled-file-regexp "-impl\\.scm$"))
2914 (inputs
2915 `(("guile" ,guile-2.2)))
2916 (synopsis "Formatting combinators for Guile")
2917 (description
2918 "The @code{(srfi-159)} module and its sub-modules implement the
2919formatting combinators specified by
2920@uref{https://srfi.schemers.org/srfi-159/srfi-159.html, SRFI-159}. These are
2921more expressive and flexible than the traditional @code{format} procedure.")
2922 (license license:bsd-3))))
f0de9544 2923
08a8872f
MB
2924(define-public guile-srfi-180
2925 (let ((commit "9188bf9724c6d320ef804579d222e855b007b193")
2926 (revision "0"))
2927 (package
2928 (name "guile-srfi-180")
2929 (version (git-version "0" revision commit))
2930 (source
2931 (origin
2932 (method git-fetch)
2933 (uri (git-reference
2934 (url "https://github.com/scheme-requests-for-implementation/srfi-180.git")
2935 (commit commit)))
2936 (sha256
2937 (base32
2938 "08lf70rsak8mwfij55xc37pg9zg7c87fizmhz7ln46skzj68sl3y"))
2939 (modules '((guix build utils)))
2940 (snippet
2941 '(begin
2942 (delete-file-recursively "srfi/files")
2943 (delete-file "srfi/run-r7rs-checks.guile.scm")
2944 (delete-file "srfi/run-r7rs-checks.scm")
2945 (delete-file "srfi/check.scm")
2946 #t))
2947 (file-name (git-file-name name version))))
2948 (build-system guile-build-system)
2949 (arguments
2950 '(#:not-compiled-file-regexp "body\\.scm$"))
2951 (native-inputs
2952 `(("guile" ,guile-3.0)))
2953 (propagated-inputs
2954 `(("guile-srfi-145" ,guile-srfi-145)))
2955 (home-page "https://srfi.schemers.org/srfi-180/")
2956 (synopsis "JSON parser and printer for Guile")
2957 (description
2958 "This library implements a JavaScript Object Notation (JSON) parser and printer.
2959It also supports parsing JSON objects that may be bigger than memory with a streaming
2960API.")
2961 (license license:expat))))
2962
f0de9544 2963(define-public emacsy
48eb71ae
JN
2964 (package
2965 (name "emacsy")
2966 (version "0.4.1")
2967 (source (origin
2968 (method url-fetch)
2969 (uri (string-append
2970 "https://download.savannah.nongnu.org/releases/"
2971 name "/" name "-" version ".tar.gz"))
2972 (sha256
2973 (base32
2974 "1cpb85dl1nibd34c2x2h7vfmjpkgh353p5b1w20v6cs6gmvgg4np"))))
2975 (build-system gnu-build-system)
2976 (native-inputs
2977 `(("autoconf" ,autoconf)
2978 ("automake" ,automake)
2979 ("bzip2" ,bzip2)
2980 ("guile" ,guile-2.2)
f2d97d57 2981 ("gettext" ,gettext-minimal)
48eb71ae
JN
2982 ("libtool" ,libtool)
2983 ("perl" ,perl)
2984 ("pkg-config" ,pkg-config)
2985 ("texinfo" ,texinfo)
1aa026aa 2986 ("texlive" ,(texlive-union (list texlive-generic-epsf)))))
114f02ba 2987 (inputs
48eb71ae
JN
2988 `(("dbus-glib" ,dbus-glib)
2989 ("guile" ,guile-2.2)
2990 ("guile-lib" ,guile-lib)
2991 ("guile-readline" ,guile-readline)
48eb71ae 2992 ("freeglut" ,freeglut)
48eb71ae 2993 ("webkitgtk" ,webkitgtk)))
114f02ba
AS
2994 (propagated-inputs
2995 `(("glib-networking" ,glib-networking)
2996 ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)))
48eb71ae 2997 (arguments
114f02ba
AS
2998 `(#:modules ((guix build gnu-build-system)
2999 (guix build utils)
3000 (ice-9 popen)
3001 (ice-9 rdelim)
3002 (ice-9 regex)
3003 (ice-9 ftw)
3004 (srfi srfi-26))
3005 #:phases
48eb71ae
JN
3006 (modify-phases %standard-phases
3007 (add-before 'configure 'setenv
3008 (lambda _
3009 (setenv "GUILE_AUTO_COMPILE" "0")
114f02ba
AS
3010 #t))
3011 (add-after 'install 'wrap-binaries
3012 (lambda* (#:key inputs outputs #:allow-other-keys)
3013 (let* ((out (assoc-ref outputs "out"))
3014 (effective (read-line
3015 (open-pipe* OPEN_READ
3016 "guile" "-c"
3017 "(display (effective-version))")))
3018 (deps (map (cut assoc-ref inputs <>)
3019 '("guile-lib" "guile-readline")))
3020 (scm-path (map (cut string-append <> "/share/guile/site/"
3021 effective) `(,out ,@deps)))
3022 (go-path (map (cut string-append <> "/lib/guile/" effective
3023 "/site-ccache/") `(,out ,@deps)))
3024 (examples (filter (cut string-match "emacsy" <>)
3025 (scandir (string-append out "/bin/"))))
3026 (progs (map (cut string-append out "/bin/" <>)
3027 examples)))
3028 (map (cut wrap-program <>
3029 `("GUILE_LOAD_PATH" ":" prefix ,scm-path)
3030 `("GUILE_LOAD_COMPILED_PATH" ":" prefix ,go-path))
3031 progs)
3032 #t))))))
48eb71ae
JN
3033 (home-page "https://savannah.nongnu.org/projects/emacsy")
3034 (synopsis "Embeddable GNU Emacs-like library using Guile")
3035 (description
3036 "Emacsy is an embeddable Emacs-like library that uses GNU Guile
f0de9544
JN
3037as extension language. Emacsy can give a C program an Emacsy feel with
3038keymaps, minibuffer, recordable macros, history, tab completion, major
3039and minor modes, etc., and can also be used as a pure Guile library. It
48eb71ae
JN
3040comes with a simple counter example using FreeGLUT and browser examples
3041in C using Gtk+-3 and WebKitGtk.")
3042 (license license:gpl3+)))
2135610c 3043
c99f32b9 3044(define-public emacsy-minimal
bdcb287e 3045 (let ((commit "v0.4.1-31-g415d96f"))
c99f32b9
AS
3046 (package
3047 (inherit emacsy)
3048 (name "emacsy-minimal")
9da87078 3049 (version (string-drop commit 1))
bdcb287e
MR
3050 (source
3051 (origin
3052 (method git-fetch)
3053 (uri (git-reference
3054 (url "https://git.savannah.gnu.org/git/emacsy.git")
3055 (commit commit)))
3056 (file-name (git-file-name name version))
3057 (sha256
3058 (base32 "1cs1i1hxwrv0a512j54yrvfh743nci1chx6qjgp4jyzq98ncvxgg"))))
c99f32b9
AS
3059 (build-system gnu-build-system)
3060 (inputs
3061 `(("guile" ,guile-2.2)
8d6ead32
MR
3062 ("guile-lib" ,guile2.2-lib)
3063 ("guile-readline" ,guile2.2-readline)))
c99f32b9
AS
3064 (propagated-inputs '())
3065 (arguments
3066 `(#:configure-flags '("--without-examples")
3067 #:phases
3068 (modify-phases %standard-phases
bdcb287e
MR
3069 (add-before 'configure 'setenv
3070 (lambda _
3071 (setenv "GUILE_AUTO_COMPILE" "0")
3072 #t))))))))
c99f32b9 3073
2135610c
LC
3074(define-public guile-jpeg
3075 (let ((commit "6a1673578b297c2c1b28e44a76bd5c49e76a5046")
3076 (revision "0"))
3077 (package
3078 (name "guile-jpeg")
3079 (version (git-version "0.0" revision commit))
3080 (home-page "https://gitlab.com/wingo/guile-jpeg")
3081 (source (origin
3082 (method git-fetch)
3083 (uri (git-reference (url home-page)
3084 (commit commit)))
3085 (sha256
3086 (base32
3087 "05z9m408w3h6aqb5k3r3qa7khir0k10rxwvsrzhkcq1hr5vbmr4m"))
3088 (file-name (git-file-name name version))
3089 (modules '((guix build utils)))
3090 (snippet
3091 '(begin
3092 ;; Install .go files in the right place.
3093 (substitute* "Makefile.am"
3094 (("/ccache") "/site-ccache"))
3095 #t))))
3096 (build-system gnu-build-system)
3097 (native-inputs
3098 `(("autoconf" ,autoconf)
3099 ("automake" ,automake)
3100 ("pkg-config" ,pkg-config)
3101 ("guile" ,guile-2.2)))
3102 (synopsis "JPEG file parsing library for Guile")
3103 (description
3104 "Guile-JPEG is a Scheme library to parse JPEG image files and to
3105perform geometrical transforms on JPEG images.")
3106 (license license:gpl3+))))
e8c2da41
AS
3107
3108(define-public nomad
3109 (package
3110 (name "nomad")
0e5a68a2 3111 (version "0.2.0-alpha-100-g6a565d3")
e8c2da41
AS
3112 (source (origin
3113 (method git-fetch)
3114 (uri (git-reference
0e5a68a2 3115 (url "https://git.savannah.gnu.org/git/nomad.git/")
e8c2da41
AS
3116 (commit version)))
3117 (file-name (git-file-name name version))
3118 (sha256
3119 (base32
0e5a68a2 3120 "0anmprm63a88kii251rl296v1g4iq62r6n4nssx5jbc0hzkknanz"))))
e8c2da41
AS
3121 (build-system gnu-build-system)
3122 (native-inputs
3123 `(("autoconf" ,autoconf)
3124 ("automake" ,automake)
3125 ("bash" ,bash)
3126 ("pkg-config" ,pkg-config)
3127 ("libtool" ,libtool)
3128 ("guile" ,guile-2.2)
5f1553ce
AS
3129 ("glib:bin" ,glib "bin")
3130 ("texinfo" ,texinfo)
0e5a68a2 3131 ("gettext" ,gnu-gettext)
5f1553ce 3132 ("perl" ,perl)))
e8c2da41 3133 (inputs
0e5a68a2
MR
3134 `(;; Guile
3135 ("guile" ,guile-2.2)
19cf8342 3136 ("guile-lib" ,guile2.2-lib)
19cf8342 3137 ("guile-readline" ,guile2.2-readline)
a987f128 3138 ("guile-gcrypt" ,guile2.2-gcrypt)
e8c2da41 3139 ("gnutls" ,gnutls)
0e5a68a2 3140 ("g-golf" ,g-golf)
e8c2da41
AS
3141 ("shroud" ,shroud)
3142 ("emacsy" ,emacsy-minimal)
0e5a68a2 3143 ;; Gtk
e8c2da41
AS
3144 ("glib" ,glib)
3145 ("dbus-glib" ,dbus-glib)
0e5a68a2 3146 ("glib-networking" ,glib-networking)
e8c2da41 3147 ("gtk+" ,gtk+)
a987f128 3148 ("gtk+:bin" ,gtk+ "bin")
e8c2da41 3149 ("webkitgtk" ,webkitgtk)
0e5a68a2
MR
3150 ("gtksourceview" ,gtksourceview)
3151 ("vte" ,vte)
3152 ;; Gstreamer
a987f128
MR
3153 ("gstreamer" ,gstreamer)
3154 ("gst-plugins-base" ,gst-plugins-base)
3155 ("gst-plugins-good" ,gst-plugins-good)
3156 ("gst-plugins-bad" ,gst-plugins-bad)
3157 ("gst-plugins-ugly" ,gst-plugins-ugly)
0e5a68a2
MR
3158 ;; Util
3159 ("xorg-server" ,xorg-server)))
e8c2da41
AS
3160 (arguments
3161 `(#:modules ((guix build gnu-build-system)
3162 (guix build utils)
3163 (ice-9 popen)
3164 (ice-9 rdelim)
3165 (srfi srfi-26))
3166 #:phases
3167 (modify-phases %standard-phases
3168 (add-before 'check 'start-xorg-server
3169 (lambda* (#:key inputs #:allow-other-keys)
3170 ;; The test suite requires a running X server.
3171 (system (format #f "~a/bin/Xvfb :1 &"
3172 (assoc-ref inputs "xorg-server")))
3173 (setenv "DISPLAY" ":1")
3174 #t))
3175 (add-after 'install 'wrap-binaries
3176 (lambda* (#:key inputs outputs #:allow-other-keys)
0e5a68a2
MR
3177 (let* ((out (assoc-ref outputs "out"))
3178 (effective (read-line (open-pipe*
3179 OPEN_READ
3180 "guile" "-c"
3181 "(display (effective-version))")))
3182 (gst-plugins (map (lambda (i)
3183 (string-append (assoc-ref inputs i)
3184 "/lib/gstreamer-1.0"))
3185 `("gstreamer"
3186 "gst-plugins-base"
3187 "gst-plugins-good"
3188 "gst-plugins-bad"
3189 "gst-plugins-ugly")))
3190 (out-append (lambda (. args)
3191 (apply string-append out args)))
3192 (gi-path (out-append "/lib/girepository-1.0"))
3193 (load-path (out-append "/share/guile/site/" effective))
3194 (comp-path (out-append "/lib/guile/"
3195 effective "/site-ccache"))
3196 (ext-path (out-append "/libexec/nomad")))
3197 (wrap-program (string-append out "/bin/nomad")
3198 `("GUILE_LOAD_PATH" ":" prefix
3199 (,load-path
3200 ,(getenv "GUILE_LOAD_PATH")))
3201 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
3202 (,comp-path
3203 ,(getenv "GUILE_LOAD_COMPILED_PATH")))
3204 `("GI_TYPELIB_PATH" ":" prefix
3205 (,gi-path ,(getenv "GI_TYPELIB_PATH")))
3206 `("GIO_EXTRA_MODULES" ":" prefix
3207 (,(getenv "GIO_EXTRA_MODULES")))
3208 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix ,gst-plugins)
3209 `("NOMAD_WEB_EXTENSION_DIR" ":" prefix (,ext-path)))
e8c2da41
AS
3210 #t))))))
3211 (home-page "https://savannah.nongnu.org/projects/nomad/")
3212 (synopsis "Extensible Web Browser in Guile Scheme")
a987f128
MR
3213 (description "Nomad is a Emacs-like web browser that consists of a modular
3214feature-set, fully programmable in Guile Scheme.")
e8c2da41 3215 (license license:gpl3+)))
248965c9
RW
3216
3217(define-public guile-cv
3218 (package
3219 (name "guile-cv")
3220 (version "0.2.1")
3221 (source (origin
3222 (method url-fetch)
3223 (uri (string-append "mirror://gnu/guile-cv/guile-cv-"
3224 version ".tar.gz"))
3225 (sha256
3226 (base32
3227 "0qdf0s2h1xj5lbhnc1pfw69i3zg08pqy2y6869b92ydfis8r82j9"))))
3228 (build-system gnu-build-system)
3229 (arguments
3230 `(#:phases
3231 (modify-phases %standard-phases
3232 (add-after 'unpack 'prepare-build
3233 (lambda* (#:key inputs outputs #:allow-other-keys)
3234 (substitute* "configure"
3235 (("SITEDIR=\"\\$datadir/guile-cv\"")
3236 "SITEDIR=\"$datadir/guile/site/$GUILE_EFFECTIVE_VERSION\"")
3237 (("SITECCACHEDIR=\"\\$libdir/guile-cv/")
3238 "SITECCACHEDIR=\"$libdir/"))
3239 (substitute* "cv/init.scm"
3240 (("\\(dynamic-link \"libvigra_c\"\\)")
3241 (string-append "(dynamic-link \""
3242 (assoc-ref inputs "vigra-c")
3243 "/lib/libvigra_c\")"))
3244 (("\\(dynamic-link \"libguile-cv\"\\)")
3245 (format #f "~s"
3246 `(dynamic-link
3247 (format #f "~alibguile-cv"
3248 (if (getenv "GUILE_CV_UNINSTALLED")
3249 ""
3250 ,(format #f "~a/lib/"
3251 (assoc-ref outputs "out"))))))))
3252 (setenv "GUILE_CV_UNINSTALLED" "1")
3253 ;; Only needed to satisfy the configure script.
3254 (setenv "LD_LIBRARY_PATH"
3255 (string-append (assoc-ref inputs "vigra-c") "/lib"))
3256 #t)))))
3257 (inputs
3258 `(("vigra" ,vigra)
3259 ("vigra-c" ,vigra-c)
3260 ("guile" ,guile-2.2)))
3261 (native-inputs
3262 `(("texlive" ,(texlive-union (list texlive-booktabs
3263 texlive-lm
3264 texlive-siunitx
3265 texlive-standalone
3266 texlive-xcolor
3267 texlive-fonts-iwona)))
3268 ("pkg-config" ,pkg-config)))
3269 (propagated-inputs
3270 `(("guile-lib" ,guile-lib)))
3271 (home-page "https://www.gnu.org/software/guile-cv/")
3272 (synopsis "Computer vision library for Guile")
3273 (description "Guile-CV is a Computer Vision functional programming library
3274for the Guile Scheme language. It is based on Vigra (Vision with Generic
3275Algorithms), a C++ image processing and analysis library. Guile-CV contains
3276bindings to Vigra C (a C wrapper to most of the Vigra functionality) and is
3277enriched with pure Guile Scheme algorithms, all accessible through a nice,
3278clean and easy to use high level API.")
3279 (license license:gpl3+)))
7ff157c1
RW
3280
3281(define-public guile-ffi-fftw
353fb48f
RW
3282 (let ((commit "294ad9e7491dcb40026d2fec9be2af05263be1c0")
3283 (revision "2"))
7ff157c1
RW
3284 (package
3285 (name "guile-ffi-fftw")
3286 (version (git-version "0" revision commit))
3287 (source (origin
3288 (method git-fetch)
3289 (uri (git-reference
b0e7b699 3290 (url "https://github.com/lloda/guile-ffi-fftw")
7ff157c1
RW
3291 (commit commit)))
3292 (file-name (git-file-name "guile-ffi-fftw" version))
3293 (sha256
3294 (base32
353fb48f 3295 "08j40a5p6a8pgvhffmzb5rfdnrav2mksy3gfjkdqy93jfj1z5afg"))))
7ff157c1
RW
3296 (build-system guile-build-system)
3297 (arguments
3298 `(#:source-directory "mod"
3299 #:phases
3300 (modify-phases %standard-phases
3301 (add-after 'unpack 'prepare-build
3302 (lambda* (#:key inputs #:allow-other-keys)
3303 (substitute* "mod/ffi/fftw.scm"
3304 (("\\(getenv \"GUILE_FFI_FFTW_LIBFFTW3_PATH\"\\)")
3305 (format #f "\"~a/lib\"" (assoc-ref inputs "fftw"))))
3306 #t))
3307 (add-after 'build 'check
3308 (lambda _
3309 (invoke "guile" "-L" "mod"
3310 "-s" "test/test-ffi-fftw.scm"))))))
3311 (inputs
3312 `(("fftw" ,fftw)
3313 ("guile" ,guile-2.2)))
3314 (home-page "https://github.com/lloda/guile-ffi-fftw/")
3315 (synopsis "Access FFTW through Guile's FFI")
3316 (description "This is a minimal set of Guile FFI bindings for the FFTW
3317library's ‘guru interface’. It provides two functions: @code{fftw-dft! rank
3318sign in out} and @code{fftw-dft rank sign in}. These bindings being minimal,
3319there is no support for computing & reusing plans, or split r/i transforms, or
3320anything other than straight complex DFTs.")
353fb48f 3321 (license license:lgpl3+))))
f9ec89f4
TS
3322
3323(define-public srfi-64-driver
3324 (package
3325 (name "srfi-64-driver")
3326 (version "0.1")
3327 (source (origin
3328 (method url-fetch)
3329 (uri (string-append "https://files.ngyro.com/srfi-64-driver/"
3330 "srfi-64-driver-" version ".tar.gz"))
3331 (sha256
3332 (base32
3333 "188b6mb7sjjg0a8zldikinglf40ky8mg8rwh5768gjmch6gkk3ph"))))
3334 (build-system gnu-build-system)
3335 (arguments
3336 `(#:tests? #f
3337 #:phases
3338 (modify-phases %standard-phases
3339 (delete 'build))))
3340 (native-inputs
3341 `(("pkg-config" ,pkg-config)))
3342 (inputs
3343 `(("guile" ,guile-2.2)))
3344 (home-page "https://ngyro.com/software/srfi-64-driver.html")
3345 (synopsis "Automake test driver for SRFI 64 test suites")
3346 (description "This package provides an Automake test driver that can
3347run SRFI 64 test suites. It gives Automake insight into the individual
3348tests being run, resulting clearer and more specific output.")
3349 (license license:gpl3+)))
f6bf4b2c
TS
3350
3351(define-public guile-semver
3352 (package
3353 (name "guile-semver")
85ced665 3354 (version "0.1.1")
f6bf4b2c
TS
3355 (source (origin
3356 (method url-fetch)
3357 (uri (string-append "https://files.ngyro.com/guile-semver/"
3358 "guile-semver-" version ".tar.gz"))
3359 (sha256
3360 (base32
85ced665 3361 "109p4n39ln44cxvwdccf9kgb96qx54makvd2ir521ssz6wchjyag"))))
f6bf4b2c
TS
3362 (build-system gnu-build-system)
3363 (native-inputs
85ced665 3364 `(("pkg-config" ,pkg-config)))
f6bf4b2c
TS
3365 (inputs
3366 `(("guile" ,guile-2.2)))
3367 (home-page "https://ngyro.com/software/guile-semver.html")
3368 (synopsis "Semantic Versioning (SemVer) for Guile")
3369 (description "This Guile library provides tools for reading,
3370comparing, and writing Semantic Versions. It also includes ranges in
3371the style of the Node Package Manager (NPM).")
3372 (license license:gpl3+)))
d67fa5c8 3373
b488b64a
MB
3374(define-public guile3.0-semver
3375 (package
3376 (inherit guile-semver)
3377 (name "guile3.0-semver")
3378 (inputs
3379 `(("guile" ,guile-3.0)))))
3380
d67fa5c8
LC
3381(define-public guile-hashing
3382 (package
3383 (name "guile-hashing")
3384 (version "1.2.0")
3385 (home-page "https://github.com/weinholt/hashing")
3386 (source (origin
3387 (method git-fetch)
3388 (uri (git-reference
3389 (url home-page)
3390 (commit (string-append "v" version))))
3391 (file-name (git-file-name name version))
3392 (sha256
3393 (base32
3394 "1362d3lmpv7slmv1zmr9wy8panq9sjr9787gc2hagd646mpsfpkl"))))
3395 (build-system guile-build-system)
3396 (arguments
3397 `(#:modules ((guix build guile-build-system)
3398 (guix build utils)
3399 (srfi srfi-26)
3400 (ice-9 ftw))
3401 #:implicit-inputs? #f ;needs nothing but Guile
3402 #:phases (modify-phases %standard-phases
3403 (add-before 'build 'move-sls-files
3404 (lambda _
3405 ;; Move the source under hashing/ in order to match
3406 ;; module names, and rename .sls files to .scm.
3407 (define (target file)
3408 (string-append "hashing/" file))
3409
3410 (define (sls->scm sls)
3411 (string-append (string-drop-right sls 4)
3412 ".scm"))
3413
3414 (mkdir "hashing")
3415 (for-each (lambda (file)
3416 (rename-file file (sls->scm file)))
3417 (find-files "." "\\.sls$"))
3418 (for-each (lambda (file)
3419 (rename-file file (target file)))
3420 (scandir "." (cut string-suffix? ".scm" <>)))
3421 (rename-file "private" "hashing/private")
3422 #t)))))
3423 (native-inputs
b6bee63b 3424 `(("guile" ,guile-3.0)))
d67fa5c8
LC
3425 (synopsis "Cryprographic hash functions implemented in Scheme")
3426 (description
3427 "The @code{(hashing @dots{})} modules implement cryptographic hash
3428functions in pure R6RS Scheme: CRC, HMAC, MD5, SHA-1, and SHA-2 (SHA-256,
3429SHA-512).")
3430 (license license:expat)))
f918a8d9 3431
b6bee63b 3432(define-public guile2.2-hashing
f918a8d9
LC
3433 (package
3434 (inherit guile-hashing)
b6bee63b 3435 (name "guile2.2-hashing")
f918a8d9 3436 (native-inputs
318e1a93 3437 `(("guile" ,guile-2.2)))))
ef2b1d2c 3438
b6bee63b
LC
3439(define-public guile3.0-hashing
3440 (deprecated-package "guile3.0-hashing" guile-hashing))
3441
60c9264b
LC
3442(define-public guile-packrat
3443 (package
3444 (name "guile-packrat")
3445 (version "0.1.1")
3446 (home-page "https://github.com/weinholt/packrat")
3447 (source (origin
3448 (method git-fetch)
3449 (uri (git-reference
3450 (url home-page)
3451 (commit (string-append "v" version))))
3452 (file-name (git-file-name name version))
3453 (sha256
3454 (base32
3455 "1aga17164fkhbgllqc7ni6fk5zl8mkmgkl5zcsy67x7ngpyalbby"))))
3456 (build-system guile-build-system)
3457 (arguments
3458 `(#:implicit-inputs? #f ;needs nothing but Guile
3459 #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3460 #:not-compiled-file-regexp "/extensible\\.scm$"
3461 #:phases (modify-phases %standard-phases
3462 (add-before 'build 'no-srfi-23
3463 (lambda _
3464 (substitute* "packrat.sls"
3465 (("\\(srfi :23 error\\)")
3466 (object->string '(only (guile) error))))
3467 #t)))))
3468 (native-inputs
3469 `(("guile" ,guile-3.0)))
3470 (synopsis "Packrat parser library in R6RS Scheme")
3471 (description
3472 "This is an R6RS Scheme adaptation of the
3473@uref{https://bford.info/packrat/, packrat parsing}. Packrat parsing is a
3474memoizing, backtracking, recursive-descent parsing technique that runs in time
3475and space linear in the size of the input text.")
3476 (license license:expat)))
3477
97a77eab
LC
3478(define-public guile-ac-d-bus
3479 (package
3480 (name "guile-ac-d-bus")
933fdd55 3481 (version "1.0.0-beta.0")
97a77eab
LC
3482 (home-page "https://gitlab.com/weinholt/ac-d-bus/")
3483 (source (origin
3484 (method git-fetch)
3485 (uri (git-reference
3486 (url home-page)
3487 (commit (string-append "v" version))))
3488 (file-name (git-file-name name version))
3489 (sha256
3490 (base32
933fdd55 3491 "0rl809qimhgz6b0rixakb42r2l4g53jr09a2g0s1hxgab0blz0kb"))))
97a77eab
LC
3492 (build-system guile-build-system)
3493 (arguments
3494 `(#:implicit-inputs? #f ;needs nothing but Guile
3495 #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3496 #:phases (modify-phases %standard-phases
3497 (add-before 'build 'adjust-for-guile
3498 (lambda _
3499 ;; Adjust source file names for Guile.
3500 (define (guile-sls->sls file)
3501 (string-append (string-drop-right
3502 file (string-length ".guile.sls"))
3503 ".sls"))
3504
3505 ;; Remove files targeting other implementations:
3506 ;; *.mosh.sls, etc.
3507 (for-each delete-file
3508 (find-files
3509 "compat"
3510 (lambda (file stat)
3511 (not (string-contains file ".guile.")))))
3512
3513 ;; Rename *.guile.sls to *.sls so the ".guile" bit does
3514 ;; not appear in .go file names.
3515 (for-each (lambda (file)
3516 (rename-file file (guile-sls->sls file)))
3517 (find-files "compat" "\\.guile\\.sls"))
3518
3519 ;; Move directories under d-bus/ to match module names.
3520 (mkdir "d-bus")
3521 (for-each (lambda (directory)
3522 (rename-file directory
3523 (string-append "d-bus/"
3524 directory)))
3525 '("compat" "protocol"))
3526
3527 #t)))))
3528 (native-inputs
3529 `(("guile" ,guile-3.0)))
3530 (propagated-inputs
3531 `(("guile-packrat" ,guile-packrat)))
3532 (synopsis "D-Bus protocol implementation in R6RS Scheme")
3533 (description
3534 "AC/D-Bus is an implementation of the D-Bus wire protocol. D-Bus is an
3535interprocess communication protocol popular on GNU/Linux systems to
3536communicate with a variety of services. Originally designed for desktop
3537environments, it is now used by programs like VLC media player, BlueZ,
3538NetworkManager, Pulseaudio, systemd (including logind and resolved), Polkit,
3539gnome-keyring, and many more.")
3540 (license license:expat)))
3541
ef2b1d2c
RW
3542(define-public guile-webutils
3543 (let ((commit "8541904f761066dc9c27b1153e9a838be9a55299")
3544 (revision "0"))
3545 (package
3546 (name "guile-webutils")
3547 (version (git-version "0.1" revision commit))
3548 (source (origin
3549 (method git-fetch)
3550 (uri (git-reference
3551 (url "https://notabug.org/cwebber/guile-webutils.git")
3552 (commit commit)))
3553 (file-name (git-file-name name version))
3554 (sha256
3555 (base32
0a76d7a9
RW
3556 "1s9n3hbxd7lfpdi0x8wr0cfvlsf6g62ird9gbspxdrp5p05rbi64"))
3557 (modules '((guix build utils)))
3558 (snippet
3559 '(begin
3560 ;; Allow builds with Guile 3.0.
3561 (substitute* "configure.ac"
3562 (("2\\.2 2\\.0")
3563 "3.0 2.2 2.0"))
3564 #t))))
ef2b1d2c
RW
3565 (build-system gnu-build-system)
3566 (native-inputs
3567 `(("autoconf" ,autoconf)
3568 ("automake" ,automake)
3569 ("pkg-config" ,pkg-config)
3570 ("texinfo" ,texinfo)))
3571 (inputs
0a76d7a9 3572 `(("guile" ,guile-3.0)))
ef2b1d2c
RW
3573 (propagated-inputs
3574 `(("guile-irregex" ,guile-irregex)
3575 ("guile-gcrypt" ,guile-gcrypt)))
3576 (home-page "https://notabug.org/cwebber/guile-webutils")
3577 (synopsis "Web application authoring utilities for Guile")
3578 (description
3579 "This package provides tooling to write web applications in Guile, such
3580as signed sessions, multipart message support, etc.")
3581 (license license:gpl3+))))
5479cef8 3582
0a76d7a9
RW
3583(define-public guile2.2-webutils
3584 (package
3585 (inherit guile-webutils)
3586 (name "guile2.2-webutils")
3587 (inputs
3588 `(("guile" ,guile-2.2)))
3589 (propagated-inputs
3590 `(("guile-irregex" ,guile2.2-irregex)
3591 ("guile-gcrypt" ,guile2.2-gcrypt)))))
3592
5479cef8
RW
3593(define-public guile-lens
3594 (let ((commit "14b15d07255f9d3f55d40a3b750d13c9ee3a154f")
3595 (revision "0"))
3596 (package
3597 (name "guile-lens")
3598 (version (git-version "0.1" revision commit))
3599 (source (origin
3600 (method git-fetch)
3601 (uri (git-reference
3602 (url "https://gitlab.com/a-sassmannshausen/guile-lens.git")
3603 (commit commit)))
3604 (file-name (git-file-name name version))
3605 (sha256
3606 (base32
3607 "0w8jzqyla56yrgj7acsgd4nspyir6zgp3vgxid4xmwhg9wmf1ida"))))
3608 (build-system gnu-build-system)
3609 (arguments
3610 '(#:phases
3611 (modify-phases %standard-phases
3612 (add-after 'unpack 'run-hall
3613 (lambda _
3614 (setenv "HOME" "/tmp") ; for ~/.hall
3615 (invoke "hall" "dist" "-x"))))))
3616 (native-inputs
3617 `(("autoconf" ,autoconf)
3618 ("automake" ,automake)
ca24b3fb 3619 ("guile" ,guile-3.0)
5479cef8
RW
3620 ("guile-hall" ,guile-hall)
3621 ("pkg-config" ,pkg-config)
3622 ("texinfo" ,texinfo)))
3623 (home-page "https://gitlab.com/a-sassmannshausen/guile-lens.git")
3624 (synopsis "Composable lenses for data structures in Guile")
3625 (description
3626 "Guile-Lens is a library implementing lenses in Guile. The library is
3627currently a re-implementation of the lentes library for Clojure. Lenses
3628provide composable procedures, which can be used to focus, apply functions
3629over, or update a value in arbitrary data structures.")
3630 (license license:gpl3+))))
69bb61f1 3631
ca24b3fb
RW
3632(define-public guile2.2-lens
3633 (package
3634 (inherit guile-lens)
3635 (name "guile2.2-lens")
3636 (native-inputs
3637 `(("guile" ,guile-2.2)
3638 ,@(alist-delete "guile" (package-native-inputs guile-lens))))))
3639
69bb61f1 3640(define-public guile-xapian
d10e7a34
RW
3641 (package
3642 (name "guile-xapian")
3643 (version "0.1.0")
3644 (home-page "https://git.systemreboot.net/guile-xapian")
3645 (source
3646 (origin
3647 (method git-fetch)
3648 (uri (git-reference (url home-page)
3649 (commit (string-append "v" version))))
3650 (file-name (git-file-name name version))
3651 (sha256
3652 (base32
3653 "16k61f1jn3g48jaf3730b9l0izr5j933jzyri73nmcnjd09gm35i"))))
3654 (build-system gnu-build-system)
3655 (arguments
3656 '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
3657 (inputs
93989aed 3658 `(("guile" ,guile-3.0)
d10e7a34
RW
3659 ("xapian" ,xapian)
3660 ("zlib" ,zlib)))
3661 (native-inputs
3662 `(("autoconf" ,autoconf)
3663 ("autoconf-archive" ,autoconf-archive)
3664 ("automake" ,automake)
3665 ("libtool" ,libtool)
3666 ("pkg-config" ,pkg-config)
3667 ("swig" ,swig)))
3668 (synopsis "Guile bindings for Xapian")
3669 (description "@code{guile-xapian} provides Guile bindings for Xapian, a
69bb61f1
AI
3670search engine library. Xapian is a highly adaptable toolkit which allows
3671developers to easily add advanced indexing and search facilities to their own
3672applications. It has built-in support for several families of weighting
3673models and also supports a rich set of boolean query operators.")
d10e7a34 3674 (license license:gpl2+)))
69bb61f1 3675
93989aed 3676(define-public guile2.2-xapian
69bb61f1
AI
3677 (package
3678 (inherit guile-xapian)
93989aed 3679 (name "guile2.2-xapian")
69bb61f1 3680 (inputs
93989aed 3681 `(("guile" ,guile-2.2)
69bb61f1 3682 ,@(alist-delete "guile" (package-inputs guile-xapian))))))
be789065 3683
93989aed
LC
3684(define-public guile3.0-xapian
3685 (deprecated-package "guile3.0-xapian" guile-xapian))
3686
be789065
AS
3687(define-public guile-torrent
3688 (package
3689 (name "guile-torrent")
3690 (version "0.1.3")
3691 (source (origin (method git-fetch)
3692 (uri (git-reference
3693 (url
3694 "https://github.com/o-nly/torrent.git")
3695 (commit version)))
3696 (file-name (git-file-name name version))
3697 (sha256
3698 (base32
3699 "1yiagi55ncq1x7s9n7salzywjm4l96y3n7y3s47a9anvz87mrmim"))))
3700 (build-system gnu-build-system)
3701 (native-inputs
3702 `(("autoconf" ,autoconf)
3703 ("automake" ,automake)
3704 ("guile" ,guile-2.2)
3705 ("texinfo" ,texinfo)
3706 ("perl" ,perl)
3707 ("pkg-config" ,pkg-config)))
3708 (propagated-inputs
3709 `(("guile-gcrypt" ,guile-gcrypt)))
3710 (home-page "https://github.com/o-nly/torrent")
3711 (synopsis "Torrent library for GNU Guile")
3712 (description "This package provides facilities for working with
3713@code{.torrent} or metainfo files. Implements a bencode reader and writer
3714according to Bitorrent BEP003.")
3715 (license license:gpl3+)))
3c0456c6
RW
3716
3717(define-public guile-irc
3718 (let ((commit "375d3bde9c6ae7ccc9d7cc65817966b6fda8f26a")
3719 (revision "0"))
3720 (package
3721 (name "guile-irc")
3722 (version (git-version "0.3.0" revision commit))
3723 (source (origin
3724 (method git-fetch)
3725 (uri (git-reference
b0e7b699 3726 (url "https://github.com/rekado/guile-irc")
3c0456c6
RW
3727 (commit commit)))
3728 (file-name (git-file-name name version))
3729 (sha256
3730 (base32
3731 "113lcckcywrz9060w1c3fnvr8d7crdsjgsv4h47hgmr1slgadl4y"))))
3732 (build-system gnu-build-system)
3733 (arguments
3734 `(#:configure-flags '("--enable-gnutls=yes")))
3735 (native-inputs
3736 `(("autoconf" ,autoconf)
3737 ("automake" ,automake)
3738 ("texinfo" ,texinfo)))
3739 (inputs
3740 `(("gnutls" ,gnutls)
b4412382 3741 ("guile" ,guile-3.0)))
3c0456c6
RW
3742 (home-page "https://github.com/rekado/guile-irc")
3743 (synopsis "IRC library for Guile")
3744 (description "This package provides a Guile library for @dfn{Internet
3745Relay Chat} (IRC).")
3746 ;; Some file headers incorrectly say LGPLv2+.
3747 (license license:lgpl2.1+))))
8ffc20ef 3748
b141e1d5 3749(define-public guile-websocket
8ffc20ef
ES
3750 (let ((commit "c854e0f84a40d972cbd532bbb89c97ca0126a7cf"))
3751 (package
b141e1d5 3752 (name "guile-websocket")
8ffc20ef
ES
3753 (version "0.1")
3754 (source
3755 (origin
3756 (method git-fetch)
3757 (uri (git-reference
3758 (url "git://dthompson.us/guile-websocket.git")
3759 (commit commit)))
3760 (file-name (git-file-name name version))
3761 (sha256
3762 (base32
3763 "1hymvsfrmq9qxr5cxnsgdz7y757yp1cpsgxmdp3f5wxxxpqgsmzx"))))
3764 (build-system gnu-build-system)
3765 (arguments
3766 '(#:make-flags
3767 '("GUILE_AUTO_COMPILE=0")
3768 #:phases
3769 (modify-phases %standard-phases
3770 ;; The package was developed for Guile 2.0 and has this version
3771 ;; hardcoded in the configure.ac and Makefile.am files. Substitute
3772 ;; 3.0 instead so it can support Guile 3.0.
3773 (add-after 'unpack 'update-guile-version
3774 (lambda _
3775 (substitute* "configure.ac"
3776 (("2.0.9") "3.0.0"))
3777 (substitute* "Makefile.am"
cea91813
LC
3778 (("2.0") "3.0")
3779
3780 ;; Install .go files where they belong.
3781 (("/ccache") "/site-ccache"))
8ffc20ef
ES
3782 #t)))))
3783 (native-inputs
3784 `(("autoconf" ,autoconf)
3785 ("automake" ,automake)))
3786 (inputs
b141e1d5 3787 `(("guile" ,guile-3.0)))
8ffc20ef
ES
3788 (synopsis "Websocket server/client for Guile")
3789 (description "Guile-websocket provides an implementation of the
3790WebSocket protocol as defined by RFC 6455.")
3791 (home-page "https://git.dthompson.us/guile-websocket.git")
3792 (license license:lgpl3+))))
b141e1d5
LC
3793
3794(define-public guile3.0-websocket
3795 (deprecated-package "guile3.0-websocket" guile-websocket))
c08f235b
JL
3796
3797(define-public guile-rdf
3798 (package
3799 (name "guile-rdf")
3800 (version "1.0")
3801 (source
3802 (origin
3803 (method git-fetch)
3804 (uri (git-reference
3805 (url "https://framagit.org/tyreunom/guile-rdf")
3806 (commit version)))
3807 (file-name (git-file-name name version))
3808 (sha256
3809 (base32
3810 "0dwn3app1fscbpmpgvjs5jy1y0gwy3j5gdx8br79af6a88zjlnqf"))))
3811 (build-system gnu-build-system)
3812 (arguments
3813 `(#:tests? #f)); tests require network
3814 (inputs
3815 `(("guile" ,guile-3.0)))
3816 (native-inputs
3817 `(("automake" ,automake)
3818 ("autoconf" ,autoconf)
3819 ("pkg-config" ,pkg-config)
3820 ("texinfo" ,texinfo)))
3821 (home-page "https://framagit.org/tyreunom/guile-rdf")
3822 (synopsis "Guile implementation of the RDF abstract and concrete syntaxes")
3823 (description "Guile RDF is an implementation of the RDF (Resource Description
3824Framework) format defined by the W3C for GNU Guile. RDF structures include
3825triples (facts with a subject, a predicate and an object), graphs which are
3826sets of triples, and datasets, which are collections of graphs.
3827
3828RDF specifications include the specification of concrete syntaxes and of
3829operations on graphs. This library implements some basic functionalities,
3830such as parsing and producing turtle and nquads syntax, as well as
3831manipulating graphs and datasets.")
3832 (license license:gpl3+)))
d1fa24af
JL
3833
3834(define-public guile-jsonld
3835 (package
3836 (name "guile-jsonld")
3837 (version "1.0.1")
3838 (source
3839 (origin
3840 (method git-fetch)
3841 (uri (git-reference
3842 (url "https://framagit.org/tyreunom/guile-jsonld")
3843 (commit version)))
3844 (file-name (git-file-name name version))
3845 (sha256
3846 (base32
3847 "0zfn3nwlz6xzip1j8xbj768dc299r037cfc81bk6kwl9xhzkjbrg"))))
3848 (build-system gnu-build-system)
3849 (arguments
3850 `(#:tests? #f)); require network
3851 (propagated-inputs
3852 `(("guile-gnutls" ,gnutls)
3853 ("guile-json" ,guile-json-3)
3854 ("guile-rdf" ,guile-rdf)))
3855 (inputs
3856 `(("guile" ,guile-3.0)))
3857 (native-inputs
3858 `(("automake" ,automake)
3859 ("autoconf" ,autoconf)
3860 ("pkg-config" ,pkg-config)
3861 ("texinfo" ,texinfo)))
3862 (home-page "https://framagit.org/tyreunom/guile-jsonld")
3863 (synopsis "Guile implementation of the JsonLD API specification")
3864 (description "Guile JsonLD is an implementation of the JsonLD (Json for
3865Linked Data) API defined by the W3C for GNU Guile. It allows you to express links
3866between data, in a way that is very similar to WikiData or RDF for instance.
3867An object can have relations (in the form of an IRI) that relates it to one or
3868more objects or strings, represented by a Json object or an IRI.")
3869 (license license:gpl3+)))
a684e6e2
MB
3870
3871(define-public guile-struct-pack
3872 (package
3873 (name "guile-struct-pack")
3874 (version "1.1.1")
3875 (source
3876 (origin
3877 (method git-fetch)
3878 (uri (git-reference
3879 (url "https://github.com/weinholt/struct-pack")
3880 (commit (string-append "v" version))))
3881 (file-name (git-file-name name version))
3882 (sha256
3883 (base32 "0hd72m821pahjphzyjn26i55542v8makr55xzjll2cycja4wsbc1"))))
3884 (build-system guile-build-system)
3885 (arguments
3886 `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3887 #:modules ((guix build guile-build-system)
3888 (guix build utils)
3889 (srfi srfi-26)
3890 (ice-9 ftw))
3891 #:phases (modify-phases %standard-phases
3892 (add-before 'build 'move-sls-files
3893 (lambda _
3894 ;; Move files under a struct/ directory to reflect the
3895 ;; module hierarchy.
3896 (define dst-folder "struct")
3897 (define (target file)
3898 (string-append dst-folder "/" file))
3899 (define files
3900 (scandir "." (negate (cut member <> '("." "..")))))
3901 (mkdir dst-folder)
3902 (for-each (lambda (file)
3903 (rename-file file (target file)))
3904 files)
3905 #t)))))
3906 (native-inputs
3907 `(("guile" ,guile-3.0)))
3908 (home-page "https://github.com/weinholt/struct-pack")
3909 (synopsis "R6RS library for working with packed byte structures")
3910 (description
3911 "This is an R6RS library for working with packed byte structures. It is
3912similar to struct in Python or pack and unpack in Perl.")
3913 (license license:expat)))
199da208
MB
3914
3915(define-public guile-machine-code
3916 (package
3917 (name "guile-machine-code")
3918 (version "2.1.0")
3919 (source
3920 (origin
3921 (method git-fetch)
3922 (uri (git-reference
3923 (url "https://github.com/weinholt/machine-code")
3924 (commit (string-append "v" version))))
3925 (file-name (git-file-name name version))
3926 (sha256
3927 (base32 "0wzj3caj2jypzyjqfkfqkvr3kkbjabsnhldv9kvnx9w9qnria5yd"))))
3928 (build-system guile-build-system)
3929 (arguments
3930 `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3931 #:modules ((guix build guile-build-system)
3932 (guix build utils)
3933 (srfi srfi-26)
3934 (ice-9 ftw))
3935 #:phases (modify-phases %standard-phases
3936 (add-before 'build 'move-sls-files
3937 (lambda _
3938 ;; Move files under a struct/ directory to reflect the
3939 ;; module hierarchy.
3940 (define dst-folder "machine-code")
3941 (define (target file)
3942 (string-append dst-folder "/" file))
3943 (define files
3944 (scandir "." (negate (cut member <> '("." "..")))))
3945 (mkdir dst-folder)
3946 (for-each (lambda (file)
3947 (rename-file file (target file)))
3948 files)
3949 #t)))))
3950 (native-inputs
3951 `(("guile" ,guile-3.0)))
3952 (propagated-inputs
3953 `(("guile-struct-pack" ,guile-struct-pack)))
3954 (home-page "https://github.com/weinholt/machine-code")
3955 (synopsis "Tools that relate to machine code and object formats")
3956 (description
3957 "This project is about the development of tools that relate to machine
3958code and object formats; for all architectures. Here you'll find libraries
3959for working with binary code: assembly, disassembly, instruction tables,
3960object formats and related areas.")
3961 (license license:expat)))
3826288f
MB
3962
3963(define-public guile-laesare
3964 (package
3965 (name "guile-laesare")
3966 (version "1.0.0")
3967 (source
3968 (origin
3969 (method git-fetch)
3970 (uri (git-reference
3971 (url "https://github.com/weinholt/laesare")
3972 (commit (string-append "v" version))))
3973 (file-name (git-file-name name version))
3974 (sha256
3975 (base32 "15q619gzw717r8r1ql23zfdaibpnp9qqs96032vdc3rj74msxc92"))))
3976 (build-system guile-build-system)
3977 (arguments
3978 `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3979 #:modules ((guix build guile-build-system)
3980 (guix build utils)
3981 (srfi srfi-26)
3982 (ice-9 ftw))
3983 #:phases (modify-phases %standard-phases
3984 (add-before 'build 'move-sls-files
3985 (lambda _
3986 ;; Move files under a laesare directory to reflect
3987 ;; the module hierarchy.
3988 (define dst-folder "laesare")
3989 (define (target file)
3990 (string-append dst-folder "/" file))
3991 (define files
3992 (scandir "." (negate (cut member <> '("." "..")))))
3993 (mkdir dst-folder)
3994 (for-each (lambda (file)
3995 (rename-file file (target file)))
3996 files)
3997 #t)))))
3998 (native-inputs
3999 `(("guile" ,guile-3.0)))
4000 (home-page "https://github.com/weinholt/laesare")
4001 (synopsis "R6RS Scheme library that provides a reader")
4002 (description
4003 "This is an R6RS Scheme library that provides a reader with some extra
4004features not found in the standard read procedure such as a compatible mode
4005with support for other RnRS standards and a tolerant mode that continues on
4006errors.")
4007 (license license:expat)))