From af446d36b33df852f2be14288d1ebabfcade3116 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 10 Mar 2020 16:46:34 +0000 Subject: tl-update-install-pkg, tl-update-containers: mostly use $prg (basename) instead of $0. tl-update-tlnet: new option --no-install-pkg for use when updating frozen release after moving to pretest. git-svn-id: svn://tug.org/texlive/trunk@54221 c570f23f-e606-0410-a88d-b1316a301751 --- Master/tlpkg/bin/tl-update-containers | 48 ++++++++++++++++++---------------- Master/tlpkg/bin/tl-update-install-pkg | 24 +++++++++-------- Master/tlpkg/bin/tl-update-tlnet | 28 ++++++++++++++------ Master/tlpkg/doc/releng.txt | 42 ++++++++++++++++++++++++----- 4 files changed, 93 insertions(+), 49 deletions(-) (limited to 'Master') diff --git a/Master/tlpkg/bin/tl-update-containers b/Master/tlpkg/bin/tl-update-containers index 72d11d1ace7..273f9b8519b 100755 --- a/Master/tlpkg/bin/tl-update-containers +++ b/Master/tlpkg/bin/tl-update-containers @@ -59,13 +59,15 @@ GetOptions( pod2usage("-exitstatus" => 0, "-verbose" => 2) if $opt_help; if ($opt_version) { print "$vc_id\n"; exit 0; } +my $prg = TeXLive::TLUtils::basename($0); + exit (&main()); sub main { # check that we have a target db. if (! $opt_recreate && ! -r "$opt_location/tlpkg/texlive.tlpdb") { - die "$0: Cannot load tlpdb from output directory $opt_location;\n" + die "$prg: Cannot load tlpdb from output directory $opt_location;\n" . " specify --recreate if you need to populate anew.\n"; } @@ -94,7 +96,7 @@ sub main { if ($format eq "xz") { $type = $format; } else { - tlwarn("$0: unknown container format $format in 00texlive.config; ", + tlwarn("$prg: unknown container format $format in 00texlive.config; ", "ignoring and continuing with $type"); } debug("$Master: format=$type srcsplit=$srcsplit docsplit=$docsplit\n"); @@ -109,7 +111,7 @@ sub main { my @disabled_pkgs = TeXLive::TLUtils::tlnet_disabled_packages($Master); if (@disabled_pkgs) { - info("$0: additional tlnet disabled packages: @disabled_pkgs\n"); + info("$prg: additional tlnet disabled packages: @disabled_pkgs\n"); } if ($opt_recreate) { @@ -151,9 +153,9 @@ sub main { $shortpkg =~ s/\..*$//; if (TeXLive::TLUtils::member($shortpkg, @disabled_pkgs)) { if ($opt_all || $opt_recreate) { - tlwarn("$0: Updating tlnet disabled $pkg due to -all\n"); + tlwarn("$prg: Updating tlnet disabled $pkg due to -all\n"); } else { - tlwarn("$0: $pkg disabled for tlnet updates\n"); + tlwarn("$prg: $pkg disabled for tlnet updates\n"); next; } } @@ -162,7 +164,7 @@ sub main { && defined($archiverevs{$pkg})) { $oldrev = $archiverevs{$pkg}; } else { - info("$0: $pkg is new\n"); + info("$prg: $pkg is new\n"); $count{"new"}++; } @@ -183,7 +185,7 @@ sub main { && ! -r "$opt_containerdir/$pkg.source.tar.$type") || ($docsplit && $tlp->docfiles && ! -r "$opt_containerdir/$pkg.doc.tar.$type")) { - info("$0: container(s) for $pkg disappeared, recreating them.\n"); + info("$prg: container(s) for $pkg disappeared, recreating them.\n"); push @todopacks, $pkg; $count{"updated"}++; } else { @@ -195,7 +197,7 @@ sub main { } else { # This can happen when packages get renamed or files get # shuffled from one package to another. - tlwarn("$0: $pkg in source tree is OLDER ($newrev) than in ", + tlwarn("$prg: $pkg in source tree is OLDER ($newrev) than in ", "$opt_location/tlpkg/texlive.tlpdb ($oldrev); continuing.\n"); push @todopacks, $pkg; } @@ -218,7 +220,7 @@ sub main { $nettlpdb->add_tlpobj($tlp00); } else { if ($name eq "config" || $name eq "installation") { - tlwarn("$0: essential package 00texlive.$name seems to be missing!\n"); + tlwarn("$prg: essential package 00texlive.$name seems to be missing!\n"); } } } @@ -233,7 +235,7 @@ sub main { my $ret = &TeXLive::TLUtils::setup_programs("$script_master/tlpkg/installer"); if (!$ret) { - tlwarn("$0: binaries could not be set up, aborting.\n"); + tlwarn("$prg: binaries could not be set up, aborting.\n"); exit 1; } } @@ -250,13 +252,13 @@ sub main { # .arch packages are skipped, too if ($pkg =~ m/^$manualpkgre/) { if ($opt_all || $opt_recreate) { - tlwarn("$0: Updating critical $pkg due to -all\n"); + tlwarn("$prg: Updating critical $pkg due to -all\n"); # in general, we want links for everything, but for testing maybe: #$copy_instead_of_link = 1; last; # of the manualpkgre checks } else { - tlwarn("$0: Skipping critical $pkg\n"); + tlwarn("$prg: Skipping critical $pkg\n"); # we assume that the critical packages always exist, so reduce # the number of updated packages. $count{'updated'}--; @@ -380,7 +382,7 @@ sub main { # remove source/doc containers that have become obsolete. for my $op (@removecontainers) { if (-r "$opt_containerdir/$op.tar.xz") { - info("$0: $op container is old, removing it\n"); + info("$prg: $op container is old, removing it\n"); `rm $opt_containerdir/$op.*` unless $opt_dry; } } @@ -391,11 +393,11 @@ sub main { # .arch packages are skipped, too if ($op =~ m/^$manualpkgre/) { if ($opt_all || $opt_recreate) { - tlwarn("$0: Removing critical $op due to -all\n"); + tlwarn("$prg: Removing critical $op due to -all\n"); last; # of the manualpkgre checks } else { - tlwarn("$0: Skipping removal of critical $op\n"); + tlwarn("$prg: Skipping removal of critical $op\n"); # the following line skips all other regexp checks on critical # packages and skips everything below this (the part which # actually builds the containers) and continues with the next @@ -404,7 +406,7 @@ sub main { } } } - info("$0: $op has disappeared, removing its containers\n"); + info("$prg: $op has disappeared, removing its containers\n"); `rm $opt_containerdir/$op.*` unless $opt_dry; $nettlpdb->remove_package($op) unless $opt_dry; $count{"removed"}++; @@ -414,14 +416,14 @@ sub main { &rcheck_containerdir ($opt_containerdir); if ($opt_recreate) { - info("$0: all packages recreated.\n"); + info("$prg: all packages recreated.\n"); } else { if (@todopacks) { # we updated something - info("$0: $count{new} new, $count{removed} removed, " . + info("$prg: $count{new} new, $count{removed} removed, " . "$count{updated} updated, $count{unchanged} unchanged.\n"); } else { - info("$0: no containers to be updated.\n"); + info("$prg: no containers to be updated.\n"); } } @@ -451,7 +453,7 @@ sub main { foreach my $p ($nettlpdb->list_packages) { next if $p =~ /00texlive/; if (! -r "$opt_containerdir/$p.tar.xz") { - tlwarn("$0: container for $p is missing, should not happen!\n"); + tlwarn("$prg: container for $p is missing, should not happen!\n"); } } } @@ -490,12 +492,12 @@ sub rcheck_containerdir { } else { debug("unlinking $dir/$fname [because have $linktarget]\n"); unlink("$dir/$fname") - || tlwarn("$0: non-symlinked unlink($dir/$fname) failed: $!"); + || tlwarn("$prg: non-symlinked unlink($dir/$fname) failed: $!"); } } # (else it's the current version, do nothing.) } else { # this can happen if we accidentally created unlinked containers. - tlwarn("$0: have file $fname, but no link $linkname!\n"); + tlwarn("$prg: have file $fname, but no link $linkname!\n"); } } elsif ($fname =~ /^([^.]+(\.[^.]+)*\.tar\.xz|\.\.?)$/) { ; # unversioned name, ok. Either . or .. or @@ -503,7 +505,7 @@ sub rcheck_containerdir { # be .doc, .source, .x86_64-linux, etc., or # .infra.x86_64-linux (for texlive.infra), win32.doc (for wintools). } else { - tlwarn("$0: unexpected file: $fname (in $dir)\n"); + tlwarn("$prg: unexpected file: $fname (in $dir)\n"); } } closedir ($dh) || warn "closedir($dir) failed: $!"; diff --git a/Master/tlpkg/bin/tl-update-install-pkg b/Master/tlpkg/bin/tl-update-install-pkg index 24397828909..d0800750e06 100755 --- a/Master/tlpkg/bin/tl-update-install-pkg +++ b/Master/tlpkg/bin/tl-update-install-pkg @@ -17,7 +17,7 @@ BEGIN { } else { $::installerdir = '../..'; } - chdir ($installerdir) || die "$0: chdir($installerdir) failed: $!"; + chdir ($installerdir) || die "$prg: chdir($installerdir) failed: $!"; chomp ($installerdir = `pwd`); unshift (@INC, "$::installerdir/tlpkg"); # @@ -71,6 +71,8 @@ GetOptions( usage if $opt_help; die "$0: extra argument(s) @ARGV; try --help if you need it.\n" if @ARGV; +my $prg = TeXLive::TLUtils::basename($0); + # determine directories. my $sys_tmp = TeXLive::TLUtils::initialize_global_tmpdir() || die ("cannot get temporary directory"); @@ -83,7 +85,7 @@ chomp (my $YYYYMMDD = `date +%Y%m%d`); my $install_tl_name = "install-tl-$YYYYMMDD"; my $inst_tmp = "$tmpdir/$install_tl_name"; -die "$0: output directory must be specified; try --help if you need it.\n" +die "$prg: output directory must be specified; try --help if you need it.\n" if ! $opt_outputdir; my $outputdir = $opt_outputdir; @@ -113,25 +115,25 @@ if ($opt_verbose) { info("outputdir: \"$outputdir\"\n"); } -die "$0: Output directory does not exist: $outputdir.\n" unless -e $outputdir; -die "$0: $outputdir not a directory.\n" unless -d $outputdir; -die "$0: Output directory not writable: $outputdir.\n" unless -w $outputdir; +die "$prg: Output directory does not exist: $outputdir.\n" unless -e $outputdir; +die "$prg: $outputdir not a directory.\n" unless -d $outputdir; +die "$prg: Output directory not writable: $outputdir.\n" unless -w $outputdir; # read TLPDB and extract files my $tlpdb = TeXLive::TLPDB->new ("root" => $installerdir); -die "$0: Cannot find tlpdb in $installerdir.\n" unless defined $tlpdb; +die "$prg: Cannot find tlpdb in $installerdir.\n" unless defined $tlpdb; my $tlpinst = $tlpdb->get_package("00texlive.installer"); -die "$0: no 00texlive.installer in ${installerdir}'s texlive.tlpdb" +die "$prg: no 00texlive.installer in ${installerdir}'s texlive.tlpdb" unless defined $tlpinst; my $tlpinfra = $tlpdb->get_package("texlive.infra"); -die "$0: no texlive.infra in ${installerdir}'s texlive.tlpdb" +die "$prg: no texlive.infra in ${installerdir}'s texlive.tlpdb" unless defined $tlpinfra; my $tlptrans = $tlpdb->get_package("texlive-msg-translations"); -die "$0: no texlive-msg-translations in ${installerdir}'s texlive.tlpdb" +die "$prg: no texlive-msg-translations in ${installerdir}'s texlive.tlpdb" unless defined $tlptrans; my @unix = (); @@ -203,7 +205,7 @@ sub copy_files { # sub make_zip { my ($type) = @_; - info ("$0: Making $type...\n"); + info ("$prg: Making $type...\n"); chomp (my $prevdir = `pwd`); &xchdir ($tmpdir); @@ -233,7 +235,7 @@ sub make_zip { # sub install_files { $outputdir = abs_path ($outputdir); - info ("$0: Installing to $outputdir\n"); + info ("$prg: Installing to $outputdir\n"); for my $f ("install-tl-unx.tar.gz", "install-tl.zip", "install-tl-windows.exe") { copy ("$tmpdir/$f", $outputdir); diff --git a/Master/tlpkg/bin/tl-update-tlnet b/Master/tlpkg/bin/tl-update-tlnet index c9d4474d076..2f244d4f254 100755 --- a/Master/tlpkg/bin/tl-update-tlnet +++ b/Master/tlpkg/bin/tl-update-tlnet @@ -23,6 +23,7 @@ recreate= scheme=full testinstall=true tlweb=/home/ftp/texlive/tlnet +update_install_pkg=true verbose= gpgcmd= @@ -34,6 +35,7 @@ while test $# -gt 0; do --gpgcmd) shift; gpgcmd="--gpgcmd \"$1\"";; --master) shift; Master=$1;; --no-consistency) check_consistency=false;; # takes a long time. + --no-install-pkg) update_install_pkg=false;;# trunk update after freeze --no-testinstall|-N) testinstall=false;; # and no updates; quit early. --pretest) tlweb=/home/ftp/texlive/tlpretest;; --recreate) recreate=--recreate;; @@ -86,6 +88,9 @@ cp --force --backup $tlweb/tlpkg/texlive.tlpdb* /tmp # Be sure we're starting the test cleanly. rm -rf $tltrybase mkdir -p $tltry + +# Keep new directory group-writable to texlive so MacTeX maintainer +# can update it too. chmod g+ws $tltry chgrp texlive $tltry || : # in case of strange system @@ -118,14 +123,21 @@ if $containers_invoke; then :; else exit 1 fi -# 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" -if $update_install_invoke; then :; else - echo "$0: tl-update-install-pkg failed, goodbye." >&2 - exit 1 +# We don't want to update the install packages if we're updating the +# "frozen" release (tlnet-final) after we've moved on to the pretest. +# See tlpkg/doc/releng.txt. +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" + if $update_install_invoke; then :; else + echo "$0: tl-update-install-pkg failed, goodbye." >&2 + exit 1 + fi +else + : fi END_COW diff --git a/Master/tlpkg/doc/releng.txt b/Master/tlpkg/doc/releng.txt index 14f60e6b2b6..3ad7084b596 100644 --- a/Master/tlpkg/doc/releng.txt +++ b/Master/tlpkg/doc/releng.txt @@ -72,12 +72,13 @@ and 1a. Then preserve final tlnet of current release YYYY: cd /home/ftp/texlive/tlnet cp -ar ../tlnet /home/ftp/historic/systems/texlive/YYYY/tlnet-final -# if and when post-freeze updates are made, also update tlnet-final with: -rsync -anv \ - /home/ftp/texlive/tlnet/ /home/ftp/historic/systems/texlive/YYYY/tlnet-final/ -to see what will be changed, and then remove the -n to actually do it. +# if and when post-freeze updates are needed, see below. -1b. Set up tlpretest: +1b. Also preserve Catalogue as of the freeze, again for the sake of + post-freeze updates: +rsync -ar /home/httpd/html/catalogue /home/texlive/catalogue-freeze + +1c. Set up tlpretest: Update /home/ftp/texlive/tlpretest/README. Empty tlpretest except for that README and 00_TIME.txt (used for mirmon). @@ -146,7 +147,7 @@ This was a one-time event, but left here as an example for the unknown future. 10. Life and daily updates go on. In cron.tl, set: net_frozen=false - catalogue_compare=true + catalogue_compare=true # maybe not every day? A. At some point, after tlnet freeze: Update gpg expiration, see tlpkg/gpg/tl-key-extension.txt. @@ -203,8 +204,35 @@ nice -19 svn co svn://tug.org/texlive/branches/branch$tlyear.$subnum . >&out # errors, just rm out afterwards. e) make the required update, probably most easily by copying the - affected files from the trunk. Running ctan2tl (c2l) inside the + affected files from the trunk. Running ctan2tl (or c2l) inside the branch checkout should also work, if no other changes have intervened. + + f) remake tlnet (not tlpretest); cron.tl does too much overhead for + this delicate situation, so run the commands by hand. + 1) update tlpdb so we'll get the new revision number; + must run from branch, not trunk, or all will be wrong! +cd /home/texlive/branch/Master/tlpkg/bin # must be in branch directory + Use Catalogue snapshot saved above (at "preserve Catalogue") + to avoid myriad Catalogue changes. + If files have been removed without any other changes to a given + package (hopefully not), add --fix-reverse-revisions. +catdir=/home/texlive/catalogue-freeze +./tl-update-tlpdb --catalogue=$catdir + Check that only expected changes are made. + Might be easier to run this, get the new revision number(s), + then revert and manually edit if there are additional unneeded + changes. Don't worry about 00texlive.*, they aren't distributed. + + 2) for safety, make a backup of tlnet: +tar -cf /tmp/tlnet.tar -C /home/ftp/texlive/tlnet . # remove when done + + 3) update tlnet, again from the branch, not trunk. Double check! + we don't want to update the installer packages, as they have + already been getting updated from trunk, so are newer. +cd /home/texlive/branch/Master/tlpkg/bin +./tl-update-tlnet --no-install-pkgs + It will take about an hour to run. hopefully only the intended + packages will get updated. if not, that's why we made the tar backup. e) Update the tlnet-final directory in historic: tlnet_live=/home/ftp/texlive/tlnet -- cgit v1.2.3