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