gnu: r-zellkonverter: Update to 1.6.5.
[jackhill/guix/guix.git] / gnu / packages / docbook.scm
index ee12f7e..9f2869e 100644 (file)
@@ -1,10 +1,10 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2021 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 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; 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>
   #:use-module (gnu packages base)
   #:use-module (gnu packages web-browsers)
   #:use-module (gnu packages xml)
+  #: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))
@@ -77,7 +80,7 @@
                 (string-append
                  "uri=\"file://" dtd "/")))
              #t)))))
-    (native-inputs `(("unzip" ,unzip)))
+    (native-inputs (list unzip))
     (home-page "https://docbook.org")
     (synopsis "DocBook XML DTDs for document authoring")
     (description
@@ -220,15 +223,166 @@ 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 (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")
@@ -261,10 +415,9 @@ by no means limited to these applications.)  This package provides XML DTDs.")
            ;; The doc output contains 1.4 MiB of HTML documentation.
            (symlink docbook-dsssl-doc doc)))))
     (inputs
-     `(("docbook-dsssl-doc" ,docbook-dsssl-doc)))
+     (list docbook-dsssl-doc))
     (native-inputs
-     `(("bzip2" ,bzip2)
-       ("tar" ,tar)))
+     (list bzip2 tar))
     (home-page "https://docbook.org/")
     (synopsis "DSSSL style sheets for DocBook")
     (description "This package provides DSSSL style sheets for DocBook.")
@@ -308,17 +461,18 @@ by no means limited to these applications.)  This package provides XML DTDs.")
     (description "Documentation for the DocBook DSSSL style sheets.")
     (license (license:non-copyleft "file://doc/LEGALNOTICE.htm"))))
 
-(define-public docbook-sgml
+(define-public docbook-sgml-4.2
   (package
     (name "docbook-sgml")
-    (version "4.1")
+    (version "4.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://www.oasis-open.org/docbook/sgml/"
-                                  version "/docbk41.zip"))
+              (uri (string-append
+                    "https://www.oasis-open.org/docbook/sgml/4.2/docbook-"
+                    version ".zip"))
               (sha256
                (base32
-                "04b3gp4zkh9c5g9kvnywdkdfkcqx3kjc04j4mpkr4xk7lgqgrany"))))
+                "1hrm4qmmzi285bkxkc74lxvjvw2gbl7ycbaxhv31h9rl9g4x5sv7"))))
     (build-system trivial-build-system)
     (arguments
      '(#:modules ((guix build utils))
@@ -339,17 +493,31 @@ by no means limited to these applications.)  This package provides XML DTDs.")
            ;; Reference the ISO 8879 character entities.
            ;; e.g. "iso-lat1.gml" --> "<iso-entities-dir>/ISOlat1"
            (substitute* "docbook.cat"
-             (("(.*ISO 8879.*)\"iso-(.*)\\.gml\"" _ head name)
-              (string-append head "\"" iso-entities-dir "/ISO" name "\"")))))))
+             (("\"iso-(.*)\\.gml\"" _ name)
+              (string-append "\"" iso-entities-dir "/ISO" name "\"")))))))
     (native-inputs
-     `(("unzip" ,unzip)))
+     (list unzip))
     (inputs
-     `(("iso-8879-entities" ,iso-8879-entities)))
+     (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)
@@ -407,33 +575,37 @@ the in DocBook SGML DTDs.")
     ;; TODO: Add xfig/transfig for fig2dev utility
     (inputs
      `(("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
-                                        texlive-latex-listings
-                                        texlive-latex-multirow
-                                        texlive-latex-overpic
-                                        texlive-latex-pdfpages
-                                        texlive-latex-refcount
-                                        texlive-latex-subfigure
-                                        texlive-latex-titlesec
-                                        texlive-wasysym
+                                             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-rsfs
-                                        texlive-stmaryrd
+                                             texlive-fonts-rsfs
+                                             texlive-stmaryrd
 
-                                        texlive-generic-iftex)))
+                                             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
@@ -459,8 +631,7 @@ the in DocBook SGML 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
@@ -536,13 +707,13 @@ DB2LaTeX.")
     ;; Propagated for convenience.  All these tools are used at run time to
     ;; provide the complete functionality of the docbook-utils commands.
     (propagated-inputs
-     `(("texlive-jadetex" ,texlive-jadetex)
-       ("docbook-sgml" ,docbook-sgml-3.1)
-       ("docbook-dsssl" ,docbook-dsssl)
-       ("openjade" ,openjade)
-       ("opensp" ,opensp)
-       ("lynx" ,lynx)
-       ("perl-sgmls" ,perl-sgmls)))
+     (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