texlive[53834] trunk: l3build (18feb20)

commits+karl at tug.org commits+karl at tug.org
Tue Feb 18 23:31:29 CET 2020


Revision: 53834
          http://tug.org/svn/texlive?view=revision&revision=53834
Author:   karl
Date:     2020-02-18 23:31:29 +0100 (Tue, 18 Feb 2020)
Log Message:
-----------
l3build (18feb20)

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua
    trunk/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-config-updmap.pl
    trunk/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-fontmap-creator.pl
    trunk/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl
    trunk/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl
    trunk/Master/texmf-dist/doc/latex/l3build/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3build/README.md
    trunk/Master/texmf-dist/doc/latex/l3build/l3build.pdf
    trunk/Master/texmf-dist/doc/man/man1/l3build.1
    trunk/Master/texmf-dist/doc/man/man1/l3build.man1.pdf
    trunk/Master/texmf-dist/scripts/l3build/l3build-arguments.lua
    trunk/Master/texmf-dist/scripts/l3build/l3build-aux.lua
    trunk/Master/texmf-dist/scripts/l3build/l3build-check.lua
    trunk/Master/texmf-dist/scripts/l3build/l3build-ctan.lua
    trunk/Master/texmf-dist/scripts/l3build/l3build-help.lua
    trunk/Master/texmf-dist/scripts/l3build/l3build-manifest-setup.lua
    trunk/Master/texmf-dist/scripts/l3build/l3build-manifest.lua
    trunk/Master/texmf-dist/scripts/l3build/l3build-stdmain.lua
    trunk/Master/texmf-dist/scripts/l3build/l3build-tagging.lua
    trunk/Master/texmf-dist/scripts/l3build/l3build-typesetting.lua
    trunk/Master/texmf-dist/scripts/l3build/l3build-unpack.lua
    trunk/Master/texmf-dist/scripts/l3build/l3build-upload.lua
    trunk/Master/texmf-dist/scripts/l3build/l3build-variables.lua
    trunk/Master/texmf-dist/scripts/l3build/l3build.lua
    trunk/Master/texmf-dist/source/latex/l3build/l3build.dtx

Modified: trunk/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua	2020-02-18 22:31:29 UTC (rev 53834)
@@ -25,7 +25,7 @@
 --]]
 
 -- Version information
-release_date = "2020-02-03"
+release_date = "2020-02-17"
 
 -- File operations are aided by the LuaFileSystem module
 local lfs = require("lfs")

Modified: trunk/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-config-updmap.pl
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-config-updmap.pl	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-config-updmap.pl	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,6 +1,6 @@
 #!/usr/bin/env perl
 # kanji-config-updmap: setup Japanese font embedding
-# Version 20190506.0
+# Version 20200217.0
 #
 # formerly known as updmap-setup-kanji
 #
@@ -22,7 +22,7 @@
 use strict;
 
 my $prg = "kanji-config-updmap";
-my $version = '20190506.0';
+my $version = '20200217.0';
 
 my $updmap_real = "updmap";
 my $updmap = $updmap_real;
@@ -255,6 +255,12 @@
       next if ($l =~ m/^\s*$/); # skip empty line
       next if ($l =~ m/^\s*#/); # skip comment line
       $l =~ s/\s*#.*$//; # skip comment after '#'
+      if ($l =~ m/^JA\*\((\d+)\):\s*(.*):\s*(.*)$/) { # no -04 map
+        $representatives{'ja'}{$2}{'priority'} = $1;
+        $representatives{'ja'}{$2}{'file'} = $3;
+        $representatives{'ja'}{$2}{'nojis04'} = 1;
+        next;
+      }
       if ($l =~ m/^JA\((\d+)\):\s*(.*):\s*(.*)$/) {
         $representatives{'ja'}{$2}{'priority'} = $1;
         $representatives{'ja'}{$2}{'file'} = $3;
@@ -275,6 +281,13 @@
         $representatives{'ko'}{$2}{'file'} = $3;
         next;
       }
+      if ($l =~ m/^JA-AI0\*:\s*(.*):\s*(.*)$/) { # no -04 map
+        $representatives{'ja'}{$1}{'priority'} = 9999; # lowest
+        $representatives{'ja'}{$1}{'file'} = $2;
+        $representatives{'ja'}{$1}{'nojis04'} = 1;
+        $ai0flags{'ja'}{$1} = 1;
+        next;
+      }
       if ($l =~ m/^JA-AI0:\s*(.*):\s*(.*)$/) {
         $representatives{'ja'}{$1}{'priority'} = 9999; # lowest
         $representatives{'ja'}{$1}{'file'} = $2;
@@ -311,10 +324,11 @@
 
 sub kpse_miscfont {
   my ($file) = @_;
-  chomp(my $foo = `kpsewhich -format=miscfont $file`);
-  # for GitHub repository diretory structure
+  my $foo = '';
+  # first, prioritize GitHub repository diretory structure
+  $foo = "database/$file" if (-f "database/$file");
   if ($foo eq "") {
-    $foo = "database/$file" if (-f "database/$file");
+    chomp($foo = `kpsewhich -format=miscfont $file`);
   }
   return $foo;
 }
@@ -366,17 +380,32 @@
 
 sub GetStatus {
   my $opt_mode = shift;
-  my $val = `$updmap_real --quiet --showoption ${opt_mode}Embed`;
-  my $STATUS;
+  my $val;
+  my $STATUS = "";
+  my $VARIANT = "";
+
+  # fetch jaEmbed/scEmbed/tcEmbed/koEmbed
+  $val = `$updmap_real --quiet --showoption ${opt_mode}Embed`;
   if ($val =~ m/^${opt_mode}Embed=([^()\s]*)(\s+\()?/) {
     $STATUS = $1;
   } else {
     die "Cannot find status of current ${opt_mode}Embed setting via updmap --showoption!\n";
   }
+  # fetch jaVariant
+  if ($opt_mode eq "ja") {
+    $val = `$updmap_real --quiet --showoption ${opt_mode}Variant`;
+    if ($val =~ m/^${opt_mode}Variant=([^()\s]*)(\s+\()?/) {
+      $VARIANT = $1; # should be '' or '-04'
+    } else {
+      die "Cannot find status of current ${opt_mode}Variant setting via updmap --showoption!\n";
+    }
+  }
 
-  my $testmap = gen_mapfile($opt_mode, $STATUS);
+  my $testmap = gen_mapfile($opt_mode, "$STATUS$VARIANT");
+  $VARIANT = "<empty>" if ($VARIANT eq ""); # for printing
   if (check_mapfile($testmap)) {
     print "CURRENT family for $opt_mode: $STATUS";
+    print " (variant: $VARIANT)" if ($opt_mode eq "ja");
     print " (AI0)" if ($ai0flags{$opt_mode}{$STATUS});
     print "\n";
   } else {
@@ -410,10 +439,16 @@
     print " (AI0)" if ($ai0flags{$opt_mode}{$rep});
     print " for $opt_mode\n";
     system("$updmap --quiet --nomkmap --nohash --setoption ${opt_mode}Embed $rep");
-    if ($opt_jis) {
-      system("$updmap --quiet --nomkmap --nohash --setoption jaVariant -04");
-    } else {
-      system("$updmap --quiet --nomkmap --nohash --setoption jaVariant \"\"");
+    if ($opt_mode eq "ja") {
+      if ($opt_jis && $representatives{'ja'}{$rep}{'nojis04'}) {
+        print STDERR "WARNING: No -04 map available, option --jis2004 ignored!\n";
+        $opt_jis = 0;
+      }
+      if ($opt_jis) {
+        system("$updmap --quiet --nomkmap --nohash --setoption jaVariant -04");
+      } else {
+        system("$updmap --quiet --nomkmap --nohash --setoption jaVariant \"\"");
+      }
     }
   } else {
     die "NOT EXIST $MAPFILE\n";

Modified: trunk/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-fontmap-creator.pl
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-fontmap-creator.pl	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-fontmap-creator.pl	2020-02-18 22:31:29 UTC (rev 53834)
@@ -2,7 +2,7 @@
 #
 # kanji-fontmap-creator
 # (c) 2012-2014 Norbert Preining
-# Version: 20190506.0
+# Version: 20200217.0
 # Licenced under the GPLv2 or any higher version
 #
 # gui to create map files for (kanji-config-)updmap
@@ -41,7 +41,7 @@
 my $opt_version = 0;
 
 my $prg = "kanji-fontmap-creator";
-my $version = "20190506.0";
+my $version = "20200217.0";
 
 #
 # global vars configuring operation

Modified: trunk/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,12 +1,12 @@
 #!/usr/bin/env perl
-# $Id: tlmgr.pl 53746 2020-02-10 10:14:56Z preining $
+# $Id: tlmgr.pl 53820 2020-02-17 03:23:13Z preining $
 #
 # Copyright 2008-2020 Norbert Preining
 # This file is licensed under the GNU General Public License version 2
 # or any later version.
 
-my $svnrev = '$Revision: 53746 $';
-my $datrev = '$Date: 2020-02-10 11:14:56 +0100 (Mon, 10 Feb 2020) $';
+my $svnrev = '$Revision: 53820 $';
+my $datrev = '$Date: 2020-02-17 04:23:13 +0100 (Mon, 17 Feb 2020) $';
 my $tlmgrrevision;
 my $tlmgrversion;
 my $prg;
@@ -4657,7 +4657,7 @@
         $ret |= $F_WARNING;
       }
     }
-  } elsif ($what =~ m/^showall$/i) {
+  } elsif ($what =~ m/^(showall|help)$/i) {
     if ($opts{'json'}) {
       my $json = $localtlpdb->options_as_json();
       print("$json\n");
@@ -7006,12 +7006,13 @@
       ddebug("loc copy found!\n");
       # we found the tlpdb matching the current location
       # check for the remote hash
-      my $path = "$location/$InfraLocation/$DatabaseName.$TeXLive::TLConfig::ChecksumExtension";
+      my $path = "$location/$InfraLocation/$DatabaseName";
       ddebug("remote path of digest = $path\n");
-
-      my ($ret,$msg)
-        = TeXLive::TLCrypto::verify_checksum($loc_copy_of_remote_tlpdb, $path);
-      if ($ret == $VS_CONNECTION_ERROR) {
+      my ($verified, $status)
+        = TeXLive::TLCrypto::verify_checksum_and_check_return($loc_copy_of_remote_tlpdb, $path,
+            $is_main, 1); # the 1 means local copy mode!
+      # deal with those cases that need special treatment
+      if ($status == $VS_CONNECTION_ERROR) {
         info(<<END_NO_INTERNET);
 Unable to download the checksum of the remote TeX Live database,
 but found a local copy, so using that.
@@ -7027,46 +7028,17 @@
         $remotetlpdb = TeXLive::TLPDB->new(root => $location,
           tlpdbfile => $loc_copy_of_remote_tlpdb);
         $local_copy_tlpdb_used = 1;
-      } elsif ($ret == $VS_UNSIGNED) {
-        # we require the main database to be signed, but allow for
-        # subsidiary to be unsigned
-        if ($is_main) {
-          tldie("$prg: main database at $location is not signed: $msg\n");
-        }
-        # the remote database has not be signed, warn
-        debug("$prg: remote database is not signed, continuing anyway!\n");
-      } elsif ($ret == $VS_GPG_UNAVAILABLE) {
-        # no gpg available
-        debug("$prg: no gpg available for verification, continuing anyway!\n");
-      } elsif ($ret == $VS_PUBKEY_MISSING) {
-        # pubkey missing
-        debug("$prg: $msg, continuing anyway!\n");
-      } elsif ($ret == $VS_CHECKSUM_ERROR) {
-        # no problem, checksum is wrong, we need to get new tlpdb
-      } elsif ($ret == $VS_SIGNATURE_ERROR) {
-        # umpf, signature error
-        # TODO should we die here? Probably yes because one of 
-        # checksum file or signature file has changed!
-        tldie("$prg: verification of checksum for $location failed: $msg\n");
-      } elsif ($ret == $VS_EXPKEYSIG) {
-        # do nothing, try to get new tlpdb and hope sig is better?
-        tlwarn("Verification problem of the TL database at $location:\n");
-        tlwarn("--> $VerificationStatusDescription{$ret}\n");
-        # debug("$prg: good signature bug gpg key expired, continuing anyway!\n");
-      } elsif ($ret == $VS_REVKEYSIG) {
-        # do nothing, try to get new tlpdb and hope sig is better?
-        tlwarn("Verification problem of the TL database at $location:\n");
-        tlwarn("--> $VerificationStatusDescription{$ret}\n");
-        #debug("$prg: good signature but from revoked gpg key, continuing anyway!\n");
-      } elsif ($ret == $VS_VERIFIED) {
+      } elsif ($status == $VS_VERIFIED || $status == $VS_EXPKEYSIG || $status == $VS_REVKEYSIG) {
         $remotetlpdb = TeXLive::TLPDB->new(root => $location,
           tlpdbfile => $loc_copy_of_remote_tlpdb);
         $local_copy_tlpdb_used = 1;
-        # we did verify this tlpdb, make sure that is recorded
-        $remotetlpdb->is_verified(1);
-      } else {
-        tldie("$prg: unexpected return value from verify_checksum: $ret\n");
+        # if verification was successful, make sure that is recorded
+        $remotetlpdb->verification_status($status);
+        $remotetlpdb->is_verified($verified);
       }
+      # nothing to do in the else case
+      # we tldie already in the verify_checksum_and_check_return
+      # for all other cases
     }
   }
   if (!$local_copy_tlpdb_used) {
@@ -8417,7 +8389,7 @@
 
 =item B<option [--json] [show]>
 
-=item B<option [--json] showall>
+=item B<option [--json] showall|help>
 
 =item B<option I<key> [I<value>]>
 
@@ -8428,7 +8400,8 @@
 changing it in parentheses.
 
 The second form, C<showall>, is similar, but also shows options which
-can be defined but are not currently set to any value.
+can be defined but are not currently set to any value (C<help> is a
+synonym).
 
 Both C<show...> forms take an option C<--json>, which dumps the option
 information in JSON format.  In this case, both forms dump the same
@@ -8443,7 +8416,7 @@
 the definitive list):
 
  repository (default package repository),
- formats    (create formats at installation time),
+ formats    (generate formats at installation or update time),
  postcode   (run postinst code blobs)
  docfiles   (install documentation files),
  srcfiles   (install source files),
@@ -8468,7 +8441,8 @@
 
 If C<formats> is set (this is the default), then formats are regenerated
 when either the engine or the format files have changed.  Disable this
-only when you know how and want to regenerate formats yourself.
+only when you know how and want to regenerate formats yourself whenever
+needed (which is often, in practice).
 
 The C<postcode> option controls execution of per-package
 postinstallation action code.  It is set by default, and again disabling
@@ -9918,7 +9892,7 @@
 
 =item C<TEXLIVE_COMPRESSOR>
 
-This option allows selecting a different compressor program for
+This variable allows selecting a different compressor program for
 backups and intermediate rollback containers. The order of selection is:
 
 =over 8
@@ -10009,7 +9983,6 @@
 
 =back
 
-
 =head1 AUTHORS AND COPYRIGHT
 
 This script and its documentation were written for the TeX Live
@@ -10016,7 +9989,7 @@
 distribution (L<https://tug.org/texlive>) and both are licensed under the
 GNU General Public License Version 2 or later.
 
-$Id: tlmgr.pl 53746 2020-02-10 10:14:56Z preining $
+$Id: tlmgr.pl 53820 2020-02-17 03:23:13Z preining $
 =cut
 
 # test HTML version: pod2html --cachedir=/tmp tlmgr.pl >/tmp/tlmgr.html

Modified: trunk/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,6 +1,6 @@
 #!/usr/bin/env wish
 
-# Copyright 2017-2019 Siep Kroonenberg
+# Copyright 2017-2020 Siep Kroonenberg
 
 # This file is licensed under the GNU General Public License version 2
 # or any later version.
@@ -85,7 +85,7 @@
     file mkdir ${::instroot}/temp
     set dbg [open "${::instroot}/temp/mydbglog" a]
     puts $dbg "TCL: $s"
-    close $dbg
+    chan close $dbg
     # Track debug output in the log dialog if it is running:
     if [winfo exists .tllg.dbg.tx] {
       .tllg.dbg.tx configure -state normal
@@ -107,7 +107,7 @@
     # create empty file. although we just want a name,
     # we must make sure that it can be created.
     set fid [open $fname w]
-    close $fid
+    chan close $fid
     if {! [file exists $fname]} {error "Cannot create temporary file"}
     if {$::tcl_platform(platform) eq "unix"} {
       file attributes $fname -permissions 0600
@@ -2390,7 +2390,7 @@
   populate_main
 
   # testing writablilty earlier led to sizing problems
-  if {! [file writable $::instroot]} {
+  if {! [dir_writable $::instroot]} {
     set ans [tk_messageBox -type yesno -icon warning -message \
          [__ "%s is not writable. You can probably not do much.
   Are you sure you want to continue?" $::instroot]]

Modified: trunk/Master/texmf-dist/doc/latex/l3build/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3build/CHANGELOG.md	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/doc/latex/l3build/CHANGELOG.md	2020-02-18 22:31:29 UTC (rev 53834)
@@ -7,6 +7,19 @@
 
 ## [Unreleased]
 
+## [2020-02-17]
+
+### Added
+- Variable `textfiledir`
+- Table `specialtypesetting` and support data
+
+### Changed
+- Documentation improvements
+
+### Fixed
+- When `checkruns` > 1 and `recordstatus=true`, testing code would crash
+  (issue #90)
+
 ## [2020-02-03]
 
 ### Changed
@@ -413,7 +426,8 @@
 - Rationalise short option names: removed `-d`, `-E`, `-r`
 - Target `cmdcheck`: specific to LaTeX3 kernel work
 
-[Unreleased]: https://github.com/latex3/l3build/compare/2020-02-03...HEAD
+[Unreleased]: https://github.com/latex3/l3build/compare/2020-02-17...HEAD
+[2020-02-17]: https://github.com/latex3/l3build/compare/2020-02-03...2020-02-17
 [2020-02-03]: https://github.com/latex3/l3build/compare/2020-01-14...2020-02-03
 [2020-01-14]: https://github.com/latex3/l3build/compare/2019-11-27...2020-01-14
 [2019-11-27]: https://github.com/latex3/l3build/compare/2019-11-01...2019-11-27

Modified: trunk/Master/texmf-dist/doc/latex/l3build/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3build/README.md	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/doc/latex/l3build/README.md	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,7 +1,7 @@
 l3build: a testing and building system for LaTeX3
 =================================================
 
-Release 2020-02-03
+Release 2020-02-17
 
 Overview
 --------

Modified: trunk/Master/texmf-dist/doc/latex/l3build/l3build.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/l3build.1
===================================================================
--- trunk/Master/texmf-dist/doc/man/man1/l3build.1	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/doc/man/man1/l3build.1	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,4 +1,4 @@
-.TH l3build 1 "2020-02-03"
+.TH l3build 1 "2020-02-17"
 .SH NAME
 l3build \- Checking and building packages
 .SH SYNOPSIS

Modified: trunk/Master/texmf-dist/doc/man/man1/l3build.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/scripts/l3build/l3build-arguments.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/l3build/l3build-arguments.lua	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/scripts/l3build/l3build-arguments.lua	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,6 +1,6 @@
 --[[
 
-File l3build-arguments.lua Copyright (C) 2018 The LaTeX3 Project
+File l3build-arguments.lua Copyright (C) 2018-2020 The LaTeX3 Project
 
 It may be distributed and/or modified under the conditions of the
 LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -108,6 +108,7 @@
       },
     help =
       {
+        desc  = "Print this message and exit",
         short = "h",
         type  = "boolean"
       },
@@ -147,6 +148,11 @@
       {
         desc = "Location of user texmf tree",
         type = "string"
+      },
+    version =
+      {
+        desc = "Print version information and exit",
+        type = "boolean"
       }
   }
 

Modified: trunk/Master/texmf-dist/scripts/l3build/l3build-aux.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/l3build/l3build-aux.lua	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/scripts/l3build/l3build-aux.lua	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,6 +1,6 @@
 --[[
 
-File l3build-aux.lua Copyright (C) 2018 The LaTeX3 Project
+File l3build-aux.lua Copyright (C) 2018-2020 The LaTeX3 Project
 
 It may be distributed and/or modified under the conditions of the
 LaTeX Project Public License (LPPL), either version 1.3c of this

Modified: trunk/Master/texmf-dist/scripts/l3build/l3build-check.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/l3build/l3build-check.lua	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/scripts/l3build/l3build-check.lua	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,6 +1,6 @@
 --[[
 
-File l3build-check.lua Copyright (C) 2018,2019 The LaTeX3 Project
+File l3build-check.lua Copyright (C) 2018-2020 The LaTeX3 Project
 
 It may be distributed and/or modified under the conditions of the
 LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -292,9 +292,14 @@
   if recordstatus then
     new_content = new_content .. '***************' .. os_newline
     for i = 1, checkruns do
-      new_content = new_content ..
-        'Compilation ' .. i .. ' of test file completed with exit status ' ..
-        errlevels[i] .. os_newline
+      if (errlevels[i]==nil) then
+        new_content = new_content ..
+          'Compilation ' .. i .. ' of test file skipped ' .. os_newline
+      else
+        new_content = new_content ..
+          'Compilation ' .. i .. ' of test file completed with exit status ' ..
+          errlevels[i] .. os_newline
+      end
     end
   end
   return new_content

Modified: trunk/Master/texmf-dist/scripts/l3build/l3build-ctan.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/l3build/l3build-ctan.lua	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/scripts/l3build/l3build-ctan.lua	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,6 +1,6 @@
 --[[
 
-File l3build-ctan.lua Copyright (C) 2018 The LaTeX3 Project
+File l3build-ctan.lua Copyright (C) 2018-2020 The LaTeX3 Project
 
 It may be distributed and/or modified under the conditions of the
 LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -54,7 +54,7 @@
   end
   copyfiles(sourcefiles,sourcefiledir)
   for _,file in pairs(textfiles) do
-    cp(file, currentdir, ctandir .. "/" .. ctanpkg)
+    cp(file, textfiledir, ctandir .. "/" .. ctanpkg)
   end
 end
 
@@ -127,7 +127,7 @@
   end
   if errorlevel == 0 then
     for _,i in ipairs(textfiles) do
-      for _,j in pairs({unpackdir, currentdir}) do
+      for _,j in pairs({unpackdir, textfiledir}) do
         cp(i, j, ctandir .. "/" .. ctanpkg)
         cp(i, j, tdsdir .. "/doc/" .. tdsroot .. "/" .. bundle)
       end

Modified: trunk/Master/texmf-dist/scripts/l3build/l3build-help.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/l3build/l3build-help.lua	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/scripts/l3build/l3build-help.lua	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,6 +1,6 @@
 --[[
 
-File l3build-help.lua Copyright (C) 2018 The LaTeX3 Project
+File l3build-help.lua Copyright (C) 2018,2020 The LaTeX3 Project
 
 It may be distributed and/or modified under the conditions of the
 LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,8 @@
   print(
     "\n" ..
     "l3build: A testing and building system for LaTeX\n\n" ..
-    "Release " .. release_date
+    "Release " .. release_date .. "\n" ..
+    "Copyright (C) 2014-2020 The LaTeX3 Project"
   )
 end
 
@@ -53,12 +54,12 @@
   end
 
   local scriptname = "l3build"
-  if not match(arg[0], "l3build(%.lua)$") then
+  if not (match(arg[0], "l3build%.lua$") or match(arg[0],"l3build$")) then
     scriptname = arg[0]
   end
-  print("usage: " .. scriptname .. " <command> [<options>] [<names>]")
+  print("usage: " .. scriptname .. " <target> [<options>] [<names>]")
   print("")
-  print("Valid commands are:")
+  print("Valid targets are:")
   local longest,t = setup_list(target_list)
   for _,k in ipairs(t) do
     local target = target_list[k]
@@ -82,5 +83,9 @@
     end
   end
   print("")
-  print("See l3build.pdf for further details.")
+  print("Full manual available via 'texdoc l3build'.")
+  print("")
+  print("Repository  : https://github.com/latex3/l3build")
+  print("Bug tracker : https://github.com/latex3/l3build/issues")
+  print("Copyright (C) 2014-2020 The LaTeX3 Project")
 end

Modified: trunk/Master/texmf-dist/scripts/l3build/l3build-manifest-setup.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/l3build/l3build-manifest-setup.lua	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/scripts/l3build/l3build-manifest-setup.lua	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,6 +1,6 @@
 --[[
 
-File l3build-manifest-setup.lua Copyright (C) 2017-2018 The LaTeX3 Project
+File l3build-manifest-setup.lua Copyright (C) 2018,2020 The LaTeX3 Project
 
 It may be distributed and/or modified under the conditions of the
 LaTeX Project Public License (LPPL), either version 1.3c of this

Modified: trunk/Master/texmf-dist/scripts/l3build/l3build-manifest.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/l3build/l3build-manifest.lua	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/scripts/l3build/l3build-manifest.lua	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,6 +1,6 @@
 --[[
 
-File l3build-manifest.lua Copyright (C) 2017-2018 The LaTeX3 Project
+File l3build-manifest.lua Copyright (C) 2018,2020 The LaTeX3 Project
 
 It may be distributed and/or modified under the conditions of the
 LaTeX Project Public License (LPPL), either version 1.3c of this

Modified: trunk/Master/texmf-dist/scripts/l3build/l3build-stdmain.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/l3build/l3build-stdmain.lua	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/scripts/l3build/l3build-stdmain.lua	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,6 +1,6 @@
 --[[
 
-File l3build-stdmain.lua Copyright (C) 2018 The LaTeX3 Project
+File l3build-stdmain.lua Copyright (C) 2018-2020 The LaTeX3 Project
 
 It may be distributed and/or modified under the conditions of the
 LaTeX Project Public License (LPPL), either version 1.3c of this

Modified: trunk/Master/texmf-dist/scripts/l3build/l3build-tagging.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/l3build/l3build-tagging.lua	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/scripts/l3build/l3build-tagging.lua	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,6 +1,6 @@
 --[[
 
-File l3build-tagging.lua Copyright (C) 2018 The LaTeX3 Project
+File l3build-tagging.lua Copyright (C) 2018-2020 The LaTeX3 Project
 
 It may be distributed and/or modified under the conditions of the
 LaTeX Project Public License (LPPL), either version 1.3c of this

Modified: trunk/Master/texmf-dist/scripts/l3build/l3build-typesetting.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/l3build/l3build-typesetting.lua	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/scripts/l3build/l3build-typesetting.lua	2020-02-18 22:31:29 UTC (rev 53834)
@@ -127,9 +127,10 @@
   return 0
 end
 
-function tex(file,dir)
+function tex(file,dir,cmd)
   local dir = dir or "."
-  return runcmd(typesetexe .. " " .. typesetopts .. " \"" .. typesetcmds
+  local cmd = cmd or typesetexe .. typesetopts
+  return runcmd(cmd .. " \"" .. typesetcmds
     .. "\\input " .. file .. "\"",
     dir,{"TEXINPUTS","LUAINPUTS"})
 end
@@ -138,7 +139,13 @@
   local dir = dir or "."
   local name = jobname(file)
   print("Typesetting " .. name)
-  local errorlevel = typeset(file,dir)
+  local fn = typeset
+  local cmd = typesetexe .. " " .. typesetopts
+  if specialtypesetting and specialtypesetting[file] then
+    fn = specialtypesetting[file].func or fn
+    cmd = specialtypesetting[file].cmd or cmd
+  end
+  local errorlevel = fn(file,dir,cmd)
   if errorlevel ~= 0 then
     print(" ! Compilation failed")
     return errorlevel
@@ -148,9 +155,9 @@
   return cp(pdfname,dir,docfiledir)
 end
 
-typeset = typeset or function(file,dir)
+typeset = typeset or function(file,dir,exe)
   dir = dir or "."
-  local errorlevel = tex(file,dir)
+  local errorlevel = tex(file,dir,exe)
   if errorlevel ~= 0 then
     return errorlevel
   end
@@ -163,7 +170,7 @@
     errorlevel =
       makeindex(name,dir,".glo",".gls",".glg",glossarystyle) +
       makeindex(name,dir,".idx",".ind",".ilg",indexstyle)    +
-      tex(file,dir)
+      tex(file,dir,exe)
     if errorlevel ~= 0 then break end
   end
   return errorlevel

Modified: trunk/Master/texmf-dist/scripts/l3build/l3build-unpack.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/l3build/l3build-unpack.lua	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/scripts/l3build/l3build-unpack.lua	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,6 +1,6 @@
 --[[
 
-File l3build-unpack.lua Copyright (C) 2018 The LaTeX3 Project
+File l3build-unpack.lua Copyright (C) 2018-2020 The LaTeX3 Project
 
 It may be distributed and/or modified under the conditions of the
 LaTeX Project Public License (LPPL), either version 1.3c of this

Modified: trunk/Master/texmf-dist/scripts/l3build/l3build-upload.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/l3build/l3build-upload.lua	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/scripts/l3build/l3build-upload.lua	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,6 +1,6 @@
 --[[
 
-File l3build-upload.lua Copyright (C) 2018 The LaTeX3 Project
+File l3build-upload.lua Copyright (C) 2018-2020 The LaTeX3 Project
 
 It may be distributed and/or modified under the conditions of the
 LaTeX Project Public License (LPPL), either version 1.3c of this

Modified: trunk/Master/texmf-dist/scripts/l3build/l3build-variables.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/l3build/l3build-variables.lua	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/scripts/l3build/l3build-variables.lua	2020-02-18 22:31:29 UTC (rev 53834)
@@ -1,6 +1,6 @@
 --[[
 
-File l3build-variables.lua Copyright (C) 2018,2019 The LaTeX3 Project
+File l3build-variables.lua Copyright (C) 2018-2020 The LaTeX3 Project
 
 It may be distributed and/or modified under the conditions of the
 LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,6 +43,7 @@
 -- Substructure for file locations
 docfiledir    = docfiledir    or currentdir
 sourcefiledir = sourcefiledir or currentdir
+textfiledir   = textfiledir   or currentdir
 supportdir    = supportdir    or maindir .. "/support"
 testfiledir   = testfiledir   or currentdir .. "/testfiles"
 testsuppdir   = testsuppdir   or testfiledir .. "/support"
@@ -151,6 +152,7 @@
 -- Additional settings to fine-tune typesetting
 glossarystyle = glossarystyle or "gglo.ist"
 indexstyle    = indexstyle    or "gind.ist"
+specialtypesetting = specialtypesetting or { }
 
 -- Supporting binaries and options
 biberexe      = biberexe      or "biber"

Modified: trunk/Master/texmf-dist/scripts/l3build/l3build.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/l3build/l3build.lua	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/scripts/l3build/l3build.lua	2020-02-18 22:31:29 UTC (rev 53834)
@@ -25,7 +25,7 @@
 --]]
 
 -- Version information
-release_date = "2020-02-03"
+release_date = "2020-02-17"
 
 -- File operations are aided by the LuaFileSystem module
 local lfs = require("lfs")

Modified: trunk/Master/texmf-dist/source/latex/l3build/l3build.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3build/l3build.dtx	2020-02-18 22:31:00 UTC (rev 53833)
+++ trunk/Master/texmf-dist/source/latex/l3build/l3build.dtx	2020-02-18 22:31:29 UTC (rev 53834)
@@ -64,6 +64,7 @@
 \luavarset{testfiledir}{"./testfiles"}  {Directory containing test files}
 \luavarset{testsuppdir}{testfiledir .. "/support"}{Directory containing test-specific support files}
 \luavarset{texmfdir}{maindir .. "/texmf"}{Directory containing support files in tree form}
+\luavarset{textfiledir}{"."}                 {Directory containing plain text files}
 \luavarseparator
 \luavarset{builddir}  {maindir .. "/build"}   {Directory for building and testing}
 \luavarset{distribdir}{builddir .. "/distrib"}{Directory for generating distribution structure}
@@ -137,6 +138,7 @@
 \luavarseparator
 \luavarset{glossarystyle}{"gglo.ist"}{MakeIndex style file for glossary/changes creation}
 \luavarset{indexstyle}   {"gind.ist"}{MakeIndex style for index creation}
+\luavarset{specialtypesetting}{\meta{table}} {Non-standard typesetting combinations}
 \luavarseparator
 \luavarset{forcecheckepoch}{"true"}    {Force epoch when running tests}
 \luavarset{forcedocepoch}  {"false"}   {Force epoch when typesetting}
@@ -231,7 +233,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-17}
 %
 % \maketitle
 % \tableofcontents
@@ -310,13 +312,22 @@
 % For a module, this build folder can be in the main directory of the package itself, but for a bundle it should be common for the bundle itself and for all modules within that bundle.
 % A |build/| folder can be safety deleted; all material within is re-generated for each command of the \pkg{l3build} system.
 %
-% \subsection{Main build commands}
+% \subsection{The \texttt{build.lua} file}
 %
+% The \texttt{build.lua} file used to control \pkg{l3build} is a simple Lua file
+% which is read during execution. In the current release of \pkg{l3build},
+% \texttt{build.lua} is read automatically and can access all of the global
+% functions provided by the script. Thus it may contain a simple list of
+% variable settings \emph{or} additionally custom code to change the build
+% process. A number of example scripts are given in Section~\ref{sec:examples}.
+%
+% \subsection{Main build targets}
+%
 % In the working directory of a bundle or module, \pkg{l3build} is run by executing
 % \begin{center}
-% \texttt{l3build \meta{command} [\meta{option(s)}]}
+% \texttt{l3build \meta{targets} [\meta{option(s)}]}
 % \end{center}
-% where \texttt{\meta{command}} can be one of the following:
+% where \texttt{\meta{targets}} can be one of the following:
 % \begin{itemize}[noitemsep]\ttfamily
 % \item check
 % \item check \meta{name(s)}
@@ -333,9 +344,9 @@
 % \item upload
 % \item upload \meta{tag}
 % \end{itemize}
-% These commands are described below.
+% These targets are described below.
 %
-% As well as these commands, the system recognises the options
+% As well as these targets, the system recognises the options
 % \begin{itemize}
 % \item |--config| (|-c|) Configuration(s) to use for testing
 % \item |--date| Date to use when tagging data
@@ -510,7 +521,7 @@
 %
 % \begin{buildcmd}{install}
 % Copies all package files (defined by \var{installfiles}) into the user's home \texttt{texmf} tree in the form of the \TeX\ Directory Structure.
-% The location of the user tree can be adjusted using the |--texmfhome| swtich:
+% The location of the user tree can be adjusted using the |--texmfhome| switch:
 % the standard setting is the location set as |TEXMFHOME|.
 % \end{buildcmd}
 %
@@ -584,15 +595,6 @@
 % See Section~\ref{sec:upload} for full details on this feature.
 % \end{buildcmd}
 %
-% \subsection{The \texttt{build.lua} file}
-%
-% The \texttt{build.lua} file used to control \pkg{l3build} is a simple Lua file
-% which is read during execution. In the current release of \pkg{l3build},
-% \texttt{build.lua} is read automatically and can access all of the global
-% functions provided by the script. Thus it may contain a simple list of
-% variable settings \emph{or} additionally custom code to change the build
-% process. A number of example scripts are given in Section~\ref{sec:examples}.
-%
 % \subsection{Example build scripts}
 % \label{sec:examples}
 %
@@ -649,10 +651,13 @@
 % \label{fig:module}
 % \end{figure}
 %
+% A collection of full examples (source files in various layouts) are available
+% at \url{https://github.com/latex3/l3build/tree/master/examples}.
+%
 % \subsection{Backwards compatibility}
 %
 % Earlier releases of \pkg{l3build} required that the last line of
-% \texttt{build.lua} ran the main script, \emph{i.e.}~ that \texttt{build.lua}
+% \texttt{build.lua} ran the main script, \emph{i.e.}~that \texttt{build.lua}
 % was what the user called rather than \texttt{l3build.lua}. To allow scripts
 % to support both forms \emph{for the transition}, a simple test may be
 % included as showing in Figure~\ref{fig:build-compat}.
@@ -770,7 +775,8 @@
 % A variety of source layouts are supported. In general, a \enquote{flat}
 % layout with all source files \enquote{here} is most convenient. However,
 % \pkg{l3build} supports placement of both code and documentation source
-% files in other locations using the \var{sourcefiledir} and \var{docfiledir}
+% files in other locations using the \var{sourcefiledir}, \var{docfiledir}
+% and \var{textfiledir}
 % variables. For pre-built trees, the glob syntax \texttt{**/*.\meta{ext}} may
 % be useful in these cases: this enables recursive searching in the appropriate
 % tree locations. With the standard settings, this structure will be removed
@@ -778,6 +784,11 @@
 % used to control this behavior. The \var{flattentds} setting controls
 % the same concept for TDS creation.
 %
+% Notice that text files are treated separately from documentation files when
+% splitting trees: this is to allow for the common case where files such
+% as |README| and |LICENSE| are at the top level even when other documentation
+% files are in a sub-directory.
+%
 % A series of example layouts and matching |build.lua| files are available from
 % \url{https://github.com/latex3/l3build/tree/master/examples}.
 %
@@ -924,8 +935,6 @@
 % \item
 % \cs{TESTEXP} surrounds its contents with \cs{TYPE} and formatting to match \cs{TEST}; this can be used as a shorthand to test expandable commands.
 % \item
-% TODO: would a \cs{TESTFEXP} command (based on \cs{romannumeral} expansion) be useful as well?
-% \item
 % \cs{BEGINTEST}\marg{title} \dots \cs{ENDTEST} is an environment form of
 % \cs{TEST}, allowing verbatim material, \emph{etc.} to appear.
 % \item
@@ -1263,7 +1272,7 @@
 % tree, one might use the set up shown in Figure~\ref{fig:tds}.
 % \begin{figure}
 %   \begin{lstlisting}[frame=single,language={[5.2]Lua},gobble = 6]
-%     tdslocations = 
+%     tdslocations =
 %       {
 %         "tex/generic/mypkg/*.generic.tex" ,
 %         "tex/plain/mypkg/*.plain.tex"    ,
@@ -1355,7 +1364,8 @@
 % copying files to the typesetting location but before the main typesetting
 % run. This may be used for example to script a very large number of
 % demonstrations using a single source (see the \pkg{beamer} package
-% for an example of this).
+% for an example of this). Note that this hook is intended for use files
+% \emph{not} listed in \var{typesetfiles} or \var{typesetdemofiles}.
 %
 % \begin{figure}[!b]
 %   \begin{lstlisting}[frame=single,language={[5.2]Lua},gobble = 6]
@@ -1391,6 +1401,22 @@
 % to be executed once all standard set up is complete but before any typesetting
 % is run.
 %
+% \subsection{Non-standard typesetting}
+%
+% To allow non-standard typesetting combinations, for example per-file
+% choice of engines, the table \var{specialtypesetting} may be used.
+% This is a table with one entry per file. Each entry is itself a table,
+% and these contain a list of engines and settings for |cmd| and |func|.
+% For example, to choose to use \LuaTeX{} for one file when \var{typesetexe}
+% is |pdftex|
+% \begin{verbatim}
+% specialtypesetting.foo = {cmd = "luatex -interaction=nonstopmode"}
+% \end{verbatim}
+% or to select an entirely different typesetting function
+% \begin{verbatim}
+% specialtypesetting.foo = {func = typeset_foo}
+% \end{verbatim}
+%
 % \subsection{Automated upload to CTAN}
 % \label{sec:upload}
 %
@@ -1790,7 +1816,7 @@
 %   \end{syntax}
 %   Runs Biber on the \meta{name} (\emph{i.e.}~a jobname lacking any
 %   extension) inside the \meta{dir}. If there is no |.bcf| file then
-%   no action is taken with a return value of $0$. 
+%   no action is taken with a return value of $0$.
 % \end{function}
 %
 % \begin{function}{bibtex()}
@@ -1799,7 +1825,7 @@
 %   \end{syntax}
 %   Runs Bib\TeX{} on the \meta{name} (\emph{i.e.}~a jobname lacking any
 %   extension) inside the \meta{dir}. If there are no |\citation| lines in
-%   the |.aux| file then no action is taken with a return value of $0$. 
+%   the |.aux| file then no action is taken with a return value of $0$.
 % \end{function}
 %
 % \begin{function}{makeindex()}
@@ -1813,9 +1839,10 @@
 %
 % \begin{function}{tex()}
 %   \begin{syntax}
-%     |tex(|\meta{file},\meta{dir}|)|
+%     |tex(|\meta{file},\meta{dir},\meta{cmd}|)|
 %   \end{syntax}
-%   Runs \luavar{typesetexe} on the \meta{name} inside the \meta{dir}.
+%   Runs \meta{cmd} (by default \luavar{typesetexe} \luavar{typesetopts}) on the
+%   \meta{name} inside the \meta{dir}.
 % \end{function}
 %
 % \begin{function}{runcmd()}



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