;;; 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
(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
(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
(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
(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
#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"))
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
(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
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)))