diff options
5 files changed, 79 insertions, 66 deletions
diff --git a/Build/source/texk/tests/TeXLive/TLConfig.pm b/Build/source/texk/tests/TeXLive/TLConfig.pm index cf68faf5c00..8e3117a6b72 100644 --- a/Build/source/texk/tests/TeXLive/TLConfig.pm +++ b/Build/source/texk/tests/TeXLive/TLConfig.pm @@ -5,7 +5,7 @@ package TeXLive::TLConfig; -my $svnrev = '$Revision: 52112 $'; +my $svnrev = '$Revision: 52745 $'; my $_modulerevision = ($svnrev =~ m/: ([0-9]+) /) ? $1 : "unknown"; sub module_revision { return $_modulerevision; } @@ -232,7 +232,7 @@ our %TLPDBSettings = ( our $WindowsMainMenuName = "TeX Live $ReleaseYear"; # Comma-separated list of engines which do not exist on all platforms. -our $PartialEngineSupport = "luajittex,mfluajit"; +our $PartialEngineSupport = "luahbtex,luajittex,mfluajit"; # Flags for error handling across the scripts and modules # all fine diff --git a/Build/source/texk/tests/TeXLive/TLUtils.pm b/Build/source/texk/tests/TeXLive/TLUtils.pm index 0aab6a6248c..9ee9674214e 100644 --- a/Build/source/texk/tests/TeXLive/TLUtils.pm +++ b/Build/source/texk/tests/TeXLive/TLUtils.pm @@ -5,7 +5,7 @@ package TeXLive::TLUtils; -my $svnrev = '$Revision: 52568 $'; +my $svnrev = '$Revision: 52706 $'; my $_modulerevision = ($svnrev =~ m/: ([0-9]+) /) ? $1 : "unknown"; sub module_revision { return $_modulerevision; } @@ -1129,6 +1129,7 @@ that is a fatal error. =cut sub copy { + #too verbose ddebug("TLUtils::copy(", join (",", @_), "\n"); my $infile = shift; my $filemode = 0; my $dereference = 0; @@ -1180,12 +1181,13 @@ sub copy { if ($linktarget !~ m,^/,) { $infile = Cwd::abs_path(dirname($infile)) . "/$linktarget"; } + ddebug("TLUtils::copy: dereferencing symlink $infile -> $linktarget"); } if (-l $infile) { my $linktarget = readlink($infile); my $dest = "$destdir/$filename"; - debug("TLUtils::copy: doing symlink($linktarget,$dest)" + ddebug("TLUtils::copy: doing symlink($linktarget,$dest)" . " [from readlink($infile)]\n"); symlink($linktarget, $dest) || die "symlink($linktarget,$dest) failed: $!"; } else { @@ -2521,7 +2523,7 @@ END_COMPRESSOR_BAD $::progs{'compressor'} = $ENV{'TEXLIVE_COMPRESSOR'}; } - if ($::opt_verbosity >= 1) { + if ($::opt_verbosity >= 2) { require Data::Dumper; use vars qw($Data::Dumper::Indent $Data::Dumper::Sortkeys $Data::Dumper::Purity); # -w pain @@ -2602,16 +2604,16 @@ sub setup_unix_tl_one { debug("(unix) trying to set up $p, default $def, arg $arg\n"); if (-r $def) { if (-x $def) { - ddebug("default $def has executable permissions\n"); + ddebug(" Default $def has executable permissions\n"); # we have to check for actual "executability" since a "noexec" # mount option may interfere, which is not taken into account by -x. my $ret = system("'$def' $arg >/dev/null 2>&1" ); # we are on Unix if ($ret == 0) { $::progs{$p} = $def; - debug("Using shipped $def for $p (tested).\n"); + debug(" Using shipped $def for $p (tested).\n"); return(1); } else { - ddebug("Shipped $def has -x but cannot be executed, " + ddebug(" Shipped $def has -x but cannot be executed, " . "trying tmp copy.\n"); } } @@ -2632,19 +2634,19 @@ sub setup_unix_tl_one { if (! -x $tmpprog) { # hmm, something is going really bad, not even the copy is # executable. Fall back to normal path element - ddebug("Copied $p $tmpprog does not have -x bit, strange!\n"); + ddebug(" Copied $p $tmpprog does not have -x bit, strange!\n"); return(0); } else { # check again for executability my $ret = system("$tmpprog $arg > /dev/null 2>&1"); if ($ret == 0) { # ok, the copy works - debug("Using copied $tmpprog for $p (tested).\n"); + debug(" Using copied $tmpprog for $p (tested).\n"); $::progs{$p} = $tmpprog; return(1); } else { # even the copied prog is not executable, strange - ddebug("Copied $p $tmpprog has x bit but not executable?!\n"); + ddebug(" Copied $p $tmpprog has x bit but not executable?!\n"); return(0); } } diff --git a/Build/source/texk/texlive/linked_scripts/texlive/fmtutil.pl b/Build/source/texk/texlive/linked_scripts/texlive/fmtutil.pl index 6deac084cd9..69b829b3a45 100755 --- a/Build/source/texk/texlive/linked_scripts/texlive/fmtutil.pl +++ b/Build/source/texk/texlive/linked_scripts/texlive/fmtutil.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# $Id: fmtutil.pl 48129 2018-07-03 22:15:38Z karl $ +# $Id: fmtutil.pl 52741 2019-11-11 23:16:13Z karl $ # fmtutil - utility to maintain format files. # (Maintained in TeX Live:Master/texmf-dist/scripts/texlive.) # @@ -24,11 +24,11 @@ BEGIN { TeX::Update->import(); } -my $svnid = '$Id: fmtutil.pl 48129 2018-07-03 22:15:38Z karl $'; -my $lastchdate = '$Date: 2018-07-04 00:15:38 +0200 (Wed, 04 Jul 2018) $'; +my $svnid = '$Id: fmtutil.pl 52741 2019-11-11 23:16:13Z karl $'; +my $lastchdate = '$Date: 2019-11-12 00:16:13 +0100 (Tue, 12 Nov 2019) $'; $lastchdate =~ s/^\$Date:\s*//; $lastchdate =~ s/ \(.*$//; -my $svnrev = '$Revision: 48129 $'; +my $svnrev = '$Revision: 52741 $'; $svnrev =~ s/^\$Revision:\s*//; $svnrev =~ s/\s*\$$//; my $version = "r$svnrev ($lastchdate)"; @@ -162,7 +162,7 @@ sub main { $opts{'user'} = 1; GetOptions ( "help" => \$opts{'help'}, "version" => \$opts{'version'} ) - or die "Unknown option in mktexfmt command line arguments\n"; + || die "$prg: Unknown option in mktexfmt command line arguments.\n"; if ($ARGV[0]) { if ($ARGV[0] =~ m/^(.*)\.(fmt|mem|base?)$/) { $opts{'byfmt'} = $1; @@ -447,12 +447,12 @@ sub callback_build_formats { for (@deferred_stdout) { print $stdo $_; } for (@deferred_stderr) { print STDERR $_; } # - print_info("Disabled formats: $disabled\n") if ($disabled); - print_info("Successfully rebuilt formats: $suc\n") if ($suc); - print_info("Not selected formats: $nobuild\n") if ($nobuild); - print_info("Not available formats: $notavail\n") if ($notavail); - print_info("Failed to build: $err (@err)\n") if ($err); - print_info("Total formats: $total\n"); + print_info("disabled formats: $disabled\n") if ($disabled); + print_info("successfully rebuilt formats: $suc\n") if ($suc); + print_info("not selected formats: $nobuild\n") if ($nobuild); + print_info("not available formats: $notavail\n") if ($notavail); + print_info("failed to build: $err (@err)\n") if ($err); + print_info("total formats: $total\n"); chdir($thisdir) || warn "chdir($thisdir) failed: $!"; if (win32()) { # try to remove the tmpdir with all files @@ -516,15 +516,16 @@ sub select_and_rebuild_format { } } if ($doit) { - return rebuild_one_format($fmt, $eng, $kpsefmt, $destdir, $fmtfile, $logfile); + return rebuild_one_format($fmt,$eng,$kpsefmt,$destdir,$fmtfile,$logfile); } else { return $FMT_NOTSELECTED; } } # compute_format_destination -# takes fmt/eng and returns the location where format and log files should be saved -# return value (dump file full path, log file full path) +# takes fmt/eng and returns the locations where format and log files +# should be saved, that is, a list: (dump file full path, log file full path) +# sub compute_format_destination { my ($fmt, $eng) = @_; my $enginedir; @@ -557,11 +558,12 @@ sub compute_format_destination { # rebuild_one_format -# takes fmt/eng and rebuilds it, irrelevant of any setting +# takes fmt/eng and rebuilds it, irrelevant of any setting; +# copies generated log file # return value FMT_* # sub rebuild_one_format { - my ($fmt, $eng, $kpsefmt, $destdir, $fmtfile, $logfile) = @_; + my ($fmt,$eng,$kpsefmt,$destdir,$fmtfile,$logfile) = @_; print_info("--- remaking $fmt with $eng\n"); # get variables @@ -575,7 +577,7 @@ sub rebuild_one_format { my $pool; my $tcx = ""; my $tcxflag = ""; - my $localpool=0; + my $localpool = 0; my $texargs; unlink glob "*.pool"; @@ -624,7 +626,7 @@ sub rebuild_one_format { $texargs = $addargs; } if ($pool) { - chomp ( my $poolfile = `kpsewhich -progname=$eng $pool.poo 2>$nul` ); + chomp (my $poolfile = `kpsewhich -progname=$eng $pool.poo 2>$nul`); if ($poolfile && -f $poolfile) { print_verbose("attempting to create localized format " . "using pool=$pool and tcx=$tcx.\n"); @@ -656,7 +658,7 @@ sub rebuild_one_format { ",$opts{'no-error-if-no-engine'}," =~ m/,$eng,/) { return $FMT_NOTAVAIL; } else { - print_deferred_error("not building $fmt due to missing engine $eng.\n"); + print_deferred_error("not building $fmt due to missing engine: $eng\n"); return $FMT_FAILURE; } } @@ -675,17 +677,33 @@ sub rebuild_one_format { $cmdline .= " >&2" if $mktexfmtMode; $cmdline .= " <$nul"; my $retval = system($cmdline); + + # report error if it failed. if ($retval != 0) { $retval /= 256 if ($retval > 0); - print_deferred_error("running \`$cmdline' return status $retval\n"); - # - # original shell script did *not* check the return value - # we keep this behavior, but add an option --strict that - # errors out on all failures. - if ($opts{'strict'}) { - print_deferred_error("return error due to options --strict\n"); - return $FMT_FAILURE; - } + print_deferred_error("running \`$cmdline' return status: $retval\n"); + } + + # Copy the log file after the program is run, so that the log file + # is available to inspect even on failure. So we need the dest dir tree. + TeXLive::TLUtils::mkdirhier($destdir); + # + # Here and in the following we use copy instead of move + # to make sure that in SElinux enabled cases the rules of + # the destination directory are applied. + # See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=900580 + if (File::Copy::copy($logfile, "$destdir/$logfile")) { + print_info("log file copied to: $destdir/$logfile\n"); + } else { + print_deferred_error("cannot copy log $logfile to: $destdir\n"); + } + + # original shell script did *not* check the return value + # we keep this behavior, but add an option --strict that + # errors out on all failures. + if ($retval != 0 && $opts{'strict'}) { + print_deferred_error("returning error due to option --strict\n"); + return $FMT_FAILURE; } if ($localpool) { @@ -695,7 +713,6 @@ sub rebuild_one_format { delete $ENV{'TEXPOOL'}; } } - } # check and install of fmt and log files @@ -717,27 +734,18 @@ sub rebuild_one_format { print_deferred_error("\`$cmdline' had errors.\n"); } - TeXLive::TLUtils::mkdirhier($destdir); - - # here and in the following we use copy instead of move - # to make sure that in SElinux enabled cases the rules of - # the destination directory are applied.] - # See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=900580 - if (!File::Copy::copy( $logfile, "$destdir/$logfile")) { - print_deferred_error("Cannot copy $logfile to $destdir.\n"); - } if ($opts{'recorder'}) { - # the recorder output is used by check-fmttriggers to determine + # the recorder output is used by tl-check-fmttriggers to determine # package dependencies for each format. Unfortunately omega-based # engines gratuitiously changed the extension from .fls to .ofl. my $recfile = $fmt . ($fmt =~ m/^(aleph|lamed)$/ ? ".ofl" : ".fls"); - if (!File::Copy::copy( $recfile, "$destdir/$recfile")) { - print_deferred_error("Cannot copy $recfile to $destdir.\n"); + if (!File::Copy::copy($recfile, "$destdir/$recfile")) { + print_deferred_error("cannot copy recorder $recfile to: $destdir\n"); } } my $destfile = "$destdir/$fmtfile"; - if (File::Copy::copy( $fmtfile, $destfile )) { + if (File::Copy::copy($fmtfile, $destfile )) { print_info("$destfile installed.\n"); # # original fmtutil.sh did some magic trick for mplib-luatex.mem @@ -784,10 +792,10 @@ sub rebuild_one_format { return $FMT_SUCCESS; } else { - print_deferred_error("Cannot copy $fmtfile to $destfile.\n"); + print_deferred_error("cannot copy format $fmtfile to: $destfile\n"); if (-f $destfile) { # remove the empty file possibly left over if near-full file system. - print_verbose("Removing partial file after copy failure: $destfile\n"); + print_verbose("removing partial file after copy failure: $destfile\n"); unlink($destfile) || print_deferred_error("unlink($destfile) failed: $!\n"); } @@ -1032,7 +1040,7 @@ sub determine_config_files { my @tmp; for my $f (@{$opts{'cnffile'}}) { if (! -f $f) { - die "$prg: Config file \"$f\" not found."; + die "$prg: Config file \"$f\" not found"; } push @tmp, (win32() ? lc($f) : $f); } diff --git a/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl b/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl index 58c5ce81c55..29901e51386 100755 --- a/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl +++ b/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl @@ -1,12 +1,12 @@ #!/usr/bin/env perl -# $Id: tlmgr.pl 52672 2019-11-07 18:35:53Z karl $ +# $Id: tlmgr.pl 52752 2019-11-12 21:34:13Z karl $ # # Copyright 2008-2019 Norbert Preining # This file is licensed under the GNU General Public License version 2 # or any later version. -my $svnrev = '$Revision: 52672 $'; -my $datrev = '$Date: 2019-11-07 19:35:53 +0100 (Thu, 07 Nov 2019) $'; +my $svnrev = '$Revision: 52752 $'; +my $datrev = '$Date: 2019-11-12 22:34:13 +0100 (Tue, 12 Nov 2019) $'; my $tlmgrrevision; my $tlmgrversion; my $prg; @@ -5676,10 +5676,11 @@ sub check_executes { my $engine = $r{"engine"}; my $name = $r{"name"}; my $mode = $r{"mode"}; - # special case for cont-en ... + # just never mind about these. next if ($name eq "cont-en"); + next if ($name eq "lualatex-dev"); # we check that the name exist in bin/$arch - if ($engine =~ /^lua(jit|hb)tex$/) { + if (",$TeXLive::TLConfig::PartialEngineSupport," =~ /,$engine,/) { # luajittex is special since it is not available on all architectures # due to inherent reasons (machine code); # luahbtex is special until we build it everywhere for TL'20. @@ -5719,7 +5720,7 @@ sub check_executes { } else { @archs_to_check = (); # no tlpsrc, check nothing. } - ddebug("check_executes: final arches to check: @archs_to_check"); + ddebug("check_executes: final arches to check: @archs_to_check\n"); } for my $a (@archs_to_check) { my $f = "$Master/bin/$a/$name"; @@ -9927,7 +9928,7 @@ This script and its documentation were written for the TeX Live distribution (L<https://tug.org/texlive>) and both are licensed under the GNU General Public License Version 2 or later. -$Id: tlmgr.pl 52672 2019-11-07 18:35:53Z karl $ +$Id: tlmgr.pl 52752 2019-11-12 21:34:13Z karl $ =cut # test HTML version: pod2html --cachedir=/tmp tlmgr.pl >/tmp/tlmgr.html diff --git a/Build/source/texk/texlive/tl_scripts/fmtutil.cnf b/Build/source/texk/texlive/tl_scripts/fmtutil.cnf index 45ff85d6ae4..201d375ed33 100644 --- a/Build/source/texk/texlive/tl_scripts/fmtutil.cnf +++ b/Build/source/texk/texlive/tl_scripts/fmtutil.cnf @@ -1,4 +1,4 @@ -# Generated by /home/texlive/karl/Master/bin/x86_64-linux/tlmgr on Sat Jul 27 01:53:50 2019 +# Generated by /home/texlive/karl/Master/bin/x86_64-linux/tlmgr on Tue Nov 12 19:27:54 2019 # Originally written by Thomas Esser, 1998. Public domain. # # As of TeX Live 2015, fmtutil reads *all* fmtutil.cnf files found. @@ -80,7 +80,7 @@ lualatex luatex language.dat,language.dat.lua lualatex.ini latex-dev pdftex language.dat -translate-file=cp227.tcx *latex.ini pdflatex-dev pdftex language.dat -translate-file=cp227.tcx *pdflatex.ini dvilualatex-dev luatex language.dat,language.dat.lua dvilualatex.ini -lualatex-dev luatex language.dat,language.dat.lua lualatex.ini +lualatex-dev luahbtex language.dat,language.dat.lua lualatex.ini # # from lollipop: lollipop tex - lollipop.ini @@ -135,10 +135,12 @@ uplatex-dev euptex language.dat *uplatex.ini uptex uptex - uptex.ini euptex euptex language.def *euptex.ini # +# from xelatex-dev: +xelatex-dev xetex language.dat -etex xelatex.ini +# # from xetex: xetex xetex language.def -etex xetex.ini xelatex xetex language.dat -etex xelatex.ini -xelatex-dev xetex language.dat -etex xelatex.ini # # from xmltex: xmltex pdftex language.dat *xmltex.ini |