texlive[54221] Master/tlpkg: tl-update-install-pkg,

commits+karl at tug.org commits+karl at tug.org
Tue Mar 10 17:46:34 CET 2020


Revision: 54221
          http://tug.org/svn/texlive?view=revision&revision=54221
Author:   karl
Date:     2020-03-10 17:46:34 +0100 (Tue, 10 Mar 2020)
Log Message:
-----------
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.

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tl-update-containers
    trunk/Master/tlpkg/bin/tl-update-install-pkg
    trunk/Master/tlpkg/bin/tl-update-tlnet
    trunk/Master/tlpkg/doc/releng.txt

Modified: trunk/Master/tlpkg/bin/tl-update-containers
===================================================================
--- trunk/Master/tlpkg/bin/tl-update-containers	2020-03-10 16:02:53 UTC (rev 54220)
+++ trunk/Master/tlpkg/bin/tl-update-containers	2020-03-10 16:46:34 UTC (rev 54221)
@@ -59,6 +59,8 @@
 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());
 
 

@@ -65,7 +67,7 @@
 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 @@
   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 @@
   
   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 @@
       $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 @@
           && 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 @@
                 && ! -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 @@
       } 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 @@
       $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 @@
     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 @@
       # .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 @@
   # 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 @@
       # .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 @@
         }
       }
     }
-    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 @@
   &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 @@
     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 @@
           } 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 @@
         # 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: $!";

Modified: trunk/Master/tlpkg/bin/tl-update-install-pkg
===================================================================
--- trunk/Master/tlpkg/bin/tl-update-install-pkg	2020-03-10 16:02:53 UTC (rev 54220)
+++ trunk/Master/tlpkg/bin/tl-update-install-pkg	2020-03-10 16:46:34 UTC (rev 54221)
@@ -17,7 +17,7 @@
   } 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 @@
 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 @@
 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 @@
   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 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 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);

Modified: trunk/Master/tlpkg/bin/tl-update-tlnet
===================================================================
--- trunk/Master/tlpkg/bin/tl-update-tlnet	2020-03-10 16:02:53 UTC (rev 54220)
+++ trunk/Master/tlpkg/bin/tl-update-tlnet	2020-03-10 16:46:34 UTC (rev 54221)
@@ -23,6 +23,7 @@
 scheme=full
 testinstall=true
 tlweb=/home/ftp/texlive/tlnet
+update_install_pkg=true
 verbose=
 gpgcmd=
 
@@ -34,6 +35,7 @@
   --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 @@
 # 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 @@
   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
 

Modified: trunk/Master/tlpkg/doc/releng.txt
===================================================================
--- trunk/Master/tlpkg/doc/releng.txt	2020-03-10 16:02:53 UTC (rev 54220)
+++ trunk/Master/tlpkg/doc/releng.txt	2020-03-10 16:46:34 UTC (rev 54221)
@@ -72,12 +72,13 @@
 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 @@
 
 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,9 +204,36 @@
 # 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
 tlnet_historic=/home/ftp/historic/systems/texlive/2019/tlnet-final



More information about the tex-live-commits mailing list.