diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/latex-tds/build.pl')
-rwxr-xr-x | Master/texmf-dist/source/latex/latex-tds/build.pl | 591 |
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 ($) { |