From 6829f9e141095512add567a6f0c54c914c6ed7e2 Mon Sep 17 00:00:00 2001 From: Dmitry Kalinkin Date: Thu, 18 Mar 2021 20:55:00 -0400 Subject: [PATCH] texlive.bin.dvipng: refactor gs hardcoding, add a test for it --- pkgs/test/texlive/default.nix | 45 +++++++++++++++++++++- pkgs/tools/typesetting/tex/texlive/bin.nix | 7 +--- 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/pkgs/test/texlive/default.nix b/pkgs/test/texlive/default.nix index 30d0026c848d..7a6affd6cbe0 100644 --- a/pkgs/test/texlive/default.nix +++ b/pkgs/test/texlive/default.nix @@ -1,4 +1,4 @@ -{ runCommandNoCC, fetchurl, file, texlive }: +{ runCommandNoCC, fetchurl, file, texlive, writeShellScript }: { chktex = runCommandNoCC "texlive-test-chktex" { @@ -17,7 +17,7 @@ ''; # https://github.com/NixOS/nixpkgs/issues/75605 - dvipng = runCommandNoCC "texlive-test-dvipng" { + dvipng.basic = runCommandNoCC "texlive-test-dvipng-basic" { nativeBuildInputs = [ file texlive.combined.scheme-medium ]; input = fetchurl { name = "test_dvipng.tex"; @@ -38,6 +38,47 @@ mv document*.png "$out"/ ''; + # test dvipng's limited capability to render postscript specials via GS + dvipng.ghostscript = runCommandNoCC "texlive-test-ghostscript" { + nativeBuildInputs = [ file (with texlive; combine { inherit scheme-small dvipng; }) ]; + input = builtins.toFile "postscript-sample.tex" '' + \documentclass{minimal} + \begin{document} + Ni + \special{ps: + newpath + 0 0 moveto + 7 7 rlineto + 0 7 moveto + 7 -7 rlineto + stroke + showpage + } + \end{document} + ''; + gs_trap = writeShellScript "gs_trap.sh" '' + exit 1 + ''; + } '' + cp "$gs_trap" ./gs + export PATH=$PWD:$PATH + # check that the trap works + gs && exit 1 + + cp "$input" ./document.tex + + latex document.tex + dvipng -T 1in,1in -strict -picky document.dvi + for f in document*.png; do + file "$f" | tee output + grep PNG output + done + + mkdir "$out" + mv document*.png "$out"/ + ''; + + # https://github.com/NixOS/nixpkgs/issues/75070 dvisvgm = runCommandNoCC "texlive-test-dvisvgm" { nativeBuildInputs = [ file texlive.combined.scheme-medium ]; diff --git a/pkgs/tools/typesetting/tex/texlive/bin.nix b/pkgs/tools/typesetting/tex/texlive/bin.nix index d2858a90885e..fb9b748b5d0a 100644 --- a/pkgs/tools/typesetting/tex/texlive/bin.nix +++ b/pkgs/tools/typesetting/tex/texlive/bin.nix @@ -281,12 +281,9 @@ dvipng = stdenv.mkDerivation { configureFlags = common.configureFlags ++ [ "--with-system-kpathsea" "--with-gs=yes" "--disable-debug" ]; - enableParallelBuilding = true; + GS="${ghostscript}/bin/gs"; - # I didn't manage to hardcode gs location by configureFlags - postInstall = '' - wrapProgram "$out/bin/dvipng" --prefix PATH : '${ghostscript}/bin' - ''; + enableParallelBuilding = true; };