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