diff options
author | Bjørn Forsman <bjorn.forsman@gmail.com> | 2013-09-23 21:26:44 +0200 |
---|---|---|
committer | Bjørn Forsman <bjorn.forsman@gmail.com> | 2013-09-29 22:35:39 +0200 |
commit | aef81d6eb68506426e2004d195125f89922e6a6a (patch) | |
tree | 649e987673ac1d107313b93b7ec50e11582b16fe /pkgs/tools/typesetting | |
parent | face28ea3ddb8e7679ccabc8a2b51cd240651f54 (diff) | |
download | nixlib-aef81d6eb68506426e2004d195125f89922e6a6a.tar nixlib-aef81d6eb68506426e2004d195125f89922e6a6a.tar.gz nixlib-aef81d6eb68506426e2004d195125f89922e6a6a.tar.bz2 nixlib-aef81d6eb68506426e2004d195125f89922e6a6a.tar.lz nixlib-aef81d6eb68506426e2004d195125f89922e6a6a.tar.xz nixlib-aef81d6eb68506426e2004d195125f89922e6a6a.tar.zst nixlib-aef81d6eb68506426e2004d195125f89922e6a6a.zip |
asciidoc: add missing dependencies
The current asciidoc expression is impure; it relies on several tools to be found in PATH at runtime. This commit adds a enableStandardFeatures parameter that pulls in all dependencies and patches asciidoc to contain full paths to the tools. enableStandardFeatures defaults to true because asciidoc may attempt to call all tools in its default configuration. With all standard features, the closure size increases from 255 MiB to 1.5 GiB. Set enableStandardFeatures = false if you want a minimal asciidoc.
Diffstat (limited to 'pkgs/tools/typesetting')
-rw-r--r-- | pkgs/tools/typesetting/asciidoc/default.nix | 80 |
1 files changed, 79 insertions, 1 deletions
diff --git a/pkgs/tools/typesetting/asciidoc/default.nix b/pkgs/tools/typesetting/asciidoc/default.nix index 986d0d7a69c0..8aba7182f5e0 100644 --- a/pkgs/tools/typesetting/asciidoc/default.nix +++ b/pkgs/tools/typesetting/asciidoc/default.nix @@ -1,4 +1,25 @@ { fetchurl, stdenv, python + +, enableStandardFeatures ? true +, sourceHighlight ? null +, highlight ? null +, pygments ? null +, graphviz ? null +, tetex ? null +, dblatex ? null +, libxslt ? null +, w3m ? null +, lynx ? null +, imagemagick ? null +, lilypond ? null +, libxml2 ? null +, docbook_xml_dtd_45 ? null +, docbook5_xsl ? null +, docbook_xsl ? null +, fop ? null +# TODO: Package this: +#, epubcheck ? null + , unzip ? null # filters , enableDitaaFilter ? false, jre ? null @@ -12,6 +33,26 @@ , enableOdfBackend ? false }: +assert enableStandardFeatures -> + sourceHighlight != null && + highlight != null && + pygments != null && + graphviz != null && + tetex != null && + dblatex != null && + libxslt != null && + w3m != null && + lynx != null && + imagemagick != null && + lilypond != null && + libxml2 != null && + docbook_xml_dtd_45 != null && + docbook5_xsl != null && + docbook_xsl != null && + fop != null; +# TODO: Package this: +# epubcheck != null; + # filters assert (enableDitaaFilter || enableMscgenFilter || enableDiagFilter || enableQrcodeFilter || enableAafigureFilter) -> unzip != null; assert enableDitaaFilter -> jre != null; @@ -49,7 +90,7 @@ let sha256 = "0h4bql1nb4y4fmg2yvlpfjhvy22ln8jsaxdr10f8bfcg5lr0zkxs"; }; - # latest commit in master branch as per 2013-09-22 + # there are no archives or tags, using latest commit in master branch as per 2013-09-22 matplotlibFilterSrc = let commit = "75f0d009629f93f33fab04b83faca20cc35dd358"; in fetchurl rec { name = "mplw-${commit}.tar.gz"; url = "https://api.github.com/repos/lvv/mplw/tarball/${commit}"; @@ -151,11 +192,48 @@ stdenv.mkDerivation rec { # the odp backend already has that fix. Copy it here until fixed upstream. sed -i "s|'/etc/asciidoc/backends/odt/asciidoc.ott'|os.path.dirname(__file__),'asciidoc.ott'|" \ "$out/etc/asciidoc/backends/odt/a2x-backend.py" + '' + optionalString enableStandardFeatures '' + sed -e "s|dot|${graphviz}/bin/dot|g" \ + -e "s|neato|${graphviz}/bin/neato|g" \ + -e "s|twopi|${graphviz}/bin/circo|g" \ + -e "s|circo|${graphviz}/bin/circo|g" \ + -e "s|fdp|${graphviz}/bin/fdp|g" \ + -i "filters/graphviz/graphviz2png.py" + + sed -e "s|run('latex|run('${tetex}/bin/latex|g" \ + -e "s|cmd = 'dvipng'|cmd = '${tetex}/bin/dvipng'|g" \ + -i "filters/latex/latex2png.py" + + sed -e "s|run('abc2ly|run('${lilypond}/bin/abc2ly|g" \ + -e "s|run('lilypond|run('${lilypond}/bin/lilypond|g" \ + -e "s|run('convert|run('${imagemagick}/bin/convert|g" \ + -i "filters/music/music2png.py" + + sed -e 's|filter="source-highlight|filter="${sourceHighlight}/bin/source-highlight|' \ + -e 's|filter="highlight|filter="${highlight}/bin/highlight|' \ + -e 's|filter="pygmentize|filter="${pygments}/bin/pygmentize|' \ + -i "filters/source/source-highlight-filter.conf" + + # ENV is custom environment passed to programs that a2x invokes. Here we + # use it to work around an impurity in the tetex package; tetex tools + # cannot find their neighbours (e.g. pdflatex doesn't find mktextfm). + # We can remove PATH= when those impurities are fixed. + sed -e "s|^ENV =.*|ENV = dict(XML_CATALOG_FILES='${docbook_xml_dtd_45}/xml/dtd/docbook/catalog.xml ${docbook5_xsl}/xml/xsl/docbook/catalog.xml ${docbook_xsl}/xml/xsl/docbook/catalog.xml', PATH='${tetex}/bin')|" \ + -e "s|^ASCIIDOC =.*|ASCIIDOC = '$out/bin/asciidoc'|" \ + -e "s|^XSLTPROC =.*|XSLTPROC = '${libxslt}/bin/xsltproc'|" \ + -e "s|^DBLATEX =.*|DBLATEX = '${dblatex}/bin/dblatex'|" \ + -e "s|^FOP =.*|FOP = '${fop}/bin/fop'|" \ + -e "s|^W3M =.*|W3M = '${w3m}/bin/w3m'|" \ + -e "s|^LYNX =.*|LYNX = '${lynx}/bin/lynx'|" \ + -e "s|^XMLLINT =.*|XMLLINT = '${libxml2}/bin/xmllint'|" \ + -e "s|^EPUBCHECK =.*|EPUBCHECK = 'nixpkgs_is_missing_epubcheck'|" \ + -i a2x.py '' + '' for n in $(find "$out" . -name \*.py); do sed -i -e "s,^#![[:space:]]*.*/bin/env python,#!${python}/bin/python,g" "$n" chmod +x "$n" done + sed -i -e "s,/etc/vim,,g" Makefile.in ''; |