diff options
| author | Ludovic Courtès <ludo@gnu.org> | 2017-07-02 22:45:33 +0200 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2017-07-02 22:52:30 +0200 |
| commit | 1b0f266e40aead09be95a984bd9c6cec3dff397e (patch) | |
| tree | 0076be5d4f4fc82114dc27deb5433f5587126266 /gnu | |
| parent | 61f81618a87ce4fc3b93c3ac3fa7aa2f148c1ed8 (diff) | |
gnu: Switch guile-cairo and dependents to Guile 2.2 again.
Fixes <https://bugs.gnu.org/27551>.
Reported by Leo Famulari <leo@famulari.name>.
This reinstates the following commits:
e3ddb1e83 * gnu: guile-cairo: Switch to Guile 2.2.
ae5c6ef39 * gnu: guile-gnome: Update to 2.16.5.
0fd8013fc * gnu: guile-rsvg: Update to commit 05c6a2fd.
66b9183c4 * gnu: guile-lib: Switch to Guile 2.2.
and adds the following changes:
* gnu/bootloader/grub.scm (svg->png): Add 'package->derivation' call for
GUILE-2.2. Pass #:guile-for-build to 'gexp->derivation'.
* gnu/build/svg.scm (svg->png): Add 'em' and 'ex' to the 'let-values'
form to account for all the values returned by
'rsvg-handle-get-dimensions', which Guile 2.2 does not truncate.
Diffstat (limited to 'gnu')
| -rw-r--r-- | gnu/bootloader/grub.scm | 35 | ||||
| -rw-r--r-- | gnu/build/svg.scm | 4 | ||||
| -rw-r--r-- | gnu/packages/gtk.scm | 94 | ||||
| -rw-r--r-- | gnu/packages/guile.scm | 9 | ||||
| -rw-r--r-- | gnu/packages/patches/guile-rsvg-pkgconfig.patch | 2 | ||||
| -rw-r--r-- | gnu/packages/plotutils.scm | 4 | ||||
| -rw-r--r-- | gnu/packages/skribilo.scm | 2 |
7 files changed, 83 insertions, 67 deletions
diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm index f1cc3324db9..880491c9832 100644 --- a/gnu/bootloader/grub.scm +++ b/gnu/bootloader/grub.scm | |||
| @@ -34,6 +34,7 @@ | |||
| 34 | #:autoload (gnu packages bootloaders) (grub) | 34 | #:autoload (gnu packages bootloaders) (grub) |
| 35 | #:autoload (gnu packages compression) (gzip) | 35 | #:autoload (gnu packages compression) (gzip) |
| 36 | #:autoload (gnu packages gtk) (guile-cairo guile-rsvg) | 36 | #:autoload (gnu packages gtk) (guile-cairo guile-rsvg) |
| 37 | #:autoload (gnu packages guile) (guile-2.2) | ||
| 37 | #:use-module (ice-9 match) | 38 | #:use-module (ice-9 match) |
| 38 | #:use-module (ice-9 regex) | 39 | #:use-module (ice-9 regex) |
| 39 | #:use-module (srfi srfi-1) | 40 | #:use-module (srfi srfi-1) |
| @@ -118,21 +119,25 @@ otherwise." | |||
| 118 | 119 | ||
| 119 | (define* (svg->png svg #:key width height) | 120 | (define* (svg->png svg #:key width height) |
| 120 | "Build a PNG of HEIGHT x WIDTH from SVG." | 121 | "Build a PNG of HEIGHT x WIDTH from SVG." |
| 121 | (gexp->derivation "grub-image.png" | 122 | ;; Note: Guile-RSVG & co. are now built for Guile 2.2, so we use 2.2 here. |
| 122 | (with-imported-modules '((gnu build svg)) | 123 | ;; TODO: Remove #:guile-for-build when 2.2 has become the default. |
| 123 | #~(begin | 124 | (mlet %store-monad ((guile (package->derivation guile-2.2 #:graft? #f))) |
| 124 | ;; We need these two libraries. | 125 | (gexp->derivation "grub-image.png" |
| 125 | (add-to-load-path (string-append #+guile-rsvg | 126 | (with-imported-modules '((gnu build svg)) |
| 126 | "/share/guile/site/" | 127 | #~(begin |
| 127 | (effective-version))) | 128 | ;; We need these two libraries. |
| 128 | (add-to-load-path (string-append #+guile-cairo | 129 | (add-to-load-path (string-append #+guile-rsvg |
| 129 | "/share/guile/site/" | 130 | "/share/guile/site/" |
| 130 | (effective-version))) | 131 | (effective-version))) |
| 131 | 132 | (add-to-load-path (string-append #+guile-cairo | |
| 132 | (use-modules (gnu build svg)) | 133 | "/share/guile/site/" |
| 133 | (svg->png #+svg #$output | 134 | (effective-version))) |
| 134 | #:width #$width | 135 | |
| 135 | #:height #$height))))) | 136 | (use-modules (gnu build svg)) |
| 137 | (svg->png #+svg #$output | ||
| 138 | #:width #$width | ||
| 139 | #:height #$height))) | ||
| 140 | #:guile-for-build guile))) | ||
| 136 | 141 | ||
| 137 | (define* (grub-background-image config #:key (width 1024) (height 768)) | 142 | (define* (grub-background-image config #:key (width 1024) (height 768)) |
| 138 | "Return the GRUB background image defined in CONFIG with a ratio of | 143 | "Return the GRUB background image defined in CONFIG with a ratio of |
diff --git a/gnu/build/svg.scm b/gnu/build/svg.scm index f7e92a1a199..b5474ec4a09 100644 --- a/gnu/build/svg.scm +++ b/gnu/build/svg.scm | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com> | 3 | ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com> |
| 4 | ;;; | 4 | ;;; |
| 5 | ;;; This file is part of GNU Guix. | 5 | ;;; This file is part of GNU Guix. |
| @@ -50,7 +50,7 @@ dimensions of IN-SVG." | |||
| 50 | (define svg | 50 | (define svg |
| 51 | (rsvg-handle-new-from-file in-svg)) | 51 | (rsvg-handle-new-from-file in-svg)) |
| 52 | 52 | ||
| 53 | (let-values (((origin-width origin-height) | 53 | (let-values (((origin-width origin-height em ex) |
| 54 | (rsvg-handle-get-dimensions svg))) | 54 | (rsvg-handle-get-dimensions svg))) |
| 55 | (let* ((surf (cairo-image-surface-create 'argb32 | 55 | (let* ((surf (cairo-image-surface-create 'argb32 |
| 56 | origin-width origin-height)) | 56 | origin-width origin-height)) |
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 1d9ee15246f..d5b472049d8 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm | |||
| @@ -795,7 +795,7 @@ application suites.") | |||
| 795 | (inputs | 795 | (inputs |
| 796 | `(("guile-lib" ,guile-lib) | 796 | `(("guile-lib" ,guile-lib) |
| 797 | ("expat" ,expat) | 797 | ("expat" ,expat) |
| 798 | ("guile" ,guile-2.0))) | 798 | ("guile" ,guile-2.2))) |
| 799 | (propagated-inputs | 799 | (propagated-inputs |
| 800 | ;; The .pc file refers to 'cairo'. | 800 | ;; The .pc file refers to 'cairo'. |
| 801 | `(("cairo" ,cairo))) | 801 | `(("cairo" ,cairo))) |
| @@ -813,43 +813,49 @@ exceptions, macros, and a dynamic programming environment.") | |||
| 813 | (license license:lgpl3+))) | 813 | (license license:lgpl3+))) |
| 814 | 814 | ||
| 815 | (define-public guile-rsvg | 815 | (define-public guile-rsvg |
| 816 | (package | 816 | ;; Use a recent snapshot that supports Guile 2.2 and beyond. |
| 817 | (name "guile-rsvg") | 817 | (let ((commit "05c6a2fd67e4fea1a7c3ff776729dc931bae6678") |
| 818 | (version "2.18.1") | 818 | (revision "0")) |
| 819 | (source (origin | 819 | (package |
| 820 | (method url-fetch) | 820 | (name "guile-rsvg") |
| 821 | (uri (string-append "http://wingolog.org/pub/guile-rsvg/" | 821 | (version (string-append "2.18.1-" revision "." |
| 822 | name "-" version ".tar.gz")) | 822 | (string-take commit 7))) |
| 823 | (sha256 | 823 | (source (origin |
| 824 | (base32 | 824 | (method url-fetch) |
| 825 | "136f236iw3yrrz6pkkp1ma9c5mrs5icqha6pnawinqpk892r3jh7")) | 825 | (uri (string-append "https://gitlab.com/wingo/guile-rsvg/" |
| 826 | (patches (search-patches "guile-rsvg-pkgconfig.patch")) | 826 | "repository/archive.tar.gz?ref=" |
| 827 | (modules '((guix build utils))) | 827 | commit)) |
| 828 | (snippet | 828 | (sha256 |
| 829 | '(substitute* (find-files "." "Makefile\\.am") | 829 | (base32 |
| 830 | (("/share/guile/site") | 830 | "0vdzjx8l5nc4y2xjqs0g1rqn1zrwfsm30brh5gz00r1x41a2pvv2")) |
| 831 | "/share/guile/site/2.0"))))) | 831 | (patches (search-patches "guile-rsvg-pkgconfig.patch")) |
| 832 | (build-system gnu-build-system) | 832 | (modules '((guix build utils))) |
| 833 | (arguments | 833 | (snippet |
| 834 | `(#:phases (modify-phases %standard-phases | 834 | '(substitute* (find-files "." "Makefile\\.am") |
| 835 | (add-before 'configure 'bootstrap | 835 | (("/share/guile/site") |
| 836 | (lambda _ | 836 | "/share/guile/site/@GUILE_EFFECTIVE_VERSION@"))) |
| 837 | (zero? (system* "autoreconf" "-vfi"))))))) | 837 | (file-name (string-append name "-" version ".tar.gz")))) |
| 838 | (native-inputs `(("pkg-config" ,pkg-config) | 838 | (build-system gnu-build-system) |
| 839 | ("autoconf" ,autoconf) | 839 | (arguments |
| 840 | ("automake" ,automake) | 840 | `(#:phases (modify-phases %standard-phases |
| 841 | ("libtool" ,libtool) | 841 | (add-before 'configure 'bootstrap |
| 842 | ("texinfo" ,texinfo))) | 842 | (lambda _ |
| 843 | (inputs `(("guile" ,guile-2.0) | 843 | (zero? (system* "autoreconf" "-vfi"))))))) |
| 844 | ("librsvg" ,librsvg) | 844 | (native-inputs `(("pkg-config" ,pkg-config) |
| 845 | ("guile-lib" ,guile-lib))) ;for (unit-test) | 845 | ("autoconf" ,autoconf) |
| 846 | (propagated-inputs `(("guile-cairo" ,guile-cairo))) | 846 | ("automake" ,automake) |
| 847 | (synopsis "Render SVG images using Cairo from Guile") | 847 | ("libtool" ,libtool) |
| 848 | (description | 848 | ("texinfo" ,texinfo))) |
| 849 | "Guile-RSVG wraps the RSVG library for Guile, allowing you to render SVG | 849 | (inputs `(("guile" ,guile-2.2) |
| 850 | ("librsvg" ,librsvg) | ||
| 851 | ("guile-lib" ,guile-lib))) ;for (unit-test) | ||
| 852 | (propagated-inputs `(("guile-cairo" ,guile-cairo))) | ||
| 853 | (synopsis "Render SVG images using Cairo from Guile") | ||
| 854 | (description | ||
| 855 | "Guile-RSVG wraps the RSVG library for Guile, allowing you to render SVG | ||
| 850 | images onto Cairo surfaces.") | 856 | images onto Cairo surfaces.") |
| 851 | (home-page "http://wingolog.org/projects/guile-rsvg/") | 857 | (home-page "http://wingolog.org/projects/guile-rsvg/") |
| 852 | (license license:lgpl2.1+))) | 858 | (license license:lgpl2.1+)))) |
| 853 | 859 | ||
| 854 | (define-public guile-present | 860 | (define-public guile-present |
| 855 | (package | 861 | (package |
| @@ -883,7 +889,7 @@ images onto Cairo surfaces.") | |||
| 883 | out "/share/guile/site/2.0 "))))) | 889 | out "/share/guile/site/2.0 "))))) |
| 884 | %standard-phases))) | 890 | %standard-phases))) |
| 885 | (native-inputs `(("pkg-config" ,pkg-config))) | 891 | (native-inputs `(("pkg-config" ,pkg-config))) |
| 886 | (inputs `(("guile" ,guile-2.0))) | 892 | (inputs `(("guile" ,guile-2.2))) |
| 887 | (propagated-inputs | 893 | (propagated-inputs |
| 888 | ;; These are used by the (present …) modules. | 894 | ;; These are used by the (present …) modules. |
| 889 | `(("guile-lib" ,guile-lib) | 895 | `(("guile-lib" ,guile-lib) |
| @@ -902,7 +908,7 @@ documents.") | |||
| 902 | (define-public guile-gnome | 908 | (define-public guile-gnome |
| 903 | (package | 909 | (package |
| 904 | (name "guile-gnome") | 910 | (name "guile-gnome") |
| 905 | (version "2.16.4") | 911 | (version "2.16.5") |
| 906 | (source (origin | 912 | (source (origin |
| 907 | (method url-fetch) | 913 | (method url-fetch) |
| 908 | (uri | 914 | (uri |
| @@ -911,7 +917,7 @@ documents.") | |||
| 911 | version ".tar.gz")) | 917 | version ".tar.gz")) |
| 912 | (sha256 | 918 | (sha256 |
| 913 | (base32 | 919 | (base32 |
| 914 | "1hqnqbb2lmr3hgbcv9kds1himn3av6h0lkk0zll8agcrsn7d9axd")))) | 920 | "1gnf3j96nip5kl99a268i0dy1hj7s1cfs66sps3zwysnkd7qr399")))) |
| 915 | (build-system gnu-build-system) | 921 | (build-system gnu-build-system) |
| 916 | (native-inputs | 922 | (native-inputs |
| 917 | `(("pkg-config" ,pkg-config) | 923 | `(("pkg-config" ,pkg-config) |
| @@ -930,7 +936,7 @@ documents.") | |||
| 930 | ("pango" ,pango) | 936 | ("pango" ,pango) |
| 931 | ("libffi" ,libffi) | 937 | ("libffi" ,libffi) |
| 932 | ("glib" ,glib))) | 938 | ("glib" ,glib))) |
| 933 | (inputs `(("guile" ,guile-2.0))) | 939 | (inputs `(("guile" ,guile-2.2))) |
| 934 | (propagated-inputs | 940 | (propagated-inputs |
| 935 | `(("guile-cairo" ,guile-cairo) | 941 | `(("guile-cairo" ,guile-cairo) |
| 936 | ("g-wrap" ,g-wrap) | 942 | ("g-wrap" ,g-wrap) |
| @@ -943,7 +949,7 @@ documents.") | |||
| 943 | (let ((out (assoc-ref outputs "out"))) | 949 | (let ((out (assoc-ref outputs "out"))) |
| 944 | (substitute* (find-files "." "^Makefile.in$") | 950 | (substitute* (find-files "." "^Makefile.in$") |
| 945 | (("guilesite :=.*guile/site" all) | 951 | (("guilesite :=.*guile/site" all) |
| 946 | (string-append all "/2.0"))) | 952 | (string-append all "/@GUILE_EFFECTIVE_VERSION@"))) |
| 947 | #t)))))) | 953 | #t)))))) |
| 948 | (outputs '("out" "debug")) | 954 | (outputs '("out" "debug")) |
| 949 | (synopsis "Guile interface for GTK+ programming for GNOME") | 955 | (synopsis "Guile interface for GTK+ programming for GNOME") |
| @@ -951,7 +957,9 @@ documents.") | |||
| 951 | "Includes guile-clutter, guile-gnome-gstreamer, | 957 | "Includes guile-clutter, guile-gnome-gstreamer, |
| 952 | guile-gnome-platform (GNOME developer libraries), and guile-gtksourceview.") | 958 | guile-gnome-platform (GNOME developer libraries), and guile-gtksourceview.") |
| 953 | (home-page "https://www.gnu.org/software/guile-gnome/") | 959 | (home-page "https://www.gnu.org/software/guile-gnome/") |
| 954 | (license license:gpl2+))) | 960 | (license license:gpl2+) |
| 961 | (properties '((upstream-name . "guile-gnome-platform") | ||
| 962 | (ftp-directory . "/gnu/guile-gnome/guile-gnome-platform"))))) | ||
| 955 | 963 | ||
| 956 | ;;; | 964 | ;;; |
| 957 | ;;; C++ bindings. | 965 | ;;; C++ bindings. |
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 7f6d15515c2..6bff343429a 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm | |||
| @@ -624,7 +624,7 @@ format is also supported.") | |||
| 624 | ("gettext" ,gettext-minimal) | 624 | ("gettext" ,gettext-minimal) |
| 625 | ("pkg-config" ,pkg-config))) | 625 | ("pkg-config" ,pkg-config))) |
| 626 | (inputs `(("guile" ,guile-2.0) ("which" ,which))) | 626 | (inputs `(("guile" ,guile-2.0) ("which" ,which))) |
| 627 | (propagated-inputs `(("guile-lib" ,guile-lib))) | 627 | (propagated-inputs `(("guile-lib" ,guile2.0-lib))) |
| 628 | (home-page "https://github.com/artyom-poptsov/guile-ics") | 628 | (home-page "https://github.com/artyom-poptsov/guile-ics") |
| 629 | (synopsis "Guile parser library for the iCalendar format") | 629 | (synopsis "Guile parser library for the iCalendar format") |
| 630 | (description | 630 | (description |
| @@ -661,7 +661,7 @@ The library is shipped with documentation in Info format and usage examples.") | |||
| 661 | $(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")) | 661 | $(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")) |
| 662 | #t))))) | 662 | #t))))) |
| 663 | (native-inputs `(("pkg-config" ,pkg-config))) | 663 | (native-inputs `(("pkg-config" ,pkg-config))) |
| 664 | (inputs `(("guile" ,guile-2.0))) | 664 | (inputs `(("guile" ,guile-2.2))) |
| 665 | (home-page "http://www.nongnu.org/guile-lib/") | 665 | (home-page "http://www.nongnu.org/guile-lib/") |
| 666 | (synopsis "Collection of useful Guile Scheme modules") | 666 | (synopsis "Collection of useful Guile Scheme modules") |
| 667 | (description | 667 | (description |
| @@ -675,8 +675,11 @@ for Guile\".") | |||
| 675 | ;; details. | 675 | ;; details. |
| 676 | (license license:gpl3+))) | 676 | (license license:gpl3+))) |
| 677 | 677 | ||
| 678 | (define-public guile2.0-lib | ||
| 679 | (package-for-guile-2.0 guile-lib)) | ||
| 680 | |||
| 678 | (define-public guile2.2-lib | 681 | (define-public guile2.2-lib |
| 679 | (package-for-guile-2.2 guile-lib)) | 682 | (deprecated-package "guile2.2-lib" guile-lib)) |
| 680 | 683 | ||
| 681 | (define-public guile-json | 684 | (define-public guile-json |
| 682 | (package | 685 | (package |
diff --git a/gnu/packages/patches/guile-rsvg-pkgconfig.patch b/gnu/packages/patches/guile-rsvg-pkgconfig.patch index 2272b4e1cd0..51483a3472a 100644 --- a/gnu/packages/patches/guile-rsvg-pkgconfig.patch +++ b/gnu/packages/patches/guile-rsvg-pkgconfig.patch | |||
| @@ -9,7 +9,7 @@ and LDFLAGS for Guile would not be captured. | |||
| 9 | 9 | ||
| 10 | +dnl The above macro fails to set the 'GUILE_CFLAGS' and 'GUILE_LIBS' | 10 | +dnl The above macro fails to set the 'GUILE_CFLAGS' and 'GUILE_LIBS' |
| 11 | +dnl substitution variables, hence this line. | 11 | +dnl substitution variables, hence this line. |
| 12 | +PKG_CHECK_MODULES(GUILE, guile-2.0) | 12 | +PKG_CHECK_MODULES(GUILE, guile-$GUILE_EFFECTIVE_VERSION) |
| 13 | + | 13 | + |
| 14 | PKG_CHECK_MODULES(GUILE_CAIRO, guile-cairo >= 1.4.0) | 14 | PKG_CHECK_MODULES(GUILE_CAIRO, guile-cairo >= 1.4.0) |
| 15 | AC_SUBST(GUILE_CAIRO_LIBS) | 15 | AC_SUBST(GUILE_CAIRO_LIBS) |
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm index f94d56992e9..482ae1b8628 100644 --- a/gnu/packages/plotutils.scm +++ b/gnu/packages/plotutils.scm | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> | 3 | ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> |
| 4 | ;;; Copyright © 2016, 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr> | 4 | ;;; Copyright © 2016, 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr> |
| 5 | ;;; | 5 | ;;; |
| @@ -100,7 +100,7 @@ scientific data.") | |||
| 100 | "godir = $(moddir)\n")))))) | 100 | "godir = $(moddir)\n")))))) |
| 101 | (build-system gnu-build-system) | 101 | (build-system gnu-build-system) |
| 102 | (native-inputs `(("pkg-config" ,pkg-config))) | 102 | (native-inputs `(("pkg-config" ,pkg-config))) |
| 103 | (inputs `(("guile" ,guile-2.0))) | 103 | (inputs `(("guile" ,guile-2.2))) |
| 104 | (propagated-inputs `(("guile-cairo" ,guile-cairo))) | 104 | (propagated-inputs `(("guile-cairo" ,guile-cairo))) |
| 105 | (home-page "http://wingolog.org/software/guile-charting/") | 105 | (home-page "http://wingolog.org/software/guile-charting/") |
| 106 | (synopsis "Create charts and graphs in Guile") | 106 | (synopsis "Create charts and graphs in Guile") |
diff --git a/gnu/packages/skribilo.scm b/gnu/packages/skribilo.scm index 78b4806c8c3..458d91e5695 100644 --- a/gnu/packages/skribilo.scm +++ b/gnu/packages/skribilo.scm | |||
| @@ -74,7 +74,7 @@ | |||
| 74 | ;; The 'skribilo' command needs them, and for people using Skribilo as a | 74 | ;; The 'skribilo' command needs them, and for people using Skribilo as a |
| 75 | ;; library, these inputs are needed as well. | 75 | ;; library, these inputs are needed as well. |
| 76 | (propagated-inputs `(("guile-reader" ,guile2.0-reader) | 76 | (propagated-inputs `(("guile-reader" ,guile2.0-reader) |
| 77 | ("guile-lib" ,guile-lib))) | 77 | ("guile-lib" ,guile2.0-lib))) |
| 78 | 78 | ||
| 79 | (home-page "http://www.nongnu.org/skribilo/") | 79 | (home-page "http://www.nongnu.org/skribilo/") |
| 80 | (synopsis "Document production tool written in Guile Scheme") | 80 | (synopsis "Document production tool written in Guile Scheme") |
