texlive[66642] Master/tlpkg: clean up c2a, update release doc for
commits+karl at tug.org
commits+karl at tug.org
Tue Mar 21 23:49:40 CET 2023
Revision: 66642
http://tug.org/svn/texlive?view=revision&revision=66642
Author: karl
Date: 2023-03-21 23:49:40 +0100 (Tue, 21 Mar 2023)
Log Message:
-----------
clean up c2a, update release doc for 2023
Modified Paths:
--------------
trunk/Master/tlpkg/bin/c2a
trunk/Master/tlpkg/doc/releng.txt
Modified: trunk/Master/tlpkg/bin/c2a
===================================================================
--- trunk/Master/tlpkg/bin/c2a 2023-03-21 21:24:45 UTC (rev 66641)
+++ trunk/Master/tlpkg/bin/c2a 2023-03-21 22:49:40 UTC (rev 66642)
@@ -2,37 +2,52 @@
# $Id$
# Public domain. Originally written by Karl Berry, 2022.
#
-# Update from CTAN to TL. First, run the test import with c2l; then, if
-# no files were added or removed (and it was an existing package),
-# automatically run c2l -p to "place" the new package in svn.
-# Do not run svn commit. (Code needs to be refactored for common calls.)
+# Top-level script to update from CTAN to TL.
+#
+# First (unless placing was explicitly specified with [-]p),
+# run a test import with c2l.
+# Then, if no files were added or removed (and it was an existing
+# package), or if placing was explicitly specified, automatically run
+# c2l p to "place" the new package in svn with adds/removes.
+# Do not run svn commit.
+#
+# By the way, we accept "p" as well as "-p" because it's convenient for
+# word deletion on the command line not to have a - lying around. For
+# the same reason, the [-]p is given after the package, so we can
+# add/remove it without having to edit the package name. Since we run
+# this command multiple times a day, must optimize every keystroke.
use strict; use warnings;
(my $prg = $0) =~ s,.*/,,;
-my $place_branch = 0;
-#my $chicken = "";
-my $chicken = "-p";
-
exit (&main ());
sub main {
- die "Usage: $0 PKGNAME [-][p]\n" if (@ARGV == 0 || @ARGV > 2);
+ die "Usage: $0 PKGNAME [-][p]\n" if (@ARGV == 0 || @ARGV > 2); # USTL
+ my $status = 1; # default to failure
+
my $place = 0;
if ($ARGV[$#ARGV] =~ /^-?p$/) {
pop (@ARGV);
$place = 1;
}
+
+ if ($place) {
+ $status = &do_place ("$prg: p(lace) explicitly given");
+ exit $status;
+ }
+
+ # no explicit place, run c2l to check if we can do it implicitly.
printf "$prg: running c2l...";
- my @lines = `set -o pipefail; c2l @ARGV </dev/null 2>&1 | tee /tmp/c2l.out`;
- if ($?) {
+ my @lines;
+ ($status, at lines) = &run_c2l ("");
+ if ($status) {
print "first c2l failed, exiting.\n";
print @lines;
- exit $?;
+ exit $status;
}
- my $status = 1;
my $i;
for ($i = 0; $i < @lines; $i++) {
if ($lines[$i] =~ /^current vs.\ new/) {
@@ -39,7 +54,7 @@
my $nextline = $lines[$i+1];
if ($nextline =~ /^[0-9]+ common files, ([0-9]+) changed/) {
if ($1 == 0) {
- print "seems nothing changed, done.\n";
+ print "seems nothing has changed, done.\n";
print @lines;
$status = 0;
last;
@@ -61,12 +76,8 @@
}
if ($i == @lines) {
- if ($place) {
- $status = &do_place ("no current vs. new, but p(lace) given");
- } else {
- print "no current vs. new, exiting.\n"; # new package, presumably
- print @lines;
- }
+ print "no current vs. new, exiting.\n"; # new package, presumably
+ print @lines;
}
return $status;
@@ -73,30 +84,29 @@
}
+# Run c2l to "place" (svn add/remove, but not commit) file.
+# Return exit status.
+#
sub do_place {
- my ($desc,$c2cmd) = @_;
+ my ($desc) = @_;
- my $msg;
- if ($c2cmd && $c2cmd eq "c2b") {
- $msg = "$prg: $desc"; # place on branch
- } else {
- $c2cmd = "c2l";
- my $branch_msg = $place_branch ? "(+branch)" : "";
- $msg = "$desc, rerunning for svn$branch_msg...";
- }
-
- print "$msg\n";
- my $cmd = "set -o pipefail;"
- . "$c2cmd $chicken @ARGV </dev/null 2>&1 | tee /tmp/$c2cmd.out";
- my @placelines = `$cmd`;
- my $status = $?;
+ print "$desc, running for svn.\n";
+ my ($status, at placelines) = &run_c2l ("p");
print @placelines;
if ($status) {
- print "$prg: *** do_place($c2cmd) failed, exiting.\n";
-
- } elsif ($c2cmd ne "c2b" && $place_branch) {
- $status = &do_place ("running c2b for svn branch", "c2b");
+ print "$prg: *** do_place failed, exiting.\n";
}
return $status;
}
+
+
+# Run c2l, specifying ARG. Return a list with the exit status
+# and then all output lines.
+#
+sub run_c2l {
+ my ($arg) = @_;
+ my $tmpfile = "/tmp/c2l$arg.out";
+ my @ret = `set -o pipefail; c2l $arg @ARGV </dev/null 2>&1 | tee $tmpfile`;
+ return ($?, @ret);
+}
Modified: trunk/Master/tlpkg/doc/releng.txt
===================================================================
--- trunk/Master/tlpkg/doc/releng.txt 2023-03-21 21:24:45 UTC (rev 66641)
+++ trunk/Master/tlpkg/doc/releng.txt 2023-03-21 22:49:40 UTC (rev 66642)
@@ -369,7 +369,8 @@
Z1. When sure it's going to fly, ask for torrents to be created. In 2022,
Tim Stewart <timoteostewart1977 at gmail.com>
- made the one that worked.
+ made the one that worked. Ask him when final pretest appears stable,
+ don't wait for release (ideally).
Part III. Making the big release.
@@ -387,6 +388,7 @@
chgrp texlive !$
chmod g+ws !$
ls -ld !$
+ls !$ # should be empty
cd /home/ftp/texlive/Images
cp -pv README.md $hx/$prev/
@@ -403,11 +405,21 @@
cd ~ftp/tex/mactex
chgrp mactex *; chmod g+w *
mv -v *.pkg* $hm/$prev
-# should be only MacTeXtras.zip* and related left.
+ls # should be only MacTeXtras.zip* and related left.
mv -v ~ftp/texlive/tlpretest/*.pkg* .
+#
+# make generic symlinks:
+ln -s mactex-basictex-20230314.pkg BasicTeX.pkg
+ln -s mactex-ghostscript-10.0.0-20230218.pkg Ghostscript.pkg
+ln -s mactex-20230314.pkg MacTeX.pkg
+#
+# and checksums for them:
+for f in *.pkg; do echo $f; md5sum $f >$f.md5; sha512sum $f >$f.sha512; done
+#
edit README
chgrp mactex *; chmod g+w *
mkdir $hm/$this/
+ls !$ # should be empty
cp -pv Extras*.pdf mactex-MacTeXtras*.zip $hm/$this
- move rest of tlnet to historic, as tlnet-final:
@@ -417,6 +429,7 @@
chgrp texlive !$
chmod g+s !$
ls -ld !$
+ls !$ # should be empty
cd /home/ftp/texlive/tlnet
mv [a-z]* $hx/$prev/tlnet-final
rm -i TEXLIVE_20* # remove old signal file
@@ -431,7 +444,7 @@
- Source directory for CTAN:
fx=/home/ftp/tex
ls $fx/texlive/Source/* # ensure last year's sources
-rm -f !$
+rm -f !$ # yep, remove them, we have have them in historic
cp -av $tm/source/{install-tl,texlive-,windows-src-}*z $fx/texlive/Source/
cp -av $tm/source/{install-tl,texlive,windows-src}*README $fx/texlive/Source/
@@ -438,7 +451,8 @@
- historic copy of TL web pages:
cd /home/httpd/html/texlive
mkdir $hx/$prev/web/
-cp *.html !$ # disable header.html include in bugs.html
+cp *.html !$
+ls !$/bugs.html # disable header.html ssi in that bugs.html
- copy full (unpruned) tlpdb to historic:
# the pre-pruned tlpdb directory is created by tl-update-images.
@@ -449,10 +463,11 @@
mv $tgz $hx/$this/
rm -rf $preprune
-- update local CTAN area, just to avoid mirroring everything back again.
+- email ctan at ctan.org.
+ update local CTAN area, just to avoid mirroring everything back again.
Need to do this after the night's mirror-ctan is done, since CTAN
won't have updated yet, most likely.
-cd /home/ftp/texlive/tlnet # still
+cd /home/ftp/texlive/tlnet
cy=/home/ftp/tex-archive/systems
rm -rf $cy/texlive/tlnet/*; cp -ar * $cy/texlive/tlnet/
rm $cy/texlive/Images/*; cp -a ../Images/*.* $cy/texlive/Images/
@@ -466,7 +481,7 @@
cd /mnt/tl
TEXLIVE_INSTALL_NO_RESUME=1; export TEXLIVE_INSTALL_NO_RESUME
echo i | time nice -19 perl install-tl # do full install to default location
- # takes about 30min
+ # takes about 40min
rm /usr/local/texlive-rel && ln -s texlive/$this /usr/local/texlive-rel
ls !$
newsrc=!$/source
@@ -477,7 +492,9 @@
mount /home/ftp/texlive/Contents/live
cd
umount /mnt/tl
-chmod -R a-w /usr/local/texlive-rel/ # make unwritable, we should never change
+# make files unwritable, we should never change;
+# but keep directories writable, else backup-external fails.
+find "$@" -xtype f -print0 | xargs -0 chmod a-w,a+r /usr/local/texlive-rel/
- update ~www/texlive web pages (search for $prev and $prev-1):
acquire* - general
@@ -490,6 +507,7 @@
upgrade.html - whether possible or not
tlmgr-news.html - from texmf-dist/scripts/texlive/NEWS
index.html - dates
+ and site home page: ~www/index.html
check for new Texinfo manuals to link to html versions, and if any,
make a new link in:
~www/texinfohtml/
@@ -499,10 +517,11 @@
https://tug.org/pipermail/tex-live-commits/
Also, look at https://tug.org/svn/texlive/tags/ to get subnum
and https://tug.org/svn/texlive/branches/ to avoid duplication.
-rev=62882
-subnum=0 # increase as necessary if multiple branches needed
+rev=66589
+subnum=0 # increment as necessary if multiple branches needed
tlyear=`date +%Y`; echo $tlyear # maybe previous year during pretest, as above
-svn copy -r $rev \
+# rerun without echo after checking
+echo svn copy -r $rev \
-m"texlive-$tlyear.$subnum tag based on r$rev" \
svn://tug.org/texlive/trunk \
svn://tug.org/texlive/tags/texlive-$tlyear.$subnum
@@ -550,15 +569,18 @@
- increment source versions, increment year+libversions and append /dev:
Build/source/{version.ac,texk/{kpathsea,ptexenc}/version.ac
reautoconf
-svn commit -m'tlYY/dev' Build/source
+cd Build/source
+svn status
+svn commit -m"tl$YY/dev" .
-- update ~karl/bin/cron.tl, be sure cron.pretest and cron.branch are disabled,
-and reenable cron.trunk when feel ready:
-critical=
-images_frozen=true
+- confirm cron.pretest and cron.branch are disabled.
+- update ~karl/bin/cron.tl and reenable cron.trunk when feel ready:
+critical= # for trunk
+images_frozen=true # for all
net_frozen=false
all_frozen=false
catalogue_compare=true intermittently
+tl_update_auto=true
#
Also disable cron.synctl /home/texlive/branch and enable plain cron.synctl.
#
More information about the tex-live-commits
mailing list.