From 2f1f0d7573618a2e68993f1d256538038b2a1019 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 13 May 2020 17:27:10 +0000 Subject: install-tl: if envvar TEXLIVE_INSTALL_NO_RESUME is set, omit question about importing settings. TLUtils.pm (install_packages): if $media != NET, abort immediately if a package cannot be installed; no retries. Also output args if debugging. Add TLUtils:: prefix to some other debugging lines. TLPDB.pm: TLPDB:: prefix on debugging line. tl-update-tlnet: show exact install-tl command that is run. Trying shortening command prefix to basename, on most messages. git-svn-id: svn://tug.org/texlive/trunk@55126 c570f23f-e606-0410-a88d-b1316a301751 --- Master/install-tl | 6 ++-- Master/tlpkg/TeXLive/TLPDB.pm | 2 +- Master/tlpkg/TeXLive/TLUtils.pm | 25 ++++++++++++----- Master/tlpkg/bin/tl-update-tlnet | 60 +++++++++++++++++++++------------------- 4 files changed, 53 insertions(+), 40 deletions(-) (limited to 'Master') diff --git a/Master/install-tl b/Master/install-tl index 2a385464934..227d013c542 100755 --- a/Master/install-tl +++ b/Master/install-tl @@ -319,7 +319,7 @@ if ((defined $ARGV[0]) && $ARGV[0] eq "-from_ext_gui") { # continue with the installation # note, we are in the directory from which the aborted installation was run. my %profiledata; -if (-r "installation.profile") { +if (-r "installation.profile" && !exists $ENV{"TEXLIVE_INSTALL_NO_RESUME"}) { if ($from_ext_gui) { # prepare for dialog interaction print "mess_yesno\n"; } @@ -386,7 +386,7 @@ if ($opt_help) { @noperldoc = ("-noperldoc", "1"); } - # Tweak less stuff same as tlmgr, though. + # Tweak less invocation same as tlmgr, though. # less can break control characters and thus the output of pod2usage # is broken. We add/set LESS=-R in the environment and unset # LESSPIPE and LESSOPEN to try to help. @@ -3154,7 +3154,7 @@ variables. Omit creating the ConTeXt cache. This is useful for redistributors. -=item C +=item C Omit check for installing on top of a previous installation and then asking about importing previous settings. diff --git a/Master/tlpkg/TeXLive/TLPDB.pm b/Master/tlpkg/TeXLive/TLPDB.pm index e106cc467d0..af466e25a6b 100644 --- a/Master/tlpkg/TeXLive/TLPDB.pm +++ b/Master/tlpkg/TeXLive/TLPDB.pm @@ -1972,7 +1972,7 @@ sub _install_data { } my $ww = ($whatsize || ""); my $ss = ($whatcheck || ""); - debug("tlpdb:_install_data: what=$what, target=$target, size=$ww, checksum=$ss, tmpdir=$tempdir\n"); + debug("TLPDB::_install_data: what=$what, target=$target, size=$ww, checksum=$ss, tmpdir=$tempdir\n"); my ($ret, $pkg) = TeXLive::TLUtils::unpack($what, $target, 'size' => $whatsize, 'checksum' => $whatcheck, 'tmpdir' => $tempdir); if (!$ret) { tlwarn("TLPDB::_install_data: $pkg for $what\n"); # $pkg is error msg diff --git a/Master/tlpkg/TeXLive/TLUtils.pm b/Master/tlpkg/TeXLive/TLUtils.pm index 6078bfc4e9a..bbf10d88be3 100644 --- a/Master/tlpkg/TeXLive/TLUtils.pm +++ b/Master/tlpkg/TeXLive/TLUtils.pm @@ -551,7 +551,7 @@ and thus honors various env variables like C, C, and C. sub initialize_global_tmpdir { $::tl_tmpdir = File::Temp::tempdir(CLEANUP => 1); - ddebug("initialize_global_tmpdir: creating global tempdir $::tl_tmpdir\n"); + ddebug("TLUtils::initialize_global_tmpdir: creating global tempdir $::tl_tmpdir\n"); return ($::tl_tmpdir); } @@ -565,7 +565,7 @@ is terminated. sub tl_tmpdir { initialize_global_tmpdir() if (!defined($::tl_tmpdir)); my $tmp = File::Temp::tempdir(DIR => $::tl_tmpdir, CLEANUP => 1); - ddebug("tl_tmpdir: creating tempdir $tmp\n"); + ddebug("TLUtils::tl_tmpdir: creating tempdir $tmp\n"); return ($tmp); } @@ -580,7 +580,7 @@ Arguments are passed on to C. sub tl_tmpfile { initialize_global_tmpdir() if (!defined($::tl_tmpdir)); my ($fh, $fn) = File::Temp::tempfile(@_, DIR => $::tl_tmpdir, UNLINK => 1); - ddebug("tl_tempfile: creating tempfile $fn\n"); + ddebug("TLUtils::tl_tempfile: creating tempfile $fn\n"); return ($fh, $fn); } @@ -1510,6 +1510,10 @@ sub install_packages { my $totalsize = 0; my $donesize = 0; my %tlpsizes; + debug("TLUtils::install_packages: fromtlpdb.root=$root, media=$media," + . " totlpdb.root=" . $totlpdb->root + . " what=$what ($totalnr), opt_src=$opt_src, opt_doc=$opt_doc\n"); + foreach my $p (@packs) { $tlpobjs{$p} = $fromtlpdb->get_package($p); if (!defined($tlpobjs{$p})) { @@ -1549,10 +1553,17 @@ sub install_packages { &$h($n,$totalnr); } # push $package to @packs_again if download failed + # (and not installing from disk). if (!$fromtlpdb->install_package($package, $totlpdb)) { - tlwarn("TLUtils::install_packages: Failed to install $package\n" - ."Will be retried later.\n"); - push @packs_again, $package; + tlwarn("TLUtils::install_packages: Failed to install $package\n"); + if ($media eq "NET") { + tlwarn(" $package will be retried later.\n"); + push @packs_again, $package; + } else { + # return false as soon as one package failed, since we won't + # be trying again. + return 0; + } } else { $donesize += $tlpsizes{$package}; } @@ -1988,7 +1999,7 @@ sub add_link_dir_dir { return 0; } if (-w $to) { - debug ("linking files from $from to $to\n"); + debug ("TLUtils::add_link_dir_dir: linking from $from to $to\n"); chomp (@files = `ls "$from"`); my $ret = 1; for my $f (@files) { diff --git a/Master/tlpkg/bin/tl-update-tlnet b/Master/tlpkg/bin/tl-update-tlnet index 9ca46072864..f20e8135b65 100755 --- a/Master/tlpkg/bin/tl-update-tlnet +++ b/Master/tlpkg/bin/tl-update-tlnet @@ -68,6 +68,7 @@ if test -z "$Master"; then mydir=`dirname $0` Master=`cd $mydir/../.. && pwd` fi +prg=`basename $0` # If there are broken symlinks anywhere in the bin directories, give up # right away. The nightly cron checks that there no symlinks anywhere else. @@ -78,8 +79,8 @@ $Master/tlpkg/bin/tl-check-symlinks $Master/bin test -z "$tltrybase" \ && tltrybase=`cd $tlweb/../.. && pwd`/tlnet-trial-`date +%y%m%d` tltry=$tltrybase/tlsrc.try -echo "$0: Using tlweb=$tlweb" # top level network directory, mirrored echo "$0: Using tltry=$tltry" # local working dir +echo "$0: Using tlweb=$tlweb" # top level network directory, mirrored # Save current tlpdb in case of disaster. cp --force --backup $tlweb/tlpkg/texlive.tlpdb* /tmp @@ -106,7 +107,7 @@ done # Update packages in our working dir. # These shell assignments have to come outside the cow-shell. -echo "$0: Updating $tltry (from $Master) with cow-shell..." +echo "$prg: Updating $tltry (from $Master) with cow-shell..." containers_prog="$Master/tlpkg/bin/tl-update-containers" containers_args=" $verbose -location $tltry $critical $recreate $gpgcmd" containers_invoke="$containers_prog $containers_args" @@ -116,10 +117,10 @@ update_install_invoke="$update_install_prog $gpgcmd -o $tltry" # cd $tltry cow-shell <&2 + echo "$prg: tl-update-containers failed, goodbye." >&2 exit 1 fi @@ -130,10 +131,10 @@ if $update_install_pkg; then # It is scary, but I guess we should update the installer package every # day, partly for the sake of doc.html and partly so it actually gets # tested. Hopefully we don't break the Perl modules very often. - echo "$0: Updating install pkg with" - echo "$0: $update_install_invoke" + echo "$prg: Updating install pkg with" + echo "$prg: $update_install_invoke" if $update_install_invoke; then :; else - echo "$0: tl-update-install-pkg failed, goodbye." >&2 + echo "$prg: tl-update-install-pkg failed, goodbye." >&2 exit 1 fi else @@ -157,10 +158,9 @@ tltryinst=$tltrybase/tlinst.try zcat $tltry/install-tl-unx.tar.gz | tar -xf - cd install-tl-* # subdir is YYYYMMDD -# create TL install profile. We set TEXMFCACHE for the sake of -# luaotfload-tool, although it should fall back to TEXMFVAR, -# which is possibly used by nothing else. -echo "# texlive-profile from $0 +# create test TL install profile. +# We set TEXMFVAR for the sake of luaotfload-tool. +echo "# texlive-profile from $0 `date` selected_scheme scheme-$scheme TEXDIR $tltryinst/$yyyy TEXMFLOCAL $tltryinst/texmf-local @@ -186,10 +186,12 @@ TEXLIVE_INSTALL_NO_WELCOME=1; export TEXLIVE_INSTALL_NO_WELCOME PATH=/usr/bin tlnet_install_log=`pwd`/update-tlnet-install.log -echo "$0: Running test install (log: $tlnet_install_log)..." -perl install-tl -location $tltry -profile texlive.profile \ - >$tlnet_install_log 2>&1 \ - || true # install-tl can fail, but we test the output, so don't abort. +tlnet_install_cmd="install-tl -location $tltry -profile texlive.profile" +echo "$prg: Running test install (log: $tlnet_install_log)..." +echo "$prg: (in `pwd`)" +echo "$prg: $tlnet_install_cmd" +perl $tlnet_install_cmd >$tlnet_install_log 2>&1 \ +|| true # install-tl can fail, but we test the output, so don't abort. # the following long grep command should filter away all *normal* # installation messages. @@ -243,10 +245,10 @@ ignore_unexpected_output=false #true, if frustration if test -n "$unexpected_output"; then $ignore_unexpected_output || failure=true echo >&2 - echo "$0: Test installation failed." >&2 - echo "$0: Here is the unexpected output, from $tlnet_install_log:" >&2 + echo "$prg: Test installation failed." >&2 + echo "$prg: Here is the unexpected output, from $tlnet_install_log:" >&2 echo "$unexpected_output" >&2 - echo "$0: (end of unexpected output)." >&2 + echo "$prg: (end of unexpected output)." >&2 fi # more consistency checks. @@ -265,10 +267,10 @@ if test $failure = false; then $check_consistency || continue fi basecmd=`basename $cmdname` - echo "$0: Running $basecmd ($cmd)" + echo "$prg: Running $basecmd ($cmd)" outfile=/tmp/tlnet.$basecmd if $cmd >$outfile 2>&1; then :; else - echo "$0: $basecmd failed ($cmd):" >&2 + echo "$prg: $basecmd failed ($cmd):" >&2 sed 8q $outfile >&2 echo "... see $outfile for full output ..." >&2 echo >&2 @@ -284,7 +286,7 @@ install_tl_log=$tltryinst/$yyyy/install-tl.log if test -r $install_tl_log \ && grep -i '^fmtutil.*error.*' $install_tl_log >/dev/null; then echo >&2 - echo "$0: seems fmtutil failed, check $install_tl_log." >&2 + echo "$prg: seems fmtutil failed, check $install_tl_log." >&2 failure=true else : # appease -e @@ -297,18 +299,18 @@ test ! -r $install_tl_log || cp -f $install_tl_log /tmp if $failure || $chicken; then echo >&2 - echo "$0: Our transcript file: $tlnet_install_log" >&2 - echo "$0: install-tl log file: $install_tl_log" >&2 - echo "$0: Copies of both are in /tmp." >&2 - echo "$0: Please rm -rf the trial dir." >&2 + echo "$prg: Our transcript file: $tlnet_install_log" >&2 + echo "$prg: install-tl log file: $install_tl_log" >&2 + echo "$prg: Copies of both are in /tmp." >&2 + echo "$prg: Please rm -rf the trial dir." >&2 if $failure; then exit 1 elif $chicken; then echo - echo "$0: Chicken mode, not updating anything." + echo "$prg: Chicken mode, not updating anything." exit 0 else - echo "$0: impossible non-failure non-chicken." >&2 + echo "$prg: impossible non-failure non-chicken." >&2 exit 2 fi fi @@ -316,7 +318,7 @@ fi # # no unexpected output, so ship the new packages. cd $tltrybase -echo "$0: Updating $tlweb from $tltry." +echo "$prg: Updating $tlweb from $tltry." # copy any mactex files since we didn't link them. for f in $tlweb/*mactex*; do test ! -r $f || cp -pf $f $tltry -- cgit v1.2.3