Merge pull request #227803 from xworld21/texlive-unpack-tlpkg

texlive: unpack and expose useful tlpkg/ content; run postaction scripts
This commit is contained in:
Dmitry Kalinkin 2023-05-15 13:16:02 -04:00 committed by GitHub
commit d8dea801e9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 127 additions and 38 deletions

View file

@ -15,13 +15,15 @@ let
];
};
pkgList = rec {
all = lib.filter pkgFilter (combinePkgs (lib.attrValues pkgSet));
combined = combinePkgs (lib.attrValues pkgSet);
all = lib.filter pkgFilter combined;
splitBin = builtins.partition (p: p.tlType == "bin") all;
bin = splitBin.right
++ lib.optional
(lib.any (p: p.tlType == "run" && p.pname == "pdfcrop") splitBin.wrong)
(lib.getBin ghostscript);
nonbin = splitBin.wrong;
tlpkg = lib.filter (pkg: pkg.tlType == "tlpkg") combined;
# extra interpreters needed for shebangs, based on 2015 schemes "medium" and "tetex"
# (omitted tk needed in pname == "epspdf", bin/epspdftk)
@ -35,11 +37,8 @@ let
name = "texlive-${extraName}-${bin.texliveYear}${extraVersion}";
texmfroot = (buildEnv {
name = "${name}-texmfroot";
# the 'non-relocated' packages must live in $TEXMFROOT/texmf-dist (e.g. fmtutil, updmap look for perl modules there)
extraPrefix = "/texmf-dist";
texmfdist = (buildEnv {
name = "${name}-texmfdist";
# remove fake derivations (without 'outPath') to avoid undesired build dependencies
paths = lib.catAttrs "outPath" pkgList.nonbin;
@ -48,16 +47,32 @@ let
postBuild = # generate ls-R database
''
perl -I "${bin.core.out}/share/texmf-dist/scripts/texlive" \
-- "$out/texmf-dist/scripts/texlive/mktexlsr.pl" --sort "$out"/texmf-dist
perl "$out/scripts/texlive/mktexlsr.pl" --sort "$out"
'';
}).overrideAttrs (_: { allowSubstitutes = true; });
tlpkg = (buildEnv {
name = "${name}-tlpkg";
# remove fake derivations (without 'outPath') to avoid undesired build dependencies
paths = lib.catAttrs "outPath" pkgList.tlpkg;
}).overrideAttrs (_: { allowSubstitutes = true; });
# the 'non-relocated' packages must live in $TEXMFROOT/texmf-dist
# and sometimes look into $TEXMFROOT/tlpkg (notably fmtutil, updmap look for perl modules in both)
texmfroot = runCommand "${name}-texmfroot" {
inherit texmfdist tlpkg;
} ''
mkdir -p "$out"
ln -s "$texmfdist" "$out"/texmf-dist
ln -s "$tlpkg" "$out"/tlpkg
'';
# expose info and man pages in usual /share/{info,man} location
doc = buildEnv {
name = "${name}-doc";
paths = [ (texmfroot.outPath + "/texmf-dist/doc") ];
paths = [ (texmfdist.outPath + "/doc") ];
extraPrefix = "/share";
pathsToLink = [
@ -76,6 +91,9 @@ in (buildEnv {
paths = lib.catAttrs "outPath" pkgList.bin ++ [ doc ];
pathsToLink = [
"/"
"/share/texmf-var/scripts"
"/share/texmf-var/tex/generic/config"
"/share/texmf-var/web2c"
"/bin" # ensure these are writeable directories
];
@ -91,9 +109,8 @@ in (buildEnv {
postBuild = ''
TEXMFROOT="${texmfroot}"
TEXMFDIST="${texmfroot}/texmf-dist"
TEXMFDIST="${texmfdist}"
export PATH="$out/bin:$PATH"
export PERL5LIB="${bin.core.out}/share/texmf-dist/scripts/texlive" # modules otherwise found in tlpkg/ of texlive.infra
TEXMFSYSCONFIG="$out/share/texmf-config"
TEXMFSYSVAR="$out/share/texmf-var"
export TEXMFCNF="$TEXMFSYSVAR/web2c"
@ -199,7 +216,6 @@ in (buildEnv {
rm "$link"
makeWrapper "$target" "$link" \
--prefix PATH : "${gnused}/bin:${gnugrep}/bin:${coreutils}/bin:$out/bin:${perl}/bin" \
--prefix PERL5LIB : "$PERL5LIB" \
--set-default TEXMFCNF "$TEXMFCNF" \
--set-default FONTCONFIG_FILE "${
# neccessary for XeTeX to find the fonts distributed with texlive
@ -232,16 +248,29 @@ in (buildEnv {
done
}
'' +
# texlive postactions (see TeXLive::TLUtils::_do_postaction_script)
(lib.concatMapStrings (pkg: ''
postaction='${pkg.postactionScript}'
case "$postaction" in
*.pl) postInterp=perl ;;
*.texlua) postInterp=texlua ;;
*) postInterp= ;;
esac
echo "postaction install script for ${pkg.pname}: ''${postInterp:+$postInterp }$postaction install $TEXMFROOT"
$postInterp "$TEXMFROOT/$postaction" install "$TEXMFROOT"
'') (lib.filter (pkg: pkg ? postactionScript) pkgList.tlpkg)) +
# texlive post-install actions
''
ln -sf "$TEXMFDIST"/scripts/texlive/updmap.pl "$out"/bin/updmap
ln -sf "$TEXMFDIST"/scripts/texlive/fmtutil.pl "$out"/bin/fmtutil
'' +
# now hack to preserve "$0" for mktexfmt
''
cp "$TEXMFDIST"/scripts/texlive/fmtutil.pl "$out/bin/fmtutil"
patchShebangs "$out/bin/fmtutil"
ln -sf fmtutil "$out/bin/mktexfmt"
cp "$TEXMFDIST"/scripts/texlive/fmtutil.pl "$TEXMFSYSVAR"/scripts/mktexfmt
ln -sf "$TEXMFSYSVAR"/scripts/mktexfmt "$out"/bin/mktexfmt
'' +
# generate formats
''
texlinks "$out/bin" && wrapBin
# many formats still ignore SOURCE_DATE_EPOCH even when FORCE_SOURCE_DATE=1
@ -250,7 +279,7 @@ in (buildEnv {
# https://salsa.debian.org/live-team/live-build/-/blob/master/examples/hooks/reproducible/2006-reproducible-texlive-binaries-fmt-files.hook.chroot#L52
# note that calling faketime and fmtutil is fragile (faketime uses LD_PRELOAD, fmtutil calls /bin/sh, causing potential glibc issues on non-NixOS)
# so we patch fmtutil to use faketime, rather than calling faketime fmtutil
substitute "$out/bin/fmtutil" fmtutil \
substitute "$TEXMFDIST"/scripts/texlive/fmtutil.pl fmtutil \
--replace 'my $cmdline = "$eng -ini ' 'my $cmdline = "faketime -f '"'"'\@1980-01-01 00:00:00 x0.001'"'"' $eng -ini '
FORCE_SOURCE_DATE=1 TZ= perl fmtutil --sys --all | grep '^fmtutil' # too verbose
#texlinks "$out/bin" && wrapBin # do we need to regenerate format links?
@ -280,7 +309,6 @@ in (buildEnv {
# * ./bin/repstopdf needs to be a symlink to be processed by wrapBin
''
if [[ -e "$out"/bin/epstopdf ]]; then
mkdir -p "$TEXMFSYSVAR/scripts"
cp "$out"/bin/epstopdf "$TEXMFSYSVAR"/scripts/repstopdf
ln -s "$TEXMFSYSVAR"/scripts/repstopdf "$out"/bin/repstopdf
fi

View file

@ -23,7 +23,7 @@ let
# function for creating a working environment from a set of TL packages
combine = import ./combine.nix {
inherit bin combinePkgs buildEnv lib makeWrapper writeText
inherit bin combinePkgs buildEnv lib makeWrapper writeText runCommand
stdenv python3 ruby perl gnused gnugrep coreutils libfaketime makeFontsConf;
ghostscript = ghostscript_headless;
};
@ -39,9 +39,8 @@ let
overridden = orig // {
# overrides of texlive.tlpdb
texlive-msg-translations = orig.texlive-msg-translations // {
hasRunfiles = false; # only *.po for tlmgr
};
# only *.po for tlmgr
texlive-msg-translations = builtins.removeAttrs orig.texlive-msg-translations [ "hasTlpkg" ];
xdvi = orig.xdvi // { # it seems to need it to transform fonts
deps = (orig.xdvi.deps or []) ++ [ "metafont" ];
@ -82,8 +81,6 @@ let
}; # overrides
in lib.mapAttrs mkTLPkg overridden;
# TODO: texlive.infra for web2c config?
# create a TeX package: an attribute set { pkgs = [ ... ]; ... } where pkgs is a list of derivations
mkTLPkg = pname: attrs:
@ -91,12 +88,12 @@ let
version = attrs.version or (toString attrs.revision);
mkPkgV = tlType: let
pkg = attrs // {
sha512 = attrs.sha512.${tlType};
sha512 = attrs.sha512.${if tlType == "tlpkg" then "run" else tlType};
inherit pname tlType version;
};
in mkPkg pkg;
in {
# TL pkg contains lists of packages: runtime files, docs, sources, binaries
# TL pkg contains lists of packages: runtime files, docs, sources, tlpkg, binaries
pkgs =
# tarball of a collection/scheme itself only contains a tlobj file
[( if (attrs.hasRunfiles or false) then mkPkgV "run"
@ -111,6 +108,7 @@ let
)]
++ lib.optional (attrs.sha512 ? doc) (mkPkgV "doc")
++ lib.optional (attrs.sha512 ? source) (mkPkgV "source")
++ lib.optional (attrs.hasTlpkg or false) (mkPkgV "tlpkg")
++ lib.optional (bin ? ${pname})
( bin.${pname} // { tlType = "bin"; } );
};
@ -161,8 +159,8 @@ let
mkPkg = { pname, tlType, revision, version, sha512, postUnpack ? "", stripPrefix ? 1, ... }@args:
let
# the basename used by upstream (without ".tar.xz" suffix)
urlName = pname + lib.optionalString (tlType != "run") ".${tlType}";
tlName = urlName + "-${version}";
urlName = pname + lib.optionalString (tlType != "run" && tlType != "tlpkg") ".${tlType}";
tlName = urlName + lib.optionalString (tlType == "tlpkg") ".tlpkg" + "-${version}";
fixedHash = fixedHashes.${tlName} or null; # be graceful about missing hashes
urls = args.urls or (if args ? url then [ args.url ] else
@ -171,7 +169,7 @@ let
in runCommand "texlive-${tlName}"
( {
src = fetchurl { inherit urls sha512; };
inherit stripPrefix;
inherit stripPrefix tlType;
# metadata for texlive.combine
passthru = {
inherit pname tlType version;
@ -180,6 +178,8 @@ let
} // lib.optionalAttrs (tlType == "run") {
hasFormats = args.hasFormats or false;
hasHyphens = args.hasHyphens or false;
} // lib.optionalAttrs (tlType == "tlpkg" && args ? postactionScript) {
postactionScript = args.postactionScript;
};
} // lib.optionalAttrs (fixedHash != null) {
outputHash = fixedHash;
@ -189,9 +189,16 @@ let
)
( ''
mkdir "$out"
tar -xf "$src" \
--strip-components="$stripPrefix" \
-C "$out" --anchored --exclude=tlpkg --keep-old-files
if [[ "$tlType" == "tlpkg" ]]; then
tar -xf "$src" \
--strip-components=1 \
-C "$out" --anchored --exclude=tlpkg/tlpobj --exclude=tlpkg/installer --exclude=tlpkg/gpg --keep-old-files \
tlpkg
else
tar -xf "$src" \
--strip-components="$stripPrefix" \
-C "$out" --anchored --exclude=tlpkg --keep-old-files
fi
'' + postUnpack
);

View file

@ -1,4 +1,7 @@
{
"texlive.infra-63645"="127ff11k8hamywgvvb4apbg1ra64ig7sghg0qqn8c913mqgxf844";
"texlive.infra.doc-63645"="1c9xqbbbn2h7v76kp7bhjwk1g3zzykgdrkrslrzrrhs9x7laicl4";
"texlive.infra.tlpkg-63645"="135cgamyq6dnffa7r8xvyr8krx65gqdgy88v3wwprqwz4dfhvzpi";
"amsfonts-3.04"="0l3ypclhv5qdpcpy29xwda2m3cjfn5l996agas6yhpdr2m58q211";
"amsfonts.doc-3.04"="1v7chx5rvvqmcf7j35qi55wxwxkbfkbv34b15yrgn6bflniziicm";
"amsfonts.source-3.04"="064gndy9lnmsq2srw5hh97sbdk8gk0qv9zzki00ms3c6rzhd9sjl";
@ -12,6 +15,7 @@
"colorprofiles.doc-20181105"="152vrbm5km4ymj5h41x8cjyypj06g4xq3vyvmgakai9qz270dvyz";
"dvipdfmx-61101"="0i83g2476bp3zfgdvg11kmls969ip36z1d4w592946547ar2akmv";
"dvipdfmx.doc-61101"="04zmlbpiclcd6bsxzq2xcssrbnla9wxvw4fx4p52lkija91qv848";
"dvipdfmx.tlpkg-61101"="1b9wcx70n7dip0yhp7sh3j4g0rkwg03w6hr2mav07219kp0bw75k";
"glyphlist-54074"="12nmmyh77vr2622lzi11nm1z1k2bxs7jz018yl4rwjlpg0sxg1ja";
"dvips-62387"="0k89qqz9zx5zh13azpjndfzszgl85hq4513kaayf4k3spy9fn5yw";
"dvips.doc-62387"="0cf5rdlg25lvyk7vzhyxnwfbgb5ngm8z4kzvj2y0hhq9jz9szpyj";
@ -65,8 +69,10 @@
"texlive-en.doc-65770"="05i4ggfi558frkjhxrrkjzd3x8ff1zm2qk056a23v736a5hg9y2m";
"texlive-scripts-66570"="0hl1vjr4hr7q7s2pvizicmabb185df5rl84cjsz0ki7vai5mh7pq";
"texlive-scripts.doc-66570"="0zvji7w8zvykmy97yim0yx0m05pazg0f60bbls0lb3mnx7rx8imj";
"texlive-scripts.tlpkg-66570"="0sjjj9z1dhilhpc8pq4154czrb79z9cm044jvn75kxcjv6v5l2m5";
"tlshell-62795"="06zjawsk91jknic542k9gw74pdfb1lv2iil09rpv9fw2i58lxsg9";
"tlshell.doc-62795"="1h5mk09sakbmgsppl9fnry28xnzqya3bmp3r1nkzg44cv7kl98vz";
"tlshell.tlpkg-62795"="0zvpmmf9dnjz64adb4dn615qyd1d09hqj2kvm898009697r20lh7";
"aaai-named-52470"="1xs2iki0v1mh0kbqjxnv9r24bcfmgj6myfw7h368h8g0s1n8d5v6";
"aichej-15878"="1pr92pq3yjsrbax6ah01cqg7131fp2rkqqjnxwcrm4119z2ic0gf";
"ajl-34016"="1xkrvy06lw4ngj94zybs14ysal2pg7g71h864gq9bjw0zwq2yjzs";
@ -847,6 +853,7 @@
"stmaryrd.source-22027"="1wmn7bwahn28lwipkpsla74wn3a018808rmh7yvxdkbxfbzcwqcz";
"xetex-62387"="09124rd2k40dihk4c1pidkd44rvhv1b0ain1bfk5ry1032ky7wly";
"xetex.doc-62387"="1zj2mwi7rlibadwy42f1jkgzni6wvz01rwd5d7w48x00sjxhckxj";
"xetex.tlpkg-62387"="01xia61wywddd2aa8xv703z1fb6sz4n13gvpbk7kync4dmki8v48";
"xetexconfig-45845"="1253njshiwdayzq0xir9cmbi8syhjb3sc4pyrw9p6kzyqvckkcxm";
"context-account-47085"="1j1rvgcznn8c637dayxpdagpwjq6fbn52sjmrb0wn4gd4b4q3nk8";
"context-account.doc-47085"="0lfx6aa235jx7sz27qh0328n68ra3z2bw3dsh5p2wzkg1wxbaa6g";
@ -2888,6 +2895,7 @@
"gentombow.doc-64333"="0vqfamrsy4r1wqly1196cq2w69wydzzw09y3jg5llvyh95a6dp0i";
"haranoaji-20230223"="1vfk6bh62pkmf961qlj1f0gv4yggp6sadjr141h8905wf5980m46";
"haranoaji.doc-20230223"="1phy7r81z2wykymzsscvgk0211w1lwjjn946mpzdw97vskx1v2f3";
"haranoaji.tlpkg-20230223"="0l9jczs7kyml3i79idyzxsmla443zaxl5fm2k7dmg5qpc30kzmaw";
"haranoaji-extra-20230223"="0j34fizmxvalvw4vssx9fm8ik2lg0nhv1saq9xbrd1pymjkavnv8";
"haranoaji-extra.doc-20230223"="0izf929g5fwzgyb9piagjjjn87rq4dj6qy3j873q4cflqd9avdns";
"ieejtran-0.19"="07y254kl5wanv7d2jyzhwlf5z6n542217f5n7gdyrm4jryzhb0ly";
@ -2935,9 +2943,11 @@
"ptex-fontmaps-20210625.0"="0f6cijbr26jjnba7g5ffyh8pb0aihdfv094yyxhrp2wlf93ca4jg";
"ptex-fontmaps.doc-20210625.0"="00lx6cv5sb039k3wzjsq92q9x6a2q6l96khmj6rc0l06xva4j6am";
"ptex-fontmaps.source-20210625.0"="046jbs402n7g7dyd1akqwx382rkn9m7cs6qr6nz1cpd7c56kfb9n";
"ptex-fontmaps.tlpkg-20210625.0"="0znid3c8bpw7acfi4hj14gabs44ywfmcz88x8vya1vzs9mzsiqbj";
"ptex-manual.doc-62915"="0zwmig2h7ma853lqnl845mxw6512x663y16q9vdd93ci5k94dlf1";
"ptex2pdf-20200520.0"="0s4b60gc0wg4wgxczzr2h1xlic0rk23a9wvfy76vysqzlsfmh0xl";
"ptex2pdf.doc-20200520.0"="0ky2zh6a5d6w2aq8k9wg7p3cvp8l4wihfjlz3sir3ggj1rx2x6j4";
"ptex2pdf.tlpkg-20200520.0"="0413ifnbmmp6awmpbfa6vm31lfqzxhli49dfd5gnw8r8ny5k1jhy";
"pxbase-1.4"="0nlnlzpbd2dd397lxxg97pgaagfyb00ygrd6dz0v3gkmpwllnkvf";
"pxbase.doc-1.4"="1kjkqsbrsiwzz6szjm2irz6ijy9q5xnjimdhhv52xk0j46hyiphf";
"pxchfon-1.9a"="1g1xxx5imyhpblbvwpb86fw3as6mfcxq7ay2vjjn8ydixmx30pnz";

View file

@ -15,10 +15,10 @@ $a}
# form an attrmap per package
# ignore packages whose name contains "." (such as binaries)
/^name ([^.]+)$/,/^$/{
:next-package
/^name ([^.]+|texlive\.infra)$/,/^$/{
# quote package names, as some start with a number :-/
s/^name (.*)$/"\1" = {/p
/^$/,1i};
# extract revision
s/^revision ([0-9]*)$/ revision = \1;/p
@ -27,7 +27,6 @@ $a}
s/^containerchecksum (.*)/ sha512.run = "\1";/p
s/^doccontainerchecksum (.*)/ sha512.doc = "\1";/p
s/^srccontainerchecksum (.*)/ sha512.source = "\1";/p
/^runfiles /i\ hasRunfiles = true;
# number of path components to strip, defaulting to 1 ("texmf-dist/")
/^relocated 1/i\ stripPrefix = 0;
@ -44,16 +43,40 @@ $a}
# loop through following depend lines
:next
h ; N # save & read next line
s/\ndepend (.+)\.(.+)$//
s/\ndepend (.+)$/\n "\1"/
s/\ndepend ([^.]+|texlive\.infra)$/\n "\1"/
s/\ndepend (.+)$//
t next # loop if the previous lines matched
x; s/$/\n ];/p ; x # print saved deps
s/^.*\n// # remove deps, resume processing
}
# detect presence of notable files
/^runfiles /{
s/^runfiles .*$// # ignore the first line
:next-file
h ; N # save to hold space & read next line
s!\n (.+)$! \1! # save file name
t next-file # loop if the previous lines matched
x # work on saved lines in hold space
/ (RELOC|texmf-dist)\//i\ hasRunfiles = true;
/ tlpkg\//i\ hasTlpkg = true;
x # restore pattern space
s/^.*\n// # remove saved lines, resume processing
}
# extract postaction scripts (right now, at most one per package, so a string suffices)
s/^postaction script file=(.*)$/ postactionScript = "\1";/p
# extract hyphenation patterns and formats
# (this may create duplicate lines, use uniq to remove them)
/^execute\sAddHyphen/i\ hasHyphens = true;
/^execute\sAddFormat/i\ hasFormats = true;
# close attrmap
/^$/{
i};
b next-package
}
}

View file

@ -6349,6 +6349,7 @@
"texlive-en"
"texlive-msg-translations"
"texlive-scripts"
"texlive.infra"
"tlshell"
"unicode-data"
"xdvi"
@ -13965,9 +13966,11 @@
deps = [
"glyphlist"
];
postactionScript = "tlpkg/tlpostcode/dvipdfmx.pl";
sha512.run = "6dd78f4b5cabb51c3bd9988fa46bf90a5a79b3d3293257a4c563a8a76a5a03eb167ce3ec0d4ce6ed05412a551eb201f2379a50a97ac5355ebe833f7b34cee4b4";
sha512.doc = "00dce9b36eefd1788bbe455b2e5104efd9afc8bd891aeafb2cd9bdee406eeb25ab520e42e614e9d2363eb6a7273232bc3c4805bacd82a22099c5ffc438e852cb";
hasRunfiles = true;
hasTlpkg = true;
};
"dvipng" = {
revision = 62517;
@ -18804,9 +18807,11 @@
};
"haranoaji" = {
revision = 66119;
postactionScript = "tlpkg/tlpostcode/haranoaji-tlpost.pl";
sha512.run = "96100a78ab4292a4dc656fb70e2973f75ece3964f3a0d85d9f9153b7052ea90c14f074b195d31e46465dc52ea0516541a16981239abf552861dbca16fac3ab1d";
sha512.doc = "bb4161c95b760c9c103f086c134d7f7528dafd92f82623dd95322ea644b86c35e2baef05170c3c67a7f1c4905dc8a5fd40108db1c65074b558eec69f0e3c6910";
hasRunfiles = true;
hasTlpkg = true;
version = "20230223";
};
"haranoaji-extra" = {
@ -31279,10 +31284,12 @@
};
"ptex-fontmaps" = {
revision = 59711;
postactionScript = "tlpkg/tlpostcode/ptex-fontmaps-tlpost.pl";
sha512.run = "16afa97812d830b2b98f657f67ef690da420afe63ccf6f002131101f3ce9a03ff6e5170db1b316e9db521e4cdf89c7aedf26c57be162bf1c5b48fa4226e5e029";
sha512.doc = "affd6dde30276fa680a0d99d0a51650ee95260535dff717801d61ccb8165c5526047e46ad6478367a439e9a84721500128062b8cb6a1f33a25a65fadae4547f1";
sha512.source = "eb450119b3897f9e8374d29a3a9512819a05263d5829c81d56dc00dd35995133d1a3cfcadc59ce2aea52ac8b5bc195d27446f159356e63b433e235d1098e93b5";
hasRunfiles = true;
hasTlpkg = true;
version = "20210625.0";
};
"ptex-fonts" = {
@ -31300,9 +31307,11 @@
};
"ptex2pdf" = {
revision = 64072;
postactionScript = "tlpkg/tlpostcode/ptex2pdf-tlpost.pl";
sha512.run = "1893a49eb389914d7a9247dece7f67d9d6af05efca77801130726d6422b1a0150b56f29d3f133f433d70989f6ffcc2b44d209cd044c84ee0833c2f77b87f3e46";
sha512.doc = "f193b44004b487d93f025b34b72a17cbaf4111b1a6e1ceb4ac1b69c6c07aa4dce46cde510cbd01fb71fb08c06f7bbb415a4a8051de5861f1f586b756060f386f";
hasRunfiles = true;
hasTlpkg = true;
version = "20200520.0";
};
"ptext" = {
@ -32946,6 +32955,7 @@
"hyphen-base"
"kpathsea"
"texlive-scripts"
"texlive.infra"
];
sha512.run = "f3e449bf0b34deb9ae776685f386245c4ca9644f2175ae51e9c62faa00e3cfac30fa2aa07fbd83b15b21d487ca368c09a18742d2434047783350698ced3b20b9";
};
@ -36160,7 +36170,7 @@
"texlive-msg-translations" = {
revision = 65889;
sha512.run = "03c0445d0cb0bb3722a691fd94b93c7fe9d046dbf5945ecadcce17a2333878ffc542f0b7f263ae09bd0537a68c1a59d6c04b873ce8cdc6c8b57f7ded5b6681f9";
hasRunfiles = true;
hasTlpkg = true;
};
"texlive-pl" = {
revision = 62841;
@ -36179,6 +36189,7 @@
sha512.run = "3dbb2007ae7b80862265d6196f77a9d796f02f6914871f4dad094f8419040fe7064daf6ecf5dd611b5764dd4148d034a97d82aa22671199e8a3dc79373859c67";
sha512.doc = "6976ba00c8ee50664aaa1f762231f297f01548a94d6a632b386845e7fa43b20b63342d58874e87869a73a9c23bba358f762f5cc3814690f870c6216679471a89";
hasRunfiles = true;
hasTlpkg = true;
};
"texlive-scripts-extra" = {
revision = 62517;
@ -36198,6 +36209,13 @@
sha512.run = "1a7e43528c2dac5c623943b1b268b99f0db6a4876f50c5386a8ea160b8b5e066604d34c0a53cee25cc3f839eb7f4be177e3d98ed51c83c77df6293c77a02e0ab";
sha512.doc = "534c505455c5f9c73803c140a340df2882a97516e15f52c5b65695b7c626404336a0e4f6190155b5bda1b9a86d7f4d44ac294bccec791ec6701e56d13c00d71d";
};
"texlive.infra" = {
revision = 63645;
sha512.run = "cbc7e70f3b4d451a51f06ed640b37ce28b8ea32f0dad75b32e54856e1051934d32125f2428b074a69503fb24c943c5eded58d77168d606891ea8209bbf852c65";
sha512.doc = "37f37bfd17988a8897312581efcf05aff76af6fd2c30867c65e0a4445ddc1f7fb90bb86984999d5fc942159bccf5c2a188e5b552702405405c902c97ae4828ff";
hasRunfiles = true;
hasTlpkg = true;
};
"texliveonfly" = {
revision = 55777;
sha512.run = "63353a768b700ea11982e9552046dfd1dc3d844883f03099833cabe2af5ccddecebd7ef737fbcd256c90304174165a4d283d4912f8311508e61c723d751619a7";
@ -37393,6 +37411,7 @@
sha512.run = "285fffbc63ac1b87b1ad143d043ace7ed1f52f48c4e03a9fc78c9ff6adeb2062af0ce9b5245b77349528ca18c0fe6ee8ad44b794adb24ae62f00e4a18501d7c7";
sha512.doc = "73962fa94f7ca3a78b6149a44b72c39096fb54263660ccb6c0bcc024023dfef665c5132b9cb78953c92ec8b7d161581294e32b0ab26c9e0e2e9eadc16aa9ff72";
hasRunfiles = true;
hasTlpkg = true;
};
"to-be-determined" = {
revision = 64882;
@ -39914,9 +39933,11 @@
"xetexconfig"
];
hasFormats = true;
postactionScript = "tlpkg/tlpostcode/xetex.pl";
sha512.run = "e9f0aebda0a7fb36e2cbce4dd49e965335438c4ebf2d41eb8e19eabe29617239dd67e7e3433a8c75fd40f072a2c6753a7d0762afd34fca4130929e51888aaabf";
sha512.doc = "31f03ee1ae00bc7883109ab7b7374feedc384d86b491873e90797658eae12299dd60b95edc1c86f1faa61a0b7a952cca23993e991863b37e49c27afd6c21c034";
hasRunfiles = true;
hasTlpkg = true;
};
"xetex-devanagari" = {
revision = 34296;