Merge pull request #116808 from veprbl/pr/texlive_dvipng_set_gs

texlive.bin.dvipng: refactor gs hardcoding, add a test for it
This commit is contained in:
Dmitry Kalinkin 2021-03-18 21:46:12 -04:00 committed by GitHub
commit 6869845ff1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 45 additions and 7 deletions

View File

@ -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 ];

View File

@ -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;
};