texlive: 2019 -> 2020

Also change default package version from texlive year to a
revision. The problem with using texlive year is that it will change
on each of our update even if the package itself was not updated. The
texlive SVN revision number should not change unless the package is
updated. This will allow to share more store paths between different
texlive versions.
This commit is contained in:
Dmitry Kalinkin 2020-10-09 23:17:01 -04:00
parent d2a3ac31b6
commit 10438ba4fa
No known key found for this signature in database
GPG key ID: 5157B3EC8B2CA333
4 changed files with 7702 additions and 6626 deletions

View file

@ -1,4 +1,4 @@
{ stdenv, fetchurl, fetchpatch, patchutils
{ stdenv, fetchurl
, texlive
, zlib, libiconv, libpng, libX11
, freetype, gd, libXaw, icu, ghostscript, libXpm, libXmu, libXext
@ -14,78 +14,26 @@
let
withSystemLibs = map (libname: "--with-system-${libname}");
year = "2019";
year = "2020";
version = year; # keep names simple for now
common = {
src = fetchurl {
urls = [
"http://ftp.math.utah.edu/pub/tex/historic/systems/texlive/${year}/texlive-${year}0410-source.tar.xz"
"ftp://tug.ctan.org/pub/tex/historic/systems/texlive/${year}/texlive-${year}0410-source.tar.xz"
"http://ftp.math.utah.edu/pub/tex/historic/systems/texlive/${year}/texlive-${year}0406-source.tar.xz"
"ftp://tug.ctan.org/pub/tex/historic/systems/texlive/${year}/texlive-${year}0406-source.tar.xz"
];
sha256 = "1dfps39q6bdr1zsbp9p74mvalmy3bycihv19sb9c6kg30kprz8nj";
sha256 = "0y4h4j2qg714srhvf1hvn165w7sanr1j2vzrsgc23kxvrc43sbz3";
};
prePatch = let
# The source compatible with Poppler ${popplerVersion} not yet available in TeXLive ${year}
# so we need to use files introduced in https://www.tug.org/svn/texlive?view=revision&revision=52959
popplerVersion = "0.83.0";
pdftoepdf = let
revert-pdfmajorversion = fetchpatch {
name = "pdftoepdf-revert-pdfmajorversion.patch";
url = "https://www.tug.org/svn/texlive/trunk/Build/source/texk/web2c/pdftexdir/pdftoepdf.cc?view=patch&r1=52953&r2=52952&pathrev=52953";
sha256 = "19jiv5xbvnfdk8lj6yd6mdxgs8f313a4dwg8svjj90dd35kjcfh8";
revert = true;
postFetch = ''
# The default file, changed by this patch, contains a branch for vendored Poppler
# The version-specific file replaces the section with an error, so we need to drop that part from the patch.
# Fortunately, there is not anything else in the patch after #else.
sed '/ #else/q' $out > "$tmpfile"
${patchutils}/bin/recountdiff "$tmpfile" > "$out"
'';
};
in fetchurl {
name = "pdftoepdf-poppler${popplerVersion}.cc";
url = "https://www.tug.org/svn/texlive/trunk/Build/source/texk/web2c/pdftexdir/pdftoepdf-poppler${popplerVersion}.cc?revision=52959&view=co&pathrev=52959";
sha256 = "0pngvw1jgnm4cqskrzf5a3z8rj4ssl10007n3wbblj50hvvzjph3";
postFetch = ''
# The trunk added some extra arguments to certain functions so we need to revert that
# https://www.tug.org/svn/texlive?view=revision&revision=52953
patch $out < ${revert-pdfmajorversion}
'';
};
pdftosrc = fetchurl {
name = "pdftosrc-poppler${popplerVersion}.cc";
url = "https://www.tug.org/svn/texlive/trunk/Build/source/texk/web2c/pdftexdir/pdftosrc-poppler${popplerVersion}.cc?revision=52959&view=co&pathrev=52959";
sha256 = "0iq2cmwvf2lxy32sygrafwqgcwvvbdnvxm5l3mrg9cb2a1g06380";
};
in ''
prePatch = ''
for i in texk/kpathsea/mktex*; do
sed -i '/^mydir=/d' "$i"
done
cp -pv ${pdftoepdf} texk/web2c/pdftexdir/pdftoepdf.cc
cp -pv ${pdftosrc} texk/web2c/pdftexdir/pdftosrc.cc
cp -pv texk/web2c/pdftexdir/pdftoepdf{-poppler0.86.0,}.cc
cp -pv texk/web2c/pdftexdir/pdftosrc{-poppler0.83.0,}.cc
'';
patches = [
# poppler 0.84 compat fixups, use 0.83 files otherwise
./poppler84.patch
(fetchpatch {
name = "texlive-poppler-0.86.patch";
url = "https://git.archlinux.org/svntogit/packages.git/plain/trunk/texlive-poppler-0.86.patch?h=packages/texlive-bin&id=60244e41bb6f1501e8ed1fc9e6b7ba8d3f283398";
sha256 = "0pdvhaqc3zgz7hp0x3a4qs0nh26fkvgmr6w1cjljqhp1nyiw2f1l";
})
# Needed for ghostscript>=9.50
(fetchpatch {
name = "xdvipdfm-fix.patch";
url = "https://www.tug.org/svn/texlive/trunk/Build/source/texk/dvipdfm-x/spc_dvips.c?view=patch&r1=52765&r2=52764&pathrev=52765";
sha256 = "0qvrc7yxhbl5f4g340z8aql388bwib0m2gxd473skbmviy5bjr3f";
stripLen = 2;
})
];
# remove when removing synctex-missing-header.patch
preAutoreconf = "pushd texk/web2c";
postAutoreconf = "popd";
@ -123,7 +71,7 @@ core = stdenv.mkDerivation rec {
pname = "texlive-bin";
inherit version;
inherit (common) src patches prePatch preAutoreconf postAutoreconf;
inherit (common) src prePatch preAutoreconf postAutoreconf;
outputs = [ "out" "doc" ];
@ -149,7 +97,7 @@ core = stdenv.mkDerivation rec {
++ map (what: "--disable-${what}") [
"chktex"
"dvisvgm" "dvipng" # ghostscript dependency
"luatex" "luajittex"
"luatex" "luajittex" "luahbtex" "luajithbtex"
"mp" "pmp" "upmp" "mf" "mflua" "mfluajit" # cairo would bring in X and more
"xetex" "bibtexu" "bibtex8" "bibtex-x" "upmendex" # ICU isn't small
];
@ -208,12 +156,12 @@ core = stdenv.mkDerivation rec {
};
inherit (core-big) metafont mflua metapost luatex luajittex xetex;
inherit (core-big) metafont mflua metapost luatex luahbtex luajittex xetex;
core-big = stdenv.mkDerivation { #TODO: upmendex
pname = "texlive-core-big.bin";
inherit version;
inherit (common) src patches prePatch preAutoreconf postAutoreconf;
inherit (common) src prePatch preAutoreconf postAutoreconf;
hardeningDisable = [ "format" ];
@ -225,7 +173,7 @@ core-big = stdenv.mkDerivation { #TODO: upmendex
++ map (prog: "--disable-${prog}") # don't build things we already have
([ "tex" "ptex" "eptex" "uptex" "euptex" "aleph" "pdftex"
"web-progs" "synctex"
] ++ stdenv.lib.optionals (!withLuaJIT) [ "luajittex" "mfluajit" ]);
] ++ stdenv.lib.optionals (!withLuaJIT) [ "luajittex" "luajithbtex" "mfluajit" ]);
configureScript = ":";
@ -261,6 +209,7 @@ core-big = stdenv.mkDerivation { #TODO: upmendex
"mflua"
"metapost"
"luatex"
"luahbtex"
"luajittex"
"xetex"
];
@ -273,10 +222,11 @@ core-big = stdenv.mkDerivation { #TODO: upmendex
mv "$out/bin"/mflua{,-nowin} "$mflua/bin/"
mv "$out/bin"/{*tomp,mfplain,*mpost} "$metapost/bin/"
mv "$out/bin"/{luatex,texlua,texluac} "$luatex/bin/"
mv "$out/bin"/luahbtex "$luahbtex/bin/"
mv "$out/bin"/xetex "$xetex/bin/"
'' + stdenv.lib.optionalString withLuaJIT ''
mv "$out/bin"/mfluajit{,-nowin} "$mflua/bin/"
mv "$out/bin"/{luajittex,texluajit,texluajitc} "$luajittex/bin/"
mv "$out/bin"/{luajittex,luajithbtex,texluajit,texluajitc} "$luajittex/bin/"
'' ;
};
@ -305,31 +255,12 @@ 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*/ ];
preConfigure = "cd texk/dvisvgm";
# configure script has a bug: it refers to $HAVE_LIBGS but sets $have_libgs
# TODO: remove for texlive 2020?
HAVE_LIBGS = 1;
configureFlags = common.configureFlags
++ [ "--with-system-kpathsea" ];
@ -346,15 +277,6 @@ dvipng = stdenv.mkDerivation {
nativeBuildInputs = [ perl pkgconfig ];
buildInputs = [ core/*kpathsea*/ zlib libpng freetype gd ghostscript makeWrapper ];
patches = [
(fetchpatch {
url = "http://git.savannah.nongnu.org/cgit/dvipng.git/patch/?id=f3ff241827a587e3d39eda477041fd3280f5b245";
sha256 = "1a0ixl9mga24p6xk8dy3v60yifvbzd27vs0hv8996rfkp8jqa7is";
stripLen = 1;
extraPrefix = "texk/dvipng/dvipng-src/";
})
];
preConfigure = ''
cd texk/dvipng
patchShebangs doc/texi2pod.pl

View file

@ -2,7 +2,7 @@
- source: ../../../../../doc/languages-frameworks/texlive.xml
- current html: https://nixos.org/nixpkgs/manual/#sec-language-texlive
*/
{ stdenv, lib, fetchurl, fetchpatch, runCommand, writeText, buildEnv
{ stdenv, lib, fetchurl, runCommand, writeText, buildEnv
, callPackage, ghostscriptX, harfbuzz, poppler_min
, makeWrapper, python, ruby, perl
, useFixedHashes ? true
@ -57,21 +57,6 @@ let
collection-plaingeneric = orig.collection-plaingeneric // {
deps = orig.collection-plaingeneric.deps // { inherit (tl) xdvi; };
};
# TODO revert for texlive 2020
arara = lib.recursiveUpdate orig.arara {
postUnpack = let
arara_jar_fix = fetchpatch {
url = "https://github.com/TeX-Live/texlive-source/commit/dbaf12f4a47dcd62bcc96346f65493fda3fec2c8.diff";
sha256 = "148knr8k6sm6fpyj31kdq85yxvzvwp1prjha3f07q24kbar2l830";
};
in ''
if [ -f "$out"/scripts/arara/arara.sh ]; then
cd "$out"/scripts/
patch -p4 <${arara_jar_fix}
fi
'';
};
}); # overrides
# tl =
@ -81,7 +66,7 @@ let
flatDeps = pname: attrs:
let
version = attrs.version or bin.texliveYear;
version = attrs.version or (builtins.toString attrs.revision);
mkPkgV = tlType: let
pkg = attrs // {
sha512 = attrs.sha512.${tlType};
@ -112,15 +97,7 @@ let
fixedHash = fixedHashes.${tlName} or null; # be graceful about missing hashes
urls = args.urls or (if args ? url then [ args.url ] else
lib.concatMap
(up: [
# Only ~11% of packages in texlive 2019 have revisions, so
# the number of requests is nearly doubled if we lookup
# the name with revision
# "${up}/${urlName}.r${toString revision}.tar.xz"
"${up}/${urlName}.tar.xz" # TODO To be removed for texlive 2020?
])
urlPrefixes);
map (up: "${up}/${urlName}.r${toString revision}.tar.xz") urlPrefixes);
# The tarballs on CTAN mirrors for the current release are constantly
# receiving updates, so we can't use those directly. Stable snapshots
@ -129,11 +106,11 @@ let
# (https://tug.org/historic/).
urlPrefixes = args.urlPrefixes or [
# tlnet-final snapshot
"http://ftp.math.utah.edu/pub/tex/historic/systems/texlive/2019/tlnet-final/archive"
"ftp://tug.org/texlive/historic/2019/tlnet-final/archive"
#"http://ftp.math.utah.edu/pub/tex/historic/systems/texlive/2019/tlnet-final/archive"
#"ftp://tug.org/texlive/historic/2019/tlnet-final/archive"
# Daily snapshots hosted by one of the texlive release managers
#https://texlive.info/tlnet-archive/2019/10/19/tlnet/archive
https://texlive.info/tlnet-archive/2020/10/09/tlnet/archive
];
src = fetchurl { inherit urls sha512; };

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff