texlive[53216] Master/tlpkg: allow global_tlpvars to be set in

commits+karl at tug.org commits+karl at tug.org
Mon Dec 23 21:32:40 CET 2019


Revision: 53216
          http://tug.org/svn/texlive?view=revision&revision=53216
Author:   karl
Date:     2019-12-23 21:32:38 +0100 (Mon, 23 Dec 2019)
Log Message:
-----------
allow global_tlpvars to be set in autopatterns and used across other packages; define globals for common dependencies; doc updates

Modified Paths:
--------------
    trunk/Master/tlpkg/TeXLive/TLPSRC.pm
    trunk/Master/tlpkg/TeXLive/TLUtils.pm
    trunk/Master/tlpkg/tlpsrc/00texlive.autopatterns.tlpsrc
    trunk/Master/tlpkg/tlpsrc/eplain.tlpsrc
    trunk/Master/tlpkg/tlpsrc/latex-bin-dev.tlpsrc
    trunk/Master/tlpkg/tlpsrc/latex-bin.tlpsrc
    trunk/Master/tlpkg/tlpsrc/luahbtex.tlpsrc
    trunk/Master/tlpkg/tlpsrc/luajittex.tlpsrc
    trunk/Master/tlpkg/tlpsrc/luatex.tlpsrc
    trunk/Master/tlpkg/tlpsrc/mflua.tlpsrc
    trunk/Master/tlpkg/tlpsrc/platex.tlpsrc
    trunk/Master/tlpkg/tlpsrc/uplatex.tlpsrc
    trunk/Master/tlpkg/tlpsrc/xmltex.tlpsrc

Modified: trunk/Master/tlpkg/TeXLive/TLPSRC.pm
===================================================================
--- trunk/Master/tlpkg/TeXLive/TLPSRC.pm	2019-12-23 00:54:28 UTC (rev 53215)
+++ trunk/Master/tlpkg/TeXLive/TLPSRC.pm	2019-12-23 20:32:38 UTC (rev 53216)
@@ -1,6 +1,6 @@
 # $Id$
 # TeXLive::TLPSRC.pm - module for handling tlpsrc files
-# Copyright 2007-2018 Norbert Preining
+# Copyright 2007-2019 Norbert Preining
 # This file is licensed under the GNU General Public License version 2
 # or any later version.
 
@@ -16,6 +16,35 @@
 my $_modulerevision = ($svnrev =~ m/: ([0-9]+) /) ? $1 : "unknown";
 sub module_revision { return $_modulerevision; }
 
+=pod
+
+=head1 NAME
+
+C<TeXLive::TLPSRC> -- TeX Live Package Source module
+
+=head1 SYNOPSIS
+
+  use TeXLive::TLPSRC;
+
+  my $tlpsrc = TeXLive::TLPSRC->new(name => "foobar");
+  $tlpsrc->from_file("/some/tlpsrc/package.tlpsrc");
+  $tlpsrc->from_file("package");
+  $tlpsrc->writeout;
+  $tlpsrc->writeout(\*FILEHANDLE);
+
+=head1 DESCRIPTION
+
+The C<TeXLive::TLPSRC> module handles TeX Live Package Source
+(C<.tlpsrc>) files, which contain all (and only) the information which
+cannot be automatically derived from other sources, notably the TeX Live
+directory tree and the TeX Catalogue.  In other words, C<.tlpsrc> files
+are hand-maintained.
+
+Often they are empty, when all information can be derived from the
+package name, which is (by default) the base name of the C<.tlpsrc> file.
+
+=cut
+
 my $_tmp; # sorry
 my %autopatterns;  # computed once internally
 
@@ -114,10 +143,12 @@
       # check that no variables remain unexpanded, or rather, for any
       # remaining $ (which we don't otherwise allow in tlpsrc files, so
       # should never occur) ... except for ${ARCH} which we specially
-      # expand in TLTREE.pm. (Sigh: we distribute one file dvi$pdf.bat,
+      # expand in TLTREE.pm, and ${global_*} which need to be defined in
+      # 00texlive.autopatterns.tlpsrc. (We distribute one file dvi$pdf.bat,
       # but fortunately it is matched by a directory.)
       # 
       (my $testline = $line) =~ s,\$\{ARCH\},,g;
+      $testline =~ s,\$\{global_[^}]*\},,g;
       $testline =~ /\$/
         && die "$srcfile:$lineno: variable undefined or syntax error: $line\n";
       #debug: warn "new line $line, from $origline\n" if $origline ne $line;
@@ -193,6 +224,7 @@
     }
   }
   $self->_srcfile($srcfile);
+  $self->_tlpvars(\%tlpvars);
   if ($name =~ m/^[[:space:]]*$/) {
     die "Cannot deduce name from file argument and name tag not found";
   }
@@ -267,8 +299,21 @@
 sub make_tlpobj {
   my ($self,$tltree,$autopattern_root) = @_;
   my %allpatterns = &find_default_patterns($autopattern_root);
+  my %global_tlpvars = %{$allpatterns{'tlpvars'}};
   my $category_patterns = $allpatterns{$self->category};
 
+  # tlpsrc tlpvars are already applied during tlpsrc read in time
+  # now apply the global tlpvars from 00texlive.autopatterns.tlpsrc
+  # update the execute and depend strings
+  my @exes = $self->executes;
+  my @deps = $self->depends;
+  for my $key (keys %global_tlpvars) {
+    s/\$\{\Q$key\E\}/$global_tlpvars{$key}/g for @deps;
+    s/\$\{\Q$key\E\}/$global_tlpvars{$key}/g for @exes;
+  }
+  $self->depends(@deps);
+  $self->executes(@exes);
+
   my $tlp = TeXLive::TLPOBJ->new;
   $tlp->name($self->name);
   $tlp->category($self->category);
@@ -503,12 +548,22 @@
 }
 
 

-# get the default patterns for all categories from an external file,
-# return hash with keys being the categories (Package, Collection, etc.)
+# =item C<find_default_patterns($tlroot)>
+# 
+# Get the default patterns for all categories from an external file.
+# 
+# Return hash with keys being the categories (Package, Collection, etc.)
 # and values being refs to another hash.  The subhash's keys are the
 # file types (run bin doc ...) with values being refs to an array of
 # patterns for that type.
 # 
+# The returned hash has an additional key C<tlpvars> for global tlpsrc
+# variables, which can be used in any C<.tlpsrc> files. The names of these
+# variables all start with C<global_>.
+# 
+# =cut 
+# (all doc at bottom, let's not rewrite now.)
+
 sub find_default_patterns {
   my ($tlroot) = @_;
   # %autopatterns is global.
@@ -560,6 +615,18 @@
     }
   }
   
+  # check defined variables to ensure their names start with "global_".
+  my %gvars = %{$tlsrc->_tlpvars};
+  for my $v (keys %gvars) {
+    if ($v !~ /^global_[-_a-zA-Z0-9]+$/) {
+      tlwarn("$apfile: variable does not start with global_: $v\n")
+        unless $v eq "PKGNAME";
+        # the auto-defined PKGNAME is not expected to be global.
+      delete $gvars{$v};
+    }
+  } # we'll usually unnecessarily create a second hash, but so what.
+  $autopatterns{'tlpvars'} = \%gvars;
+
   return %autopatterns;
 }
 
@@ -571,6 +638,11 @@
   if (@_) { $self->{'_srcfile'} = shift }
   return $self->{'_srcfile'};
 }
+sub _tlpvars {
+  my $self = shift;
+  if (@_) { $self->{'_tlpvars'} = shift; }
+  return $self->{'_tlpvars'};
+}
 sub name {
   my $self = shift;
   if (@_) { $self->{'name'} = shift }
@@ -652,28 +724,6 @@
 __END__
 

 
-=head1 NAME
-
-C<TeXLive::TLPSRC> -- TeX Live Package Source module
-
-=head1 SYNOPSIS
-
-  use TeXLive::TLPSRC;
-
-  my $tlpsrc = TeXLive::TLPSRC->new(name => "foobar");
-  $tlpsrc->from_file("/some/tlpsrc/package.tlpsrc");
-  $tlpsrc->from_file("package");
-  $tlpsrc->writeout;
-  $tlpsrc->writeout(\*FILEHANDLE);
-
-=head1 DESCRIPTION
-
-The C<TeXLive::TLPSRC> module handles TeX Live Package Source
-(C<.tlpsrc>) files, which contain all (and only) the information which
-cannot be automatically derived from other sources, notably the TeX Live
-directory tree and the TeX Catalogue.  In other words, C<.tlpsrc> files
-are hand-maintained.
-
 =head1 FILE SPECIFICATION
 
 A C<tlpsrc> file consists of lines of the form:
@@ -680,9 +730,9 @@
 
 I<key> I<value>
 
-where I<key> can be C<name>, C<category>, C<shortdesc>, C<longdesc>,
-C<catalogue>, C<runpattern>, C<srcpattern>, C<docpattern>, C<binpattern>,
-C<execute>, C<postaction>, or C<depend>.
+where I<key> can be one of: C<name> C<category> C<catalogue>
+C<shortdesc> C<longdesc> C<depend> C<execute> C<postaction> C<tlpsetvar>
+C<runpattern> C<srcpattern> C<docpattern> C<binpattern>.
 
 Continuation lines are supported via a trailing backslash.  That is, if
 the C<.tlpsrc> file contains two physical lines like this:
@@ -697,18 +747,18 @@
 
 Blank lines are ignored.
 
-The meaning of the I<key>s:
+The I<key>s are described in the following sections.
 
-=over 4
+=head2 C<name>
 
-=item C<name>
-
 identifies the package; C<value> must consist only of C<[-_a-zA-Z0-9]>,
-i.e., with what Perl considers a C<\w>. 
+i.e., with what Perl considers a C<\w>. It is optional; if not
+specified, the name of the C<.tlpsrc> file will be used (with the
+C<.tlpsrc> removed).
 
 There are three exceptions to this rule:
 
-=over 8
+=over 4
 
 =item B<name.ARCH>
 
@@ -718,6 +768,15 @@
 the necessary binaries.  Second, one can add 'one-arch-only' packages,
 often used to deal with Windows peculiarities.
 
+=item B<texlive>I<some.thing>
+
+(notice the dot in the package name) These packages are core TeX Live
+packages. They are treated as usual packages in almost all respects, but
+have that extra dot to be sure they will never clash with any package
+that can possibly appear on CTAN. The only such package currently is
+C<texlive.infra>, which contains L<tlmgr> and other basic infrastructure
+functionality.
+
 =item B<00texlive>I<something>
 
 These packages are used for internal operation and storage containers
@@ -769,57 +828,53 @@
 
 =back
 
-=item B<texlive>I<some.thing>
-
-(notice the dot in the package name) These packages are central TeX Live
-internal packages and are treated as usual packages in (more or less)
-all respects, but have that extra dot to be sure they will never clash
-with any package that can possibly appear on CTAN.  The only such
-package currently is C<texlive.infra>, which contains L<tlmgr> and other
-basic infrastructure functionality.
-
 =back
 
-=item C<category>
+=head2 C<category>
 
 identifies the category into which this package belongs. This determines
-the default patterns applied.  Possible categories are defined in
+the default patterns applied. Possible categories are defined in
 C<TeXLive::TLConfig>, currently C<Collection>, C<Scheme>, C<TLCore>,
-C<Package>, C<ConTeXt>.  Most packages will fall into the C<Package>
-category.
+C<Package>, C<ConTeXt>. Most packages fall into the C<Package> category,
+and this is the default if not specified.
 
-=item C<catalogue>
+=head2 C<catalogue>
 
 identifies the name under which this package can be found in the TeX
-Catalogue.
+Catalogue. If not specified, the package name is used.
 
-=item C<shortdesc>
+=head2 C<shortdesc>
 
-gives a one line description of the package. Subsequent entries will
-overwrite the former ones. In TeX Live primarily used for collections and
-schemes.
+gives a one line description of the package. Later lines overwrite
+earlier, so there's no use in giving it more than once. If not
+specified, the default is taken from the TeX Catalogue, which suffices
+for almost all normal packages. Thus, in TeX Live, primarily used for
+collections and schemes.
 
-=item C<longdesc>
+=head2 C<longdesc>
 
-gives a long description of the package. Susequent entries are
-concatenated into a long text. In TeX Live only used for collections and
-schemes.
+gives a long description of the package. Later lines are appended to
+earlier ones. As with C<shortdesc>, if not specified, the default is
+taken from the TeX Catalogue, which suffices for almost all normal
+packages.
 
-=item C<depend>
+=head2 C<depend>
 
-gives the list of dependencies, which are just other package names.
+specifies the list of dependencies, which are just other package names.
 All the C<depend> lines contribute to the dependencies of the package.
-Examples:
+For example, C<latex.tlpsrc> contains (among others):
   
-  depend cm
-  depend plain
-  depend collection-basic
+  depend latexconfig
+  depend latex-fonts
+  depend pdftex
 
-=item C<execute>
+to ensure these packages are installed if the C<latex> package is.
 
-gives a free form entry of install time jobs to be executed. Currently
-the following possible values are understood by the installers:
+=head2 C<execute>
 
+specifies an install-time action to be executed. The following actions
+are supported:
+
 =over 4
 
 =item C<execute addMap> I<font>C<.map>
@@ -858,15 +913,15 @@
 
 =back
 
-=item C<postaction>
+=head2 C<postaction>
 
-gives a free from entry of post install and removal actions to be
+specifies a post-install or post-removal action to be
 executed. The difference to the C<execute> statement is that 
 C<postaction> is concerned with system integration, i.e., adjusting
 things outside the installation directory, while C<execute> touches
 only things within the installation.
 
-Currently the following C<postaction>s are understood:
+The following actions are supported:
 
 =over 4
 
@@ -873,8 +928,7 @@
 =item C<postaction shortcut name=I<name> type=menu|desktop icon=I<path> cmd=I<cmd> args=I<args> hide=0|1>
 
 On W32 creates a shortcut either in the main TeX Live menu or on the
-desktop. Please see the documentation of TeXLive::TLWinGoo for details
-on the parameters.
+desktop. See the documentation of L<TeXLive::TLWinGoo> for details.
 
 =item C<postaction filetype name=I<name> cmd=I<cmd>>
 
@@ -895,19 +949,44 @@
 
 =back
 
-=item C<tlpsetvar> I<var> I<val>
+=head2 C<tlpsetvar> I<var> I<val>
 
-sets variable I<var> to I<val>, for use within the current C<.tlpsrc>
-only.  Order matters.  The variable can be expanded with
-C<${>I<var>C<}> (after it is defined).  Characters allowed in the I<var>
-name are C<-_a-zA-Z0-9>.
+sets variable I<var> to I<val>. Order matters: the variable can be
+expanded with C<${>I<var>C<}>, only after it is defined. Characters
+allowed in the I<var> name are C<-_a-zA-Z0-9>.
 
-=item C<(src|run|doc|bin)pattern> I<pattern>
+For example, the Xindy program is not supported on all platforms, so we
+define a variable:
 
-adds a pattern (next section) to the respective list of patterns.
+  tlpsetvar no_xindy_platforms i386-solaris,x86_64-linuxmusl,x86_64-solaris
 
-=back
+that can then by used in each C<binpattern> needed:
 
+  binpattern f/!${no_xindy_platforms} bin/${ARCH}/texindy
+  binpattern f/!${no_xindy_platforms} bin/${ARCH}/tex2xindy
+  ...
+
+(The C<binpattern> details are below; here, just notice the variable
+definition and expansion.)
+
+Ordinarily, variables can be used only within the C<.tlpsrc> file where
+they are defined. There is one exception: global tlpsrc variables can be
+defined in the C<00texlive.autopatterns.tlpsrc> file (mentioned below);
+their names must start with C<global_>, and can only be used in
+C<depend> and C<execute> directives, or another C<tlpsetvar>. For
+example, our C<autopatterns.tlpsrc> defines:
+
+  tlpsetvar global_latex_deps babel,cm,hyphen-base,latex-fonts
+
+And then any other C<.tlpsrc> files can use it as
+C<${global_latex_deps}>; in this case, C<latex-bin.tlpsrc>,
+C<latex-bin-dev.tlpsrc>, C<platex.tlpsrc>, and others (in C<execute
+AddFormat> directives).
+
+=head2 C<(src|run|doc|bin)pattern> I<pattern>
+
+adds I<pattern> (next section) to the respective list of patterns.
+
 =head1 PATTERNS
 
 Patterns specify which files are to be included into a C<tlpobj> at
@@ -930,12 +1009,24 @@
 
 includes all files which match C<path> where B<only> the last component
 of C<path> can contain the usual glob characters C<*> and C<?> (but no
-others!).
+others!). The special string C<ignore> for I<path> means to ignore this
+pattern (used to eliminate the auto-pattern matching).
 
 =item C<d> I<path>
 
 includes all the files in and below the directory specified as C<path>.
 
+=item C<r> I<regexp>
+
+includes all files matching the regexp C</^regexp$/>.
+
+=item C<a> I<name1> [<name2> ...]
+
+includes auto-generated patterns for each I<nameN> as if the package
+itself would be named I<nameN>. That is useful if a package (such as
+C<venturisadf>) contains top-level directories named after different
+fonts.
+
 =item C<t> I<word1 ... wordN wordL>
 
 includes all the files in and below all directories of the form
@@ -944,7 +1035,9 @@
 
 i.e., all the first words but the last form the prefix of the path, then
 there can be an arbitrary number of subdirectories, followed by C<wordL>
-as the final directory.  A real life example from C<omega.tlpsrc>:
+as the final directory. This is primarily used in
+C<00texlive.autopatterns.tlpsrc> in a custom way, but here is the one
+real life example from a standard package, C<omega.tlpsrc>:
 
   runpattern t texmf-dist fonts omega
 
@@ -955,24 +1048,12 @@
   texmf-dist/fonts/tfm/public/omega
   texmf-dist/fonts/type1/public/omega
 
-=item C<r> I<regexp>
-
-includes all files matching the regexp C</^regexp$/>
-
-=item C<a> I<name1> [<name2> ...]
-
-includes auto generated patterns for each I<nameN> as if the package 
-itself would be named I<nameN>. That is useful if a package (like venturisadf)
-contains toplevel directories named after different fonts.
-
 =back
 
 =head2 Special patterns
 
-=over 4
+=head3 Prefix characters: C<+> and C<!>
 
-=item PREFIX
-
 If the C<PREFIX> contains the symbol C<!> the meaning of the pattern is
 reversed, i.e., files matching this pattern are removed from the list of
 included files.
@@ -986,17 +1067,19 @@
 
   docpattern +!d texmf-dist/doc/latex/tufte-latex/graphics
 
-so that this subdirectory of the C<tufte-latex> package that happens to
-be named `graphics' is not mistakenly included in the C<graphics>
+so that the subdirectory of the C<tufte-latex> package that happens to
+be named "graphics" is not mistakenly included in the C<graphics>
 package.
 
-=item Auto-generated patterns
+=head2 Auto-generated patterns (C<00texlive.autopatterns>)
 
-If a given pattern section is empty or B<all> the provided patterns have
-the prefix C<+> (e.g., C<+f ...>), then the following patterns, listed
-by type are I<automatically> added at expansion time. Note that this list
-is not definitive, but is taken from the patterns of tlpsrc files
-named C<00texlive.autopatterns.>I<Category>C<.tlpsrc>.
+If a given pattern section is empty or I<all> the provided patterns have
+the prefix C<+> (e.g., C<+f ...>), then patterns such as the following,
+listed by type, are I<automatically> added at expansion time. The list
+here contains examples, rather than being definitive; the added patterns
+are actually taken from C<00texlive.autopatterns.tlpsrc>. (That file
+also defines any global tlpsrc variables, as described above under
+L</tlpsetvar>).
 
 =over 4
 
@@ -1004,11 +1087,11 @@
 
 For category C<Package>:
 
-  t texmf-dist topdir $name
+  t texmf-dist I<topdir> %NAME%
 
-where C<topdir> is one of: C<bibtex>, C<context>, C<dvips>, C<fonts>,
-C<makeindex>, C<metafont>, C<metapost>, C<mft>, C<omega>, C<scripts>,
-C<tex>, C<vtex>.
+where C<%NAME%> means the current package name, and I<topdir> is one of:
+C<bibtex> C<context> C<dvips> C<fonts> C<makeindex> C<metafont>
+C<metapost> C<mft> C<omega> C<scripts> C<tex>.
 
 For category C<ConTeXt>:
 
@@ -1020,32 +1103,36 @@
 C<context-> is removed. E.g., if the package is called C<context-foobar>
 the replacement in the above rules will be C<foobar>.)
 
-For other categories B<no> patterns are automatically added to the 
+For other categories I<no> patterns are automatically added to the 
 list of C<runpattern>s.
 
 =item C<docpattern>
 
+for category C<TLCore>:
+
+  t texmf-dist doc %NAME%
+  f texmf-dist/doc/man/man1/%NAME%.*
+
 for category C<Package>:
 
-  t texmf-dist doc $name
+  t texmf-dist doc %NAME%
+  f texmf-dist/doc/man/man1/%NAME%.*
 
 for category C<ConTeXt>:
 
   d texmf-dist/doc/context/third/%context-:NAME%
 
-(see above for the C<NAME> construct)
-  
 =item C<srcpattern>
 
 for category C<Package>:
 
-  t texmf-dist source $name
+  t texmf-dist source %NAME%
 
 for category C<ConTeXt>:
 
   d texmf-dist/source/context/third/%context-:NAME%
 
-(see above for the C<NAME> construct)
+(see above for the C<$NAME%> construct)
 
 =item C<binpattern>
 
@@ -1053,10 +1140,10 @@
 
 =back
 
-=item Special treatment of binpatterns
+=head3 Special treatment of binpatterns
 
 The binpatterns have to deal with all the different architectures. To
-ease the writing of patterns, we have the following:
+ease the writing of patterns, we have the following features:
 
 =over 4
 
@@ -1110,9 +1197,6 @@
 
 =back
 
-=back
-
-
 =head1 MEMBER ACCESS FUNCTIONS
 
 For any of the above I<key>s a function
@@ -1167,21 +1251,20 @@
 
 creates a C<TLPOBJ> object from a C<TLPSRC> object and a C<TLTREE> object.
 This function does the necessary work to expand the manual data and
-enrich it which the actual content from C<$tltree> to a C<TLPOBJ> object.
+enrich it with the content from C<$tltree> to a C<TLPOBJ> object.
 
 =back
 
 =head1 SEE ALSO
 
-The modules L<TeXLive::TLConfig>, L<TeXLive::TLUtils>, L<TeXLive::TLPOBJ>, 
-L<TeXLive::TLPDB>, L<TeXLive::TLTREE>.
+The other modules in C<Master/tlpkg/TeXLive/> (L<TeXLive::TLConfig> and
+the rest), and the scripts in C<Master/tlpkg/bin/> (especially
+C<tl-update-tlpdb>), the documentation in C<Master/tlpkg/doc/>, etc.
 
-The programs L<tlpsrc2tlpdb> and L<tlpsrc2tlpobj>.
-
 =head1 AUTHORS AND COPYRIGHT
 
 This script and its documentation were written for the TeX Live
-distribution (L<http://tug.org/texlive>) and both are licensed under the
+distribution (L<https://tug.org/texlive>) and both are licensed under the
 GNU General Public License Version 2 or later.
 
 =cut

Modified: trunk/Master/tlpkg/TeXLive/TLUtils.pm
===================================================================
--- trunk/Master/tlpkg/TeXLive/TLUtils.pm	2019-12-23 00:54:28 UTC (rev 53215)
+++ trunk/Master/tlpkg/TeXLive/TLUtils.pm	2019-12-23 20:32:38 UTC (rev 53216)
@@ -1335,21 +1335,25 @@
 
 =item C<removed_dirs(@files)>
 
-returns all the directories from which all content will be removed
+Returns all the directories from which all content will be removed.
 
+Here is the idea:
+
+=over 4
+
+=item create a hashes by_dir listing all files that should be removed
+   by directory, i.e., key = dir, value is list of files
+
+=item for each of the dirs (keys of by_dir and ordered deepest first)
+   check that all actually contained files are removed
+   and all the contained dirs are in the removal list. If this is the
+   case put that directory into the removal list
+
+=item return this removal list
+
+=back
 =cut
 
-# return all the directories from which all content will be removed
-#
-# idea:
-# - create a hashes by_dir listing all files that should be removed
-#   by directory, i.e., key = dir, value is list of files
-# - for each of the dirs (keys of by_dir and ordered deepest first)
-#   check that all actually contained files are removed
-#   and all the contained dirs are in the removal list. If this is the
-#   case put that directory into the removal list
-# - return this removal list
-#
 sub removed_dirs {
   my (@files) = @_;
   my %removed_dirs;

Modified: trunk/Master/tlpkg/tlpsrc/00texlive.autopatterns.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/00texlive.autopatterns.tlpsrc	2019-12-23 00:54:28 UTC (rev 53215)
+++ trunk/Master/tlpkg/tlpsrc/00texlive.autopatterns.tlpsrc	2019-12-23 20:32:38 UTC (rev 53216)
@@ -1,12 +1,32 @@
 category TLCore
 shortdesc defines per-category patterns used by tlpsrc-to-tlpdb conversion
-longdesc As can be seen, the syntax here is slightly different than a
+longdesc As can be seen, the syntax here is rather different from a
 longdesc normal tlpsrc file: an additional first argument specifies the
 longdesc category for this pattern, and a final %NAME% is replaced with
-longdesc the package.  Defining new categories merely by adding them
-longdesc here is not currently implemented, though it could be done if
-longdesc it proves useful.  See the TeXLive::TLPSRC documentation for more.
+longdesc the package.
+longdesc 
+longdesc In addition, global TLPSRC variables can be defined, which
+longdesc can be used in any .tlpsrc variable. Their names must start
+longdesc with "global_".
+longdesc 
+longdesc Defining new categories merely by adding them here is not
+longdesc currently implemented, though it could be done if useful.
+longdesc 
+longdesc See the TeXLive::TLPSRC documentation for more.
 
+# These packages are used by all LaTeX variants.
+# After the TL 2020 release, there should be more commonalities between
+# latex-bin and latex-bin-dev that we can add here.
+tlpsetvar global_latex_deps babel,cm,hyphen-base,latex-fonts
+#
+# These packages are used by all LuaTeX variants - luatex, luajittex, luahbtex.
+tlpsetvar global_luatex_deps cm,etex,hyphen-base,knuth-lib,plain,\
+tex-ini-files,unicode-data
+#
+# It would be ideal to be able to specify the non-jit platforms here,
+# but it's not crucial, so we haven't implemented ${global_} expansion
+# in binpatterns.
+
 # auto patterns for category Package
 runpattern Package t texmf-dist bibtex %NAME%
 runpattern Package t texmf-dist context %NAME%
@@ -22,7 +42,9 @@
 runpattern Package d texmf-dist/tex/context/third/%NAME%
 runpattern Package d texmf-dist/fonts/misc/xetex/fontmapping/%NAME%
 runpattern Package d texmf-dist/scripts/context/lua/third/%NAME%
+#
 srcpattern Package t texmf-dist source %NAME%
+#
 docpattern Package t texmf-dist doc %NAME%
 docpattern Package f texmf-dist/doc/man/man1/%NAME%.*
 docpattern Package d texmf-dist/doc/context/third/%NAME%
@@ -43,5 +65,7 @@
 runpattern ConTeXt d texmf-dist/tex/context/third/%context-:NAME%
 runpattern ConTeXt d texmf-dist/scripts/context/lua/third/%context-:NAME%
 runpattern ConTeXt d texmf-dist/metapost/context/third/%context-:NAME%
+#
 docpattern ConTeXt d texmf-dist/doc/context/third/%context-:NAME%
+#
 srcpattern ConTeXt d texmf-dist/source/context/third/%context-:NAME%

Modified: trunk/Master/tlpkg/tlpsrc/eplain.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/eplain.tlpsrc	2019-12-23 00:54:28 UTC (rev 53215)
+++ trunk/Master/tlpkg/tlpsrc/eplain.tlpsrc	2019-12-23 20:32:38 UTC (rev 53216)
@@ -1,7 +1,9 @@
 depend pdftex
+# although eplain is not at all LaTeX, it loads Babel, 
+# which turns out to be the same core LaTeX packages.
 execute AddFormat name=eplain engine=pdftex patterns=language.dat \
           options="-translate-file=cp227.tcx *eplain.ini" \
-          fmttriggers=babel,cm,dehyph,hyphen-base,knuth-lib,latex-fonts,plain
+          fmttriggers=${global_latex_deps},dehyph,knuth-lib,plain
 docpattern +f texmf-dist/doc/info/eplain.info
 docpattern +f texmf-dist/doc/man/man1/eplain.*
 binpattern f bin/${ARCH}/eplain

Modified: trunk/Master/tlpkg/tlpsrc/latex-bin-dev.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/latex-bin-dev.tlpsrc	2019-12-23 00:54:28 UTC (rev 53215)
+++ trunk/Master/tlpkg/tlpsrc/latex-bin-dev.tlpsrc	2019-12-23 20:32:38 UTC (rev 53216)
@@ -14,8 +14,8 @@
 
 docpattern f texmf-dist/doc/man/man1/*latex-dev.*
 
-# Keep these variables in sync with latex-bin.tlpsrc.
-tlpsetvar fmtcomm babel,cm,hyphen-base,l3kernel,latex-base-dev,latex-fonts,\
+# cf. latex-bin.tlpsrc.
+tlpsetvar fmtcomm ${global_latex_deps},l3kernel,latex-base-dev,\
 tex-ini-files,unicode-data
 #
 tlpsetvar nonluafmtdeps dehyph,latexconfig

Modified: trunk/Master/tlpkg/tlpsrc/latex-bin.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/latex-bin.tlpsrc	2019-12-23 00:54:28 UTC (rev 53215)
+++ trunk/Master/tlpkg/tlpsrc/latex-bin.tlpsrc	2019-12-23 20:32:38 UTC (rev 53216)
@@ -1,12 +1,12 @@
 category TLCore
 shortdesc LaTeX executables and man pages
-#
+
 # we must depend on latex, not the other way around, to ensure that all
 # files are installed before we try to make the formats.
 depend latex
 
-# Keep these variables in sync with latex-bin-dev.tlpsrc.
-tlpsetvar fmtcomm babel,cm,hyphen-base,latex,latex-fonts,tex-ini-files
+# cf. latex-bin-dev.tlpsrc.
+tlpsetvar fmtcomm ${global_latex_deps},latex,tex-ini-files
 tlpsetvar nonluafmtdeps dehyph,latexconfig
 tlpsetvar luafmtdeps unicode-data,luaotfload
 

Modified: trunk/Master/tlpkg/tlpsrc/luahbtex.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/luahbtex.tlpsrc	2019-12-23 00:54:28 UTC (rev 53215)
+++ trunk/Master/tlpkg/tlpsrc/luahbtex.tlpsrc	2019-12-23 20:32:38 UTC (rev 53216)
@@ -1,10 +1,6 @@
 category TLCore
 shortdesc LuaTeX with HarfBuzz library for glyph shaping
 
-# must keep in sync with luatex.tlpsrc.
-tlpsetvar fmtdeps cm,etex,hyphen-base,knuth-lib,plain,tex-ini-files,\
-unicode-data
-
 # Until TL'20, we only have this for auto-built platforms and Windows,
 # via /home/texlive/luahbtmp on tug.
 #
@@ -21,7 +17,7 @@
 execute AddFormat name=luahbtex engine=luahbtex \
   patterns=language.def,language.dat.lua \
   options="luatex.ini" \
-  fmttriggers=${fmtdeps},luatex
+  fmttriggers=${global_luatex_deps},luatex
 
 # can't have luahbtex without luatex.
 depend luatex

Modified: trunk/Master/tlpkg/tlpsrc/luajittex.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/luajittex.tlpsrc	2019-12-23 00:54:28 UTC (rev 53215)
+++ trunk/Master/tlpkg/tlpsrc/luajittex.tlpsrc	2019-12-23 20:32:38 UTC (rev 53216)
@@ -1,11 +1,7 @@
 category TLCore
 shortdesc LuaTeX with just-in-time (jit) compiler
 
-# must keep in sync with luatex.tlpsrc.
-tlpsetvar fmtdeps cm,etex,hyphen-base,knuth-lib,plain,tex-ini-files,\
-unicode-data
-
-# keep in sync with mflua.tlpsrc.
+# must keep in sync with mflua.tlpsrc.
 tlpsetvar no_luajit_platforms x86_64-solaris
 #
 binpattern f/!${no_luajit_platforms} bin/${ARCH}/luajittex
@@ -23,7 +19,7 @@
 # invoked by specifications in TLConfig.pm and tlmgr.pl.
 execute AddFormat name=luajittex engine=luajittex options="luatex.ini" \
   patterns=language.def,language.dat.lua \
-  fmttriggers=${fmtdeps},luatex
+  fmttriggers=${global_luatex_deps},luatex
 
 # can't have luajittex without luatex.
 depend luatex

Modified: trunk/Master/tlpkg/tlpsrc/luatex.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/luatex.tlpsrc	2019-12-23 00:54:28 UTC (rev 53215)
+++ trunk/Master/tlpkg/tlpsrc/luatex.tlpsrc	2019-12-23 20:32:38 UTC (rev 53216)
@@ -1,16 +1,12 @@
 category TLCore
-#
-# keep in sync with luajit.tlpsrc.
-tlpsetvar fmtdeps cm,etex,hyphen-base,knuth-lib,plain,tex-ini-files,\
-unicode-data
-#
+
 execute AddFormat name=luatex engine=luatex options="luatex.ini" \
   patterns=language.def,language.dat.lua \
-  fmttriggers=${fmtdeps}
+  fmttriggers=${global_luatex_deps}
 #
 execute AddFormat name=dviluatex engine=luatex options="dviluatex.ini" \
   patterns=language.def,language.dat.lua \
-  fmttriggers=${fmtdeps}
+  fmttriggers=${global_luatex_deps}
 #
 docpattern d texmf-dist/doc/luatex/base
 docpattern f texmf-dist/doc/man/man1/dviluatex.*

Modified: trunk/Master/tlpkg/tlpsrc/mflua.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/mflua.tlpsrc	2019-12-23 00:54:28 UTC (rev 53215)
+++ trunk/Master/tlpkg/tlpsrc/mflua.tlpsrc	2019-12-23 20:32:38 UTC (rev 53216)
@@ -3,9 +3,11 @@
 longdesc For information on this Lua-enabled Metafont,
 longdesc see, for example: tug.org/TUGboat/tb32-2/tb101scarso.pdf.
 
+# must keep in sync with luatex.tlpsrc.
+tlpsetvar no_luajit_platforms x86_64-solaris
+
+# disabled until there is a user base.
 tlpsetvar fmtdeps luatex,metafont
-#
-# disabled just until rebuilds for start_of_mf.lua are done.
 execute AddFormat name=mflua engine=mflua-nowin options="mf.ini" \
   fmttriggers=${fmtdeps} mode=disabled
 
@@ -15,9 +17,6 @@
 binpattern f bin/${ARCH}/mflua
 binpattern f bin/${ARCH}/mflua-nowin
 
-# keep in sync with luatex.tlpsrc.
-tlpsetvar no_luajit_platforms x86_64-solaris
-#
 binpattern f/!${no_luajit_platforms} bin/${ARCH}/mfluajit
 binpattern f/!${no_luajit_platforms} bin/${ARCH}/mfluajit-nowin
 

Modified: trunk/Master/tlpkg/tlpsrc/platex.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/platex.tlpsrc	2019-12-23 00:54:28 UTC (rev 53215)
+++ trunk/Master/tlpkg/tlpsrc/platex.tlpsrc	2019-12-23 20:32:38 UTC (rev 53216)
@@ -1,4 +1,4 @@
-tlpsetvar fmtcomm babel,cm,hyphen-base,latex-fonts,ptex-fonts
+tlpsetvar fmtcomm ${global_latex_deps},ptex-fonts
 #
 execute AddFormat name=platex engine=eptex options="*platex.ini" \
           patterns=language.dat \

Modified: trunk/Master/tlpkg/tlpsrc/uplatex.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/uplatex.tlpsrc	2019-12-23 00:54:28 UTC (rev 53215)
+++ trunk/Master/tlpkg/tlpsrc/uplatex.tlpsrc	2019-12-23 20:32:38 UTC (rev 53216)
@@ -1,6 +1,6 @@
 # uplatex depends on platex (starting from 2018-03-09 release).
 #
-tlpsetvar fmtcomm babel,cm,hyphen-base,latex-fonts,uptex-fonts,platex
+tlpsetvar fmtcomm ${global_latex_deps},uptex-fonts,platex
 #
 execute AddFormat name=uplatex engine=euptex options="*uplatex.ini" \
           patterns=language.dat \

Modified: trunk/Master/tlpkg/tlpsrc/xmltex.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/xmltex.tlpsrc	2019-12-23 00:54:28 UTC (rev 53215)
+++ trunk/Master/tlpkg/tlpsrc/xmltex.tlpsrc	2019-12-23 20:32:38 UTC (rev 53216)
@@ -3,7 +3,7 @@
 depend tex
 depend xmltexconfig
 
-tlpsetvar fmtcomm babel,cm,dehyph,hyphen-base,latex,latex-fonts,latexconfig,\
+tlpsetvar fmtcomm ${global_latex_deps},dehyph,latex,latexconfig,\
 tex-ini-files,xmltexconfig
 #
 execute AddFormat name=xmltex engine=pdftex patterns=language.dat \



More information about the tex-live-commits mailing list