summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/latex-tds/build.pl
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/latex-tds/build.pl')
-rwxr-xr-xMaster/texmf-dist/source/latex/latex-tds/build.pl591
1 files changed, 421 insertions, 170 deletions
diff --git a/Master/texmf-dist/source/latex/latex-tds/build.pl b/Master/texmf-dist/source/latex/latex-tds/build.pl
index e2921134776..fe6b5715171 100755
--- a/Master/texmf-dist/source/latex/latex-tds/build.pl
+++ b/Master/texmf-dist/source/latex/latex-tds/build.pl
@@ -4,8 +4,8 @@ $^W=1;
my $prj = 'latex-tds';
my $file = 'build.pl';
-my $version = cvs('$Revision: 1.157 $');
-my $date = cvs('$Date: 2011/04/18 20:00:10 $');
+my $version = cvs('$Revision: 1.167 $');
+my $date = cvs('$Date: 2011/07/26 10:38:11 $');
my $author = 'Heiko Oberdiek';
my $copyright = "Copyright 2006-2011 $author";
chomp(my $license = <<"END_LICENSE");
@@ -73,8 +73,9 @@ my $dir_license = 'license';
my $dir_tex = 'tex';
my $dir_patch = 'patch';
my $dir_distrib = 'distrib';
-my $dir_texmf = "texmf";
+my $dir_texmf = 'texmf';
chomp(my $cwd = `pwd`);
+my $dir_cache = "$cwd/cache";
my $jar_pdfbox_rewrite = "$cwd/$dir_lib/pdfbox-rewrite.jar";
my $jar_multivalent = "$cwd/$dir_lib/Multivalent20060102.jar";
@@ -87,36 +88,42 @@ my $file_ctan_distrib = "$cwd/$prj.zip";
my $file_ziptimetree = get_perl_script('ziptimetree');
my $file_adjust_checksum = get_perl_script('adjust_checksum');
-my $prg_checksum = $file_adjust_checksum;
-my $prg_bibtex = "bibtex";
-my $prg_chmod = "chmod";
-my $prg_cp = 'cp -p';
-my $prg_curl = 'curl';
-my $prg_docstrip = 'tex -shell-escape';
-my $prg_epstopdf = 'epstopdf';
-my $prg_find = 'find';
+my $prg_checksum = $file_adjust_checksum;
+my $prg_bibtex = "bibtex";
+my $prg_chmod = "chmod";
+my $prg_cp = 'cp -p';
+my $prg_curl = 'curl';
+my $prg_docstrip = 'tex -shell-escape';
+my $prg_epstopdf = 'epstopdf';
+my $prg_find = 'find';
# my $prg_java = '/work/java-1.5.0/bin/java';
# java 1.6 don't work with the used version of Multivalent
-my $prg_java = 'java';
-my $prg_kpsewhich = 'kpsewhich';
-my $prg_ls = "ls";
-my $prg_makeindex = 'makeindex';
-my $prg_mkdir = 'mkdir';
-my $prg_mv = 'mv';
-my $prg_patch = "patch";
-my $prg_pdflatex = 'pdflatex';
-my $prg_pdflatextds = "pdflatex -fmt=$cwd/$dir_build/latex-tds";
-my $prg_pdftex = "pdftex";
-my $prg_rm = "rm";
-my $prg_rsync = "rsync";
-my $prg_sed = "sed";
-my $prg_sort = "sort";
-my $prg_texhash = "texhash";
-my $prg_unzip = 'unzip';
-my $prg_weave = 'weave';
-my $prg_wget = 'wget';
-my $prg_zip = 'zip';
-my $prg_ziptimetree = $file_ziptimetree;
+my $prg_java = 'java';
+my $prg_kpsewhich = 'kpsewhich';
+my $prg_ls = "ls";
+my $prg_makeindex = 'makeindex';
+my $prg_mkdir = 'mkdir';
+my $prg_mv = 'mv';
+my $prg_patch = "patch";
+my $prg_lualatex = 'lualatex';
+my $prg_lualatextds = "lualatex -fmt=$cwd/$dir_build/lualatex-tds";
+my $prg_lualatextds2 = "lualatex -fmt=$cwd/$dir_build/lualatex-tds2";
+my $prg_pdflatex = 'pdflatex';
+my $prg_pdflatextds = "pdflatex -fmt=$cwd/$dir_build/pdflatex-tds";
+my $prg_pdftex = "pdftex";
+my $prg_recode = "recode";
+my $prg_rm = "rm";
+my $prg_rsync = "rsync";
+my $prg_sed = "sed";
+my $prg_sort = "sort";
+my $prg_texhash = "texhash";
+my $prg_unzip = 'unzip';
+my $prg_weave = 'weave';
+my $prg_wget = 'wget';
+my $prg_zip = 'zip';
+my $prg_ziptimetree = $file_ziptimetree;
+
+my $prg_latextds = $prg_lualatextds; ### temporarily
$ENV{'TEXINPUTS'} = "$cwd/tex:.:texmf/tex//:";
$ENV{'BSTINPUTS'} = '.:texmf/bibtex//:'; # amslatex
@@ -124,15 +131,17 @@ $ENV{'TFMFONTS'} = 'texmf/fonts/tfm//:'; # psnfss
$ENV{'VFFONTS'} = 'texmf/fonts/vf//:'; # psnfss
$ENV{'INDEXSTYLE'} = '.:texmf/makeindex//:'; # babel
if ($ENV{'TEXMFHOME'}) {
- $ENV{'TEXMFHOME'} = "$cwd/$dir_texmf:${'TEXMFHOME'}";
+ $ENV{'TEXMFHOME'} = "$cwd/$dir_texmf:$ENV{'TEXMFHOME'}";
}
else {
- $ENV{'TEXMFHOME'} = "$cwd/$dir_texmf:";
+ $ENV{'TEXMFHOME'} = "$cwd/$dir_texmf:$ENV{'HOME'}/texmf:";
}
sub install ($@);
+my $final = 0;
sub final_begin ();
sub final_end ();
+sub final_ok ();
### Print title
{
@@ -147,13 +156,15 @@ Usage: build.pl [options]
General options:
--(no)download (check for newer files, disabled by default)
--(no)postprocess (pdf files are postprocessed, enabled by default)
+ --(no)cache (use cached pdf files, enabled by default)
Module options:
--all (select all modules)
END_OF_USAGE
map { $usage .= " --(no)$_\n"; } @pkg_list;
my $opt_download = 0;
-my $opt_postprocess = 1;
+my $opt_postprocess = 0;
+my $opt_cache = 1;
my $opt_all = 0;
my %modules;
my @list_modules;
@@ -167,7 +178,8 @@ GetOptions(
map { $modules{$_} = 1; } @pkg_list;
},
'download!' => \$opt_download,
- 'postprocess!' => \$opt_postprocess
+ 'postprocess!' => \$opt_postprocess,
+ 'cache!' => \$opt_cache,
) or die $usage;
@ARGV == 0 or die $usage;
@list_modules = grep { $modules{$_}; } @pkg_list;
@@ -180,7 +192,9 @@ if (@list_modules > 0) {
ensure_directory($dir_build);
chdir $dir_build;
- run("$prg_pdflatex -ini -etex ../tex/latex-tds.ini");
+ run("$prg_pdflatex -ini -etex ../tex/pdflatex-tds.ini");
+ run("$prg_lualatex -ini -etex ../tex/lualatex-tds.ini");
+ run("$prg_lualatex -ini -etex ../tex/lualatex-tds2.ini");
chdir $cwd;
}
@@ -253,9 +267,10 @@ if (@list_modules > 0) {
download_ctan('etex_doc', 'systems/e-tex/v2.1');
download_ams('amscls', '');
download_ams('amsmath', '');
+ # download_ams('amsrefs', 'amslatex/amsrefs');
# download_ams('amsrefs', '');
- download_ams('amslatex', '');
- download_ams('amsrefs-tds', 'amslatex/amsrefs');
+ # download_ams('amslatex', '');
+ # download_ams('amsrefs-tds', 'amslatex/amsrefs');
# download_ams('amsrefs-ctan', 'amslatex/amsrefs');
download_err('manual');
download_err('lb2');
@@ -356,6 +371,14 @@ section('Unpacking');
unpack_ams('amscls', "$dir_incoming_ctan/amscls.tds.zip");
unpack_ams('amsrefs', "$dir_incoming_ctan/amsrefs.tds.zip");
unpack_ams('amsmath', "$dir_incoming_ams/amsmath.zip");
+ # because of 00readme.txt and amsrefs.dtx
+ unpacking('amslatex',
+ "$dir_incoming_ctan/amsrefs.zip",
+ "$dir_build/amslatex/ctan");
+ run("$prg_cp $dir_build/amslatex/ctan/amsrefs/00readme.txt "
+ . "$dir_build/amslatex/texmf/source/latex/amsrefs/00readme.txt");
+ run("$prg_cp $dir_build/amslatex/ctan/amsrefs/amsrefs.dtx "
+ . "$dir_build/amslatex/texmf/source/latex/amsrefs/amsrefs.dtx");
}
unpack_psnfss('lw35nfss');
unpack_psnfss('freenfss');
@@ -588,9 +611,11 @@ section('Patches after source install');
chdir $cwd;
patch('base/encguide.tex');
+ patch('base/lb2.err');
patch('base/source2e.tex');
+ patch('base/tlc2.err');
patch('base/utf8ienc.dtx');
- patch('base/lppl.tex');
+ run("$prg_recode latin1..utf8 $dir_build/base/lb2.err");
}
if ($modules{'knuth'}) {
@@ -608,6 +633,8 @@ section('Patches after source install');
if ($modules{'amslatex'}) {
patch("amslatex/amscls/amsclass.dtx");
+ patch("amslatex/amsrefs/changes.tex");
+ run("$prg_recode latin1..utf8 $dir_build/amslatex/amsrefs/changes.tex");
}
}
@@ -630,7 +657,7 @@ section('Docstrip');
docstrip('graphics', 'graphics-drivers');
docstrip('tools', 'tools');
docstrip('babel', 'babel');
-
+
# patch for amsthm.sty, part 1/2
if ($modules{'amslatex'}) {
chdir "$dir_build/amslatex/amscls";
@@ -813,7 +840,7 @@ section('Install tex doc');
]);
chdir $cwd;
}
-
+
# patch for amsthm.sty, part 2/2
if ($modules{'amslatex'}) {
chdir "$dir_build/amslatex/amscls";
@@ -856,15 +883,55 @@ if ($modules{'base'}) {
run("$prg_texhash $dir_texmf");
}
+### PDF caching
+my $count_cache = 0;
+my $count_generate = 0;
+sub cache ($$$) {
+ my $dir = shift;
+ my $name = shift;
+ my $sub_generate = shift;
+ ensure_directory("$dir_cache/$dir");
+ my $file_cache_pdf = "$dir_cache/$dir/$name.pdf";
+ my $file_cache_log = "$dir_cache/$dir/$name.log";
+ my $file_here_pdf = "$name.pdf";
+ my $file_here_log = "$name.log";
+ my $generate = 1;
+ $generate = 0
+ if $opt_cache
+ and -f $file_cache_pdf
+ and -f $file_cache_log;
+ if ($generate) {
+ &$sub_generate;
+ run("$prg_cp $file_here_pdf $file_cache_pdf");
+ run("$prg_cp $file_here_log $file_cache_log");
+ $count_generate++;
+ }
+ else {
+ final_begin;
+ run("$prg_cp $file_cache_pdf $file_here_pdf");
+ run("$prg_cp $file_cache_log $file_here_log");
+ final_end;
+ $count_cache++;
+ }
+ final_ok;
+ print "--- FINAL LOG: $file_cache_log ---\n\n";
+}
+
### Generate documentation for base
if ($modules{'base'}) {
section('Documenation: base');
sub base_guide ($) {
my $guide = "$_[0]guide";
- run("$prg_pdflatextds -draftmode $guide");
- run("$prg_pdflatextds -draftmode $guide");
- run("$prg_pdflatextds $guide");
+ cache 'base', $guide, sub {
+ my $latextds = $prg_lualatextds;
+ $latextds = $prg_lualatextds2 if $guide eq 'usrguide';
+ run("$latextds -draftmode $guide");
+ run("$latextds -draftmode $guide");
+ final_begin;
+ run("$latextds $guide");
+ final_end;
+ };
install_pdf('base', $guide);
1;
}
@@ -872,49 +939,71 @@ if ($modules{'base'}) {
my $ext = shift;
my $base = shift;
my $file = "$base.$ext";
- run("$prg_pdflatextds -draftmode $file");
- run("$prg_pdflatextds -draftmode $file");
- run("$prg_pdflatextds $file");
+ my $latextds = $prg_lualatextds;
+ $latextds = $prg_pdflatextds if $base eq 'utf8ienc';
+ cache 'base', $base, sub {
+ run("$latextds -draftmode $file");
+ run("$latextds -draftmode $file");
+ final_begin;
+ run("$latextds $file");
+ final_end;
+ };
install_pdf('base', $base);
1;
}
sub complex_dtx ($) {
my $base = shift;
my $dtx = "$base.dtx";
- run("$prg_pdflatextds -draftmode $dtx");
- run_makeindex("$base.idx", 'gind.ist');
- run_makeindex("$base.glo", 'gglo.ist', "$base.gls");
- run("$prg_pdflatextds -draftmode $dtx");
- run_makeindex("$base.idx", 'gind.ist');
- run_makeindex("$base.glo", 'gglo.ist', "$base.gls");
- run("$prg_pdflatextds -draftmode $dtx");
- run("$prg_pdflatextds $dtx"); # hypdestopt
+ cache 'base', $base, sub {
+ run("$prg_lualatextds -draftmode $dtx");
+ run_makeindex("$base.idx", 'gind.ist');
+ run_makeindex("$base.glo", 'gglo.ist', "$base.gls");
+ run("$prg_lualatextds -draftmode $dtx");
+ run_makeindex("$base.idx", 'gind.ist');
+ run_makeindex("$base.glo", 'gglo.ist', "$base.gls");
+ run("$prg_lualatextds -draftmode $dtx");
+ final_begin;
+ run("$prg_lualatextds $dtx"); # hypdestopt
+ final_end;
+ };
install_pdf('base', "$base");
1;
}
sub book_err ($) {
my $base = shift;
my $err = "$base.err";
- run("$prg_pdflatextds -draftmode $err");
- run("$prg_sed -i -e '"
- . 's/\\\\endinput/\\\\input{errata.cfg}\\n\\\\endinput/'
- . "' $base.cfg");
- run("$prg_pdflatextds -draftmode $err");
- run("$prg_pdflatextds -draftmode $err");
- run("$prg_pdflatextds $err"); # hypdestopt
+ cache 'base', $base, sub {
+ run("$prg_lualatextds -draftmode $err");
+ run("$prg_sed -i -e '"
+ . 's/\\\\endinput/\\\\input{errata.cfg}\\n\\\\endinput/'
+ . "' $base.cfg");
+ run("$prg_lualatextds -draftmode $err");
+ run("$prg_lualatextds -draftmode $err");
+ final_begin;
+ run("$prg_lualatextds $err"); # hypdestopt
+ final_end;
+ };
install_pdf('base', "$base");
1;
}
chdir "$dir_build/base";
- run("$prg_pdflatextds -draftmode source2e");
- run_makeindex('source2e.idx', 'gind.ist');
- run_makeindex('source2e.glo', 'gglo.ist', 'source2e.gls');
- run("$prg_pdflatextds -draftmode source2e");
- run_makeindex('source2e.idx', 'gind.ist');
- run_makeindex('source2e.glo', 'gglo.ist', 'source2e.gls');
- run("$prg_pdflatextds -draftmode source2e");
- run("$prg_pdflatextds source2e"); # hypdestopt
+
+ ## source2e
+ cache 'base', 'source2e', sub {
+ run("$prg_lualatextds -draftmode source2e");
+ run_makeindex('source2e.idx', 'gind.ist');
+ run_makeindex('source2e.glo', 'gglo.ist', 'source2e.gls');
+ run("$prg_lualatextds -draftmode source2e");
+ run_makeindex('source2e.idx', 'gind.ist');
+ run_makeindex('source2e.glo', 'gglo.ist', 'source2e.gls');
+ run("$prg_lualatextds -draftmode source2e");
+ final_begin;
+ run("$prg_lualatextds source2e"); # hypdestopt
+ final_end;
+ };
install_pdf('base', 'source2e');
+
+ ## standard cases
map { complex_dtx $_ } qw[
classes
doc
@@ -949,14 +1038,22 @@ if ($modules{'base'}) {
lgc2
webcomp
];
+
+ ## manual.err
run("$prg_sed -i -e '"
. 's/\\\\documentclass{article}/'
. '\\\\documentclass{article}\\n\\\\input{manual.cfg}/'
. "' manual.err");
- run("$prg_pdflatextds -draftmode manual.err");
- run("$prg_pdflatextds -draftmode manual.err");
- run("$prg_pdflatextds manual.err"); # hypdestopt
+ cache 'base', 'manual', sub {
+ run("$prg_lualatextds -draftmode manual.err");
+ run("$prg_lualatextds -draftmode manual.err");
+ final_begin;
+ run("$prg_lualatextds manual.err"); # hypdestopt
+ final_end;
+ };
install_pdf('base', 'manual');
+
+ ## guides
base_guide('cfg');
base_guide('cls');
base_guide('cyr');
@@ -964,15 +1061,31 @@ if ($modules{'base'}) {
base_guide('fnt');
base_guide('mod');
base_guide('usr');
- run("$prg_pdflatextds -draftmode doc_lppl");
- run("$prg_pdflatextds -draftmode doc_lppl");
- run("$prg_pdflatextds doc_lppl"); # hypdestopt
- run("$prg_mv doc_lppl.pdf lppl.pdf");
+
+ ## lppl
+ cache 'base', 'lppl', sub {
+ run("$prg_lualatextds -draftmode doc_lppl");
+ run("$prg_lualatextds -draftmode doc_lppl");
+ final_begin;
+ run("$prg_lualatextds doc_lppl"); # hypdestopt
+ run("$prg_mv doc_lppl.pdf lppl.pdf");
+ run("$prg_mv doc_lppl.log lppl.log");
+ final_end;
+ };
install_pdf('base', 'lppl');
- run("$prg_pdflatextds -draftmode ltxcheck.drv");
- run("$prg_pdflatextds ltxcheck.drv");
+
+ ## ltxcheck
+ cache 'base', 'ltxcheck', sub {
+ run("$prg_lualatextds -draftmode ltxcheck.drv");
+ final_begin;
+ run("$prg_lualatextds ltxcheck.drv");
+ final_end;
+ };
install_pdf('base', 'ltxcheck');
- my $code = <<'END_CODE';
+
+ ## ltx3info
+ cache 'base', 'ltx3info', sub {
+ my $code = <<'END_CODE';
\let\SavedDocumentclass\documentclass
\def\documentclass[#1]#2{
\SavedDocumentclass[{#1}]{#2}
@@ -980,29 +1093,53 @@ if ($modules{'base'}) {
}
\input{ltx3info}
END_CODE
- $code =~ s/\s//g;
- run("$prg_pdflatextds -draftmode '$code'");
- run("$prg_pdflatextds -draftmode '$code'");
- run("$prg_pdflatextds '$code'"); # hypdestopt
+ $code =~ s/\s//g;
+ run("$prg_lualatextds -draftmode '$code'");
+ run("$prg_lualatextds -draftmode '$code'");
+ final_begin;
+ run("$prg_lualatextds '$code'"); # hypdestopt
+ final_end;
+ };
install_pdf('base', 'ltx3info');
-# for (my $i = 1; $i <= 17; $i++) {
-# my $ltnews = 'ltnews';
-# $ltnews .= '0' if $i < 10;
-# $ltnews .= $i;
-# run("$prg_pdflatex $ltnews");
-# run("$prg_pdflatex $ltnews");
-# install_pdf('base', $ltnews);
-# }
+
+ ## ltnews
+ my $ltnewsMode_Single = 0;
+ my $ltnewsMode_AllInOne = 1;
+
my $ltnews = 'ltnews';
my $lastissue = 0;
map { $lastissue = $1 if /ltnews(\d+)\.tex/ and $lastissue < $1; }
glob('ltnews*.tex');
- my $cmd_ltnews =
- "$prg_pdflatextds '\\def\\lastissue{$lastissue}\\input{$ltnews}'";
- run($cmd_ltnews);
- run($cmd_ltnews);
- run($cmd_ltnews);
- install_pdf('base', $ltnews);
+ if ($ltnewsMode_AllInOne) {
+ my $file_lastissue = 'ltnews-lastissue.cfg';
+ open(LT, '>', $file_lastissue) or die "!!! Error: Cannot write `$file_lastissue'!\n";
+ print LT "\\def\\lastissue{$lastissue}\n\\endinput\n";
+ close(LT);
+ cache 'base', $ltnews, sub {
+ my $cmd_ltnews = "$prg_lualatextds $ltnews";
+ run($cmd_ltnews);
+ run($cmd_ltnews);
+ final_begin;
+ run($cmd_ltnews);
+ final_end;
+ };
+ install_pdf('base', $ltnews);
+ }
+ if ($ltnewsMode_Single) {
+ for (my $i = 1; $i <= $lastissue; $i++) {
+ my $ltnews = 'ltnews';
+ $ltnews .= '0' if $i < 10;
+ $ltnews .= $i;
+ cache 'base', $ltnews, sub {
+ run("$prg_pdflatextds $ltnews");
+ final_begin;
+ run("$prg_pdflatextds $ltnews");
+ final_end;
+ };
+ install_pdf('base', $ltnews);
+ }
+ }
+
chdir $cwd;
}
@@ -1014,14 +1151,24 @@ if ($modules{'tools'}) {
my @list = glob("*.dtx");
map { s/\.dtx$//; } @list;
foreach my $entry (@list) {
- run("$prg_pdflatextds -draftmode $entry.dtx");
- run_makeindex("$entry.idx", 'gind.ist');
- run_makeindex("$entry.glo", 'gglo.ist', "$entry.gls");
- run("$prg_pdflatextds -draftmode $entry.dtx");
- run_makeindex("$entry.idx", 'gind.ist');
- run_makeindex("$entry.glo", 'gglo.ist', "$entry.gls");
- run("$prg_pdflatextds -draftmode $entry.dtx");
- run("$prg_pdflatextds $entry.dtx"); # hypdestopt
+ my $latextds = $prg_lualatextds;
+ $latextds = $prg_pdflatextds if $entry eq 'bm';
+ $latextds = $prg_lualatextds2 if $entry eq 'calc'
+ or $entry eq 'rawfonts'
+ or $entry eq 'showkeys';
+ my $drv = "$entry.dtx";
+ cache 'tools', $entry, sub {
+ run("$latextds -draftmode $drv");
+ run_makeindex("$entry.idx", 'gind.ist');
+ run_makeindex("$entry.glo", 'gglo.ist', "$entry.gls");
+ run("$latextds -draftmode $drv");
+ run_makeindex("$entry.idx", 'gind.ist');
+ run_makeindex("$entry.glo", 'gglo.ist', "$entry.gls");
+ run("$latextds -draftmode $drv");
+ final_begin;
+ run("$latextds $drv"); # hypdestopt
+ final_end;
+ };
install_pdf('tools', $entry);
}
@@ -1081,7 +1228,11 @@ END_ENTRY
\end{document}
END_TRAILER
close(OUT);
- run("$prg_pdflatextds tools.tex");
+ cache 'tools', 'tools', sub {
+ final_begin;
+ run("$prg_pdflatextds tools.tex");
+ final_end;
+ };
install_pdf('tools', 'tools');
chdir $cwd;
}
@@ -1093,11 +1244,16 @@ if ($modules{'cyrillic'}) {
chdir "$dir_build/cyrillic";
my @list = (glob("*.dtx"), glob("*.fdd"));
foreach my $entry (@list) {
- run("$prg_pdflatextds -draftmode $entry");
- run("$prg_pdflatextds -draftmode $entry");
- run("$prg_pdflatextds $entry"); # hypdestopt
- $entry =~ s/\.(dtx|fdd)$//;
- install_pdf('cyrillic', $entry);
+ my $base = $entry;
+ $base =~ s/\.(dtx|fdd)$//;
+ cache 'cyrillic', $base, sub {
+ run("$prg_lualatextds -draftmode $entry");
+ run("$prg_lualatextds -draftmode $entry");
+ final_begin;
+ run("$prg_lualatextds $entry"); # hypdestopt
+ final_end;
+ };
+ install_pdf('cyrillic', $base);
}
chdir $cwd;
}
@@ -1110,9 +1266,13 @@ if ($modules{'graphics'}) {
my @list = glob("*.dtx");
map { s/\.dtx$//; } @list;
foreach my $entry (@list) {
- run("$prg_pdflatextds -draftmode $entry.dtx");
- run("$prg_pdflatextds -draftmode $entry.dtx");
- run("$prg_pdflatextds $entry.dtx"); # hypdestopt
+ cache 'graphics', $entry, sub {
+ run("$prg_lualatextds -draftmode $entry.dtx");
+ run("$prg_lualatextds -draftmode $entry.dtx");
+ final_begin;
+ run("$prg_lualatextds $entry.dtx"); # hypdestopt
+ final_end;
+ };
install_pdf('graphics', $entry);
}
my $code = <<'END_CODE';
@@ -1121,11 +1281,15 @@ if ($modules{'graphics'}) {
\input{grfguide}
END_CODE
$code =~ s/\s//g;
- run("$prg_pdflatextds -draftmode '$code'");
+ run("$prg_lualatextds -draftmode '$code'");
run("$prg_epstopdf a.ps");
- run("$prg_pdflatextds -draftmode grfguide");
- run("$prg_pdflatextds -draftmode grfguide");
- run("$prg_pdflatextds grfguide");
+ cache 'graphics', 'grfguide', sub {
+ run("$prg_lualatextds -draftmode grfguide");
+ run("$prg_lualatextds -draftmode grfguide");
+ final_begin;
+ run("$prg_lualatextds grfguide");
+ final_end;
+ };
install_pdf('graphics', 'grfguide');
chdir $cwd;
}
@@ -1153,19 +1317,32 @@ if ($modules{'amslatex'}) {
my $amspkg = shift;
my $doc = shift;
my $ams_drv = "$cwd/$dir_tex/ams.drv";
+ my $latextds = $prg_lualatextds;
+ $latextds = $prg_pdflatextds
+ if $doc eq 'testmath'
+ or $doc eq 'thmtest'
+ or $doc eq 'cite-xs'
+ or $doc eq 'mathscinet';
+ $latextds = $prg_lualatextds2 if $doc eq 'amsldoc'
+ or $doc eq 'subeqn'
+ or $doc eq 'textcmds';
+ $latextds = $prg_pdflatex
+ if $doc eq 'thmtest';
symlink $ams_drv, "$doc.drv";
- run("$prg_pdflatextds -draftmode $doc.drv");
- makeindex($doc);
- bibtex($doc);
- run("$prg_pdflatextds -draftmode $doc.drv");
- makeindex($doc);
- run("$prg_pdflatextds -draftmode $doc.drv");
- makeindex($doc);
- run("$prg_pdflatextds -draftmode $doc.drv") if $doc eq 'amsrefs';
- final_begin;
- run("$prg_pdflatextds $doc.drv");
- final_end;
+ cache 'amslatex', $doc, sub {
+ run("$latextds -draftmode $doc.drv");
+ makeindex($doc);
+ bibtex($doc);
+ run("$latextds -draftmode $doc.drv");
+ makeindex($doc);
+ run("$latextds -draftmode $doc.drv");
+ makeindex($doc);
+ run("$latextds -draftmode $doc.drv") if $doc eq 'amsrefs';
+ final_begin;
+ run("$latextds $doc.drv");
+ final_end;
+ };
install_pdf($amspkg, $doc);
}
@@ -1201,13 +1378,21 @@ if ($modules{'psnfss'}) {
chdir "$dir_build/psnfss";
- run("$prg_pdflatextds -draftmode psfonts.dtx");
- run("$prg_pdflatextds psfonts.dtx");
+ cache 'psnfss', 'psfonts', sub {
+ run("$prg_pdflatextds -draftmode psfonts.dtx");
+ final_begin;
+ run("$prg_pdflatextds psfonts.dtx");
+ final_end;
+ };
install_pdf('psnfss', 'psfonts');
- run("$prg_pdflatextds -draftmode psnfss2e.drv");
- run("$prg_pdflatextds -draftmode psnfss2e.drv");
- run("$prg_pdflatextds psnfss2e.drv");
+ cache 'psnfss', 'psnfss2e', sub {
+ run("$prg_pdflatextds -draftmode psnfss2e.drv");
+ run("$prg_pdflatextds -draftmode psnfss2e.drv");
+ final_begin;
+ run("$prg_pdflatextds psnfss2e.drv");
+ final_end;
+ };
install_pdf('psnfss', 'psnfss2e');
chdir $cwd;
@@ -1222,21 +1407,32 @@ if ($modules{'babel'}) {
}
sub simple_doc ($) {
my $file = shift;
-
- run("$prg_pdflatextds -draftmode $file");
- run("$prg_pdflatextds $file");
- $file =~ s/\.\w{3}$//;
- install_babel_pdf($file);
+ my $file_base = $file;
+ $file_base =~ s/\.\w{3}$//;
+ my $latextds = $prg_lualatextds;
+ $latextds = $prg_lualatextds2 if $file eq 'athnum.dtx';
+
+ cache 'babel', $file_base, sub {
+ run("$latextds -draftmode $file");
+ final_begin;
+ run("$latextds $file");
+ final_end;
+ };
+ install_babel_pdf($file_base);
}
sub generate_babel_doc ($) {
my $doc = shift;
my $drv = "$cwd/$dir_tex/ams.drv";
symlink $drv, "$doc.drv";
- run("$prg_pdflatextds -draftmode $doc.drv");
- run("$prg_pdflatextds -draftmode $doc.drv");
- run("$prg_pdflatextds -draftmode $doc.drv");
- run("$prg_pdflatextds $doc.drv");
+ cache 'babel', $doc, sub {
+ run("$prg_lualatextds -draftmode $doc.drv");
+ run("$prg_lualatextds -draftmode $doc.drv");
+ run("$prg_lualatextds -draftmode $doc.drv");
+ final_begin;
+ run("$prg_lualatextds $doc.drv");
+ final_end;
+ };
install_babel_pdf($doc);
}
@@ -1263,14 +1459,18 @@ if ($modules{'babel'}) {
tb1604
];
- run("$prg_pdflatextds -draftmode babel.tex");
- run_makeindex('babel.idx', 'bbind.ist');
- run_makeindex('babel.glo', 'bbglo.ist', 'babel.gls');
- run("$prg_pdflatextds -draftmode babel.tex");
- run_makeindex('babel.idx', 'bbind.ist');
- run_makeindex('babel.glo', 'bbglo.ist', 'babel.gls');
- run("$prg_pdflatextds -draftmode babel.tex");
- run("$prg_pdflatextds babel.tex");
+ cache 'babel', 'babel', sub {
+ run("$prg_pdflatextds -draftmode babel.tex");
+ run_makeindex('babel.idx', 'bbind.ist');
+ run_makeindex('babel.glo', 'bbglo.ist', 'babel.gls');
+ run("$prg_pdflatextds -draftmode babel.tex");
+ run_makeindex('babel.idx', 'bbind.ist');
+ run_makeindex('babel.glo', 'bbglo.ist', 'babel.gls');
+ run("$prg_pdflatextds -draftmode babel.tex");
+ final_begin;
+ run("$prg_pdflatextds babel.tex");
+ final_end;
+ };
install_babel_pdf('babel');
chdir $cwd;
@@ -1303,10 +1503,14 @@ END_TEXT
close(OUT);
close(IN);
- unlink('tds.aux');
- run("$prg_pdflatextds -draftmode $file_tds_new");
- run("$prg_pdflatextds -draftmode $file_tds_new");
- run("$prg_pdflatextds $file_tds_new");
+ cache 'tds', 'tds', sub {
+ unlink('tds.aux');
+ run("$prg_lualatextds -draftmode $file_tds_new");
+ run("$prg_lualatextds -draftmode $file_tds_new");
+ final_begin;
+ run("$prg_lualatextds $file_tds_new");
+ final_end;
+ };
install_gen_pdf('', 'tds', 'tds');
chdir $cwd;
@@ -1326,12 +1530,16 @@ if ($modules{'knuth'}) {
foreach my $entry (@list) {
symlink $knuth_drv, "$entry.drv";
- run("$prg_weave $entry.web")
- unless $entry eq 'webman'
- or $entry eq 'tripman'
- or $entry eq 'trapman';
- run("$prg_pdftex -draftmode $entry.drv");
- run("$prg_pdftex $entry.drv");
+ cache 'knuth', $entry, sub {
+ run("$prg_weave $entry.web")
+ unless $entry eq 'webman'
+ or $entry eq 'tripman'
+ or $entry eq 'trapman';
+ run("$prg_pdftex -draftmode $entry.drv");
+ final_begin;
+ run("$prg_pdftex $entry.drv");
+ final_end;
+ };
install_gen_pdf('knuth', $dir, $entry);
}
}
@@ -1365,14 +1573,26 @@ if ($modules{'knuth'}) {
mf
]);
- run("$prg_pdftex tripman");
+ cache 'knuth', 'tripman', sub {
+ final_begin;
+ run("$prg_pdftex tripman");
+ final_end;
+ };
install_gen_pdf('knuth', 'tex', 'tripman');
- run("$prg_pdftex trapman");
+ cache 'knuth', 'trapman', sub {
+ final_begin;
+ run("$prg_pdftex trapman");
+ final_end;
+ };
install_gen_pdf('knuth', 'mf', 'trapman');
symlink "$cwd/$dir_tex/errorlog.drv", 'errorlog.drv';
- run("$prg_pdftex errorlog.drv");
+ cache 'knuth', 'errorlog', sub {
+ final_begin;
+ run("$prg_pdftex errorlog.drv");
+ final_end;
+ };
install_gen_pdf('knuth', 'errata', 'errorlog');
# last bug date is used for errata.tex's today
@@ -1425,10 +1645,18 @@ if ($modules{'knuth'}) {
new
]) {
symlink "$cwd/$dir_tex/errata.drv", "errata_$entry.tex";
- run("$prg_pdftex errata_$entry.tex");
+ cache 'knuth', "errata_$entry", sub {
+ final_begin;
+ run("$prg_pdftex errata_$entry.tex");
+ final_end;
+ }
}
symlink "$cwd/$dir_tex/errata.all", 'errata.all';
- run("$prg_pdftex errata.all");
+ cache 'knuth', 'errata', sub {
+ final_begin;
+ run("$prg_pdftex errata.all");
+ final_end;
+ };
install_gen_pdf('knuth', 'errata', 'errata');
chdir $cwd;
@@ -1443,9 +1671,13 @@ if ($modules{'etex'}) {
my $entry = 'etex_man';
my $etex_man_drv = "$cwd/$dir_tex/$entry.drv";
symlink $etex_man_drv, "$entry.drv";
- run("$prg_pdflatextds -draftmode $entry.drv");
- run("$prg_pdflatextds -draftmode $entry.drv");
- run("$prg_pdflatextds $entry.drv");
+ cache 'etex', $entry, sub {
+ run("$prg_lualatextds -draftmode $entry.drv");
+ run("$prg_lualatextds -draftmode $entry.drv");
+ final_begin;
+ run("$prg_lualatextds $entry.drv");
+ final_end;
+ };
install_gen_pdf('etex', 'base', $entry);
chdir $cwd;
@@ -1529,6 +1761,12 @@ section('Distrib');
### Display result
section('Result');
{
+ print <<"END_CACHE";
+
+* PDF cached/generated: $count_cache/$count_generate
+
+END_CACHE
+
for my $pkg (@list_modules) {
my $file = "$dir_distrib/$pkg.tds.zip";
if (-f $file) {
@@ -1629,11 +1867,24 @@ sub section ($) {
1;
}
+sub final_check ($) {
+ my $expected = shift;
+ $final == $expected
+ or die "!!! Error: Wrong final state `$final', expected `$expected'!\n";
+}
sub final_begin () {
+ final_check(0);
print "\n--- FINAL BEGIN ---\n";
+ $final = 1;
}
sub final_end () {
+ final_check(1);
print "--- FINAL END ---\n\n";
+ $final = 2;
+}
+sub final_ok () {
+ final_check(2);
+ $final = 0;
}
sub run ($) {