texlive[54277] trunk: 2020 tlbuild update

commits+karl at tug.org commits+karl at tug.org
Fri Mar 13 18:12:03 CET 2020


Revision: 54277
          http://tug.org/svn/texlive?view=revision&revision=54277
Author:   karl
Date:     2020-03-13 18:12:03 +0100 (Fri, 13 Mar 2020)
Log Message:
-----------
2020 tlbuild update

Modified Paths:
--------------
    trunk/Build/source/README.0overview
    trunk/Build/source/README.1prerequisites
    trunk/Build/source/README.2building
    trunk/Build/source/README.3installing
    trunk/Build/source/README.4layout
    trunk/Build/source/README.5configure
    trunk/Build/source/README.6coding
    trunk/Build/source/README.7continuous
    trunk/Build/source/doc/ChangeLog
    trunk/Build/source/doc/Makefile.am
    trunk/Build/source/doc/Makefile.in
    trunk/Build/source/doc/build-tools.txt
    trunk/Build/source/doc/tlbuild-incl/install-tl.texi
    trunk/Build/source/doc/tlbuild-incl/tlmgr.texi
    trunk/Build/source/doc/tlbuild.info
    trunk/Build/source/doc/tlbuild.texi
    trunk/Master/tlpkg/doc/releng.txt

Property Changed:
----------------
    trunk/Build/source/doc/Makefile.am

Modified: trunk/Build/source/README.0overview
===================================================================
--- trunk/Build/source/README.0overview	2020-03-13 16:57:49 UTC (rev 54276)
+++ trunk/Build/source/README.0overview	2020-03-13 17:12:03 UTC (rev 54277)
@@ -5,10 +5,10 @@
 2 Overview of build system
 **************************
 
-The TeX Live build system was redesigned in 2009, consistently using
-Autoconf, Automake, and Libtool.  Thus
+The TeX Live build system was redesigned in 2009 to consistently use
+Autoconf, Automake, and Libtool.  Thus, running
    'configure && make && make check && make install'
-or the basically-equivalent top-level 'Build' script suffice to build
+or the essentially-equivalent top-level 'Build' script suffices to build
 and install the TL programs.  The 'make check' clause performs various
 tests of the generated programs--not strictly required but strongly
 recommended.  Running 'configure --help' will display a comprehensive
@@ -34,7 +34,7 @@
 and properties, such as required libraries, whether an installed
 (system) version of a library can be used, 'configure' options to be
 seen at the top level, and more.  An explicit list of all available
-modules is kept in only one central place, namely 'm4/kpse-pkgs.m4'.
+modules is kept in a single central place: 'm4/kpse-pkgs.m4'.
 
    A second, related goal is to configure and build each library before
 configuring any other (program or library) module which uses that
@@ -47,6 +47,6 @@
 source tree and document any modifications of that source.
 
    All this is for the sake of simplifying both upgrading of modules and
-integrating new modules into the TL build system.  (Not to say that
-either task is trivial.)
+integrating new modules into the TL build system.  (Despite all efforts,
+neither task is easy.)
 

Modified: trunk/Build/source/README.1prerequisites
===================================================================
--- trunk/Build/source/README.1prerequisites	2020-03-13 16:57:49 UTC (rev 54276)
+++ trunk/Build/source/README.1prerequisites	2020-03-13 17:12:03 UTC (rev 54277)
@@ -6,20 +6,20 @@
 ***************
 
 Overall, building the TeX Live programs, when using all libraries from
-the TL source tree, requires only C and C++ compilers and GNU 'make'.
-(If 'make' from your 'PATH' is not GNU make, you can set 'MAKE' in the
-environment to whatever is necessary.)
+the TL source tree, requires C and C++11 compilers and GNU 'make'.  If
+'make' from your 'PATH' is not GNU make, you can set the 'MAKE'
+environment variable to whatever is necessary.
 
    GNU 'make' is required only because of some third-party libraries,
 notably FreeType; all the TL-maintained directories (and
-Automake/Autoconf output in general) should work with any reasonable
-'make'.
+Automake/Autoconf output in general) work with any reasonable 'make'.
 
-   However, a few programs in the tree have additional requirements:
+   A C++11 compiler is similarly required because of the third-party
+libraries ICU and Poppler; the program 'dvisvgm' also requires C++11.
+It is possible to build everything else with older compilers, but you
+have to remove the C++11-dependent sources.  *Note Build one package::.
 
-'dvisvgm'
-     requires a C++11 compiler, such as gcc 4.8.1 (or later) or clang
-     3.3 (or later).
+   A few programs in the tree have additional requirements:
 
 'web2c'
      requires 'perl' for some tests run by 'make check'.
@@ -26,8 +26,8 @@
 
 'xdvik'
 'xpdfopen'
-     require X11 headers and libraries, often in "development" packages
-     that are not installed by default.
+     require X11 headers and libraries, typically in "development"
+     packages that are not installed by default.
 
 'xetex'
      requires 'fontconfig' (again both headers and library), or, for
@@ -34,8 +34,9 @@
      MacOSX only, the 'ApplicationServices' and 'Cocoa' frameworks.
 
 'xindy'
-     requires GNU 'clisp' and in addition 'perl', 'latex', and
-     'pdflatex' to build the rules and/or documentation.
+     requires GNU 'clisp', 'libsigsegv', and 'libiconv'; additionally,
+     to build the rules and/or documentation: 'perl', 'latex',
+     'pdflatex'.
 
 Lacking the required tools, building these programs must avoided, e.g.,
 'configure --without-x --disable-xetex --disable-xindy'
@@ -44,7 +45,7 @@
 expect:
 
    * Modification of any '.y' or '.l' source files requires 'bison' or
-     'flex' to updatete the corresponding C sources.
+     'flex' to update the corresponding C sources.
 
    * Modification of the sources for '.info' files requires 'makeinfo'.
 
@@ -51,7 +52,10 @@
    * Modification of any part of the build system (M4 macros,
      'configure.ac', 'Makefile.am', or their fragments) requires GNU M4,
      GNU Autoconf, GNU Automake, and GNU Libtool to update the generated
-     files.  *Note Build system tools::.
+     files.  Furthermore, to reliably reproduce the build files, the
+     original GNU releases of these tools must be used, not any distro
+     packaging of them.  *Note Build system tools::, for more
+     discussion.
 
    If you haven't modified any source files, and infrastructure tools
 such as 'autoconf' or 'makeinfo' are still being run, check your
@@ -59,8 +63,3 @@
 Subversion configuration (*note Build system tools::).  Barring buggy
 commits, no infrastructure tools are needed to do a normal build.
 
-   As an example, on Debian systems the necessary build dependencies can
-be installed via:
-
-     apt-get install libfontconfig-dev libx11-dev libxmu-dev libxaw7-dev
-

Modified: trunk/Build/source/README.2building
===================================================================
--- trunk/Build/source/README.2building	2020-03-13 16:57:49 UTC (rev 54276)
+++ trunk/Build/source/README.2building	2020-03-13 17:12:03 UTC (rev 54277)
@@ -7,18 +7,18 @@
 
 The top-level 'Build' script is intended to simplify building the
 binaries distributed with TeX Live itself--we call this the "native" TL
-build.  It configures and makes everything in a subdirectory of the main
-build tree (default 'Work/'), installs everything in another
-subdirectory (default 'inst/'), and finally runs 'make check'.  The
-exact directory and command names can be specified via environment
-variables and a few leading options.  All remaining arguments
-(assignments or options) are passed to the 'configure' script.  Please
-take a look at the './Build' source file itself for more information; it
+build.  It runs 'configure && make world', which builds everything in a
+subdirectory of the main source tree (default 'Work/'), installs
+everything in another subdirectory (default 'inst/'), and finally runs
+'make check'.  The exact directory and command names can be specified
+via environment variables and a few leading options.  All remaining
+arguments (assignments or options) are passed to the 'configure' script.
+Please take a look at the './Build' source file for more information; it
 is a straightforward shell script.
 
    An alternative, and the one we will mainly discuss here, is to run
-'configure' and 'make' oneself in a suitable empty subdirectory.
-Building in the source directory itself is not supported (sorry).
+'configure' and 'make' in a suitable empty subdirectory.  Building in
+the source directory itself is not supported (sorry).
 
 4.1 Build iteration
 ===================
@@ -25,10 +25,10 @@
 
 Running the top-level 'configure' script configures the top level and
 the subdirectories 'libs', 'utils', and 'texk'.  Running 'make' at the
-top-level first iterates over all TeX-specific libraries, and then runs
-'make' in 'libs', 'utils', and 'texk' to iterate over all generic
-libraries, utility programs, and TeX-specific programs.  These
-iterations consist of two steps:
+top level first iterates over the TeX-specific libraries, and then runs
+'make' in 'libs', 'utils', and 'texk' to iterate over the generic
+libraries, utility programs, and TeX-specific programs, respectively.
+These iterations consist of two steps:
 
   1. For each library or program module not yet configured, run
      'configure', adding the configure option '--disable-build' if the
@@ -39,28 +39,29 @@
      'check' to run tests, 'install', etc.
 
    Running the top-level 'make' a second time iterates again over all
-the library and program modules, but finds (should find) nothing to be
-done unless some source files have been modified.
+the library and program modules, and finds (should find) nothing to be
+done.
 
 4.2 Build problems
 ==================
 
-If configuring or building a module fails, you should first find and fix
-the problem, then perhaps remove the subdirectory for that module from
-the build tree, and finally rerun the top level 'make' (or 'Build' with
-'--no-clean' as its first argument).
+If configuring or building a module fails, you should first try to find
+and fix the problem.  Failing that, a possible workaround is to remove
+the subdirectory for that module from the build tree (so 'configure'
+won't try to run there, and finally rerun the top level 'make' (or
+'./Build' '--no-clean').
 
 4.3 Build in parallel
 =====================
 
 The TL build system carefully formulates dependencies as well as 'make'
-rules when a tool (such as 'tangle', 'ctangle', or 'convert') creates
+rules when a tool (such as 'tangle', 'ctangle', and 'convert') creates
 several output files.  This allows for parallel builds ('make -j N' with
 N>1 or even 'make -j') that can considerably speed up the TL build.
 
-   Incidentally, a noticeable speed-up can also be (independently)
-gained by using a configure cache file, i.e., with the option '-C'
-(recommended).
+   Incidentally, a noticeable speed-up can be independently gained by
+using a configure cache file, i.e., specifying the 'configure' option
+'-C' (recommended).
 
 4.4 Build distribution
 ======================
@@ -72,7 +73,8 @@
 
    This is useful for checking consistency of the source tree and
 Makefiles, but the result is not a complete or even usable TeX system,
-since all the support files are lacking; *note Installing::.
+since all the support files are lacking; *note Installing::.  We do not
+actually distribute any such tarball, and have no plans to do so.
 
 4.5 Build one package
 =====================
@@ -81,23 +83,16 @@
 '--disable-all-pkgs' (*note --disable-all-pkgs::).  Then all program and
 library modules are configured but none are made.  However, the
 'Makefile's still contain all build rules and dependencies and can be
-invoked to build an individual program or library and causes to first
-build any required libraries.
+invoked to build an individual program or library, first building any
+required libraries.
 
-   This "build-on-demand" procedure is used, e.g., in the upstream
-LuaTeX repository to build LuaTeX, essentially from a subset of the
-complete TeX Live tree.  Similarly, when, e.g., building the original
-e-TeX has been disabled (as it is by default), one can run 'make etex'
-(or 'make etex.exe') in 'texk/web2c/' to build e-TeX (although there is
-no comparably simple way to install e-TeX).
+   Here is an example from start to finish for working on 'dvipdfm-x'.
+(Unfortunately, this does not suffice for building one, or a subset, of
+the TeX engines; see the next section.)
 
-   If you want to work on a single program within the TL sources, this
-is the recommended way to do it.  Here is an example from start to
-finish for working on 'dvipdfm-x'.
-
      mkdir mydir && cd mydir  # new working directory
 
-     # Get sources (<http://tug.org/texlive/svn>)
+     # Get sources (<https://tug.org/texlive/svn>), e.g.:
      rsync -a --delete --exclude=.svn --exclude=Work \
            tug.org::tldevsrc/Build/source/ .
 
@@ -106,27 +101,30 @@
 
      # Do the configure:
      ../configure --disable-all-pkgs --enable-dvipdfm-x \
-       -C CFLAGS=-g CXXFLAGS=-g >&outc
+       -C CFLAGS=-g CXXFLAGS=-g >&outc || echo fail
 
      # Do the make:
-     make >&outm
+     make >&outm || echo fail
 
      # Test:
      cd texk/dvipdfm-x
      make check
 
-   Then you modify source files in 'mydir/texk/dvipdfm-x' and rerun
-'make' in 'mydir/Work/texk/dvipdfm-x' to rebuild.
+   Then you can modify source files in 'mydir/texk/dvipdfm-x' and rerun
+'make' in 'mydir/Work/texk/dvipdfm-x' to rebuild; that build directory
+is where the binary ends up and where you can run a debugger, etc.
 
    The second line of the 'configure' invocation shows examples of extra
 things you likely want to specify if you intend to hack the sources (and
-not just build binaries): the '-C' speeds up 'configure', and the
-'CFLAGS' and 'CXXFLAGS' settings eliminate compiler optimization for
-debugging purposes.
+not just build binaries): the '-C' speeds 'configure' by enabling a
+cache file, and the 'CFLAGS' and 'CXXFLAGS' settings eliminate compiler
+optimization for debugging purposes.
 
-   Of course, one should actually look at the output and check that
+   Of course, you need to actually look at the output and check that
 things are working.  There are many 'configure' options you can tweak as
-desired; check the output from 'configure --help'.
+desired; check the output from 'configure --help'.  It is also a good
+idea to run 'make check' after making any changes, to ensure that
+whatever tests have been written still pass.
 
    Finally, the above retrieves the entire TL source tree (several
 hundred megabytes).  It is natural to ask if this is really necessary.
@@ -134,22 +132,54 @@
 do so.  If you cut down the source tree, you must also give additional
 'configure' flags to individually disable using system versions of
 libraries, or the intricacies of the dependencies (such as 'teckit'
-requiring 'zlib') will have undesired side effects.  For an example, see
-the 'build-pdftex.sh' script in the 'pdftex' development source
-(<http://pdftex.org>), which is indeed a cut-down TL source tree.
+requiring 'zlib') will have undesired side effects.  For an example of
+this approach, see the 'build-pdftex.sh' script in the 'pdftex'
+development source (details at <http://pdftex.org>), which is indeed
+such a cut-down TL source tree.
 
-   Even with '--disable-all-pkgs', dependencies will be checked.  For
-instance, if a non-MacOSX system does not have 'fontconfig', XeTeX
-cannot be built (*note Prerequisites::) and 'configure' will terminate.
-To proceed without such dependencies, specify '--enable-missing' also.
-(Arguably this should happen automatically.)
+   Some libraries and programs require C++11.  If you want to build with
+an older compiler lacking such support, you need to (re)move those
+source directories; specifying '--disable' for them does not suffice,
+unfortunately.  Specifically, before running 'configure':
 
+     rm -rf libs/icu libs/poppler libs/graphite2 texk/dvisvgm
+
+   Also, even with '--disable-all-pkgs', dependencies are (currently)
+checked.  For instance, if a (non-MacOSX) system does not have
+'fontconfig', XeTeX cannot be built (*note Prerequisites::), and
+'configure' will terminate even with '--disable-xetex'.  To proceed
+without such dependencies, specify '--enable-missing' also.  (Patches to
+improve this would be most welcome.)
+
    By default, the 'gcc' compilers will be used if present; otherwise,
 individual packages may use something different.  You can explicitly
 specify the compilers to be used with the environment variables 'CC',
 'CXX', and 'OBJCXX'.
 
-4.6 Cross compilation
+4.6 Build one engine
+====================
+
+Unfortunately, there is one common case where the steps in the preceding
+section to build one package (*note Build one package::) do not suffice:
+wanting to build one, or a subset, of the TeX engines (or other Web2c
+programs).
+
+   The simplest way to do this is to disable everything and then
+explicitly specify what to make.  For example, to build only LuaTeX:
+
+     ./configure --disable-all-pkgs  # or ./Build
+     cd Work/texk/web2c              # build directory
+     make luatex                     # specify target
+
+   This works because the 'make' automatically runs 'configure' as
+necessary for the dependencies and target.  Furthermore, the source tree
+can be cut down to just what is needed for the given engine (the
+separate pdfTeX and LuaTeX source repositories do this, if you want to
+peruse examples).
+
+   We hope to improve the situation in the future.  Patches are welcome.
+
+4.7 Cross compilation
 =====================
 
 In a cross compilation a "build" system is used to create binaries to be
@@ -174,7 +204,7 @@
        OBJCXX='clang++ -arch i386'" \
        ./Build --build=i386-apple-darwin
 
-4.6.1 Cross configuring
+4.7.1 Cross configuring
 -----------------------
 
 In a standard cross compilation, binaries for the host system cannot
@@ -220,7 +250,7 @@
      BUILDCXXFLAGS=...
      BUILDLDFLAGS=...
 
-4.6.2 Cross problems
+4.7.2 Cross problems
 --------------------
 
 The fact that binaries for the host system cannot be executed on the
@@ -246,10 +276,10 @@
    This approach would also be possible for the tools such as 'tangle'
 used in the module 'texk/web2c' to build the WEB programs, but that
 would require first building a native 'kpathsea' library.  To avoid this
-complication, cross compilation of the WEB or CWEB programs requires
+complication, cross compilation of programs written in (C)WEB requires
 sufficiently recent installed versions of 'tangle', 'ctangle',
 'otangle', and 'tie'.
 
    Building 'xindy' requires running the host system 'clisp' binary,
-thus cross compilation is not possible.
+thus cross compilation is painful, but possible.
 

Modified: trunk/Build/source/README.3installing
===================================================================
--- trunk/Build/source/README.3installing	2020-03-13 16:57:49 UTC (rev 54276)
+++ trunk/Build/source/README.3installing	2020-03-13 17:12:03 UTC (rev 54277)
@@ -9,14 +9,14 @@
 
    The main consideration is that 'make install' is not enough to make a
 usable TeX installation.  Beyond the compiled binaries, (thousands of)
-support files are needed; just as a first example 'plain.tex' is not in
+support files are needed; just as a first example, 'plain.tex' is not in
 the source tree.
 
    These support files are maintained completely independently and are
-not present in the source tree.  The best basis for dealing with them is
-the TeX Live (plain text) database in 'Master/tlpkg/texlive.tlpdb',
+not present in the TL source tree.  The best basis for dealing with them
+is the TeX Live (plain text) database in 'Master/tlpkg/texlive.tlpdb',
 and/or the TeX Live installer, 'install-tl'.  More information is under
-'Master/tlpkg' and at <http://tug.org/texlive/distro.html>.
+'Master/tlpkg' and at <https://tug.org/texlive/distro.html>.
 
 5.1 Installation directories
 ============================
@@ -28,7 +28,7 @@
 'INFODIR'.
 
    The values of these directories are determined by 'configure' and can
-be specified explictly as options such as '--prefix=PREFIX' or
+be specified explicitly as options such as '--prefix=PREFIX' or
 '--bindir=BINDIR'; otherwise, they are given by their usual Autoconf
 defaults:
 
@@ -55,7 +55,7 @@
 The top-level 'configure' script displays all these installation paths.
 
    For the native TL build, the 'Build' script leaves the binaries in
-'./inst/bin/STD-PLATFORM-NAME'.  The new binaries are not directly
+'./inst/bin/STD-SYSTEM-TRIPLET'.  The new binaries are not directly
 usable from that location; they need to be copied to
 'Master/bin/TL-PLATFORM'.  The other files and directories that end up
 in './inst/' are ignored.
@@ -72,8 +72,9 @@
 'DATAROOTDIR/texmf-dist/scripts'; for Unix-like systems a symbolic link
 is made in 'BINDIR'.  For example, a symlink points from 'BINDIR/ps2eps'
 to 'DATAROOTDIR/texmf-dist/scripts/ps2eps/ps2eps.pl'.  For Windows, a
-standard wrapper binary (e.g., 'BINDIR/ps2eps.exe') serves the same
-purpose.  (The source for the wrapper is in 'texk/texlive/w32_wrapper'.)
+standard wrapper binary (copied to, e.g., 'BINDIR/ps2eps.exe') serves
+the same purpose.  The source for the wrapper is in
+'texk/texlive/w32_wrapper'.
 
    One reason for this is to avoid having many copies of the same
 script; a more important reason is that it guarantees the scripts will
@@ -83,9 +84,9 @@
 to be as close as possible to what is in the TL distribution.  At
 present, there are a few exceptions--Asymptote, Biber, Xindy--and each
 one creates considerable extra work.  We don't want to add more.  (See
-<http://tug.org/texlive/build.html> for information about building those
-exceptions, as well as the 'xz' and 'wget' programs that are used in the
-TL infrastructure.)
+<https://tug.org/texlive/build.html> for information about building
+those exceptions, as well as the 'xz' and 'wget' programs that are used
+in the TL infrastructure.)
 
 5.3 Distro builds
 =================
@@ -96,12 +97,12 @@
 operating system distribution.
 
    The native TL distribution uses shared libraries only when absolutely
-necessary ('libc', 'libm', X11 libraries, and 'libfontconfig').
-However, a distro typically wants to use as many shared libraries as
+necessary ('libc', 'libm', X11 libraries, and 'libfontconfig').  In
+contrast, a distro typically wants to use as many shared libraries as
 possible from elsewhere on the system, including TeX-specific libraries
 such as 'libkpathsea' (even though Kpathsea has never officially been
-released as a shared library, but we digress).  In addition, the
-installation paths will, in general, be completely different.
+released as a shared library).  In addition, the installation paths
+will, in general, be completely different.
 
    Here are the 'configure' options that distro builds are likely to
 find most relevant:
@@ -122,8 +123,8 @@
      Do not build the static versions of the TeX-specific libraries.
 
 '--with-system-LIB'
-     Use system versions for as many libraries LIB as possible.
-     'configure --help' will give you the list of possibilities.
+     Look for and use a system version of the library LIB.  'configure
+     --help' will give you the list of possibilities.
 
 '--with-LIB-includes=DIR'
 '--with-LIB-libdir=DIR'
@@ -142,7 +143,7 @@
 (*note Installing::), and many other issues, such as font maps,
 languages, and formats, independently of the build.  Norbert Preining
 has written a detailed article on adapting TL for distros:
-<http://tug.org/TUGboat/tb34-3/tb108preining-distro.pdf>.  (If the
+<https://tug.org/TUGboat/tb34-3/tb108preining-distro.pdf>.  (If the
 article needs updating in the future, perhaps we will merge it into this
 document.)
 

Modified: trunk/Build/source/README.4layout
===================================================================
--- trunk/Build/source/README.4layout	2020-03-13 16:57:49 UTC (rev 54276)
+++ trunk/Build/source/README.4layout	2020-03-13 17:12:03 UTC (rev 54277)
@@ -13,8 +13,8 @@
 6.1 Build system tools
 ======================
 
-As mentioned above (*note Prerequisites::), a normal build requires very
-little.  On the other hand, if you want to modify the TeX Live
+As mentioned above (*note Prerequisites::), a normal build has few
+requirements.  On the other hand, if you want to modify the TeX Live
 infrastructure sources, such as 'configure.ac' or 'Makefile.am' files,
 you will need to have several additional tools installed.
 
@@ -28,12 +28,12 @@
    Currently the versions we use are:
 
      autoconf (GNU Autoconf) 2.69
-     automake (GNU automake) 1.15.1
-     bison (GNU Bison) 3.0.4
+     automake (GNU automake) 1.16.1
+     bison (GNU Bison) 3.5.2
      flex 2.6.0
      ltmain.sh (GNU libtool) 2.4.6
      m4 (GNU M4) 1.4.18
-     makeinfo (GNU texinfo) 6.5
+     makeinfo (GNU texinfo) 6.7
 
    These versions should be used to update the generated files (e.g.,
 'configure' or 'Makefile.in') in all or parts of the TL tree after their
@@ -41,16 +41,20 @@
 top-level 'reautoconf' script or implicitly by using the configure
 option '--enable-maintainer-mode'.
 
+   It has often turned out that the bison and flex versions are not
+critical; however, the autotools versions are.  If you don't have the
+given versions, get them before modifying the build infrastructure.
+
    The files in the Subversion repository (see
-<http://tug.org/texlive/svn>) are all up to date, but unfortunately this
-may not be reflected by their timestamps.  (For starters, be sure to set
-'use-commit-times=yes' in '~/.subversion/config' or the equivalent.)
+<https://tug.org/texlive/svn>) are all up to date (barring bugs).  For
+this to be reflected by their timestamps in your checkout, be sure to
+set 'use-commit-times=yes' in '~/.subversion/config' or the equivalent.
 
-   To avoid unnecessary runs of 'bison', 'flex', or 'makeinfo' it may be
-necessary to 'touch' the generated ('.c', '.h', or '.info') files.  With
-'--enable-maintainer-mode' it may also be necessary to 'touch' first
-'aclocal.m4', then 'configure' and 'config.h.in' (or 'c-auto.in'), and
-finally all 'Makefile.in' files.  Perhaps 'make -t' will help.
+   If timestamps are wrong, you may also be able to avoid unnecessary
+runs of 'bison', 'flex', or 'makeinfo' with 'touch' of the generated
+('.c', '.h', or '.info') files.  With '--enable-maintainer-mode' it may
+also be necessary to 'touch' first 'aclocal.m4', then 'configure' and
+'config.h.in' (or 'c-auto.in'), and finally all 'Makefile.in' files.
 
 6.2 Top-level directories
 =========================
@@ -81,31 +85,28 @@
 
    The top-level 'build-aux/' directory contains the common files
 'compile', 'config.guess', 'config.sub', 'depcomp', etc. used by most
-packages.  These are from the GNU Gnulib sources
-(<http://www.gnu.org/software/gnulib>), which in turn synchronizes with
-the appropriate ultimate upstream repository.  There are, however,
-independent copies in, e.g., 'libs/freetype2/freetype-*/builds/unix/',
-and a few other places.  The 'reautoconf' script does not touch those,
-but a TL cron job keeps them in sync (nightly).
+packages.  These are taken from the GNU Gnulib sources
+(<https://www.gnu.org/software/gnulib>), which in turn synchronizes with
+any ultimate upstream repository.  There are independent copies of some
+of these in a few other places, e.g.,
+'libs/freetype2/freetype-*/builds/unix/'.  The 'reautoconf' script does
+not touch those, but a TL cron job keeps them in sync (nightly).
 
-   The directory 'extra/' contains things which are not part of the TL
-build, but are present just for (someone's) convenience, e.g., is
-'epstopdf' development source is here.
-
    When the top-level './Build' script is used to build TL, two more two
 more top-level directories appear: 'Work/' for the build tree, and
 'inst/' for the install tree (from 'make install').  These names (and
 everything else about 'Build''s operation) can be changed by setting
-environment variables before running it; see the script file.
+environment variables before running it; see the script source.
 
 6.3 Autoconf macros
 ===================
 
-Here we describe some of the Autoconf macros used in several modules-not
-a complete list, by any means.  These general macros are supplemented by
-module-specific macros in directories such as 'texk/dvipng/m4/'; some of
-those are described in *note Library modules:: and *note Program
-modules::.
+Here we describe a few of the Autoconf macros used in several
+modules--many more are defined in the sources; see the top-level 'm4/'
+directory.  These general macros are supplemented by module-specific
+macros in directories such as 'texk/dvipng/m4/'; some of those are
+described in following sections (*note Library modules:: and *note
+Program modules::).
 
 6.3.1 General setup macros
 --------------------------
@@ -126,8 +127,8 @@
         'LT_INIT([win32-dll])'
         'AC_SYS_LARGEFILE'
         'AC_FUNC_FSEEKO'
-     and check for frequently used functions, headers, types, and
-     structures.  This is used for TeX-specific modules.
+     along with checks for frequently used functions, headers, types,
+     and structures.  This is used for TeX-specific modules.
 
 6.3.2 Macros for programs
 -------------------------
@@ -135,11 +136,11 @@
 Macros for program checks:
 
  -- Macro: KPSE_CHECK_LATEX
-     Set 'LATEX' to the name of the first of 'latex', 'elatex', or
-     'lambda' which exists in 'PATH', or to 'no' if none of them exists.
-     Call 'AC_SUBST' for 'LATEX'.  The result of this test can be
-     overridden by setting the 'LATEX' environment variable or the cache
-     variable 'ac_cv_prog_LATEX'.
+     Set 'LATEX' to the first of 'latex', 'elatex', or 'lambda' which
+     exists in 'PATH', or to 'no' if none of them exists.  Call
+     'AC_SUBST' for 'LATEX'.  The result of this test can be overridden
+     by setting the 'LATEX' environment variable or the cache variable
+     'ac_cv_prog_LATEX'.
 
  -- Macro: KPSE_CHECK_PDFLATEX
      Check for 'pdflatex' in 'PATH' and set 'PDFLATEX'.
@@ -159,8 +160,8 @@
      When using the (Objective) C/C++ compiler, set
      'WARNING_[OBJ]C[XX]FLAGS' to suitable warning flags (depending on
      the value given to or implied for '--enable-compiler-warnings').
-     Call 'AC_SUBST' for them.  At the moment this only works for GNU
-     compilers, but could be extended to others if necessary.
+     Call 'AC_SUBST' for them.  At present this assumes GNU compiler
+     warning options, but could be extended to others if necessary.
 
      This macro caches its results in the 'kpse_cv_warning_cflags', ...
      variables.
@@ -168,9 +169,9 @@
  -- Macro: KPSE_COMPILER_VISIBILITY
      When using the C or C++ compiler, try to set
      'VISIBILITY_C[XX]FLAGS' to flags to hide external symbols.  Call
-     'AC_SUBST' for this variable.  At the moment this only tests for
-     the compiler option '-fvisibility=hidden', but that could be
-     extended with more checks if necessary.
+     'AC_SUBST' for this variable.  At present this only tests for the
+     compiler option '-fvisibility=hidden', but could be extended if
+     necessary.
 
      This macro caches its results in the 'kpse_cv_visibility_cflags' or
      'kpse_cv_visibility_cxxflags' variable.
@@ -178,8 +179,7 @@
  -- Macro: KPSE_CXX_HACK
      Provide the configure option '--enable-cxx-runtime-hack'.  If
      enabled and when using 'g++', try to statically link with
-     'libstdc++', somewhat improving portability of the resulting
-     binary.
+     'libstdc++', notably improving portability of the resulting binary.
 
      This macro caches its result in the 'kpse_cv_cxx_hack' variable.
 
@@ -202,11 +202,13 @@
  -- Macro: KPSE_LIBPNG_FLAGS
      Provide the configure option '--with-system-libpng'.  Set and
      'AC_SUBST' 'make' variables for modules using this library (either
-     an installed version or from the TeX Live tree): 'LIBPNG_INCLUDES'
-     for use in 'CPPFLAGS', 'LIBPNG_LIBS' for use in 'LDADD',
-     'LIBPNG_DEPEND' for use as dependency, and 'LIBPNG_RULE' defining
-     'make' rules to rebuild the library.
+     an installed version or from the TeX Live tree):
 
+     'LIBPNG_INCLUDES'   for use in 'CPPFLAGS',
+     'LIBPNG_LIBS'       for use in 'LDADD',
+     'LIBPNG_DEPEND'     for use as a Makefile dependency,
+     'LIBPNG_RULE'       for the 'make' rules to rebuild the library.
+
  -- Macro: KPSE_ADD_FLAGS (NAME)
      Temporarily extend 'CPPFLAGS' and 'LIBS' with the values required
      for the library module 'NAME'.
@@ -229,7 +231,7 @@
      ## Rebuild libpng
      @LIBPNG_RULE@
 
-   If it was necessary to examine whether certain 'zlib' or 'libpng'
+   If it were necessary to examine whether certain 'zlib' or 'libpng'
 features were available, 'configure.ac' should be continued this way:
      KPSE_ADD_FLAGS([zlib])
      ... # tests for 'zlib' features, if any
@@ -244,10 +246,10 @@
 due to the lack of symbolic links.
 
  -- Macro: KPSE_CHECK_WIN32
-     Check if compiling for a Windows system.  The result is 'no' for
-     Unix-like systems (including Cygwin), 'mingw32' for Windows with
-     GCC, or 'native' for Windows with MSVC. The result is cached in the
-     'kpse_cv_have_win32' variable.
+     Check if compiling for a Windows system.  The result is either 'no'
+     for Unix-like systems (including Cygwin), 'mingw32' for Windows
+     with GCC, or 'native' for Windows with MSVC. The result is cached
+     in the 'kpse_cv_have_win32' variable.
 
  -- Macro: KPSE_COND_WIN32
      Call 'KPSE_CHECK_WIN32' and define the Automake conditional 'WIN32'
@@ -266,7 +268,7 @@
      Linked scripts::).
 
  -- Macro: KPSE_WIN32_CALL
-     Call 'KPSE_COND_WIN32', check if the file
+     Call 'KPSE_COND_WIN32' and check if the file
      'texk/texlive/w32_wrapper/callexe.c' exists; if it does, create a
      symlink in the build tree.  Compiling 'callexe.c' with
      '-DEXEPROG='"FOO.exe"'' and installing 'callexe.exe' as 'BAR.exe'
@@ -283,14 +285,14 @@
 6.4.1 The 'png' library in 'libs/libpng'
 ----------------------------------------
 
-This generic library uses the source tree in, e.g., the subdirectory
-'libpng-src/' with all modifications for TL recorded in 'TLpatches/*'.
+The "generic" 'png' library uses the source tree in the subdirectory
+'libpng-src/', with all modifications for TL recorded in 'TLpatches/*'.
 The 'configure.ac' fragment 'ac/withenable.ac' contains
 
      KPSE_WITH_LIB([libpng], [zlib])
 
-specifying the module name, and indicating the dependency on 'zlib'.  A
-third literal argument 'tree' would specify that the library from the
+to specify the module name and indicate the dependency on 'zlib'.  A
+third literal argument ''tree'' would specify that the library from the
 TeX Live tree cannot be replaced by a system version.  That not being
 the case here, a second fragment 'ac/libpng.ac' contains
 
@@ -308,27 +310,30 @@
        return 0; }
 
 which Autoconf uses to verify the usability of a system version with C
-code.  The analogous macro 'KPSE_TRY_LIBXX' would check using C++ code.
-These fragments are included by 'configure.ac' at the top level.
+code.  The analogous macro 'KPSE_TRY_LIBXX' would check using C++.
+These fragments are included by the 'configure.ac' at the top level of
+TL ('Build/source/configure.ac').
 
-   For this library, among many other modules, a proxy build system for
-TL is used ('configure.ac', 'Makefile.am', and 'include/Makefile.am'),
-ignoring the distributed one.  Consequently, a few generated files and
-auxiliary scripts are removed from the distributed source tree.  The
-public headers 'png.h', 'pngconf.h', and 'pnglibconf.h' are "installed"
-(as symlinks) under 'include/' in the build tree exactly as they are for
-a system version under, e.g., '/usr/include/'.
+   For this library, like many other modules, a proxy build system for
+TL is used, consisting of our own 'configure.ac', 'Makefile.am',
+'include/Makefile.am'; the distributed build system is not used.
+(Consequently, a few generated files and auxiliary scripts are removed
+from the distributed source tree.)
 
+   The public headers 'png.h', 'pngconf.h', and 'pnglibconf.h' are
+"installed" (as symlinks) under 'include/' in the build tree exactly as
+they are for a system version under, e.g., '/usr/include/'.
+
    The module is supplemented by the file 'm4/kpse-libpng-flags.m4' that
 defines the M4 macro 'KPSE_LIBPNG_FLAGS' used by all modules depending
 on this library in their 'configure.ac' to generate the 'make' variables
 'LIBPNG_INCLUDES' for use in 'CPPFLAGS', 'LIBPNG_LIBS' for use in
-'LDADD', 'LIBPNG_DEPEND' for use as dependencies, and 'LIBPNG_RULE'
-defining 'make' rules to rebuild the library.
+'LDADD', 'LIBPNG_DEPEND' for use as dependencies, and 'LIBPNG_RULE' for
+the 'make' rules to rebuild the library.
 
    'm4/kpse-libpng-flags.m4' also supplies the configure option
-'--with-system-libpng' and uses 'pkg-config' to determine the flags
-required for the system library.
+'--with-system-libpng', which then uses 'pkg-config' to determine the
+flags required for the system library.
 
 6.4.2 The 'zlib' library in 'libs/zlib'
 ---------------------------------------
@@ -342,36 +347,40 @@
 6.4.3 The 'freetype' library in 'libs/freetype2'
 ------------------------------------------------
 
-This module uses a wrapper build system with an almost trivial
-'configure.ac' and with a 'Makefile.am' that invokes 'configure' and
-'make' for the distributed source, followed by 'make install' with the
-build tree as destination.  The flags required for the system library
-are obtained through 'freetype-config'.
+This module uses a wrapper build system.  In contrast to the proxy build
+described earlier, the wrapper build has an almost trivial
+'configure.ac' and a 'Makefile.am' which invokes the 'configure' and
+'make' in the distributed source, followed by 'make install' with the TL
+build tree as destination.  In other words, this actually uses the build
+system provided by upstream (possibly patched).
 
+   The flags required for the system library are obtained through
+'freetype-config'.
+
 6.4.4 The 'kpathsea' library in 'texk/kpathsea'
 -----------------------------------------------
 
 This is one of the TeX-specific libraries that are maintained as part of
-TeX Live (*note (kpathsea)::).  Despite being a core part of the TeX
-system, it is not a terribly special case in the infrastructure.  The
-TeX libraries are Libtool libraries (static and/or shared) and are
-installed by 'make install' together with the programs.  They are,
-however, not part of the TL DVD as distributed by TeX user groups, and
-have never been officially released for standalone use.
+TeX Live (*note (kpathsea)::); the other is 'ptexenc'.  These TeX
+libraries are Libtool libraries (static and/or shared) and are installed
+by 'make install' together with the programs.  They are, however, not
+part of the TL DVD as distributed by TeX user groups, and have never
+been officially released for standalone use.
 
-   It is possible, and perhaps even useful for distro builds (*note
-Distro builds::), to specify the configure option
-'--with-system-kpathsea' in order to use a system version of the
-library.  Programs outside the TL tree should use 'pkg-config' for the
-required flags.
+   It is possible, and probably useful for distro builds (*note Distro
+builds::), to specify the configure option '--with-system-kpathsea' in
+order to use a system version of the library.  Programs outside the TL
+tree should use 'pkg-config' for the required flags.
 
-   In addition to 'ac/withenable.ac' and 'ac/kpathsea.ac' there is a
-third fragment 'ac/mktex.ac' included by both 'ac/withenable.ac' and
-'configure.ac' that supplies configure options such as
-'--enable-mktextfm-default', which determine the compile time default of
-whether or not to run 'mktextfm' to generate a missing '.tfm' file.  In
-any case, however, the command line options '-mktex=tfm' or
-'-no-mktex=tfm' for the TeX-like engines override this default.
+   In addition to 'kpathsea/ac/withenable.ac' and
+'kpathsea/ac/kpathsea.ac' here there is a third fragment
+'kpathsea.ac/mktex.ac', included by both 'withenable.ac' and
+'configure.ac', which supplies configure options such as
+'--enable-mktextfm-default'.  These determine the compile time default
+of whether or not to run 'mktextfm' (and similar) to generate a missing
+'.tfm' (or whatever) file.  In any case, however, the command line
+options '-mktex=tfm' or '-no-mktex=tfm' for the TeX-like engines
+override this default.
 
 6.5 Program modules
 ===================
@@ -382,10 +391,10 @@
 6.5.1 The 't1utils' package in 'utils/t1utils'
 ----------------------------------------------
 
-Once again we use the distributed source tree 't1utils-src' with
-modifications documented in 'TLpatches/*' and a proxy build system
-consisting of 'configure.ac' and 'Makefile.am'.  The fragment
-'ac/withenable.ac' contains
+Here we use the distributed source tree 't1utils-src' with modifications
+documented in 'TLpatches/*' and a proxy build system consisting of
+'configure.ac' and 'Makefile.am'.  The fragment 'ac/withenable.ac'
+contains
 
      KPSE_ENABLE_PROG([t1utils])
 
@@ -396,45 +405,46 @@
 ------------------------------------------
 
 This module uses the distributed source tree 'xindy-src/' with
-modifications documented in 'TLpatches/*', a proxy 'configure.ac', and a
-wrapper 'Makefile.am' that descends into 'xindy-src'.  The 'xindy' build
-requires a 'make' that supports a 'VPATH' build, can handle all targets,
-and do not refer to '${top_srcdir}' or '${top_builddir}'.  The fragment
-'ac/withenable.ac' contains
+modifications documented in 'TLpatches/*', and a wrapper 'configure.ac'
+and 'Makefile.am' that descends into 'xindy-src'.
 
-     KPSE_ENABLE_PROG([xindy], , [disable native])
+   The 'xindy' build requires a 'make' that supports a 'VPATH' build,
+can handle all targets, and do not refer to '${top_srcdir}' or
+'${top_builddir}'.  The fragment 'xindy/ac/withenable.ac' contains
+
+     KPSE_ENABLE_PROG([xindy], , [disable])
      m4_include(kpse_TL[utils/xindy/ac/xindy.ac])
      m4_include(kpse_TL[utils/xindy/ac/clisp.ac])
 
 where 'disable' in the third argument indicates that 'xindy' is only
 built if explicitly enabled by the user with 'configure --enable-xindy'
-(the need for 'clisp' is too painful to require by default), and
-'native' disallows cross compilation.  The additional fragments
-'ac/xindy.ac' and 'ac/clisp.ac' specify more 'configure' options to be
-seen at the top level with 'ac/xindy.ac' also included by
-'configure.ac'.
+(the need for 'clisp' makes it too painful to enable by default).
 
+   The additional fragments 'ac/xindy.ac' and 'ac/clisp.ac' specify more
+'configure' options to be seen at the top level, with 'ac/xindy.ac' also
+included by 'configure.ac'.
+
 6.5.3 The 'xdvik' package in 'texk/xdvik'
 -----------------------------------------
 
 This package is maintained as part of the TeX Live tree with sources in
-its top level directory and the subdirectory 'gui'.  The fragment
-'ac/withenable.ac' contains
+its own directory ('texk/xdvik/').  The fragment
+'xdvik/ac/withenable.ac' contains
 
      dnl extra_dirs = texk/xdvik/squeeze
      KPSE_ENABLE_PROG([xdvik], [kpathsea freetype2], [x])
      m4_include(kpse_TL[texk/xdvik/ac/xdvik.ac])
 
-thus specifying the dependency on the 'kpathsea', 'freetype', and X11
+thus specifying dependencies on the 'kpathsea', 'freetype', and X11
 libraries.  The M4 comment (following 'dnl') signals the subsidiary
 'squeeze/configure.ac'.  This is needed because the main executable
 'xdvi-bin' (to be installed as, e.g., 'xdvi-xaw') is for the 'host'
 system whereas the auxiliary program 'squeeze/squeeze' has to run on the
-'build' system and in a cross compilation they differ.
+'build' system; in a cross compilation, these differ.
 
    The additional fragment 'ac/xdvik.ac' is also included by
 'configure.ac' and supplies the configure option '--with-xdvi-x-toolkit'
-also seen at the top-level.
+also seen at the top level.
 
 6.5.4 The subdirectory 'utils/asymptote'
 ----------------------------------------
@@ -442,7 +452,8 @@
 This subdirectory contains the sources for 'asy' and 'xasy' but due to
 its complexity and prerequisites (e.g., OpenGL) it is not part of the TL
 build system.  These programs must be built and installed independently,
-but are included on the TL DVD together with their support files.
+but are included on the TL DVD together with their support files.  See
+<https://tug.org/build.html#asymptote>.
 
 6.6 Extending TeX Live
 ======================
@@ -451,11 +462,11 @@
 TL build system.
 
    In any case, a new package directory 'foo' should contain the
-original sources, as modified for TL, in 'foo/foo-src', and the changes
-should be documented in 'foo/TLpatches/*'; changes should also be
-submitted upstream whenever reasonable, of course.  In addition, 'foo/'
+original sources, modified only with changes necessary for TL, in
+'foo/foo-src'.  The changes should be documented in 'foo/TLpatches/*',
+and also be submitted upstream whenever reasonable.  In addition, 'foo/'
 will need the usual Automake build-related files ('configure.ac',
-'Makefile.am', etc.  Please keep a 'ChangeLog' for all TL changes.
+'Makefile.am', etc.  Please maintain 'foo/ChangeLog' for all TL changes.
 
 6.6.1 Adding a new program module
 ---------------------------------
@@ -475,25 +486,25 @@
 
   1. a list of required libraries from the TL tree;
 
-  2. a list of options ('disable' if this module is not to be built
+  2. a list of options: 'disable' if this module is not to be built
      without the configure option '--enable-PROG', 'native' if cross
      compilation is not possible, 'x' if the program requires X11
-     libraries);
+     libraries;
 
   3. a comment added to the help text for the 'configure' option
      '--enable-PROG' or '--disable-PROG'.
 
-   If the module requires specific configure options to be seen at the
+   If the module requires specific 'configure' options to be seen at the
 top level, they should be defined in an additional fragment 'ac/PROG.ac'
 included from 'ac/withenable.ac' and 'configure.ac'.
 
    Usually, the new program is maintained somewhere outside of TeX Live.
-In that case, we put the upstream sources into a subdirectory 'PROG-src'
-(e.g., 'utils/newprog/newprog-src').  We do not run 'configure' in this
-original '...-src' directory, only in our own directory, but we do
-compile using the source files in '...-src'.
+In that case, as above, we put the upstream sources into a subdirectory
+'PROG-src' (e.g., 'utils/newprog/newprog-src').  We do not typically run
+'configure' in this original '...-src' directory, but only in our own
+directory; but we do compile using the source files in '...-src'.
 
-   So, these are the files that we must generally create:
+   So, to summarize the files that we must (usually) create:
 
 'ac/withenable.ac'
      The 'KPSE_ENABLE_PROG' call just explained.
@@ -518,10 +529,11 @@
      Record all TL-specific changes, now and in the future.
 
    Then, run GNU 'autoreconf' in the new directory (*note Build system
-tools::).  After that works, 'svn add' the necessary files, notably
-'Makefile.in aclocal.m4 configure', and 'svn:ignore' the Automake cache
-'autom4te.cache'.  (This is so people checking out the TL source tree do
-not have to run any autotools, but can simply run 'configure'.)
+tools::).  After that works, 'svn add' the necessary files, including
+the generated 'Makefile.in aclocal.m4 configure', and 'svn:ignore' the
+Automake cache 'autom4te.cache'.  (This is so people checking out the TL
+source tree do not have to run any autotools, but can simply run
+'configure'.)
 
    Then, run the TL tool 'reautoconf' in the top-level TL 'source/'
 directory, to incorporate the new program into the build tree.
@@ -537,7 +549,7 @@
 
 A generic library module in a subdirectory 'libs/LIB' must not depend on
 TeX-specific libraries, by definition.  It is included by adding its
-name 'LIB' to the M4 list 'kpse_libs_pkgs' in 'm4/kpse-pkgs.m4'--before
+name 'LIB' to the M4 macro 'kpse_libs_pkgs' in 'm4/kpse-pkgs.m4'--before
 any other libraries from the TeX Live tree on which it depends.
 
    As with program modules, the subdirectory 'libs/LIB' must contain the
@@ -545,9 +557,9 @@
 programs) and a fragment 'ac/withenable.ac' that contains the M4 macro
 'KPSE_WITH_LIB' defined in 'm4/kpse-setup.m4' with 'LIB' as the
 mandatory first argument and two optional arguments: a list of required
-libraries from the TL tree, and a list of options (currently there is
-only one: specify 'tree' if this library cannot be replaced by a system
-version).
+libraries from the TL tree, and a list of options: for libraries,
+currently there is only one--specify 'tree' if this library cannot be
+replaced by a system version.
 
    If a system version can be used, a second fragment 'ac/LIB.ac' is
 needed, containing the M4 macro 'KPSE_TRY_LIB' (or 'KPSE_TRY_LIBXX')
@@ -566,7 +578,7 @@
    If a system library is allowed, 'KPSE_LIB_FLAGS' also provides the
 configure option '--with-system-LIB' and uses the additional M4 macro
 'KPSE_LIB_SYSTEM_FLAGS' to generate the 'make' variables for a system
-library.  Furthermore the definition of the M4 macro
+library.  In addition, the definition of the M4 macro
 'KPSE_ALL_SYSTEM_FLAGS' in 'm4/kpse-pkgs.m4' must be extended by the
 line:
    'AC_REQUIRE([KPSE_LIB_SYSTEM_FLAGS])'
@@ -579,8 +591,8 @@
 from the TL tree.  It is included in the same general ways as a generic
 library (see the previous section), with these modifications:
 
-   * The library name 'LIB' is added to the M4 list 'kpse_texlibs_pkgs'
-     also in 'm4/kpse-pkgs.m4'.
+   * The library name 'LIB' is added to the M4 macro
+     'kpse_texlibs_pkgs', which is also in 'm4/kpse-pkgs.m4'.
 
    * The fragment 'ac/withenable.ac' must use 'KPSE_WITH_TEXLIB'.
 

Modified: trunk/Build/source/README.5configure
===================================================================
--- trunk/Build/source/README.5configure	2020-03-13 16:57:49 UTC (rev 54276)
+++ trunk/Build/source/README.5configure	2020-03-13 17:12:03 UTC (rev 54277)
@@ -13,17 +13,17 @@
 few important module-specific ones, whereas, e.g.,
    'texk/lcdf-typetools/configure --help'
 also displays the 'lcdf-typetools' specific options, which are not shown
-at the top-level.
+at the top level.
 
    The help text also mentions several influential environment
-variables, but for TeX Live it is better to specify them as assigments
+variables, but for TeX Live it is better to specify them as assignments
 on the command line.
 
    The './Build' script used to make the binaries shipped with TeX Live
 invokes the top-level 'configure' with a few additional options (*note
 Building::).  The defaults discussed below are those for the actual
-'configure' script; invoking 'configure' via './Build' may yield
-different results.
+'configure' script; invoking 'configure' via './Build' yields different
+results.
 
    Defaults for most options are set at the top level and propagated
 explicitly to all subdirectories.  Options specified on the command line
@@ -43,15 +43,14 @@
 are explicitly disabled), and enforces '--disable-shared'.
 
    If building TL for a GNU/Linux or other distribution, this should be
-disabled and system versions of most libraries would be used (*note
-Distro builds::).  This may fail without GNU 'make', but will be tried
-regardless.
+disabled and system versions of most libraries should be used (*note
+Distro builds::).
 
    A related option, '--enable-texlive-build', is automatically passed
 to all subdirectories (and cannot be disabled).  Subdirectories that can
 also be built independently from the TL tree (such as 'utils/xindy' and
-'texk/dvipng') can use this option, e.g., to choose TL-specific
-installation paths.
+'texk/dvipng') but cooperate with TL can use this option to enable
+TL-specific adaptations, such as installation paths.
 
 7.1.2 '--prefix', '--bindir', ...
 ---------------------------------
@@ -66,9 +65,10 @@
 7.1.3 '--disable-largefile'
 ---------------------------
 
-Omit large file support (LFS), needed on most 32-bit Unix systems for
-files with 2GB or more.  Regardless of this, the size of 'DVI' and 'GF'
-files must always be <2GB, due to the file format specifications.
+Omit large file support (LFS), which is needed on most 32-bit Unix
+systems for files with 2GB or more.  Regardless of this option, the size
+of 'DVI' and 'GF' files must always be <2GB, due to the file format
+specifications.
 
    With LFS, there is no fixed limit on the size of PDF files created by
 'pdftex' or PostScript files created by 'dvips'.  The size of PDF images
@@ -85,22 +85,19 @@
 7.1.5 '--enable-compiler-warnings='LEVEL
 ----------------------------------------
 
-Enable various levels of compiler warnings for (Objective) C and C++:
-the LEVEL value can be one of: 'no min yes max all'.  The default is
-'yes' in 'maintainer-mode' (see below) and 'min' otherwise.  This option
-defines 'WARNING_[OBJ]C[XX]FLAGS' but these flags are not used in all
-library and program modules.  Using them should help to resolve
-portability problems.
+Enable various levels of compiler warnings for C, C++, and/or
+Objective C: the LEVEL value can be one of: 'no min yes max all'.  The
+default is 'yes' in 'maintainer-mode' (see below) and 'min' otherwise.
+This option defines the variables 'WARNING_[OBJ]C[XX]FLAGS', but these
+variables are not consistently used in all library and program modules.
+At present, these warning flags assume options from the GNU compilers.
 
-   At present, these warning flags are only defined for the GNU
-compilers but flags for other compilers could be added when needed.
-
 7.1.6 '--enable-cxx-runtime-hack'
 ---------------------------------
 
-If enabled (as it is for the native TL build) and when using 'g++', try
-to statically link with 'libstdc++', somewhat improving portability of
-the resulting binary.  *Note Macros for compilers::.
+If enabled (as it is for the native TL build), when using 'g++', try to
+statically link with 'libstdc++', thus improving portability of the
+resulting binary.  *Note Macros for compilers::.
 
 7.1.7 '--enable-maintainer-mode'
 --------------------------------
@@ -114,11 +111,12 @@
 7.1.8 '--enable-multiplatform'
 ------------------------------
 
-If enabled and '--bindir=DIR' or '--libdir=DIR' are not specified,
-install executables and libraries in per-platform subdirectories of
-'EPREFIX/bin' and 'EPREFIX/lib' where EPREFIX is the value given or
-implied for 'exec_prefix'.  In any case, the values for 'bindir' and
-'libdir' are automatically propagated to all subdirectories.
+If enabled (as it is for the native TL build) and '--bindir=DIR' or
+'--libdir=DIR' are not specified, install executables and libraries in
+per-platform subdirectories of 'EPREFIX/bin' and 'EPREFIX/lib' where
+EPREFIX is the value given or implied for 'exec_prefix'.  In any case,
+the values for 'bindir' and 'libdir' are automatically propagated to all
+subdirectories.
 
 7.1.9 '--enable-shared'
 -----------------------
@@ -131,9 +129,9 @@
 ------------------------------
 
 Enable the use of less verbose build rules.  When using GNU 'make' (or
-another 'make' implementation supporting nested variable expansions),
-you can specify 'V=1' on the 'make' command line to get more verbosity,
-or 'V=0' to get less, regardless of this option.
+any 'make' implementation supporting nested variable expansions), you
+can specify 'V=1' on the 'make' command line to get more verbosity, or
+'V=0' to get less, regardless of this option.
 
 7.1.11 '--without-ln-s'
 -----------------------
@@ -140,7 +138,7 @@
 
 Required when using a system without a working 'ln -s' to build binaries
 for a Unix-like system.  However, 'make install' will not create
-anything useful and might even fail.
+anything useful, and might fail.
 
 7.1.12 '--without-x'
 --------------------
@@ -155,7 +153,7 @@
 7.2.1 '--enable-PROG', '--disable-PROG'
 ---------------------------------------
 
-Do or do not build and install the program(s) of the module 'PROG'.
+Do or do not build and install the program(s) of module 'PROG'.
 
 7.2.2 '--disable-all-pkgs'
 --------------------------
@@ -165,10 +163,7 @@
 program, which is specified with an additional '--enable' option, e.g.,
 '--enable-dvipdfm-x'.  It's still simplest to check out and configure
 the whole source tree, but at least only the program you are interested
-in, and its dependencies, are built.  The 'configure' will generally
-take less than a minute with everything disabled.  (It is a good idea to
-run 'make check' after doing this, and after making any changes, to
-ensure that whatever tests have been written still pass.)
+in, and its dependencies, are built.  *Note Build one package::.
 
    Without this option, all modules are built except those that are
 explicitly disabled or specify 'disable' in their 'ac/withenable.ac'
@@ -178,13 +173,13 @@
 ----------------------------------------
 
 '--with-banner-add=STR'
-Add 'STR' to the default version string ('TeX Live YEAR' or 'Web2C
-YEAR') appended to banner lines.  This is ignored for a native TL build,
-but distro builds should specify, e.g., '/SOMEDISTRO'.
+Add 'STR' to the default version string (which is ''TeX Live YEAR'' or
+''Web2C YEAR'') appended to banner lines.  This is ignored for a native
+TL build, but distro builds should specify, e.g., '/SOMEDISTRO'.
 
 '--with-editor=CMD'
-Specify the command 'CMD' to invoke from the 'e' option of TeX-like
-engines, replacing the default 'vi +%d '%s'' for Unix or 'texworks
+Specify the command 'CMD' to invoke from the 'e' option of TeX and
+friends, replacing the default 'vi +%d '%s'' for Unix or 'texworks
 --position=%d "%s"' for Windows.
 
 '--with-fontconfig-includes=DIR', '--with-fontconfig-libdir=DIR'
@@ -213,8 +208,8 @@
 (defaults are defined in the fragment 'texk/web2c/ac/web2c.ac').
 
 '--disable-web-progs'
-Do not build the core WEB programs 'bibtex', ..., 'weave'.  Useful if,
-e.g., you only want to (re)build some engines.
+Do not build the original WEB programs 'bibtex', ..., 'weave'.  Useful
+if, e.g., you only want to (re)build some engines.
 
 '--enable-auto-core'
 This option causes TeX and Metafont to produce a core dump when a
@@ -227,12 +222,12 @@
 'libexpat'.
 
 '--enable-*win'
-Include various types of other window support for Metafont (EPSF output,
-'mftalk', old terminals, ...).
+Include various types of non-X window support for Metafont (EPSF output,
+'mftalk', old graphics terminals, ...).
 
 '--enable-tex-synctex', '--disable-etex-synctex', ...
 Build the TeX engines with or without 'SyncTeX' support; ignored for a
-native TeX Live build, defaults are again defined in
+native TeX Live build.  Defaults are defined in
 'texk/web2c/ac/web2c.ac'.
 
 '--disable-synctex'
@@ -261,7 +256,7 @@
 'dvipdfmx', with backward-compatible (very slightly different) behavior.
 
 '--disable-dvipdfmx'
-Do not build the 'dvipdfmx' program with the 'dvipdfm' symlink.
+Do not build the 'dvipdfmx' program or make the 'dvipdfm' symlink.
 
 '--disable-xdvipdfmx'
 Do not build the 'xdvipdfmx' program.
@@ -272,8 +267,8 @@
 '--with-system-libgs'
 Build 'dvisvgm' using installed Ghostscript ('gs') headers and library
 (not allowed for a native TL build).  The default is to load the 'gs'
-library at runtime if possible, or otherwise disable support for
-PostScript specials.
+library at runtime if possible, else to disable support for PostScript
+specials.
 
 '--without-libgs'
 Build 'dvisvgm' without PostScript support at all.  Because the dynamic
@@ -294,7 +289,7 @@
 ----------------------------------------
 
 '--with-gs=FILENAME'
-Hardwire the location of Ghostscript ('gs').
+Hardwire the location of Ghostscript ('gs') as called by Xdvik.
 
 '--with-xdvi-x-toolkit=KIT'
 Use toolkit 'KIT' for 'xdvik', one of: 'motif xaw xaw3d neXtaw'.  The
@@ -301,8 +296,8 @@
 default is 'motif' if available, else 'xaw'.
 
 '--enable-xi2-scrolling'
-Use XInput 2.1 "smooth scrolling" if available.  (default: yes, except
-for a native TL build).
+Use XInput 2.1 "smooth scrolling" if available (default: yes, except for
+a native TL build).
 
 7.2.9 Configure options for 'utils/xindy'
 -----------------------------------------
@@ -316,13 +311,12 @@
 native TL build).
 
 '--with-clisp-runtime=FILENAME'
-Specifies the Full path for the CLISP runtime file ('lisp.run' or
+Specifies the full path for the Clisp runtime file ('lisp.run' or
 'lisp.exe') to be installed.  When specified as 'default' (the default
-for a native TL build) the path is determined by the CLISP executable;
+for a native TL build) the path is determined by the Clisp executable;
 the value 'system' (not allowed for a native TL build, but the default
-for a non-native one) indicates that 'xindy' will use the installed
-version of 'clisp' (which must be identical to the one used to build
-'xindy').
+otherwise) indicates that 'xindy' will use the installed version of
+'clisp' (which must be identical to the one used to build 'xindy').
 
 7.3 Library-specific configure options
 ======================================
@@ -335,7 +329,7 @@
    Use an installed (system) version of the library 'LIB'; this option
 exists for most libraries, but is not allowed for a native TL build.
 Using a system version implies also using the system versions of all
-libraries (if any) that LIB depends on.
+libraries that LIB depends on.
 
    For many libraries '--with-LIB-includes=DIR' and
 '--with-LIB-libdir=DIR' can specify non-standard search locations;
@@ -348,7 +342,8 @@
 --------------------------------------
 
 '--enable-CMD-default', '--disable-CMD-default'
-Determine the compile time default whether or not to run CMD, one of:
+Determine the compile time default for whether or not to run CMD, which
+is one of:
 'mkocp'
      (Omega compiled translation process file)
 'mkofm'
@@ -365,15 +360,14 @@
      (TFM file)
 
 to generate the specified type of file dynamically.  The default can be
-overridden by the user in any case.
+overridden by the user in any case (*note kpathsea library::).
 
 7.3.2 Configure options for system 'poppler'
 --------------------------------------------
 
-Building LuaTeX (or LuaJITTeX) and XeTeX requires 'poppler', either from
-the TL tree or system headers and library.  Building pdfTeX requires
-either 'xpdf' from the TeX Live tree or system 'poppler' headers and
-library.
+Building XeTeX requires 'poppler', either from the TL tree or system
+headers and library.  Building pdfTeX requires either 'xpdf' from the
+TeX Live tree or system 'poppler' headers and library.
 
 '--with-system-poppler'
 Use a system version (0.18 or newer) of 'poppler' for LuaTeX (or
@@ -380,9 +374,8 @@
 LuaJITTeX) and XeTeX, and use 'pkg-config' to obtain the required flags.
 
 '--with-system-xpdf'
-Use a system version (0.12 or better) of 'poppler' (and 'pkg-config')
-for pdfTeX instead of 'xpdf' from the TL tree.  *Note
---disable-largefile::.
+Use a system version (0.12 or newer) of 'poppler' (and 'pkg-config') for
+pdfTeX instead of 'xpdf' from the TL tree.  *Note --disable-largefile::.
 
 7.4 Variables for configure
 ===========================
@@ -396,7 +389,7 @@
 'CPPFLAGS'
      And plenty more.  As usual with Autoconf, these variables specify
      the name (or full path) of compilers, preprocessor flags, and
-     similar.  *Note autoconf: (GNU Autoconf)Preset Output Variables.
+     similar.  *Note (autoconf)Preset Output Variables::.
 
 'CLISP'
      Name (or full path) of the 'clisp' executable, used to build
@@ -408,7 +401,7 @@
      These specify the name (or path) for the 'freetype-config',
      'icu-config', and 'pkg-config' commands used to determine the flags
      required for system versions of 'libfreetype', the ICU libraries,
-     or many other libraries.
+     and other libraries, respectively.
 
 'KPSEWHICH'
      Name (or path) of an installed 'kpsewhich' binary, used by 'make

Modified: trunk/Build/source/README.6coding
===================================================================
--- trunk/Build/source/README.6coding	2020-03-13 16:57:49 UTC (rev 54276)
+++ trunk/Build/source/README.6coding	2020-03-13 17:12:03 UTC (rev 54277)
@@ -10,9 +10,9 @@
 considerable efforts into that direction we are still far from that goal
 and there are reasons that we may never fully reach it.  Below are some
 rules about declarations of functions or variables and the use of
-'const'.  These rules should be applied to most of the TeX Live tree,
-the exception being code that is maintained independently and whose
-maintainers don't want to accept patches.
+'const'.  These rules should be applied to the code maintained in the
+TeX Live tree and for other packages whose maintainers are willing to
+accept patches.
 
 8.1 Declarations and definitions
 ================================
@@ -25,7 +25,7 @@
 standard (including 'void' in the declaration of C functions with no
 parameters).  On the other hand, TL is built for a wide variety of
 systems, not all of which support the C99 standard.  Therefore using C99
-features should be avoided if that can easily be done.  In particular C
+features should be avoided if that can easily be done.  In particular, C
 code must not contain declarations after statements or C++-style
 comments.
 
@@ -34,7 +34,7 @@
 For example, the module 'texk/chktex' uses the C99 function 'stpcpy()'
 that may or may not be available on a particular system.  It uses
 'AC_CHECK_DECLS([stpcpy])' in 'configure.ac' to test this, and provides
-the perhaps slightly less efficient alternative
+a perhaps less efficient alternative (in the file 'Utility.h'):
 
      #if !(defined HAVE_DECL_STPCPY && HAVE_DECL_STPCPY)
      static inline char *stpcpy(char *dest, const char *src)
@@ -43,13 +43,11 @@
      }
      #endif
 
-in the file 'Utility.h'.
-
 Static functions
 ................
 
 Functions used in only one file should be declared 'static'; they
-require no prototype except as forward declaration.
+require no prototype except in forward declarations.
 
 Extern functions
 ................
@@ -90,8 +88,8 @@
    Getting all 'const' qualifiers right can get quite involved but can
 almost always be done.  There are only a couple notable exceptions: the
 X11 headers are full of declarations that ought to use 'const' but do
-not, and the same is true to some extent for 'libfreetype' (but,
-thankfully, not for 'zlib' nowadays).
+not; at one time, 'libfreetype' also did not fully specify 'const', but
+this has not been checked recently.
 
 What must be avoided with 'const'
 .................................
@@ -98,8 +96,8 @@
 
 The GCC compiler warnings "assignment discards qualifiers..." and
 analogous warnings for "initialization", "passing arg", or "return" must
-be strenously avoided in our own code.  The only exception is when they
-are caused by X11 headers or macros or other third party code.
+be strenuously avoided in our own code.  The only exception is when they
+are caused by X11 declarations or other third party code.
 
 What should be avoided with 'const'
 ...................................

Modified: trunk/Build/source/README.7continuous
===================================================================
--- trunk/Build/source/README.7continuous	2020-03-13 16:57:49 UTC (rev 54276)
+++ trunk/Build/source/README.7continuous	2020-03-13 17:12:03 UTC (rev 54277)
@@ -5,10 +5,9 @@
 9 Continuous integration
 ************************
 
-Overview: the sources of TeX Live are subjected to continuous
-integration testing on Travis-CI
-(<https://travis-ci.org/TeX-Live/texlive-source>) via a git-svn mirror
-of the sources that is pushed to Github
+The TeX Live sources are subjected to continuous integration testing on
+Travis-CI (<https://travis-ci.org/TeX-Live/texlive-source>) via a
+git-svn mirror of the sources that is pushed to Github
 (<https://github.com/TeX-Live/texlive-source>).  The git-svn mirror is
 updated (currently) at 30 minute intervals, and only the last commit
 pushed is tested on Travis-CI.
@@ -16,39 +15,40 @@
 9.1 Transfer from Subversion to Github
 ======================================
 
-git-svn (<https://git-scm.com/docs/git-svn>) is used to check out the
-subtree 'Build/source' of the Subversion repository.  The author index
-file used is not maintained in either Git or Subversion but can be
-provided on request.
+The git-svn program (<https://git-scm.com/docs/git-svn>) is used to
+check out the subtree 'Build/source' of the canonical Subversion
+repository.  The author index file used is not maintained in either Git
+or Subversion but can be provided on request.
 
    The initial checkout was done by invoking
-     git svn --authors-file usermap clone svn://USER@tug.org/texlive/trunk/Build/source
+     git svn --authors-file usermap clone \
+       svn://USER@tug.org/texlive/trunk/Build/source
 
 where the 'usermap' file maps Subversion user names to name and emails
-of the authors.  If no user account at <tug.org> is available, anonymous
-checkout is possible, too:
-     git svn --authors-file usermap clone svn://tug.org/texlive/trunk/Build/source
+of the authors.  Anonymous checkout is also possible:
+     git svn --authors-file usermap clone \
+       svn://tug.org/texlive/trunk/Build/source
 
    In the following, we will use _admin_ to refer to a user who has
 read/write access to the TeX Live subversion repository, and is also an
-administrator of the 'TeX-Live' Team on Github.  The above initial
+administrator of the ''TeX-Live'' team at Github.  The above initial
 checkout has been carried out by _admin_ on the server 'texlive.info'.
 
-   On Github (<https://github.com>), a new git repository named
-'texlive-source' was created by _admin_ within the 'TeX-Live'
-"organization" (<https://github.com/TeX-Live>).  The remote was added to
-the checkout with 'git remote add origin
-git at github.com:TeX-Live/texlive-source.git'.
+   On Github, a new git repository named 'texlive-source' was created by
+_admin_ within the 'TeX-Live' "organization"
+(<https://github.com/TeX-Live>).  The remote was added to the checkout
+with 'git remote add origin git at github.com:TeX-Live/texlive-source.git'.
 
    To automate the update on Github, a new ssh key was generated and
 added to the 'texlive-source' repository on Github as deployment key.
-This way pushes using this key can only go to the 'texlive-source'
+Thus, pushes using this key can only go to the 'texlive-source'
 repository and not anywhere else.
 
    The usage of 'git-svn' requires a strict discipline to keep a linear
 history in the master branch.  Since we are aiming at a pure mirror
-facility, we have decided to further restrict the 'master' branch of the
-'texlive-source' repository on Github to changes by _admin_.
+facility on Github, we have decided to further restrict the 'master'
+branch of the 'texlive-source' repository on Github to changes by
+_admin_.
 
    This setup allows other developers to branch off 'master' and push
 their branches to the Github repository, but all updates need to come
@@ -62,7 +62,7 @@
 minute which essentially runs 'git svn rebase' and 'git push' in the
 'master' branch of the checkout.  The first command fetches the changes
 from the Subversion repository and updates the 'master' branch with
-them, the second one pushes changes (if available) to Github.
+them, and the second pushes changes (if any) to Github.
 
 9.3 CI testing on Travis-CI
 ===========================
@@ -69,7 +69,7 @@
 
 The 'source' tree of TeX Live contains a top-level file '.travis.yml'
 which controls the automatic testing on Travis-CI. _admin_ has
-registered to Travis-CI and allowed access to the Github's 'TeX-Live'
+registered with Travis-CI and allowed access to the Github's 'TeX-Live'
 organization's 'texlive-source' repository.  The default settings are to
 build the last commit of each push.  No further action is necessary on
 Travis-CI.
@@ -77,3 +77,17 @@
    If changes have been pushed via the cron job above, Travis-CI will
 automatically checkout the last pushed commit and try building it.
 
+9.4 Releases on Github
+======================
+
+Given a git checkout of 'texlive-source':
+
+     git pull
+     git tag build-svnNNNN
+     git push --tags
+
+and the result will appear at
+<https://github.com/TeX-Live/texlive-source/releases>.  Releases can
+also be made manually from that web page (see 'tl-update-bindir' for
+hints).
+

Modified: trunk/Build/source/doc/ChangeLog
===================================================================
--- trunk/Build/source/doc/ChangeLog	2020-03-13 16:57:49 UTC (rev 54276)
+++ trunk/Build/source/doc/ChangeLog	2020-03-13 17:12:03 UTC (rev 54277)
@@ -1,3 +1,9 @@
+2020-03-13  Karl Berry  <karl at tug.org>
+
+	* tlbuild.texi: update for 2020.
+
+	* build-tools.txt: bison 3.5.2.
+
 2019-12-22  Karl Berry  <karl at freefriends.org>
 
 	* build-tools.txt: bison 3.5.

Modified: trunk/Build/source/doc/Makefile.am
===================================================================
--- trunk/Build/source/doc/Makefile.am	2020-03-13 16:57:49 UTC (rev 54276)
+++ trunk/Build/source/doc/Makefile.am	2020-03-13 17:12:03 UTC (rev 54277)
@@ -1,6 +1,7 @@
+## $Id$
 ## Makefile.am for the TeX Live subdirectory ./doc/
 ##
-## Copyright 2015-2018 Karl Berry <tex-live at tug.org>
+## Copyright 2015-2020 Karl Berry <tex-live at tug.org>
 ## Copyright 2013-2015 Peter Breitenlohner <tex-live at tug.org>
 ## You may freely use, modify and/or distribute this file.
 ##
@@ -29,7 +30,7 @@
 	svn diff $(top_srcdir)/README.* >/tmp/sd
 	svn status $(top_srcdir)/README.*
 #
-.PHONY: readme-files readme-install
+.PHONY: readme-files readme-install script-links
 
 # 
 autogenerate texinfo from install-tl and tlmgr pod.
 # none of this is intended to be executed except manually.
@@ -68,10 +69,14 @@
 
 # we don't actually use the (autogenerated) -incl.texi file,
 # but it makes for a convenient target.
-# 
+
 # First make symlinks in build dir:
-# ln -s .../tlmgr.pl .../Build/source/Work/doc
-# ln -s .../install-tl .../Build/source/Work/doc
+Master = $(top_srcdir)/../../Master
+script-links:
+	rm -f tlmgr.pl install-tl
+	ln -s $(Master)/install-tl .
+	ln -s $(Master)/texmf-dist/scripts/texlive/tlmgr.pl .
+
 $(mydoc)-incl.texi: install-tl tlmgr.pl 
 	$(pod2texi) -o $@ --subdir=$(mydoc)-incl $(pod2texi_args) $^
 	cp $(mydoc)-incl/tlmgr.texi $(mydoc)-incl/tlmgr.texi.orig


Property changes on: trunk/Build/source/doc/Makefile.am
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision
\ No newline at end of property
Modified: trunk/Build/source/doc/Makefile.in
===================================================================
--- trunk/Build/source/doc/Makefile.in	2020-03-13 16:57:49 UTC (rev 54276)
+++ trunk/Build/source/doc/Makefile.in	2020-03-13 17:12:03 UTC (rev 54277)
@@ -493,6 +493,12 @@
 #
 install_node_bad = ref{tlmgr install [option...] pkg...,
 install_node_good = ref{tlmgr install [\@emph{option}...] \@emph{pkg}...,
+
+# we don't actually use the (autogenerated) -incl.texi file,
+# but it makes for a convenient target.
+
+# First make symlinks in build dir:
+Master = $(top_srcdir)/../../Master
 all: all-am
 
 .SUFFIXES:
@@ -946,14 +952,12 @@
 	svn diff $(top_srcdir)/README.* >/tmp/sd
 	svn status $(top_srcdir)/README.*
 #
-.PHONY: readme-files readme-install
+.PHONY: readme-files readme-install script-links
+script-links:
+	rm -f tlmgr.pl install-tl
+	ln -s $(Master)/install-tl .
+	ln -s $(Master)/texmf-dist/scripts/texlive/tlmgr.pl .
 
-# we don't actually use the (autogenerated) -incl.texi file,
-# but it makes for a convenient target.
-# 
-# First make symlinks in build dir:
-# ln -s .../tlmgr.pl .../Build/source/Work/doc
-# ln -s .../install-tl .../Build/source/Work/doc
 $(mydoc)-incl.texi: install-tl tlmgr.pl 
 	$(pod2texi) -o $@ --subdir=$(mydoc)-incl $(pod2texi_args) $^
 	cp $(mydoc)-incl/tlmgr.texi $(mydoc)-incl/tlmgr.texi.orig

Modified: trunk/Build/source/doc/build-tools.txt
===================================================================
--- trunk/Build/source/doc/build-tools.txt	2020-03-13 16:57:49 UTC (rev 54276)
+++ trunk/Build/source/doc/build-tools.txt	2020-03-13 17:12:03 UTC (rev 54277)
@@ -1,6 +1,6 @@
 autoconf (GNU Autoconf) 2.69
 automake (GNU automake) 1.16.1
-bison (GNU Bison) 3.5.1
+bison (GNU Bison) 3.5.2
 flex 2.6.0
 ltmain.sh (GNU libtool) 2.4.6
 m4 (GNU M4) 1.4.18

Modified: trunk/Build/source/doc/tlbuild-incl/install-tl.texi
===================================================================
--- trunk/Build/source/doc/tlbuild-incl/install-tl.texi	2020-03-13 16:57:49 UTC (rev 54276)
+++ trunk/Build/source/doc/tlbuild-incl/install-tl.texi	2020-03-13 17:12:03 UTC (rev 54277)
@@ -30,10 +30,10 @@
 @appendixsec DESCRIPTION
 
 This installer creates a runnable TeX Live installation from various
-media, including over the network, from local hard disk, a DVD, etc.
-The installer works across all platforms supported by TeX Live.  For
-information on initially downloading the TeX Live, see
- at url{http://tug.org/texlive/acquire.html}.
+media, including over the network, from local hard disk, a DVD, etc. The
+installer works on all platforms supported by TeX Live. For information
+on initially downloading TeX Live, see
+ at url{https://tug.org/texlive/acquire.html}.
 
 The basic idea of TeX Live installation is for you to choose one of the
 top-level @emph{schemes}, each of which is defined as a different set of
@@ -51,15 +51,15 @@
 @node install-tl REFERENCES
 @appendixsec REFERENCES
 
-Post-installation configuration, package updates, and much more, are
+Post-installation configuration, package updates, and more, are
 handled through @strong{tlmgr}(1), the TeX Live Manager
-(@url{http://tug.org/texlive/tlmgr.html}).
+(@url{https://tug.org/texlive/tlmgr.html}).
 
 The most up-to-date version of this installer documentation is on the
-Internet at @url{http://tug.org/texlive/doc/install-tl.html}.
+Internet at @url{https://tug.org/texlive/doc/install-tl.html}.
 
 For the full documentation of TeX Live, see
- at url{http://tug.org/texlive/doc}.
+ at url{https://tug.org/texlive/doc}.
 
 @node install-tl OPTIONS
 @appendixsec OPTIONS
@@ -72,7 +72,7 @@
 @item @strong{-gui} [[=]@emph{module}]
 @anchor{install-tl @strong{-gui} [[=]@emph{module}]}
 
-If no @emph{module} is given, starts the @code{perltk} (see below) GUI installer.
+If no @emph{module} is given, starts the Tcl/Tk (see below) GUI installer.
 
 If @emph{module} is given loads the given installer module. Currently the
 following modules are supported:
@@ -84,97 +84,92 @@
 The text mode user interface (default on Unix systems).  Same as the
 @code{-no-gui} option.
 
+ at item @code{tcl}
+ at anchor{install-tl @code{tcl}}
+
+The Tcl/Tk user interface (default on Macs and Windows).  It starts
+with a small number of configuration options, roughly equivalent
+to what the wizard option below offers, but a button @code{Advanced}
+takes you to a screen with roughly the same options as the @code{perltk}
+interface.
+
 @item @code{wizard}
 @anchor{install-tl @code{wizard}}
 
-The wizard mode user interface (default on Windows), asking only minimal
-questions before installing all of TeX Live.
+The wizard mode user interface, asking only minimal questions before
+installing all of TeX Live.
 
+ at item @code{expert}
+ at anchor{install-tl @code{expert}}
+
+A generic name for, currently, @code{perltk}; it may select a different GUI
+in the future.
+
 @item @code{perltk}
 @anchor{install-tl @code{perltk}}
 
-The expert GUI installer, providing access to more options.  
-Can also be invoked on Windows by running @code{install-tl-advanced.bat}.
+The expert GUI installer, providing access to more options.
 
 @end table
 
-The @code{perltk} and @code{wizard} modules, and thus also when calling with
-bare @code{-gui} (with no @emph{module}), require the Perl/Tk module
-(@url{http://tug.org/texlive/distro.html#perltk}); if Perl/Tk is not
-available, installation continues in text mode.
+The @code{perltk} and @code{wizard} modules require the Perl/Tk module
+(@url{https://tug.org/texlive/distro.html#perltk}). if Perl/Tk is not
+available, installation continues in text mode, except on Windows,
+where all gui options except @code{text} are diverted to the default
+ at code{tcl} GUI.
 
+The @code{tcl} GUI requires Tcl/Tk. This is standard on Macs and is often
+already installed on GNU/Linux. For Windows, TeX Live provides a Tcl/Tk
+runtime.
+
 @item @strong{-no-gui}
 @anchor{install-tl @strong{-no-gui}}
 
-Use the text mode installer (default except on Windows).
+Use the text mode installer (default except on Windows and Macs).
 
 @item @strong{-lang} @emph{llcode}
 @anchor{install-tl @strong{-lang} @emph{llcode}}
 
-By default, the GUI tries to deduce your language from the environment
-(on Windows via the registry, on Unix via @code{LC_MESSAGES}). If that fails
-you can select a different language by giving this option with a
-language code (based on ISO 639-1).  Currently supported (but not
-necessarily completely translated) are: English (en, default), Czech
-(cs), German (de), French (fr), Italian (it), Japanese (ja), Dutch (nl),
-Polish (pl), Brazilian Portuguese (pt_BR), Russian (ru), Slovak (sk),
-Slovenian (sl), Serbian (sr), Ukrainian (uk), Vietnamese (vi),
-simplified Chinese (zh_CN), and traditional Chinese (zh_TW).
+By default, the GUI tries to deduce your language from the
+environment. The Tcl GUI uses the language detection built into
+Tcl/Tk; the Perl/Tk GUIs use the @code{LC_MESSAGES} environment
+variable. If that fails you can select a different language by
+giving this option with a language code (based on ISO 639-1).
+Currently supported (but not necessarily completely translated) are:
+English (en, default), Czech (cs), German (de), French (fr), Italian
+(it), Japanese (ja), Dutch (nl), Polish (pl), Brazilian Portuguese
+(pt_BR), Russian (ru), Slovak (sk), Slovenian (sl), Serbian (sr),
+Ukrainian (uk), Vietnamese (vi), simplified Chinese (zh_CN), and
+traditional Chinese (zh_TW).
 
 @item @strong{-repository} @emph{url|path}
 @anchor{install-tl @strong{-repository} @emph{url|path}}
 
 Specify the package repository to be used as the source of the
-installation, either a local directory via @code{/path/to/directory} or a
- at code{file:/} url, or a network location via a @code{http://}, @code{https://}, or
- at code{ftp://} url.  (No other protocols are supported, and @code{https://} may
-not work on all platforms.)
+installation. In short, this can be a directory name or a url using
+http(s), ftp, or scp. The documentation for @code{tlmgr} has the details
+(@url{https://tug.org/texlive/doc/tlmgr.html#OPTIONS}).
 
-The default is to pick a mirror automatically, using
+For installation, the default is to pick a mirror automatically, using
 @url{http://mirror.ctan.org/systems/texlive/tlnet}; the chosen mirror is
-used for the entire download.  You can use the special argument @code{ctan}
-as an abbreviation for this.  See @url{http://ctan.org} for more about CTAN
-and its mirrors.
+used for the entire download. You can use the special argument @code{ctan}
+as an abbreviation for this. (See @url{https://ctan.org} for more about CTAN
+and its mirrors.)
 
-If the repository is on the network, trailing @code{/} characters and/or
-trailing @code{/tlpkg} and @code{/archive} components are ignored.  For example,
-you could choose a particular CTAN mirror with something like this:
-
- at verbatim
-  -repository http://ctan.example.org/its/ctan/dir/systems/texlive/tlnet
- at end verbatim
-
-Of course a real hostname and its particular top-level CTAN directory
-have to be specified.  The list of CTAN mirrors is available at
- at url{http://ctan.org/mirrors}.
-
-If the repository is local, the installation type (compressed or live) is
-automatically determined, by checking for the presence of a
- at code{archive} directory relative to the root.  Compressed is
-preferred if both are available, since it is faster.  Here's an example
-of using a local directory:
-
- at verbatim
-  -repository /local/TL/repository
- at end verbatim
-
 After installation is complete, you can use that installation as the
 repository for another installation.  If you chose to install less than
 the full scheme containing all packages, the list of available schemes
 will be adjusted accordingly.
 
-For backward compatibility and convenience, @code{--location} and @code{--repo}
-are accepted as aliases for this option.
-
 @item @strong{-select-repository}
 @anchor{install-tl @strong{-select-repository}}
 
-This option allows manual selection of a mirror from the current list of
-active CTAN mirrors.  This option is supported in all installer modes
-(text, wizard, perltk), and will also offer to install from local media
-if available, or from a repository specified on the command line (see
-above).  It's useful when the (default) automatic redirection does not
-choose a good host for you.
+This option allows you to choose a particular mirror from the current
+list of active CTAN mirrors. This option is supported in the @code{text},
+ at code{wizard} and @code{perltk} installer modes, and will also offer to install
+from local media if available, or from a repository specified on the
+command line. It's useful when the (default) automatic redirection does
+not choose a good host for you.
 
 @item @strong{-all-options}
 @anchor{install-tl @strong{-all-options}}
@@ -198,14 +193,14 @@
 @code{custom} before doing each.
 
 For more information on custom binaries, see
- at url{http://tug.org/texlive/custom-bin.html}.  For general information on
-building TeX Live, see @url{http://tug.org/texlive/build.html}.
+ at url{https://tug.org/texlive/custom-bin.html}.  For general information on
+building TeX Live, see @url{https://tug.org/texlive/build.html}.
 
 @item @strong{-debug-translation}
 @anchor{install-tl @strong{-debug-translation}}
 
-In GUI mode, this switch makes @code{tlmgr} report any missing, or more
-likely untranslated, messages to standard error.  Helpful for
+In the Perl/Tk GUI modes, this option reports any missing, or more
+likely untranslated, messages to standard error. Helpful for
 translators to see what remains to be done.
 
 @item @strong{-force-platform} @emph{platform}
@@ -218,12 +213,12 @@
 @item @strong{-help}, @strong{--help}, @strong{-?}
 @anchor{install-tl @strong{-help}@comma{} @strong{--help}@comma{} @strong{-?}}
 
-Display this help and exit.  (This help is on the web at
- at url{http://tug.org/texlive/doc/install-tl.html}).  Sometimes the
- at code{perldoc} and/or @code{PAGER} programs on the system have problems,
-possibly resulting in control characters being literally output.  This
-can't always be detected, but you can set the @code{NOPERLDOC} environment
-variable and @code{perldoc} will not be used.
+Display this help and exit. (This help is also on the web at
+ at url{https://tug.org/texlive/doc/install-tl.html}). Sometimes the @code{perldoc}
+and/or @code{PAGER} programs on the system have problems, possibly resulting
+in control characters being literally output. This can't always be
+detected, but you can set the @code{NOPERLDOC} environment variable and
+ at code{perldoc} will not be used.
 
 @item @strong{-in-place}
 @anchor{install-tl @strong{-in-place}}
@@ -239,9 +234,9 @@
 @item @strong{-init-from-profile} @emph{profile_file}
 @anchor{install-tl @strong{-init-from-profile} @emph{profile_file}}
 
-Similar to @strong{-profile} (see @ref{install-tl PROFILES,, PROFILES} below), but only initializes the
-installation configuration from @emph{profile_file} and then starts the
-interactive session.
+Similar to @strong{-profile} (see @ref{install-tl PROFILES,, PROFILES} below), but only initializes
+the installation configuration from @emph{profile_file} and then starts a
+normal interactive session. Environment variables are not ignored.
 
 @item @strong{-logfile} @emph{file}
 @anchor{install-tl @strong{-logfile} @emph{file}}
@@ -260,17 +255,12 @@
 For the text mode installer only: do not clear the screen when entering
 a new menu (for debugging purposes).
 
- at item @strong{-non-admin}
- at anchor{install-tl @strong{-non-admin}}
+ at item @strong{-no-persistent-downloads}
+ at anchor{install-tl @strong{-no-persistent-downloads}}
 
-For Windows only: configure for the current user, not for all users.
-
 @item @strong{-persistent-downloads}
 @anchor{install-tl @strong{-persistent-downloads}}
 
- at item @strong{-no-persistent-downloads}
- at anchor{install-tl @strong{-no-persistent-downloads}}
-
 For network installs, activating this option makes the installer try to
 set up a persistent connection using the @code{Net::LWP} Perl module.  This
 opens only one connection between your computer and the server per
@@ -288,8 +278,13 @@
 verified against a cryptographic signature. This option disables such
 verification.  The full description is in the Crytographic Verification
 section of the @code{tlmgr} documentation, e.g.,
- at url{http://tug.org/texlive/doc/tlmgr.html#CRYPTOGRAPHIC-VERIFICATION}
+ at url{https://tug.org/texlive/doc/tlmgr.html#CRYPTOGRAPHIC-VERIFICATION}
 
+ at item @strong{-non-admin}
+ at anchor{install-tl @strong{-non-admin}}
+
+For Windows only: configure for the current user, not for all users.
+
 @item @strong{-portable}
 @anchor{install-tl @strong{-portable}}
 
@@ -307,7 +302,8 @@
 @anchor{install-tl @strong{-profile} @emph{profile_file}}
 
 Load @emph{profile_file} and do the installation with no user interaction,
-that is, a batch (unattended) install.  See @ref{install-tl PROFILES,, PROFILES} below.
+that is, a batch (unattended) install.  Environment variables are
+ignored. See @ref{install-tl PROFILES,, PROFILES} below.
 
 @item @strong{-q}
 @anchor{install-tl @strong{-q}}
@@ -334,8 +330,8 @@
 @item @strong{-version}, @strong{--version}
 @anchor{install-tl @strong{-version}@comma{} @strong{--version}}
 
-Output version information and exit.  If @code{-v} has also been given the
-revisions of the used modules are reported, too.
+Output version information and exit.  If @code{-v} is also given, the
+versions of the TeX Live modules used are also reported.
 
 @end table
 
@@ -346,12 +342,18 @@
 installation.  After a normal installation has finished, a profile for
 that exact installation is written to the file @code{tlpkg/texlive.profile}.
 In addition, from the text menu one can select @code{P} to save the current
-setup as a profile at any time.  Such a profile file can be given as the
-argument to @code{-profile}, for example to redo the exact same installation
-on a different system.  Alternatively, you can use a custom profile,
-most easily created by starting from a generated one and changing
-values, or an empty file, which will take all the defaults.
+setup as a profile at any time.
 
+Such a profile file can be given as the argument to @code{-profile}, for
+example to redo the exact same installation on a different system.
+Alternatively, you can use a custom profile, most easily created by
+starting from a generated one and changing values, or an empty file,
+which will take all the defaults.
+
+As mentioned above, the installer only supports selection by scheme and
+collections, not individual packages, so packages cannot be specified in
+profile files either. Use @code{tlmgr} to work at the package level.
+
 Within a profile file, each line consists of
 
 @emph{variable} [@emph{value}]
@@ -441,7 +443,7 @@
 
 @strong{tlpdb options} (prefix @code{tlpdbopt_})
 
-The definitive list is given in @code{tlpkg/TeXLive/TLConfig.pm}, in
+The definitive list is given in @code{tlpkg/TeXLive/TLConfig.pm}, in the hash
 @code{%TeXLive::TLConfig::TLPDBOptions}, together with explanations.  All
 items given there @emph{except} for @code{tlpdbopt_location} can be specified.
 Here is the current list:
@@ -465,13 +467,13 @@
 @strong{platform options} (prefix @code{binary_})
 
 For each supported platform in TeX Live (directories under @code{bin/}), the
-variable @code{binary_}@emph{PLATFORM} can be set.  For example:
+variable @code{binary_}@emph{PLATFORM} can be set with value 1.  For example:
 
 @verbatim
-  binary_x86_64-linux
+  binary_x86_64-linux 1
 @end verbatim
 
-If no @code{binary_} variable is specified, the default is whatever the
+If no @code{binary_} settings are made, the default is whatever the
 current machine is running.
 
 In releases before 2017, many profile variables had different
@@ -480,16 +482,29 @@
 written, the names above are always used.
 
 For more details on all of the above options, consult the TeX Live
-installation manual, linked from @url{http://tug.org/texlive/doc}.
+installation manual, linked from @url{https://tug.org/texlive/doc}.
 
 @node install-tl ENVIRONMENT VARIABLES
 @appendixsec ENVIRONMENT VARIABLES
 
-For ease in scripting and debugging, @code{install-tl} will look for the
-following environment variables.  They are not of interest for normal
+For ease in scripting and debugging, @code{install-tl} looks for the
+following environment variables. They are not of interest for normal
 user installations.
 
 @table @asis
+ at item @code{TEXLIVE_DOWNLOADER}
+ at anchor{install-tl @code{TEXLIVE_DOWNLOADER}}
+
+ at item @code{TL_DOWNLOAD_PROGRAM}
+ at anchor{install-tl @code{TL_DOWNLOAD_PROGRAM}}
+
+ at item @code{TL_DOWNLOAD_ARGS}
+ at anchor{install-tl @code{TL_DOWNLOAD_ARGS}}
+
+These override the normal choice of a download program; see the @code{tlmgr}
+documentation, e.g.,
+ at url{https://tug.org/texlive/doc/tlmgr.html#ENVIRONMENT-VARIABLES}.
+
 @item @code{TEXLIVE_INSTALL_ENV_NOCHECK}
 @anchor{install-tl @code{TEXLIVE_INSTALL_ENV_NOCHECK}}
 
@@ -502,11 +517,17 @@
 
 Omit creating the ConTeXt cache.  This is useful for redistributors.
 
+ at item @code{TEXLIVE_INSTALL_NO_IMPORT}
+ at anchor{install-tl @code{TEXLIVE_INSTALL_NO_IMPORT}}
+
+Omit check for installing on top of a previous installation and then
+asking about importing previous settings.
+
 @item @code{TEXLIVE_INSTALL_NO_WELCOME}
 @anchor{install-tl @code{TEXLIVE_INSTALL_NO_WELCOME}}
 
 Omit printing the welcome message after successful installation, e.g.,
-for testing.
+when testing.
 
 @item @code{TEXLIVE_INSTALL_PREFIX}
 @anchor{install-tl @code{TEXLIVE_INSTALL_PREFIX}}
@@ -549,8 +570,8 @@
 @appendixsec AUTHORS AND COPYRIGHT
 
 This script and its documentation were written for the TeX Live
-distribution (@url{http://tug.org/texlive}) and both are licensed under the
+distribution (@url{https://tug.org/texlive}) and both are licensed under the
 GNU General Public License Version 2 or later.
 
-$Id: install-tl 46908 2018-03-10 00:46:28Z preining $
+$Id: install-tl 54143 2020-03-06 23:51:18Z karl $
 

Modified: trunk/Build/source/doc/tlbuild-incl/tlmgr.texi
===================================================================
--- trunk/Build/source/doc/tlbuild-incl/tlmgr.texi	2020-03-13 16:57:49 UTC (rev 54276)
+++ trunk/Build/source/doc/tlbuild-incl/tlmgr.texi	2020-03-13 17:12:03 UTC (rev 54277)
@@ -14,6 +14,7 @@
 * tlmgr MULTIPLE REPOSITORIES::
 * tlmgr GUI FOR TLMGR::
 * tlmgr MACHINE-READABLE OUTPUT::
+* tlmgr ENVIRONMENT VARIABLES::
 * tlmgr AUTHORS AND COPYRIGHT::
 @end menu
 
@@ -32,11 +33,11 @@
 
 @strong{tlmgr} manages an existing TeX Live installation, both packages and
 configuration options.  For information on initially downloading and
-installing TeX Live, see @url{http://tug.org/texlive/acquire.html}.
+installing TeX Live, see @url{https://tug.org/texlive/acquire.html}.
 
 The most up-to-date version of this documentation (updated nightly from
 the development sources) is available at
- at url{http://tug.org/texlive/tlmgr.html}, along with procedures for updating
+ at url{https://tug.org/texlive/tlmgr.html}, along with procedures for updating
 @code{tlmgr} itself and information about test versions.
 
 TeX Live is organized into a few top-level @emph{schemes}, each of which is
@@ -46,7 +47,7 @@
 each package is included in exactly one collection, no more and no less.
 A TeX Live installation can be customized and managed at any level.
 
-See @url{http://tug.org/texlive/doc} for all the TeX Live documentation
+See @url{https://tug.org/texlive/doc} for all the TeX Live documentation
 available.
 
 @node tlmgr EXAMPLES
@@ -65,10 +66,14 @@
 Tell @code{tlmgr} to use a nearby CTAN mirror for future updates; useful if
 you installed TeX Live from the DVD image and want to have continuing
 updates.  The two commands are equivalent; @code{ctan} is just an alias for
-the given url.  Caveat: @code{mirror.ctan.org} resolves to many different
-hosts, and they are not perfectly synchronized; we recommend updating
-only daily (at most), and not more often.
+the given url.
 
+Caveat: @code{mirror.ctan.org} resolves to many different hosts, and they
+are not perfectly synchronized; we recommend updating only daily (at
+most), and not more often. You can choose a particular mirror if
+problems; the list of all CTAN mirrors with the status of each is at
+ at url{https://ctan.org/mirrors/mirmon}.
+
 @item @code{tlmgr update --list}
 @anchor{tlmgr @code{tlmgr update --list}}
 
@@ -105,35 +110,124 @@
 @item @strong{--repository} @emph{url|path}
 @anchor{tlmgr @strong{--repository} @emph{url|path}}
 
-Specifies the package repository from which packages should be installed
-or updated, overriding the default package repository found in the
-installation's TeX Live Package Database (a.k.a. the TLPDB, defined
-entirely in the file @code{tlpkg/texlive.tlpdb}).  The documentation for
- at code{install-tl} has more details about this
-(@url{http://tug.org/texlive/doc/install-tl.html}).
+Specify the package repository from which packages should be installed
+or updated, either a local directory or network location, as below. This
+overridesthe default package repository found in the installation's TeX
+Live Package Database (a.k.a. the TLPDB, which is given entirely in the
+file @code{tlpkg/texlive.tlpdb}).
 
- at code{--repository} changes the repository location only for the current
+This @code{--repository} option changes the location only for the current
 run; to make a permanent change, use @code{option repository} (see the
 @ref{tlmgr option,, option} action).
 
+As an example, you can choose a particular CTAN mirror with something
+like this:
+
+ at verbatim
+  -repository http://ctan.example.org/its/ctan/dir/systems/texlive/tlnet
+ at end verbatim
+
+Of course a real hostname and its particular top-level CTAN directory
+have to be specified.  The list of CTAN mirrors is available at
+ at url{https://ctan.org/mirrors/mirmon}.
+
+Here's an example of using a local directory:
+
+ at verbatim
+  -repository /local/TL/repository
+ at end verbatim
+
 For backward compatibility and convenience, @code{--location} and @code{--repo}
 are accepted as aliases for this option.
 
+Locations can be specified as any of the following:
+
+ at table @asis
+ at item @code{/some/local/dir}
+ at anchor{tlmgr @code{/some/local/dir}}
+
+ at item @code{file:/some/local/dir}
+ at anchor{tlmgr @code{file:/some/local/dir}}
+
+Equivalent ways of specifying a local directory.
+
+ at item @code{ctan}
+ at anchor{tlmgr @code{ctan}}
+
+ at item @code{http://mirror.ctan.org/systems/texlive/tlnet}
+ at anchor{tlmgr @code{http://mirror.ctan.org/systems/texlive/tlnet}}
+
+Pick a CTAN mirror automatically, trying for one that is both nearby and
+up-to-date. The chosen mirror is used for the entire download. The bare
+ at code{ctan} is merely an alias for the full url. (See @url{https://ctan.org} for
+more about CTAN and its mirrors.)
+
+ at item @code{http://server/path/to/tlnet}
+ at anchor{tlmgr @code{http://server/path/to/tlnet}}
+
+Standard HTTP. If the (default) LWP method is used, persistent
+connections are supported. TL can also use @code{curl} or @code{wget} to do the
+downloads, or an arbitrary user-specified program, as described in the
+ at code{tlmgr} documentation
+(@url{https://tug.org/texlive/doc/tlmgr.html#ENVIRONMENT-VARIABLES}).
+
+ at item @code{https://server/path/to/tlnet}
+ at anchor{tlmgr @code{https://server/path/to/tlnet}}
+
+Again, if the (default) LWP method is used, this supports persistent
+connections. Unfortunately, some versions of @code{wget} and @code{curl} do not
+support https, and even when @code{wget} supports https, certificates may be
+rejected even when the certificate is fine, due to a lack of local
+certificate roots. The simplest workaround for this problem is to use
+http or ftp.
+
+ at item @code{ftp://server/path/to/tlnet}
+ at anchor{tlmgr @code{ftp://server/path/to/tlnet}}
+
+If the (default) LWP method is used, persistent connections are
+supported.
+
+ at item @code{user@@machine:/path/to/tlnet}
+ at anchor{tlmgr @code{user@@machine:/path/to/tlnet}}
+
+ at item @code{scp://user@@machine/path/to/tlnet}
+ at anchor{tlmgr @code{scp://user@@machine/path/to/tlnet}}
+
+ at item @code{ssh://user@@machine/path/to/tlnet}
+ at anchor{tlmgr @code{ssh://user@@machine/path/to/tlnet}}
+
+These forms are equivalent; they all use @code{scp} to transfer files. Using
+ at code{ssh-agent} is recommended. (Info:
+ at url{https://en.wikipedia.org/wiki/OpenSSH},
+ at url{https://en.wikipedia.org/wiki/Ssh-agent}.)
+
+ at end table
+
+If the repository is on the network, trailing @code{/} characters and/or
+trailing @code{/tlpkg} and/or @code{/archive} components are ignored.  
+
 @item @strong{--gui} [@emph{action}]
 @anchor{tlmgr @strong{--gui} [@emph{action}]}
 
- at code{tlmgr} has a graphical interface as well as the command line
-interface.  You can give this option, @code{--gui}, together with an action
-to be brought directly into the respective screen of the GUI.  For
-example, running
+Two notable GUI front-ends for @code{tlmgr}, @code{tlshell} and @code{tlcockpit},
+are started up as separate programs; see their own documentation.
 
+ at code{tlmgr} itself has a graphical interface as well as the command line
+interface. You can give the option to invoke it, @code{--gui}, together with
+an action to be brought directly into the respective screen of the GUI.
+For example, running
+
 @verbatim
   tlmgr --gui update
 @end verbatim
 
 starts you directly at the update screen.  If no action is given, the
-GUI will be started at the main screen.
+GUI will be started at the main screen.  See @ref{tlmgr GUI FOR TLMGR,, GUI FOR TLMGR}.
 
+However, the native GUI requires Perl/TK, which is no longer included in
+TeX Live's Perl distribution for Windows. You may find @code{tlshell} or
+ at code{tlcockpit} easier to work with. 
+
 @item @strong{--gui-lang} @emph{llcode}
 @anchor{tlmgr @strong{--gui-lang} @emph{llcode}}
 
@@ -140,13 +234,16 @@
 By default, the GUI tries to deduce your language from the environment
 (on Windows via the registry, on Unix via @code{LC_MESSAGES}). If that fails
 you can select a different language by giving this option with a
-language code (based on ISO 639-1).  Currently supported (but not
-necessarily completely translated) are: English (en, default), Czech
-(cs), German (de), French (fr), Italian (it), Japanese (ja), Dutch (nl),
-Polish (pl), Brazilian Portuguese (pt_BR), Russian (ru), Slovak (sk),
-Slovenian (sl), Serbian (sr), Ukrainian (uk), Vietnamese (vi),
-simplified Chinese (zh_CN), and traditional Chinese (zh_TW).
+language code (based on ISO 639-1). Currently supported (but not
+necessarily completely translated) are: @w{English (en, default)},
+ at w{Czech (cs)}, @w{German (de)}, @w{French (fr)}, @w{Italian (it)},
+ at w{Japanese (ja)}, @w{Dutch (nl)}, @w{Polish (pl)}, @w{Brazilian Portuguese
+(pt_BR)}, @w{Russian (ru)}, @w{Slovak (sk)}, @w{Slovenian (sl)}, @w{Serbian
+(sr)}, @w{Ukrainian (uk)}, @w{Vietnamese (vi)}, @w{simplified Chinese
+(zh_CN)}, and @w{traditional Chinese (zh_TW)}.
 
+tlshell shares its message catalog with tlmgr.
+
 @item @strong{--debug-translation}
 @anchor{tlmgr @strong{--debug-translation}}
 
@@ -243,7 +340,7 @@
 * tlmgr version::
 * tlmgr backup::
 * tlmgr candidates @emph{pkg}::
-* tlmgr check [@emph{option}...] [files|depends|executes|runfiles|all]::
+* tlmgr check [@emph{option}...] [depends|executes|files|runfiles|texmfdbs|all]::
 * tlmgr conf::
 * tlmgr dump-tlpdb [@emph{option}...] [--json]::
 * tlmgr generate::
@@ -275,7 +372,7 @@
 @appendixsubsec help
 
 Display this help information and exit (same as @code{--help}, and on the
-web at @url{http://tug.org/texlive/doc/tlmgr.html}).  Sometimes the
+web at @url{https://tug.org/texlive/doc/tlmgr.html}).  Sometimes the
 @code{perldoc} and/or @code{PAGER} programs on the system have problems,
 resulting in control characters being literally output.  This can't
 always be detected, but you can set the @code{NOPERLDOC} environment
@@ -300,10 +397,12 @@
 
 If the @code{--clean} option is not specified, this action makes a backup of
 the given packages, or all packages given @code{--all}. These backups are
-saved to the value of the @code{--backupdir} option, if that is an existing and
-writable directory. If @code{--backupdir} is not given, the @code{backupdir}
-option setting in the TLPDB is used, if present.  If both are missing,
-no backups are made.
+saved to the value of the @code{--backupdir} option, if that is an existing
+and writable directory. If @code{--backupdir} is not given, the @code{backupdir}
+option setting in the TLPDB is used, if present. If both are missing, no
+backups are made. (The installer sets @code{backupdir} to
+ at code{.../tlpkg/backups}, under the TL root installation directory, so it is
+usually defined; see the @ref{tlmgr option,, option} description for more information.)
 
 If the @code{--clean} option is specified, backups are pruned (removed)
 instead of saved. The optional integer value @emph{N} may be specified to
@@ -353,18 +452,14 @@
 Shows the available candidate repositories for package @emph{pkg}.
 See @ref{tlmgr MULTIPLE REPOSITORIES,, MULTIPLE REPOSITORIES} below.
 
- at node tlmgr check [@emph{option}...] [files|depends|executes|runfiles|all]
- at appendixsubsec check [@emph{option}...] [files|depends|executes|runfiles|all]
+ at node tlmgr check [@emph{option}...] [depends|executes|files|runfiles|texmfdbs|all]
+ at appendixsubsec check [@emph{option}...] [depends|executes|files|runfiles|texmfdbs|all]
 
-Executes one (or all) check(s) on the consistency of the installation.
+Execute one (or all) check(s) of the consistency of the installation.
+If no problems are found, there will be no output. (To get a view of
+what is being done, run @code{tlmgr -v check}.)
 
 @table @asis
- at item @strong{files}
- at anchor{tlmgr @strong{files}}
-
-Checks that all files listed in the local TLPDB (@code{texlive.tlpdb}) are
-actually present, and lists those missing.
-
 @item @strong{depends}
 @anchor{tlmgr @strong{depends}}
 
@@ -381,14 +476,42 @@
 Check that the files referred to by @code{execute} directives in the TeX
 Live Database are present.
 
+ at item @strong{files}
+ at anchor{tlmgr @strong{files}}
+
+Checks that all files listed in the local TLPDB (@code{texlive.tlpdb}) are
+actually present, and lists those missing.
+
 @item @strong{runfiles}
 @anchor{tlmgr @strong{runfiles}}
 
 List those filenames that are occurring more than one time in the
-runfiles sections.
+runfiles sections, except for known duplicates.
 
+ at item @strong{texmfdbs}
+ at anchor{tlmgr @strong{texmfdbs}}
+
+Checks related to the @code{ls-R} files. If you have defined new trees, or
+changed the @code{TEXMF} or @code{TEXMFDBS} variables, it can't hurt to run
+this. It checks that:
+
+ at table @asis
+ at item - all items in @code{TEXMFDBS} have the @code{!!} prefix.
+ at anchor{tlmgr - all items in @code{TEXMFDBS} have the @code{!!} prefix.}
+
+ at item - all items in @code{TEXMFBDS} have an @code{ls-R} file (if they exist at all).
+ at anchor{tlmgr - all items in @code{TEXMFBDS} have an @code{ls-R} file (if they exist at all).}
+
+ at item - all items in @code{TEXMF} with @code{!!} are listed in @code{TEXMFDBS}.
+ at anchor{tlmgr - all items in @code{TEXMF} with @code{!!} are listed in @code{TEXMFDBS}.}
+
+ at item - all items in @code{TEXMF} with an @code{ls-R} file are listed in @code{TEXMFDBS}.
+ at anchor{tlmgr - all items in @code{TEXMF} with an @code{ls-R} file are listed in @code{TEXMFDBS}.}
+
 @end table
 
+ at end table
+
 Options:
 
 @table @asis
@@ -396,7 +519,7 @@
 @anchor{tlmgr @strong{--use-svn}}
 
 Use the output of @code{svn status} instead of listing the files; for
-checking the TL development repository.
+checking the TL development repository. (This is run nightly.)
 
 @end table
 
@@ -407,8 +530,8 @@
 @item @strong{conf [texmf|tlmgr|updmap [--conffile @emph{file}] [--delete] [@emph{key} [@emph{value}]]]}
 @anchor{tlmgr @strong{conf [texmf|tlmgr|updmap [--conffile @emph{file}] [--delete] [@emph{key} [@emph{value}]]]}}
 
- at item @strong{conf auxtrees [--conffile @emph{file}] [show|add|delete] [@emph{value}]}
- at anchor{tlmgr @strong{conf auxtrees [--conffile @emph{file}] [show|add|delete] [@emph{value}]}}
+ at item @strong{conf auxtrees [--conffile @emph{file}] [show|add|remove] [@emph{value}]}
+ at anchor{tlmgr @strong{conf auxtrees [--conffile @emph{file}] [show|add|remove] [@emph{value}]}}
 
 With only @code{conf}, show general configuration information for TeX Live,
 including active configuration files, path settings, and more.  This is
@@ -444,8 +567,8 @@
 shows the list of additional trees, @code{auxtrees add} @emph{tree} adds a tree
 to the list, and @code{auxtrees remove} @emph{tree} removes a tree from the list
 (if present). The trees should not contain an @code{ls-R} file (or files
-might not be found if the @code{ls-R} becomes stale). This works by
-manipulating the Kpathsea variable @code{TEXMFAUXTREES}, in
+will not be found if the @code{ls-R} becomes stale). This works by
+manipulating the Kpathsea variable @code{TEXMFAUXTREES}, in (by default)
 @code{ROOT/texmf.cnf}.  Example:
 
 @verbatim
@@ -454,7 +577,8 @@
 @end verbatim
 
 In all cases the configuration file can be explicitly specified via the
-option @code{--conffile} @emph{file}, if desired.
+option @code{--conffile} @emph{file}, e.g., if you don't want to change the
+system-wide configuration.
 
 Warning: The general facility for changing configuration values is here,
 but tinkering with settings in this way is strongly discouraged.  Again,
@@ -531,7 +655,7 @@
 all of these files.
 
 For managing your own fonts, please read the @code{updmap --help}
-information and/or @url{http://tug.org/fonts/fontinstall.html}.
+information and/or @url{https://tug.org/fonts/fontinstall.html}.
 
 For managing your own formats, please read the @code{fmtutil --help}
 information.
@@ -696,6 +820,14 @@
 If this option is given, the installation source will not be used; only
 locally installed packages, collections, or schemes are listed.
 
+ at item @strong{--only-remote}
+ at anchor{tlmgr @strong{--only-remote}}
+
+Only list packages from the remote repository. Useful when checking what
+is available in a remote repository using
+ at code{tlmgr --repo ... --only-remote info}. Note that
+ at code{--only-installed} and @code{--only-remote} cannot both be specified.
+
 @item @strong{--data @code{item1,item2,...}}
 @anchor{tlmgr @strong{--data @code{item1 at comma{}item2 at comma{}...}}}
 
@@ -731,8 +863,8 @@
 @appendixsubsec install [@emph{option}...] @emph{pkg}...
 
 Install each @emph{pkg} given on the command line, if it is not already
-installed.  (It does not touch existing packages; see the @code{update}
-action for how to get the latest version of a package.)
+installed.  It does not touch existing packages; see the @code{update}
+action for how to get the latest version of a package.
 
 By default this also installs all packages on which the given @emph{pkg}s are
 dependent.  Options:
@@ -803,6 +935,10 @@
 
 @end table
 
+This action does not automatically add new symlinks in system
+directories; you need to run @code{tlmgr path add} (@ref{tlmgr path,, path}) yourself if
+you are using this feature and want new symlinks added.
+
 @node tlmgr key
 @appendixsubsec key
 
@@ -824,7 +960,7 @@
 
 The @code{add} argument requires another argument, either a filename or
 @code{-} for stdin, from which the key is added. The key is added to the
-local keyring @code{GNUPGHOME/repository-keys.gpg}, which is normally)
+local keyring @code{GNUPGHOME/repository-keys.gpg}, which is normally
 @code{tlpkg/gpg/repository-keys.gpg}.
 
 The @code{remove} argument requires a key id and removes the requested id
@@ -844,8 +980,8 @@
 @item @strong{option [--json] [show]}
 @anchor{tlmgr @strong{option [--json] [show]}}
 
- at item @strong{option [--json] showall}
- at anchor{tlmgr @strong{option [--json] showall}}
+ at item @strong{option [--json] showall|help}
+ at anchor{tlmgr @strong{option [--json] showall|help}}
 
 @item @strong{option @emph{key} [@emph{value}]}
 @anchor{tlmgr @strong{option @emph{key} [@emph{value}]}}
@@ -857,7 +993,8 @@
 changing it in parentheses.
 
 The second form, @code{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 (@code{help} is a
+synonym).
 
 Both @code{show...} forms take an option @code{--json}, which dumps the option
 information in JSON format.  In this case, both forms dump the same
@@ -873,7 +1010,7 @@
 
 @verbatim
  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),
@@ -901,7 +1038,8 @@
 
 If @code{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 @code{postcode} option controls execution of per-package
 postinstallation action code.  It is set by default, and again disabling
@@ -915,10 +1053,11 @@
 downloaded at all.
 
 The options @code{autobackup} and @code{backupdir} determine the defaults for
-the actions @code{update}, @code{backup} and @code{restore}.  These three actions
-need a directory in which to read or write the backups.  If
+the actions @code{update}, @code{backup} and @code{restore}. These three actions
+need a directory in which to read or write the backups. If
 @code{--backupdir} is not specified on the command line, the @code{backupdir}
-option value is used (if set).
+option value is used (if set). The TL installer sets @code{backupdir} to
+ at code{.../tlpkg/backups}, under the TL root installation directory.
 
 The @code{autobackup} option (de)activates automatic generation of backups.
 Its value is an integer.  If the @code{autobackup} value is @code{-1}, no
@@ -957,8 +1096,8 @@
 @item @strong{paper [a4|letter]}
 @anchor{tlmgr @strong{paper [a4|letter]}}
 
- at item @strong{@w{[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [@emph{papersize}|--list]}}
- at anchor{tlmgr @strong{@w{[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [@emph{papersize}|--list]}}}
+ at item @strong{<[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [@emph{papersize}|--list]}>
+ at anchor{tlmgr @strong{<[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [@emph{papersize}|--list]}>}
 
 @item @strong{paper --json}
 @anchor{tlmgr @strong{paper --json}}
@@ -1003,10 +1142,12 @@
 @item @strong{path [--w32mode=user|admin] remove}
 @anchor{tlmgr @strong{path [--w32mode=user|admin] remove}}
 
-On Unix, merely adds or removes symlinks for binaries, man pages, and
-info pages in the system directories specified by the respective options
-(see the @ref{tlmgr option,, option} description above).  Does not change any
-initialization files, either system or personal.
+On Unix, adds or removes symlinks for executables, man pages, and info
+pages in the system directories specified by the respective options (see
+the @ref{tlmgr option,, option} description above). Does not change any initialization
+files, either system or personal. Furthermore, any executables added or
+removed by future updates are not taken care of automatically; this
+command must be rerun as needed.
 
 On Windows, the registry part where the binary directory is added or
 removed is determined in the following way:
@@ -1089,7 +1230,7 @@
 
 @code{platform set auto} switches TeX Live to auto detection mode for platform.
 
-Platform detection is needed to select the proper @code{xz}, @code{xzdec} and 
+Platform detection is needed to select the proper @code{xz} and 
 @code{wget} binaries that are shipped with TeX Live.
 
 @code{arch} is a synonym for @code{platform}.
@@ -1222,6 +1363,10 @@
 
 @end table
 
+This action does not automatically remove symlinks to executables from
+system directories; you need to run @code{tlmgr path remove} (@ref{tlmgr path,, path})
+yourself if you are using this feature and want stale symlinks removed.
+
 @node tlmgr repository
 @appendixsubsec repository
 
@@ -1229,8 +1374,8 @@
 @item @strong{repository list}
 @anchor{tlmgr @strong{repository list}}
 
- at item @strong{repository list @emph{path|tag}}
- at anchor{tlmgr @strong{repository list @emph{path|tag}}}
+ at item @strong{repository list @emph{path|url|tag}}
+ at anchor{tlmgr @strong{repository list @emph{path|url|tag}}}
 
 @item @strong{repository add @emph{path} [@emph{tag}]}
 @anchor{tlmgr @strong{repository add @emph{path} [@emph{tag}]}}
@@ -1241,22 +1386,47 @@
 @item @strong{repository set @emph{path}[#@emph{tag}] [@emph{path}[#@emph{tag}] ...]}
 @anchor{tlmgr @strong{repository set @emph{path}[#@emph{tag}] [@emph{path}[#@emph{tag}] ...]}}
 
+ at item @strong{repository status}
+ at anchor{tlmgr @strong{repository status}}
+
 This action manages the list of repositories.  See @ref{,,, MULTIPLE_REPOSITORIES} below for detailed explanations.
 
-The first form (@code{list}) lists all configured repositories and the
-respective tags if set. If a path, url, or tag is given after the
- at code{list} keyword, it is interpreted as source from where to 
-initialize a TeX Live Database and lists the contained packages.
-This can also be an up-to-now not used repository, both locally
-and remote. If one pass in addition @code{--with-platforms}, for each
-package the available platforms (if any) are listed, too.
+The first form, @code{repository list}, lists all configured repositories
+and the respective tags if set. If a path, url, or tag is given after
+the @code{list} keyword, it is interpreted as the source from which to
+initialize a TL database and lists the contained packages. This can also
+be an otherwise-unused repository, either local or remote. If the option
+ at code{--with-platforms} is specified in addition, for each package the
+available platforms (if any) are also listed.
 
-The third form (@code{add}) adds a repository
-(optionally attaching a tag) to the list of repositories.  The forth
-form (@code{remove}) removes a repository, either by full path/url, or by
-tag.  The last form (@code{set}) sets the list of repositories to the items
-given on the command line, not keeping previous settings
+The form @code{repository add} adds a repository (optionally attaching a
+tag) to the list of repositories, while @code{repository remove} removes a
+repository, either by full path/url, or by tag.
 
+The form @code{repository set} sets the list of available repositories to
+the items given on the command line, overwriting previous settings.
+
+The form @code{repository status} reports the verification status of the
+loaded repositories with the format of one repository per line
+with fields separated by a single space:
+
+ at table @asis
+ at item The tag (which can be the same as the url);
+ at anchor{tlmgr The tag (which can be the same as the url);}
+
+= the url;
+
+= iff machine-readable output is specified, the verification code (a
+number);
+
+= a textual description of the verification status, as the last field
+extending to the end of line.
+
+ at end table
+
+That is, in normal (not machine-readable) output, the third field
+(numeric verification status) is not present.
+
 In all cases, one of the repositories must be tagged as @code{main};
 otherwise, all operations will fail!
 
@@ -1464,9 +1634,9 @@
 @item @strong{--all}
 @anchor{tlmgr @strong{--all} 5}
 
-Update all installed packages except for @code{tlmgr} itself.  Thus, if
-updates to @code{tlmgr} itself are present, this will simply give an error,
-unless also the option @code{--force} or @code{--self} is given.  (See below.)
+Update all installed packages except for @code{tlmgr} itself. If updates to
+ at code{tlmgr} itself are present, this gives an error, unless also the option
+ at code{--force} or @code{--self} is given. (See below.)
 
 In addition to updating the installed packages, during the update of a
 collection the local installation is (by default) synchronized to the
@@ -1483,7 +1653,7 @@
 that is also installed locally, it will be added to the local
 installation.  This is called ``auto-install'' and is announced as such
 when using the option @code{--list}.  This auto-installation can be
-suppressed using the option @code{--no-auto-install}.
+suppressed using the option @code{--no-auto-install} (also not recommended).
 
 An exception to the collection dependency checks (including the
 auto-installation of packages just mentioned) are those that have been
@@ -1491,6 +1661,13 @@
 on them.  (See the @code{remove} action documentation.)  To reinstall any
 such forcibly removed packages use @code{--reinstall-forcibly-removed}.
 
+To reiterate: automatic removals and additions are entirely determined
+by comparison of collections. Thus, if you manually install an
+individual package @code{foo} which is later removed from the server,
+ at code{tlmgr} will not notice and will not remove it locally. (It has to be
+this way, without major rearchitecture work, because the tlpdb does not
+record the repository from which packages come from.)
+
 If you want to exclude some packages from the current update run (e.g.,
 due to a slow link), see the @code{--exclude} option below.
 
@@ -1563,12 +1740,12 @@
 @item @strong{--no-auto-remove} [@emph{pkg}...]
 @anchor{tlmgr @strong{--no-auto-remove} [@emph{pkg}...]}
 
-By default, @code{tlmgr} tries to remove packages which have disappeared on
-the server, as described above under @code{--all}.  This option prevents
-such removals, either for all packages (with @code{--all}), or for just the
-given @emph{pkg} names.  This can lead to an inconsistent TeX installation,
-since packages are not infrequently renamed or replaced by their
-authors.  Therefore this is not recommend.
+By default, @code{tlmgr} tries to remove packages in an existing collection
+which have disappeared on the server, as described above under @code{--all}.
+This option prevents such removals, either for all packages (with
+ at code{--all}), or for just the given @emph{pkg} names. This can lead to an
+inconsistent TeX installation, since packages are not infrequently
+renamed or replaced by their authors. Therefore this is not recommended.
 
 @item @strong{--no-auto-install} [@emph{pkg}...]
 @anchor{tlmgr @strong{--no-auto-install} [@emph{pkg}...]}
@@ -1594,6 +1771,9 @@
   tlmgr remove --force foobar
 @end verbatim
 
+Again, since packages are sometimes renamed or replaced, using this
+option is not recommended.
+
 @item @strong{--reinstall-forcibly-removed}
 @anchor{tlmgr @strong{--reinstall-forcibly-removed}}
 
@@ -1617,8 +1797,8 @@
 @anchor{tlmgr @strong{--backupdir} @emph{directory} 3}
 
 These two options control the creation of backups of packages @emph{before}
-updating; that is, backup of packages as currently installed.  If
-neither options is given, no backup will made. If @code{--backupdir} is
+updating; that is, backing up packages as currently installed.  If
+neither option is given, no backup will made. If @code{--backupdir} is
 given and specifies a writable directory then a backup will be made in
 that location. If only @code{--backup} is given, then a backup will be made
 to the directory previously set via the @ref{tlmgr option,, option} action (see
@@ -1669,11 +1849,15 @@
 @code{mirror.ctan.org} resolves to many different hosts, each resulting in
 a possibly different hash), it's harmless to delete them.
 
+This action does not automatically add or remove new symlinks in system
+directories; you need to run @code{tlmgr} @ref{tlmgr path,, path} yourself if you are using
+this feature and want new symlinks added.
+
 @node tlmgr CONFIGURATION FILE FOR TLMGR
 @appendixsec CONFIGURATION FILE FOR TLMGR
 
-There are two configuration files for @code{tlmgr}: One is system-wide in
- at code{TEXMFSYSCONFIG/tlmgr/config}, and the other is user-specific in
+ at code{tlmgr} reads two configuration files: one is system-wide, in
+ at code{TEXMFSYSCONFIG/tlmgr/config}, and the other is user-specific, in
 @code{TEXMFCONFIG/tlmgr/config}.  The user-specific one is the default for
 the @code{conf tlmgr} action.  (Run @code{kpsewhich
 -var-value=TEXMFSYSCONFIG} or @code{... TEXMFCONFIG ...} to see the actual
@@ -1741,8 +1925,8 @@
 
 The checksum algorithm is SHA-512.  Your system must have one of (looked
 for in this order) the Perl @code{Digest::SHA} module, the @code{openssl}
-program (@url{http://openssl.org}), the @code{sha512sum} program (from GNU
-Coreutils, @url{http://www.gnu.org/software/coreutils}), or finally the
+program (@url{https://openssl.org}), the @code{sha512sum} program (from GNU
+Coreutils, @url{https://www.gnu.org/software/coreutils}), or finally the
 @code{shasum} program (just to support old Macs).  If none of these are
 available, a warning is issued and @code{tlmgr} proceeds without checking
 checksums.  (Incidentally, other SHA implementations, such as the pure
@@ -1781,8 +1965,9 @@
 search method).  Then, unless cryptographic verification has been
 disabled, a signature file (@code{texlive.tlpdb.*.asc}) of the checksum file
 is downloaded and the signature verified. The signature is created by
-the TeX Live Distribution GPG key 0x06BAB6BC, which in turn is signed by
-Karl Berry's key 0x30D155AD and Norbert Preining's key 0x6CACA448.  All
+the TeX Live Distribution GPG key 0x0D5E5D9106BAB6BC, which in turn is
+signed by Karl Berry's key 0x0716748A30D155AD and
+Norbert Preining's key 0x6CACA448860CDC13.  All
 of these keys are obtainable from the standard key servers.
 
 Additional trusted keys can be added using the @code{key} action.
@@ -1956,11 +2141,10 @@
 @end verbatim
 
 Ok.  Let's add the @code{tlcontrib} repository (this is a real
-repository, hosted at @url{http://tlcontrib.metatex.org}, maintained by
-Taco Hoekwater et al.), with the tag @code{tlcontrib}:
+repository hosted at @url{http://contrib.texlive.info}) with the tag @code{tlcontrib}:
 
 @verbatim
- $ tlmgr repository add http://tlcontrib.metatex.org/2012 tlcontrib
+ $ tlmgr repository add http://contrib.texlive.info/current tlcontrib
 @end verbatim
 
 Check the repository list again:
@@ -1968,38 +2152,37 @@
 @verbatim
  $ tlmgr repository list
  List of repositories (with tags if set):
-    http://tlcontrib.metatex.org/2012 (tlcontrib)
+    http://contrib.texlive.info/current (tlcontrib)
     /var/www/norbert/tlnet (main)
 @end verbatim
 
-Now we specify a pinning entry to get the package @code{context} from
+Now we specify a pinning entry to get the package @code{classico} from
 @code{tlcontrib}:
 
 @verbatim
- $ tlmgr pinning add tlcontrib context
+ $ tlmgr pinning add tlcontrib classico
 @end verbatim
 
-Check that we can find @code{context}:
+Check that we can find @code{classico}:
 
 @verbatim
- $ tlmgr show context
- tlmgr: package repositories:
+ $ tlmgr show classico
+ package:     classico
  ...
- package:     context
- repository:  tlcontrib/26867
+ shortdesc:   URW Classico fonts
  ...
 @end verbatim
 
-- install @code{context}:
+- install @code{classico}:
 
 @verbatim
- $ tlmgr install context
+ $ tlmgr install classico
  tlmgr: package repositories:
  ...
- [1/1,  ??:??/??:??] install: context @tlcontrib [
+ [1/1,  ??:??/??:??] install: classico @tlcontrib [737k]
 @end verbatim
 
-In the output here you can see that the @code{context} package has been
+In the output here you can see that the @code{classico} package has been
 installed from the @code{tlcontrib} repository (@code{@@tlcontrib}).
 
 Finally, @code{tlmgr pinning} also supports removing certain or all packages
@@ -2006,27 +2189,33 @@
 from a given repository:
 
 @verbatim
-  $ tlmgr pinning remove tlcontrib context  # remove just context
+  $ tlmgr pinning remove tlcontrib classico # remove just classico
   $ tlmgr pinning remove tlcontrib --all    # take nothing from tlcontrib
 @end verbatim
 
-A summary of the @code{tlmgr pinning} actions is given above.
+A summary of @code{tlmgr pinning} actions is given above.
 
 @node tlmgr GUI FOR TLMGR
 @appendixsec GUI FOR TLMGR
 
 The graphical user interface for @code{tlmgr} requires Perl/Tk
- at url{http://search.cpan.org/search?query=perl%2Ftk}.  For Windows the
-necessary modules are shipped within TeX Live, for all other (i.e.,
-Unix-based) systems Perl/Tk (as well as Perl of course) has to be
-installed outside of TL.  @url{http://tug.org/texlive/distro.html#perltk}
-has a list of invocations for some distros.
+ at url{https://search.cpan.org/search?query=perl%2Ftk}. For Unix-based
+systems Perl/Tk (as well as Perl of course) has to be installed
+outside of TL.  @url{https://tug.org/texlive/distro.html#perltk} has a
+list of invocations for some distros.  For Windows the necessary
+modules are no longer shipped within TeX Live, so you'll have to have an
+external Perl available that includes them.
 
-The GUI is started with the invocation @code{tlmgr gui}; assuming Tk is
-loadable, the graphical user interface will be shown.  The main window
-contains a menu bar, the main display, and a status area where messages
-normally shown on the console are displayed.
+We are talking here about the GUI built into tlmgr itself, not about the
+other tlmgr GUIs, which are: tlshell (Tcl/Tk-based), tlcockpit
+(Java-based) and, only on Macs, TeX Live Utility. These are invoked as
+separate programs.
 
+The GUI mode of tlmgr is started with the invocation @code{tlmgr gui};
+assuming Tk is loadable, the graphical user interface will be shown.
+The main window contains a menu bar, the main display, and a status
+area where messages normally shown on the console are displayed.
+
 Within the main display there are three main parts: the @code{Display
 configuration} area, the list of packages, and the action buttons.
 
@@ -2237,7 +2426,7 @@
 @anchor{tlmgr @code{Help menu}}
 
 Provides access to the TeX Live manual (also on the web at
- at url{http://tug.org/texlive/doc.html}) and the usual ``About'' box.
+ at url{https://tug.org/texlive/doc.html}) and the usual ``About'' box.
 
 @end table
 
@@ -2279,7 +2468,7 @@
 @end table
 
 A few other obscure options are recognized but not mentioned here.  See
-the Perl/Tk documentation (@url{http://search.cpan.org/perldoc?Tk}) for the
+the Perl/Tk documentation (@url{https://search.cpan.org/perldoc?Tk}) for the
 complete list, and any X documentation for general information.
 
 @node tlmgr MACHINE-READABLE OUTPUT
@@ -2453,12 +2642,101 @@
 If you are developing a program that uses this output, and find that
 changes would be helpful, do not hesitate to write the mailing list.
 
+ at node tlmgr ENVIRONMENT VARIABLES
+ at appendixsec ENVIRONMENT VARIABLES
+
+ at code{tlmgr} uses many of the standard TeX environment variables, as
+reported by, e.g., @code{tlmgr conf} (@ref{tlmgr conf,, conf}).
+
+In addition, for ease in scripting and debugging, @code{tlmgr} looks for the
+following environment variables. These are not of interest for normal
+user installations.
+
+ at table @asis
+ at item @code{TEXLIVE_COMPRESSOR}
+ at anchor{tlmgr @code{TEXLIVE_COMPRESSOR}}
+
+This variable allows selecting a different compressor program for
+backups and intermediate rollback containers. The order of selection is:
+
+ at enumerate
+ at item If the environment variable @code{TEXLIVE_COMPRESSOR} is
+defined, use it; abort if it doesn't work. Possible values:
+ at code{lz4}, @code{gzip}, @code{xz}. The necessary options are added internally.
+
+ at item If lz4 is available (either from the system or TL) and working, use that.
+
+ at item If gzip is available (from the system) and working, use that.
+
+ at item If xz is available (either from the system or TL) and working, use that.
+
+ at end enumerate
+
+lz4 and gzip are faster in creating tlmgr's local backups, hence they
+are preferred. The unconditional use of xz for the tlnet containers is
+unaffected, to minimize download sizes.
+
+ at item @code{TEXLIVE_DOWNLOADER}
+ at anchor{tlmgr @code{TEXLIVE_DOWNLOADER}}
+
+ at item @code{TL_DOWNLOAD_PROGRAM}
+ at anchor{tlmgr @code{TL_DOWNLOAD_PROGRAM}}
+
+ at item @code{TL_DOWNLOAD_ARGS}
+ at anchor{tlmgr @code{TL_DOWNLOAD_ARGS}}
+
+These options allow selecting different download programs then the ones
+automatically selected by the installer. The order of selection is:
+
+ at enumerate
+ at item If the environment variable @code{TEXLIVE_DOWNLOADER} is defined, use it;
+abort if the specified program doesn't work. Possible values: @code{lwp},
+ at code{curl}, @code{wget}. The necessary options are added internally.
+
+ at item If the environment variable @code{TL_DOWNLOAD_PROGRAM} is
+defined (can be any value), use it together with
+ at code{TL_DOWNLOAD_ARGS}; abort if it doesn't work.
+
+ at item If LWP is available and working, use that (by far the most
+efficient method, as it supports persistent downloads).
+
+ at item If curl is available (from the system) and working, use that.
+
+ at item If wget is available (either from the system or TL) and working, use that.
+
+ at end enumerate
+
+TL provides @code{wget} binaries for platforms where necessary, so some
+download method should always be available.
+
+ at item @code{TEXLIVE_PREFER_OWN}
+ at anchor{tlmgr @code{TEXLIVE_PREFER_OWN}}
+
+By default, compression and download programs provided by the system,
+i.e., found along @code{PATH} are preferred over those shipped with TeX
+Live.
+
+This can create problems with systems that are too old, and so can be
+overridden by setting the environment variable @code{TEXLIVE_PREFER_OWN} to
+1. In this case, executables shipped with TL will be preferred.
+
+Extra compression/download programs not provided by TL, such as gzip,
+lwp, and curl, are still checked for on the system and used if
+available, per the above. @code{TEXLIVE_PREFER_OWN} only applies when the
+program being checked for is shipped with TL, namely the lz4 and
+xz compressors and wget downloader.
+
+Exception: on Windows, the @code{tar.exe} shipped with TL is always used,
+regardless of any setting.
+
+ at end table
+
 @node tlmgr AUTHORS AND COPYRIGHT
 @appendixsec AUTHORS AND COPYRIGHT
 
 This script and its documentation were written for the TeX Live
-distribution (@url{http://tug.org/texlive}) and both are licensed under the
+distribution (@url{https://tug.org/texlive}) and both are licensed under the
 GNU General Public License Version 2 or later.
 
-$Id: tlmgr.pl 47303 2018-04-05 17:52:22Z karl $
+$Id: tlmgr.pl 54118 2020-03-05 22:27:22Z karl $
 

Modified: trunk/Build/source/doc/tlbuild.info
===================================================================
(Binary files differ)

Modified: trunk/Build/source/doc/tlbuild.texi
===================================================================
--- trunk/Build/source/doc/tlbuild.texi	2020-03-13 16:57:49 UTC (rev 54276)
+++ trunk/Build/source/doc/tlbuild.texi	2020-03-13 17:12:03 UTC (rev 54277)
@@ -1,8 +1,8 @@
 \input texinfo
 @setfilename tlbuild.info
 
- at set version 2019
- at set month-year February 2019
+ at set version 2020
+ at set month-year March 2020
 
 @set mytitle Building @TeX{} Live (@value{version})
 @settitle @value{mytitle}
@@ -15,7 +15,7 @@
 This file documents the @TL{} build system and more.
 
 @noindent
-Copyright @copyright{} 2016--2019 Karl Berry.@*
+Copyright @copyright{} 2016--2020 Karl Berry.@*
 Copyright @copyright{} 2013--2015 Karl Berry & Peter Breitenlohner.
 
 Permission is granted to make and distribute verbatim copies of this

Modified: trunk/Master/tlpkg/doc/releng.txt
===================================================================
--- trunk/Master/tlpkg/doc/releng.txt	2020-03-13 16:57:49 UTC (rev 54276)
+++ trunk/Master/tlpkg/doc/releng.txt	2020-03-13 17:12:03 UTC (rev 54277)
@@ -248,7 +248,9 @@
     update "Builders of the binaries" and "Translators of this manual",
     and changes throughout if behavior has changed.
   Update tlbuild.texi text, then
-    make tlbuild-incl.texi && make readme-files && make readme-install.
+    W=.../Work
+    make -C $W/doc script-links tlbuild-incl.texi readme-files readme-install
+    cd .../Build/source
   Consider updates of core man pages in Build/source/texk/web2c/man.
   Remake updmap,fmtutil man pages with help2man:
     make -C Build/source/Work/texk/texlive/tl_scripts xupdmap.1 xfmtutil.1



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