diff --git a/pkgs/tools/typesetting/tex/texlive/bin.nix b/pkgs/tools/typesetting/tex/texlive/bin.nix index 8fb155da755..d251d55c9f5 100644 --- a/pkgs/tools/typesetting/tex/texlive/bin.nix +++ b/pkgs/tools/typesetting/tex/texlive/bin.nix @@ -261,9 +261,24 @@ dvisvgm = stdenv.mkDerivation { inherit (common) src; + patches = [ + # Fix for ghostscript>=9.27 + # Backport of + # https://github.com/mgieseki/dvisvgm/commit/bc51951bc90b700c28ea018993bdb058e5271e9b + ./dvisvgm-fix.patch + + # Needed for ghostscript>=9.50 + (fetchpatch { + url = "https://github.com/mgieseki/dvisvgm/commit/7b93a9197b69305429183affd24fa40ee04a663a.patch"; + sha256 = "1gmj76ja9xng39wxckhs9q140abixgb8rkrcfv2cdgq786wm3vag"; + stripLen = 1; + extraPrefix = "texk/dvisvgm/dvisvgm-src/"; + }) + ]; + nativeBuildInputs = [ pkgconfig ]; # TODO: dvisvgm still uses vendored dependencies - buildInputs = [ core/*kpathsea*/ ghostscript zlib freetype potrace xxHash ]; + buildInputs = [ core/*kpathsea*/ ghostscript zlib freetype /*potrace xxHash*/ ]; preConfigure = "cd texk/dvisvgm"; diff --git a/pkgs/tools/typesetting/tex/texlive/dvisvgm-fix.patch b/pkgs/tools/typesetting/tex/texlive/dvisvgm-fix.patch new file mode 100644 index 00000000000..0e927e24fd0 --- /dev/null +++ b/pkgs/tools/typesetting/tex/texlive/dvisvgm-fix.patch @@ -0,0 +1,16 @@ +diff a/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp b/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp +--- a/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp ++++ b/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp +@@ -107,8 +107,7 @@ const char *PSInterpreter::PSDEFS = + "dmode sysexec<>exc" +-"h get 1(setblendmode)prcmd}def/@pdfpagecount{GS_PDF_ProcSet begin pdfdict begi" +-"n(r)file pdfopen begin pdfpagecount currentdict pdfclose end end end}def/@pdfp" +-"agebox{GS_PDF_ProcSet begin pdfdict begin(r)file pdfopen begin dup dup 1 lt ex" +-"ch pdfpagecount gt or{pop}{pdfgetpage/MediaBox pget pop aload pop}ifelse curre" +-"ntdict pdfclose end end end}def DELAYBIND{.bindnow}if "; ++"h get 1(setblendmode)prcmd}def/@pdfpagecount{(r)file runpdfbegin pdfpagecount " ++"runpdfend}def/@pdfpagebox{(r)file runpdfbegin dup dup 1 lt exch pdfpagecount g" ++"t or{pop}{pdfgetpage/MediaBox pget pop aload pop}ifelse runpdfend}def DELAYBIN" ++"D{.bindnow}if ";