diff options
author | Karl Berry <karl@freefriends.org> | 2020-02-18 22:31:29 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-02-18 22:31:29 +0000 |
commit | cbb50a7bff75caadde7a46cb6bafe42f458ad320 (patch) | |
tree | f6f9e8cf8d8489be82ac9d6d6306769abfd9a556 | |
parent | a340b6ccbdc7ac8f174570c9618d1b6e7a0cfd54 (diff) |
l3build (18feb20)
git-svn-id: svn://tug.org/texlive/trunk@53834 c570f23f-e606-0410-a88d-b1316a301751
25 files changed, 203 insertions, 129 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua b/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua index 2c244c1ea57..03521ce612e 100644 --- a/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua +++ b/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua @@ -25,7 +25,7 @@ for those people who are interested. --]] -- Version information -release_date = "2020-02-03" +release_date = "2020-02-17" -- File operations are aided by the LuaFileSystem module local lfs = require("lfs") diff --git a/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-config-updmap.pl b/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-config-updmap.pl index 230b0a9a029..541c4329a7a 100755 --- a/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-config-updmap.pl +++ b/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-config-updmap.pl @@ -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 Getopt::Long qw(:config no_autoabbrev ignore_case_always); 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 @@ sub ReadDatabase { 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 @@ sub ReadDatabase { $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 ReadDatabase { 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 gen_mapfile { 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 @@ sub SetupMapFile { 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"; diff --git a/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-fontmap-creator.pl b/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-fontmap-creator.pl index dd8e72970dc..0189360e236 100755 --- a/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-fontmap-creator.pl +++ b/Build/source/texk/texlive/linked_scripts/ptex-fontmaps/kanji-fontmap-creator.pl @@ -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_help = 0; my $opt_version = 0; my $prg = "kanji-fontmap-creator"; -my $version = "20190506.0"; +my $version = "20200217.0"; # # global vars configuring operation diff --git a/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl b/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl index a7dd9c05ced..76113849bdc 100755 --- a/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl +++ b/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl @@ -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 @@ sub action_option { $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 @@ sub setup_one_remotetlpdb { 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 @@ END_NO_INTERNET $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 @@ Synonym for L</info>. =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 @@ saved in the TLPDB with a short description and the C<key> used for 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 @@ Possible values for I<key> are (run C<tlmgr option showall> for 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 @@ be used as a synonym for C<repository>.) 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 @@ user installations. =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,14 +9983,13 @@ regardless of any setting. =back - =head1 AUTHORS AND COPYRIGHT This script and its documentation were written for the TeX Live 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 diff --git a/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl b/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl index 66476199bb1..4ddc53509ea 100755 --- a/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl +++ b/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl @@ -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 @@ proc do_debug {s} { 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 @@ proc maketemp {ext} { # 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 @@ proc initialize {} { 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]] diff --git a/Master/texmf-dist/doc/latex/l3build/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3build/CHANGELOG.md index 1c54b0044e6..8b1ddb26ee9 100644 --- a/Master/texmf-dist/doc/latex/l3build/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/l3build/CHANGELOG.md @@ -7,6 +7,19 @@ this project uses date-based 'snapshot' version identifiers. ## [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 @@ this project uses date-based 'snapshot' version identifiers. - 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 diff --git a/Master/texmf-dist/doc/latex/l3build/README.md b/Master/texmf-dist/doc/latex/l3build/README.md index 4ff2f712d09..80c039a8138 100644 --- a/Master/texmf-dist/doc/latex/l3build/README.md +++ b/Master/texmf-dist/doc/latex/l3build/README.md @@ -1,7 +1,7 @@ l3build: a testing and building system for LaTeX3 ================================================= -Release 2020-02-03 +Release 2020-02-17 Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3build/l3build.pdf b/Master/texmf-dist/doc/latex/l3build/l3build.pdf Binary files differindex 271bfb6bebc..2eaeda6f107 100644 --- a/Master/texmf-dist/doc/latex/l3build/l3build.pdf +++ b/Master/texmf-dist/doc/latex/l3build/l3build.pdf diff --git a/Master/texmf-dist/doc/man/man1/l3build.1 b/Master/texmf-dist/doc/man/man1/l3build.1 index e40861b50d1..f7715583860 100644 --- a/Master/texmf-dist/doc/man/man1/l3build.1 +++ b/Master/texmf-dist/doc/man/man1/l3build.1 @@ -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 diff --git a/Master/texmf-dist/doc/man/man1/l3build.man1.pdf b/Master/texmf-dist/doc/man/man1/l3build.man1.pdf Binary files differindex 2b059601745..238eaa25a6b 100644 --- a/Master/texmf-dist/doc/man/man1/l3build.man1.pdf +++ b/Master/texmf-dist/doc/man/man1/l3build.man1.pdf diff --git a/Master/texmf-dist/scripts/l3build/l3build-arguments.lua b/Master/texmf-dist/scripts/l3build/l3build-arguments.lua index cbf68c6254a..aa2f086d616 100644 --- a/Master/texmf-dist/scripts/l3build/l3build-arguments.lua +++ b/Master/texmf-dist/scripts/l3build/l3build-arguments.lua @@ -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 @@ option_list = }, help = { + desc = "Print this message and exit", short = "h", type = "boolean" }, @@ -147,6 +148,11 @@ option_list = { desc = "Location of user texmf tree", type = "string" + }, + version = + { + desc = "Print version information and exit", + type = "boolean" } } diff --git a/Master/texmf-dist/scripts/l3build/l3build-aux.lua b/Master/texmf-dist/scripts/l3build/l3build-aux.lua index 2146d9a1424..8fa4b0cd82c 100644 --- a/Master/texmf-dist/scripts/l3build/l3build-aux.lua +++ b/Master/texmf-dist/scripts/l3build/l3build-aux.lua @@ -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 diff --git a/Master/texmf-dist/scripts/l3build/l3build-check.lua b/Master/texmf-dist/scripts/l3build/l3build-check.lua index 8bafe0591c0..17e63217871 100644 --- a/Master/texmf-dist/scripts/l3build/l3build-check.lua +++ b/Master/texmf-dist/scripts/l3build/l3build-check.lua @@ -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 @@ local function normalize_log(content,engine,errlevels) 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 diff --git a/Master/texmf-dist/scripts/l3build/l3build-ctan.lua b/Master/texmf-dist/scripts/l3build/l3build-ctan.lua index 09b10e0ecad..df1daf97287 100644 --- a/Master/texmf-dist/scripts/l3build/l3build-ctan.lua +++ b/Master/texmf-dist/scripts/l3build/l3build-ctan.lua @@ -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 @@ function copyctan() 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 @@ function ctan() 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 diff --git a/Master/texmf-dist/scripts/l3build/l3build-help.lua b/Master/texmf-dist/scripts/l3build/l3build-help.lua index 8c3877595fc..055fc1a9186 100644 --- a/Master/texmf-dist/scripts/l3build/l3build-help.lua +++ b/Master/texmf-dist/scripts/l3build/l3build-help.lua @@ -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 @@ function version() 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 @@ function help() 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 @@ function help() 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 diff --git a/Master/texmf-dist/scripts/l3build/l3build-manifest-setup.lua b/Master/texmf-dist/scripts/l3build/l3build-manifest-setup.lua index fb46eb1d369..26bf1ca008a 100644 --- a/Master/texmf-dist/scripts/l3build/l3build-manifest-setup.lua +++ b/Master/texmf-dist/scripts/l3build/l3build-manifest-setup.lua @@ -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 diff --git a/Master/texmf-dist/scripts/l3build/l3build-manifest.lua b/Master/texmf-dist/scripts/l3build/l3build-manifest.lua index 3b899d55fd8..dc5138952c8 100644 --- a/Master/texmf-dist/scripts/l3build/l3build-manifest.lua +++ b/Master/texmf-dist/scripts/l3build/l3build-manifest.lua @@ -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 diff --git a/Master/texmf-dist/scripts/l3build/l3build-stdmain.lua b/Master/texmf-dist/scripts/l3build/l3build-stdmain.lua index 9123349ee08..10303b71f71 100644 --- a/Master/texmf-dist/scripts/l3build/l3build-stdmain.lua +++ b/Master/texmf-dist/scripts/l3build/l3build-stdmain.lua @@ -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 diff --git a/Master/texmf-dist/scripts/l3build/l3build-tagging.lua b/Master/texmf-dist/scripts/l3build/l3build-tagging.lua index 2c0c1641a40..a00180b34cb 100644 --- a/Master/texmf-dist/scripts/l3build/l3build-tagging.lua +++ b/Master/texmf-dist/scripts/l3build/l3build-tagging.lua @@ -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 diff --git a/Master/texmf-dist/scripts/l3build/l3build-typesetting.lua b/Master/texmf-dist/scripts/l3build/l3build-typesetting.lua index fe6a6a58dcc..b76edd913b2 100644 --- a/Master/texmf-dist/scripts/l3build/l3build-typesetting.lua +++ b/Master/texmf-dist/scripts/l3build/l3build-typesetting.lua @@ -127,9 +127,10 @@ function makeindex(name,dir,inext,outext,logext,style) 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 function typesetpdf(file,dir) 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 @@ local function typesetpdf(file,dir) 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 @@ typeset = typeset or function(file,dir) 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 diff --git a/Master/texmf-dist/scripts/l3build/l3build-unpack.lua b/Master/texmf-dist/scripts/l3build/l3build-unpack.lua index 89bbfaa17f6..47aaca7ca72 100644 --- a/Master/texmf-dist/scripts/l3build/l3build-unpack.lua +++ b/Master/texmf-dist/scripts/l3build/l3build-unpack.lua @@ -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 diff --git a/Master/texmf-dist/scripts/l3build/l3build-upload.lua b/Master/texmf-dist/scripts/l3build/l3build-upload.lua index 257cce61a37..fc25d5d6ac0 100644 --- a/Master/texmf-dist/scripts/l3build/l3build-upload.lua +++ b/Master/texmf-dist/scripts/l3build/l3build-upload.lua @@ -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 diff --git a/Master/texmf-dist/scripts/l3build/l3build-variables.lua b/Master/texmf-dist/scripts/l3build/l3build-variables.lua index 06cfdd34aff..e69eb5aff1c 100644 --- a/Master/texmf-dist/scripts/l3build/l3build-variables.lua +++ b/Master/texmf-dist/scripts/l3build/l3build-variables.lua @@ -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 @@ maindir = maindir or currentdir -- 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 @@ end -- 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" diff --git a/Master/texmf-dist/scripts/l3build/l3build.lua b/Master/texmf-dist/scripts/l3build/l3build.lua index 2c244c1ea57..03521ce612e 100755 --- a/Master/texmf-dist/scripts/l3build/l3build.lua +++ b/Master/texmf-dist/scripts/l3build/l3build.lua @@ -25,7 +25,7 @@ for those people who are interested. --]] -- Version information -release_date = "2020-02-03" +release_date = "2020-02-17" -- File operations are aided by the LuaFileSystem module local lfs = require("lfs") diff --git a/Master/texmf-dist/source/latex/l3build/l3build.dtx b/Master/texmf-dist/source/latex/l3build/l3build.dtx index b2a981434fd..f00774cada1 100644 --- a/Master/texmf-dist/source/latex/l3build/l3build.dtx +++ b/Master/texmf-dist/source/latex/l3build/l3build.dtx @@ -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()} |