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