gnu: igt-gpu-tools: Don't use NAME in source URI.
[jackhill/guix/guix.git] / gnu / packages / guile.scm
CommitLineData
233e7676 1;;; GNU Guix --- Functional package management for GNU
152d4076 2;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
0791437f
RW
3;;; Copyright © 2014 Cyril Roelandt <tipecaml@gmail.com>
4;;; Copyright © 2014, 2016, 2018 David Thompson <davet@gnu.org>
5;;; Copyright © 2014, 2017, 2018 Mark H Weaver <mhw@netris.org>
c5793e7e 6;;; Copyright © 2015, 2017 Christopher Allan Webber <cwebber@dustycloud.org>
c5793e7e 7;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
0791437f
RW
8;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
9;;; Copyright © 2016, 2019 Ricardo Wurmus <rekado@elephly.net>
aaf1bdc3 10;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
0791437f
RW
11;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
12;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
13;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
14;;; Copyright © 2017, 2018 Amirouche <amirouche@hypermove.net>
15;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
c8e3651a 16;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
0791437f 17;;; Copyright © 2019 Taylan Kammer <taylan.kammer@gmail.com>
1722d680 18;;;
233e7676 19;;; This file is part of GNU Guix.
1722d680 20;;;
233e7676 21;;; GNU Guix is free software; you can redistribute it and/or modify it
1722d680
LC
22;;; under the terms of the GNU General Public License as published by
23;;; the Free Software Foundation; either version 3 of the License, or (at
24;;; your option) any later version.
25;;;
233e7676 26;;; GNU Guix is distributed in the hope that it will be useful, but
1722d680
LC
27;;; WITHOUT ANY WARRANTY; without even the implied warranty of
28;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29;;; GNU General Public License for more details.
30;;;
31;;; You should have received a copy of the GNU General Public License
233e7676 32;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
1722d680 33
1ffa7090 34(define-module (gnu packages guile)
71e0f217 35 #:use-module ((guix licenses) #:prefix license:)
59a43334 36 #:use-module (gnu packages)
146c6b62
RW
37 #:use-module (gnu packages autotools)
38 #:use-module (gnu packages base)
9c782445 39 #:use-module (gnu packages bash)
1ffa7090 40 #:use-module (gnu packages bdw-gc)
148585c2 41 #:use-module (gnu packages compression)
255d1bbe 42 #:use-module (gnu packages dbm)
146c6b62 43 #:use-module (gnu packages flex)
1ffa7090 44 #:use-module (gnu packages gawk)
146c6b62 45 #:use-module (gnu packages gettext)
ee8ee748 46 #:use-module (gnu packages hurd)
1ffa7090 47 #:use-module (gnu packages libffi)
1ffa7090 48 #:use-module (gnu packages libunistring)
7119cca8 49 #:use-module (gnu packages linux)
1ffa7090
LC
50 #:use-module (gnu packages m4)
51 #:use-module (gnu packages multiprecision)
52 #:use-module (gnu packages pkg-config)
53 #:use-module (gnu packages readline)
cd0322a3 54 #:use-module (gnu packages sqlite)
f906d30c 55 #:use-module (gnu packages texinfo)
bd233722 56 #:use-module (gnu packages version-control)
1722d680 57 #:use-module (guix packages)
87f5d366 58 #:use-module (guix download)
6bc24063 59 #:use-module (guix git-download)
32795fcf 60 #:use-module (guix build-system gnu)
977d8666 61 #:use-module (guix build-system guile)
32795fcf 62 #:use-module (guix utils)
d4660a54
MC
63 #:use-module (ice-9 match)
64 #:use-module ((srfi srfi-1) #:prefix srfi-1:))
1722d680
LC
65
66;;; Commentary:
67;;;
c44899a2 68;;; GNU Guile, and modules and extensions.
1722d680
LC
69;;;
70;;; Code:
71
c44899a2
LC
72(define-public guile-1.8
73 (package
74 (name "guile")
75 (version "1.8.8")
76 (source (origin
87f5d366 77 (method url-fetch)
0db342a5 78 (uri (string-append "mirror://gnu/guile/guile-" version
c44899a2
LC
79 ".tar.gz"))
80 (sha256
81 (base32
01eafd38 82 "0l200a0v7h8bh0cwz6v7hc13ds39cgqsmfrks55b1rbj5vniyiy3"))
fc1adab1 83 (patches (search-patches "guile-1.8-cpp-4.5.patch"))))
c44899a2
LC
84 (build-system gnu-build-system)
85 (arguments '(#:configure-flags '("--disable-error-on-warning")
c44899a2
LC
86
87 ;; Insert a phase before `configure' to patch things up.
dc1d3cde
KK
88 #:phases
89 (modify-phases %standard-phases
90 (add-before 'configure 'patch-stuff
91 (lambda* (#:key outputs #:allow-other-keys)
92 ;; Add a call to `lt_dladdsearchdir' so that
93 ;; `libguile-readline.so' & co. are in the
94 ;; loader's search path.
95 (substitute* "libguile/dynl.c"
96 (("lt_dlinit.*$" match)
97 (format #f
98 " ~a~% lt_dladdsearchdir(\"~a/lib\");~%"
99 match
100 (assoc-ref outputs "out"))))
2f4fbe1c 101
dc1d3cde
KK
102 ;; The usual /bin/sh...
103 (substitute* "ice-9/popen.scm"
104 (("/bin/sh") (which "sh")))
105 #t)))))
01eafd38 106 (inputs `(("gawk" ,gawk)
c44899a2
LC
107 ("readline" ,readline)))
108
109 ;; Since `guile-1.8.pc' has "Libs: ... -lgmp -lltdl", these must be
110 ;; propagated.
111 (propagated-inputs `(("gmp" ,gmp)
be11b102 112 ("libltdl" ,libltdl)))
c44899a2
LC
113
114 ;; When cross-compiling, a native version of Guile itself is needed.
115 (self-native-input? #t)
116
9be8d7c8
LC
117 (native-search-paths
118 (list (search-path-specification
119 (variable "GUILE_LOAD_PATH")
af070955 120 (files '("share/guile/site")))))
9be8d7c8 121
f50d2669 122 (synopsis "Scheme implementation intended especially for extensions")
c44899a2 123 (description
a22dc0c4
LC
124 "Guile is the GNU Ubiquitous Intelligent Language for Extensions, the
125official extension language of the GNU system. It is an implementation of
126the Scheme language which can be easily embedded in other applications to
127provide a convenient means of extending the functionality of the application
128without requiring the source code to be rewritten.")
6fd52309 129 (home-page "https://www.gnu.org/software/guile/")
71e0f217 130 (license license:lgpl2.0+)))
c44899a2
LC
131
132(define-public guile-2.0
133 (package
134 (name "guile")
b5efd14a 135 (version "2.0.14")
c44899a2 136 (source (origin
87f5d366 137 (method url-fetch)
0db342a5 138 (uri (string-append "mirror://gnu/guile/guile-" version
c44899a2
LC
139 ".tar.xz"))
140 (sha256
141 (base32
b5efd14a 142 "10lxc6l5alf3lzbs3ihnbfy6dfcrsyf8667wa57f26vf4mk2ai78"))))
c44899a2
LC
143 (build-system gnu-build-system)
144 (native-inputs `(("pkgconfig" ,pkg-config)))
145 (inputs `(("libffi" ,libffi)
88da729f 146 ,@(libiconv-if-needed)
baf549df
LC
147
148 ;; We need Bash when cross-compiling because some of the scripts
149 ;; in bin/ refer to it. Use 'bash-minimal' because we don't need
150 ;; an interactive Bash with Readline and all.
151 ,@(if (target-mingw?) '() `(("bash" ,bash-minimal)))))
c44899a2
LC
152 (propagated-inputs
153 `( ;; These ones aren't normally needed here, but since `libguile-2.0.la'
154 ;; reads `-lltdl -lunistring', adding them here will add the needed
155 ;; `-L' flags. As for why the `.la' file lacks the `-L' flags, see
156 ;; <http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/18903>.
157 ("libunistring" ,libunistring)
be11b102
LC
158
159 ;; Depend on LIBLTDL, not LIBTOOL. That way, we avoid some the extra
160 ;; dependencies that LIBTOOL has, which is helpful during bootstrap.
161 ("libltdl" ,libltdl)
c44899a2
LC
162
163 ;; The headers and/or `guile-2.0.pc' refer to these packages, so they
164 ;; must be propagated.
bda1bc6c 165 ("bdw-gc" ,libgc)
c44899a2
LC
166 ("gmp" ,gmp)))
167
168 (self-native-input? #t)
169
9bf62d9b
LC
170 (outputs '("out" "debug"))
171
8ffaa93b 172 (arguments
20897536
TGR
173 `(#:configure-flags '("--disable-static") ; saves 3 MiB
174 #:phases
175 (modify-phases %standard-phases
176 (add-before 'configure 'pre-configure
177 (lambda* (#:key inputs #:allow-other-keys)
178 ;; Tell (ice-9 popen) the file name of Bash.
179 (let ((bash (assoc-ref inputs "bash")))
180 (substitute* "module/ice-9/popen.scm"
181 ;; If bash is #f allow fallback for user to provide
182 ;; "bash" in PATH. This happens when cross-building to
183 ;; MinGW for which we do not have Bash yet.
184 (("/bin/sh")
185 ,@(if (target-mingw?)
186 '((if bash
187 (string-append bash "/bin/bash")
188 "bash"))
189 '((string-append bash "/bin/bash")))))
190 #t))))))
8ffaa93b 191
9be8d7c8
LC
192 (native-search-paths
193 (list (search-path-specification
194 (variable "GUILE_LOAD_PATH")
af070955 195 (files '("share/guile/site/2.0")))
9be8d7c8
LC
196 (search-path-specification
197 (variable "GUILE_LOAD_COMPILED_PATH")
b03f270e 198 (files '("lib/guile/2.0/site-ccache")))))
9be8d7c8 199
f50d2669 200 (synopsis "Scheme implementation intended especially for extensions")
c44899a2 201 (description
a22dc0c4
LC
202 "Guile is the GNU Ubiquitous Intelligent Language for Extensions, the
203official extension language of the GNU system. It is an implementation of
204the Scheme language which can be easily embedded in other applications to
205provide a convenient means of extending the functionality of the application
206without requiring the source code to be rewritten.")
6fd52309 207 (home-page "https://www.gnu.org/software/guile/")
71e0f217 208 (license license:lgpl3+)))
c44899a2 209
6f1ce09d
EB
210(define-public guile-2.0.13
211 ;; For testing a "minimal" Guix
212 (hidden-package
213 (package (inherit guile-2.0)
214 (name "guile")
215 (version "2.0.13")
216 (source (origin
217 (method url-fetch)
218 (uri (string-append "mirror://gnu/guile/guile-" version
219 ".tar.xz"))
220 (sha256
221 (base32
222 "12yqkr974y91ylgw6jnmci2v90i90s7h9vxa4zk0sai8vjnz4i1p")))))))
223
f6396d86 224(define-public guile-2.2
f906d30c 225 (package (inherit guile-2.0)
f6396d86 226 (name "guile")
2abd76e8 227 (version "2.2.4")
4eae7980
LC
228 (source (origin
229 (method url-fetch)
34d624ce
LC
230
231 ;; Note: we are limited to one of the compression formats
232 ;; supported by the bootstrap binaries, so no lzip here.
80a72572 233 (uri (string-append "mirror://gnu/guile/guile-" version
34d624ce 234 ".tar.xz"))
4eae7980
LC
235 (sha256
236 (base32
2abd76e8 237 "07p3g0v2ba2vlfbfidqzlgbhnzdx46wh2rgc5gszq1mjyx5bks6r"))
d9f0788a
LC
238 (modules '((guix build utils)))
239
240 ;; Remove the pre-built object files. Instead, build everything
241 ;; from source, at the expense of significantly longer build
242 ;; times (almost 3 hours on a 4-core Intel i5).
6cbee49d
MW
243 (snippet '(begin
244 (for-each delete-file
245 (find-files "prebuilt" "\\.go$"))
246 #t))))
4fbd0f4f 247 (properties '((timeout . 72000) ;20 hours
16b0f205 248 (max-silent-time . 36000))) ;10 hours (needed on ARM
1577a658 249 ; when heavily loaded)
dd90ed89
DT
250 (native-search-paths
251 (list (search-path-specification
252 (variable "GUILE_LOAD_PATH")
253 (files '("share/guile/site/2.2")))
254 (search-path-specification
255 (variable "GUILE_LOAD_COMPILED_PATH")
b03f270e 256 (files '("lib/guile/2.2/site-ccache")))))
33c3a214
LC
257
258 (arguments
259 (if (%current-target-system)
260 (substitute-keyword-arguments (package-arguments guile-2.0)
261 ((#:phases phases '%standard-phases)
262 `(modify-phases ,phases
263 (add-after 'unpack 'sacrifice-elisp-support
264 (lambda _
265 ;; Cross-compiling language/elisp/boot.el fails, so
266 ;; sacrifice it. See
267 ;; <https://git.savannah.gnu.org/cgit/guile.git/commit/?h=stable-2.2&id=988aa29238fca862c7e2cb55f15762a69b4c16ce>
268 ;; for the upstream fix.
269 (substitute* "module/Makefile.in"
270 (("language/elisp/boot\\.el")
271 "\n"))
ee8ee748
LC
272 #t))
273 ,@(if (hurd-target?)
274 `((add-after 'unpack 'allow-madvise-ENOSYS
275 (lambda _
276 ;; Do not warn about ENOSYS on 'madvise'. This is
277 ;; what Guile commit
278 ;; 45e4ace6603e00b297e6542362273041aebe7305 does.
279 ;; TODO: Remove for Guile >= 2.2.5.
280 (substitute* "libguile/vm.c"
281 (("perror \\(\"madvise failed\"\\)")
282 "if (errno != ENOSYS) perror (\"madvised failed\");"))
283 #t)))
284 '()))))
33c3a214 285 (package-arguments guile-2.0)))))
4eae7980 286
34d624ce
LC
287(define-public guile-2.2/fixed
288 ;; A package of Guile 2.2 that's rarely changed. It is the one used
289 ;; in the `base' module, and thus changing it entails a full rebuild.
290 (package
291 (inherit guile-2.2)
a9308efe 292 (properties '((hidden? . #t) ;people should install 'guile-2.2'
5a5b3632
MW
293 (timeout . 72000) ;20 hours
294 (max-silent-time . 36000))))) ;10 hours (needed on ARM
295 ; when heavily loaded)
34d624ce 296
5cd074ea 297(define-public guile-next
35f90377 298 ;; This is the upcoming Guile 3.0, with JIT support.
55b616fd
DT
299 (let ((commit "6f3357b0df64c4be17e72079864c09a542f1c779")
300 (revision "1"))
35f90377
LC
301 (package
302 (inherit guile-2.2)
303 (name "guile-next")
121f32a1 304 (version "2.9.1")
35f90377 305 (source (origin
121f32a1
LC
306 (inherit (package-source guile-2.2))
307 (uri (string-append "https://alpha.gnu.org/gnu/guile/guile-"
308 version ".tar.xz"))
35f90377
LC
309 (sha256
310 (base32
121f32a1 311 "0iba93yqn6mvgid0rfsrg4amym36pg9m8cqdplxsy222blrj9gh1"))))
e14b3067
DT
312 (native-search-paths
313 (list (search-path-specification
314 (variable "GUILE_LOAD_PATH")
315 (files '("share/guile/site/3.0")))
316 (search-path-specification
317 (variable "GUILE_LOAD_COMPILED_PATH")
318 (files '("lib/guile/3.0/site-ccache"
121f32a1
LC
319 "share/guile/site/3.0")))))
320 (properties '((ftp-server . "alpha.gnu.org")
321 (upstream-name . "guile"))))))
5cd074ea 322
2ba2c98d
LC
323(define (make-guile-readline guile)
324 (package
325 (name "guile-readline")
326 (version (package-version guile))
327 (source (package-source guile))
328 (build-system gnu-build-system)
329 (arguments
330 '(#:configure-flags '("--disable-silent-rules")
331 #:phases (modify-phases %standard-phases
332 (add-before 'build 'chdir
333 (lambda* (#:key outputs #:allow-other-keys)
334 (invoke "make" "-C" "libguile" "scmconfig.h")
335 (invoke "make" "-C" "lib")
336 (chdir "guile-readline")
337
338 (substitute* "Makefile"
339 (("../libguile/libguile-[[:graph:]]+\\.la")
340 ;; Remove dependency on libguile-X.Y.la.
341 "")
342 (("^READLINE_LIBS = (.*)$" _ libs)
343 ;; Link against the provided libguile.
344 (string-append "READLINE_LIBS = "
345 "-lguile-$(GUILE_EFFECTIVE_VERSION) "
346 libs "\n"))
347 (("\\$\\(top_builddir\\)/meta/build-env")
348 ;; Use the provided Guile, not the one from
349 ;; $(builddir).
350 "")
351
352 ;; Install modules to the 'site' directories.
353 (("^moddir = .*$")
354 "moddir = $(pkgdatadir)/site/$(GUILE_EFFECTIVE_VERSION)\n")
355 (("^ccachedir = .*$")
356 "ccachedir = $(pkglibdir)/$(GUILE_EFFECTIVE_VERSION)/site-ccache\n"))
357
358 ;; Load 'guile-readline.so' from the right place.
359 (substitute* "ice-9/readline.scm"
360 (("load-extension \"guile-readline\"")
361 (format #f "load-extension \
362 (string-append ~s \"/lib/guile/\" (effective-version) \"/extensions/guile-readline\")"
363 (assoc-ref outputs "out"))))
364 #t)))))
365 (home-page (package-home-page guile))
366 (native-inputs (package-native-inputs guile))
367 (inputs
368 `(,@(package-inputs guile) ;to placate 'configure'
369 ,@(package-propagated-inputs guile)
370 ("guile" ,guile)
371 ("readline" ,readline)))
372 (synopsis "Line editing support for GNU Guile")
373 (description
374 "This module provides line editing support via the Readline library for
375GNU@tie{}Guile. Use the @code{(ice-9 readline)} module and call its
376@code{activate-readline} procedure to enable it.")
377 (license license:gpl3+)))
378
379(define-public guile-readline
380 (make-guile-readline guile-2.2))
381
8f4acad7
LC
382(define (guile-variant-package-name prefix)
383 (lambda (name)
384 "Return NAME with PREFIX instead of \"guile-\", when applicable."
385 (if (string-prefix? "guile-" name)
386 (string-append prefix "-"
387 (string-drop name
388 (string-length "guile-")))
389 name)))
947a5d47 390
8f4acad7 391(define package-for-guile-2.0
10b507b2
LC
392 ;; A procedure that rewrites the dependency tree of the given package to use
393 ;; GUILE-2.0 instead of GUILE-2.2.
7d2be127 394 (package-input-rewriting (delay `((,guile-2.2 . ,guile-2.0)))
8f4acad7 395 (guile-variant-package-name "guile2.0")))
947a5d47 396
4eae7980 397(define-public guile-for-guile-emacs
f6396d86 398 (package (inherit guile-2.2)
4eae7980
LC
399 (name "guile-for-guile-emacs")
400 (version "20150510.d8d9a8d")
f906d30c
CAW
401 (source (origin
402 (method git-fetch)
403 (uri (git-reference
4eae7980
LC
404 (url "git://git.hcoop.net/git/bpt/guile.git")
405 (commit "d8d9a8da05ec876acba81a559798eb5eeceb5a17")))
51988e3a 406 (file-name (string-append name "-" version "-checkout"))
f906d30c
CAW
407 (sha256
408 (base32
4eae7980 409 "00sprsshy16y8pxjy126hr2adqcvvzzz96hjyjwgg8swva1qh6b0"))))
f906d30c 410 (arguments
8924e3fd
RW
411 `(;; Tests aren't passing for now.
412 ;; Obviously we should re-enable this!
413 #:tests? #f
414 ,@(package-arguments guile-2.2)))
f906d30c
CAW
415 (native-inputs
416 `(("autoconf" ,autoconf)
417 ("automake" ,automake)
418 ("libtool" ,libtool)
419 ("flex" ,flex)
420 ("texinfo" ,texinfo)
b94a6ca0 421 ("gettext" ,gettext-minimal)
f6396d86 422 ,@(package-native-inputs guile-2.2)))
daeb61f7
RW
423 ;; Same as in guile-2.0
424 (native-search-paths
425 (list (search-path-specification
426 (variable "GUILE_LOAD_PATH")
427 (files '("share/guile/site/2.0")))
428 (search-path-specification
429 (variable "GUILE_LOAD_COMPILED_PATH")
31769b9f 430 (files '("lib/guile/2.0/site-ccache"
daeb61f7 431 "share/guile/site/2.0")))))))
be3feafe 432
c44899a2
LC
433\f
434;;;
435;;; Extensions.
436;;;
437
6050a1fb
CR
438(define-public guile-json
439 (package
440 (name "guile-json")
15214828 441 (version "1.2.0")
f52ef55e 442 (home-page "https://github.com/aconchillo/guile-json")
6050a1fb 443 (source (origin
ffc72ec6 444 (method url-fetch)
6efccabe
EB
445 (uri (string-append "https://download.savannah.nongnu.org/releases/"
446 name "/" name "-" version ".tar.gz"))
ffc72ec6
LC
447 (sha256
448 (base32
6efccabe 449 "15gnb84d7hpazqhskkf3g9z4r6knw54wfj4ch5270kakz1lp70c9"))))
6050a1fb 450 (build-system gnu-build-system)
6efccabe 451 (native-inputs `(("pkg-config" ,pkg-config)
f52ef55e
LC
452 ("guile" ,guile-2.2)))
453 (inputs `(("guile" ,guile-2.2)))
6050a1fb
CR
454 (synopsis "JSON module for Guile")
455 (description
0f31d4f0
LC
456 "Guile-JSON supports parsing and building JSON documents according to the
457specification. These are the main features:
458
459@itemize
460@item Strictly complies to @uref{http://json.org, specification}.
461@item Build JSON documents programmatically via macros.
462@item Unicode support for strings.
463@item Allows JSON pretty printing.
464@end itemize\n")
15214828
LC
465
466 ;; Version 1.2.0 switched to GPLv3+ (from LGPLv3+).
467 (license license:gpl3+)))
6050a1fb 468
947a5d47 469(define-public guile2.2-json
2252f087
LC
470 (deprecated-package "guile2.2-json" guile-json))
471
472(define-public guile2.0-json
473 (package-for-guile-2.0 guile-json))
947a5d47 474
152d4076
LC
475(define-public guile-json-3
476 ;; This version is incompatible with 1.x; see the 'NEWS' file.
477 (package
478 (inherit guile-json)
479 (name "guile-json")
480 (version "3.1.0")
481 (source (origin
482 (method url-fetch)
483 (uri (string-append "https://download.savannah.nongnu.org/releases/"
484 name "/" name "-" version ".tar.gz"))
485 (sha256
486 (base32
487 "1yfqscz74i4vxylabd3s9l0wbdp8bg9qxnv1ixdm3b1l7zdx00z3"))))))
488
93e7199b
CAW
489;; There are two guile-gdbm packages, one using the FFI and one with
490;; direct C bindings, hence the verbose name.
491
492(define-public guile-gdbm-ffi
493 (package
494 (name "guile-gdbm-ffi")
495 (version "20120209.fa1d5b6")
496 (source (origin
497 (method git-fetch)
498 (uri (git-reference
499 (url "https://github.com/ijp/guile-gdbm.git")
500 (commit "fa1d5b6231d0e4d096687b378c025f2148c5f246")))
821f4dc2 501 (file-name (string-append name "-" version "-checkout"))
977d8666
LC
502 (patches (search-patches
503 "guile-gdbm-ffi-support-gdbm-1.14.patch"))
93e7199b
CAW
504 (sha256
505 (base32
506 "1j8wrsw7v9w6qkl47xz0rdikg50v16nn6kbs3lgzcymjzpa7babj"))))
977d8666
LC
507 (build-system guile-build-system)
508 (arguments
509 '(#:phases (modify-phases %standard-phases
510 (add-after 'unpack 'move-examples
511 (lambda* (#:key outputs #:allow-other-keys)
512 ;; Move examples where they belong.
513 (let* ((out (assoc-ref outputs "out"))
514 (doc (string-append out "/share/doc/"
515 (strip-store-file-name out)
516 "/examples")))
517 (copy-recursively "examples" doc)
518 (delete-file-recursively "examples")
519 #t)))
520 (add-after 'unpack 'set-libgdbm-file-name
521 (lambda* (#:key inputs #:allow-other-keys)
522 (substitute* "gdbm.scm"
523 (("\\(dynamic-link \"libgdbm\"\\)")
524 (format #f "(dynamic-link \"~a/lib/libgdbm.so\")"
525 (assoc-ref inputs "gdbm"))))
526 #t)))))
527 (native-inputs
528 `(("guile" ,guile-2.2)))
56f31a9f 529 (inputs
56f31a9f 530 `(("gdbm" ,gdbm)))
93e7199b
CAW
531 (home-page "https://github.com/ijp/guile-gdbm")
532 (synopsis "Guile bindings to the GDBM library via Guile's FFI")
533 (description
534 "Guile bindings to the GDBM key-value storage system, using
535Guile's foreign function interface.")
71e0f217 536 (license license:gpl3+)))
93e7199b 537
5bd3a841
LC
538(define-public guile2.0-gdbm-ffi
539 (package-for-guile-2.0 guile-gdbm-ffi))
540
2737bcff 541(define-public guile2.2-gdbm-ffi
5bd3a841 542 (deprecated-package "guile2.2-gdbm-ffi" guile-gdbm-ffi))
93e7199b 543
e8ac1f8f 544(define-public guile-sqlite3
319e26e4
LC
545 (package
546 (name "guile-sqlite3")
547 (version "0.1.0")
3527f600 548 (home-page "https://notabug.org/guile-sqlite3/guile-sqlite3.git")
319e26e4
LC
549 (source (origin
550 (method git-fetch)
551 (uri (git-reference
552 (url home-page)
553 (commit (string-append "v" version))))
554 (sha256
555 (base32
556 "1nv8j7wk6b5n4p22szyi8lv8fs31rrzxhzz16gyj8r38c1fyp9qp"))
557 (file-name (string-append name "-" version "-checkout"))))
558 (build-system gnu-build-system)
559 (native-inputs
560 `(("autoconf" ,autoconf)
561 ("automake" ,automake)
562 ("pkg-config" ,pkg-config)))
563 (inputs
564 `(("guile" ,guile-2.2)
565 ("sqlite" ,sqlite)))
566 (synopsis "Access SQLite databases from Guile")
567 (description
568 "This package provides Guile bindings to the SQLite database system.")
569 (license license:gpl3+)))
e8ac1f8f 570
c8e3651a
EB
571(define-public guile2.0-sqlite3
572 (package-for-guile-2.0 guile-sqlite3))
573
3b5783fc
AB
574(define-public guile-bytestructures
575 (package
576 (name "guile-bytestructures")
db58e326 577 (version "1.0.5")
3b5783fc 578 (source (origin
4f85f7f7 579 (method url-fetch)
580 (uri (string-append "https://github.com/TaylanUB/scheme-bytestructures"
581 "/releases/download/v" version
582 "/bytestructures-" version ".tar.gz"))
3b5783fc
AB
583 (sha256
584 (base32
db58e326 585 "0ibk7fjwpb450lnrva4bx45sgln3pbyb645az4ansvh1spgani43"))))
4f85f7f7 586 (build-system gnu-build-system)
726ecfeb 587 (native-inputs
4f85f7f7 588 `(("pkg-config" ,pkg-config)))
3b5783fc 589 (inputs
aabece2e 590 `(("guile" ,guile-2.2)))
3b5783fc
AB
591 (home-page "https://github.com/TaylanUB/scheme-bytestructures")
592 (synopsis "Structured access to bytevector contents for Guile")
593 (description
594 "Guile bytestructures offers a system imitating the type system
595of the C programming language, to be used on bytevectors. C's type
596system works on raw memory, and Guile works on bytevectors which are
597an abstraction over raw memory. It's also more powerful than the C
598type system, elevating types to first-class status.")
71e0f217 599 (license license:gpl3+)))
3b5783fc 600
726ecfeb
LC
601(define-public guile2.0-bytestructures
602 (package-for-guile-2.0 guile-bytestructures))
603
bd233722 604(define-public guile-git
e85035c9
LC
605 (package
606 (name "guile-git")
db9771a9 607 (version "0.2.0")
e85035c9
LC
608 (home-page "https://gitlab.com/guile-git/guile-git.git")
609 (source (origin
610 (method git-fetch)
611 (uri (git-reference (url home-page)
612 (commit (string-append "v" version))))
613 (sha256
614 (base32
db9771a9 615 "018hmfsh0rjwfvr4h7y10jc6k8a2k9xsirngghy3pjasin4nd2yz"))
e85035c9
LC
616 (file-name (git-file-name name version))))
617 (build-system gnu-build-system)
618 (native-inputs
619 `(("autoconf" ,autoconf)
620 ("automake" ,automake)
621 ("texinfo" ,texinfo)
622 ("pkg-config" ,pkg-config)))
623 (inputs
624 `(("guile" ,guile-2.2)
625 ("libgit2" ,libgit2)))
626 (propagated-inputs
627 `(("guile-bytestructures" ,guile-bytestructures)))
628 (synopsis "Guile bindings for libgit2")
629 (description
630 "This package provides Guile bindings to libgit2, a library to
bd233722 631manipulate repositories of the Git version control system.")
e85035c9 632 (license license:gpl3+)))
c5793e7e 633
70bc6085
LC
634(define-public guile2.0-git
635 (package-for-guile-2.0 guile-git))
636
1722d680 637;;; guile.scm ends here
a8307a17 638