1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2014, 2018 Ludovic Courtès <ludo@gnu.org>
3 ;;; Copyright © 2014, 2016 Andreas Enge <andreas@enge.fr>
4 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
5 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
6 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
7 ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
8 ;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il>
9 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
10 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
11 ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
12 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
14 ;;; This file is part of GNU Guix.
16 ;;; GNU Guix is free software; you can redistribute it and/or modify it
17 ;;; under the terms of the GNU General Public License as published by
18 ;;; the Free Software Foundation; either version 3 of the License, or (at
19 ;;; your option) any later version.
21 ;;; GNU Guix is distributed in the hope that it will be useful, but
22 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
23 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 ;;; GNU General Public License for more details.
26 ;;; You should have received a copy of the GNU General Public License
27 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
29 (define-module (gnu packages documentation)
30 #:use-module (guix licenses)
31 #:use-module (guix packages)
32 #:use-module (guix download)
33 #:use-module (guix git-download)
34 #:use-module (guix build-system gnu)
35 #:use-module (guix build-system cmake)
36 #:use-module (guix build-system qt)
37 #:use-module (gnu packages)
38 #:use-module (gnu packages autotools)
39 #:use-module (gnu packages backup)
40 #:use-module (gnu packages base)
41 #:use-module (gnu packages bash)
42 #:use-module (gnu packages python)
43 #:use-module (gnu packages bison)
44 #:use-module (gnu packages kde-frameworks)
45 #:use-module (gnu packages docbook)
46 #:use-module (gnu packages flex)
47 #:use-module (gnu packages graphviz)
48 #:use-module (gnu packages gettext)
49 #:use-module (gnu packages glib)
50 #:use-module (gnu packages perl)
51 #:use-module (gnu packages pkg-config)
52 #:use-module (gnu packages qt)
53 #:use-module (gnu packages sqlite)
54 #:use-module (gnu packages xml)
55 #:use-module (gnu packages xorg))
57 (define-public latex2html
66 (url "https://github.com/latex2html/latex2html.git")
67 (commit (string-append "v" version))))
68 (file-name (git-file-name name version))
70 (base32 "1icyl6kl60wh7cavprgbd8q6lpjwr7wn24m34kpiif7ahknhcbcm"))))
71 (build-system gnu-build-system)
74 (modify-phases %standard-phases
75 (add-after 'unpack 'patch-configure
76 (lambda* (#:key outputs #:allow-other-keys)
77 (substitute* "configure"
79 (assoc-ref outputs "out"))
80 (("\\$\\{CONFIG_SHELL-/bin/sh\\}")
85 (invoke "./configure")
87 (add-after 'configure 'patch-cfgcache
88 (lambda* (#:key outputs #:allow-other-keys)
89 (substitute* "cfgcache.pm"
91 (assoc-ref outputs "out")))
95 (synopsis "LaTeX documents to HTML")
96 (description "LaTeX2HTML is a utility that converts LaTeX documents to web
98 (home-page "https://www.latex2html.org/")
101 (define-public asciidoc
108 (url "https://github.com/asciidoc/asciidoc")
110 (file-name (git-file-name name version))
113 "1hrqkgjmp1gq3f9rkbr8l0y62fzvwb9n8ys35s25bg2ld04y4g4y"))))
114 (build-system gnu-build-system)
116 `(#:tests? #f ; no 'check' target
118 (modify-phases %standard-phases
121 (invoke "autoconf")))
122 ;; Some XML-related binaries are required for asciidoc's proper usage.
123 ;; Without these, asciidoc fails when parsing XML documents, either
124 ;; reporting a missing "xmllint" binary or, when passed the
125 ;; "--no-xmllint" option, a missing "xsltproc" binary.
126 ;; The following phase enables asciidoc to find some of them.
127 (add-before 'configure 'set-xml-binary-paths
128 (lambda* (#:key inputs #:allow-other-keys)
129 (let* ((libxml2 (assoc-ref inputs "libxml2"))
130 (xmllint (string-append libxml2 "/bin/xmllint"))
131 (libxslt (assoc-ref inputs "libxslt"))
132 (xsltproc (string-append libxslt "/bin/xsltproc")))
133 (substitute* "a2x.py"
134 (("XMLLINT = 'xmllint'")
135 (string-append "XMLLINT = '" xmllint "'"))
136 (("XSLTPROC = 'xsltproc'")
137 (string-append "XSLTPROC = '" xsltproc "'")))
139 ;; Make asciidoc use the local docbook-xsl package instead of fetching
140 ;; it from the internet at run-time.
141 (add-before 'install 'make-local-docbook-xsl
142 (lambda* (#:key inputs #:allow-other-keys)
143 (substitute* (find-files "docbook-xsl" ".*\\.xsl$")
144 (("xsl:import href=\"http://docbook.sourceforge.net/\
145 release/xsl/current")
148 (string-append (assoc-ref inputs "docbook-xsl")
149 "/xml/xsl/docbook-xsl-"
150 ,(package-version docbook-xsl)))))
152 ;; Do the same for docbook-xml.
153 (add-before 'install 'make-local-docbook-xml
154 (lambda* (#:key inputs #:allow-other-keys)
155 (substitute* "docbook45.conf"
156 (("http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd")
157 (string-append (assoc-ref inputs "docbook-xml")
158 "/xml/dtd/docbook/docbookx.dtd")))
161 `(("autoconf" ,autoconf)))
162 (inputs `(("python" ,python-2)
163 ("docbook-xml" ,docbook-xml)
164 ("docbook-xsl" ,docbook-xsl)
166 ("libxslt" ,libxslt)))
167 (home-page "https://asciidoc.org/")
168 (synopsis "Text-based document generation system")
170 "AsciiDoc is a text document format for writing notes, documentation,
171 articles, books, ebooks, slideshows, web pages, man pages and blogs.
172 AsciiDoc files can be translated to many formats including HTML, PDF,
175 AsciiDoc is highly configurable: both the AsciiDoc source file syntax and
176 the backend output markups (which can be almost any type of SGML/XML
177 markup) can be customized and extended by the user.")
180 (define-public asciidoc-py3
181 (package (inherit asciidoc)
182 (name "asciidoc-py3")
187 (url "https://github.com/asciidoc/asciidoc-py3/")
189 (file-name (git-file-name name version))
192 "1xpws5lgzaqwgbc7sq6bp8adjxy8qb4qb9nj4vvpxamjgx3pny54"))))
193 (build-system gnu-build-system)
195 `(("autoconf" ,autoconf)))
198 ("docbook-xml" ,docbook-xml)
199 ("docbook-xsl" ,docbook-xsl)
201 ("libxslt" ,libxslt)))))
203 (define-public doxygen
207 (home-page "http://www.doxygen.nl/")
210 (uri (list (string-append home-page "files/doxygen-"
211 version ".src.tar.gz")
212 (string-append "mirror://sourceforge/doxygen/rel-"
213 version "/doxygen-" version
217 "16dmv0gm1x8rvbm82fmjvi213q8fxqxinm75pcf595flya59ific"))
218 (patches (search-patches "doxygen-test.patch"
219 "doxygen-1.8.17-runtests.patch"))))
220 (build-system cmake-build-system)
224 ("libxml2" ,libxml2) ;provides xmllint for the tests
225 ("python" ,python))) ;for creating the documentation
227 `(("bash" ,bash-minimal)))
229 ;; Force cmake to use iconv header from cross-libc instead of the one
231 `(,@(if (%current-target-system)
233 (list (string-append "-DICONV_INCLUDE_DIR="
234 (assoc-ref %build-inputs "cross-libc")
237 #:test-target "tests"
238 #:phases (modify-phases %standard-phases
239 (add-before 'configure 'patch-sh
240 (lambda* (#:key inputs #:allow-other-keys)
241 (substitute* "src/portable.cpp"
244 (assoc-ref inputs "bash") "/bin/sh")))
246 (synopsis "Generate documentation from annotated sources")
247 (description "Doxygen is the de facto standard tool for generating
248 documentation from annotated C++ sources, but it also supports other popular
249 programming languages such as C, Objective-C, C#, PHP, Java, Python,
250 IDL (Corba, Microsoft, and UNO/OpenOffice flavors), Fortran, VHDL, Tcl,
251 and to some extent D.")
260 (uri (string-append "https://sourceforge.net/projects/docpp/"
261 "files/doc++-" version ".tar.gz"))
264 "0i37zlxl8g352s4hzpdx0657k5x3czh3xcsfr27irc708gb277pn"))
265 (patches (search-patches "doc++-include-directives.patch"
266 "doc++-segfault-fix.patch"))))
267 (build-system gnu-build-system)
270 ("gettext" ,gettext-minimal)))
271 (home-page "http://docpp.sourceforge.net/")
272 (synopsis "Documentation system for C, C++, IDL, and Java")
274 "DOC++ is a documentation system for C, C++, IDL, and Java. It can
275 generate both TeX output for high-quality hardcopies or HTML output for online
276 brwosing. The documentation is extracted directly from the C/C++/IDL source
277 or Java class files.")
280 (define-public scrollkeeper
282 (name "scrollkeeper")
287 (uri (string-append "mirror://sourceforge/scrollkeeper/scrollkeeper/"
288 version "/scrollkeeper-" version ".tar.gz"))
290 (base32 "1bfxwxc1ngh11v36z899sz9qam366r050fhkyb5adv65lb1x62sa"))))
291 (build-system gnu-build-system)
294 (list (string-append "--with-xml-catalog="
295 (assoc-ref %build-inputs "docbook-xml")
296 "/xml/dtd/docbook/catalog.xml"))))
301 ;; The configure script checks for either version 4.2 or 4.1.2.
302 ("docbook-xml" ,docbook-xml-4.2)))
304 `(("intltool" ,intltool)))
305 (home-page "http://scrollkeeper.sourceforge.net/")
306 (synopsis "Open Documentation Cataloging Project")
307 (description "ScrollKeeper is a cataloging system for documentation on open
308 systems. It manages documentation metadata as specified by the Open Source
309 Metadata Framework and provides a simple API to allow help browsers to find,
310 sort, and search the document catalog. It will also be able to communicate
311 with catalog servers on the Net to search for documents which are not on the
319 (home-page "https://github.com/zealdocs/zeal")
325 (commit (string-append "v" version))))
326 (file-name (git-file-name name version))
328 (base32 "05qcjpibakv4ibhxgl5ajbkby3w7bkxsv3nfv2a0kppi1z0f8n8v"))))
329 (build-system qt-build-system)
330 (arguments `(#:tests? #f)) ; no tests
332 `(("extra-cmake-modules" ,extra-cmake-modules)
333 ("pkg-config" ,pkg-config)))
335 `(("libarchive" ,libarchive)
338 ("qtwebkit" ,qtwebkit)
339 ("qtx11extras" ,qtx11extras)
340 ("xcb-util-keyms" ,xcb-util-keysyms)))
341 (synopsis "Offline documentation browser inspired by Dash")
342 (description "Zeal is a simple offline documentation browser