summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-03-10 16:46:34 +0000
committerKarl Berry <karl@freefriends.org>2020-03-10 16:46:34 +0000
commitaf446d36b33df852f2be14288d1ebabfcade3116 (patch)
tree07939227f611041976906de0005a0faba5348dbe
parent4480b9200dc29547866e0908e9326eb512b273db (diff)
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
-rwxr-xr-xMaster/tlpkg/bin/tl-update-containers48
-rwxr-xr-xMaster/tlpkg/bin/tl-update-install-pkg24
-rwxr-xr-xMaster/tlpkg/bin/tl-update-tlnet28
-rw-r--r--Master/tlpkg/doc/releng.txt42
4 files changed, 93 insertions, 49 deletions
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