aboutsummaryrefslogtreecommitdiff
path: root/guix.scm
blob: 1c68b70b1572f4009f3f9ac766d8a614a38f2cba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
;;; guix.scm  --  Build recipe for GNU Guix.
;;;
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of Skribilo.
;;;
;;; Skribilo is free software: you can redistribute it and/or modify
;;; it under the terms of the GNU General Public License as published by
;;; the Free Software Foundation, either version 3 of the License, or
;;; (at your option) any later version.
;;;
;;; Skribilo is distributed in the hope that it will be useful,
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with Skribilo.  If not, see <http://www.gnu.org/licenses/>.

(use-modules (gnu) (guix)
             (guix profiles)
             (guix build-system gnu)
             ((guix git-download) #:select (git-predicate))
             (guix licenses)
             (srfi srfi-1))

(define S specification->package)

(define skribilo
  (package
    (name "skribilo")
    (version "0.0-git")
    (source (local-file "." "skribilo-checkout"
                        #:recursive? #t
                        #:select?
                        (git-predicate (current-source-directory))))
    (build-system gnu-build-system)
    (arguments
     '(#:phases (modify-phases %standard-phases
                  (add-after 'unpack 'make-po-files-writable
                    (lambda _
                      (for-each make-file-writable (find-files "po"))
                      #t)))))
    (native-inputs
     `(("pkg-config" ,(S "pkg-config"))
       ("autoconf" ,(S "autoconf"))
       ("automake" ,(S "automake"))
       ("gettext" ,(S "gettext"))))
    (inputs
     `(("guile" ,(S "guile"))
       ("imagemagick" ,(S "imagemagick"))         ;'convert'
       ("ghostscript" ,(S "ghostscript"))         ;'ps2pdf'
       ("ploticus" ,(S "ploticus"))
       ("lout" ,(S "lout"))))

    ;; The 'skribilo' command needs them, and for people using Skribilo as a
    ;; library, these inputs are needed as well.
    (propagated-inputs
     `(("guile-reader" ,(S "guile-reader"))
       ("guile-lib" ,(S "guile-lib"))))

    (home-page "https://www.nongnu.org/skribilo/")
    (synopsis "Document production tool written in Guile Scheme")
    (description
     "Skribilo is a free document production tool that takes a structured
document representation as its input and renders that document in a variety of
output formats: HTML and Info for on-line browsing, and Lout and LaTeX for
high-quality hard copies.

The input document can use Skribilo's markup language to provide information
about the document's structure, which is similar to HTML or LaTeX and does not
require expertise.  Alternatively, it can use a simpler, “markup-less” format
that borrows from Emacs' outline mode and from other conventions used in
emails, Usenet and text.

Lastly, Skribilo provides Guile Scheme APIs.")
    (license gpl3+)))

(define with-guile-2.0
  (package-input-rewriting/spec `(("guile" . ,(const (S "guile@2.0"))))
                                #:deep? #f))

(define with-guile-2.2
  (package-input-rewriting/spec `(("guile" . ,(const (S "guile@2.2"))))
                                #:deep? #f))

(define skribilo/guile-2.2
  (package
    (inherit (with-guile-2.2 skribilo))
    (name "guile2.2-skribilo")
    ;; Arrange to not trigger a rebuild of Automake & co.
    (inputs `(("guile" ,(S "guile@2.2"))
              ,@(alist-delete "guile" (package-inputs skribilo))))
    (native-inputs (package-native-inputs skribilo))))

(define skribilo/guile-2.0
  (package
    (inherit (with-guile-2.0 skribilo))
    (name "guile2.0-skribilo")
    (inputs `(("guile" ,(S "guile@2.0"))
              ,@(alist-delete "guile" (package-inputs skribilo))))
    (native-inputs (package-native-inputs skribilo))))

(packages->manifest (list skribilo/guile-2.0
                          skribilo/guile-2.2
                          skribilo))

;; Comment the following line to build all the variants.
skribilo