gnu: r-zellkonverter: Update to 1.6.5.
[jackhill/guix/guix.git] / gnu / packages / docbook.scm
index 7221dd8..9f2869e 100644 (file)
@@ -1,8 +1,13 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2021-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2021 Andrew Whatson <whatson@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
 
 (define-module (gnu packages docbook)
   #:use-module (gnu packages)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages inkscape)
   #:use-module (gnu packages tex)
+  #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages python)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages web-browsers)
   #:use-module (gnu packages xml)
-  #:use-module (guix licenses)
+  #:use-module (guix gexp)
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module ((guix build utils) #:select (alist-replace))
+  #:use-module (guix build-system copy)
+  #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system python))
 
+(define-public docbook-xml-5
+  (package
+    (name "docbook-xml")
+    (version "5.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://docbook.org/xml/" version
+                                  "/docbook-" version ".zip"))
+              (sha256
+               (base32
+                "1iz3hq1lqgnshvlz4j9gvh4jy1ml74qf90vqf2ikbq0h4i2xzybs"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((unzip
+                 (string-append (assoc-ref %build-inputs "unzip")
+                                "/bin/unzip"))
+                (source (assoc-ref %build-inputs "source"))
+                (out    (assoc-ref %outputs "out"))
+                (dtd    (string-append out "/xml/dtd/docbook")))
+           (invoke unzip source)
+           (mkdir-p dtd)
+           (copy-recursively (string-append "docbook-" ,version) dtd)
+           (with-directory-excursion dtd
+             (substitute* (string-append out "/xml/dtd/docbook/catalog.xml")
+               (("uri=\"")
+                (string-append
+                 "uri=\"file://" dtd "/")))
+             #t)))))
+    (native-inputs (list unzip))
+    (home-page "https://docbook.org")
+    (synopsis "DocBook XML DTDs for document authoring")
+    (description
+     "DocBook is general purpose XML and SGML document type particularly well
+suited to books and papers about computer hardware and software (though it is
+by no means limited to these applications.)  This package provides XML DTDs.")
+    (license (license:x11-style "" "See file headers."))))
+
 (define-public docbook-xml
   (package
+    (inherit docbook-xml-5)
     (name "docbook-xml")
     (version "4.5")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://www.docbook.org/xml/" version
+              (uri (string-append "https://docbook.org/xml/" version
                                   "/docbook-xml-" version ".zip"))
               (sha256
                (base32
                 "1d671lcjckjri28xfbf6dq7y3xnkppa910w1jin8rjc35dx06kjf"))))
-    (build-system trivial-build-system)
     (arguments
      '(#:builder (begin
                    (use-modules (guix build utils))
                      (with-directory-excursion dtd
                        (invoke unzip source))
                      (substitute* (string-append out "/xml/dtd/docbook/catalog.xml")
-                       (("uri=\"") 
-                        (string-append 
+                       (("uri=\"")
+                        (string-append
                          "uri=\"file://" dtd "/")))
                      #t))
-                 #:modules ((guix build utils))))
-    (native-inputs `(("unzip" ,unzip)))
-    (home-page "https://docbook.org")
-    (synopsis "DocBook XML DTDs for document authoring")
-    (description
-     "DocBook is general purpose XML and SGML document type particularly well
-suited to books and papers about computer hardware and software (though it is
-by no means limited to these applications.)  This package provides XML DTDs.")
-    (license (x11-style "" "See file headers."))))
+                 #:modules ((guix build utils))))))
 
 (define-public docbook-xml-4.4
   (package (inherit docbook-xml)
     (version "4.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://www.docbook.org/xml/" version
+              (uri (string-append "https://docbook.org/xml/" version
                                   "/docbook-xml-" version ".zip"))
               (sha256
                (base32
@@ -90,7 +137,7 @@ by no means limited to these applications.)  This package provides XML DTDs.")
     (version "4.3")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://www.docbook.org/xml/" version
+              (uri (string-append "https://docbook.org/xml/" version
                                   "/docbook-xml-" version ".zip"))
               (sha256
                (base32
@@ -101,7 +148,7 @@ by no means limited to these applications.)  This package provides XML DTDs.")
     (version "4.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://www.docbook.org/xml/" version
+              (uri (string-append "https://docbook.org/xml/" version
                                   "/docbook-xml-" version ".zip"))
               (sha256
                (base32
@@ -112,7 +159,7 @@ by no means limited to these applications.)  This package provides XML DTDs.")
     (version "4.1.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://www.docbook.org/xml/" version
+              (uri (string-append "https://docbook.org/xml/" version
                                   "/docbkx412.zip"))
               (sha256
                (base32
@@ -133,15 +180,17 @@ by no means limited to these applications.)  This package provides XML DTDs.")
 (define-public docbook-xsl
   (package
     (name "docbook-xsl")
-    (version "1.79.1")
+    (version "1.79.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://sourceforge/docbook/docbook-xsl/"
-                                  version "/docbook-xsl-" version ".tar.bz2"))
-              (patches (search-patches "docbook-xsl-nonrecursive-string-subst.patch"))
+              (uri (string-append "https://github.com/docbook/xslt10-stylesheets"
+                                  "/releases/download/release%2F" version
+                                  "/docbook-xsl-" version ".tar.bz2"))
+              (patches (search-patches "docbook-xsl-support-old-url.patch"
+                                       "docbook-xsl-nonrecursive-string-subst.patch"))
               (sha256
                (base32
-                "0s59lihif2fr7rznckxr2kfyrvkirv76r1zvidp9b5mj28p4apvj"))
+                "0wd33z41kdsybyx3ay21w6bdlmgpd9kyn3mr5y520lsf8km28r9i"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -149,9 +198,12 @@ by no means limited to these applications.)  This package provides XML DTDs.")
                   #t))))
     (build-system trivial-build-system)
     (arguments
-     `(#:builder (let ((name-version (string-append ,name "-" ,version)))
+     `(#:builder (begin
                    (use-modules (guix build utils))
 
+                   (define name-version
+                     (string-append ,name "-" ,version))
+
                    (let* ((bzip2  (assoc-ref %build-inputs "bzip2"))
                           (xz     (assoc-ref %build-inputs "xz"))
                           (tar    (assoc-ref %build-inputs "tar"))
@@ -171,66 +223,393 @@ by no means limited to these applications.)  This package provides XML DTDs.")
                                        name-version "/")))
                      #t))
        #:modules ((guix build utils))))
-    (native-inputs `(("bzip2" ,bzip2)
-                     ("xz" ,xz)         ;needed for repacked tarballs
-                     ("tar" ,tar)))
+    (native-inputs (list bzip2 xz ;needed for repacked tarballs
+                         tar))
     (home-page "https://docbook.org")
     (synopsis "DocBook XSL style sheets for document authoring")
     (description
      "This package provides XSL style sheets for DocBook.")
-    (license (x11-style "" "See 'COPYING' file."))))
+    (license (license:x11-style "" "See 'COPYING' file."))))
+
+;;; TODO: Make this the default docbook-xsl on core-updates.  There's an issue
+;;; in docbook-xsl 1.79.2 that causes manpages to be generated incorrectly and
+;;; embed raw nroff syntax such as '.PP' when there is a
+;;; namespace/non-namespace mismatch between the sources and the stylesheets
+;;; used (see: https://github.com/docbook/xslt10-stylesheets/issues/109).
+(define-public docbook-xsl-next
+  (let ((commit "fe16c90013b64e316c3e21ef92d1e8813c10f88c")
+        (revision "0")
+        (base-version (package-version docbook-xsl)))
+    (package
+      (inherit docbook-xsl)
+      (name "docbook-xsl")
+      (version (git-version base-version revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/docbook/xslt10-stylesheets")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                ;; Multiple .jar files are bundled with the sources.
+                (modules '((guix build utils)))
+                (snippet '(for-each delete-file (find-files "." "\\.jar$")))
+                (sha256
+                 (base32
+                  "1bl8dwrcy7skrlh80fpsmiw045bv2j0aym231ikcv3hvm2pi98dj"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list
+        #:make-flags #~(list "XSLTENGINE=xsltproc")
+        #:phases
+        #~(modify-phases %standard-phases
+            (replace 'configure
+              (lambda _
+                ;; The build systems insist on a ~/.xmlc, and it is simpler to
+                ;; create a dummy config file than to patch it into
+                ;; submission.
+                (setenv "HOME" "/tmp")
+                (call-with-output-file "/tmp/.xmlc"
+                  (lambda (port)
+                    (format port "\
+<?xml version='1.0' encoding='utf-8'?> <!-- -*- nxml -*- -->
+<config>
+  <java xml:id=\"bigmem\">
+    <java-option name=\"Xmx512m\"/>
+  </java>
+  <xsltproc xml:id=\"xsltproc\" exec=\"xsltproc\"></xsltproc>
+  <xmllint xml:id=\"xmllint\" exec=\"xmllint\"></xmllint>
+</config>\n")))
+                (substitute* "xsl/Makefile"
+                  ;; Do not build webhelp files, as they require a Saxon from
+                  ;; 2005, which is not packaged in Guix.
+                  ((" webhelp") ""))))
+            (add-before 'install 'generate-catalog.xml
+              (lambda* (#:key make-flags #:allow-other-keys)
+                (apply invoke "make" "-C" "xsl" "catalog.xml" make-flags)))
+            (replace 'install
+              (lambda _
+                (let ((xml (string-append #$output "/xml/xsl/"
+                                          #$name "-" #$version))
+                      (select-rx (make-regexp
+                                  "(\\.xml$|\\.xsl$|\\.dtd$|\\.ent$)")))
+                  ;; Install catalog.
+                  (chdir "xsl")
+                  (install-file "catalog.xml" xml)
+                  (install-file "VERSION.xsl" xml)
+                  (substitute* (string-append xml "/catalog.xml")
+                    ;; Re-add the no longer present compatibility entries.
+                    ((".*</catalog>.*" anchor)
+                     (string-append "\
+  <!-- Also support old URI of v1.79.1 or earlier -->
+  <rewriteURI uriStartString=\"http://docbook.sourceforge.net\
+/release/xsl/current/\" rewritePrefix=\"./\"/>
+  <rewriteSystem systemIdStartString=\"http://docbook.sourceforge.net\
+/release/xsl/current/\" rewritePrefix=\"./\"/>\n" anchor))
+                    (("/snapshot/")
+                     (string-append "/" #$base-version "/"))
+                    (("rewritePrefix=\"./")
+                     (string-append "rewritePrefix=\"file://" xml "/")))
+                  ;; Install style sheets.
+                  (for-each (lambda (dir)
+                              (for-each (lambda (f)
+                                          (install-file
+                                           f (string-append xml "/" (dirname f))))
+                                        (find-files dir select-rx)))
+                            '("assembly" "common" "eclipse" "epub" "epub3" "fo"
+                              "highlighting" "html" "htmlhelp" "javahelp" "lib"
+                              "manpages" "params" "profiling" "roundtrip"
+                              "template" "website"
+                              "xhtml" "xhtml-1_1" "xhtml5"))))))))
+      (native-inputs (list libxml2
+                           libxslt
+                           perl
+                           perl-xml-xpath)))))
+
+(define-public docbook-xsl-1.79.1
+  (package
+    (name "docbook-xsl")
+    (version "1.79.1")
+    (source (origin
+              (method url-fetch)
+              ;; At the time, the non namespaced version was still the
+              ;; default; our latest docbook-xsl is namespaced, so for
+              ;; consistency preserves this property for older versions too.
+              (uri (string-append "mirror://sourceforge/docbook/"
+                                  name "-ns/" version "/"
+                                  name "-ns-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "170ggf5dgjar65kkn5n33kvjr3pdinpj66nnxfx8b2avw0k91jin"))))
+    (build-system copy-build-system)
+    (outputs '("out" "doc"))
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; XXX: The copy-build-system doesn't seem to allow installing to a
+          ;; different output.
+          (replace 'install
+            (lambda _
+              (let ((xml (string-append #$output "/xml/xsl/" #$name "-" #$version))
+                    (doc (string-append #$output:doc
+                                        "/share/doc/" #$name "-" #$version))
+                    (select-rx (make-regexp
+                                "(\\.xml$|\\.xsl$|\\.dtd$|\\.ent$)")))
+                ;; Install catalog.
+                (install-file "catalog.xml" xml)
+                (install-file "VERSION.xsl" xml)
+                (substitute* (string-append xml "/catalog.xml")
+                  (("rewritePrefix=\"./")
+                   (string-append "rewritePrefix=\"file://" xml "/")))
+                ;; Install style sheets.
+                (for-each (lambda (dir)
+                            (for-each (lambda (f)
+                                        (install-file
+                                         f (string-append xml "/" (dirname f))))
+                                      (find-files dir select-rx)))
+                          '("assembly" "common" "eclipse" "epub" "epub3" "fo"
+                            "highlighting" "html" "htmlhelp" "javahelp" "lib"
+                            "manpages" "params" "profiling" "roundtrip"
+                            "template" "website"
+                            "xhtml" "xhtml-1_1" "xhtml5"))
+                ;; Install documentation.
+                (install-file "NEWS" doc)
+                (install-file "RELEASE-NOTES.html" doc)
+                (copy-recursively "slides" doc)
+                (copy-recursively "webhelp" doc)))))))
+    (home-page "https://docbook.org")
+    (synopsis "DocBook XSL namespaced style sheets for document authoring")
+    (description "This package provides the @emph{namespaced} XSL style sheets
+for DocBook.")
+    (license (license:x11-style "" "See 'COPYING' file."))))
+
+(define-public docbook-dsssl
+  (package
+    (name "docbook-dsssl")
+    (version "1.79")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/docbook/"
+                                  name "/" version "/"
+                                  name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1g72y2yyc2k89kzs0lvrb9n7hjayw1hdskfpplpz97pf1c99wcig"))))
+    (build-system trivial-build-system)
+    (outputs '("out" "doc"))
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let ((source (assoc-ref %build-inputs "source"))
+               (dtd (string-append (assoc-ref %outputs "out")
+                                   "/sgml/dtd/docbook"))
+               (docbook-dsssl-doc (assoc-ref %build-inputs "docbook-dsssl-doc"))
+               (doc (assoc-ref %outputs "doc"))
+               (tar (assoc-ref %build-inputs "tar"))
+               (bzip2 (assoc-ref %build-inputs "bzip2")))
+           (setenv "PATH" (string-append tar "/bin" ":" bzip2 "/bin"))
+           (mkdir-p dtd)
+           (invoke "tar" "-xf" source "-C" dtd)
+           ;; The doc output contains 1.4 MiB of HTML documentation.
+           (symlink docbook-dsssl-doc doc)))))
+    (inputs
+     (list docbook-dsssl-doc))
+    (native-inputs
+     (list bzip2 tar))
+    (home-page "https://docbook.org/")
+    (synopsis "DSSSL style sheets for DocBook")
+    (description "This package provides DSSSL style sheets for DocBook.")
+    (license (license:non-copyleft "file://README"))))
+
+;;; Private variable, used as the 'doc' output of the docbook-dsssl package.
+(define docbook-dsssl-doc
+  (package
+    (name "docbook-dsssl-doc")
+    (version "1.79")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/docbook/"
+                                  name "/" version "/"
+                                  name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1plp5ngc96pbna4rwglp9glcadnirbm3hlcjb4gjvq1f8biic9lz"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let ((source (assoc-ref %build-inputs "source"))
+               (docdir (string-append (assoc-ref %outputs "out")
+                                      "/share/doc/" "docbook-dsssl-" ,version))
+               (tar (assoc-ref %build-inputs "tar"))
+               (bzip2 (assoc-ref %build-inputs "bzip2")))
+           (setenv "PATH" (string-append tar "/bin" ":" bzip2 "/bin"))
+           (mkdir-p docdir)
+           ;; Extract the "doc" subdirectory.
+           (invoke "tar" "-xf" source "--strip-components=2"
+                   "--no-same-owner" "-C" docdir
+                   (string-append "docbook-dsssl-" ,version "/doc"))))))
+    (native-inputs
+     `(("bzip2" ,bzip2)
+       ("tar" ,tar)))
+    (home-page "https://docbook.org/")
+    (synopsis "DocBook DSSSL style sheets documentation")
+    (description "Documentation for the DocBook DSSSL style sheets.")
+    (license (license:non-copyleft "file://doc/LEGALNOTICE.htm"))))
+
+(define-public docbook-sgml-4.2
+  (package
+    (name "docbook-sgml")
+    (version "4.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://www.oasis-open.org/docbook/sgml/4.2/docbook-"
+                    version ".zip"))
+              (sha256
+               (base32
+                "1hrm4qmmzi285bkxkc74lxvjvw2gbl7ycbaxhv31h9rl9g4x5sv7"))))
+    (build-system trivial-build-system)
+    (arguments
+     '(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let ((source (assoc-ref %build-inputs "source"))
+               (iso-entities-dir (string-append
+                                  (assoc-ref %build-inputs "iso-8879-entities")))
+               (unzip  (string-append (assoc-ref %build-inputs "unzip")
+                                      "/bin/unzip"))
+               (dtd    (string-append (assoc-ref %outputs "out")
+                                      "/sgml/dtd/docbook")))
+           ;; Extract the sources.
+           (mkdir-p dtd)
+           (chdir dtd)
+           (invoke unzip source)
+           ;; Reference the ISO 8879 character entities.
+           ;; e.g. "iso-lat1.gml" --> "<iso-entities-dir>/ISOlat1"
+           (substitute* "docbook.cat"
+             (("\"iso-(.*)\\.gml\"" _ name)
+              (string-append "\"" iso-entities-dir "/ISO" name "\"")))))))
+    (native-inputs
+     (list unzip))
+    (inputs
+     (list iso-8879-entities))
+    (home-page "https://docbook.org")
+    (synopsis "DocBook SGML style sheets for document authoring")
+    (description "This package provides SGML style sheets for DocBook.")
+    (license (license:x11-style "" "See file headers."))))
+
+(define-public docbook-sgml-4.1
+  (package
+    (inherit docbook-sgml-4.2)
+    (version "4.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.oasis-open.org/docbook/sgml/"
+                                  version "/docbk41.zip"))
+              (sha256
+               (base32
+                "04b3gp4zkh9c5g9kvnywdkdfkcqx3kjc04j4mpkr4xk7lgqgrany"))))))
+
+(define-public docbook-sgml docbook-sgml-4.1)
+
+(define-public docbook-sgml-3.1
+  (package
+    (inherit docbook-sgml)
+    (version "3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.oasis-open.org/docbook/sgml/"
+                                  version "/docbk31.zip"))
+              (sha256
+               (base32
+                "0f25ch7bywwhdxb1qa0hl28mgq1blqdap3rxzamm585rf4kis9i0"))))))
+
+;;; Private package referenced by docbook-sgml.
+(define iso-8879-entities
+  (package
+    (name "iso-8879-entities")
+    (version "0.0")                     ;no proper version
+    (source (origin
+              (method url-fetch)
+              (uri "http://www.oasis-open.org/cover/ISOEnts.zip")
+              (sha256
+               (base32
+                "1clrkaqnvc1ja4lj8blr0rdlphngkcda3snm7b9jzvcn76d3br6w"))))
+    (build-system trivial-build-system)
+    (arguments
+     '(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let ((source (assoc-ref %build-inputs "source"))
+               (unzip  (string-append (assoc-ref %build-inputs "unzip")
+                                      "/bin/unzip"))
+               (out (string-append (assoc-ref %outputs "out"))))
+           (invoke unzip source "-d" out)))))
+    (native-inputs `(("unzip" ,unzip)))
+    (home-page "https://www.oasis-open.org/")
+    (synopsis "ISO 8879 character entities")
+    (description "ISO 8879 character entities that are typically used in
+the in DocBook SGML DTDs.")
+    (license (license:x11-style "" "See file headers."))))
 
 (define-public dblatex
   (package
     (name "dblatex")
-    (version "0.3.11")
+    (version "0.3.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/dblatex/dblatex/"
-                                  "dblatex-" version "/dblatex-"
+                                  "dblatex-" version "/dblatex3-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "0rp1bc2lgisigscq1i7zxfd2qdaxxxld6khbcxss4pq7fpi9fzkv"))))
+                "0yd09nypswy3q4scri1dg7dr99d7gd6r2dwx0xm81l9f4y32gs0n"))))
     (build-system python-build-system)
     ;; TODO: Add xfig/transfig for fig2dev utility
     (inputs
-     `(("texlive" ,(texlive-union (list texlive-amsfonts
-                                        texlive-latex-anysize
-                                        texlive-latex-appendix
-                                        texlive-latex-changebar
-                                        texlive-latex-colortbl
-                                        texlive-latex-eepic
-                                        texlive-latex-eso-pic
-                                        texlive-latex-fancybox
-                                        texlive-latex-fancyhdr
-                                        texlive-latex-fancyvrb
-                                        texlive-latex-float
-                                        texlive-latex-footmisc
-                                        texlive-latex-hyperref
-                                        texlive-latex-jknapltx
-                                        texlive-latex-listings
-                                        texlive-latex-multirow
-                                        texlive-latex-oberdiek
-                                        texlive-latex-overpic
-                                        texlive-latex-pdfpages
-                                        texlive-latex-subfigure
-                                        texlive-latex-titlesec
-                                        texlive-latex-url
-                                        texlive-latex-wasysym
+     `(("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts
+                                             texlive-latex-anysize
+                                             texlive-latex-appendix
+                                             texlive-latex-bookmark
+                                             texlive-latex-changebar
+                                             texlive-latex-colortbl
+                                             texlive-latex-fancybox
+                                             texlive-latex-fancyhdr
+                                             texlive-latex-fancyvrb
+                                             texlive-latex-float
+                                             texlive-latex-footmisc
+                                             texlive-hyperref
+                                             texlive-latex-jknapltx
+
+                                             ;; TODO: Use non-deprecated name on
+                                             ;; next rebuild cycle.
+                                             texlive-latex-listings
+
+                                             texlive-latex-multirow
+                                             texlive-latex-overpic
+                                             texlive-latex-pdfpages
+                                             texlive-latex-refcount
+                                             texlive-latex-subfigure
+                                             texlive-latex-titlesec
+                                             texlive-wasysym
 
-                                        texlive-fonts-ec
-                                        texlive-fonts-rsfs
-                                        texlive-fonts-stmaryrd
+                                             texlive-fonts-rsfs
+                                             texlive-stmaryrd
 
-                                        texlive-generic-ifxetex)))
+                                             texlive-generic-iftex)))
        ("imagemagick" ,imagemagick)     ;for convert
-       ("inkscape" ,inkscape)           ;for svg conversion
+       ("inkscape" ,inkscape/stable)    ;for svg conversion
        ("docbook" ,docbook-xml)
        ("libxslt" ,libxslt)))           ;for xsltproc
     (arguments
-     `(#:python ,python-2               ;'print' syntax
-       ;; Using setuptools causes an invalid "package_base" path in
+     `(;; Using setuptools causes an invalid "package_base" path in
        ;; out/bin/.dblatex-real due to a missing leading '/'.  This is caused
        ;; by dblatex's setup.py stripping the root path when creating the
        ;; script.  (dblatex's setup.py still uses distutils and thus has to
@@ -252,8 +631,7 @@ by no means limited to these applications.)  This package provides XML DTDs.")
                            (string-append (assoc-ref inputs input)
                                           "/bin"))
                          '("libxslt" "texlive"
-                           "imagemagick" "inkscape"))))
-               #t))))))
+                           "imagemagick" "inkscape"))))))))))
     (home-page "http://dblatex.sourceforge.net")
     (synopsis "DocBook to LaTeX Publishing")
     (description
@@ -262,4 +640,189 @@ to DVI, PostScript or PDF by translating them in pure LaTeX as a first
 process.  MathML 2.0 markups are supported too.  It started as a clone of
 DB2LaTeX.")
     ;; lib/contrib/which is under an X11 license
-    (license gpl2+)))
+    (license license:gpl2+)))
+
+;; This is a variant of the 'dblatex' package that is not updated often.  It
+;; is intended to be used as a native-input at build-time only, e.g. by
+;; 'gtk-doc' for generating package documentation.  This allows the main
+;; 'dblatex' and 'imagemagick' packages to be freely updated on the 'master'
+;; branch without triggering an excessive number of rebuilds.
+(define-public dblatex/stable
+  (hidden-package
+   (package/inherit dblatex
+     (inputs (alist-replace "imagemagick" `(,imagemagick/stable)
+                            (package-inputs dblatex))))))
+
+(define-public docbook-utils
+  (package
+    (name "docbook-utils")
+    (version "0.6.14")
+    (source (origin
+              (method url-fetch)
+              ;; The original sources are not accessible anymore.
+              (uri (string-append "http://deb.debian.org/debian/pool/main/"
+                                  "d/docbook-utils/docbook-utils_"
+                                  version ".orig.tar.gz"))
+              (sha256
+               (base32
+                "1scj5vgw1xz872pq54a89blcxqqm11p90yzv8a9mqq57x27apyj8"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'patch-build-system
+                    (lambda _
+                      (substitute* (find-files "." "\\.in$")
+                        ;; Do not hard-code SGML_CATALOG_FILES.
+                        ((".*SGML_CATALOG_FILES=/etc/sgml/catalog.*") "")
+                        ;; Use OpenSP and OpenJade.
+                        (("\\bjade\\b")
+                         "openjade")
+                        (("\\bnsgmls\\b")
+                         "onsgmls"))
+                      #t))
+                  (add-after 'unpack 'patch-jw.in
+                    ;; Do not override the SGML_CATALOG_FILES environment
+                    ;; variable.
+                    (lambda _
+                      (substitute* "bin/jw.in"
+                        ((".*SGML_CATALOG_FILES=`find.*")
+                         "")
+                        (("SGML_CATALOG_FILES=`echo.*")
+                         ":\n")
+                        (("SGML_CATALOG_FILES=\"\"")
+                         ":")
+                        (("\\bwhich\\b")
+                         "command -v"))
+                      #t))
+                  (add-after 'unpack 'patch-txt-backend
+                    (lambda _
+                      ;; Locate lynx, links or w3m from the PATH, not from
+                      ;; /usr/bin.
+                      (substitute* "backends/txt"
+                        (("CONVERT=/usr/bin/")
+                         "CONVERT=")
+                        (("\\[ -x /usr/bin/([^ ]+) \\]" dummy command)
+                         (string-append "command -v " command " > /dev/null")))
+                      #t)))))
+    ;; Propagated for convenience.  All these tools are used at run time to
+    ;; provide the complete functionality of the docbook-utils commands.
+    (propagated-inputs
+     (list texlive-jadetex
+           docbook-sgml-3.1
+           docbook-dsssl
+           openjade
+           opensp
+           lynx
+           perl-sgmls))
+    (home-page "https://packages.debian.org/sid/docbook-utils")
+    (synopsis "DocBook converter to other formats")
+    (description "The docbook-utils package is a collection of utilities
+intended to ease the use of SGML and XML.
+@table @command
+@item jw
+Convert a SGML DocBook file to other formats such as Hyper Text Markup
+Language (HTML), Rich Text Format (RTF), PostScript (PS), man, Portable
+Document Format (PDF), TeX, Texinfo or plain text (txt).  It can be used
+more conveniently via the following wrappers:
+@itemx docbook2dvi Convert a SGML DocBook file to the DVI format.
+@itemx docbook2html Convert a SGML DocBook file to an HTML document.
+@itemx docbook2man Convert a SGML DocBook file a man page.
+@itemx docbook2pdf Convert a SGML DocBook file to a PDF document.
+@itemx docbook2ps Convert a SGML DocBook file to a PS document.
+@itemx docbook2rtf Convert a SGML DocBook file to a RTF document.
+@itemx docbook2tex Convert a SGML DocBook file to a TeX document.
+@itemx docbook2texi Convert a SGML DocBook file to a Texinfo document.
+@itemx docbook2txt Convert a SGML DocBook file to a plain text document.
+@item sgmldiff
+Detect the differences in markup between two SGML files.
+@end table")
+    (license license:gpl2+)))
+
+(define-public docbook2x
+  (package
+    (name "docbook2x")
+    (version "0.8.8")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/docbook2x/docbook2x/"
+                                  version "/docbook2X-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0ifwzk99rzjws0ixzimbvs83x6cxqk1xzmg84wa1p7bs6rypaxs0"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("bash-minimal" ,bash-minimal)
+       ("docbook-xml" ,docbook-xml)
+       ("perl" ,perl)
+       ("perl-xml-namespacesupport" ,perl-xml-namespacesupport)
+       ("perl-xml-parser" ,perl-xml-parser)
+       ("perl-xml-sax" ,perl-xml-sax)
+       ("perl-xml-sax-base" ,perl-xml-sax-base)
+       ("texinfo" ,texinfo)
+       ("xsltproc" ,libxslt)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'patch-sources
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Fix failed substitution in config.pl
+             (substitute* "perl/config.pl"
+               (("\\$\\{prefix\\}")
+                (assoc-ref outputs "out")))
+             ;; Fix a failing test (maybe it worked with old texinfo?)
+             (substitute* "test/complete-manuals/at1.xml"
+               (("<bridgehead>")
+                "<bridgehead renderas=\"sect2\">"))
+             ;; Patch all the tests use DocBook 4.5
+             (substitute* (find-files "test" "\\.xml$")
+               (("\"-//OASIS//DTD DocBook XML V4\\..+//EN\"")
+                "\"-//OASIS//DTD DocBook XML V4.5//EN\"")
+               (("\"http://www\\.oasis-open\\.org/docbook/xml/4\\..+/docbookx.dtd\"")
+                "\"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd\""))
+             ;; Set XML catalogs for tests to pass
+             (setenv "XML_CATALOG_FILES"
+                     (string-append (assoc-ref inputs "docbook-xml")
+                                    "/xml/dtd/docbook/catalog.xml"))))
+         (add-after 'install 'wrap-programs
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (programs
+                     (map (lambda (p)
+                            (string-append out "/bin/" p))
+                          '("db2x_manxml" "db2x_texixml" "db2x_xsltproc"
+                            "docbook2man" "docbook2texi")))
+                    (perl5lib
+                     (map (lambda (i)
+                            (string-append (assoc-ref inputs i)
+                                           "/lib/perl5/site_perl"))
+                          '("perl-xml-namespacesupport"
+                            "perl-xml-parser"
+                            "perl-xml-sax"
+                            "perl-xml-sax-base")))
+                    (xml-catalog-files
+                     (list (string-append (assoc-ref inputs "docbook-xml")
+                                          "/xml/dtd/docbook/catalog.xml"))))
+               (map (lambda (program)
+                      (wrap-program program
+                        `("PERL5LIB" ":" prefix
+                          ,perl5lib)
+                        `("XML_CATALOG_FILES" " " prefix
+                          ,xml-catalog-files)))
+                    programs))))
+         (add-after 'install 'create-symlinks
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; Create db2x_* symlinks to satisfy some configure scripts
+               ;; which use these names to differentiate from an older
+               ;; docbook2man script provided by docbook-utils.
+               (map (lambda (prog)
+                      (symlink prog (string-append out "/bin/db2x_" prog)))
+                    '("docbook2man" "docbook2texi"))))))))
+    (home-page "http://docbook2x.sourceforge.net")
+    (synopsis "Convert DocBook to man page and Texinfo format")
+    (description
+     "docbook2X is a software package that converts DocBook documents into the
+traditional Unix man page format and the GNU Texinfo format.  Notable features
+include table support for man pages, internationalization support, and easy
+customization of the output using XSLT.")
+    (license license:expat)))