From 779951bf459fdd28eeea02226d9ca3d856b03a4a Mon Sep 17 00:00:00 2001 From: Luigi Scarso <luigi.scarso@gmail.com> Date: Fri, 13 Mar 2020 23:23:06 +0000 Subject: [PATCH] sync with experimental rev. 7308 . --- manual/luatex-backend.tex | 6 +- manual/luatex-callbacks.tex | 2 +- manual/luatex-math.tex | 2 +- manual/luatex-tex.tex | 7 +- manual/luatex.pdf | Bin 1564482 -> 1564452 bytes manual/luatex.tex | 2 +- source/ChangeLog | 4 + source/README | 19 +- source/README.0overview | 12 +- source/README.1prerequisites | 39 +- source/README.2building | 148 +- source/README.3installing | 37 +- source/README.4layout | 290 +- source/README.5configure | 135 +- source/README.6coding | 22 +- source/README.7continuous | 60 +- source/configure | 2588 ++--------------- source/doc/ChangeLog | 6 + source/doc/Makefile.am | 15 +- source/doc/Makefile.in | 18 +- source/doc/README.solaris | 8 +- source/doc/build-tools.txt | 2 +- source/doc/tlbuild-incl/install-tl.texi | 231 +- source/doc/tlbuild-incl/tlmgr.texi | 534 +++- source/doc/tlbuild.info | 1951 +++++++------ source/doc/tlbuild.texi | 6 +- source/libs/configure | 8 +- source/libs/lua53/configure | 24 +- source/libs/lua53/version.ac | 2 +- source/m4/ChangeLog | 10 + source/m4/kpse-setup.m4 | 4 +- source/texk/README | 4 +- source/texk/configure | 8 +- source/texk/kpathsea/ChangeLog | 6 + source/texk/kpathsea/doc/kpathsea.info | 219 +- source/texk/kpathsea/doc/kpathsea.texi | 6 +- source/texk/kpathsea/doc/unixtex.texi | 15 +- source/texk/kpathsea/pathsearch.c | 4 +- source/texk/web2c/ChangeLog | 6 + source/texk/web2c/Makefile.in | 6 +- source/texk/web2c/NEWS | 5 +- source/texk/web2c/doc/web2c.info | 353 ++- source/texk/web2c/doc/web2c.texi | 134 +- source/texk/web2c/luatexdir/ChangeLog | 24 +- source/texk/web2c/luatexdir/am/luatex.am | 6 + source/texk/web2c/luatexdir/font/luafont.c | 43 +- .../texk/web2c/luatexdir/lua/lnewtokenlib.c | 1 + source/texk/web2c/luatexdir/lua/luainit.c | 6 +- source/texk/web2c/luatexdir/lua/luanode.c | 19 +- source/texk/web2c/luatexdir/lua/luatex-core.c | 621 ++-- .../texk/web2c/luatexdir/lua/luatex-core.lua | 16 +- .../luaharfbuzz/spec/buffer_spec.lua | 9 + .../luaharfbuzz/src/luaharfbuzz/buffer.c | 12 + .../web2c/luatexdir/luapplib/src/ppheap.h | 2 +- .../luatexdir/luapplib/src/util/utilbasexx.c | 2 +- .../luatexdir/luapplib/src/util/utiliof.c | 4 +- .../luatexdir/luapplib/src/util/utiliof.h | 14 +- .../luatexdir/luapplib/src/util/utilmemallc.h | 86 +- .../luatexdir/luapplib/src/util/utilmemallh.h | 10 + .../luatexdir/luapplib/src/util/utilmemheap.c | 102 +- .../luatexdir/luapplib/src/util/utilmemheap.h | 27 +- .../luapplib/src/util/utilmemheapiof.c | 90 +- .../luapplib/src/util/utilmemheapiof.h | 43 +- .../texk/web2c/luatexdir/luatex_svnversion.h | 2 +- source/texk/web2c/mplibdir/ChangeLog | 5 +- source/texk/web2c/mplibdir/mp.w | 11 +- source/texk/web2c/uptexdir/uptex_version.h | 2 +- source/utils/README | 4 +- source/utils/configure | 8 +- 69 files changed, 3478 insertions(+), 4649 deletions(-) diff --git a/manual/luatex-backend.tex b/manual/luatex-backend.tex index 6ba0f8397..2606ff384 100644 --- a/manual/luatex-backend.tex +++ b/manual/luatex-backend.tex @@ -627,7 +627,7 @@ pdfe.unencrypt(<pdfe document>,userpassword,ownerpassword) \stopsubsection -\startsubsection[title={\type {getsize}, \type {getversion}, \type {getnofobjects}, \type {getnofpages}}] +\startsubsection[title={\type {getsize}, \type {getversion}, \type {getnofobjects}, \type {getnofpages}, \type{getmemoryusage}}] \libindex {getsize} \libindex {getversion} @@ -641,7 +641,7 @@ bytes = getsize(<pdfe document>) major, minor = getversion(<pdfe document>) n = getnofobjects(<pdfe document>) n = getnofpages(<pdfe document>) -bytes, waste = getnofpages(<pdfe document>) +bytes, waste = getmemoryusage(<pdfe document>) \stoptyping \stopsubsection @@ -797,7 +797,7 @@ type, value, detail = getfromarray(<pdfe array>,index) \DB type \BC meaning \BC value \BC detail \NC \NR \NC \type {0} \NC none \NC nil \NC \NC \NR \NC \type {1} \NC null \NC nil \NC \NC \NR -\NC \type {2} \NC boolean \NC boolean \NC \NC \NR +\NC \type {2} \NC boolean \NC 1 or 0 \NC \NC \NR \NC \type {3} \NC integer \NC integer \NC \NC \NR \NC \type {4} \NC number \NC float \NC \NC \NR \NC \type {5} \NC name \NC string \NC \NC \NR diff --git a/manual/luatex-callbacks.tex b/manual/luatex-callbacks.tex index 965fba806..6bacfe7f0 100644 --- a/manual/luatex-callbacks.tex +++ b/manual/luatex-callbacks.tex @@ -619,7 +619,7 @@ end It is ok to return nothing in which case you also need to flush the box or deal with it yourself. The prevdepth is also optional. Locations are \type {box}, \type {alignment}, \type {equation}, \type {equation_number} and \type -{post_linebreak}. +{post_linebreak}. You can pass \type {nil} instead of a node. \subsection{\cbk {post_linebreak_filter}} diff --git a/manual/luatex-math.tex b/manual/luatex-math.tex index 4623ce706..e5999e72f 100644 --- a/manual/luatex-math.tex +++ b/manual/luatex-math.tex @@ -1454,7 +1454,7 @@ $ $ \stopbuffer -\typebuffer +\typebuffer[script] results in \inlinebuffer[script]. diff --git a/manual/luatex-tex.tex b/manual/luatex-tex.tex index 5e3746de6..4e70243c6 100644 --- a/manual/luatex-tex.tex +++ b/manual/luatex-tex.tex @@ -1957,15 +1957,16 @@ and|/|or console. \libindex{write} \startfunctioncall -texio.write(<string> target, <string> s, ...) +texio.write(<string> target | <integer> stream, <string> s, ...) texio.write(<string> s, ...) \stopfunctioncall Without the \type {target} argument, writes all given strings to the same location(s) \TEX\ writes messages to at this moment. If \prm {batchmode} is in effect, it writes only to the log, otherwise it writes to the log and the -terminal. The optional \type {target} can be one of three possibilities: \type -{term}, \type {log} or \type {term and log}. +terminal. The optional \type {target} can be one of four possibilities: \type +{term}, \type {log}, \type {term and log} or a valid integer of a stream +opened for writing. Note: If several strings are given, and if the first of these strings is or might be one of the targets above, the \type {target} must be specified explicitly to diff --git a/manual/luatex.pdf b/manual/luatex.pdf index 8de5fbe0c6468da1c3123bf10223fe43750e3db3..2e3912825258d055c72b0d558ac37800a99c8081 100644 GIT binary patch delta 77547 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%0DCdRmBV2^5*9D5Ec)s4_iqRQongjq<EkCkm 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 MOKE6WSbs0|f7iP;g#Z8m delta 77377 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 F{ue>8=I{Uj diff --git a/manual/luatex.tex b/manual/luatex.tex index 5a98f2243..840cf21e7 100644 --- a/manual/luatex.tex +++ b/manual/luatex.tex @@ -66,7 +66,7 @@ \startdocument [manual=Lua\TeX, status=stable, - version=1.10] + version=1.12] \startnotmode[*export] \component luatex-titlepage diff --git a/source/ChangeLog b/source/ChangeLog index 38df40c14..0e93d0d01 100644 --- a/source/ChangeLog +++ b/source/ChangeLog @@ -1,3 +1,7 @@ +2020-03-06 Karl Berry <karl@tug.org> + + * .travis.yml: attempt to reenable musl build on github. + 2020-01-31 Karl Berry <karl@tug.org> * Makefile.am (texlinks_dir): now texk/texlive/tl_support diff --git a/source/README b/source/README index a38341dd5..7cf4e8b24 100644 --- a/source/README +++ b/source/README @@ -1,4 +1,4 @@ -$Id: README 53479 2020-01-21 17:56:03Z karl $ +$Id: README 54144 2020-03-06 23:51:39Z karl $ Public domain. Originally written 2005 by Karl Berry. For a high-level overview of building TeX Live, see @@ -33,15 +33,22 @@ aarch64-linux: ./Build --enable-arm-neon=check i386-netbsd, amd64-netbsd: - gcc version 4.5.3 (NetBSD nb2 20110806) - NetBSD/amd64 6.1.3 - TL_MAKE=gmake CC=gcc CXX=g++ CFLAGS=-D_NETBSD_SOURCE \ - LDFLAGS='-L/usr/X11R7/lib -Wl,-rpath,/usr/X11R7/lib' \ + NetBSD/amd64 9.0 + gcc version 7.4.0 (nb3 20190319) + TL_MAKE=gmake CC=gcc CXX=g++ \ + CFLAGS=-D_NETBSD_SOURCE \ + CXXFLAGS='-D_NETBSD_SOURCE -std=c++11' \ + LDFLAGS='-L/usr/X11R7/lib -Wl,-rpath,/usr/X11R7/lib' \ ./Build --enable-xindy CLISP=/usr/local/bin/clisp + Except that we take Nelson's asy build. i386-freebsd, amd64-freebsd: http://anthesphoria.net/FreeBSD/TeXLive-2018/ has details for 2018. - 2019 built on contextgarden, see below. + 2019 and forward built on contextgarden (see below). + In 2020: FreeBSD 12.1-RELEASE-p1 + (e.g., +https://build.contextgarden.net/#/builders/56/builds/141/steps/2/logs/build _info + ) Except that we take Nelson's asy build. i386-linux: see travis below. diff --git a/source/README.0overview b/source/README.0overview index 5065317b6..c99c50f24 100644 --- a/source/README.0overview +++ b/source/README.0overview @@ -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 @@ program and library module (or package) specifies its own requirements 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 @@ independently. The corresponding modules use (most of) the distributed 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.) diff --git a/source/README.1prerequisites b/source/README.1prerequisites index 6d7ea74d5..443a4826e 100644 --- a/source/README.1prerequisites +++ b/source/README.1prerequisites @@ -6,36 +6,37 @@ *************** 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'. '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 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,14 +45,17 @@ Lacking the required tools, building these programs must avoided, e.g., 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'. * 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 @@ timestamps--notably, 'use-commit-times' must be set to 'yes' in your 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 - diff --git a/source/README.2building b/source/README.2building index d19b92c2a..d797d72ed 100644 --- a/source/README.2building +++ b/source/README.2building @@ -7,28 +7,28 @@ 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 =================== 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 @@ iterations consist of two steps: '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 @@ all of TL. 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 @@ To build one package, the basic idea is to use the 'configure' option '--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). - - 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'. + 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.) 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 @@ finish for working on 'dvipdfm-x'. # 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 @@ Strictly speaking, the answer is no, but it is vastly more convenient to 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. + + 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 - 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.) + 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 @@ MacOSX system one could use: 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 @@ C and C++ programs required for the build process as configure arguments 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 @@ during the cross compilation. 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. diff --git a/source/README.3installing b/source/README.3installing index a7142d99b..8c4d8ed15 100644 --- a/source/README.3installing +++ b/source/README.3installing @@ -9,14 +9,14 @@ This section discusses the results of 'make install' in the source tree. 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 @@ Running 'make install' (or 'make install-strip') installs executables in '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 @@ except possibly modified as follows: 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 @@ elsewhere with copies under 'texk/texlive/linked_scripts'. '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 @@ stay in sync across the different supported operating systems. 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 @@ different from a "distro" build needed by, e.g., a full GNU/Linux or BSD 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 @@ find most relevant: 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 @@ find most relevant: (*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.) diff --git a/source/README.4layout b/source/README.4layout index 114306778..64ca8aaf1 100644 --- a/source/README.4layout +++ b/source/README.4layout @@ -13,8 +13,8 @@ build and install them together with some of their support files. 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 @@ many extra hassles, so don't do that, tempting as it may be. 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 @@ dependencies have been changed. This can be done explicitly with the 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 @@ configured for the benefit of 'make' targets such as 'dist' or 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). - - 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. +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). 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 @@ The TL sources use two general setup macros: '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 @@ The TL sources use two general setup macros: 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 @@ Macros for compiler-related checks: 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 @@ Macros for compiler-related checks: -- 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 @@ Macros for compiler-related checks: -- 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,10 +202,12 @@ library. E.g., for 'libs/libpng': -- 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 @@ -229,7 +231,7 @@ and its 'Makefile.am' would be along these lines: ## 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 @@ Windows differs in several aspects from Unix-like systems, many of them 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 @@ due to the lack of symbolic links. 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 @@ structure and variation. 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 @@ thus providing the simple C code 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, 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.) - 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/'. + 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 @@ locations of the 'zlib' headers and/or library. 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. - - 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. - - 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. +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 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 '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 @@ for a few of the programs in TL. 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 @@ configure option '--disable-t1utils'. ------------------------------------------ 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'. + + 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 native]) + 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 @@ also seen at the top-level. 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 @@ This section outlines the basic process for adding new packages to the 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 @@ mandatory first argument and three optional arguments: 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 @@ compile using the source files in '...-src'. 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 @@ directory, 'make' in the build directory, etc. 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 @@ sources and build system for the library (and any installable support 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 @@ system version. 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 @@ other TeX-specific libraries but must not depend on any generic library 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'. diff --git a/source/README.5configure b/source/README.5configure index 6b4b00a45..b1e00daac 100644 --- a/source/README.5configure +++ b/source/README.5configure @@ -13,17 +13,17 @@ at the top level gives an exhaustive list of all global options and a 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 @@ by the TeX user groups. This requires GNU 'make' and implies 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 @@ location: (automake)Staged Installs.). 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 @@ when figuring out a specific (sub)set of modules to enable. 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. - - At present, these warning flags are only defined for the GNU -compilers but flags for other compilers could be added when needed. +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. 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 @@ rebuilds infrastructure files as needed. *Note 'missing' and 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,16 +129,16 @@ Build shared versions of the TeX-specific libraries such as ------------------------------ 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' ----------------------- 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 @@ Here are (some of) the program-specific 'configure' options. 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 @@ enabled. This is useful when one wants to work on only a single 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 @@ fragment. ---------------------------------------- '--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 @@ Do not or do build the various TeX, Metafont, and MetaPost engines (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 @@ from linking explicitly with dependencies of 'libfontconfig' such as '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 @@ created by default. In addition, 'dvipdfm' is created as a symlink to '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 @@ Do not build the 'xdvipdfmx' program. '--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,15 +289,15 @@ the TL scripts required to run 'texlinks'. ---------------------------------------- '--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 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 @@ Build and install 'xindy' documentation (default: yes, except for a 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 @@ with this generic one: 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 @@ required system libraries and bails out if tests fail. -------------------------------------- '--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,24 +360,22 @@ Determine the compile time default whether or not to run CMD, one of: (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 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 @@ but that might not work for cross compilations. '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 @@ but that might not work for cross compilations. 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 diff --git a/source/README.6coding b/source/README.6coding index a8abaa9c2..05da75540 100644 --- a/source/README.6coding +++ b/source/README.6coding @@ -10,9 +10,9 @@ should produce no (GCC) compiler warnings at all. In spite of 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 @@ all function prototypes and definitions must conform to the ANSI C 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 @@ verify that they are available and otherwise provide an alternative. 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 @@ the perhaps slightly less efficient alternative } #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,16 +88,16 @@ quantity supposed to be constant. 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' ................................. 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' ................................... diff --git a/source/README.7continuous b/source/README.7continuous index 2558b814f..2b7fd9089 100644 --- a/source/README.7continuous +++ b/source/README.7continuous @@ -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 @@ pushed is tested on Travis-CI. 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@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@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,14 +62,14 @@ _admin_ has installed a cron job on 'texlive.info' running every 30 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 =========================== 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 @@ Travis-CI. 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). + diff --git a/source/configure b/source/configure index b968022c8..f54602fdc 100755 --- a/source/configure +++ b/source/configure @@ -785,22 +785,6 @@ enable_native_texlive_build enable_multiplatform enable_cxx_runtime_hack enable_libtool_hack -enable_autosp -enable_axodraw2 -enable_devnag -enable_lacheck -enable_m_tx -enable_pmx -enable_ps2eps -enable_t1utils -enable_texdoctk -enable_tpic2pdftex -enable_vlna -enable_xindy -enable_xindy_rules -enable_xindy_docs -with_clisp_runtime -enable_xpdfopen enable_web2c with_banner_add with_editor @@ -848,83 +832,15 @@ enable_tektronixwin enable_unitermwin enable_web_progs enable_synctex -enable_afm2pl -enable_bibtex_x -enable_bibtex8 -enable_bibtexu -enable_chktex -enable_cjkutils -enable_detex -enable_dtl -enable_dvi2tty -enable_dvidvi -enable_dviljk -enable_dviout_util -enable_dvipdfm_x -enable_dvipng -enable_debug -enable_timing -with_gs -enable_dvipos -enable_dvipsk -enable_dvisvgm -enable_gregorio -enable_gsftopk -enable_lcdf_typetools -enable_cfftot1 -enable_mmafm -enable_mmpfb -enable_otfinfo -enable_otftotfm -enable_t1dotlessj -enable_t1lint -enable_t1rawafm -enable_t1reencode -enable_t1testpage -enable_ttftotype42 -enable_updmap -enable_makeindexk -enable_makejvf -enable_mendexk -enable_musixtnt -enable_ps2pk -enable_psutils -enable_seetexk -enable_tex4htk -enable_ttf2pk2 -enable_ttfdump -enable_upmendex -enable_xdvik -with_xdvi_x_toolkit enable_texlive enable_linked_scripts with_system_harfbuzz -with_system_icu -with_system_teckit with_system_graphite2 with_system_zziplib -with_system_xpdf -with_system_poppler -with_system_mpfr -with_mpfr_includes -with_mpfr_libdir -with_system_gmp -with_gmp_includes -with_gmp_libdir -with_system_cairo -with_system_pixman -with_system_gd -with_gd_includes -with_gd_libdir -with_system_freetype2 with_system_libpng -with_system_libpaper -with_libpaper_includes -with_libpaper_libdir with_system_zlib with_zlib_includes with_zlib_libdir -with_system_ptexenc with_system_kpathsea enable_mktexmf_default enable_mktexpk_default @@ -1595,21 +1511,6 @@ Optional Features: lib/PLATFORM --enable-cxx-runtime-hack link C++ runtime statically --enable-libtool-hack ignore libtool dependency_libs - --disable-autosp do not build the autosp package - --disable-axodraw2 do not build the axodraw2 package - --disable-devnag do not build the devnag package - --disable-lacheck do not build the lacheck package - --disable-m-tx do not build the m-tx package - --disable-pmx do not build the pmx package - --disable-ps2eps do not build the ps2eps package - --disable-t1utils do not build the t1utils package - --disable-texdoctk do not build the texdoctk package - --disable-tpic2pdftex do not build the tpic2pdftex package - --disable-vlna do not build the vlna package - --enable-xindy build the xindy package - --enable-xindy-rules build and install make-rules package - --enable-xindy-docs build and install documentation - --disable-xpdfopen do not build the xpdfopen package --disable-web2c do not build the web2c (TeX & Co.) package --enable-auto-core cause TeX&MF to dump core, given a certain filename @@ -1657,57 +1558,6 @@ Optional Features: --enable-unitermwin include Uniterm window support --disable-web-progs do not build WEB programs bibtex ... weave --disable-synctex do not build the SyncTeX library and tool - --disable-afm2pl do not build the afm2pl package - --disable-bibtex-x do not build the bibtex-x package - --disable-bibtex8 do not build the bibtex8 program - --disable-bibtexu do not build the bibtexu program - --disable-chktex do not build the chktex package - --disable-cjkutils do not build the cjkutils package - --disable-detex do not build the detex package - --disable-dtl do not build the dtl package - --disable-dvi2tty do not build the dvi2tty package - --disable-dvidvi do not build the dvidvi package - --disable-dviljk do not build the dviljk package - --disable-dviout-util do not build the dviout-util package - --disable-dvipdfm-x do not build the dvipdfm-x package - --disable-dvipng do not build the dvipng package - --disable-debug Compile without debug (-d) option - --enable-timing Output execution time of dvipng - --disable-dvipos do not build the dvipos package - --disable-dvipsk do not build the dvipsk package - --disable-dvisvgm do not build the dvisvgm package - --disable-gregorio do not build the gregorio package - --disable-gsftopk do not build the gsftopk package - --disable-lcdf-typetools - do not build the lcdf-typetools package - --disable-cfftot1 do not build the cfftot1 program - --disable-mmafm do not build the mmafm program - --disable-mmpfb do not build the mmpfb program - --disable-otfinfo do not build the otfinfo program - --disable-otftotfm do not build the otftotfm program - --disable-t1dotlessj do not build the t1dotlessj program - --disable-t1lint do not build the t1lint program - --disable-t1rawafm do not build the t1rawafm program - --disable-t1reencode do not build the t1reencode program - --disable-t1testpage do not build the t1testpage program - --disable-ttftotype42 do not build the ttftotype42 program - --disable-auto-cfftot1 disable running cfftot1 from otftotfm - --disable-auto-t1dotlessj disable running t1dotlessj from otftotfm - --disable-auto-ttftotype42 - disable running ttftotype42 from otftotfm - --disable-auto-updmap disable running updmap from otftotfm - --disable-makeindexk do not build the makeindexk package - --disable-makejvf do not build the makejvf package - --disable-mendexk do not build the mendexk package - --disable-musixtnt do not build the musixtnt package - --disable-ps2pk do not build the ps2pk package - --disable-psutils do not build the psutils package - --disable-seetexk do not build the seetexk package - --disable-tex4htk do not build the tex4htk package - --disable-ttf2pk2 do not build the ttf2pk2 package - --disable-ttfdump do not build the ttfdump package - --disable-upmendex do not build the upmendex package - --disable-xdvik do not build the xdvik package --disable-texlive do not build the texlive (TeX Live scripts) package --disable-linked-scripts do not install the linked scripts --disable-mktexmf-default do not run mktexmf if MF source missing @@ -1739,61 +1589,22 @@ Optional Features: Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-clisp-runtime=PATH - pathname of clisp runtime to install for `xindy', - `default' to derive from clisp, or `system' to use - installed version --with-banner-add=STR add STR to version string appended to banner lines --with-editor=CMD invoke CMD from the `e' option [vi +%d '%s'] or [texworks --position=%d "%s"] --with-mf-x-toolkit use X toolkit for METAFONT - --with-gs=/PATH/TO/gs Hard-wire the location of GhostScript - --with-xdvi-x-toolkit=KIT - Use toolkit KIT (xaw/motif/xaw3d/neXtaw) for xdvi - [default: Xaw] --with-system-harfbuzz use installed harfbuzz headers and library (requires pkg-config) - --with-system-icu use installed ICU headers and libraries (requires - pkg-config or icu-config) - --with-system-teckit use installed teckit headers and library (requires - pkg-config) --with-system-graphite2 use installed graphite2 headers and library (requires pkg-config) --with-system-zziplib use installed zziplib headers and library (requires pkg-config) - --with-system-xpdf use installed poppler headers and library instead of - xpdf library from TL (requires pkg-config) - --with-system-poppler use installed poppler headers and library (requires - pkg-config) - --with-system-mpfr use installed mpfr headers and library - --with-mpfr-includes=DIR - mpfr headers installed in DIR - --with-mpfr-libdir=DIR mpfr library installed in DIR - --with-system-gmp use installed gmp headers and library - --with-gmp-includes=DIR gmp headers installed in DIR - --with-gmp-libdir=DIR gmp library installed in DIR - --with-system-cairo use installed cairo headers and library (requires - pkg-config) - --with-system-pixman use installed pixman headers and library (requires - pkg-config) - --with-system-gd use installed gd headers and library - --with-gd-includes=DIR gd headers installed in DIR - --with-gd-libdir=DIR gd library installed in DIR - --with-system-freetype2 use installed freetype2 headers and library - (requires freetype-config) --with-system-libpng use installed libpng headers and library (requires pkg-config) - --with-system-libpaper use installed libpaper headers and library - --with-libpaper-includes=DIR - libpaper headers installed in DIR - --with-libpaper-libdir=DIR - libpaper library installed in DIR --with-system-zlib use installed zlib headers and library --with-zlib-includes=DIR zlib headers installed in DIR --with-zlib-libdir=DIR zlib library installed in DIR - --with-system-ptexenc use installed ptexenc headers and library (requires - pkg-config) --with-system-kpathsea use installed kpathsea headers and library (requires pkg-config) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use @@ -4157,7 +3968,7 @@ case $enable_luajittex in #( : ;; #( *) : case $host in #( - alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ) : + alpha* | sparc* | x86_64-*-solaris* | powerpc-* ) : { $as_echo "$as_me:${as_lineno-$LINENO}: $host -> \`--disable-luajittex'" >&5 $as_echo "$as_me: $host -> \`--disable-luajittex'" >&6;} ac_configure_args="$ac_configure_args '--disable-luajittex'" ;; #( @@ -4170,7 +3981,7 @@ case $enable_luajithbtex in #( : ;; #( *) : case $host in #( - alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ) : + alpha* | sparc* | x86_64-*-solaris* | powerpc-* ) : { $as_echo "$as_me:${as_lineno-$LINENO}: $host -> \`--disable-luajithbtex'" >&5 $as_echo "$as_me: $host -> \`--disable-luajithbtex'" >&6;} ac_configure_args="$ac_configure_args '--disable-luajithbtex'" ;; #( @@ -4183,7 +3994,7 @@ case $enable_mfluajit in #( : ;; #( *) : case $host in #( - alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ) : + alpha* | sparc* | x86_64-*-solaris* | powerpc-* ) : { $as_echo "$as_me:${as_lineno-$LINENO}: $host -> \`--disable-mfluajit'" >&5 $as_echo "$as_me: $host -> \`--disable-mfluajit'" >&6;} ac_configure_args="$ac_configure_args '--disable-mfluajit'" ;; #( @@ -4196,7 +4007,7 @@ case $enable_mfluajit_nowin in #( : ;; #( *) : case $host in #( - alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ) : + alpha* | sparc* | x86_64-*-solaris* | powerpc-* ) : { $as_echo "$as_me:${as_lineno-$LINENO}: $host -> \`--disable-mfluajit-nowin'" >&5 $as_echo "$as_me: $host -> \`--disable-mfluajit-nowin'" >&6;} ac_configure_args="$ac_configure_args '--disable-mfluajit-nowin'" ;; #( @@ -4205,296 +4016,6 @@ $as_echo "$as_me: $host -> \`--disable-mfluajit-nowin'" >&6;} esac ;; esac -## utils/autosp/ac/withenable.ac: configure.ac fragment for TeX Live subdir -## $Id: withenable.ac 46590 2018-02-10 23:30:32Z karl $ -## configure options and TL libraries required for autosp. -# Check whether --enable-autosp was given. -if test "${enable_autosp+set}" = set; then : - enableval=$enable_autosp; -fi -case $enable_autosp in #( - yes|no) : - ;; #( - *) : - - enable_autosp=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-autosp=$enable_autosp'" >&5 -$as_echo "$as_me: Assuming \`--enable-autosp=$enable_autosp'" >&6;} - ac_configure_args="$ac_configure_args '--enable-autosp=$enable_autosp'" - ;; -esac - -## utils/autosp/ac/withenable.ac: configure.ac fragment for TeX Live subdir -## $Id: withenable.ac 46590 2018-02-10 23:30:32Z karl $ -## configure options and TL libraries for axodraw2. -# Check whether --enable-axodraw2 was given. -if test "${enable_axodraw2+set}" = set; then : - enableval=$enable_axodraw2; -fi -case $enable_axodraw2 in #( - yes|no) : - ;; #( - *) : - - enable_axodraw2=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-axodraw2=$enable_axodraw2'" >&5 -$as_echo "$as_me: Assuming \`--enable-axodraw2=$enable_axodraw2'" >&6;} - ac_configure_args="$ac_configure_args '--enable-axodraw2=$enable_axodraw2'" - ;; -esac - -## utils/devnag/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory utils/devnag/ -## configure options and TL libraries required for devnag -# Check whether --enable-devnag was given. -if test "${enable_devnag+set}" = set; then : - enableval=$enable_devnag; -fi -case $enable_devnag in #( - yes|no) : - ;; #( - *) : - - enable_devnag=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-devnag=$enable_devnag'" >&5 -$as_echo "$as_me: Assuming \`--enable-devnag=$enable_devnag'" >&6;} - ac_configure_args="$ac_configure_args '--enable-devnag=$enable_devnag'" - ;; -esac - -## utils/lacheck/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory utils/lacheck/ -## configure options and TL libraries required for lacheck -# Check whether --enable-lacheck was given. -if test "${enable_lacheck+set}" = set; then : - enableval=$enable_lacheck; -fi -case $enable_lacheck in #( - yes|no) : - ;; #( - *) : - - enable_lacheck=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-lacheck=$enable_lacheck'" >&5 -$as_echo "$as_me: Assuming \`--enable-lacheck=$enable_lacheck'" >&6;} - ac_configure_args="$ac_configure_args '--enable-lacheck=$enable_lacheck'" - ;; -esac - -## utils/m-tx/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory utils/m-tx/ -## configure options and TL libraries required for mtx -# Check whether --enable-m-tx was given. -if test "${enable_m_tx+set}" = set; then : - enableval=$enable_m_tx; -fi -case $enable_m_tx in #( - yes|no) : - ;; #( - *) : - - enable_m_tx=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-m-tx=$enable_m_tx'" >&5 -$as_echo "$as_me: Assuming \`--enable-m-tx=$enable_m_tx'" >&6;} - ac_configure_args="$ac_configure_args '--enable-m-tx=$enable_m_tx'" - ;; -esac - -## utils/pmx/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory utils/pmx/ -## configure options and TL libraries required for pmx -# Check whether --enable-pmx was given. -if test "${enable_pmx+set}" = set; then : - enableval=$enable_pmx; -fi -case $enable_pmx in #( - yes|no) : - ;; #( - *) : - - enable_pmx=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-pmx=$enable_pmx'" >&5 -$as_echo "$as_me: Assuming \`--enable-pmx=$enable_pmx'" >&6;} - ac_configure_args="$ac_configure_args '--enable-pmx=$enable_pmx'" - ;; -esac - -## utils/ps2eps/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory utils/ps2eps/ -## configure options and TL libraries required for ps2eps -# Check whether --enable-ps2eps was given. -if test "${enable_ps2eps+set}" = set; then : - enableval=$enable_ps2eps; -fi -case $enable_ps2eps in #( - yes|no) : - ;; #( - *) : - - enable_ps2eps=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-ps2eps=$enable_ps2eps'" >&5 -$as_echo "$as_me: Assuming \`--enable-ps2eps=$enable_ps2eps'" >&6;} - ac_configure_args="$ac_configure_args '--enable-ps2eps=$enable_ps2eps'" - ;; -esac - -## utils/t1utils/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory utils/t1utils/ -## configure options and TL libraries required for t1utils -# Check whether --enable-t1utils was given. -if test "${enable_t1utils+set}" = set; then : - enableval=$enable_t1utils; -fi -case $enable_t1utils in #( - yes|no) : - ;; #( - *) : - - enable_t1utils=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-t1utils=$enable_t1utils'" >&5 -$as_echo "$as_me: Assuming \`--enable-t1utils=$enable_t1utils'" >&6;} - ac_configure_args="$ac_configure_args '--enable-t1utils=$enable_t1utils'" - ;; -esac - -## utils/texdoctk/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory utils/texdoctk/ -## configure options and TL libraries required for texdoctk -# Check whether --enable-texdoctk was given. -if test "${enable_texdoctk+set}" = set; then : - enableval=$enable_texdoctk; -fi -case $enable_texdoctk in #( - yes|no) : - ;; #( - *) : - - enable_texdoctk=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-texdoctk=$enable_texdoctk'" >&5 -$as_echo "$as_me: Assuming \`--enable-texdoctk=$enable_texdoctk'" >&6;} - ac_configure_args="$ac_configure_args '--enable-texdoctk=$enable_texdoctk'" - ;; -esac - -## utils/tpic2pdftex/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory utils/tpic2pdftex/ -## configure options and TL libraries required for tpic2pdftex -# Check whether --enable-tpic2pdftex was given. -if test "${enable_tpic2pdftex+set}" = set; then : - enableval=$enable_tpic2pdftex; -fi -case $enable_tpic2pdftex in #( - yes|no) : - ;; #( - *) : - - enable_tpic2pdftex=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-tpic2pdftex=$enable_tpic2pdftex'" >&5 -$as_echo "$as_me: Assuming \`--enable-tpic2pdftex=$enable_tpic2pdftex'" >&6;} - ac_configure_args="$ac_configure_args '--enable-tpic2pdftex=$enable_tpic2pdftex'" - ;; -esac - -## utils/vlna/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory utils/vlna/ -## configure options and TL libraries required for vlna -# Check whether --enable-vlna was given. -if test "${enable_vlna+set}" = set; then : - enableval=$enable_vlna; -fi -case $enable_vlna in #( - yes|no) : - ;; #( - *) : - - enable_vlna=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-vlna=$enable_vlna'" >&5 -$as_echo "$as_me: Assuming \`--enable-vlna=$enable_vlna'" >&6;} - ac_configure_args="$ac_configure_args '--enable-vlna=$enable_vlna'" - ;; -esac - -# $Id: withenable.ac 49993 2019-02-10 19:14:27Z karl $ -# utils/xindy/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory utils/xindy/ -## configure options and TL libraries required for xindy -# Check whether --enable-xindy was given. -if test "${enable_xindy+set}" = set; then : - enableval=$enable_xindy; -fi -case $enable_xindy in #( - yes|no) : - ;; #( - *) : - - enable_xindy=no - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-xindy=$enable_xindy'" >&5 -$as_echo "$as_me: Assuming \`--enable-xindy=$enable_xindy'" >&6;} - ac_configure_args="$ac_configure_args '--enable-xindy=$enable_xindy'" - ;; -esac - -## utils/xindy/ac/xindy.ac: configure.ac fragment for the TeX Live subdirectory utils/xindy/ -## configure options for xindy -# Check whether --enable-xindy-rules was given. -if test "${enable_xindy_rules+set}" = set; then : - enableval=$enable_xindy_rules; -fi -# Check whether --enable-xindy-docs was given. -if test "${enable_xindy_docs+set}" = set; then : - enableval=$enable_xindy_docs; -fi - -# Check whether --with-clisp-runtime was given. -if test "${with_clisp_runtime+set}" = set; then : - withval=$with_clisp_runtime; -fi - -## utils/xindy/ac/clisp.ac: configure.ac fragment for the TeX Live subdirectory utils/xindy/ -## configure checks for xindy and clisp -case $with_clisp_runtime in #( - default) : - ;; #( - system) : - if test "x$enable_native_texlive_build" = xyes; then : - as_fn_error $? "you can not use the installed clisp for a native TeX Live build" "$LINENO" 5 -fi ;; #( - "") : - if test "x$enable_native_texlive_build" = xyes; then : - with_clisp_runtime=default -else - with_clisp_runtime=system -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--with-clisp-runtime=$with_clisp_runtime'" >&5 -$as_echo "$as_me: Assuming \`--with-clisp-runtime=$with_clisp_runtime'" >&6;} - ac_configure_args="$ac_configure_args '--with-clisp-runtime=$with_clisp_runtime'" ;; #( - *) : - if test ! -f "$with_clisp_runtime"; then : - as_fn_error $? "no such file: \"$with_clisp_runtime\"" "$LINENO" 5 -fi ;; -esac - -## utils/xpdfopen/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory utils/xpdfopen/ -## configure options and TL libraries required for xpdfopen -# Check whether --enable-xpdfopen was given. -if test "${enable_xpdfopen+set}" = set; then : - enableval=$enable_xpdfopen; -fi -if test "x$with_x" = xno; then : - case $enable_xpdfopen in #( - "") : - { $as_echo "$as_me:${as_lineno-$LINENO}: \`--without-x' -> \`--disable-xpdfopen'" >&5 -$as_echo "$as_me: \`--without-x' -> \`--disable-xpdfopen'" >&6;} - enable_xpdfopen=no - ac_configure_args="$ac_configure_args '--disable-xpdfopen'" ;; #( - yes) : - as_fn_error $? "Sorry, incompatible options \`--without-x' and \`--enable-xpdfopen'" "$LINENO" 5 ;; #( - *) : - ;; -esac -fi -case $enable_xpdfopen in #( - yes|no) : - ;; #( - *) : - - enable_xpdfopen=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-xpdfopen=$enable_xpdfopen'" >&5 -$as_echo "$as_me: Assuming \`--enable-xpdfopen=$enable_xpdfopen'" >&6;} - ac_configure_args="$ac_configure_args '--enable-xpdfopen=$enable_xpdfopen'" - ;; -esac - ## texk/web2c/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/web2c/ ## configure options and TL libraries required for web2c @@ -4950,994 +4471,117 @@ if test "${enable_synctex+set}" = set; then : fi -## texk/afm2pl/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/afm2pl/ -## configure options and TL libraries required for afm2pl -# Check whether --enable-afm2pl was given. -if test "${enable_afm2pl+set}" = set; then : - enableval=$enable_afm2pl; +## texk/texlive/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/texlive/ +## configure options and TL libraries required for texlive +# Check whether --enable-texlive was given. +if test "${enable_texlive+set}" = set; then : + enableval=$enable_texlive; fi -case $enable_afm2pl in #( +case $enable_texlive in #( yes|no) : ;; #( *) : - enable_afm2pl=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-afm2pl=$enable_afm2pl'" >&5 -$as_echo "$as_me: Assuming \`--enable-afm2pl=$enable_afm2pl'" >&6;} - ac_configure_args="$ac_configure_args '--enable-afm2pl=$enable_afm2pl'" + enable_texlive=$enable_all_pkgs + { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-texlive=$enable_texlive'" >&5 +$as_echo "$as_me: Assuming \`--enable-texlive=$enable_texlive'" >&6;} + ac_configure_args="$ac_configure_args '--enable-texlive=$enable_texlive'" ;; esac -test "x$enable_afm2pl" = xno || { - need_kpathsea=yes -} - -## texk/bibtex-x/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/bibtex-x/ -## configure options and TL libraries required for bibtex-x -# Check whether --enable-bibtex-x was given. -if test "${enable_bibtex_x+set}" = set; then : - enableval=$enable_bibtex_x; +## texk/texlive/ac/texlive.ac: configure.ac fragment for the TeX Live subdirectory texk/texlive/ +## configure options for texlive +# Check whether --enable-linked-scripts was given. +if test "${enable_linked_scripts+set}" = set; then : + enableval=$enable_linked_scripts; fi -case $enable_bibtex_x in #( - yes|no) : - ;; #( - *) : - enable_bibtex_x=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-bibtex-x=$enable_bibtex_x'" >&5 -$as_echo "$as_me: Assuming \`--enable-bibtex-x=$enable_bibtex_x'" >&6;} - ac_configure_args="$ac_configure_args '--enable-bibtex-x=$enable_bibtex_x'" - ;; -esac -test "x$enable_bibtex_x" = xno || { - need_kpathsea=yes -} +## libs/harfbuzz/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/harfbuzz/ +## configure options and TL libraries required for harfbuzz -## texk/bibtex-x/ac/bibtex-x.ac: configure.ac fragment for the TeX Live subdirectory texk/bibtex-x/ -## configure options for bibtex-x -# Check whether --enable-bibtex8 was given. -if test "${enable_bibtex8+set}" = set; then : - enableval=$enable_bibtex8; +# Check whether --with-system-harfbuzz was given. +if test "${with_system_harfbuzz+set}" = set; then : + withval=$with_system_harfbuzz; fi - -case $enable_bibtex8 in #( - yes | no) : - ;; #( - *) : - enable_bibtex8=yes ;; -esac -# Check whether --enable-bibtexu was given. -if test "${enable_bibtexu+set}" = set; then : - enableval=$enable_bibtexu; +if test "x$with_system_harfbuzz" = x; then + if test -f $srcdir/libs/harfbuzz/configure; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`harfbuzz' headers and library from TL tree" >&5 +$as_echo "$as_me: Assuming \`harfbuzz' headers and library from TL tree" >&6;} + with_system_harfbuzz=no + else + { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming installed \`harfbuzz' headers and library" >&5 +$as_echo "$as_me: Assuming installed \`harfbuzz' headers and library" >&6;} + with_system_harfbuzz=yes + fi + ac_configure_args="$ac_configure_args '--with-system-harfbuzz=$with_system_harfbuzz'" +elif test "x$with_system_harfbuzz" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Using installed \`harfbuzz' headers and library" >&5 +$as_echo "$as_me: Using installed \`harfbuzz' headers and library" >&6;} +else + { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`harfbuzz' headers and library from TL tree" >&5 +$as_echo "$as_me: Using \`harfbuzz' headers and library from TL tree" >&6;} + if test "x$with_system_harfbuzz" != xno; then + with_system_harfbuzz=no + ac_configure_args="$ac_configure_args '--without-system-harfbuzz'" + fi fi - -case $enable_bibtexu in #( - yes | no) : - ;; #( - *) : - enable_bibtexu=yes ;; -esac - -test "x$enable_bibtex_x:$enable_bibtexu" = xyes:yes && need_icu=yes - -## texk/chktex/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/chktex/ -## configure options and TL libraries required for chktex -# Check whether --enable-chktex was given. -if test "${enable_chktex+set}" = set; then : - enableval=$enable_chktex; +if test "x$with_system_harfbuzz" = xyes; then + if test "x$with_system_graphite2" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: -> installed \`graphite2' headers and library" >&5 +$as_echo "$as_me: -> installed \`graphite2' headers and library" >&6;} + with_system_graphite2=yes + ac_configure_args="$ac_configure_args '--with-system-graphite2'" + elif test "x$with_system_graphite2" != xyes; then + as_fn_error $? "Sorry, \`--with-system-harfbuzz' requires \`--with-system-graphite2'" "$LINENO" 5 + fi + if test "x$with_system_icu" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: -> installed \`icu' headers and library" >&5 +$as_echo "$as_me: -> installed \`icu' headers and library" >&6;} + with_system_icu=yes + ac_configure_args="$ac_configure_args '--with-system-icu'" + elif test "x$with_system_icu" != xyes; then + as_fn_error $? "Sorry, \`--with-system-harfbuzz' requires \`--with-system-icu'" "$LINENO" 5 + fi fi -case $enable_chktex in #( - yes|no) : - ;; #( - *) : - - enable_chktex=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-chktex=$enable_chktex'" >&5 -$as_echo "$as_me: Assuming \`--enable-chktex=$enable_chktex'" >&6;} - ac_configure_args="$ac_configure_args '--enable-chktex=$enable_chktex'" - ;; -esac -test "x$enable_chktex" = xno || { - need_kpathsea=yes +test "x$need_harfbuzz" = xyes && { + need_graphite2=yes + need_icu=yes } -## texk/cjkutils/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/cjkutils/ -## configure options and TL libraries required for cjkutils -# Check whether --enable-cjkutils was given. -if test "${enable_cjkutils+set}" = set; then : - enableval=$enable_cjkutils; -fi -case $enable_cjkutils in #( - yes|no) : - ;; #( - *) : +## libs/graphite2/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/graphite2/ +## configure options and TL libraries required for graphite2 - enable_cjkutils=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-cjkutils=$enable_cjkutils'" >&5 -$as_echo "$as_me: Assuming \`--enable-cjkutils=$enable_cjkutils'" >&6;} - ac_configure_args="$ac_configure_args '--enable-cjkutils=$enable_cjkutils'" - ;; -esac +# Check whether --with-system-graphite2 was given. +if test "${with_system_graphite2+set}" = set; then : + withval=$with_system_graphite2; +fi +if test "x$with_system_graphite2" = x; then + if test -f $srcdir/libs/graphite2/configure; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`graphite2' headers and library from TL tree" >&5 +$as_echo "$as_me: Assuming \`graphite2' headers and library from TL tree" >&6;} + with_system_graphite2=no + else + { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming installed \`graphite2' headers and library" >&5 +$as_echo "$as_me: Assuming installed \`graphite2' headers and library" >&6;} + with_system_graphite2=yes + fi + ac_configure_args="$ac_configure_args '--with-system-graphite2=$with_system_graphite2'" +elif test "x$with_system_graphite2" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Using installed \`graphite2' headers and library" >&5 +$as_echo "$as_me: Using installed \`graphite2' headers and library" >&6;} +else + { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`graphite2' headers and library from TL tree" >&5 +$as_echo "$as_me: Using \`graphite2' headers and library from TL tree" >&6;} + if test "x$with_system_graphite2" != xno; then + with_system_graphite2=no + ac_configure_args="$ac_configure_args '--without-system-graphite2'" + fi +fi -test "x$enable_cjkutils" = xno || { - need_kpathsea=yes -} - -## texk/detex/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/detex/ -## configure options and TL libraries required for detex -# Check whether --enable-detex was given. -if test "${enable_detex+set}" = set; then : - enableval=$enable_detex; -fi -case $enable_detex in #( - yes|no) : - ;; #( - *) : - - enable_detex=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-detex=$enable_detex'" >&5 -$as_echo "$as_me: Assuming \`--enable-detex=$enable_detex'" >&6;} - ac_configure_args="$ac_configure_args '--enable-detex=$enable_detex'" - ;; -esac - -test "x$enable_detex" = xno || { - need_kpathsea=yes -} - -## texk/dtl/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/dtl/ -## configure options and TL libraries required for dtl -# Check whether --enable-dtl was given. -if test "${enable_dtl+set}" = set; then : - enableval=$enable_dtl; -fi -case $enable_dtl in #( - yes|no) : - ;; #( - *) : - - enable_dtl=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-dtl=$enable_dtl'" >&5 -$as_echo "$as_me: Assuming \`--enable-dtl=$enable_dtl'" >&6;} - ac_configure_args="$ac_configure_args '--enable-dtl=$enable_dtl'" - ;; -esac - -test "x$enable_dtl" = xno || { - need_kpathsea=yes -} - -## texk/dvi2tty/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/dvi2tty/ -## configure options and TL libraries required for dvi2tty -# Check whether --enable-dvi2tty was given. -if test "${enable_dvi2tty+set}" = set; then : - enableval=$enable_dvi2tty; -fi -case $enable_dvi2tty in #( - yes|no) : - ;; #( - *) : - - enable_dvi2tty=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-dvi2tty=$enable_dvi2tty'" >&5 -$as_echo "$as_me: Assuming \`--enable-dvi2tty=$enable_dvi2tty'" >&6;} - ac_configure_args="$ac_configure_args '--enable-dvi2tty=$enable_dvi2tty'" - ;; -esac - -test "x$enable_dvi2tty" = xno || { - need_ptexenc=yes -} - -## texk/dvidvi/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/dvidvi/ -## configure options and TL libraries required for dvidvi -# Check whether --enable-dvidvi was given. -if test "${enable_dvidvi+set}" = set; then : - enableval=$enable_dvidvi; -fi -case $enable_dvidvi in #( - yes|no) : - ;; #( - *) : - - enable_dvidvi=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-dvidvi=$enable_dvidvi'" >&5 -$as_echo "$as_me: Assuming \`--enable-dvidvi=$enable_dvidvi'" >&6;} - ac_configure_args="$ac_configure_args '--enable-dvidvi=$enable_dvidvi'" - ;; -esac - -test "x$enable_dvidvi" = xno || { - need_kpathsea=yes -} - -## texk/dviljk/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/dviljk/ -## configure options and TL libraries required for dviljk -# Check whether --enable-dviljk was given. -if test "${enable_dviljk+set}" = set; then : - enableval=$enable_dviljk; -fi -case $enable_dviljk in #( - yes|no) : - ;; #( - *) : - - enable_dviljk=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-dviljk=$enable_dviljk'" >&5 -$as_echo "$as_me: Assuming \`--enable-dviljk=$enable_dviljk'" >&6;} - ac_configure_args="$ac_configure_args '--enable-dviljk=$enable_dviljk'" - ;; -esac - -test "x$enable_dviljk" = xno || { - need_kpathsea=yes -} - -## texk/dviout-util/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/dviout-util/ -## configure options and TL libraries required for dviout-util -# Check whether --enable-dviout-util was given. -if test "${enable_dviout_util+set}" = set; then : - enableval=$enable_dviout_util; -fi -case $enable_dviout_util in #( - yes|no) : - ;; #( - *) : - - enable_dviout_util=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-dviout-util=$enable_dviout_util'" >&5 -$as_echo "$as_me: Assuming \`--enable-dviout-util=$enable_dviout_util'" >&6;} - ac_configure_args="$ac_configure_args '--enable-dviout-util=$enable_dviout_util'" - ;; -esac - -test "x$enable_dviout_util" = xno || { - need_ptexenc=yes -} - -## texk/dvipdfm-x/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/dvipdfm-x/ -## configure options and TL libraries required for dvipdfm-x -# Check whether --enable-dvipdfm-x was given. -if test "${enable_dvipdfm_x+set}" = set; then : - enableval=$enable_dvipdfm_x; -fi -case $enable_dvipdfm_x in #( - yes|no) : - ;; #( - *) : - - enable_dvipdfm_x=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-dvipdfm-x=$enable_dvipdfm_x'" >&5 -$as_echo "$as_me: Assuming \`--enable-dvipdfm-x=$enable_dvipdfm_x'" >&6;} - ac_configure_args="$ac_configure_args '--enable-dvipdfm-x=$enable_dvipdfm_x'" - ;; -esac - -test "x$enable_dvipdfm_x" = xno || { - need_kpathsea=yes - need_libpng=yes - need_libpaper=yes -} - -## texk/dvipng/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/dvipng/ -## configure options and TL libraries required for dvipng -# Check whether --enable-dvipng was given. -if test "${enable_dvipng+set}" = set; then : - enableval=$enable_dvipng; -fi -case $enable_dvipng in #( - yes|no) : - ;; #( - *) : - - enable_dvipng=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-dvipng=$enable_dvipng'" >&5 -$as_echo "$as_me: Assuming \`--enable-dvipng=$enable_dvipng'" >&6;} - ac_configure_args="$ac_configure_args '--enable-dvipng=$enable_dvipng'" - ;; -esac - -test "x$enable_dvipng" = xno || { - need_kpathsea=yes - need_gd=yes -} - -## texk/dvipng/ac/dvipng.ac: configure.ac fragment for the TeX Live subdirectory texk/dvipng/ -## configure options for dvipng -# Check whether --enable-debug was given. -if test "${enable_debug+set}" = set; then : - enableval=$enable_debug; -fi - -# Check whether --enable-timing was given. -if test "${enable_timing+set}" = set; then : - enableval=$enable_timing; -fi - - -# Check whether --with-gs was given. -if test "${with_gs+set}" = set; then : - withval=$with_gs; -fi - - -## texk/dvipos/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/dvipos/ -## configure options and TL libraries required for dvipos -# Check whether --enable-dvipos was given. -if test "${enable_dvipos+set}" = set; then : - enableval=$enable_dvipos; -fi -case $enable_dvipos in #( - yes|no) : - ;; #( - *) : - - enable_dvipos=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-dvipos=$enable_dvipos'" >&5 -$as_echo "$as_me: Assuming \`--enable-dvipos=$enable_dvipos'" >&6;} - ac_configure_args="$ac_configure_args '--enable-dvipos=$enable_dvipos'" - ;; -esac - -test "x$enable_dvipos" = xno || { - need_kpathsea=yes -} - -## texk/dvipsk/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/dvipsk/ -## configure options and TL libraries required for dvipsk -# Check whether --enable-dvipsk was given. -if test "${enable_dvipsk+set}" = set; then : - enableval=$enable_dvipsk; -fi -case $enable_dvipsk in #( - yes|no) : - ;; #( - *) : - - enable_dvipsk=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-dvipsk=$enable_dvipsk'" >&5 -$as_echo "$as_me: Assuming \`--enable-dvipsk=$enable_dvipsk'" >&6;} - ac_configure_args="$ac_configure_args '--enable-dvipsk=$enable_dvipsk'" - ;; -esac - -test "x$enable_dvipsk" = xno || { - need_kpathsea=yes -} - -# texk/dvisvgm/ac/withenable.ac: configure.ac fragment -## configure options and TL libraries required for dvisvgm -# Check whether --enable-dvisvgm was given. -if test "${enable_dvisvgm+set}" = set; then : - enableval=$enable_dvisvgm; -fi -case $enable_dvisvgm in #( - yes|no) : - ;; #( - *) : - - enable_dvisvgm=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-dvisvgm=$enable_dvisvgm'" >&5 -$as_echo "$as_me: Assuming \`--enable-dvisvgm=$enable_dvisvgm'" >&6;} - ac_configure_args="$ac_configure_args '--enable-dvisvgm=$enable_dvisvgm'" - ;; -esac - -test "x$enable_dvisvgm" = xno || { - need_kpathsea=yes - need_potrace=yes - need_freetype2=yes - need_zlib=yes -} - -## texk/gregorio/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/gregorio/ -## configure options and TL libraries required for gregorio -# Check whether --enable-gregorio was given. -if test "${enable_gregorio+set}" = set; then : - enableval=$enable_gregorio; -fi -case $enable_gregorio in #( - yes|no) : - ;; #( - *) : - - enable_gregorio=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-gregorio=$enable_gregorio'" >&5 -$as_echo "$as_me: Assuming \`--enable-gregorio=$enable_gregorio'" >&6;} - ac_configure_args="$ac_configure_args '--enable-gregorio=$enable_gregorio'" - ;; -esac - -test "x$enable_gregorio" = xno || { - need_kpathsea=yes -} - -## texk/gsftopk/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/gsftopk/ -## configure options and TL libraries required for gsftopk -# Check whether --enable-gsftopk was given. -if test "${enable_gsftopk+set}" = set; then : - enableval=$enable_gsftopk; -fi -case $enable_gsftopk in #( - yes|no) : - ;; #( - *) : - - enable_gsftopk=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-gsftopk=$enable_gsftopk'" >&5 -$as_echo "$as_me: Assuming \`--enable-gsftopk=$enable_gsftopk'" >&6;} - ac_configure_args="$ac_configure_args '--enable-gsftopk=$enable_gsftopk'" - ;; -esac - -test "x$enable_gsftopk" = xno || { - need_kpathsea=yes -} - -## texk/lcdf-typetools/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/lcdf-typetools/ -## configure options and TL libraries required for lcdf-typetools -# Check whether --enable-lcdf-typetools was given. -if test "${enable_lcdf_typetools+set}" = set; then : - enableval=$enable_lcdf_typetools; -fi -case $enable_lcdf_typetools in #( - yes|no) : - ;; #( - *) : - - enable_lcdf_typetools=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-lcdf-typetools=$enable_lcdf_typetools'" >&5 -$as_echo "$as_me: Assuming \`--enable-lcdf-typetools=$enable_lcdf_typetools'" >&6;} - ac_configure_args="$ac_configure_args '--enable-lcdf-typetools=$enable_lcdf_typetools'" - ;; -esac - -test "x$enable_lcdf_typetools" = xno || { - need_kpathsea=yes -} - -## Define configure options for lcdf-typetools. Extracted from configure.ac -## for ease of building TeX Live. -# Check whether --enable-cfftot1 was given. -if test "${enable_cfftot1+set}" = set; then : - enableval=$enable_cfftot1; -fi -# Check whether --enable-mmafm was given. -if test "${enable_mmafm+set}" = set; then : - enableval=$enable_mmafm; -fi -# Check whether --enable-mmpfb was given. -if test "${enable_mmpfb+set}" = set; then : - enableval=$enable_mmpfb; -fi -# Check whether --enable-otfinfo was given. -if test "${enable_otfinfo+set}" = set; then : - enableval=$enable_otfinfo; -fi -# Check whether --enable-otftotfm was given. -if test "${enable_otftotfm+set}" = set; then : - enableval=$enable_otftotfm; -fi -# Check whether --enable-t1dotlessj was given. -if test "${enable_t1dotlessj+set}" = set; then : - enableval=$enable_t1dotlessj; -fi -# Check whether --enable-t1lint was given. -if test "${enable_t1lint+set}" = set; then : - enableval=$enable_t1lint; -fi -# Check whether --enable-t1rawafm was given. -if test "${enable_t1rawafm+set}" = set; then : - enableval=$enable_t1rawafm; -fi -# Check whether --enable-t1reencode was given. -if test "${enable_t1reencode+set}" = set; then : - enableval=$enable_t1reencode; -fi -# Check whether --enable-t1testpage was given. -if test "${enable_t1testpage+set}" = set; then : - enableval=$enable_t1testpage; -fi -# Check whether --enable-ttftotype42 was given. -if test "${enable_ttftotype42+set}" = set; then : - enableval=$enable_ttftotype42; -fi - -# Check whether --enable-cfftot1 was given. -if test "${enable_cfftot1+set}" = set; then : - enableval=$enable_cfftot1; -fi -# Check whether --enable-t1dotlessj was given. -if test "${enable_t1dotlessj+set}" = set; then : - enableval=$enable_t1dotlessj; -fi -# Check whether --enable-ttftotype42 was given. -if test "${enable_ttftotype42+set}" = set; then : - enableval=$enable_ttftotype42; -fi -# Check whether --enable-updmap was given. -if test "${enable_updmap+set}" = set; then : - enableval=$enable_updmap; -fi - - -## texk/makeindexk/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/makeindexk/ -## configure options and TL libraries required for makeindexk -# Check whether --enable-makeindexk was given. -if test "${enable_makeindexk+set}" = set; then : - enableval=$enable_makeindexk; -fi -case $enable_makeindexk in #( - yes|no) : - ;; #( - *) : - - enable_makeindexk=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-makeindexk=$enable_makeindexk'" >&5 -$as_echo "$as_me: Assuming \`--enable-makeindexk=$enable_makeindexk'" >&6;} - ac_configure_args="$ac_configure_args '--enable-makeindexk=$enable_makeindexk'" - ;; -esac - -test "x$enable_makeindexk" = xno || { - need_kpathsea=yes -} - -## texk/makejvf/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/makejvf/ -## configure options and TL libraries required for makejvf -# Check whether --enable-makejvf was given. -if test "${enable_makejvf+set}" = set; then : - enableval=$enable_makejvf; -fi -case $enable_makejvf in #( - yes|no) : - ;; #( - *) : - - enable_makejvf=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-makejvf=$enable_makejvf'" >&5 -$as_echo "$as_me: Assuming \`--enable-makejvf=$enable_makejvf'" >&6;} - ac_configure_args="$ac_configure_args '--enable-makejvf=$enable_makejvf'" - ;; -esac - -test "x$enable_makejvf" = xno || { - need_ptexenc=yes -} - -## texk/mendexk/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/mendexk/ -## configure options and TL libraries required for mendexk -# Check whether --enable-mendexk was given. -if test "${enable_mendexk+set}" = set; then : - enableval=$enable_mendexk; -fi -case $enable_mendexk in #( - yes|no) : - ;; #( - *) : - - enable_mendexk=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-mendexk=$enable_mendexk'" >&5 -$as_echo "$as_me: Assuming \`--enable-mendexk=$enable_mendexk'" >&6;} - ac_configure_args="$ac_configure_args '--enable-mendexk=$enable_mendexk'" - ;; -esac - -test "x$enable_mendexk" = xno || { - need_ptexenc=yes -} - -## texk/musixtnt/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/musixtnt/ -## configure options and TL libraries required for musixtnt -# Check whether --enable-musixtnt was given. -if test "${enable_musixtnt+set}" = set; then : - enableval=$enable_musixtnt; -fi -case $enable_musixtnt in #( - yes|no) : - ;; #( - *) : - - enable_musixtnt=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-musixtnt=$enable_musixtnt'" >&5 -$as_echo "$as_me: Assuming \`--enable-musixtnt=$enable_musixtnt'" >&6;} - ac_configure_args="$ac_configure_args '--enable-musixtnt=$enable_musixtnt'" - ;; -esac - -test "x$enable_musixtnt" = xno || { - need_kpathsea=yes -} - -## texk/ps2pk/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/ps2pk/ -## configure options and TL libraries required for ps2pk -# Check whether --enable-ps2pk was given. -if test "${enable_ps2pk+set}" = set; then : - enableval=$enable_ps2pk; -fi -case $enable_ps2pk in #( - yes|no) : - ;; #( - *) : - - enable_ps2pk=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-ps2pk=$enable_ps2pk'" >&5 -$as_echo "$as_me: Assuming \`--enable-ps2pk=$enable_ps2pk'" >&6;} - ac_configure_args="$ac_configure_args '--enable-ps2pk=$enable_ps2pk'" - ;; -esac - -test "x$enable_ps2pk" = xno || { - need_kpathsea=yes -} - -## texk/psutils/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/psutils/ -## configure options and TL libraries required for psutils -# Check whether --enable-psutils was given. -if test "${enable_psutils+set}" = set; then : - enableval=$enable_psutils; -fi -case $enable_psutils in #( - yes|no) : - ;; #( - *) : - - enable_psutils=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-psutils=$enable_psutils'" >&5 -$as_echo "$as_me: Assuming \`--enable-psutils=$enable_psutils'" >&6;} - ac_configure_args="$ac_configure_args '--enable-psutils=$enable_psutils'" - ;; -esac - -test "x$enable_psutils" = xno || { - need_kpathsea=yes - need_libpaper=yes -} - -## texk/seetexk/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/seetexk/ -## configure options and TL libraries required for seetexk -# Check whether --enable-seetexk was given. -if test "${enable_seetexk+set}" = set; then : - enableval=$enable_seetexk; -fi -case $enable_seetexk in #( - yes|no) : - ;; #( - *) : - - enable_seetexk=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-seetexk=$enable_seetexk'" >&5 -$as_echo "$as_me: Assuming \`--enable-seetexk=$enable_seetexk'" >&6;} - ac_configure_args="$ac_configure_args '--enable-seetexk=$enable_seetexk'" - ;; -esac - -test "x$enable_seetexk" = xno || { - need_kpathsea=yes -} - -## texk/tex4htk/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/tex4htk/ -## configure options and TL libraries required for tex4htk -# Check whether --enable-tex4htk was given. -if test "${enable_tex4htk+set}" = set; then : - enableval=$enable_tex4htk; -fi -case $enable_tex4htk in #( - yes|no) : - ;; #( - *) : - - enable_tex4htk=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-tex4htk=$enable_tex4htk'" >&5 -$as_echo "$as_me: Assuming \`--enable-tex4htk=$enable_tex4htk'" >&6;} - ac_configure_args="$ac_configure_args '--enable-tex4htk=$enable_tex4htk'" - ;; -esac - -test "x$enable_tex4htk" = xno || { - need_kpathsea=yes -} - -## texk/ttf2pk2/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/ttf2pk2/ -## configure options and TL libraries required for ttf2pk -# Check whether --enable-ttf2pk2 was given. -if test "${enable_ttf2pk2+set}" = set; then : - enableval=$enable_ttf2pk2; -fi -case $enable_ttf2pk2 in #( - yes|no) : - ;; #( - *) : - - enable_ttf2pk2=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-ttf2pk2=$enable_ttf2pk2'" >&5 -$as_echo "$as_me: Assuming \`--enable-ttf2pk2=$enable_ttf2pk2'" >&6;} - ac_configure_args="$ac_configure_args '--enable-ttf2pk2=$enable_ttf2pk2'" - ;; -esac - -test "x$enable_ttf2pk2" = xno || { - need_kpathsea=yes - need_freetype2=yes -} - -## texk/ttfdump/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/ttfdump/ -## configure options and TL libraries required for ttfdump -# Check whether --enable-ttfdump was given. -if test "${enable_ttfdump+set}" = set; then : - enableval=$enable_ttfdump; -fi -case $enable_ttfdump in #( - yes|no) : - ;; #( - *) : - - enable_ttfdump=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-ttfdump=$enable_ttfdump'" >&5 -$as_echo "$as_me: Assuming \`--enable-ttfdump=$enable_ttfdump'" >&6;} - ac_configure_args="$ac_configure_args '--enable-ttfdump=$enable_ttfdump'" - ;; -esac - -test "x$enable_ttfdump" = xno || { - need_kpathsea=yes -} - -## texk/upmendex/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/upmendex/ -## configure options and TL libraries required for upmendex -# Check whether --enable-upmendex was given. -if test "${enable_upmendex+set}" = set; then : - enableval=$enable_upmendex; -fi -case $enable_upmendex in #( - yes|no) : - ;; #( - *) : - - enable_upmendex=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-upmendex=$enable_upmendex'" >&5 -$as_echo "$as_me: Assuming \`--enable-upmendex=$enable_upmendex'" >&6;} - ac_configure_args="$ac_configure_args '--enable-upmendex=$enable_upmendex'" - ;; -esac - -test "x$enable_upmendex" = xno || { - need_kpathsea=yes - need_icu=yes -} - -## texk/xdvik/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/xdvik/ -## configure options and TL libraries required for xdvik -# Check whether --enable-xdvik was given. -if test "${enable_xdvik+set}" = set; then : - enableval=$enable_xdvik; -fi -if test "x$with_x" = xno; then : - case $enable_xdvik in #( - "") : - { $as_echo "$as_me:${as_lineno-$LINENO}: \`--without-x' -> \`--disable-xdvik'" >&5 -$as_echo "$as_me: \`--without-x' -> \`--disable-xdvik'" >&6;} - enable_xdvik=no - ac_configure_args="$ac_configure_args '--disable-xdvik'" ;; #( - yes) : - as_fn_error $? "Sorry, incompatible options \`--without-x' and \`--enable-xdvik'" "$LINENO" 5 ;; #( - *) : - ;; -esac -fi -case $enable_xdvik in #( - yes|no) : - ;; #( - *) : - - enable_xdvik=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-xdvik=$enable_xdvik'" >&5 -$as_echo "$as_me: Assuming \`--enable-xdvik=$enable_xdvik'" >&6;} - ac_configure_args="$ac_configure_args '--enable-xdvik=$enable_xdvik'" - ;; -esac - -test "x$enable_xdvik" = xno || { - need_kpathsea=yes - need_freetype2=yes -} - -## texk/xdvik/ac/xdvik.ac: configure.ac fragment for the TeX Live subdirectory texk/xdvik/ -## configure options for xdvik - -# Check whether --with-xdvi-x-toolkit was given. -if test "${with_xdvi_x_toolkit+set}" = set; then : - withval=$with_xdvi_x_toolkit; -fi - - -## texk/texlive/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/texlive/ -## configure options and TL libraries required for texlive -# Check whether --enable-texlive was given. -if test "${enable_texlive+set}" = set; then : - enableval=$enable_texlive; -fi -case $enable_texlive in #( - yes|no) : - ;; #( - *) : - - enable_texlive=$enable_all_pkgs - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-texlive=$enable_texlive'" >&5 -$as_echo "$as_me: Assuming \`--enable-texlive=$enable_texlive'" >&6;} - ac_configure_args="$ac_configure_args '--enable-texlive=$enable_texlive'" - ;; -esac - -## texk/texlive/ac/texlive.ac: configure.ac fragment for the TeX Live subdirectory texk/texlive/ -## configure options for texlive -# Check whether --enable-linked-scripts was given. -if test "${enable_linked_scripts+set}" = set; then : - enableval=$enable_linked_scripts; -fi - - -## libs/harfbuzz/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/harfbuzz/ -## configure options and TL libraries required for harfbuzz - -# Check whether --with-system-harfbuzz was given. -if test "${with_system_harfbuzz+set}" = set; then : - withval=$with_system_harfbuzz; -fi -if test "x$with_system_harfbuzz" = x; then - if test -f $srcdir/libs/harfbuzz/configure; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`harfbuzz' headers and library from TL tree" >&5 -$as_echo "$as_me: Assuming \`harfbuzz' headers and library from TL tree" >&6;} - with_system_harfbuzz=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming installed \`harfbuzz' headers and library" >&5 -$as_echo "$as_me: Assuming installed \`harfbuzz' headers and library" >&6;} - with_system_harfbuzz=yes - fi - ac_configure_args="$ac_configure_args '--with-system-harfbuzz=$with_system_harfbuzz'" -elif test "x$with_system_harfbuzz" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Using installed \`harfbuzz' headers and library" >&5 -$as_echo "$as_me: Using installed \`harfbuzz' headers and library" >&6;} -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`harfbuzz' headers and library from TL tree" >&5 -$as_echo "$as_me: Using \`harfbuzz' headers and library from TL tree" >&6;} - if test "x$with_system_harfbuzz" != xno; then - with_system_harfbuzz=no - ac_configure_args="$ac_configure_args '--without-system-harfbuzz'" - fi -fi -if test "x$with_system_harfbuzz" = xyes; then - if test "x$with_system_graphite2" = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: -> installed \`graphite2' headers and library" >&5 -$as_echo "$as_me: -> installed \`graphite2' headers and library" >&6;} - with_system_graphite2=yes - ac_configure_args="$ac_configure_args '--with-system-graphite2'" - elif test "x$with_system_graphite2" != xyes; then - as_fn_error $? "Sorry, \`--with-system-harfbuzz' requires \`--with-system-graphite2'" "$LINENO" 5 - fi - if test "x$with_system_icu" = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: -> installed \`icu' headers and library" >&5 -$as_echo "$as_me: -> installed \`icu' headers and library" >&6;} - with_system_icu=yes - ac_configure_args="$ac_configure_args '--with-system-icu'" - elif test "x$with_system_icu" != xyes; then - as_fn_error $? "Sorry, \`--with-system-harfbuzz' requires \`--with-system-icu'" "$LINENO" 5 - fi -fi - -test "x$need_harfbuzz" = xyes && { - need_graphite2=yes - need_icu=yes -} - -## libs/icu/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/icu/ -## configure options and TL libraries required for icu (modified for XeTeX) - -# Check whether --with-system-icu was given. -if test "${with_system_icu+set}" = set; then : - withval=$with_system_icu; -fi -if test "x$with_system_icu" = x; then - if test -f $srcdir/libs/icu/configure; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`icu' headers and library from TL tree" >&5 -$as_echo "$as_me: Assuming \`icu' headers and library from TL tree" >&6;} - with_system_icu=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming installed \`icu' headers and library" >&5 -$as_echo "$as_me: Assuming installed \`icu' headers and library" >&6;} - with_system_icu=yes - fi - ac_configure_args="$ac_configure_args '--with-system-icu=$with_system_icu'" -elif test "x$with_system_icu" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Using installed \`icu' headers and library" >&5 -$as_echo "$as_me: Using installed \`icu' headers and library" >&6;} -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`icu' headers and library from TL tree" >&5 -$as_echo "$as_me: Using \`icu' headers and library from TL tree" >&6;} - if test "x$with_system_icu" != xno; then - with_system_icu=no - ac_configure_args="$ac_configure_args '--without-system-icu'" - fi -fi - -## libs/teckit/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/teckit/ -## configure options and TL libraries required for teckit - -# Check whether --with-system-teckit was given. -if test "${with_system_teckit+set}" = set; then : - withval=$with_system_teckit; -fi -if test "x$with_system_teckit" = x; then - if test -f $srcdir/libs/teckit/configure; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`teckit' headers and library from TL tree" >&5 -$as_echo "$as_me: Assuming \`teckit' headers and library from TL tree" >&6;} - with_system_teckit=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming installed \`teckit' headers and library" >&5 -$as_echo "$as_me: Assuming installed \`teckit' headers and library" >&6;} - with_system_teckit=yes - fi - ac_configure_args="$ac_configure_args '--with-system-teckit=$with_system_teckit'" -elif test "x$with_system_teckit" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Using installed \`teckit' headers and library" >&5 -$as_echo "$as_me: Using installed \`teckit' headers and library" >&6;} -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`teckit' headers and library from TL tree" >&5 -$as_echo "$as_me: Using \`teckit' headers and library from TL tree" >&6;} - if test "x$with_system_teckit" != xno; then - with_system_teckit=no - ac_configure_args="$ac_configure_args '--without-system-teckit'" - fi -fi -if test "x$with_system_teckit" = xyes; then - if test "x$with_system_zlib" = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: -> installed \`zlib' headers and library" >&5 -$as_echo "$as_me: -> installed \`zlib' headers and library" >&6;} - with_system_zlib=yes - ac_configure_args="$ac_configure_args '--with-system-zlib'" - elif test "x$with_system_zlib" != xyes; then - as_fn_error $? "Sorry, \`--with-system-teckit' requires \`--with-system-zlib'" "$LINENO" 5 - fi -fi - -test "x$need_teckit" = xyes && { - need_zlib=yes -} - -## libs/graphite2/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/graphite2/ -## configure options and TL libraries required for graphite2 - -# Check whether --with-system-graphite2 was given. -if test "${with_system_graphite2+set}" = set; then : - withval=$with_system_graphite2; -fi -if test "x$with_system_graphite2" = x; then - if test -f $srcdir/libs/graphite2/configure; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`graphite2' headers and library from TL tree" >&5 -$as_echo "$as_me: Assuming \`graphite2' headers and library from TL tree" >&6;} - with_system_graphite2=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming installed \`graphite2' headers and library" >&5 -$as_echo "$as_me: Assuming installed \`graphite2' headers and library" >&6;} - with_system_graphite2=yes - fi - ac_configure_args="$ac_configure_args '--with-system-graphite2=$with_system_graphite2'" -elif test "x$with_system_graphite2" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Using installed \`graphite2' headers and library" >&5 -$as_echo "$as_me: Using installed \`graphite2' headers and library" >&6;} -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`graphite2' headers and library from TL tree" >&5 -$as_echo "$as_me: Using \`graphite2' headers and library from TL tree" >&6;} - if test "x$with_system_graphite2" != xno; then - with_system_graphite2=no - ac_configure_args="$ac_configure_args '--without-system-graphite2'" - fi -fi - -## libs/zziplib/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/zziplib/ -## configure options and TL libraries required for zziplib +## libs/zziplib/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/zziplib/ +## configure options and TL libraries required for zziplib # Check whether --with-system-zziplib was given. if test "${with_system_zziplib+set}" = set; then : @@ -5959,373 +4603,24 @@ elif test "x$with_system_zziplib" = xyes; then $as_echo "$as_me: Using installed \`zziplib' headers and library" >&6;} else { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`zziplib' headers and library from TL tree" >&5 -$as_echo "$as_me: Using \`zziplib' headers and library from TL tree" >&6;} - if test "x$with_system_zziplib" != xno; then - with_system_zziplib=no - ac_configure_args="$ac_configure_args '--without-system-zziplib'" - fi -fi -if test "x$with_system_zziplib" = xyes; then - if test "x$with_system_zlib" = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: -> installed \`zlib' headers and library" >&5 -$as_echo "$as_me: -> installed \`zlib' headers and library" >&6;} - with_system_zlib=yes - ac_configure_args="$ac_configure_args '--with-system-zlib'" - elif test "x$with_system_zlib" != xyes; then - as_fn_error $? "Sorry, \`--with-system-zziplib' requires \`--with-system-zlib'" "$LINENO" 5 - fi -fi - -test "x$need_zziplib" = xyes && { - need_zlib=yes -} - -## libs/xpdf/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/xpdf/ -## configure options and TL libraries required for xpdf - -# Check whether --with-system-xpdf was given. -if test "${with_system_xpdf+set}" = set; then : - withval=$with_system_xpdf; -fi -if test "x$with_system_xpdf" = x; then - if test -f $srcdir/libs/xpdf/configure; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`xpdf' headers and library from TL tree" >&5 -$as_echo "$as_me: Assuming \`xpdf' headers and library from TL tree" >&6;} - with_system_xpdf=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming installed \`xpdf' headers and library" >&5 -$as_echo "$as_me: Assuming installed \`xpdf' headers and library" >&6;} - with_system_xpdf=yes - fi - ac_configure_args="$ac_configure_args '--with-system-xpdf=$with_system_xpdf'" -elif test "x$with_system_xpdf" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Using installed \`xpdf' headers and library" >&5 -$as_echo "$as_me: Using installed \`xpdf' headers and library" >&6;} -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`xpdf' headers and library from TL tree" >&5 -$as_echo "$as_me: Using \`xpdf' headers and library from TL tree" >&6;} - if test "x$with_system_xpdf" != xno; then - with_system_xpdf=no - ac_configure_args="$ac_configure_args '--without-system-xpdf'" - fi -fi - -## libs/poppler/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/poppler/ -## configure options and TL libraries required for poppler - -# Check whether --with-system-poppler was given. -if test "${with_system_poppler+set}" = set; then : - withval=$with_system_poppler; -fi -if test "x$with_system_poppler" = x; then - if test -f $srcdir/libs/poppler/configure; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`poppler' headers and library from TL tree" >&5 -$as_echo "$as_me: Assuming \`poppler' headers and library from TL tree" >&6;} - with_system_poppler=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming installed \`poppler' headers and library" >&5 -$as_echo "$as_me: Assuming installed \`poppler' headers and library" >&6;} - with_system_poppler=yes - fi - ac_configure_args="$ac_configure_args '--with-system-poppler=$with_system_poppler'" -elif test "x$with_system_poppler" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Using installed \`poppler' headers and library" >&5 -$as_echo "$as_me: Using installed \`poppler' headers and library" >&6;} -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`poppler' headers and library from TL tree" >&5 -$as_echo "$as_me: Using \`poppler' headers and library from TL tree" >&6;} - if test "x$with_system_poppler" != xno; then - with_system_poppler=no - ac_configure_args="$ac_configure_args '--without-system-poppler'" - fi -fi -if test "x$with_system_poppler" = xyes; then - if test "x$with_system_zlib" = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: -> installed \`zlib' headers and library" >&5 -$as_echo "$as_me: -> installed \`zlib' headers and library" >&6;} - with_system_zlib=yes - ac_configure_args="$ac_configure_args '--with-system-zlib'" - elif test "x$with_system_zlib" != xyes; then - as_fn_error $? "Sorry, \`--with-system-poppler' requires \`--with-system-zlib'" "$LINENO" 5 - fi -fi - -test "x$need_poppler" = xyes && { - need_zlib=yes -} - -## libs/mpfr/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/mpfr/ -## configure options and TL libraries required for mpfr - -# Check whether --with-system-mpfr was given. -if test "${with_system_mpfr+set}" = set; then : - withval=$with_system_mpfr; -fi - -# Check whether --with-mpfr-includes was given. -if test "${with_mpfr_includes+set}" = set; then : - withval=$with_mpfr_includes; -fi - -# Check whether --with-mpfr-libdir was given. -if test "${with_mpfr_libdir+set}" = set; then : - withval=$with_mpfr_libdir; -fi -if test "x$with_system_mpfr" = x; then - if test -f $srcdir/libs/mpfr/configure; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`mpfr' headers and library from TL tree" >&5 -$as_echo "$as_me: Assuming \`mpfr' headers and library from TL tree" >&6;} - with_system_mpfr=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming installed \`mpfr' headers and library" >&5 -$as_echo "$as_me: Assuming installed \`mpfr' headers and library" >&6;} - with_system_mpfr=yes - fi - ac_configure_args="$ac_configure_args '--with-system-mpfr=$with_system_mpfr'" -elif test "x$with_system_mpfr" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Using installed \`mpfr' headers and library" >&5 -$as_echo "$as_me: Using installed \`mpfr' headers and library" >&6;} -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`mpfr' headers and library from TL tree" >&5 -$as_echo "$as_me: Using \`mpfr' headers and library from TL tree" >&6;} - if test "x$with_system_mpfr" != xno; then - with_system_mpfr=no - ac_configure_args="$ac_configure_args '--without-system-mpfr'" - fi -fi -if test "x$with_system_mpfr" = xyes; then - if test "x$with_system_gmp" = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: -> installed \`gmp' headers and library" >&5 -$as_echo "$as_me: -> installed \`gmp' headers and library" >&6;} - with_system_gmp=yes - ac_configure_args="$ac_configure_args '--with-system-gmp'" - elif test "x$with_system_gmp" != xyes; then - as_fn_error $? "Sorry, \`--with-system-mpfr' requires \`--with-system-gmp'" "$LINENO" 5 - fi -fi - -test "x$need_mpfr" = xyes && { - need_gmp=yes -} - -## libs/gmp/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/gmp/ -## configure options and TL libraries required for gmp - -# Check whether --with-system-gmp was given. -if test "${with_system_gmp+set}" = set; then : - withval=$with_system_gmp; -fi - -# Check whether --with-gmp-includes was given. -if test "${with_gmp_includes+set}" = set; then : - withval=$with_gmp_includes; -fi - -# Check whether --with-gmp-libdir was given. -if test "${with_gmp_libdir+set}" = set; then : - withval=$with_gmp_libdir; -fi -if test "x$with_system_gmp" = x; then - if test -f $srcdir/libs/gmp/configure; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`gmp' headers and library from TL tree" >&5 -$as_echo "$as_me: Assuming \`gmp' headers and library from TL tree" >&6;} - with_system_gmp=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming installed \`gmp' headers and library" >&5 -$as_echo "$as_me: Assuming installed \`gmp' headers and library" >&6;} - with_system_gmp=yes - fi - ac_configure_args="$ac_configure_args '--with-system-gmp=$with_system_gmp'" -elif test "x$with_system_gmp" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Using installed \`gmp' headers and library" >&5 -$as_echo "$as_me: Using installed \`gmp' headers and library" >&6;} -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`gmp' headers and library from TL tree" >&5 -$as_echo "$as_me: Using \`gmp' headers and library from TL tree" >&6;} - if test "x$with_system_gmp" != xno; then - with_system_gmp=no - ac_configure_args="$ac_configure_args '--without-system-gmp'" - fi -fi - -## libs/cairo/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/cairo/ -## configure options and TL libraries required for cairo - -# Check whether --with-system-cairo was given. -if test "${with_system_cairo+set}" = set; then : - withval=$with_system_cairo; -fi -if test "x$with_system_cairo" = x; then - if test -f $srcdir/libs/cairo/configure; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`cairo' headers and library from TL tree" >&5 -$as_echo "$as_me: Assuming \`cairo' headers and library from TL tree" >&6;} - with_system_cairo=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming installed \`cairo' headers and library" >&5 -$as_echo "$as_me: Assuming installed \`cairo' headers and library" >&6;} - with_system_cairo=yes - fi - ac_configure_args="$ac_configure_args '--with-system-cairo=$with_system_cairo'" -elif test "x$with_system_cairo" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Using installed \`cairo' headers and library" >&5 -$as_echo "$as_me: Using installed \`cairo' headers and library" >&6;} -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`cairo' headers and library from TL tree" >&5 -$as_echo "$as_me: Using \`cairo' headers and library from TL tree" >&6;} - if test "x$with_system_cairo" != xno; then - with_system_cairo=no - ac_configure_args="$ac_configure_args '--without-system-cairo'" - fi -fi -if test "x$with_system_cairo" = xyes; then - if test "x$with_system_pixman" = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: -> installed \`pixman' headers and library" >&5 -$as_echo "$as_me: -> installed \`pixman' headers and library" >&6;} - with_system_pixman=yes - ac_configure_args="$ac_configure_args '--with-system-pixman'" - elif test "x$with_system_pixman" != xyes; then - as_fn_error $? "Sorry, \`--with-system-cairo' requires \`--with-system-pixman'" "$LINENO" 5 - fi -fi - -test "x$need_cairo" = xyes && { - need_pixman=yes -} - -## libs/pixman/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/pixman/ -## configure options and TL libraries required for pixman - -# Check whether --with-system-pixman was given. -if test "${with_system_pixman+set}" = set; then : - withval=$with_system_pixman; -fi -if test "x$with_system_pixman" = x; then - if test -f $srcdir/libs/pixman/configure; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`pixman' headers and library from TL tree" >&5 -$as_echo "$as_me: Assuming \`pixman' headers and library from TL tree" >&6;} - with_system_pixman=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming installed \`pixman' headers and library" >&5 -$as_echo "$as_me: Assuming installed \`pixman' headers and library" >&6;} - with_system_pixman=yes - fi - ac_configure_args="$ac_configure_args '--with-system-pixman=$with_system_pixman'" -elif test "x$with_system_pixman" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Using installed \`pixman' headers and library" >&5 -$as_echo "$as_me: Using installed \`pixman' headers and library" >&6;} -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`pixman' headers and library from TL tree" >&5 -$as_echo "$as_me: Using \`pixman' headers and library from TL tree" >&6;} - if test "x$with_system_pixman" != xno; then - with_system_pixman=no - ac_configure_args="$ac_configure_args '--without-system-pixman'" - fi -fi - -## libs/gd/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/gd/ -## configure options and TL libraries required for gd - -# Check whether --with-system-gd was given. -if test "${with_system_gd+set}" = set; then : - withval=$with_system_gd; -fi - -# Check whether --with-gd-includes was given. -if test "${with_gd_includes+set}" = set; then : - withval=$with_gd_includes; -fi - -# Check whether --with-gd-libdir was given. -if test "${with_gd_libdir+set}" = set; then : - withval=$with_gd_libdir; -fi -if test "x$with_system_gd" = x; then - if test -f $srcdir/libs/gd/configure; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`gd' headers and library from TL tree" >&5 -$as_echo "$as_me: Assuming \`gd' headers and library from TL tree" >&6;} - with_system_gd=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming installed \`gd' headers and library" >&5 -$as_echo "$as_me: Assuming installed \`gd' headers and library" >&6;} - with_system_gd=yes - fi - ac_configure_args="$ac_configure_args '--with-system-gd=$with_system_gd'" -elif test "x$with_system_gd" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Using installed \`gd' headers and library" >&5 -$as_echo "$as_me: Using installed \`gd' headers and library" >&6;} -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`gd' headers and library from TL tree" >&5 -$as_echo "$as_me: Using \`gd' headers and library from TL tree" >&6;} - if test "x$with_system_gd" != xno; then - with_system_gd=no - ac_configure_args="$ac_configure_args '--without-system-gd'" - fi -fi -if test "x$with_system_gd" = xyes; then - if test "x$with_system_libpng" = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: -> installed \`libpng' headers and library" >&5 -$as_echo "$as_me: -> installed \`libpng' headers and library" >&6;} - with_system_libpng=yes - ac_configure_args="$ac_configure_args '--with-system-libpng'" - elif test "x$with_system_libpng" != xyes; then - as_fn_error $? "Sorry, \`--with-system-gd' requires \`--with-system-libpng'" "$LINENO" 5 - fi - if test "x$with_system_freetype2" = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: -> installed \`freetype2' headers and library" >&5 -$as_echo "$as_me: -> installed \`freetype2' headers and library" >&6;} - with_system_freetype2=yes - ac_configure_args="$ac_configure_args '--with-system-freetype2'" - elif test "x$with_system_freetype2" != xyes; then - as_fn_error $? "Sorry, \`--with-system-gd' requires \`--with-system-freetype2'" "$LINENO" 5 - fi -fi - -test "x$need_gd" = xyes && { - need_libpng=yes - need_freetype2=yes -} - -## libs/freetype2/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/freetype2/ -## configure options and TL libraries required for freetype2 - -# Check whether --with-system-freetype2 was given. -if test "${with_system_freetype2+set}" = set; then : - withval=$with_system_freetype2; -fi -if test "x$with_system_freetype2" = x; then - if test -f $srcdir/libs/freetype2/configure; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`freetype2' headers and library from TL tree" >&5 -$as_echo "$as_me: Assuming \`freetype2' headers and library from TL tree" >&6;} - with_system_freetype2=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming installed \`freetype2' headers and library" >&5 -$as_echo "$as_me: Assuming installed \`freetype2' headers and library" >&6;} - with_system_freetype2=yes - fi - ac_configure_args="$ac_configure_args '--with-system-freetype2=$with_system_freetype2'" -elif test "x$with_system_freetype2" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Using installed \`freetype2' headers and library" >&5 -$as_echo "$as_me: Using installed \`freetype2' headers and library" >&6;} -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`freetype2' headers and library from TL tree" >&5 -$as_echo "$as_me: Using \`freetype2' headers and library from TL tree" >&6;} - if test "x$with_system_freetype2" != xno; then - with_system_freetype2=no - ac_configure_args="$ac_configure_args '--without-system-freetype2'" +$as_echo "$as_me: Using \`zziplib' headers and library from TL tree" >&6;} + if test "x$with_system_zziplib" != xno; then + with_system_zziplib=no + ac_configure_args="$ac_configure_args '--without-system-zziplib'" fi fi -if test "x$with_system_freetype2" = xyes; then +if test "x$with_system_zziplib" = xyes; then if test "x$with_system_zlib" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: -> installed \`zlib' headers and library" >&5 $as_echo "$as_me: -> installed \`zlib' headers and library" >&6;} with_system_zlib=yes ac_configure_args="$ac_configure_args '--with-system-zlib'" elif test "x$with_system_zlib" != xyes; then - as_fn_error $? "Sorry, \`--with-system-freetype2' requires \`--with-system-zlib'" "$LINENO" 5 + as_fn_error $? "Sorry, \`--with-system-zziplib' requires \`--with-system-zlib'" "$LINENO" 5 fi fi -test "x$need_freetype2" = xyes && { +test "x$need_zziplib" = xyes && { need_zlib=yes } @@ -6373,46 +4668,6 @@ test "x$need_libpng" = xyes && { need_zlib=yes } -## libs/libpaper/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/libpaper/ -## configure options and TL libraries required for libpaper - -# Check whether --with-system-libpaper was given. -if test "${with_system_libpaper+set}" = set; then : - withval=$with_system_libpaper; -fi - -# Check whether --with-libpaper-includes was given. -if test "${with_libpaper_includes+set}" = set; then : - withval=$with_libpaper_includes; -fi - -# Check whether --with-libpaper-libdir was given. -if test "${with_libpaper_libdir+set}" = set; then : - withval=$with_libpaper_libdir; -fi -if test "x$with_system_libpaper" = x; then - if test -f $srcdir/libs/libpaper/configure; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`libpaper' headers and library from TL tree" >&5 -$as_echo "$as_me: Assuming \`libpaper' headers and library from TL tree" >&6;} - with_system_libpaper=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming installed \`libpaper' headers and library" >&5 -$as_echo "$as_me: Assuming installed \`libpaper' headers and library" >&6;} - with_system_libpaper=yes - fi - ac_configure_args="$ac_configure_args '--with-system-libpaper=$with_system_libpaper'" -elif test "x$with_system_libpaper" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Using installed \`libpaper' headers and library" >&5 -$as_echo "$as_me: Using installed \`libpaper' headers and library" >&6;} -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`libpaper' headers and library from TL tree" >&5 -$as_echo "$as_me: Using \`libpaper' headers and library from TL tree" >&6;} - if test "x$with_system_libpaper" != xno; then - with_system_libpaper=no - ac_configure_args="$ac_configure_args '--without-system-libpaper'" - fi -fi - ## libs/luajit/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/luajit/ ## configure options and TL libraries required for luajit @@ -6460,50 +4715,6 @@ $as_echo "$as_me: Using \`zlib' headers and library from TL tree" >&6;} fi -## texk/ptexenc/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/ptexenc/ -## configure options and TL libraries required for ptexenc - -# Check whether --with-system-ptexenc was given. -if test "${with_system_ptexenc+set}" = set; then : - withval=$with_system_ptexenc; -fi -if test "x$with_system_ptexenc" = x; then - if test -f $srcdir/texk/ptexenc/configure; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`ptexenc' headers and library from TL tree" >&5 -$as_echo "$as_me: Assuming \`ptexenc' headers and library from TL tree" >&6;} - with_system_ptexenc=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming installed \`ptexenc' headers and library" >&5 -$as_echo "$as_me: Assuming installed \`ptexenc' headers and library" >&6;} - with_system_ptexenc=yes - fi - ac_configure_args="$ac_configure_args '--with-system-ptexenc=$with_system_ptexenc'" -elif test "x$with_system_ptexenc" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Using installed \`ptexenc' headers and library" >&5 -$as_echo "$as_me: Using installed \`ptexenc' headers and library" >&6;} -else - { $as_echo "$as_me:${as_lineno-$LINENO}: Using \`ptexenc' headers and library from TL tree" >&5 -$as_echo "$as_me: Using \`ptexenc' headers and library from TL tree" >&6;} - if test "x$with_system_ptexenc" != xno; then - with_system_ptexenc=no - ac_configure_args="$ac_configure_args '--without-system-ptexenc'" - fi -fi -if test "x$with_system_ptexenc" = xyes; then - if test "x$with_system_kpathsea" = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: -> installed \`kpathsea' headers and library" >&5 -$as_echo "$as_me: -> installed \`kpathsea' headers and library" >&6;} - with_system_kpathsea=yes - ac_configure_args="$ac_configure_args '--with-system-kpathsea'" - elif test "x$with_system_kpathsea" != xyes; then - as_fn_error $? "Sorry, \`--with-system-ptexenc' requires \`--with-system-kpathsea'" "$LINENO" 5 - fi -fi - -test "x$need_ptexenc" = xyes && { - need_kpathsea=yes -} - ## texk/kpathsea/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/kpathsea/ ## configure options and TL libraries required for kpathsea @@ -21141,10 +19352,6 @@ $as_echo_n "checking for TeX specific libraries to build... " >&6; } echo 'tldbg:_KPSE_RECURSE called: list=texlibs, text=TeX specific libraries, cond=test "x$with_system_[]Kpse_pkg" != xyes && test "x$need_[]Kpse_pkg" = xyes, prefix=texk/.' >&5 MAKE_SUBDIRS= CONF_SUBDIRS= -if test -x $srcdir/texk/ptexenc/configure; then - test "x$with_system_ptexenc" != xyes && test "x$need_ptexenc" = xyes && MAKE_SUBDIRS="texk/ptexenc $MAKE_SUBDIRS" - CONF_SUBDIRS="texk/ptexenc $CONF_SUBDIRS" -fi if test -x $srcdir/texk/kpathsea/configure; then test "x$with_system_kpathsea" != xyes && test "x$need_kpathsea" = xyes && MAKE_SUBDIRS="texk/kpathsea $MAKE_SUBDIRS" CONF_SUBDIRS="texk/kpathsea $CONF_SUBDIRS" @@ -21688,397 +19895,102 @@ if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_PKG_CONFIG"; then - ac_ct_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_PKG_CONFIG"; then - ac_cv_prog_ac_ct_PKG_CONFIG="$ac_ct_PKG_CONFIG" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_PKG_CONFIG="pkg-config" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_PKG_CONFIG=$ac_cv_prog_ac_ct_PKG_CONFIG -if test -n "$ac_ct_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_PKG_CONFIG" >&5 -$as_echo "$ac_ct_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_PKG_CONFIG" = x; then - PKG_CONFIG="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_ct_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_prog_PKG_CONFIG" -fi -if $ICU_CONFIG --version >/dev/null 2>&1; then - ICU_INCLUDES=`$ICU_CONFIG --cppflags` - ICU_LIBS=`$ICU_CONFIG --ldflags-searchpath --ldflags-libsonly --ldflags-system` -elif $PKG_CONFIG --libs icu-uc icu-io >/dev/null 2>&1; then - ICU_INCLUDES=`$PKG_CONFIG --cflags icu-uc icu-io` - ICU_LIBS=`$PKG_CONFIG --libs icu-uc icu-io` -elif test "x$need_icu:$with_system_icu" = xyes:yes; then - as_fn_error $? "did not find either pkg-config or icu-config; one is required for system icu library support" "$LINENO" 5 -fi - -if $PKG_CONFIG harfbuzz; then - HARFBUZZ_INCLUDES=`$PKG_CONFIG harfbuzz --cflags` - HARFBUZZ_LIBS=`$PKG_CONFIG harfbuzz --libs` -elif test "x$need_harfbuzz:$with_system_harfbuzz" = xyes:yes; then - as_fn_error $? "did not find harfbuzz" "$LINENO" 5 -fi - - - - - - -## texk/kpathsea/ac/kpathsea.ac: configure.ac fragment for the TeX Live subdirectory texk/kpathsea/ -## basic check of system kpathsea -if test "x$need_kpathsea:$with_system_kpathsea" = xyes:yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`kpathsea' library" >&5 -$as_echo_n "checking requested system \`kpathsea' library... " >&6; } - CPPFLAGS="$KPATHSEA_INCLUDES $CPPFLAGS" - LIBS="$KPATHSEA_LIBS $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <kpathsea/kpathsea.h> -#include <kpathsea/version.h> -int -main () -{ -const char *version = kpathsea_version_string; -kpse_set_program_name("prog", "name"); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - syslib_used=yes kpse_res=ok -else - syslib_status=no kpse_res=failed -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_res" >&5 -$as_echo "$kpse_res" >&6; } -fi - -## texk/ptexenc/ac/ptexenc.ac: configure.ac fragment for the TeX Live subdirectory texk/ptexenc/ -## basic check of system ptexenc -if test "x$need_ptexenc:$with_system_ptexenc" = xyes:yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`ptexenc' library" >&5 -$as_echo_n "checking requested system \`ptexenc' library... " >&6; } - CPPFLAGS="$PTEXENC_INCLUDES $CPPFLAGS" - LIBS="$PTEXENC_LIBS $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ptexenc/ptexenc.h> -int -main () -{ -const char *version = ptexenc_version_string; -set_enc_string("prog", "name"); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - syslib_used=yes kpse_res=ok -else - syslib_status=no kpse_res=failed -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_res" >&5 -$as_echo "$kpse_res" >&6; } -fi - -## libs/zlib/ac/zlib.ac: configure.ac fragment for the TeX Live subdirectory libs/zlib/ -## basic check of system zlib -if test "x$need_zlib:$with_system_zlib" = xyes:yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`zlib' library" >&5 -$as_echo_n "checking requested system \`zlib' library... " >&6; } - CPPFLAGS="$ZLIB_INCLUDES $CPPFLAGS" - LIBS="$ZLIB_LIBS $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <zlib.h> -int -main () -{ -z_stream stream; -const char *version = zlibVersion(); -deflate(&stream, 0); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - syslib_used=yes kpse_res=ok -else - syslib_status=no kpse_res=failed -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_res" >&5 -$as_echo "$kpse_res" >&6; } -fi - -## libs/libpaper/ac/libpaper.ac: configure.ac fragment for the TeX Live subdirectory libs/libpaper/ -## basic check of system libpaper -if test "x$need_libpaper:$with_system_libpaper" = xyes:yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`libpaper' library" >&5 -$as_echo_n "checking requested system \`libpaper' library... " >&6; } - CPPFLAGS="$LIBPAPER_INCLUDES $CPPFLAGS" - LIBS="$LIBPAPER_LIBS $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <paper.h> -int -main () -{ -const char *v = defaultpapername(); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - syslib_used=yes kpse_res=ok -else - syslib_status=no kpse_res=failed -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_res" >&5 -$as_echo "$kpse_res" >&6; } -fi - -## libs/libpng/ac/libpng.ac: configure.ac fragment for the TeX Live subdirectory libs/libpng/ -## basic check of system libpng -if test "x$need_libpng:$with_system_libpng" = xyes:yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`libpng' library" >&5 -$as_echo_n "checking requested system \`libpng' library... " >&6; } - CPPFLAGS="$LIBPNG_INCLUDES $CPPFLAGS" - LIBS="$LIBPNG_LIBS $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <png.h> -int -main () -{ -png_structp png; png_voidp io; png_rw_ptr fn; -png_set_read_fn(png, io, fn); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - syslib_used=yes kpse_res=ok -else - syslib_status=no kpse_res=failed -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_res" >&5 -$as_echo "$kpse_res" >&6; } -fi - -## libs/freetype2/ac/freetype2.ac: configure.ac fragment for the TeX Live subdirectory libs/freetype2/ -## basic check of system freetype2 -if test "x$need_freetype2:$with_system_freetype2" = xyes:yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`freetype2' library" >&5 -$as_echo_n "checking requested system \`freetype2' library... " >&6; } - CPPFLAGS="$FREETYPE2_INCLUDES $CPPFLAGS" - LIBS="$FREETYPE2_LIBS $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ft2build.h> -#include FT_FREETYPE_H -int -main () -{ -FT_Library library; FT_Init_FreeType(&library); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - syslib_used=yes kpse_res=ok -else - syslib_status=no kpse_res=failed -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_res" >&5 -$as_echo "$kpse_res" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -## libs/gd/ac/gd.ac: configure.ac fragment for the TeX Live subdirectory libs/gd/ -## basic check of system gd -if test "x$need_gd:$with_system_gd" = xyes:yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`gd' library" >&5 -$as_echo_n "checking requested system \`gd' library... " >&6; } - CPPFLAGS="$GD_INCLUDES $CPPFLAGS" - LIBS="$GD_LIBS $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <gd.h> -int -main () -{ -gdImageCreate(1, 2); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - syslib_used=yes kpse_res=ok + +fi +if test -z "$ac_cv_prog_PKG_CONFIG"; then + ac_ct_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 else - syslib_status=no kpse_res=failed + if test -n "$ac_ct_PKG_CONFIG"; then + ac_cv_prog_ac_ct_PKG_CONFIG="$ac_ct_PKG_CONFIG" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_PKG_CONFIG="pkg-config" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_res" >&5 -$as_echo "$kpse_res" >&6; } fi - -## libs/pixman/ac/pixman.ac: configure.ac fragment for the TeX Live subdirectory libs/pixman/ -## basic check of system pixman -if test "x$need_pixman:$with_system_pixman" = xyes:yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`pixman' library" >&5 -$as_echo_n "checking requested system \`pixman' library... " >&6; } - CPPFLAGS="$PIXMAN_INCLUDES $CPPFLAGS" - LIBS="$PIXMAN_LIBS $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <pixman.h> -int -main () -{ -const char *s = pixman_version_string(); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - syslib_used=yes kpse_res=ok +ac_ct_PKG_CONFIG=$ac_cv_prog_ac_ct_PKG_CONFIG +if test -n "$ac_ct_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_PKG_CONFIG" >&5 +$as_echo "$ac_ct_PKG_CONFIG" >&6; } else - syslib_status=no kpse_res=failed -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_res" >&5 -$as_echo "$kpse_res" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -## libs/cairo/ac/cairo.ac: configure.ac fragment for the TeX Live subdirectory libs/cairo/ -## basic check of system cairo -if test "x$need_cairo:$with_system_cairo" = xyes:yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`cairo' library" >&5 -$as_echo_n "checking requested system \`cairo' library... " >&6; } - CPPFLAGS="$CAIRO_INCLUDES $CPPFLAGS" - LIBS="$CAIRO_LIBS $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <cairo.h> -int -main () -{ -const char *s = cairo_version_string(); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - syslib_used=yes kpse_res=ok + if test "x$ac_ct_PKG_CONFIG" = x; then + PKG_CONFIG="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_ct_PKG_CONFIG + fi else - syslib_status=no kpse_res=failed + PKG_CONFIG="$ac_cv_prog_PKG_CONFIG" fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_res" >&5 -$as_echo "$kpse_res" >&6; } +if $ICU_CONFIG --version >/dev/null 2>&1; then + ICU_INCLUDES=`$ICU_CONFIG --cppflags` + ICU_LIBS=`$ICU_CONFIG --ldflags-searchpath --ldflags-libsonly --ldflags-system` +elif $PKG_CONFIG --libs icu-uc icu-io >/dev/null 2>&1; then + ICU_INCLUDES=`$PKG_CONFIG --cflags icu-uc icu-io` + ICU_LIBS=`$PKG_CONFIG --libs icu-uc icu-io` +elif test "x$need_icu:$with_system_icu" = xyes:yes; then + as_fn_error $? "did not find either pkg-config or icu-config; one is required for system icu library support" "$LINENO" 5 fi -## libs/gmp/ac/gmp.ac: configure.ac fragment for the TeX Live subdirectory libs/gmp/ -## basic check of system gmp -if test "x$need_gmp:$with_system_gmp" = xyes:yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`gmp' library" >&5 -$as_echo_n "checking requested system \`gmp' library... " >&6; } - CPPFLAGS="$GMP_INCLUDES $CPPFLAGS" - LIBS="$GMP_LIBS $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <gmp.h> -int -main () -{ -const char *s = gmp_version; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - syslib_used=yes kpse_res=ok -else - syslib_status=no kpse_res=failed -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_res" >&5 -$as_echo "$kpse_res" >&6; } +if $PKG_CONFIG harfbuzz; then + HARFBUZZ_INCLUDES=`$PKG_CONFIG harfbuzz --cflags` + HARFBUZZ_LIBS=`$PKG_CONFIG harfbuzz --libs` +elif test "x$need_harfbuzz:$with_system_harfbuzz" = xyes:yes; then + as_fn_error $? "did not find harfbuzz" "$LINENO" 5 fi -## libs/mpfr/ac/mpfr.ac: configure.ac fragment for the TeX Live subdirectory libs/mpfr/ -## basic check of system mpfr -if test "x$need_mpfr:$with_system_mpfr" = xyes:yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`mpfr' library" >&5 -$as_echo_n "checking requested system \`mpfr' library... " >&6; } - CPPFLAGS="$MPFR_INCLUDES $CPPFLAGS" - LIBS="$MPFR_LIBS $LIBS" + + + + + +## texk/kpathsea/ac/kpathsea.ac: configure.ac fragment for the TeX Live subdirectory texk/kpathsea/ +## basic check of system kpathsea +if test "x$need_kpathsea:$with_system_kpathsea" = xyes:yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`kpathsea' library" >&5 +$as_echo_n "checking requested system \`kpathsea' library... " >&6; } + CPPFLAGS="$KPATHSEA_INCLUDES $CPPFLAGS" + LIBS="$KPATHSEA_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include <mpfr.h> +#include <kpathsea/kpathsea.h> +#include <kpathsea/version.h> int main () { -const char *s = mpfr_get_version(); +const char *version = kpathsea_version_string; +kpse_set_program_name("prog", "name"); ; return 0; } @@ -22094,30 +20006,27 @@ rm -f core conftest.err conftest.$ac_objext \ $as_echo "$kpse_res" >&6; } fi -## libs/poppler/ac/poppler.ac: configure.ac fragment for the TeX Live subdirectory libs/poppler/ -## basic check of system poppler -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test "x$need_poppler:$with_system_poppler" = xyes:yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`poppler' library" >&5 -$as_echo_n "checking requested system \`poppler' library... " >&6; } - CPPFLAGS="$POPPLER_INCLUDES $CPPFLAGS" - LIBS="$POPPLER_LIBS $LIBS" +## libs/zlib/ac/zlib.ac: configure.ac fragment for the TeX Live subdirectory libs/zlib/ +## basic check of system zlib +if test "x$need_zlib:$with_system_zlib" = xyes:yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`zlib' library" >&5 +$as_echo_n "checking requested system \`zlib' library... " >&6; } + CPPFLAGS="$ZLIB_INCLUDES $CPPFLAGS" + LIBS="$ZLIB_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include <GfxFont.h> +#include <zlib.h> int main () { -GfxFont *gfxFont; gfxFont->decRefCnt(); +z_stream stream; +const char *version = zlibVersion(); +deflate(&stream, 0); ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : syslib_used=yes kpse_res=ok else syslib_status=no kpse_res=failed @@ -22127,36 +20036,27 @@ rm -f core conftest.err conftest.$ac_objext \ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_res" >&5 $as_echo "$kpse_res" >&6; } fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -## libs/xpdf/ac/xpdf.ac: configure.ac fragment for the TeX Live subdirectory libs/xpdf/ -## basic check of system xpdf (poppler) -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test "x$need_xpdf:$with_system_xpdf" = xyes:yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`xpdf' library" >&5 -$as_echo_n "checking requested system \`xpdf' library... " >&6; } - CPPFLAGS="$XPDF_INCLUDES $CPPFLAGS" - LIBS="$XPDF_LIBS $LIBS" +## libs/libpng/ac/libpng.ac: configure.ac fragment for the TeX Live subdirectory libs/libpng/ +## basic check of system libpng +if test "x$need_libpng:$with_system_libpng" = xyes:yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`libpng' library" >&5 +$as_echo_n "checking requested system \`libpng' library... " >&6; } + CPPFLAGS="$LIBPNG_INCLUDES $CPPFLAGS" + LIBS="$LIBPNG_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include <GfxFont.h> +#include <png.h> int main () { -GfxFont *gfxFont; gfxFont->decRefCnt(); +png_structp png; png_voidp io; png_rw_ptr fn; +png_set_read_fn(png, io, fn); ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : syslib_used=yes kpse_res=ok else syslib_status=no kpse_res=failed @@ -22166,11 +20066,6 @@ rm -f core conftest.err conftest.$ac_objext \ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_res" >&5 $as_echo "$kpse_res" >&6; } fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu ## libs/zziplib/ac/zziplib.ac: configure.ac fragment for the TeX Live subdirectory libs/zziplib/ ## basic check of system zziplib @@ -22231,85 +20126,6 @@ rm -f core conftest.err conftest.$ac_objext \ $as_echo "$kpse_res" >&6; } fi -## libs/teckit/ac/teckit.ac: configure.ac fragment for the TeX Live subdirectory libs/teckit/ -## basic check of system teckit -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test "x$need_teckit:$with_system_teckit" = xyes:yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`teckit' library" >&5 -$as_echo_n "checking requested system \`teckit' library... " >&6; } - CPPFLAGS="$TECKIT_INCLUDES $CPPFLAGS" - LIBS="$TECKIT_LIBS $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <teckit/TECkit_Engine.h> -int -main () -{ -TECkit_Converter converter; TECkit_DisposeConverter(converter); - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - syslib_used=yes kpse_res=ok -else - syslib_status=no kpse_res=failed -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_res" >&5 -$as_echo "$kpse_res" >&6; } -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -## libs/icu/ac/icu.ac: configure.ac fragment for the TeX Live subdirectory libs/icu/ -## basic check of system icu -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test "x$need_icu:$with_system_icu" = xyes:yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking requested system \`icu' library" >&5 -$as_echo_n "checking requested system \`icu' library... " >&6; } - CPPFLAGS="$ICU_INCLUDES $CPPFLAGS" - LIBS="$ICU_LIBS $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <unicode/ustring.h> -int -main () -{ -UErrorCode code; const UChar *src; UChar *dst; -u_strToLower(dst, -1, src, -1, NULL, &code); - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - syslib_used=yes kpse_res=ok -else - syslib_status=no kpse_res=failed -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_res" >&5 -$as_echo "$kpse_res" >&6; } -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - ## libs/harfbuzz/ac/harfbuzz.ac: configure.ac fragment for the TeX Live subdirectory libs/harfbuzz/ ## basic check of system harfbuzz if test "x$need_harfbuzz:$with_system_harfbuzz" = xyes:yes; then diff --git a/source/doc/ChangeLog b/source/doc/ChangeLog index 422a681dc..c29c90130 100644 --- a/source/doc/ChangeLog +++ b/source/doc/ChangeLog @@ -1,3 +1,9 @@ +2020-03-13 Karl Berry <karl@tug.org> + + * tlbuild.texi: update for 2020. + + * build-tools.txt: bison 3.5.2. + 2019-12-22 Karl Berry <karl@freefriends.org> * build-tools.txt: bison 3.5. diff --git a/source/doc/Makefile.am b/source/doc/Makefile.am index d968fb66d..2107db3c7 100644 --- a/source/doc/Makefile.am +++ b/source/doc/Makefile.am @@ -1,6 +1,7 @@ +## $Id: Makefile.am 54277 2020-03-13 17:12:03Z karl $ ## Makefile.am for the TeX Live subdirectory ./doc/ ## -## Copyright 2015-2018 Karl Berry <tex-live@tug.org> +## Copyright 2015-2020 Karl Berry <tex-live@tug.org> ## Copyright 2013-2015 Peter Breitenlohner <tex-live@tug.org> ## You may freely use, modify and/or distribute this file. ## @@ -29,7 +30,7 @@ readme-install: readme-files 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 @@ 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: -# 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 diff --git a/source/doc/Makefile.in b/source/doc/Makefile.in index 7589bf258..97527ebef 100644 --- a/source/doc/Makefile.in +++ b/source/doc/Makefile.in @@ -420,6 +420,12 @@ remove_node_good = ref{tlmgr remove [\@emph{option}...] \@emph{pkg}..., # 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: @@ -873,14 +879,12 @@ readme-install: readme-files 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 diff --git a/source/doc/README.solaris b/source/doc/README.solaris index fe7aed845..6b13f3feb 100644 --- a/source/doc/README.solaris +++ b/source/doc/README.solaris @@ -135,13 +135,13 @@ The following patch/hack took care of this: --- Makefile.in.orig +++ Makefile.in -@@ -11,7 +11,7 @@ +@@ -12,7 +12,7 @@ GCPPLIB = @GCPPLIB@ GCLIBS = $(GCPPLIB) $(GCLIB) LFLAGS = @LDFLAGS@ --LIBS = $(LFLAGS) @PTHREAD_LIBS@ @LIBS@ $(GCLIBS) -+LIBS = $(LFLAGS) $(GCLIBS) -nodefaultlibs -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic @PTHREAD_LIBS@ @LIBS@ -lgcc_eh -lgcc -lc - DOSLIBS = $(subst -lncurses, -ltermcap, $(LIBS)) -s -static +-LIBS = $(LFLAGS) @PTHREAD_LIBS@ @GLEW@ @LIBS@ $(GCLIBS) ++LIBS = $(LFLAGS) $(GCLIBS) -nodefaultlibs -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic @PTHREAD_LIBS@ @GLEW@ @LIBS@ -lgcc_eh -lgcc -lc -lm + DOSLIBS = $(subst -lncurses, -ltermcap, $(LIBS)) -lgdi32 -lwinmm -s -static PERL = perl ------ diff --git a/source/doc/build-tools.txt b/source/doc/build-tools.txt index cb879ebb7..7ebef2614 100644 --- a/source/doc/build-tools.txt +++ b/source/doc/build-tools.txt @@ -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 diff --git a/source/doc/tlbuild-incl/install-tl.texi b/source/doc/tlbuild-incl/install-tl.texi index 8d7650c7a..6e0e4d009 100644 --- a/source/doc/tlbuild-incl/install-tl.texi +++ b/source/doc/tlbuild-incl/install-tl.texi @@ -30,10 +30,10 @@ install-tl-advanced.bat [@emph{option}]... @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 -@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 +@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 @@ highly recommended. @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 -@url{http://tug.org/texlive/doc}. +@url{https://tug.org/texlive/doc}. @node install-tl OPTIONS @appendixsec OPTIONS @@ -72,7 +72,7 @@ option by either a space or @code{=}. @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 @@ following modules are supported: The text mode user interface (default on Unix systems). Same as the @code{-no-gui} option. +@item @code{tcl} +@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. + +@item @code{expert} +@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 +@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 -@code{file:/} url, or a network location via a @code{http://}, @code{https://}, or -@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. - -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: - -@verbatim - -repository http://ctan.example.org/its/ctan/dir/systems/texlive/tlnet -@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 -@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 -@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: - -@verbatim - -repository /local/TL/repository -@end verbatim +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.) 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}, +@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 @@ actions. To install multiple custom binary sets, manually rename @code{custom} before doing each. For more information on custom binaries, see -@url{http://tug.org/texlive/custom-bin.html}. For general information on -building TeX Live, see @url{http://tug.org/texlive/build.html}. +@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 @@ runnable, or installation will fail. @code{-force-arch} is a synonym. @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 -@url{http://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 @code{perldoc} will not be used. +Display this help and exit. (This help is also on the web 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 +@code{perldoc} will not be used. @item @strong{-in-place} @anchor{install-tl @strong{-in-place}} @@ -239,9 +234,9 @@ installer interfaces. USE AT YOUR OWN RISK. @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 @@ release. For the text mode installer only: do not clear the screen when entering a new menu (for debugging purposes). -@item @strong{-non-admin} -@anchor{install-tl @strong{-non-admin}} - -For Windows only: configure for the current user, not for all users. +@item @strong{-no-persistent-downloads} +@anchor{install-tl @strong{-no-persistent-downloads}} @item @strong{-persistent-downloads} @anchor{install-tl @strong{-persistent-downloads}} -@item @strong{-no-persistent-downloads} -@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,7 +278,12 @@ By default, if a GnuPG @code{gpg} binary is found in PATH, downloads are 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., -@url{http://tug.org/texlive/doc/tlmgr.html#CRYPTOGRAPHIC-VERIFICATION} +@url{https://tug.org/texlive/doc/tlmgr.html#CRYPTOGRAPHIC-VERIFICATION} + +@item @strong{-non-admin} +@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 @@ Print the TeX Live identifier for the detected platform @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 @@ Include verbose debugging messages; repeat for maximum debugging: @code{-v @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,11 +342,17 @@ A @emph{profile} file contains all the values needed to perform an 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 @@ -441,7 +443,7 @@ Enable @code{\write18} for a restricted set of programs. @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 @@ Here is the current list: @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 @@ accepted and transformed to the names given above. When a profile is 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 +@item @code{TEXLIVE_DOWNLOADER} +@anchor{install-tl @code{TEXLIVE_DOWNLOADER}} + +@item @code{TL_DOWNLOAD_PROGRAM} +@anchor{install-tl @code{TL_DOWNLOAD_PROGRAM}} + +@item @code{TL_DOWNLOAD_ARGS} +@anchor{install-tl @code{TL_DOWNLOAD_ARGS}} + +These override the normal choice of a download program; see the @code{tlmgr} +documentation, e.g., +@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 @@ variables. Omit creating the ConTeXt cache. This is useful for redistributors. +@item @code{TEXLIVE_INSTALL_NO_IMPORT} +@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 @@ Don't try to run the @code{--help} message through @code{perldoc}. @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 $ diff --git a/source/doc/tlbuild-incl/tlmgr.texi b/source/doc/tlbuild-incl/tlmgr.texi index e4e704a16..690b33848 100644 --- a/source/doc/tlbuild-incl/tlmgr.texi +++ b/source/doc/tlbuild-incl/tlmgr.texi @@ -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 @@ tlmgr [@emph{option}...] @emph{action} [@emph{option}...] [@emph{operand}...] @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 -@url{http://tug.org/texlive/tlmgr.html}, along with procedures for updating +@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 @@ files. Schemes typically contain a mix of collections and packages, but 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,9 +66,13 @@ with @code{tlmgr}: 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 +@url{https://ctan.org/mirrors/mirmon}. @item @code{tlmgr update --list} @anchor{tlmgr @code{tlmgr update --list}} @@ -105,34 +110,123 @@ between an option name and its value. @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 -@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}). -@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: + +@verbatim + -repository http://ctan.example.org/its/ctan/dir/systems/texlive/tlnet +@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 +@url{https://ctan.org/mirrors/mirmon}. + +Here's an example of using a local directory: + +@verbatim + -repository /local/TL/repository +@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: + +@table @asis +@item @code{/some/local/dir} +@anchor{tlmgr @code{/some/local/dir}} + +@item @code{file:/some/local/dir} +@anchor{tlmgr @code{file:/some/local/dir}} + +Equivalent ways of specifying a local directory. + +@item @code{ctan} +@anchor{tlmgr @code{ctan}} + +@item @code{http://mirror.ctan.org/systems/texlive/tlnet} +@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 +@code{ctan} is merely an alias for the full url. (See @url{https://ctan.org} for +more about CTAN and its mirrors.) + +@item @code{http://server/path/to/tlnet} +@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 +@code{tlmgr} documentation +(@url{https://tug.org/texlive/doc/tlmgr.html#ENVIRONMENT-VARIABLES}). + +@item @code{https://server/path/to/tlnet} +@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. + +@item @code{ftp://server/path/to/tlnet} +@anchor{tlmgr @code{ftp://server/path/to/tlnet}} + +If the (default) LWP method is used, persistent connections are +supported. + +@item @code{user@@machine:/path/to/tlnet} +@anchor{tlmgr @code{user@@machine:/path/to/tlnet}} + +@item @code{scp://user@@machine/path/to/tlnet} +@anchor{tlmgr @code{scp://user@@machine/path/to/tlnet}} + +@item @code{ssh://user@@machine/path/to/tlnet} +@anchor{tlmgr @code{ssh://user@@machine/path/to/tlnet}} + +These forms are equivalent; they all use @code{scp} to transfer files. Using +@code{ssh-agent} is recommended. (Info: +@url{https://en.wikipedia.org/wiki/OpenSSH}, +@url{https://en.wikipedia.org/wiki/Ssh-agent}.) + +@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}]} -@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. + +@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 +@code{tlcockpit} easier to work with. @item @strong{--gui-lang} @emph{llcode} @anchor{tlmgr @strong{--gui-lang} @emph{llcode}} @@ -140,12 +234,15 @@ GUI will be started at the main screen. 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)}, +@w{Czech (cs)}, @w{German (de)}, @w{French (fr)}, @w{Italian (it)}, +@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 @@ revision number for the loaded TeX Live Perl modules are shown, too. * 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 @@ revision number for the loaded TeX Live Perl modules are shown, too. @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 @code{-v} has been given the revisions of the used modules are reported, too. 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 +@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 @@ performed are written to the terminal. Shows the available candidate repositories for package @emph{pkg}. See @ref{tlmgr MULTIPLE REPOSITORIES,, MULTIPLE REPOSITORIES} below. -@node tlmgr check [@emph{option}...] [files|depends|executes|runfiles|all] -@appendixsubsec check [@emph{option}...] [files|depends|executes|runfiles|all] +@node tlmgr check [@emph{option}...] [depends|executes|files|runfiles|texmfdbs|all] +@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 -@item @strong{files} -@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,11 +476,39 @@ instead since former versions for @code{tlmgr} called it that way. Check that the files referred to by @code{execute} directives in the TeX Live Database are present. +@item @strong{files} +@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. + +@item @strong{texmfdbs} +@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: + +@table @asis +@item - all items in @code{TEXMFDBS} have the @code{!!} prefix. +@anchor{tlmgr - all items in @code{TEXMFDBS} have the @code{!!} prefix.} + +@item - all items in @code{TEXMFBDS} have an @code{ls-R} file (if they exist at all). +@anchor{tlmgr - all items in @code{TEXMFBDS} have an @code{ls-R} file (if they exist at all).} + +@item - all items in @code{TEXMF} with @code{!!} are listed in @code{TEXMFDBS}. +@anchor{tlmgr - all items in @code{TEXMF} with @code{!!} are listed in @code{TEXMFDBS}.} + +@item - all items in @code{TEXMF} with an @code{ls-R} file are listed in @code{TEXMFDBS}. +@anchor{tlmgr - all items in @code{TEXMF} with an @code{ls-R} file are listed in @code{TEXMFDBS}.} + +@end table @end table @@ -396,7 +519,7 @@ Options: @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 @@ checking the TL development repository. @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}]]]}} -@item @strong{conf auxtrees [--conffile @emph{file}] [show|add|delete] [@emph{value}]} -@anchor{tlmgr @strong{conf auxtrees [--conffile @emph{file}] [show|add|delete] [@emph{value}]}} +@item @strong{conf auxtrees [--conffile @emph{file}] [show|add|remove] [@emph{value}]} +@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 @@ additional texmf trees, completely under user control. @code{auxtrees show} 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 @@ manipulating the Kpathsea variable @code{TEXMFAUXTREES}, in @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 @@ The TeX Live installer and @code{tlmgr} routinely call @code{generate} for 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 @@ dependencies in a similar way. If this option is given, the installation source will not be used; only locally installed packages, collections, or schemes are listed. +@item @strong{--only-remote} +@anchor{tlmgr @strong{--only-remote}} + +Only list packages from the remote repository. Useful when checking what +is available in a remote repository using +@code{tlmgr --repo ... --only-remote info}. Note that +@code{--only-installed} and @code{--only-remote} cannot both be specified. + @item @strong{--data @code{item1,item2,...}} @anchor{tlmgr @strong{--data @code{item1@comma{}item2@comma{}...}}} @@ -731,8 +863,8 @@ with @code{--usertree}. See @ref{tlmgr USER MODE,, USER MODE} below. @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 @@ after all. You can get them by using these options in conjunction with @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 @@ With the @code{list} argument, @code{key} lists all keys. 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 @@ Synonym for @ref{tlmgr info,, info}. @item @strong{option [--json] [show]} @anchor{tlmgr @strong{option [--json] [show]}} -@item @strong{option [--json] showall} -@anchor{tlmgr @strong{option [--json] showall}} +@item @strong{option [--json] showall|help} +@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 @@ saved in the TLPDB with a short description and the @code{key} used for 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 @@ the definitive list): @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 @@ be used as a synonym for @code{repository}.) 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 @@ testing installations, etc. When disabled, the respective files are not 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 +@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 @@ instead of only the current user. All three options are on by default. @item @strong{paper [a4|letter]} @anchor{tlmgr @strong{paper [a4|letter]}} -@item @strong{@w{[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [@emph{papersize}|--list]}} -@anchor{tlmgr @strong{@w{[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [@emph{papersize}|--list]}}} +@item @strong{<[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [@emph{papersize}|--list]}> +@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 @@ settings. @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 @@ platform instead of auto detection. @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 @@ written to the terminal. @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 @@ written to the terminal. @item @strong{repository list} @anchor{tlmgr @strong{repository list}} -@item @strong{repository list @emph{path|tag}} -@anchor{tlmgr @strong{repository list @emph{path|tag}}} +@item @strong{repository list @emph{path|url|tag}} +@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,21 +1386,46 @@ written to the terminal. @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}] ...]}} +@item @strong{repository status} +@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 -@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 +@code{--with-platforms} is specified in addition, for each package the +available platforms (if any) are also listed. + +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: + +@table @asis +@item The tag (which can be the same as the url); +@anchor{tlmgr The tag (which can be the same as the url);} + += the url; -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 += 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. + +@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 @@ must be specified. Options: @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 +@code{tlmgr} itself are present, this gives an error, unless also the option +@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 @@ Analogously, if a package has been added to a collection on the server 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 @@ auto-installation of packages just mentioned) are those that have been 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, +@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 @@ the key @code{update-exclude}. @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 +@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 @@ is equivalent to 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 @@ installation with the server's idea of what is available: @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 @@ fallback information, but if you don't like them accumulating (e.g., @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 -@code{TEXMFSYSCONFIG/tlmgr/config}, and the other is user-specific in +@code{tlmgr} reads two configuration files: one is system-wide, in +@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 @@ disables this process. 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 @@ above) to succeed, and a working GnuPG (@code{gpg}) program (see below for 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 @@ only one enabled (as is the case by default): @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,64 +2152,69 @@ Check the repository list again: @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 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 -@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. - -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. +@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. + +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 @@ on Windows). @anchor{tlmgr @code{Help menu}} Provides access to the TeX Live manual (also on the web at -@url{http://tug.org/texlive/doc.html}) and the usual ``About'' box. +@url{https://tug.org/texlive/doc.html}) and the usual ``About'' box. @end table @@ -2279,7 +2468,7 @@ Pass the arbitrary X resource string @emph{xresource}. @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 a value is not saved in the database the string @code{(not set)} is shown. 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. +@node tlmgr ENVIRONMENT VARIABLES +@appendixsec ENVIRONMENT VARIABLES + +@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. + +@table @asis +@item @code{TEXLIVE_COMPRESSOR} +@anchor{tlmgr @code{TEXLIVE_COMPRESSOR}} + +This variable allows selecting a different compressor program for +backups and intermediate rollback containers. The order of selection is: + +@enumerate +@item If the environment variable @code{TEXLIVE_COMPRESSOR} is +defined, use it; abort if it doesn't work. Possible values: +@code{lz4}, @code{gzip}, @code{xz}. The necessary options are added internally. + +@item If lz4 is available (either from the system or TL) and working, use that. + +@item If gzip is available (from the system) and working, use that. + +@item If xz is available (either from the system or TL) and working, use that. + +@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. + +@item @code{TEXLIVE_DOWNLOADER} +@anchor{tlmgr @code{TEXLIVE_DOWNLOADER}} + +@item @code{TL_DOWNLOAD_PROGRAM} +@anchor{tlmgr @code{TL_DOWNLOAD_PROGRAM}} + +@item @code{TL_DOWNLOAD_ARGS} +@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: + +@enumerate +@item If the environment variable @code{TEXLIVE_DOWNLOADER} is defined, use it; +abort if the specified program doesn't work. Possible values: @code{lwp}, +@code{curl}, @code{wget}. The necessary options are added internally. + +@item If the environment variable @code{TL_DOWNLOAD_PROGRAM} is +defined (can be any value), use it together with +@code{TL_DOWNLOAD_ARGS}; abort if it doesn't work. + +@item If LWP is available and working, use that (by far the most +efficient method, as it supports persistent downloads). + +@item If curl is available (from the system) and working, use that. + +@item If wget is available (either from the system or TL) and working, use that. + +@end enumerate + +TL provides @code{wget} binaries for platforms where necessary, so some +download method should always be available. + +@item @code{TEXLIVE_PREFER_OWN} +@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. + +@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 $ diff --git a/source/doc/tlbuild.info b/source/doc/tlbuild.info index 5777e26c5..6c34b8095 100644 --- a/source/doc/tlbuild.info +++ b/source/doc/tlbuild.info @@ -1,9 +1,9 @@ -This is tlbuild.info, produced by makeinfo version 5.1 from +This is tlbuild.info, produced by makeinfo version 6.7 from tlbuild.texi. This file documents the TeX Live build system and more. -Copyright (C) 2016-2019 Karl Berry. +Copyright (C) 2016-2020 Karl Berry. Copyright (C) 2013-2015 Karl Berry & Peter Breitenlohner. Permission is granted to make and distribute verbatim copies of this @@ -33,7 +33,7 @@ END-INFO-DIR-ENTRY File: tlbuild.info, Node: Top, Next: Introduction, Up: (dir) -Building TeX Live (2019) +Building TeX Live (2020) ************************ For an overview of this manual, *note Introduction::. @@ -59,8 +59,7 @@ File: tlbuild.info, Node: Introduction, Next: Overview of build system, Prev: 1 Introduction ************** -This manual (dated February 2019) corresponds to the TeX Live 2019 -release. +This manual (dated March 2020) corresponds to the TeX Live 2020 release. This manual is aimed at system installers and programmers, and focuses on how to configure, build, and develop the TeX Live (TL) @@ -322,8 +321,8 @@ File: tlbuild.info, Node: Build one package, Next: Build one engine, Prev: Bu ===================== To build one package, the basic idea is to use the 'configure' option -'--disable-all-pkgs' (*note '--disable-all-pkgs'::). Then all program -and library modules are configured but none are made. However, the +'--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, first building any required libraries. @@ -747,7 +746,7 @@ many extra hassles, so don't do that, tempting as it may be. 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 @@ -1038,13 +1037,13 @@ structure and variation. * Menu: -* 'png' library:: 'libs/libpng' -* 'zlib' library:: 'libs/zlib' -* 'freetype' library:: 'libs/freetype2' -* 'kpathsea' library:: 'texk/kpathsea' +* png library:: 'libs/libpng' +* zlib library:: 'libs/zlib' +* freetype library:: 'libs/freetype2' +* kpathsea library:: 'texk/kpathsea' -File: tlbuild.info, Node: 'png' library, Next: 'zlib' library, Up: Library modules +File: tlbuild.info, Node: png library, Next: zlib library, Up: Library modules 6.4.1 The 'png' library in 'libs/libpng' ---------------------------------------- @@ -1100,7 +1099,7 @@ the 'make' rules to rebuild the library. flags required for the system library. -File: tlbuild.info, Node: 'zlib' library, Next: 'freetype' library, Prev: 'png' library, Up: Library modules +File: tlbuild.info, Node: zlib library, Next: freetype library, Prev: png library, Up: Library modules 6.4.2 The 'zlib' library in 'libs/zlib' --------------------------------------- @@ -1112,7 +1111,7 @@ supplies the configure option '--with-system-zlib', as well as locations of the 'zlib' headers and/or library. -File: tlbuild.info, Node: 'freetype' library, Next: 'kpathsea' library, Prev: 'zlib' library, Up: Library modules +File: tlbuild.info, Node: freetype library, Next: kpathsea library, Prev: zlib library, Up: Library modules 6.4.3 The 'freetype' library in 'libs/freetype2' ------------------------------------------------ @@ -1128,7 +1127,7 @@ system provided by upstream (possibly patched). 'freetype-config'. -File: tlbuild.info, Node: 'kpathsea' library, Prev: 'freetype' library, Up: Library modules +File: tlbuild.info, Node: kpathsea library, Prev: freetype library, Up: Library modules 6.4.4 The 'kpathsea' library in 'texk/kpathsea' ----------------------------------------------- @@ -1166,13 +1165,13 @@ for a few of the programs in TL. * Menu: -* 't1utils' package:: 'utils/t1utils' -* 'xindy' package:: 'utils/xindy' -* 'xdvik' package:: 'texk/xdvik' -* 'asymptote':: 'utils/asymptote' +* t1utils package:: 'utils/t1utils' +* xindy package:: 'utils/xindy' +* xdvik package:: 'texk/xdvik' +* asymptote:: 'utils/asymptote' -File: tlbuild.info, Node: 't1utils' package, Next: 'xindy' package, Up: Program modules +File: tlbuild.info, Node: t1utils package, Next: xindy package, Up: Program modules 6.5.1 The 't1utils' package in 'utils/t1utils' ---------------------------------------------- @@ -1188,7 +1187,7 @@ specifying the module name without any dependencies, and supplies the configure option '--disable-t1utils'. -File: tlbuild.info, Node: 'xindy' package, Next: 'xdvik' package, Prev: 't1utils' package, Up: Program modules +File: tlbuild.info, Node: xindy package, Next: xdvik package, Prev: t1utils package, Up: Program modules 6.5.2 The 'xindy' package in 'utils/xindy' ------------------------------------------ @@ -1214,7 +1213,7 @@ built if explicitly enabled by the user with 'configure --enable-xindy' included by 'configure.ac'. -File: tlbuild.info, Node: 'xdvik' package, Next: 'asymptote', Prev: 'xindy' package, Up: Program modules +File: tlbuild.info, Node: xdvik package, Next: asymptote, Prev: xindy package, Up: Program modules 6.5.3 The 'xdvik' package in 'texk/xdvik' ----------------------------------------- @@ -1239,7 +1238,7 @@ system whereas the auxiliary program 'squeeze/squeeze' has to run on the also seen at the top level. -File: tlbuild.info, Node: 'asymptote', Prev: 'xdvik' package, Up: Program modules +File: tlbuild.info, Node: asymptote, Prev: xdvik package, Up: Program modules 6.5.4 The subdirectory 'utils/asymptote' ---------------------------------------- @@ -1456,21 +1455,21 @@ Here are the global configure options. * Menu: -* '--disable-native-texlive-build':: -* '--prefix' '--bindir' ...:: -* '--disable-largefile':: -* '--disable-missing':: -* '--enable-compiler-warnings='LEVEL:: -* '--enable-cxx-runtime-hack':: -* '--enable-maintainer-mode':: -* '--enable-multiplatform':: -* '--enable-shared':: -* '--enable-silent-rules':: -* '--without-ln-s':: -* '--without-x':: +* --disable-native-texlive-build:: +* --prefix --bindir ...:: +* --disable-largefile:: +* --disable-missing:: +* --enable-compiler-warnings=LEVEL:: +* --enable-cxx-runtime-hack:: +* --enable-maintainer-mode:: +* --enable-multiplatform:: +* --enable-shared:: +* --enable-silent-rules:: +* --without-ln-s:: +* --without-x:: -File: tlbuild.info, Node: '--disable-native-texlive-build', Next: '--prefix' '--bindir' ..., Up: Global configure options +File: tlbuild.info, Node: --disable-native-texlive-build, Next: --prefix --bindir ..., Up: Global configure options 7.1.1 '--disable-native-texlive-build' -------------------------------------- @@ -1491,7 +1490,7 @@ also be built independently from the TL tree (such as 'utils/xindy' and TL-specific adaptations, such as installation paths. -File: tlbuild.info, Node: '--prefix' '--bindir' ..., Next: '--disable-largefile', Prev: '--disable-native-texlive-build', Up: Global configure options +File: tlbuild.info, Node: --prefix --bindir ..., Next: --disable-largefile, Prev: --disable-native-texlive-build, Up: Global configure options 7.1.2 '--prefix', '--bindir', ... --------------------------------- @@ -1504,7 +1503,7 @@ set, on the 'make' command line (*note Installation in a temporary location: (automake)Staged Installs.). -File: tlbuild.info, Node: '--disable-largefile', Next: '--disable-missing', Prev: '--prefix' '--bindir' ..., Up: Global configure options +File: tlbuild.info, Node: --disable-largefile, Next: --disable-missing, Prev: --prefix --bindir ..., Up: Global configure options 7.1.3 '--disable-largefile' --------------------------- @@ -1520,7 +1519,7 @@ included by 'pdftex' or 'luatex' must, however, be <2GB when using 'poppler' version 0.22 or before (even on 64-bit systems with LFS). -File: tlbuild.info, Node: '--disable-missing', Next: '--enable-compiler-warnings='LEVEL, Prev: '--disable-largefile', Up: Global configure options +File: tlbuild.info, Node: --disable-missing, Next: --enable-compiler-warnings=LEVEL, Prev: --disable-largefile, Up: Global configure options 7.1.4 '--disable-missing' ------------------------- @@ -1530,7 +1529,7 @@ feature must be disabled, e.g., due to missing libraries. This can help when figuring out a specific (sub)set of modules to enable. -File: tlbuild.info, Node: '--enable-compiler-warnings='LEVEL, Next: '--enable-cxx-runtime-hack', Prev: '--disable-missing', Up: Global configure options +File: tlbuild.info, Node: --enable-compiler-warnings=LEVEL, Next: --enable-cxx-runtime-hack, Prev: --disable-missing, Up: Global configure options 7.1.5 '--enable-compiler-warnings='LEVEL ---------------------------------------- @@ -1543,7 +1542,7 @@ variables are not consistently used in all library and program modules. At present, these warning flags assume options from the GNU compilers. -File: tlbuild.info, Node: '--enable-cxx-runtime-hack', Next: '--enable-maintainer-mode', Prev: '--enable-compiler-warnings='LEVEL, Up: Global configure options +File: tlbuild.info, Node: --enable-cxx-runtime-hack, Next: --enable-maintainer-mode, Prev: --enable-compiler-warnings=LEVEL, Up: Global configure options 7.1.6 '--enable-cxx-runtime-hack' --------------------------------- @@ -1553,7 +1552,7 @@ statically link with 'libstdc++', thus improving portability of the resulting binary. *Note Macros for compilers::. -File: tlbuild.info, Node: '--enable-maintainer-mode', Next: '--enable-multiplatform', Prev: '--enable-cxx-runtime-hack', Up: Global configure options +File: tlbuild.info, Node: --enable-maintainer-mode, Next: --enable-multiplatform, Prev: --enable-cxx-runtime-hack, Up: Global configure options 7.1.7 '--enable-maintainer-mode' -------------------------------- @@ -1565,7 +1564,7 @@ rebuilds infrastructure files as needed. *Note 'missing' and 'AM_MAINTAINER_MODE': (automake)maintainer-mode. -File: tlbuild.info, Node: '--enable-multiplatform', Next: '--enable-shared', Prev: '--enable-maintainer-mode', Up: Global configure options +File: tlbuild.info, Node: --enable-multiplatform, Next: --enable-shared, Prev: --enable-maintainer-mode, Up: Global configure options 7.1.8 '--enable-multiplatform' ------------------------------ @@ -1578,7 +1577,7 @@ the values for 'bindir' and 'libdir' are automatically propagated to all subdirectories. -File: tlbuild.info, Node: '--enable-shared', Next: '--enable-silent-rules', Prev: '--enable-multiplatform', Up: Global configure options +File: tlbuild.info, Node: --enable-shared, Next: --enable-silent-rules, Prev: --enable-multiplatform, Up: Global configure options 7.1.9 '--enable-shared' ----------------------- @@ -1588,7 +1587,7 @@ Build shared versions of the TeX-specific libraries such as '--disable-native-texlive-build' must also be specified). -File: tlbuild.info, Node: '--enable-silent-rules', Next: '--without-ln-s', Prev: '--enable-shared', Up: Global configure options +File: tlbuild.info, Node: --enable-silent-rules, Next: --without-ln-s, Prev: --enable-shared, Up: Global configure options 7.1.10 '--enable-silent-rules' ------------------------------ @@ -1599,7 +1598,7 @@ can specify 'V=1' on the 'make' command line to get more verbosity, or 'V=0' to get less, regardless of this option. -File: tlbuild.info, Node: '--without-ln-s', Next: '--without-x', Prev: '--enable-silent-rules', Up: Global configure options +File: tlbuild.info, Node: --without-ln-s, Next: --without-x, Prev: --enable-silent-rules, Up: Global configure options 7.1.11 '--without-ln-s' ----------------------- @@ -1609,7 +1608,7 @@ for a Unix-like system. However, 'make install' will not create anything useful, and might fail. -File: tlbuild.info, Node: '--without-x', Prev: '--without-ln-s', Up: Global configure options +File: tlbuild.info, Node: --without-x, Prev: --without-ln-s, Up: Global configure options 7.1.12 '--without-x' -------------------- @@ -1626,18 +1625,18 @@ Here are (some of) the program-specific 'configure' options. * Menu: -* '--enable-PROG' '--disable-PROG':: -* '--disable-all-pkgs':: -* Configure options for 'texk/web2c':: -* Configure options for 'texk/bibtex-x':: -* Configure options for 'texk/dvipdfm-x':: -* Configure options for 'texk/dvisvgm':: -* Configure options for 'texk/texlive':: -* Configure options for 'texk/xdvik':: -* Configure options for 'utils/xindy':: +* --enable-PROG --disable-PROG:: +* --disable-all-pkgs:: +* Configure options for texk/web2c:: +* Configure options for texk/bibtex-x:: +* Configure options for texk/dvipdfm-x:: +* Configure options for texk/dvisvgm:: +* Configure options for texk/texlive:: +* Configure options for texk/xdvik:: +* Configure options for utils/xindy:: -File: tlbuild.info, Node: '--enable-PROG' '--disable-PROG', Next: '--disable-all-pkgs', Up: Program-specific configure options +File: tlbuild.info, Node: --enable-PROG --disable-PROG, Next: --disable-all-pkgs, Up: Program-specific configure options 7.2.1 '--enable-PROG', '--disable-PROG' --------------------------------------- @@ -1645,7 +1644,7 @@ File: tlbuild.info, Node: '--enable-PROG' '--disable-PROG', Next: '--disable-a Do or do not build and install the program(s) of module 'PROG'. -File: tlbuild.info, Node: '--disable-all-pkgs', Next: Configure options for 'texk/web2c', Prev: '--enable-PROG' '--disable-PROG', Up: Program-specific configure options +File: tlbuild.info, Node: --disable-all-pkgs, Next: Configure options for texk/web2c, Prev: --enable-PROG --disable-PROG, Up: Program-specific configure options 7.2.2 '--disable-all-pkgs' -------------------------- @@ -1662,7 +1661,7 @@ explicitly disabled or specify 'disable' in their 'ac/withenable.ac' fragment. -File: tlbuild.info, Node: Configure options for 'texk/web2c', Next: Configure options for 'texk/bibtex-x', Prev: '--disable-all-pkgs', Up: Program-specific configure options +File: tlbuild.info, Node: Configure options for texk/web2c, Next: Configure options for texk/bibtex-x, Prev: --disable-all-pkgs, Up: Program-specific configure options 7.2.3 Configure options for 'texk/web2c' ---------------------------------------- @@ -1729,7 +1728,7 @@ native TeX Live build. Defaults are defined in Do not build the 'SyncTeX' library and tool. -File: tlbuild.info, Node: Configure options for 'texk/bibtex-x', Next: Configure options for 'texk/dvipdfm-x', Prev: Configure options for 'texk/web2c', Up: Program-specific configure options +File: tlbuild.info, Node: Configure options for texk/bibtex-x, Next: Configure options for texk/dvipdfm-x, Prev: Configure options for texk/web2c, Up: Program-specific configure options 7.2.4 Configure options for 'texk/bibtex-x' ------------------------------------------- @@ -1745,7 +1744,7 @@ Do not build the 'bibtexu' program (building 'bibtexu' requires 'ICU' libraries). -File: tlbuild.info, Node: Configure options for 'texk/dvipdfm-x', Next: Configure options for 'texk/dvisvgm', Prev: Configure options for 'texk/bibtex-x', Up: Program-specific configure options +File: tlbuild.info, Node: Configure options for texk/dvipdfm-x, Next: Configure options for texk/dvisvgm, Prev: Configure options for texk/bibtex-x, Up: Program-specific configure options 7.2.5 Configure options for 'texk/dvipdfm-x' -------------------------------------------- @@ -1763,7 +1762,7 @@ Do not build the 'dvipdfmx' program or make the 'dvipdfm' symlink. Do not build the 'xdvipdfmx' program. -File: tlbuild.info, Node: Configure options for 'texk/dvisvgm', Next: Configure options for 'texk/texlive', Prev: Configure options for 'texk/dvipdfm-x', Up: Program-specific configure options +File: tlbuild.info, Node: Configure options for texk/dvisvgm, Next: Configure options for texk/texlive, Prev: Configure options for texk/dvipdfm-x, Up: Program-specific configure options 7.2.6 Configure options for 'texk/dvisvgm' ------------------------------------------ @@ -1783,7 +1782,7 @@ result can crash due to library incompatibilities, e.g., on CentOS 5. Specify non-standard locations of the Ghostscript headers and library. -File: tlbuild.info, Node: Configure options for 'texk/texlive', Next: Configure options for 'texk/xdvik', Prev: Configure options for 'texk/dvisvgm', Up: Program-specific configure options +File: tlbuild.info, Node: Configure options for texk/texlive, Next: Configure options for texk/xdvik, Prev: Configure options for texk/dvisvgm, Up: Program-specific configure options 7.2.7 Configure options for 'texk/texlive' ------------------------------------------ @@ -1793,7 +1792,7 @@ Do not install the "linked scripts" (*note Linked scripts::), except for the TL scripts required to run 'texlinks'. -File: tlbuild.info, Node: Configure options for 'texk/xdvik', Next: Configure options for 'utils/xindy', Prev: Configure options for 'texk/texlive', Up: Program-specific configure options +File: tlbuild.info, Node: Configure options for texk/xdvik, Next: Configure options for utils/xindy, Prev: Configure options for texk/texlive, Up: Program-specific configure options 7.2.8 Configure options for 'texk/xdvik' ---------------------------------------- @@ -1810,7 +1809,7 @@ Use XInput 2.1 "smooth scrolling" if available (default: yes, except for a native TL build). -File: tlbuild.info, Node: Configure options for 'utils/xindy', Prev: Configure options for 'texk/xdvik', Up: Program-specific configure options +File: tlbuild.info, Node: Configure options for utils/xindy, Prev: Configure options for texk/xdvik, Up: Program-specific configure options 7.2.9 Configure options for 'utils/xindy' ----------------------------------------- @@ -1856,11 +1855,11 @@ required system libraries and bails out if tests fail. * Menu: -* Configure options for 'kpathsea':: -* Configure options for system 'poppler':: +* Configure options for kpathsea:: +* Configure options for system poppler:: -File: tlbuild.info, Node: Configure options for 'kpathsea', Next: Configure options for system 'poppler', Up: Library-specific configure options +File: tlbuild.info, Node: Configure options for kpathsea, Next: Configure options for system poppler, Up: Library-specific configure options 7.3.1 Configure options for 'kpathsea' -------------------------------------- @@ -1884,10 +1883,10 @@ is one of: (TFM file) to generate the specified type of file dynamically. The default can be -overridden by the user in any case (*note 'kpathsea' library::). +overridden by the user in any case (*note kpathsea library::). -File: tlbuild.info, Node: Configure options for system 'poppler', Prev: Configure options for 'kpathsea', Up: Library-specific configure options +File: tlbuild.info, Node: Configure options for system poppler, Prev: Configure options for kpathsea, Up: Library-specific configure options 7.3.2 Configure options for system 'poppler' -------------------------------------------- @@ -1902,8 +1901,7 @@ LuaJITTeX) and XeTeX, and use 'pkg-config' to obtain the required flags. '--with-system-xpdf' 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'::. +pdfTeX instead of 'xpdf' from the TL tree. *Note --disable-largefile::. File: tlbuild.info, Node: Variables for configure, Prev: Library-specific configure options, Up: Configure options @@ -2226,9 +2224,9 @@ A.3 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 -<http://tug.org/texlive/acquire.html>. +The installer works on all platforms supported by TeX Live. For +information on initially downloading TeX Live, see +<https://tug.org/texlive/acquire.html>. The basic idea of TeX Live installation is for you to choose one of the top-level _schemes_, each of which is defined as a different set of @@ -2249,15 +2247,15 @@ File: tlbuild.info, Node: install-tl REFERENCES, Next: install-tl OPTIONS, Pr A.4 REFERENCES ============== -Post-installation configuration, package updates, and much more, are -handled through *tlmgr*(1), the TeX Live Manager -(<http://tug.org/texlive/tlmgr.html>). +Post-installation configuration, package updates, and more, are handled +through *tlmgr*(1), the TeX Live Manager +(<https://tug.org/texlive/tlmgr.html>). The most up-to-date version of this installer documentation is on the -Internet at <http://tug.org/texlive/doc/install-tl.html>. +Internet at <https://tug.org/texlive/doc/install-tl.html>. For the full documentation of TeX Live, see -<http://tug.org/texlive/doc>. +<https://tug.org/texlive/doc>. File: tlbuild.info, Node: install-tl OPTIONS, Next: install-tl PROFILES, Prev: install-tl REFERENCES, Up: install-tl @@ -2271,7 +2269,7 @@ by either a space or '='. *-gui* [[=]_module_] - If no _module_ is given, starts the 'perltk' (see below) GUI + If no _module_ is given, starts the Tcl/Tk (see below) GUI installer. If _module_ is given loads the given installer module. Currently @@ -2282,32 +2280,49 @@ by either a space or '='. The text mode user interface (default on Unix systems). Same as the '-no-gui' option. + '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 'Advanced' takes you to a screen with roughly the same + options as the 'perltk' interface. + '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. + + 'expert' + + A generic name for, currently, 'perltk'; it may select a + different GUI in the future. 'perltk' The expert GUI installer, providing access to more options. - Can also be invoked on Windows by running - 'install-tl-advanced.bat'. - The 'perltk' and 'wizard' modules, and thus also when calling with - bare '-gui' (with no _module_), require the Perl/Tk module - (<http://tug.org/texlive/distro.html#perltk>); if Perl/Tk is not - available, installation continues in text mode. + The 'perltk' and 'wizard' modules require the Perl/Tk module + (<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 'text' are diverted to the default + 'tcl' GUI. + + The '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. *-no-gui* - Use the text mode installer (default except on Windows). + Use the text mode installer (default except on Windows and Macs). *-lang* _llcode_ By default, the GUI tries to deduce your language from the - environment (on Windows via the registry, on Unix via - 'LC_MESSAGES'). If that fails you can select a different language - by giving this option with a language code (based on ISO 639-1). + environment. The Tcl GUI uses the language detection built into + Tcl/Tk; the Perl/Tk GUIs use the '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 @@ -2318,51 +2333,28 @@ by either a space or '='. *-repository* _url|path_ Specify the package repository to be used as the source of the - installation, either a local directory via '/path/to/directory' or - a 'file:/' url, or a network location via a 'http://', 'https://', - or 'ftp://' url. (No other protocols are supported, and '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 'tlmgr' has the + details (<https://tug.org/texlive/doc/tlmgr.html#OPTIONS>). - The default is to pick a mirror automatically, using - <http://mirror.ctan.org/systems/texlive/tlnet>; the chosen mirror - is used for the entire download. You can use the special argument - 'ctan' as an abbreviation for this. See <http://ctan.org> for more - about CTAN and its mirrors. - - If the repository is on the network, trailing '/' characters and/or - trailing '/tlpkg' and '/archive' components are ignored. For - example, you could choose a particular CTAN mirror with something - like this: - - -repository http://ctan.example.org/its/ctan/dir/systems/texlive/tlnet - - Of course a real hostname and its particular top-level CTAN - directory have to be specified. The list of CTAN mirrors is - available at <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 '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: - - -repository /local/TL/repository + For installation, the default is to pick a mirror automatically, + using <http://mirror.ctan.org/systems/texlive/tlnet>; the chosen + mirror is used for the entire download. You can use the special + argument 'ctan' as an abbreviation for this. (See + <https://ctan.org> for more about CTAN and its mirrors.) 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, '--location' and - '--repo' are accepted as aliases for this option. - *-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 + This option allows you to choose a particular mirror from the + current list of active CTAN mirrors. This option is supported in + the 'text', 'wizard' and '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. @@ -2386,12 +2378,12 @@ by either a space or '='. binary sets, manually rename 'custom' before doing each. For more information on custom binaries, see - <http://tug.org/texlive/custom-bin.html>. For general information - on building TeX Live, see <http://tug.org/texlive/build.html>. + <https://tug.org/texlive/custom-bin.html>. For general information + on building TeX Live, see <https://tug.org/texlive/build.html>. *-debug-translation* - In GUI mode, this switch makes 'tlmgr' report any missing, or more + 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. @@ -2404,8 +2396,8 @@ by either a space or '='. *-help*, *-help*, *-?* - Display this help and exit. (This help is on the web at - <http://tug.org/texlive/doc/install-tl.html>). Sometimes the + Display this help and exit. (This help is also on the web at + <https://tug.org/texlive/doc/install-tl.html>). Sometimes the 'perldoc' and/or '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 'NOPERLDOC' @@ -2426,7 +2418,8 @@ by either a space or '='. Similar to *-profile* (see *note PROFILES: install-tl PROFILES. below), but only initializes the installation configuration from - _profile_file_ and then starts the interactive session. + _profile_file_ and then starts a normal interactive session. + Environment variables are not ignored. *-logfile* _file_ @@ -2442,15 +2435,10 @@ by either a space or '='. For the text mode installer only: do not clear the screen when entering a new menu (for debugging purposes). -*-non-admin* - - For Windows only: configure for the current user, not for all - users. +*-no-persistent-downloads* *-persistent-downloads* -*-no-persistent-downloads* - For network installs, activating this option makes the installer try to set up a persistent connection using the 'Net::LWP' Perl module. This opens only one connection between your computer and @@ -2469,7 +2457,12 @@ by either a space or '='. verified against a cryptographic signature. This option disables such verification. The full description is in the Crytographic Verification section of the 'tlmgr' documentation, e.g., - <http://tug.org/texlive/doc/tlmgr.html#CRYPTOGRAPHIC-VERIFICATION> + <https://tug.org/texlive/doc/tlmgr.html#CRYPTOGRAPHIC-VERIFICATION> + +*-non-admin* + + For Windows only: configure for the current user, not for all + users. *-portable* @@ -2485,8 +2478,9 @@ by either a space or '='. *-profile* _profile_file_ Load _profile_file_ and do the installation with no user - interaction, that is, a batch (unattended) install. See *note - PROFILES: install-tl PROFILES. below. + interaction, that is, a batch (unattended) install. Environment + variables are ignored. See *note PROFILES: install-tl PROFILES. + below. *-q* @@ -2509,8 +2503,8 @@ by either a space or '='. *-version*, *-version* - Output version information and exit. If '-v' has also been given - the revisions of the used modules are reported, too. + Output version information and exit. If '-v' is also given, the + versions of the TeX Live modules used are also reported. File: tlbuild.info, Node: install-tl PROFILES, Next: install-tl ENVIRONMENT VARIABLES, Prev: install-tl OPTIONS, Up: install-tl @@ -2522,11 +2516,18 @@ A _profile_ file contains all the values needed to perform an installation. After a normal installation has finished, a profile for that exact installation is written to the file 'tlpkg/texlive.profile'. In addition, from the text menu one can select 'P' to save the current -setup as a profile at any time. Such a profile file can be given as the -argument to '-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 '-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 'tlmgr' to work at the package +level. Within a profile file, each line consists of @@ -2605,9 +2606,9 @@ value that could cause problems later. *tlpdb options* (prefix 'tlpdbopt_') - The definitive list is given in 'tlpkg/TeXLive/TLConfig.pm', in -'%TeXLive::TLConfig::TLPDBOptions', together with explanations. All -items given there _except_ for 'tlpdbopt_location' can be specified. + The definitive list is given in 'tlpkg/TeXLive/TLConfig.pm', in the +hash '%TeXLive::TLConfig::TLPDBOptions', together with explanations. +All items given there _except_ for 'tlpdbopt_location' can be specified. Here is the current list: tlpdbopt_autobackup @@ -2627,11 +2628,11 @@ Here is the current list: *platform options* (prefix 'binary_') For each supported platform in TeX Live (directories under 'bin/'), -the variable 'binary_'_PLATFORM_ can be set. For example: +the variable 'binary_'_PLATFORM_ can be set with value 1. For example: - binary_x86_64-linux + binary_x86_64-linux 1 - If no 'binary_' variable is specified, the default is whatever the + If no 'binary_' settings are made, the default is whatever the current machine is running. In releases before 2017, many profile variables had different names @@ -2640,7 +2641,7 @@ and transformed to the names given above. When a profile is written, the names above are always used. For more details on all of the above options, consult the TeX Live -installation manual, linked from <http://tug.org/texlive/doc>. +installation manual, linked from <https://tug.org/texlive/doc>. File: tlbuild.info, Node: install-tl ENVIRONMENT VARIABLES, Next: install-tl AUTHORS AND COPYRIGHT, Prev: install-tl PROFILES, Up: install-tl @@ -2648,10 +2649,20 @@ File: tlbuild.info, Node: install-tl ENVIRONMENT VARIABLES, Next: install-tl A A.7 ENVIRONMENT VARIABLES ========================= -For ease in scripting and debugging, 'install-tl' will look for the +For ease in scripting and debugging, 'install-tl' looks for the following environment variables. They are not of interest for normal user installations. +'TEXLIVE_DOWNLOADER' + +'TL_DOWNLOAD_PROGRAM' + +'TL_DOWNLOAD_ARGS' + + These override the normal choice of a download program; see the + 'tlmgr' documentation, e.g., + <https://tug.org/texlive/doc/tlmgr.html#ENVIRONMENT-VARIABLES>. + 'TEXLIVE_INSTALL_ENV_NOCHECK' Omit the check for environment variables containing the string @@ -2663,10 +2674,15 @@ user installations. Omit creating the ConTeXt cache. This is useful for redistributors. +'TEXLIVE_INSTALL_NO_IMPORT' + + Omit check for installing on top of a previous installation and + then asking about importing previous settings. + 'TEXLIVE_INSTALL_NO_WELCOME' Omit printing the welcome message after successful installation, - e.g., for testing. + e.g., when testing. 'TEXLIVE_INSTALL_PREFIX' @@ -2702,10 +2718,10 @@ A.8 AUTHORS AND COPYRIGHT ========================= This script and its documentation were written for the TeX Live -distribution (<http://tug.org/texlive>) and both are licensed under the +distribution (<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 $ File: tlbuild.info, Node: tlmgr, Next: Index, Prev: install-tl, Up: Top @@ -2727,6 +2743,7 @@ Appendix B tlmgr * tlmgr MULTIPLE REPOSITORIES:: * tlmgr GUI FOR TLMGR:: * tlmgr MACHINE-READABLE OUTPUT:: +* tlmgr ENVIRONMENT VARIABLES:: * tlmgr AUTHORS AND COPYRIGHT:: @@ -2753,11 +2770,11 @@ B.3 DESCRIPTION *tlmgr* manages an existing TeX Live installation, both packages and configuration options. For information on initially downloading and -installing TeX Live, see <http://tug.org/texlive/acquire.html>. +installing TeX Live, see <https://tug.org/texlive/acquire.html>. The most up-to-date version of this documentation (updated nightly from the development sources) is available at -<http://tug.org/texlive/tlmgr.html>, along with procedures for updating +<https://tug.org/texlive/tlmgr.html>, along with procedures for updating 'tlmgr' itself and information about test versions. TeX Live is organized into a few top-level _schemes_, each of which @@ -2767,7 +2784,7 @@ files. Schemes typically contain a mix of collections and packages, but 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 <http://tug.org/texlive/doc> for all the TeX Live documentation + See <https://tug.org/texlive/doc> for all the TeX Live documentation available. @@ -2786,10 +2803,13 @@ with 'tlmgr': Tell '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; 'ctan' is - just an alias for the given url. Caveat: '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. + just an alias for the given url. + + Caveat: '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 <https://ctan.org/mirrors/mirmon>. 'tlmgr update --list' @@ -2824,31 +2844,106 @@ name and its value. *-repository* _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 'tlpkg/texlive.tlpdb'). The - documentation for 'install-tl' has more details about this - (<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 'tlpkg/texlive.tlpdb'). + + This '--repository' option changes the location only for the + current run; to make a permanent change, use 'option repository' + (see the *note option: tlmgr option. action). + + As an example, you can choose a particular CTAN mirror with + something like this: + + -repository http://ctan.example.org/its/ctan/dir/systems/texlive/tlnet + + Of course a real hostname and its particular top-level CTAN + directory have to be specified. The list of CTAN mirrors is + available at <https://ctan.org/mirrors/mirmon>. - '--repository' changes the repository location only for the current - run; to make a permanent change, use 'option repository' (see the - *note option: tlmgr option. action). + Here's an example of using a local directory: + + -repository /local/TL/repository For backward compatibility and convenience, '--location' and '--repo' are accepted as aliases for this option. + Locations can be specified as any of the following: + + '/some/local/dir' + + 'file:/some/local/dir' + + Equivalent ways of specifying a local directory. + + 'ctan' + + '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 'ctan' is merely an alias for the + full url. (See <https://ctan.org> for more about CTAN and its + mirrors.) + + 'http://server/path/to/tlnet' + + Standard HTTP. If the (default) LWP method is used, persistent + connections are supported. TL can also use 'curl' or 'wget' + to do the downloads, or an arbitrary user-specified program, + as described in the 'tlmgr' documentation + (<https://tug.org/texlive/doc/tlmgr.html#ENVIRONMENT-VARIABLES>). + + 'https://server/path/to/tlnet' + + Again, if the (default) LWP method is used, this supports + persistent connections. Unfortunately, some versions of + 'wget' and 'curl' do not support https, and even when '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. + + 'ftp://server/path/to/tlnet' + + If the (default) LWP method is used, persistent connections + are supported. + + 'user@machine:/path/to/tlnet' + + 'scp://user@machine/path/to/tlnet' + + 'ssh://user@machine/path/to/tlnet' + + These forms are equivalent; they all use 'scp' to transfer + files. Using 'ssh-agent' is recommended. (Info: + <https://en.wikipedia.org/wiki/OpenSSH>, + <https://en.wikipedia.org/wiki/Ssh-agent>.) + + If the repository is on the network, trailing '/' characters and/or + trailing '/tlpkg' and/or '/archive' components are ignored. + *-gui* [_action_] - 'tlmgr' has a graphical interface as well as the command line - interface. You can give this option, '--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 'tlmgr', 'tlshell' and 'tlcockpit', + are started up as separate programs; see their own documentation. + + 'tlmgr' itself has a graphical interface as well as the command + line interface. You can give the option to invoke it, '--gui', + together with an action to be brought directly into the respective + screen of the GUI. For example, running tlmgr --gui update starts you directly at the update screen. If no action is given, - the GUI will be started at the main screen. + the GUI will be started at the main screen. See *note GUI FOR + TLMGR: 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 + 'tlshell' or 'tlcockpit' easier to work with. *-gui-lang* _llcode_ @@ -2858,10 +2953,12 @@ name and its value. 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). + 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). + + tlshell shares its message catalog with tlmgr. *-debug-translation* @@ -2956,7 +3053,7 @@ B.6 ACTIONS * tlmgr version:: * tlmgr backup:: * tlmgr candidates _pkg_:: -* tlmgr check [_option_...] [files|depends|executes|runfiles|all]:: +* tlmgr check [_option_...] [depends|executes|files|runfiles|texmfdbs|all]:: * tlmgr conf:: * tlmgr dump-tlpdb [_option_...] [--json]:: * tlmgr generate:: @@ -2990,7 +3087,7 @@ B.6.1 help ---------- Display this help information and exit (same as '--help', and on the web -at <http://tug.org/texlive/doc/tlmgr.html>). Sometimes the 'perldoc' +at <https://tug.org/texlive/doc/tlmgr.html>). Sometimes the 'perldoc' and/or '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 'NOPERLDOC' environment variable and @@ -3022,7 +3119,10 @@ B.6.3 backup backups are saved to the value of the '--backupdir' option, if that is an existing and writable directory. If '--backupdir' is not given, the 'backupdir' option setting in the TLPDB is used, if - present. If both are missing, no backups are made. + present. If both are missing, no backups are made. (The installer + sets 'backupdir' to '.../tlpkg/backups', under the TL root + installation directory, so it is usually defined; see the *note + option: tlmgr option. description for more information.) If the '--clean' option is specified, backups are pruned (removed) instead of saved. The optional integer value _N_ may be specified @@ -3060,7 +3160,7 @@ B.6.3 backup to be performed are written to the terminal. -File: tlbuild.info, Node: tlmgr candidates _pkg_, Next: tlmgr check [_option_...] [files|depends|executes|runfiles|all], Prev: tlmgr backup, Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr candidates _pkg_, Next: tlmgr check [_option_...] [depends|executes|files|runfiles|texmfdbs|all], Prev: tlmgr backup, Up: tlmgr ACTIONS B.6.4 candidates _pkg_ ---------------------- @@ -3069,17 +3169,14 @@ Shows the available candidate repositories for package _pkg_. See *note MULTIPLE REPOSITORIES: tlmgr MULTIPLE REPOSITORIES. below. -File: tlbuild.info, Node: tlmgr check [_option_...] [files|depends|executes|runfiles|all], Next: tlmgr conf, Prev: tlmgr candidates _pkg_, Up: tlmgr ACTIONS - -B.6.5 check [_option_...] [files|depends|executes|runfiles|all] ---------------------------------------------------------------- +File: tlbuild.info, Node: tlmgr check [_option_...] [depends|executes|files|runfiles|texmfdbs|all], Next: tlmgr conf, Prev: tlmgr candidates _pkg_, Up: tlmgr ACTIONS -Executes one (or all) check(s) on the consistency of the installation. +B.6.5 check [_option_...] [depends|executes|files|runfiles|texmfdbs|all] +------------------------------------------------------------------------ -*files* - - Checks that all files listed in the local TLPDB ('texlive.tlpdb') - are actually present, and lists those missing. +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 'tlmgr -v check'.) *depends* @@ -3095,27 +3192,46 @@ Executes one (or all) check(s) on the consistency of the installation. Check that the files referred to by 'execute' directives in the TeX Live Database are present. +*files* + + Checks that all files listed in the local TLPDB ('texlive.tlpdb') + are actually present, and lists those missing. + *runfiles* List those filenames that are occurring more than one time in the - runfiles sections. + runfiles sections, except for known duplicates. + +*texmfdbs* + + Checks related to the 'ls-R' files. If you have defined new trees, + or changed the 'TEXMF' or 'TEXMFDBS' variables, it can't hurt to + run this. It checks that: + + - all items in 'TEXMFDBS' have the '!!' prefix. + + - all items in 'TEXMFBDS' have an 'ls-R' file (if they exist at all). + + - all items in 'TEXMF' with '!!' are listed in 'TEXMFDBS'. + + - all items in 'TEXMF' with an 'ls-R' file are listed in 'TEXMFDBS'. Options: *-use-svn* Use the output of 'svn status' instead of listing the files; for - checking the TL development repository. + checking the TL development repository. (This is run nightly.) -File: tlbuild.info, Node: tlmgr conf, Next: tlmgr dump-tlpdb [_option_...] [--json], Prev: tlmgr check [_option_...] [files|depends|executes|runfiles|all], Up: tlmgr ACTIONS +File: tlbuild.info, Node: tlmgr conf, Next: tlmgr dump-tlpdb [_option_...] [--json], Prev: tlmgr check [_option_...] [depends|executes|files|runfiles|texmfdbs|all], Up: tlmgr ACTIONS B.6.6 conf ---------- *conf [texmf|tlmgr|updmap [-conffile _file_] [-delete] [_key_ [_value_]]]* -*conf auxtrees [-conffile _file_] [show|add|delete] [_value_]* +*conf auxtrees [-conffile _file_] [show|add|remove] [_value_]* With only 'conf', show general configuration information for TeX Live, including active configuration files, path settings, and @@ -3150,15 +3266,16 @@ B.6.6 conf show' shows the list of additional trees, 'auxtrees add' _tree_ adds a tree to the list, and 'auxtrees remove' _tree_ removes a tree from the list (if present). The trees should not contain an - 'ls-R' file (or files might not be found if the 'ls-R' becomes + 'ls-R' file (or files will not be found if the 'ls-R' becomes stale). This works by manipulating the Kpathsea variable - 'TEXMFAUXTREES', in 'ROOT/texmf.cnf'. Example: + 'TEXMFAUXTREES', in (by default) 'ROOT/texmf.cnf'. Example: tlmgr conf auxtrees add /quick/test/tree tlmgr conf auxtrees remove /quick/test/tree In all cases the configuration file can be explicitly specified via - the option '--conffile' _file_, if desired. + the option '--conffile' _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 @@ -3225,7 +3342,7 @@ Live installer and 'tlmgr' routinely call 'generate' for all of these files. For managing your own fonts, please read the 'updmap --help' -information and/or <http://tug.org/fonts/fontinstall.html>. +information and/or <https://tug.org/fonts/fontinstall.html>. For managing your own formats, please read the 'fmtutil --help' information. @@ -3376,6 +3493,13 @@ B.6.10 info used; only locally installed packages, collections, or schemes are listed. + *-only-remote* + + Only list packages from the remote repository. Useful when + checking what is available in a remote repository using 'tlmgr + --repo ... --only-remote info'. Note that '--only-installed' + and '--only-remote' cannot both be specified. + *-data 'item1,item2,...'* If the option '--data' is given, its argument must be a comma @@ -3413,8 +3537,8 @@ B.6.12 install [_option_...] _pkg_... ------------------------------------- Install each _pkg_ given on the command line, if it is not already -installed. (It does not touch existing packages; see the 'update' -action for how to get the latest version of a package.) +installed. It does not touch existing packages; see the 'update' action +for how to get the latest version of a package. By default this also installs all packages on which the given _pkg_s are dependent. Options: @@ -3474,6 +3598,10 @@ are dependent. Options: tlmgr install --reinstall --with-doc --with-src fontspec + This action does not automatically add new symlinks in system +directories; you need to run 'tlmgr path add' (*note path: tlmgr path.) +yourself if you are using this feature and want new symlinks added. + File: tlbuild.info, Node: tlmgr key, Next: tlmgr list, Prev: tlmgr install [_option_...] _pkg_..., Up: tlmgr ACTIONS @@ -3495,7 +3623,7 @@ B.6.13 key The 'add' argument requires another argument, either a filename or '-' for stdin, from which the key is added. The key is added to the local keyring 'GNUPGHOME/repository-keys.gpg', which is - normally) 'tlpkg/gpg/repository-keys.gpg'. + normally 'tlpkg/gpg/repository-keys.gpg'. The 'remove' argument requires a key id and removes the requested id from the local keyring. @@ -3516,7 +3644,7 @@ B.6.15 option *option [-json] [show]* -*option [-json] showall* +*option [-json] showall|help* *option _key_ [_value_]* @@ -3525,7 +3653,8 @@ saved in the TLPDB with a short description and the 'key' used for changing it in parentheses. The second form, '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 ('help' is a +synonym). Both 'show...' forms take an option '--json', which dumps the option information in JSON format. In this case, both forms dump the same @@ -3539,7 +3668,7 @@ for _key_ is displayed. If _value_ is present, _key_ is set to _value_. definitive list): repository (default package repository), - formats (create formats at installation time), + formats (generate formats at installation or update time), postcode (run postinst code blobs) docfiles (install documentation files), srcfiles (install source files), @@ -3565,7 +3694,7 @@ possible values for 'repository'. (For backward compatibility, If '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. +yourself whenever needed (which is often, in practice). The 'postcode' option controls execution of per-package postinstallation action code. It is set by default, and again disabling @@ -3582,7 +3711,8 @@ downloaded at all. the actions 'update', 'backup' and 'restore'. These three actions need a directory in which to read or write the backups. If '--backupdir' is not specified on the command line, the 'backupdir' option value is used -(if set). +(if set). The TL installer sets 'backupdir' to '.../tlpkg/backups', +under the TL root installation directory. The 'autobackup' option (de)activates automatic generation of backups. Its value is an integer. If the 'autobackup' value is '-1', @@ -3620,7 +3750,7 @@ B.6.16 paper *paper [a4|letter]* -*[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|-list]* +*<[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|-list]*> *paper -json* @@ -3662,11 +3792,13 @@ B.6.17 path *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 *note option: tlmgr 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 *note option: tlmgr 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: @@ -3745,8 +3877,8 @@ B.6.19 platform 'platform set auto' switches TeX Live to auto detection mode for platform. - Platform detection is needed to select the proper 'xz', 'xzdec' and - 'wget' binaries that are shipped with TeX Live. + Platform detection is needed to select the proper 'xz' and 'wget' + binaries that are shipped with TeX Live. 'arch' is a synonym for 'platform'. @@ -3867,6 +3999,11 @@ package, dependencies are never removed. Options: Nothing is actually removed; instead, the actions to be performed are written to the terminal. + This action does not automatically remove symlinks to executables +from system directories; you need to run 'tlmgr path remove' (*note +path: tlmgr path.) yourself if you are using this feature and want stale +symlinks removed. + File: tlbuild.info, Node: tlmgr repository, Next: tlmgr restore, Prev: tlmgr remove [_option_...] _pkg_..., Up: tlmgr ACTIONS @@ -3875,7 +4012,7 @@ B.6.24 repository *repository list* -*repository list _path|tag_* +*repository list _path|url|tag_* *repository add _path_ [_tag_]* @@ -3883,22 +4020,44 @@ B.6.24 repository *repository set _path_[#_tag_] [_path_[#_tag_] ...]* +*repository status* + This action manages the list of repositories. See *note (MULTIPLE_REPOSITORIES):: below for detailed explanations. - The first form ('list') lists all configured repositories and the - respective tags if set. If a path, url, or tag is given after the - '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 '--with-platforms', for each - package the available platforms (if any) are listed, too. + The first form, 'repository list', lists all configured + repositories and the respective tags if set. If a path, url, or + tag is given after the '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 + '--with-platforms' is specified in addition, for each package the + available platforms (if any) are also listed. + + The form 'repository add' adds a repository (optionally attaching a + tag) to the list of repositories, while 'repository remove' removes + a repository, either by full path/url, or by tag. + + The form 'repository set' sets the list of available repositories + to the items given on the command line, overwriting previous + settings. + + The form '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: + + The tag (which can be the same as the url); - The third form ('add') adds a repository (optionally attaching a - tag) to the list of repositories. The forth form ('remove') - removes a repository, either by full path/url, or by tag. The last - form ('set') sets the list of repositories to the items given on - the command line, not keeping previous settings + = 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. + + 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 'main'; otherwise, all operations will fail! @@ -4089,10 +4248,9 @@ must be specified. Options: *-all* - Update all installed packages except for 'tlmgr' itself. Thus, if - updates to 'tlmgr' itself are present, this will simply give an - error, unless also the option '--force' or '--self' is given. (See - below.) + Update all installed packages except for 'tlmgr' itself. If + updates to 'tlmgr' itself are present, this gives an error, unless + also the option '--force' or '--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 @@ -4110,7 +4268,8 @@ must be specified. Options: server 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 '--list'. This auto-installation can - be suppressed using the option '--no-auto-install'. + be suppressed using the option '--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 @@ -4119,6 +4278,14 @@ must be specified. Options: reinstall any such forcibly removed packages use '--reinstall-forcibly-removed'. + To reiterate: automatic removals and additions are entirely + determined by comparison of collections. Thus, if you manually + install an individual package 'foo' which is later removed from the + server, '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 '--exclude' option below. @@ -4182,12 +4349,13 @@ must be specified. Options: *-no-auto-remove* [_pkg_...] - By default, 'tlmgr' tries to remove packages which have disappeared - on the server, as described above under '--all'. This option - prevents such removals, either for all packages (with '--all'), or - for just the given _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, 'tlmgr' tries to remove packages in an existing + collection which have disappeared on the server, as described above + under '--all'. This option prevents such removals, either for all + packages (with '--all'), or for just the given _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. *-no-auto-install* [_pkg_...] @@ -4208,6 +4376,9 @@ must be specified. Options: tlmgr update --all tlmgr remove --force foobar + Again, since packages are sometimes renamed or replaced, using this + option is not recommended. + *-reinstall-forcibly-removed* Under normal circumstances 'tlmgr' will not install packages that @@ -4227,8 +4398,8 @@ must be specified. Options: *-backupdir* _directory_ These two options control the creation of backups of packages - _before_ updating; that is, backup of packages as currently - installed. If neither options is given, no backup will made. If + _before_ updating; that is, backing up packages as currently + installed. If neither option is given, no backup will made. If '--backupdir' is given and specifies a writable directory then a backup will be made in that location. If only '--backup' is given, then a backup will be made to the directory previously set via the @@ -4278,14 +4449,18 @@ fallback information, but if you don't like them accumulating (e.g., '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 'tlmgr' *note path: tlmgr path. +yourself if you are using this feature and want new symlinks added. + File: tlbuild.info, Node: tlmgr CONFIGURATION FILE FOR TLMGR, Next: tlmgr CRYPTOGRAPHIC VERIFICATION, Prev: tlmgr ACTIONS, Up: tlmgr B.7 CONFIGURATION FILE FOR TLMGR ================================ -There are two configuration files for 'tlmgr': One is system-wide in -'TEXMFSYSCONFIG/tlmgr/config', and the other is user-specific in +'tlmgr' reads two configuration files: one is system-wide, in +'TEXMFSYSCONFIG/tlmgr/config', and the other is user-specific, in 'TEXMFCONFIG/tlmgr/config'. The user-specific one is the default for the 'conf tlmgr' action. (Run 'kpsewhich -var-value=TEXMFSYSCONFIG' or '... TEXMFCONFIG ...' to see the actual directory names.) @@ -4335,8 +4510,8 @@ disables this process. The checksum algorithm is SHA-512. Your system must have one of (looked for in this order) the Perl 'Digest::SHA' module, the 'openssl' -program (<http://openssl.org>), the 'sha512sum' program (from GNU -Coreutils, <http://www.gnu.org/software/coreutils>), or finally the +program (<https://openssl.org>), the 'sha512sum' program (from GNU +Coreutils, <https://www.gnu.org/software/coreutils>), or finally the 'shasum' program (just to support old Macs). If none of these are available, a warning is issued and 'tlmgr' proceeds without checking checksums. (Incidentally, other SHA implementations, such as the pure @@ -4378,9 +4553,10 @@ above) to succeed, and a working GnuPG ('gpg') program (see below for search method). Then, unless cryptographic verification has been disabled, a signature file ('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 -of these keys are obtainable from the standard key servers. +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 'key' action. @@ -4571,50 +4747,48 @@ only one enabled (as is the case by default): List of repositories (with tags if set): /var/www/norbert/tlnet - Ok. Let's add the 'tlcontrib' repository (this is a real repository, -hosted at <http://tlcontrib.metatex.org>, maintained by Taco Hoekwater -et al.), with the tag 'tlcontrib': + Ok. Let's add the 'tlcontrib' repository (this is a real repository +hosted at <http://contrib.texlive.info>) with the tag 'tlcontrib': - $ tlmgr repository add http://tlcontrib.metatex.org/2012 tlcontrib + $ tlmgr repository add http://contrib.texlive.info/current tlcontrib Check the repository list again: $ 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) - Now we specify a pinning entry to get the package 'context' from + Now we specify a pinning entry to get the package 'classico' from 'tlcontrib': - $ tlmgr pinning add tlcontrib context + $ tlmgr pinning add tlcontrib classico - Check that we can find 'context': + Check that we can find 'classico': - $ tlmgr show context - tlmgr: package repositories: + $ tlmgr show classico + package: classico ... - package: context - repository: tlcontrib/26867 + shortdesc: URW Classico fonts ... - - install 'context': + - install 'classico': - $ tlmgr install context + $ tlmgr install classico tlmgr: package repositories: ... - [1/1, ??:??/??:??] install: context @tlcontrib [ + [1/1, ??:??/??:??] install: classico @tlcontrib [737k] - In the output here you can see that the 'context' package has been + In the output here you can see that the 'classico' package has been installed from the 'tlcontrib' repository ('@tlcontrib'). Finally, 'tlmgr pinning' also supports removing certain or all packages from a given repository: - $ 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 - A summary of the 'tlmgr pinning' actions is given above. + A summary of 'tlmgr pinning' actions is given above. File: tlbuild.info, Node: tlmgr GUI FOR TLMGR, Next: tlmgr MACHINE-READABLE OUTPUT, Prev: tlmgr MULTIPLE REPOSITORIES, Up: tlmgr @@ -4623,16 +4797,22 @@ B.11 GUI FOR TLMGR ================== The graphical user interface for 'tlmgr' requires Perl/Tk -<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. <http://tug.org/texlive/distro.html#perltk> has -a list of invocations for some distros. - - The GUI is started with the invocation '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. +<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. <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. + + 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 '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 'Display configuration' area, the list of packages, and the action buttons. @@ -4838,7 +5018,7 @@ The following entries can be found in the menu bar: 'Help menu' Provides access to the TeX Live manual (also on the web at - <http://tug.org/texlive/doc.html>) and the usual "About" box. + <https://tug.org/texlive/doc.html>) and the usual "About" box. File: tlbuild.info, Node: tlmgr GUI options, Prev: tlmgr Menu bar, Up: tlmgr GUI FOR TLMGR @@ -4873,11 +5053,11 @@ control the display: Pass the arbitrary X resource string _xresource_. A few other obscure options are recognized but not mentioned here. -See the Perl/Tk documentation (<http://search.cpan.org/perldoc?Tk>) for +See the Perl/Tk documentation (<https://search.cpan.org/perldoc?Tk>) for the complete list, and any X documentation for general information. -File: tlbuild.info, Node: tlmgr MACHINE-READABLE OUTPUT, Next: tlmgr AUTHORS AND COPYRIGHT, Prev: tlmgr GUI FOR TLMGR, Up: tlmgr +File: tlbuild.info, Node: tlmgr MACHINE-READABLE OUTPUT, Next: tlmgr ENVIRONMENT VARIABLES, Prev: tlmgr GUI FOR TLMGR, Up: tlmgr B.12 MACHINE-READABLE OUTPUT ============================ @@ -4894,11 +5074,11 @@ _pkg_..., and *note option: tlmgr option. actions. * Menu: -* tlmgr Machine-readable 'update' and 'install' output:: -* tlmgr Machine-readable 'option' output:: +* tlmgr Machine-readable update and install output:: +* tlmgr Machine-readable option output:: -File: tlbuild.info, Node: tlmgr Machine-readable 'update' and 'install' output, Next: tlmgr Machine-readable 'option' output, Up: tlmgr MACHINE-READABLE OUTPUT +File: tlbuild.info, Node: tlmgr Machine-readable update and install output, Next: tlmgr Machine-readable option output, Up: tlmgr MACHINE-READABLE OUTPUT B.12.1 Machine-readable 'update' and 'install' output ----------------------------------------------------- @@ -5016,7 +5196,7 @@ _esttot_ The estimated total time. -File: tlbuild.info, Node: tlmgr Machine-readable 'option' output, Prev: tlmgr Machine-readable 'update' and 'install' output, Up: tlmgr MACHINE-READABLE OUTPUT +File: tlbuild.info, Node: tlmgr Machine-readable option output, Prev: tlmgr Machine-readable update and install output, Up: tlmgr MACHINE-READABLE OUTPUT B.12.2 Machine-readable 'option' output --------------------------------------- @@ -5032,16 +5212,101 @@ shown. changes would be helpful, do not hesitate to write the mailing list. -File: tlbuild.info, Node: tlmgr AUTHORS AND COPYRIGHT, Prev: tlmgr MACHINE-READABLE OUTPUT, Up: tlmgr +File: tlbuild.info, Node: tlmgr ENVIRONMENT VARIABLES, Next: tlmgr AUTHORS AND COPYRIGHT, Prev: tlmgr MACHINE-READABLE OUTPUT, Up: tlmgr -B.13 AUTHORS AND COPYRIGHT +B.13 ENVIRONMENT VARIABLES +========================== + +'tlmgr' uses many of the standard TeX environment variables, as reported +by, e.g., 'tlmgr conf' (*note conf: tlmgr conf.). + + In addition, for ease in scripting and debugging, 'tlmgr' looks for +the following environment variables. These are not of interest for +normal user installations. + +'TEXLIVE_COMPRESSOR' + + This variable allows selecting a different compressor program for + backups and intermediate rollback containers. The order of + selection is: + + 1. If the environment variable 'TEXLIVE_COMPRESSOR' is defined, + use it; abort if it doesn't work. Possible values: 'lz4', + 'gzip', 'xz'. The necessary options are added internally. + + 2. If lz4 is available (either from the system or TL) and + working, use that. + + 3. If gzip is available (from the system) and working, use that. + + 4. If xz is available (either from the system or TL) and working, + use that. + + 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. + +'TEXLIVE_DOWNLOADER' + +'TL_DOWNLOAD_PROGRAM' + +'TL_DOWNLOAD_ARGS' + + These options allow selecting different download programs then the + ones automatically selected by the installer. The order of + selection is: + + 1. If the environment variable 'TEXLIVE_DOWNLOADER' is defined, + use it; abort if the specified program doesn't work. Possible + values: 'lwp', 'curl', 'wget'. The necessary options are + added internally. + + 2. If the environment variable 'TL_DOWNLOAD_PROGRAM' is defined + (can be any value), use it together with 'TL_DOWNLOAD_ARGS'; + abort if it doesn't work. + + 3. If LWP is available and working, use that (by far the most + efficient method, as it supports persistent downloads). + + 4. If curl is available (from the system) and working, use that. + + 5. If wget is available (either from the system or TL) and + working, use that. + + TL provides 'wget' binaries for platforms where necessary, so some + download method should always be available. + +'TEXLIVE_PREFER_OWN' + + By default, compression and download programs provided by the + system, i.e., found along '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 + '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. '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 'tar.exe' shipped with TL is always + used, regardless of any setting. + + +File: tlbuild.info, Node: tlmgr AUTHORS AND COPYRIGHT, Prev: tlmgr ENVIRONMENT VARIABLES, Up: tlmgr + +B.14 AUTHORS AND COPYRIGHT ========================== This script and its documentation were written for the TeX Live -distribution (<http://tug.org/texlive>) and both are licensed under the +distribution (<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 $ File: tlbuild.info, Node: Index, Prev: tlmgr, Up: Top @@ -5052,117 +5317,116 @@ Index �[index�] * Menu: -* --bindir configure option: '--prefix' '--bindir' .... +* --bindir configure option: --prefix --bindir .... (line 6) -* --bindir configure option <1>: '--enable-multiplatform'. +* --bindir configure option <1>: --enable-multiplatform. (line 6) * --build=HOST: Cross configuring. (line 6) * --disable-all-packages: Build one package. (line 6) -* --disable-all-pkgs: '--disable-all-pkgs'. (line 6) -* --disable-bibtex8: Configure options for 'texk/bibtex-x'. +* --disable-all-pkgs: --disable-all-pkgs. (line 6) +* --disable-bibtex8: Configure options for texk/bibtex-x. (line 9) -* --disable-bibtexu: Configure options for 'texk/bibtex-x'. +* --disable-bibtexu: Configure options for texk/bibtex-x. (line 12) -* --disable-dump-share: Configure options for 'texk/web2c'. +* --disable-dump-share: Configure options for texk/web2c. (line 27) -* --disable-dvipdfmx: Configure options for 'texk/dvipdfm-x'. +* --disable-dvipdfmx: Configure options for texk/dvipdfm-x. (line 12) -* --disable-etex-synctex: Configure options for 'texk/web2c'. +* --disable-etex-synctex: Configure options for texk/web2c. (line 59) -* --disable-ipc: Configure options for 'texk/web2c'. +* --disable-ipc: Configure options for texk/web2c. (line 31) -* --disable-largefile: '--disable-largefile'. +* --disable-largefile: --disable-largefile. (line 6) +* --disable-linked-scripts: Configure options for texk/texlive. (line 6) -* --disable-linked-scripts: Configure options for 'texk/texlive'. - (line 6) -* --disable-mf-nowin: Configure options for 'texk/web2c'. +* --disable-mf-nowin: Configure options for texk/web2c. (line 34) -* --disable-missing: '--disable-missing'. (line 6) -* --disable-native-texlive-build: '--disable-native-texlive-build'. +* --disable-missing: --disable-missing. (line 6) +* --disable-native-texlive-build: --disable-native-texlive-build. (line 6) -* --disable-PROG: '--enable-PROG' '--disable-PROG'. +* --disable-PROG: --enable-PROG --disable-PROG. (line 6) -* --disable-synctex: Configure options for 'texk/web2c'. +* --disable-synctex: Configure options for texk/web2c. (line 64) -* --disable-tex: Configure options for 'texk/web2c'. +* --disable-tex: Configure options for texk/web2c. (line 37) -* --disable-web-progs: Configure options for 'texk/web2c'. +* --disable-web-progs: Configure options for texk/web2c. (line 41) -* --disable-xdvipdfmx: Configure options for 'texk/dvipdfm-x'. +* --disable-xdvipdfmx: Configure options for texk/dvipdfm-x. (line 15) -* --enable-*win for Metafont window support: Configure options for 'texk/web2c'. +* --enable-*win for Metafont window support: Configure options for texk/web2c. (line 55) -* --enable-auto-core: Configure options for 'texk/web2c'. +* --enable-auto-core: Configure options for texk/web2c. (line 45) -* --enable-compiler-warnings=LEVEL: '--enable-compiler-warnings='LEVEL. +* --enable-compiler-warnings=LEVEL: --enable-compiler-warnings=LEVEL. (line 6) * --enable-cxx-runtime-hack: Macros for compilers. (line 29) -* --enable-etex: Configure options for 'texk/web2c'. +* --enable-etex: Configure options for texk/web2c. (line 37) -* --enable-libtool-hack: Configure options for 'texk/web2c'. +* --enable-libtool-hack: Configure options for texk/web2c. (line 50) * --enable-maintainer-mode: Build system tools. (line 28) -* --enable-maintainer-mode <1>: '--enable-maintainer-mode'. +* --enable-maintainer-mode <1>: --enable-maintainer-mode. (line 6) * --enable-missing to ignore dependencies: Build one package. (line 71) -* --enable-mktextfm-default: 'kpathsea' library. (line 18) -* --enable-multiplatform: '--enable-multiplatform'. +* --enable-mktextfm-default: kpathsea library. (line 18) +* --enable-multiplatform: --enable-multiplatform. (line 6) -* --enable-PROG: '--enable-PROG' '--disable-PROG'. +* --enable-PROG: --enable-PROG --disable-PROG. (line 6) -* --enable-shared: '--enable-shared'. (line 6) -* --enable-silent-rules: '--enable-silent-rules'. +* --enable-shared: --enable-shared. (line 6) +* --enable-silent-rules: --enable-silent-rules. (line 6) -* --enable-tex-synctex: Configure options for 'texk/web2c'. +* --enable-tex-synctex: Configure options for texk/web2c. (line 59) -* --enable-texlive-build: '--disable-native-texlive-build'. +* --enable-texlive-build: --disable-native-texlive-build. (line 15) -* --enable-xi2-scrolling: Configure options for 'texk/xdvik'. +* --enable-xi2-scrolling: Configure options for texk/xdvik. (line 13) -* --enable-xindy-docs: Configure options for 'utils/xindy'. +* --enable-xindy-docs: Configure options for utils/xindy. (line 10) -* --enable-xindy-rules: Configure options for 'utils/xindy'. +* --enable-xindy-rules: Configure options for utils/xindy. (line 6) * --host=HOST: Cross configuring. (line 6) -* --libdir configure option: '--enable-multiplatform'. +* --libdir configure option: --enable-multiplatform. (line 6) * --no-clean Build option: Build problems. (line 6) -* --prefix configure option: '--prefix' '--bindir' .... +* --prefix configure option: --prefix --bindir .... (line 6) -* --with-banner-add=STR: Configure options for 'texk/web2c'. +* --with-banner-add=STR: Configure options for texk/web2c. (line 6) -* --with-clisp-runtime=FILENAME: Configure options for 'utils/xindy'. +* --with-clisp-runtime=FILENAME: Configure options for utils/xindy. (line 14) -* --with-editor=CMD: Configure options for 'texk/web2c'. +* --with-editor=CMD: Configure options for texk/web2c. (line 11) -* --with-fontconfig-includes=DIR: Configure options for 'texk/web2c'. +* --with-fontconfig-includes=DIR: Configure options for texk/web2c. (line 16) -* --with-fontconfig-libdir=DIR: Configure options for 'texk/web2c'. +* --with-fontconfig-libdir=DIR: Configure options for texk/web2c. (line 16) -* --with-gs=FILENAME: Configure options for 'texk/xdvik'. +* --with-gs=FILENAME: Configure options for texk/xdvik. (line 6) * --with-LIB-includes=DIR, -libdir: Library-specific configure options. (line 16) -* --with-libgs-includes, -libdir: Configure options for 'texk/dvisvgm'. +* --with-libgs-includes, -libdir: Configure options for texk/dvisvgm. (line 17) -* --with-system-kpathsea: 'kpathsea' library. (line 13) +* --with-system-kpathsea: kpathsea library. (line 13) * --with-system-LIB: Adding a new generic library module. (line 34) * --with-system-LIB <1>: Library-specific configure options. (line 9) -* --with-system-libgs: Configure options for 'texk/dvisvgm'. +* --with-system-libgs: Configure options for texk/dvisvgm. (line 6) -* --with-system-poppler: Configure options for system 'poppler'. +* --with-system-poppler: Configure options for system poppler. (line 11) -* --with-system-xpdf: Configure options for system 'poppler'. +* --with-system-xpdf: Configure options for system poppler. (line 15) -* --with-xdvi-x-toolkit: 'xdvik' package. (line 21) -* --with-xdvi-x-toolkit=KIT: Configure options for 'texk/xdvik'. +* --with-xdvi-x-toolkit: xdvik package. (line 21) +* --with-xdvi-x-toolkit=KIT: Configure options for texk/xdvik. (line 9) -* --without-libgs: Configure options for 'texk/dvisvgm'. +* --without-libgs: Configure options for texk/dvisvgm. (line 12) -* --without-ln-s: '--without-ln-s'. (line 6) -* --without-x: '--without-x'. (line 6) +* --without-ln-s: --without-ln-s. (line 6) +* --without-x: --without-x. (line 6) * -C configure option: Build in parallel. (line 11) * -j make option: Build in parallel. (line 6) * adapting TeX Live for distros: Distro builds. (line 54) @@ -5173,25 +5437,25 @@ Index * adding a new TeX-specific library: Adding a new TeX-specific library module. (line 6) * adding to TeX Live: Extending TeX Live. (line 6) -* 'am/' top-level directory: Top-level directories. +* am/ top-level directory: Top-level directories. (line 14) * ANSI C: Declarations and definitions. (line 6) -* 'ApplicationServices' Mac framework, required by 'xetex': Prerequisites. +* ApplicationServices Mac framework, required by xetex: Prerequisites. (line 31) * asymptote: Linked scripts. (line 23) -* asymptote <1>: 'asymptote'. (line 6) +* asymptote <1>: asymptote. (line 6) * Autoconf: Overview of build system. (line 6) * autoconf macros: Autoconf macros. (line 6) * Automake: Overview of build system. (line 6) * biber: Linked scripts. (line 23) -* bibtex-x: Configure options for 'texk/bibtex-x'. +* bibtex-x: Configure options for texk/bibtex-x. (line 6) -* bibtex8: Configure options for 'texk/bibtex-x'. +* bibtex8: Configure options for texk/bibtex-x. (line 6) -* bibtexu: Configure options for 'texk/bibtex-x'. +* bibtexu: Configure options for texk/bibtex-x. (line 6) * BSD distro: Distro builds. (line 6) * build directory, required: Building. (line 17) @@ -5203,7 +5467,7 @@ Index * Build script: Building. (line 6) * build system, design of: Overview of build system. (line 6) -* 'build-aux/' top-level directory: Top-level directories. +* build-aux/ top-level directory: Top-level directories. (line 30) * BUILDCC, BUILDCFLAGS, ...: Cross configuring. (line 42) * building: Building. (line 6) @@ -5215,8 +5479,8 @@ Index (line 6) * C99, avoided: Declarations and definitions. (line 6) -* cache file, for 'configure': Build in parallel. (line 11) -* cache for 'configure': Build in parallel. (line 6) +* cache file, for configure: Build in parallel. (line 11) +* cache for configure: Build in parallel. (line 6) * callexe.c: Macros for Windows. (line 32) * CC: Variables for configure. (line 10) @@ -5228,43 +5492,43 @@ Index (line 18) * CLISP: Variables for configure. (line 17) -* CLISP <1>: Configure options for 'utils/xindy'. +* CLISP <1>: Configure options for utils/xindy. (line 14) -* 'clisp', required by 'xindy': Prerequisites. (line 35) -* 'Cocoa' Mac framework, required by 'xetex': Prerequisites. (line 31) +* clisp, required by xindy: Prerequisites. (line 35) +* Cocoa Mac framework, required by xetex: Prerequisites. (line 31) * coding conventions: Coding conventions. (line 6) * compilers, C and C++11: Prerequisites. (line 6) * config.guess, config.sub, ...: Top-level directories. (line 30) -* 'configure' options: Configure options. (line 6) -* 'configure' options, for 'bibtex-x': Configure options for 'texk/bibtex-x'. +* configure options: Configure options. (line 6) +* configure options, for bibtex-x: Configure options for texk/bibtex-x. (line 6) -* 'configure' options, for 'dvipdfm-x': Configure options for 'texk/dvipdfm-x'. +* configure options, for dvipdfm-x: Configure options for texk/dvipdfm-x. (line 6) -* 'configure' options, for 'dvisvgm': Configure options for 'texk/dvisvgm'. +* configure options, for dvisvgm: Configure options for texk/dvisvgm. (line 6) -* 'configure' options, for 'kpathsea': Configure options for 'kpathsea'. +* configure options, for kpathsea: Configure options for kpathsea. (line 6) -* 'configure' options, for system 'poppler': Configure options for system 'poppler'. +* configure options, for system poppler: Configure options for system poppler. (line 6) -* 'configure' options, for 'texk/texlive': Configure options for 'texk/texlive'. +* configure options, for texk/texlive: Configure options for texk/texlive. (line 6) -* 'configure' options, for 'web2c': Configure options for 'texk/web2c'. +* configure options, for web2c: Configure options for texk/web2c. (line 6) -* 'configure' options, for 'xdvik': Configure options for 'texk/xdvik'. +* configure options, for xdvik: Configure options for texk/xdvik. (line 6) -* 'configure' options, for 'xindy': Configure options for 'utils/xindy'. +* configure options, for xindy: Configure options for utils/xindy. (line 6) -* 'configure' options, global: Global configure options. +* configure options, global: Global configure options. (line 6) -* 'configure' options, library-specific: Library-specific configure options. +* configure options, library-specific: Library-specific configure options. (line 6) -* 'configure' options, program-specific: Program-specific configure options. +* configure options, program-specific: Program-specific configure options. (line 6) -* 'configure' variables: Variables for configure. +* configure variables: Variables for configure. (line 6) * configuring, for cross compilation: Cross configuring. (line 6) -* 'const': Const. (line 6) +* const: Const. (line 6) * continuous integration: Continuous integration. (line 6) * conventions, coding: Coding conventions. (line 6) @@ -5273,7 +5537,7 @@ Index * cross compilation: Cross compilation. (line 6) * cross compilation configuring: Cross configuring. (line 6) * cross compilation problems: Cross problems. (line 6) -* cross compilation, with host binary: 'xdvik' package. (line 14) +* cross compilation, with host binary: xdvik package. (line 14) * ctangle: Cross problems. (line 26) * CXX: Variables for configure. (line 11) @@ -5283,38 +5547,37 @@ Index * declarations before statements, avoiding: Declarations and definitions. (line 6) * dependencies, with several output files: Build in parallel. (line 6) -* DESTDIR: '--prefix' '--bindir' .... +* DESTDIR: --prefix --bindir .... (line 9) * directories, for installation: Installation directories. (line 6) * directories, top-level: Top-level directories. (line 6) * discards qualifiers warning: Const. (line 30) -* 'dist' and 'distcheck' targets for 'make': Build distribution. - (line 6) +* dist and distcheck targets for make: Build distribution. (line 6) * distribution tarball, making: Build distribution. (line 6) * distro, building for: Distro builds. (line 6) -* dvipdfm-x: Configure options for 'texk/dvipdfm-x'. +* dvipdfm-x: Configure options for texk/dvipdfm-x. (line 6) -* dvipdfmx: Configure options for 'texk/dvipdfm-x'. +* dvipdfmx: Configure options for texk/dvipdfm-x. (line 6) -* dvisvgm: Configure options for 'texk/dvisvgm'. +* dvisvgm: Configure options for texk/dvisvgm. (line 6) * engine, building one: Build one engine. (line 6) -* environment variables, for 'configure': Configure options. (line 16) -* exec_prefix: '--enable-multiplatform'. +* environment variables, for configure: Configure options. (line 16) +* exec_prefix: --enable-multiplatform. (line 6) * extending TeX Live: Extending TeX Live. (line 6) -* 'extern' functions: Declarations and definitions. +* extern functions: Declarations and definitions. (line 41) * failure to build: Build problems. (line 6) * flags, macros for library and header: Macros for library and header flags. (line 6) -* 'fontconfig' library, required by 'xetex': Prerequisites. (line 31) +* fontconfig library, required by xetex: Prerequisites. (line 31) * FreeType: Prerequisites. (line 11) -* 'freetype' cross compiling: Cross problems. (line 13) -* freetype library: 'freetype' library. (line 6) -* freetype-config: 'freetype' library. (line 13) +* freetype cross compiling: Cross problems. (line 13) +* freetype library: freetype library. (line 6) +* freetype-config: freetype library. (line 13) * freetype-config <1>: Variables for configure. (line 24) * FT2_CONFIG: Variables for configure. @@ -5323,14 +5586,14 @@ Index * general setup macros: General setup macros. (line 6) * generic library module, adding: Adding a new generic library module. (line 6) -* Ghostscript location for Xdvik: Configure options for 'texk/xdvik'. +* Ghostscript location for Xdvik: Configure options for texk/xdvik. (line 6) * git-svn: Transfer from Subversion to Github. (line 6) -* global 'configure' options: Global configure options. +* global configure options: Global configure options. (line 6) -* 'gmake', required: Prerequisites. (line 11) -* GNU 'make', required: Prerequisites. (line 11) +* gmake, required: Prerequisites. (line 11) +* GNU make, required: Prerequisites. (line 11) * GNU tools, needed for building: Build system tools. (line 6) * GNU/Linux distro: Distro builds. (line 6) * Gnulib, used for common files: Top-level directories. @@ -5343,23 +5606,23 @@ Index * ICU_CONFIG: Variables for configure. (line 22) * infrastructure, tools needed for: Build system tools. (line 6) -* 'inst/' top-level directory: Top-level directories. +* inst/ top-level directory: Top-level directories. (line 39) * install-tl, TeX Live installer: Installing. (line 8) * installation directories: Installation directories. (line 6) * installing: Installing. (line 6) -* interprocess communication: Configure options for 'texk/web2c'. +* interprocess communication: Configure options for texk/web2c. (line 31) * introduction: Introduction. (line 6) -* iteration through sources, by 'configure' and 'make': Build iteration. +* iteration through sources, by configure and make: Build iteration. (line 6) -* kpathsea library: 'kpathsea' library. (line 6) -* kpathsea.ac: 'kpathsea' library. (line 18) -* kpse-libpng-flags.m4: 'png' library. (line 46) +* kpathsea library: kpathsea library. (line 6) +* kpathsea.ac: kpathsea library. (line 18) +* kpse-libpng-flags.m4: png library. (line 46) * kpse-pkgs.m4: Overview of build system. (line 30) -* kpse-zlib-flags.m4: 'zlib' library. (line 6) +* kpse-zlib-flags.m4: zlib library. (line 6) * kpsewhich: Variables for configure. (line 30) * KPSEWHICH: Variables for configure. @@ -5389,7 +5652,7 @@ Index * KPSE_LARGEFILE: Macros for libraries. (line 8) * KPSE_LIBPNG_FLAGS: Macros for library and header flags. (line 10) -* KPSE_LIBPNG_FLAGS <1>: 'png' library. (line 46) +* KPSE_LIBPNG_FLAGS <1>: png library. (line 46) * kpse_libs_pkgs: Adding a new generic library module. (line 6) * KPSE_LIB_FLAGS: Macros for library and header flags. @@ -5405,10 +5668,10 @@ Index (line 6) * kpse_texlibs_pkgs: Adding a new TeX-specific library module. (line 11) -* KPSE_TRY_LIB: 'png' library. (line 18) +* KPSE_TRY_LIB: png library. (line 18) * KPSE_TRY_LIB <1>: Adding a new generic library module. (line 20) -* KPSE_TRY_LIBXX: 'png' library. (line 31) +* KPSE_TRY_LIBXX: png library. (line 31) * KPSE_TRY_LIBXX <1>: Adding a new generic library module. (line 20) * kpse_utils_pkgs: Adding a new program module. @@ -5418,44 +5681,42 @@ Index (line 11) * KPSE_WITH_TEXLIB: Adding a new TeX-specific library module. (line 14) -* large file support: '--disable-largefile'. - (line 6) +* large file support: --disable-largefile. (line 6) * LATEX: Variables for configure. (line 40) * layout of sources: Layout and infrastructure. (line 6) -* LFS (large file support): '--disable-largefile'. - (line 6) -* libexpat, dependency of 'libfontconfig': Configure options for 'texk/web2c'. +* LFS (large file support): --disable-largefile. (line 6) +* libexpat, dependency of libfontconfig: Configure options for texk/web2c. (line 50) -* libfontconfig, hack for avoiding linking dependencies: Configure options for 'texk/web2c'. +* libfontconfig, hack for avoiding linking dependencies: Configure options for texk/web2c. (line 50) * libfreetype: Variables for configure. (line 24) -* 'libfreetype', and 'const': Const. (line 21) -* libpng library: 'png' library. (line 6) +* libfreetype, and const: Const. (line 21) +* libpng library: png library. (line 6) * library module, generic, adding: Adding a new generic library module. (line 6) * library module, TeX-specific, adding: Adding a new TeX-specific library module. (line 6) * library modules: Library modules. (line 6) -* library-specific 'configure' options: Library-specific configure options. +* library-specific configure options: Library-specific configure options. (line 6) -* 'libsigsegv', required by 'xindy': Prerequisites. (line 35) +* libsigsegv, required by xindy: Prerequisites. (line 35) * libstc++, statically linking: Macros for compilers. (line 29) * Libtool: Overview of build system. (line 6) -* libtool, hack for avoiding excessive linking: Configure options for 'texk/web2c'. +* libtool, hack for avoiding excessive linking: Configure options for texk/web2c. (line 50) -* libXt: Configure options for 'texk/web2c'. +* libXt: Configure options for texk/web2c. (line 22) * linked scripts: Linked scripts. (line 6) * linking C++ libraries statically: Macros for compilers. (line 29) -* lisp.run, lisp.exe: Configure options for 'utils/xindy'. +* lisp.run, lisp.exe: Configure options for utils/xindy. (line 14) -* LittleEndian architectures: Configure options for 'texk/web2c'. +* LittleEndian architectures: Configure options for texk/web2c. (line 27) -* 'm4/' top-level directory: Top-level directories. +* m4/ top-level directory: Top-level directories. (line 14) * macros, for compilers: Macros for compilers. (line 6) * macros, for libraries: Macros for libraries. (line 6) @@ -5467,67 +5728,64 @@ Index * MAKE: Variables for configure. (line 33) * make -t: Build system tools. (line 43) -* 'make' rules, verbose vs. silent: '--enable-silent-rules'. +* make rules, verbose vs. silent: --enable-silent-rules. (line 6) -* mf-nowin: Configure options for 'texk/web2c'. +* mf-nowin: Configure options for texk/web2c. (line 34) -* 'mingw32': Cross configuring. (line 27) +* mingw32: Cross configuring. (line 27) * MINGW32, Automake conditional: Macros for Windows. (line 20) -* mktex.ac: 'kpathsea' library. (line 18) -* mktextfm: 'kpathsea' library. (line 18) +* mktex.ac: kpathsea library. (line 18) +* mktextfm: kpathsea library. (line 18) * modules, for libraries: Library modules. (line 6) * modules, for programs: Program modules. (line 6) -* motif: Configure options for 'texk/xdvik'. +* motif: Configure options for texk/xdvik. (line 9) * native cross compilation: Cross compilation. (line 10) * OBJCXX=OBJC-COMPILER: Build one package. (line 78) * one engine, building: Build one engine. (line 6) * one package, building: Build one package. (line 6) -* OpenGL, required for Asymptote: 'asymptote'. (line 6) +* OpenGL, required for Asymptote: asymptote. (line 6) * operating system distribution, building for: Distro builds. (line 6) * otangle: Cross problems. (line 26) * overall build process: Building. (line 6) * parallel build: Build in parallel. (line 6) * paths, for installation: Installation directories. (line 6) -* PDF files, size of: '--disable-largefile'. - (line 11) +* PDF files, size of: --disable-largefile. (line 11) * PDFLATEX: Variables for configure. (line 41) * PERL: Variables for configure. (line 39) -* 'perl', required by 'web2c', etc.: Prerequisites. (line 23) +* perl, required by web2c, etc.: Prerequisites. (line 23) * PKG_CONFIG: Variables for configure. (line 23) * plain.tex, not in source tree: Installing. (line 8) -* png library: 'png' library. (line 6) -* poppler: Configure options for system 'poppler'. +* png library: png library. (line 6) +* poppler: Configure options for system poppler. (line 6) -* PostScript files, size of: '--disable-largefile'. - (line 11) +* PostScript files, size of: --disable-largefile. (line 11) * Preining, Norbert: Distro builds. (line 54) -* preloaded binaries: Configure options for 'texk/web2c'. +* preloaded binaries: Configure options for texk/web2c. (line 45) * prerequisites for building: Prerequisites. (line 6) * problems with build: Build problems. (line 6) * program module, adding: Adding a new program module. (line 6) * program modules: Program modules. (line 6) -* program-specific 'configure' options: Program-specific configure options. +* program-specific configure options: Program-specific configure options. (line 6) -* proxy build system: 'png' library. (line 36) +* proxy build system: png library. (line 36) * reautoconf: Build system tools. (line 28) * requirements for building: Prerequisites. (line 6) * runscript.exe: Macros for Windows. (line 25) * scripts, linked and not maintained: Linked scripts. (line 6) -* scrolling, smooth: Configure options for 'texk/xdvik'. +* scrolling, smooth: Configure options for texk/xdvik. (line 13) * SED: Variables for configure. (line 34) * setup macros, general: General setup macros. (line 6) * shared libraries, using vs. avoiding: Distro builds. (line 11) -* size of PDF and PS files: '--disable-largefile'. - (line 11) +* size of PDF and PS files: --disable-largefile. (line 11) * size of source tree: Build one package. (line 53) * source code declarations: Declarations and definitions. (line 6) @@ -5535,8 +5793,8 @@ Index * source tree: Layout and infrastructure. (line 6) * squeeze: Cross problems. (line 13) -* squeeze/configure.ac: 'xdvik' package. (line 14) -* 'static' functions: Declarations and definitions. +* squeeze/configure.ac: xdvik package. (line 14) +* static functions: Declarations and definitions. (line 35) * static linking for C++: Macros for compilers. (line 29) * stpcpy: Declarations and definitions. @@ -5544,12 +5802,12 @@ Index * Subversion repository: Build system tools. (line 38) * support files, separate from build: Installing. (line 8) * symlinks, used for scripts: Linked scripts. (line 6) -* synctex: Configure options for 'texk/web2c'. +* synctex: Configure options for texk/web2c. (line 59) -* synctex <1>: Configure options for 'texk/web2c'. +* synctex <1>: Configure options for texk/web2c. (line 64) * system distribution, building for: Distro builds. (line 6) -* t1utils package: 't1utils' package. (line 6) +* t1utils package: t1utils package. (line 6) * tangle: Cross problems. (line 26) * tests, running: Overview of build system. (line 6) @@ -5570,12 +5828,12 @@ Index * use-commit-times, Subversion: Build system tools. (line 38) * variable declarations, in source code: Declarations and definitions. (line 52) -* variables for 'configure': Variables for configure. +* variables for configure: Variables for configure. (line 6) * warning, discards qualifiers: Const. (line 30) * WARNING_C[XX]FLAGS: Macros for compilers. (line 9) * web2c program: Cross problems. (line 13) -* web2c.ac: Configure options for 'texk/web2c'. +* web2c.ac: Configure options for texk/web2c. (line 37) * wget: Linked scripts. (line 23) * WIN32, Automake conditional: Macros for Windows. (line 16) @@ -5584,405 +5842,440 @@ Index * Windows, macros for: Macros for Windows. (line 6) * withenable.ac, for new modules: Adding a new program module. (line 14) -* 'Work/' top-level directory: Top-level directories. +* Work/ top-level directory: Top-level directories. (line 39) * wrapper binary for scripts on Windows: Linked scripts. (line 6) -* wrapper build system: 'freetype' library. (line 6) -* X toolkit: Configure options for 'texk/web2c'. +* wrapper build system: freetype library. (line 6) +* X toolkit: Configure options for texk/web2c. (line 22) * X11 development, required by X clients: Prerequisites. (line 27) -* X11 headers, and 'const': Const. (line 21) -* xasy: 'asymptote'. (line 6) -* xaw: Configure options for 'texk/xdvik'. +* X11 headers, and const: Const. (line 21) +* xasy: asymptote. (line 6) +* xaw: Configure options for texk/xdvik. (line 9) -* xdvik: 'xdvik' package. (line 6) -* xdvik <1>: Configure options for 'texk/xdvik'. +* xdvik: xdvik package. (line 6) +* xdvik <1>: Configure options for texk/xdvik. (line 6) -* xdvipdfmx: Configure options for 'texk/dvipdfm-x'. +* xdvipdfmx: Configure options for texk/dvipdfm-x. (line 6) * xindy: Linked scripts. (line 23) -* xindy <1>: 'xindy' package. (line 6) -* xindy <2>: Configure options for 'utils/xindy'. +* xindy <1>: xindy package. (line 6) +* xindy <2>: Configure options for utils/xindy. (line 6) -* 'xindy' cross compiling requires 'clisp': Cross problems. (line 33) -* XInput: Configure options for 'texk/xdvik'. +* xindy cross compiling requires clisp: Cross problems. (line 33) +* XInput: Configure options for texk/xdvik. (line 13) -* Xlib: Configure options for 'texk/web2c'. +* Xlib: Configure options for texk/web2c. (line 22) -* xpdf as library: Configure options for system 'poppler'. +* xpdf as library: Configure options for system poppler. (line 6) * xz: Linked scripts. (line 23) -* zlib library: 'zlib' library. (line 6) +* zlib library: zlib library. (line 6) Tag Table: Node: Top1208 Node: Introduction2118 -Node: Overview of build system3946 -Node: Prerequisites5997 -Node: Building8606 -Node: Build iteration9992 -Node: Build problems11033 -Node: Build in parallel11487 -Node: Build distribution12091 -Node: Build one package12739 -Node: Build one engine16420 -Node: Cross compilation17469 -Node: Cross configuring18749 -Node: Cross problems20426 -Node: Installing22088 -Node: Installation directories23108 -Node: Linked scripts24926 -Node: Distro builds26417 -Node: Layout and infrastructure28793 -Node: Build system tools29624 -Node: Top-level directories31841 -Node: Autoconf macros34077 -Node: General setup macros34839 -Node: Macros for programs35714 -Node: Macros for compilers36515 -Node: Macros for libraries37923 -Node: Macros for library and header flags38349 -Node: Macros for Windows40260 -Node: Library modules41847 -Node: 'png' library42344 -Node: 'zlib' library44696 -Node: 'freetype' library45217 -Node: 'kpathsea' library45919 -Node: Program modules47302 -Node: 't1utils' package47738 -Node: 'xindy' package48287 -Node: 'xdvik' package49407 -Node: 'asymptote'50472 -Node: Extending TeX Live50972 -Node: Adding a new program module51755 -Node: Adding a new generic library module55094 -Node: Adding a new TeX-specific library module57323 -Node: Configure options58021 -Node: Global configure options59402 -Node: '--disable-native-texlive-build'59970 -Node: '--prefix' '--bindir' ...60938 -Node: '--disable-largefile'61486 -Node: '--disable-missing'62195 -Node: '--enable-compiler-warnings='LEVEL62602 -Node: '--enable-cxx-runtime-hack'63264 -Node: '--enable-maintainer-mode'63690 -Node: '--enable-multiplatform'64225 -Node: '--enable-shared'64804 -Node: '--enable-silent-rules'65181 -Node: '--without-ln-s'65639 -Node: '--without-x'65992 -Node: Program-specific configure options66184 -Node: '--enable-PROG' '--disable-PROG'66847 -Node: '--disable-all-pkgs'67126 -Node: Configure options for 'texk/web2c'67917 -Node: Configure options for 'texk/bibtex-x'70461 -Node: Configure options for 'texk/dvipdfm-x'71010 -Node: Configure options for 'texk/dvisvgm'71792 -Node: Configure options for 'texk/texlive'72679 -Node: Configure options for 'texk/xdvik'73106 -Node: Configure options for 'utils/xindy'73733 -Node: Library-specific configure options74627 -Node: Configure options for 'kpathsea'75633 -Node: Configure options for system 'poppler'76388 -Node: Variables for configure77158 -Node: Coding conventions78584 -Node: Declarations and definitions79299 -Node: Const81473 -Node: Continuous integration83337 -Node: Transfer from Subversion to Github84001 -Node: Automatic update of the Git mirror86163 -Node: CI testing on Travis-CI86745 -Node: Releases on Github87454 -Node: install-tl87894 -Node: install-tl NAME88263 -Node: install-tl SYNOPSIS88421 -Node: install-tl DESCRIPTION88679 -Node: install-tl REFERENCES89746 -Node: install-tl OPTIONS90272 -Ref: install-tl *-gui* [[=]_module_]90613 -Ref: install-tl 'text'90823 -Ref: install-tl 'wizard'90946 -Ref: install-tl 'perltk'91100 -Ref: install-tl *-no-gui*91531 -Ref: install-tl *-lang* _llcode_91612 -Ref: install-tl *-repository* _url|path_92299 -Ref: install-tl *-select-repository*94179 -Ref: install-tl *-all-options*94615 -Ref: install-tl *-custom-bin* _path_94870 -Ref: install-tl *-debug-translation*95702 -Ref: install-tl *-force-platform* _platform_95921 -Ref: install-tl *-help*, *--help*, *-?*96165 -Ref: install-tl *-in-place*96572 -Ref: install-tl *-init-from-profile* _profile_file_97117 -Ref: install-tl *-logfile* _file_97337 -Ref: install-tl *-no-cls*97688 -Ref: install-tl *-non-admin*97822 -Ref: install-tl *-persistent-downloads*97927 -Ref: install-tl *-no-persistent-downloads*97955 -Ref: install-tl *-no-verify-downloads*98573 -Ref: install-tl *-portable*98934 -Ref: install-tl *-print-platform*99073 -Ref: install-tl *-profile* _profile_file_99271 -Ref: install-tl *-q*99451 -Ref: install-tl *-scheme* _scheme_99513 -Ref: install-tl *-v*99987 -Ref: install-tl *-version*, *--version*100142 -Node: install-tl PROFILES100273 -Ref: install-tl 'instopt_adjustpath' (default 0 on Unix, 1 on Windows)102923 -Ref: install-tl 'instopt_adjustrepo' (default 1)102999 -Ref: install-tl 'instopt_letter' (default 0)103136 -Ref: install-tl 'instopt_portable' (default 0)103227 -Ref: install-tl 'instopt_write18_restricted' (default 1)103323 -Node: install-tl ENVIRONMENT VARIABLES104642 -Ref: install-tl 'TEXLIVE_INSTALL_ENV_NOCHECK'105033 -Ref: install-tl 'TEXLIVE_INSTALL_NO_CONTEXT_CACHE'105235 -Ref: install-tl 'TEXLIVE_INSTALL_NO_WELCOME'105345 -Ref: install-tl 'TEXLIVE_INSTALL_PREFIX'105466 -Ref: install-tl 'TEXLIVE_INSTALL_TEXDIR'105492 -Ref: install-tl 'TEXLIVE_INSTALL_TEXMFCONFIG'105523 -Ref: install-tl 'TEXLIVE_INSTALL_TEXMFVAR'105551 -Ref: install-tl 'TEXLIVE_INSTALL_TEXMFHOME'105580 -Ref: install-tl 'TEXLIVE_INSTALL_TEXMFLOCAL'105610 -Ref: install-tl 'TEXLIVE_INSTALL_TEXMFSYSCONFIG'105644 -Ref: install-tl 'TEXLIVE_INSTALL_TEXMFSYSVAR'105675 -Ref: install-tl 'NOPERLDOC'106046 -Node: install-tl AUTHORS AND COPYRIGHT106110 -Node: tlmgr106526 -Node: tlmgr NAME106979 -Node: tlmgr SYNOPSIS107111 -Node: tlmgr DESCRIPTION107301 -Node: tlmgr EXAMPLES108397 -Ref: tlmgr 'tlmgr option repository ctan'108648 -Ref: tlmgr 'tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet'108720 -Ref: tlmgr 'tlmgr update --list'109172 -Ref: tlmgr 'tlmgr update --all'109265 -Ref: tlmgr 'tlmgr info' _what_109422 -Node: tlmgr OPTIONS109684 -Ref: tlmgr *--repository* _url|path_110204 -Ref: tlmgr *--gui* [_action_]110929 -Ref: tlmgr *--gui-lang* _llcode_111336 -Ref: tlmgr *--debug-translation*112019 -Ref: tlmgr *--machine-readable*112222 -Ref: tlmgr *--no-execute-actions*112490 -Ref: tlmgr *--package-logfile* _file_112683 -Ref: tlmgr *--pause*112937 -Ref: tlmgr *--persistent-downloads*113092 -Ref: tlmgr *--no-persistent-downloads*113120 -Ref: tlmgr *--pin-file*113614 -Ref: tlmgr *--usermode*113832 -Ref: tlmgr *--usertree* _dir_113952 -Ref: tlmgr *--verify-repo=[none|main|all]*114078 -Node: tlmgr ACTIONS114977 -Node: tlmgr help115829 -Node: tlmgr version116305 -Node: tlmgr backup116568 -Ref: tlmgr *backup [_option_...] --all*116739 -Ref: tlmgr *backup [_option_...] _pkg_...*116772 -Ref: tlmgr *--backupdir* _directory_117627 -Ref: tlmgr *--all*117844 -Ref: tlmgr *--clean*[=_N_]118096 -Ref: tlmgr *--dry-run*118423 -Node: tlmgr candidates _pkg_118553 -Node: tlmgr check [_option_...] [files|depends|executes|runfiles|all]118899 -Ref: tlmgr *files*119272 -Ref: tlmgr *depends*119407 -Ref: tlmgr *executes*119749 -Ref: tlmgr *runfiles*119867 -Ref: tlmgr *--use-svn*119988 -Node: tlmgr conf120105 -Ref: tlmgr *conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]]*120384 -Ref: tlmgr *conf auxtrees [--conffile _file_] [show|add|delete] [_value_]*120448 -Node: tlmgr dump-tlpdb [_option_...] [--json]122793 -Ref: tlmgr *--local*123226 -Ref: tlmgr *--remote*123265 -Ref: tlmgr *--json*123303 -Node: tlmgr generate123874 -Ref: tlmgr *generate [_option_...] language*124070 -Ref: tlmgr *generate [_option_...] language.dat*124109 -Ref: tlmgr *generate [_option_...] language.def*124148 -Ref: tlmgr *generate [_option_...] language.dat.lua*124191 -Ref: tlmgr *--dest* _output_file_126517 -Ref: tlmgr *--localcfg* _local_conf_file_127093 -Ref: tlmgr *--rebuild-sys*127216 -Node: tlmgr gui128031 -Node: tlmgr info128209 -Ref: tlmgr *info [_option_...] _pkg_...*128371 -Ref: tlmgr *info [_option_...] collections*128405 -Ref: tlmgr *info [_option_...] schemes*128435 -Ref: tlmgr *--list*129965 -Ref: tlmgr *--only-installed*130279 -Ref: tlmgr *--data 'item1,item2,...'*130478 -Ref: tlmgr *--json* 1131059 -Node: tlmgr init-usertree131442 -Node: tlmgr install [_option_...] _pkg_...131823 -Ref: tlmgr *--dry-run* 1132333 -Ref: tlmgr *--file*132450 -Ref: tlmgr *--force*132672 -Ref: tlmgr *--no-depends*132892 -Ref: tlmgr *--no-depends-at-all*133051 -Ref: tlmgr *--reinstall*133451 -Ref: tlmgr *--with-doc*133829 -Ref: tlmgr *--with-src*133842 -Node: tlmgr key134364 -Ref: tlmgr *key list*134522 -Ref: tlmgr *key add _file_*134540 -Ref: tlmgr *key remove _keyid_*134562 -Node: tlmgr list135157 -Node: tlmgr option135319 -Ref: tlmgr *option [--json] [show]*135474 -Ref: tlmgr *option [--json] showall*135500 -Ref: tlmgr *option _key_ [_value_]*135526 -Node: tlmgr paper139923 -Ref: tlmgr *paper [a4|letter]*140072 -Ref: tlmgr *[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|--list]*140146 -Ref: tlmgr *paper --json*140161 -Node: tlmgr path141376 -Ref: tlmgr *path [--w32mode=user|admin] add*141537 -Ref: tlmgr *path [--w32mode=user|admin] remove*141574 -Node: tlmgr pinning142914 -Ref: tlmgr 'pinning show'143155 -Ref: tlmgr 'pinning add' _repo_ _pkgglob_...143228 -Ref: tlmgr 'pinning remove' _repo_ _pkgglob_...143347 -Ref: tlmgr 'pinning remove _repo_ --all'143500 -Node: tlmgr platform143554 -Ref: tlmgr *platform list|add|remove _platform_...*143740 -Ref: tlmgr *platform set _platform_*143767 -Ref: tlmgr *platform set auto*143788 -Ref: tlmgr *--dry-run* 2144674 -Node: tlmgr postaction144793 -Ref: tlmgr *postaction [_option_...] install [shortcut|fileassoc|script] [_pkg_...]*145023 -Ref: tlmgr *postaction [_option_...] remove [shortcut|fileassoc|script] [_pkg_...]*145097 -Ref: tlmgr *--w32mode=[user|admin]*145412 -Ref: tlmgr *--fileassocmode=[1|2]*145828 -Ref: tlmgr *--all* 1146113 -Node: tlmgr print-platform146168 -Node: tlmgr print-platform-info146499 -Node: tlmgr remove [_option_...] _pkg_...146799 -Ref: tlmgr *--all* 2147283 -Ref: tlmgr *--backup*147393 -Ref: tlmgr *--backupdir* _directory_ 1147419 -Ref: tlmgr *--no-depends* 1147824 -Ref: tlmgr *--no-depends-at-all* 1147886 -Ref: tlmgr *--force* 1147989 -Ref: tlmgr *--dry-run* 3148462 -Node: tlmgr repository148569 -Ref: tlmgr *repository list*148757 -Ref: tlmgr *repository list _path|tag_*148787 -Ref: tlmgr *repository add _path_ [_tag_]*148820 -Ref: tlmgr *repository remove _path|tag_*148852 -Ref: tlmgr *repository set _path_[#_tag_] [_path_[#_tag_] ...]*148906 -Node: tlmgr restore149959 -Ref: tlmgr *restore [_option_...] _pkg_ [_rev_]*150138 -Ref: tlmgr *restore [_option_...] --all*150168 -Ref: tlmgr *--all* 3150868 -Ref: tlmgr *--backupdir* _directory_ 2151082 -Ref: tlmgr *--dry-run* 4151263 -Ref: tlmgr *--force* 2151395 -Ref: tlmgr *--json* 2151441 -Node: tlmgr search151768 -Ref: tlmgr *search [_option_...] _what_*151932 -Ref: tlmgr *search [_option_...] --file _what_*151969 -Ref: tlmgr *search [_option_...] --all _what_*152005 -Ref: tlmgr *--file* 1152225 -Ref: tlmgr *--all* 4152287 -Ref: tlmgr *--global*152376 -Ref: tlmgr *--word*152503 -Node: tlmgr shell152818 -Ref: tlmgr protocol153553 -Ref: tlmgr help 1153617 -Ref: tlmgr version 1153670 -Ref: tlmgr quit, end, bye, byebye, EOF153738 -Ref: tlmgr restart153759 -Ref: tlmgr load [local|remote]153882 -Ref: tlmgr save153952 -Ref: tlmgr get [_var_] =item set [_var_ [_val_]]154075 -Node: tlmgr show154676 -Node: tlmgr uninstall154843 -Node: tlmgr update [_option_...] [_pkg_...]155073 -Ref: tlmgr *--all* 5155444 -Ref: tlmgr *--self*157185 -Ref: tlmgr *--dry-run* 5157949 -Ref: tlmgr *--list* [_pkg_]158126 -Ref: tlmgr *--exclude* _pkg_158815 -Ref: tlmgr *--no-auto-remove* [_pkg_...]159615 -Ref: tlmgr *--no-auto-install* [_pkg_...]160066 -Ref: tlmgr *--reinstall-forcibly-removed*160722 -Ref: tlmgr *--backup* 1161257 -Ref: tlmgr *--backupdir* _directory_ 3161283 -Ref: tlmgr *--no-depends* 2162449 -Ref: tlmgr *--no-depends-at-all* 2162652 -Ref: tlmgr *--force* 3162755 -Node: tlmgr CONFIGURATION FILE FOR TLMGR163570 -Ref: tlmgr 'auto-remove', value 0 or 1 (default 1), same as command-line option.164583 -Ref: tlmgr 'gui-expertmode', value 0 or 1 (default 1). This switches between the full GUI and a simplified GUI with only the most common settings.164720 -Ref: tlmgr 'gui-lang' _llcode_, with a language code value as with the command-line option.164802 -Ref: tlmgr 'no-checksums', value 0 or 1 (default 0, see below).164856 -Ref: tlmgr 'persistent-downloads', value 0 or 1 (default 1), same as command-line option.164936 -Ref: tlmgr 'require-verification', value 0 or 1 (default 0), same as command-line option.165016 -Ref: tlmgr 'update-exclude', value: comma-separated list of packages (no space allowed). Same as the command line option '--exclude' for the action 'update'.165164 -Ref: tlmgr 'verify-downloads', value 0 or 1 (default 1), same as command-line option.165240 -Ref: tlmgr 'allowed-actions' _action1_ [,_action_,...] The value is a comma-separated list of 'tlmgr' actions which are allowed to be executed when 'tlmgr' is invoked in system mode (that is, without '--usermode').165509 -Node: tlmgr CRYPTOGRAPHIC VERIFICATION166595 -Node: tlmgr Configuration of GnuPG invocation168744 -Node: tlmgr USER MODE169382 -Node: tlmgr User mode install172228 -Node: tlmgr User mode backup, restore, remove, update173372 -Node: tlmgr User mode generate, option, paper173814 -Node: tlmgr MULTIPLE REPOSITORIES174190 -Node: tlmgr Pinning175919 -Node: tlmgr GUI FOR TLMGR177894 -Node: tlmgr Main display179234 -Node: tlmgr Display configuration area179486 -Ref: tlmgr Status179847 -Ref: tlmgr Category180011 -Ref: tlmgr Match180197 -Ref: tlmgr Selection180378 -Ref: tlmgr Display configuration buttons180582 -Node: tlmgr Package list area180765 -Ref: tlmgr a checkbox181349 -Ref: tlmgr package name181485 -Ref: tlmgr local revision (and version)181584 -Ref: tlmgr remote revision (and version)181959 -Ref: tlmgr short description182256 -Node: tlmgr Main display action buttons182301 -Ref: tlmgr Update all installed182567 -Ref: tlmgr Update182939 -Ref: tlmgr Install182989 -Ref: tlmgr Remove183175 -Ref: tlmgr Backup183353 -Node: tlmgr Menu bar183510 -Ref: tlmgr 'tlmgr' menu183733 -Ref: tlmgr 'Options menu'184041 -Ref: tlmgr 'Actions menu'185124 -Ref: tlmgr 'Help menu'185552 -Node: tlmgr GUI options185685 -Ref: tlmgr '-background' _color_185931 -Ref: tlmgr '-font "' _fontname_ _fontsize_ '"'185996 -Ref: tlmgr '-foreground' _color_186154 -Ref: tlmgr '-geometry' _geomspec_186206 -Ref: tlmgr '-xrm' _xresource_186398 -Node: tlmgr MACHINE-READABLE OUTPUT186666 -Node: tlmgr Machine-readable 'update' and 'install' output187482 -Ref: tlmgr 'location-url' _location_188764 -Ref: tlmgr 'total-bytes' _count_188980 -Ref: tlmgr _pkgname_189390 -Ref: tlmgr _status_189600 -Ref: tlmgr 'd'189678 -Ref: tlmgr 'f'189738 -Ref: tlmgr 'u'189917 -Ref: tlmgr 'r'189963 -Ref: tlmgr 'a'190086 -Ref: tlmgr 'i'190264 -Ref: tlmgr 'I'190383 -Ref: tlmgr _localrev_190485 -Ref: tlmgr _serverrev_190592 -Ref: tlmgr _size_190704 -Ref: tlmgr _runtime_190873 -Ref: tlmgr _esttot_190943 -Node: tlmgr Machine-readable 'option' output190976 -Node: tlmgr AUTHORS AND COPYRIGHT191494 -Node: Index191893 +Node: Overview of build system3943 +Node: Prerequisites5994 +Node: Building8603 +Node: Build iteration9989 +Node: Build problems11030 +Node: Build in parallel11484 +Node: Build distribution12088 +Node: Build one package12736 +Node: Build one engine16415 +Node: Cross compilation17464 +Node: Cross configuring18744 +Node: Cross problems20421 +Node: Installing22083 +Node: Installation directories23103 +Node: Linked scripts24921 +Node: Distro builds26412 +Node: Layout and infrastructure28788 +Node: Build system tools29619 +Node: Top-level directories31836 +Node: Autoconf macros34072 +Node: General setup macros34834 +Node: Macros for programs35709 +Node: Macros for compilers36510 +Node: Macros for libraries37918 +Node: Macros for library and header flags38344 +Node: Macros for Windows40255 +Node: Library modules41842 +Node: png library42331 +Node: zlib library44679 +Node: freetype library45194 +Node: kpathsea library45890 +Node: Program modules47269 +Node: t1utils package47697 +Node: xindy package48242 +Node: xdvik package49356 +Node: asymptote50415 +Node: Extending TeX Live50911 +Node: Adding a new program module51694 +Node: Adding a new generic library module55033 +Node: Adding a new TeX-specific library module57262 +Node: Configure options57960 +Node: Global configure options59341 +Node: --disable-native-texlive-build59883 +Node: --prefix --bindir ...60845 +Node: --disable-largefile61385 +Node: --disable-missing62086 +Node: --enable-compiler-warnings=LEVEL62487 +Node: --enable-cxx-runtime-hack63143 +Node: --enable-maintainer-mode63563 +Node: --enable-multiplatform64092 +Node: --enable-shared64665 +Node: --enable-silent-rules65036 +Node: --without-ln-s65488 +Node: --without-x65835 +Node: Program-specific configure options66023 +Node: --enable-PROG --disable-PROG66666 +Node: --disable-all-pkgs66939 +Node: Configure options for texk/web2c67722 +Node: Configure options for texk/bibtex-x70260 +Node: Configure options for texk/dvipdfm-x70803 +Node: Configure options for texk/dvisvgm71579 +Node: Configure options for texk/texlive72460 +Node: Configure options for texk/xdvik72881 +Node: Configure options for utils/xindy73502 +Node: Library-specific configure options74392 +Node: Configure options for kpathsea75394 +Node: Configure options for system poppler76143 +Node: Variables for configure76907 +Node: Coding conventions78333 +Node: Declarations and definitions79048 +Node: Const81222 +Node: Continuous integration83086 +Node: Transfer from Subversion to Github83750 +Node: Automatic update of the Git mirror85912 +Node: CI testing on Travis-CI86494 +Node: Releases on Github87203 +Node: install-tl87643 +Node: install-tl NAME88012 +Node: install-tl SYNOPSIS88170 +Node: install-tl DESCRIPTION88428 +Node: install-tl REFERENCES89488 +Node: install-tl OPTIONS90012 +Ref: install-tl *-gui* [[=]_module_]90353 +Ref: install-tl text90561 +Ref: install-tl tcl90681 +Ref: install-tl wizard91023 +Ref: install-tl expert91156 +Ref: install-tl perltk91278 +Ref: install-tl *-no-gui*91824 +Ref: install-tl *-lang* _llcode_91914 +Ref: install-tl *-repository* _url|path_92670 +Ref: install-tl *-select-repository*93558 +Ref: install-tl *-all-options*93994 +Ref: install-tl *-custom-bin* _path_94249 +Ref: install-tl *-debug-translation*95083 +Ref: install-tl *-force-platform* _platform_95302 +Ref: install-tl *-help*, *--help*, *-?*95546 +Ref: install-tl *-in-place*95959 +Ref: install-tl *-init-from-profile* _profile_file_96504 +Ref: install-tl *-logfile* _file_96773 +Ref: install-tl *-no-cls*97124 +Ref: install-tl *-no-persistent-downloads*97272 +Ref: install-tl *-persistent-downloads*97297 +Ref: install-tl *-no-verify-downloads*97915 +Ref: install-tl *-non-admin*98278 +Ref: install-tl *-portable*98371 +Ref: install-tl *-print-platform*98510 +Ref: install-tl *-profile* _profile_file_98708 +Ref: install-tl *-q*98929 +Ref: install-tl *-scheme* _scheme_98991 +Ref: install-tl *-v*99465 +Ref: install-tl *-version*, *--version*99620 +Node: install-tl PROFILES99754 +Ref: install-tl instopt_adjustpath (default 0 on Unix, 1 on Windows)102620 +Ref: install-tl instopt_adjustrepo (default 1)102696 +Ref: install-tl instopt_letter (default 0)102833 +Ref: install-tl instopt_portable (default 0)102924 +Ref: install-tl instopt_write18_restricted (default 1)103020 +Node: install-tl ENVIRONMENT VARIABLES104359 +Ref: install-tl TEXLIVE_DOWNLOADER104737 +Ref: install-tl TL_DOWNLOAD_PROGRAM104760 +Ref: install-tl TL_DOWNLOAD_ARGS104780 +Ref: install-tl TEXLIVE_INSTALL_ENV_NOCHECK104984 +Ref: install-tl TEXLIVE_INSTALL_NO_CONTEXT_CACHE105186 +Ref: install-tl TEXLIVE_INSTALL_NO_IMPORT105295 +Ref: install-tl TEXLIVE_INSTALL_NO_WELCOME105447 +Ref: install-tl TEXLIVE_INSTALL_PREFIX105569 +Ref: install-tl TEXLIVE_INSTALL_TEXDIR105595 +Ref: install-tl TEXLIVE_INSTALL_TEXMFCONFIG105626 +Ref: install-tl TEXLIVE_INSTALL_TEXMFVAR105654 +Ref: install-tl TEXLIVE_INSTALL_TEXMFHOME105683 +Ref: install-tl TEXLIVE_INSTALL_TEXMFLOCAL105713 +Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSCONFIG105747 +Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSVAR105778 +Ref: install-tl NOPERLDOC106149 +Node: install-tl AUTHORS AND COPYRIGHT106213 +Node: tlmgr106626 +Node: tlmgr NAME107111 +Node: tlmgr SYNOPSIS107243 +Node: tlmgr DESCRIPTION107433 +Node: tlmgr EXAMPLES108532 +Ref: tlmgr tlmgr option repository ctan108783 +Ref: tlmgr tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet108855 +Ref: tlmgr tlmgr update --list109460 +Ref: tlmgr tlmgr update --all109553 +Ref: tlmgr tlmgr info _what_109710 +Node: tlmgr OPTIONS109972 +Ref: tlmgr *--repository* _url|path_110492 +Ref: tlmgr /some/local/dir111678 +Ref: tlmgr file:/some/local/dir111707 +Ref: tlmgr ctan111780 +Ref: tlmgr http://mirror.ctan.org/systems/texlive/tlnet111833 +Ref: tlmgr http://server/path/to/tlnet112174 +Ref: tlmgr https://server/path/to/tlnet112555 +Ref: tlmgr ftp://server/path/to/tlnet113023 +Ref: tlmgr user@machine:/path/to/tlnet113155 +Ref: tlmgr scp://user@machine/path/to/tlnet113196 +Ref: tlmgr ssh://user@machine/path/to/tlnet113237 +Ref: tlmgr *--gui* [_action_]113630 +Ref: tlmgr *--gui-lang* _llcode_114443 +Ref: tlmgr *--debug-translation*115179 +Ref: tlmgr *--machine-readable*115382 +Ref: tlmgr *--no-execute-actions*115650 +Ref: tlmgr *--package-logfile* _file_115843 +Ref: tlmgr *--pause*116097 +Ref: tlmgr *--persistent-downloads*116252 +Ref: tlmgr *--no-persistent-downloads*116280 +Ref: tlmgr *--pin-file*116774 +Ref: tlmgr *--usermode*116992 +Ref: tlmgr *--usertree* _dir_117112 +Ref: tlmgr *--verify-repo=[none|main|all]*117238 +Node: tlmgr ACTIONS118137 +Node: tlmgr help118998 +Node: tlmgr version119475 +Node: tlmgr backup119738 +Ref: tlmgr *backup [_option_...] --all*119909 +Ref: tlmgr *backup [_option_...] _pkg_...*119942 +Ref: tlmgr *--backupdir* _directory_121008 +Ref: tlmgr *--all*121225 +Ref: tlmgr *--clean*[=_N_]121477 +Ref: tlmgr *--dry-run*121804 +Node: tlmgr candidates _pkg_121934 +Node: tlmgr check [_option_...] [depends|executes|files|runfiles|texmfdbs|all]122289 +Ref: tlmgr *depends*122803 +Ref: tlmgr *executes*123145 +Ref: tlmgr *files*123260 +Ref: tlmgr *runfiles*123396 +Ref: tlmgr *texmfdbs*123533 +Ref: tlmgr - all items in TEXMFDBS have the !! prefix.123763 +Ref: tlmgr - all items in TEXMFBDS have an ls-R file (if they exist at all).123839 +Ref: tlmgr - all items in TEXMF with !! are listed in TEXMFDBS.123904 +Ref: tlmgr - all items in TEXMF with an ls-R file are listed in TEXMFDBS.123979 +Ref: tlmgr *--use-svn*124004 +Node: tlmgr conf124145 +Ref: tlmgr *conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]]*124433 +Ref: tlmgr *conf auxtrees [--conffile _file_] [show|add|remove] [_value_]*124497 +Node: tlmgr dump-tlpdb [_option_...] [--json]126912 +Ref: tlmgr *--local*127345 +Ref: tlmgr *--remote*127384 +Ref: tlmgr *--json*127422 +Node: tlmgr generate127993 +Ref: tlmgr *generate [_option_...] language*128189 +Ref: tlmgr *generate [_option_...] language.dat*128228 +Ref: tlmgr *generate [_option_...] language.def*128267 +Ref: tlmgr *generate [_option_...] language.dat.lua*128310 +Ref: tlmgr *--dest* _output_file_130637 +Ref: tlmgr *--localcfg* _local_conf_file_131213 +Ref: tlmgr *--rebuild-sys*131336 +Node: tlmgr gui132151 +Node: tlmgr info132329 +Ref: tlmgr *info [_option_...] _pkg_...*132491 +Ref: tlmgr *info [_option_...] collections*132525 +Ref: tlmgr *info [_option_...] schemes*132555 +Ref: tlmgr *--list*134085 +Ref: tlmgr *--only-installed*134399 +Ref: tlmgr *--only-remote*134587 +Ref: tlmgr *--data item1,item2,...*134891 +Ref: tlmgr *--json* 1135472 +Node: tlmgr init-usertree135855 +Node: tlmgr install [_option_...] _pkg_...136236 +Ref: tlmgr *--dry-run* 1136744 +Ref: tlmgr *--file*136861 +Ref: tlmgr *--force*137083 +Ref: tlmgr *--no-depends*137303 +Ref: tlmgr *--no-depends-at-all*137462 +Ref: tlmgr *--reinstall*137862 +Ref: tlmgr *--with-doc*138240 +Ref: tlmgr *--with-src*138253 +Node: tlmgr key138981 +Ref: tlmgr *key list*139139 +Ref: tlmgr *key add _file_*139157 +Ref: tlmgr *key remove _keyid_*139179 +Node: tlmgr list139773 +Node: tlmgr option139935 +Ref: tlmgr *option [--json] [show]*140090 +Ref: tlmgr *option [--json] showall|help*140121 +Ref: tlmgr *option _key_ [_value_]*140147 +Node: tlmgr paper144725 +Ref: tlmgr *paper [a4|letter]*144874 +Ref: tlmgr *<[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|--list]*>144950 +Ref: tlmgr *paper --json*144965 +Node: tlmgr path146180 +Ref: tlmgr *path [--w32mode=user|admin] add*146341 +Ref: tlmgr *path [--w32mode=user|admin] remove*146378 +Node: tlmgr pinning147863 +Ref: tlmgr pinning show148104 +Ref: tlmgr pinning add _repo_ _pkgglob_...148177 +Ref: tlmgr pinning remove _repo_ _pkgglob_...148296 +Ref: tlmgr pinning remove _repo_ --all148449 +Node: tlmgr platform148503 +Ref: tlmgr *platform list|add|remove _platform_...*148689 +Ref: tlmgr *platform set _platform_*148716 +Ref: tlmgr *platform set auto*148737 +Ref: tlmgr *--dry-run* 2149614 +Node: tlmgr postaction149733 +Ref: tlmgr *postaction [_option_...] install [shortcut|fileassoc|script] [_pkg_...]*149963 +Ref: tlmgr *postaction [_option_...] remove [shortcut|fileassoc|script] [_pkg_...]*150037 +Ref: tlmgr *--w32mode=[user|admin]*150352 +Ref: tlmgr *--fileassocmode=[1|2]*150768 +Ref: tlmgr *--all* 1151053 +Node: tlmgr print-platform151108 +Node: tlmgr print-platform-info151439 +Node: tlmgr remove [_option_...] _pkg_...151739 +Ref: tlmgr *--all* 2152223 +Ref: tlmgr *--backup*152333 +Ref: tlmgr *--backupdir* _directory_ 1152359 +Ref: tlmgr *--no-depends* 1152764 +Ref: tlmgr *--no-depends-at-all* 1152826 +Ref: tlmgr *--force* 1152929 +Ref: tlmgr *--dry-run* 3153402 +Node: tlmgr repository153738 +Ref: tlmgr *repository list*153926 +Ref: tlmgr *repository list _path|url|tag_*153960 +Ref: tlmgr *repository add _path_ [_tag_]*153993 +Ref: tlmgr *repository remove _path|tag_*154025 +Ref: tlmgr *repository set _path_[#_tag_] [_path_[#_tag_] ...]*154079 +Ref: tlmgr *repository status*154100 +Ref: tlmgr The tag (which can be the same as the url);155327 +Node: tlmgr restore155805 +Ref: tlmgr *restore [_option_...] _pkg_ [_rev_]*155984 +Ref: tlmgr *restore [_option_...] --all*156014 +Ref: tlmgr *--all* 3156714 +Ref: tlmgr *--backupdir* _directory_ 2156928 +Ref: tlmgr *--dry-run* 4157109 +Ref: tlmgr *--force* 2157241 +Ref: tlmgr *--json* 2157287 +Node: tlmgr search157614 +Ref: tlmgr *search [_option_...] _what_*157778 +Ref: tlmgr *search [_option_...] --file _what_*157815 +Ref: tlmgr *search [_option_...] --all _what_*157851 +Ref: tlmgr *--file* 1158071 +Ref: tlmgr *--all* 4158133 +Ref: tlmgr *--global*158222 +Ref: tlmgr *--word*158349 +Node: tlmgr shell158664 +Ref: tlmgr protocol159399 +Ref: tlmgr help 1159463 +Ref: tlmgr version 1159516 +Ref: tlmgr quit, end, bye, byebye, EOF159584 +Ref: tlmgr restart159605 +Ref: tlmgr load [local|remote]159728 +Ref: tlmgr save159798 +Ref: tlmgr get [_var_] =item set [_var_ [_val_]]159921 +Node: tlmgr show160522 +Node: tlmgr uninstall160689 +Node: tlmgr update [_option_...] [_pkg_...]160919 +Ref: tlmgr *--all* 5161290 +Ref: tlmgr *--self*163469 +Ref: tlmgr *--dry-run* 5164233 +Ref: tlmgr *--list* [_pkg_]164410 +Ref: tlmgr *--exclude* _pkg_165099 +Ref: tlmgr *--no-auto-remove* [_pkg_...]165899 +Ref: tlmgr *--no-auto-install* [_pkg_...]166383 +Ref: tlmgr *--reinstall-forcibly-removed*167145 +Ref: tlmgr *--backup* 1167680 +Ref: tlmgr *--backupdir* _directory_ 3167706 +Ref: tlmgr *--no-depends* 2168872 +Ref: tlmgr *--no-depends-at-all* 2169075 +Ref: tlmgr *--force* 3169178 +Node: tlmgr CONFIGURATION FILE FOR TLMGR170198 +Ref: tlmgr auto-remove, value 0 or 1 (default 1), same as command-line option.171205 +Ref: tlmgr gui-expertmode, value 0 or 1 (default 1). This switches between the full GUI and a simplified GUI with only the most common settings.171342 +Ref: tlmgr gui-lang _llcode_, with a language code value as with the command-line option.171424 +Ref: tlmgr no-checksums, value 0 or 1 (default 0, see below).171478 +Ref: tlmgr persistent-downloads, value 0 or 1 (default 1), same as command-line option.171558 +Ref: tlmgr require-verification, value 0 or 1 (default 0), same as command-line option.171638 +Ref: tlmgr update-exclude, value: comma-separated list of packages (no space allowed). Same as the command line option --exclude for the action update.171786 +Ref: tlmgr verify-downloads, value 0 or 1 (default 1), same as command-line option.171862 +Ref: tlmgr allowed-actions _action1_ [,_action_,...] The value is a comma-separated list of tlmgr actions which are allowed to be executed when tlmgr is invoked in system mode (that is, without --usermode).172131 +Node: tlmgr CRYPTOGRAPHIC VERIFICATION173219 +Node: tlmgr Configuration of GnuPG invocation175392 +Node: tlmgr USER MODE176030 +Node: tlmgr User mode install178876 +Node: tlmgr User mode backup, restore, remove, update180020 +Node: tlmgr User mode generate, option, paper180462 +Node: tlmgr MULTIPLE REPOSITORIES180838 +Node: tlmgr Pinning182567 +Node: tlmgr GUI FOR TLMGR184490 +Node: tlmgr Main display186139 +Node: tlmgr Display configuration area186391 +Ref: tlmgr Status186752 +Ref: tlmgr Category186916 +Ref: tlmgr Match187102 +Ref: tlmgr Selection187283 +Ref: tlmgr Display configuration buttons187487 +Node: tlmgr Package list area187670 +Ref: tlmgr a checkbox188254 +Ref: tlmgr package name188390 +Ref: tlmgr local revision (and version)188489 +Ref: tlmgr remote revision (and version)188864 +Ref: tlmgr short description189161 +Node: tlmgr Main display action buttons189206 +Ref: tlmgr Update all installed189472 +Ref: tlmgr Update189844 +Ref: tlmgr Install189894 +Ref: tlmgr Remove190080 +Ref: tlmgr Backup190258 +Node: tlmgr Menu bar190415 +Ref: tlmgr tlmgr menu190638 +Ref: tlmgr Options menu190946 +Ref: tlmgr Actions menu192029 +Ref: tlmgr Help menu192457 +Node: tlmgr GUI options192591 +Ref: tlmgr -background _color_192837 +Ref: tlmgr -font " _fontname_ _fontsize_ "192902 +Ref: tlmgr -foreground _color_193060 +Ref: tlmgr -geometry _geomspec_193112 +Ref: tlmgr -xrm _xresource_193304 +Node: tlmgr MACHINE-READABLE OUTPUT193573 +Node: tlmgr Machine-readable update and install output194383 +Ref: tlmgr location-url _location_195659 +Ref: tlmgr total-bytes _count_195875 +Ref: tlmgr _pkgname_196285 +Ref: tlmgr _status_196495 +Ref: tlmgr d196573 +Ref: tlmgr f196633 +Ref: tlmgr u196812 +Ref: tlmgr r196858 +Ref: tlmgr a196981 +Ref: tlmgr i197159 +Ref: tlmgr I197278 +Ref: tlmgr _localrev_197380 +Ref: tlmgr _serverrev_197487 +Ref: tlmgr _size_197599 +Ref: tlmgr _runtime_197768 +Ref: tlmgr _esttot_197838 +Node: tlmgr Machine-readable option output197871 +Node: tlmgr ENVIRONMENT VARIABLES198383 +Ref: tlmgr TEXLIVE_COMPRESSOR198894 +Ref: tlmgr TEXLIVE_DOWNLOADER199742 +Ref: tlmgr TL_DOWNLOAD_PROGRAM199765 +Ref: tlmgr TL_DOWNLOAD_ARGS199785 +Ref: tlmgr TEXLIVE_PREFER_OWN200811 +Node: tlmgr AUTHORS AND COPYRIGHT201635 +Node: Index202033 End Tag Table + + +Local Variables: +coding: utf-8 +End: diff --git a/source/doc/tlbuild.texi b/source/doc/tlbuild.texi index 3ea08d701..f0011a7df 100644 --- a/source/doc/tlbuild.texi +++ b/source/doc/tlbuild.texi @@ -1,8 +1,8 @@ \input texinfo @setfilename tlbuild.info -@set version 2019 -@set month-year February 2019 +@set version 2020 +@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 diff --git a/source/libs/configure b/source/libs/configure index 792db5d2d..8dad7312d 100755 --- a/source/libs/configure +++ b/source/libs/configure @@ -3148,7 +3148,7 @@ case $enable_luajittex in #( : ;; #( *) : case $host in #( - alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ) : + alpha* | sparc* | x86_64-*-solaris* | powerpc-* ) : { $as_echo "$as_me:${as_lineno-$LINENO}: $host -> \`--disable-luajittex'" >&5 $as_echo "$as_me: $host -> \`--disable-luajittex'" >&6;} ac_configure_args="$ac_configure_args '--disable-luajittex'" ;; #( @@ -3161,7 +3161,7 @@ case $enable_luajithbtex in #( : ;; #( *) : case $host in #( - alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ) : + alpha* | sparc* | x86_64-*-solaris* | powerpc-* ) : { $as_echo "$as_me:${as_lineno-$LINENO}: $host -> \`--disable-luajithbtex'" >&5 $as_echo "$as_me: $host -> \`--disable-luajithbtex'" >&6;} ac_configure_args="$ac_configure_args '--disable-luajithbtex'" ;; #( @@ -3174,7 +3174,7 @@ case $enable_mfluajit in #( : ;; #( *) : case $host in #( - alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ) : + alpha* | sparc* | x86_64-*-solaris* | powerpc-* ) : { $as_echo "$as_me:${as_lineno-$LINENO}: $host -> \`--disable-mfluajit'" >&5 $as_echo "$as_me: $host -> \`--disable-mfluajit'" >&6;} ac_configure_args="$ac_configure_args '--disable-mfluajit'" ;; #( @@ -3187,7 +3187,7 @@ case $enable_mfluajit_nowin in #( : ;; #( *) : case $host in #( - alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ) : + alpha* | sparc* | x86_64-*-solaris* | powerpc-* ) : { $as_echo "$as_me:${as_lineno-$LINENO}: $host -> \`--disable-mfluajit-nowin'" >&5 $as_echo "$as_me: $host -> \`--disable-mfluajit-nowin'" >&6;} ac_configure_args="$ac_configure_args '--disable-mfluajit-nowin'" ;; #( diff --git a/source/libs/lua53/configure b/source/libs/lua53/configure index eaddad073..75bf53a89 100755 --- a/source/libs/lua53/configure +++ b/source/libs/lua53/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for lua53 (TeX Live) 5.3.4. +# Generated by GNU Autoconf 2.69 for lua53 (TeX Live) 5.3.5. # # Report bugs to <tex-k@tug.org>. # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='lua53 (TeX Live)' PACKAGE_TARNAME='lua53--tex-live-' -PACKAGE_VERSION='5.3.4' -PACKAGE_STRING='lua53 (TeX Live) 5.3.4' +PACKAGE_VERSION='5.3.5' +PACKAGE_STRING='lua53 (TeX Live) 5.3.5' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1327,7 +1327,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures lua53 (TeX Live) 5.3.4 to adapt to many kinds of systems. +\`configure' configures lua53 (TeX Live) 5.3.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1398,7 +1398,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of lua53 (TeX Live) 5.3.4:";; + short | recursive ) echo "Configuration of lua53 (TeX Live) 5.3.5:";; esac cat <<\_ACEOF @@ -1515,7 +1515,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -lua53 (TeX Live) configure 5.3.4 +lua53 (TeX Live) configure 5.3.5 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1976,7 +1976,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by lua53 (TeX Live) $as_me 5.3.4, which was +It was created by lua53 (TeX Live) $as_me 5.3.5, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3900,7 +3900,7 @@ fi # Define the identity of the package. PACKAGE='lua53--tex-live-' - VERSION='5.3.4' + VERSION='5.3.5' cat >>confdefs.h <<_ACEOF @@ -5108,10 +5108,10 @@ $as_echo "no, using $LN_S" >&6; } fi -LUA53VERSION=5.3.4 +LUA53VERSION=5.3.5 -LUA53_LT_VERSINFO=8:4:3 +LUA53_LT_VERSINFO=8:5:3 case `pwd` in @@ -14545,7 +14545,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by lua53 (TeX Live) $as_me 5.3.4, which was +This file was extended by lua53 (TeX Live) $as_me 5.3.5, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14611,7 +14611,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -lua53 (TeX Live) config.status 5.3.4 +lua53 (TeX Live) config.status 5.3.5 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/source/libs/lua53/version.ac b/source/libs/lua53/version.ac index 22928054d..28471aa30 100644 --- a/source/libs/lua53/version.ac +++ b/source/libs/lua53/version.ac @@ -8,4 +8,4 @@ dnl dnl -------------------------------------------------------- dnl dnl m4-include this file to define the current lua53 version -m4_define([lua53_version], [5.3.4]) +m4_define([lua53_version], [5.3.5]) diff --git a/source/m4/ChangeLog b/source/m4/ChangeLog index 6ac07da16..33f5ac02f 100644 --- a/source/m4/ChangeLog +++ b/source/m4/ChangeLog @@ -1,3 +1,13 @@ +2020-03-12 Karl Berry <karl@freefriends.org> + + * kpse-setup.m4 (KPSE_SETUP): disable jit programs on any + powerpc-*, not just powerpc-darwin, since jit is also unavailable + on powerpc-linux (specifically powerpc64le-unknown-linux-gnu), + per Johannes Hielscher. Although apparently there are patches to + "floating around" to make jit work on powerpc, they are not in TL, + and let's await anyone who actually needs them before refining. + https://tug.org/pipermail/tlbuild/2020q1/004627.html (item 1). + 2020-01-13 Karl Berry <karl@tug.org> * kpse-setup.m4 (KPSE_SETUP): use AS_TR_SH on the argument when diff --git a/source/m4/kpse-setup.m4 b/source/m4/kpse-setup.m4 index 1babe32ca..e40d2e841 100644 --- a/source/m4/kpse-setup.m4 +++ b/source/m4/kpse-setup.m4 @@ -1,4 +1,4 @@ -# $Id: kpse-setup.m4 53385 2020-01-13 00:02:12Z karl $ +# $Id: kpse-setup.m4 54256 2020-03-12 20:11:04Z karl $ # Private macros for the TeX Live (TL) tree. # Copyright 2017-2018 Karl Berry <tex-live@tug.org> # Copyright 2009-2015 Peter Breitenlohner <tex-live@tug.org> @@ -88,7 +88,7 @@ AC_FOREACH([Kpse_Pkg], [luajittex luajithbtex mfluajit mfluajit-nowin], [dnl AS_CASE([$enable_[]AS_TR_SH([Kpse_Pkg])], [yes | no], [:], [AS_CASE([$host], - [alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ], + [alpha* | sparc* | x86_64-*-solaris* | powerpc-* ], [AC_MSG_NOTICE([$host -> `--disable-]Kpse_Pkg[']) ac_configure_args="$ac_configure_args '--disable-]Kpse_Pkg['"])]) ]) diff --git a/source/texk/README b/source/texk/README index 03c47a929..fe96446aa 100644 --- a/source/texk/README +++ b/source/texk/README @@ -1,4 +1,4 @@ -$Id: README 53328 2020-01-05 22:16:43Z kakuto $ +$Id: README 53867 2020-02-22 06:07:51Z takuji $ Copyright 2006-2019 TeX Users Group. You may freely use, modify and/or distribute this file. @@ -106,7 +106,7 @@ ttf2pk2 - maintained here, by us ttfdump - maintained here, by us, since Taiwan upstream apparently gone. -upmendex 0.52 - by Takuji Tanaka +upmendex 0.54 - by Takuji Tanaka http://www.ctan.org/pkg/upmendex https://github.com/t-tk/upmendex-package diff --git a/source/texk/configure b/source/texk/configure index 247108aa7..b4b9c67cb 100755 --- a/source/texk/configure +++ b/source/texk/configure @@ -3148,7 +3148,7 @@ case $enable_luajittex in #( : ;; #( *) : case $host in #( - alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ) : + alpha* | sparc* | x86_64-*-solaris* | powerpc-* ) : { $as_echo "$as_me:${as_lineno-$LINENO}: $host -> \`--disable-luajittex'" >&5 $as_echo "$as_me: $host -> \`--disable-luajittex'" >&6;} ac_configure_args="$ac_configure_args '--disable-luajittex'" ;; #( @@ -3161,7 +3161,7 @@ case $enable_luajithbtex in #( : ;; #( *) : case $host in #( - alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ) : + alpha* | sparc* | x86_64-*-solaris* | powerpc-* ) : { $as_echo "$as_me:${as_lineno-$LINENO}: $host -> \`--disable-luajithbtex'" >&5 $as_echo "$as_me: $host -> \`--disable-luajithbtex'" >&6;} ac_configure_args="$ac_configure_args '--disable-luajithbtex'" ;; #( @@ -3174,7 +3174,7 @@ case $enable_mfluajit in #( : ;; #( *) : case $host in #( - alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ) : + alpha* | sparc* | x86_64-*-solaris* | powerpc-* ) : { $as_echo "$as_me:${as_lineno-$LINENO}: $host -> \`--disable-mfluajit'" >&5 $as_echo "$as_me: $host -> \`--disable-mfluajit'" >&6;} ac_configure_args="$ac_configure_args '--disable-mfluajit'" ;; #( @@ -3187,7 +3187,7 @@ case $enable_mfluajit_nowin in #( : ;; #( *) : case $host in #( - alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ) : + alpha* | sparc* | x86_64-*-solaris* | powerpc-* ) : { $as_echo "$as_me:${as_lineno-$LINENO}: $host -> \`--disable-mfluajit-nowin'" >&5 $as_echo "$as_me: $host -> \`--disable-mfluajit-nowin'" >&6;} ac_configure_args="$ac_configure_args '--disable-mfluajit-nowin'" ;; #( diff --git a/source/texk/kpathsea/ChangeLog b/source/texk/kpathsea/ChangeLog index 7349fb863..ca62a6250 100644 --- a/source/texk/kpathsea/ChangeLog +++ b/source/texk/kpathsea/ChangeLog @@ -1,3 +1,9 @@ +2020-02-29 Karl Berry <karl@freefriends.org> + + * pathsearch.c: doc fix. + + * doc/unixtex.texi: update urls, typos, etc. + 2020-01-19 Karl Berry <karl@freefriends.org> * kpsewhich.c (ENSURE_NONEMPTY_STRING): new macro. diff --git a/source/texk/kpathsea/doc/kpathsea.info b/source/texk/kpathsea/doc/kpathsea.info index db52773a1..2744e1176 100644 --- a/source/texk/kpathsea/doc/kpathsea.info +++ b/source/texk/kpathsea/doc/kpathsea.info @@ -1,4 +1,4 @@ -This is kpathsea.info, produced by makeinfo version 5.1 from +This is kpathsea.info, produced by makeinfo version 6.7 from kpathsea.texi. This file documents the Kpathsea library for path searching. @@ -37,7 +37,7 @@ Kpathsea library **************** This manual documents the Kpathsea library for path searching. It -corresponds to version 6.3.2, released in January 2020. +corresponds to version 6.3.2, released in March 2020. * Menu: @@ -62,7 +62,7 @@ File: kpathsea.info, Node: Introduction, Next: unixtex.ftp, Prev: Top, Up: T ************** This manual corresponds to version 6.3.2 of the Kpathsea library, -released in January 2020. +released in March 2020. The library's fundamental purpose is to return a filename from a list of directories specified by the user, similar to what shells do when @@ -201,24 +201,25 @@ File: kpathsea.info, Node: unixtex.ftp, Next: Security, Prev: Introduction, 2 'unixtex.ftp': Obtaining TeX ****************************** -This is <https://tug.org/tex/unixtex.ftp>, last updated 28 November -2017. Email <tex-k@tug.org> with comments or questions. +This is <ftp://tug.org/tex/unixtex.ftp>, a.k.a. +<https://tug.org/unixtex.ftp>, last updated 29 February 2020. Email +<tex-k@tug.org> with comments or questions. The principal free TeX distribution for Unix-like systems is TeX Live, on the web at <http://tug.org/texlive>. The pages there describe -many ways to acquire and.or build TeX, over the Internet or on physical +many ways to acquire and/or build TeX, over the Internet or on physical media, both the sources and precompiled binaries for many systems, either standalone or as part of various operating system distributions. - Web2c, Kpathsea, Dvips, and Dviljk are no longer released as a -separate packages. Their sources are now maintained as part of TeX -Live. + Web2c, Kpathsea, Dvips, and Dviljk, among others, are no longer +released as a separate packages. Their sources are now maintained as +part of TeX Live. The host ftp.cs.stanford.edu is the original source for the files for which Donald Knuth is directly responsible: 'tex.web', 'plain.tex', etc. However, unless you want to undertake the project of building your TeX -installation from scratch, it is more reliable and less work to retrieve -these files as part of a larger package. +system from scratch, it is more reliable and less work to retrieve these +files as part of a larger package. In any case, the Stanford ftp site is not the canonical source for anything except what was created as part of Knuth's original TeX, so do @@ -879,8 +880,8 @@ only to differences in case. This same problematic scenario has always existed on Windows, but for whatever reason, it has become much more common since Apple also went to -a case-insensitive filesystem. Hence the move to change the Kpathsea -behavior now. +a case-insensitive filesystem. Hence the relatively late change to the +Kpathsea behavior. The fallback case-insensitive search is omitted at compile-time on Windows, where (for practical purposes) all file names are @@ -3037,7 +3038,7 @@ Index * !! and casefolding: Casefolding examples. (line 57) * !! in path specifications: ls-R. (line 57) -* !! in 'TEXMFDBS': ls-R. (line 11) +* !! in TEXMFDBS: ls-R. (line 11) * $ expansion: Variable expansion. (line 6) * --all: Path searching options. (line 12) @@ -3045,7 +3046,7 @@ Index (line 19) * --cnf-line: Path searching options. (line 28) -* '--cnf-line', source for path: Path sources. (line 9) +* --cnf-line, source for path: Path sources. (line 9) * --color=tty: ls-R. (line 25) * --debug=NUM: Auxiliary tasks. (line 9) * --dpi=NUM: Path searching options. @@ -3091,12 +3092,12 @@ Index * --without-mktexpk-default: mktex configuration. (line 12) * --without-mktextfm-default: mktex configuration. (line 12) * -1 debugging value: Debugging. (line 23) -* -A option to 'ls': ls-R. (line 39) +* -A option to ls: ls-R. (line 39) * -D NUM: Path searching options. (line 49) * -iname, find predicate: Casefolding examples. (line 78) -* -L option to 'ls': ls-R. (line 44) +* -L option to ls: ls-R. (line 44) * . directories, ignored: ls-R. (line 39) * . files: ls-R. (line 39) * .2602gf: Unable to generate fonts. @@ -3173,7 +3174,7 @@ Index (line 195) * .pro: Supported file formats. (line 169) -* .PROGNAME qualifier in 'texmf.cnf': Config files. (line 50) +* .PROGNAME qualifier in texmf.cnf: Config files. (line 50) * .rhosts, writable by TeX: Security. (line 10) * .ris: Supported file formats. (line 173) @@ -3183,7 +3184,7 @@ Index (line 42) * .tex: Supported file formats. (line 180) -* .tex file, included in 'ls-R': ls-R. (line 39) +* .tex file, included in ls-R: ls-R. (line 39) * .tfm: Supported file formats. (line 199) * .ttc: Supported file formats. @@ -3211,9 +3212,9 @@ Index * 8.3 filenames, using: mktex configuration. (line 68) * : may not be :: Searching overview. (line 13) * :: expansion: Default expansion. (line 6) -* ; translated to ':' in 'texmf.cnf': Config files. (line 66) -* = omitted in 'texmf.cnf' and misparsing: Config files. (line 93) -* \, line continuation in 'texmf.cnf': Config files. (line 37) +* ; translated to : in texmf.cnf: Config files. (line 66) +* = omitted in texmf.cnf and misparsing: Config files. (line 93) +* \, line continuation in texmf.cnf: Config files. (line 37) * \openin: Searching overview. (line 31) * \special, suppressing warnings about: Suppressing warnings. (line 31) @@ -3236,15 +3237,15 @@ Index * announcement mailing list: Mailing lists. (line 6) * API, re-entrant: Programming overview. (line 16) -* append-only directories and 'mktexpk': Security. (line 36) +* append-only directories and mktexpk: Security. (line 36) * appendonlydir: mktex configuration. (line 60) * Apple filesystem, case-insensitive: Casefolding rationale. (line 6) -* arguments to 'mktex': mktex script arguments. +* arguments to mktex: mktex script arguments. (line 6) * argv[0]: Calling sequence. (line 14) * autoconf, recommended: Calling sequence. (line 117) -* automounter, and 'ls-R': ls-R. (line 46) +* automounter, and ls-R: ls-R. (line 46) * auxiliary tasks: Auxiliary tasks. (line 6) * Bach, Johann Sebastian: Default expansion. (line 41) * backslash-newline: Config files. (line 37) @@ -3254,7 +3255,7 @@ Index (line 30) * BIBINPUTS <1>: Supported file formats. (line 121) -* blank lines, in 'texmf.cnf': Config files. (line 35) +* blank lines, in texmf.cnf: Config files. (line 35) * BLTXMLINPUTS: Supported file formats. (line 34) * brace expansion: Brace expansion. (line 6) @@ -3282,7 +3283,7 @@ Index * checksum: Suppressing warnings. (line 16) * circle fonts: Fontmap. (line 19) -* client_path in 'kpse->format_info': Calling sequence. (line 47) +* client_path in kpse->format_info: Calling sequence. (line 47) * CLUAINPUTS: Supported file formats. (line 42) * CMAPFONTS: Supported file formats. @@ -3293,7 +3294,7 @@ Index * cnf.h: Programming with config files. (line 27) * comments, in fontmap files: Fontmap. (line 27) -* comments, in 'texmf.cnf': Config files. (line 27) +* comments, in texmf.cnf: Config files. (line 27) * comments, making: Introduction. (line 29) * common features in glyph lookup: Basic glyph lookup. (line 6) * common problems: Common problems. (line 6) @@ -3319,9 +3320,8 @@ Index * configuration bugs: Bug checklist. (line 27) * configuration file, source for path: Path sources. (line 20) * configuration files as shell scripts.: Config files. (line 86) -* configuration of 'mktex' scripts: mktex configuration. (line 6) -* 'configure' options for 'mktex' scripts: mktex configuration. - (line 12) +* configuration of mktex scripts: mktex configuration. (line 6) +* configure options for mktex scripts: mktex configuration. (line 12) * context diff: Bug checklist. (line 52) * continuation character: Config files. (line 37) * core dumps, reporting: Bug checklist. (line 58) @@ -3345,7 +3345,7 @@ Index * directory permissions: Security. (line 51) * directory structure, for TeX files: TeX directory structure. (line 6) -* disabling 'mktex' scripts: mktex configuration. (line 6) +* disabling mktex scripts: mktex configuration. (line 6) * disk search: Searching overview. (line 22) * disk searching, avoiding: ls-R. (line 57) * disk usage, reducing: Logging. (line 6) @@ -3372,7 +3372,7 @@ Index (line 41) * elt-dirs.c <1>: Subdirectory expansion. (line 48) -* enabling 'mktex' scripts: mktex configuration. (line 6) +* enabling mktex scripts: mktex configuration. (line 6) * ENCFONTS: Supported file formats. (line 61) * engine name: Path searching options. @@ -3401,7 +3401,7 @@ Index * extensions, filename: File lookup. (line 24) * externally-built filename database: Filename database. (line 6) * extra colons: Default expansion. (line 6) -* failed 'mktex...' script invocation: mktex script names. (line 35) +* failed mktex... script invocation: mktex script names. (line 35) * fallback font: Fallback font. (line 6) * fallback resolutions: Fallback font. (line 6) * FAQ, Kpathsea: Common problems. (line 6) @@ -3449,7 +3449,7 @@ Index (line 239) * fopen, redefined: Debugging. (line 54) * format of external database: Database format. (line 6) -* ftp.cs.stanford.edu: unixtex.ftp. (line 19) +* ftp.cs.stanford.edu: unixtex.ftp. (line 20) * ftp.tug.org: unixtex.ftp. (line 6) * fundamental purpose of Kpathsea: Introduction. (line 6) * gdb, recommended: Bug checklist. (line 58) @@ -3487,10 +3487,10 @@ Index (line 151) * interface, not frozen: Introduction. (line 29) * introduction: Introduction. (line 6) -* 'kdebug:': Debugging. (line 105) +* kdebug:: Debugging. (line 105) * kdefault.c: Default expansion. (line 48) * Knuth, Donald E.: History. (line 6) -* Knuth, Donald E., archive of programs by: unixtex.ftp. (line 19) +* Knuth, Donald E., archive of programs by: unixtex.ftp. (line 20) * Kpathsea config file, source for path: Path sources. (line 20) * kpathsea.h: Programming overview. (line 26) @@ -3590,9 +3590,9 @@ Index (line 20) * mkocp: mktex script names. (line 18) * mkofm: mktex script names. (line 21) -* 'mktex' script configuration: mktex configuration. (line 6) -* 'mktex' script names: mktex script names. (line 6) -* 'mktex' scripts: mktex scripts. (line 6) +* mktex script configuration: mktex configuration. (line 6) +* mktex script names: mktex script names. (line 6) +* mktex scripts: mktex scripts. (line 6) * mktex.cnf: Specially-recognized files. (line 28) * mktex.cnf <1>: mktex configuration. (line 29) @@ -3602,7 +3602,7 @@ Index * mktexfmt: mktex script names. (line 10) * mktexmf: mktex script names. (line 15) * mktexpk: mktex script names. (line 24) -* 'mktexpk' can't guess mode: Unable to generate fonts. +* mktexpk can't guess mode: Unable to generate fonts. (line 12) * mktextex: mktex script names. (line 27) * mktextfm: mktex script names. (line 30) @@ -3623,9 +3623,9 @@ Index * MT_FEATURES: mktex configuration. (line 39) * multiple TeX hierarchies: Brace expansion. (line 20) * must exist: Searching overview. (line 31) -* names for 'mktex' scripts: mktex script names. (line 6) +* names for mktex scripts: mktex script names. (line 6) * Neumann, Gustaf: History. (line 56) -* NFS and 'ls-R': ls-R. (line 46) +* NFS and ls-R: ls-R. (line 46) * nomfdrivers: mktex configuration. (line 92) * nomode: mktex configuration. (line 97) * none: Suppressing warnings. @@ -3738,7 +3738,7 @@ Index * shell variables: Variable expansion. (line 17) * shell_escape, example for code: Programming with config files. (line 10) -* site overrides for 'mktex...': mktex configuration. (line 29) +* site overrides for mktex...: mktex configuration. (line 29) * skeleton TeX directory: TeX directory structure. (line 6) * slow startup time: Slow path searching. (line 6) @@ -3773,7 +3773,7 @@ Index (line 6) * symbolic links not found: Unable to find files. (line 21) -* symbolic links, and 'ls-R': ls-R. (line 44) +* symbolic links, and ls-R: ls-R. (line 44) * symlinks, resolving: Calling sequence. (line 31) * system C compiler bugs: TeX or Metafont failing. (line 16) @@ -3807,7 +3807,7 @@ Index (line 26) * tex-k@tug.org: Mailing lists. (line 6) * tex-k@tug.org (bug address): Reporting bugs. (line 6) -* tex.web: unixtex.ftp. (line 19) +* tex.web: unixtex.ftp. (line 20) * TEXBIB: Supported file formats. (line 30) * TEXBIB <1>: Supported file formats. @@ -3839,7 +3839,7 @@ Index (line 6) * texmf.cnf: Specially-recognized files. (line 38) -* 'texmf.cnf' missing, warning about: Config files. (line 18) +* texmf.cnf missing, warning about: Config files. (line 18) * texmf.cnf, and variable expansion: Variable expansion. (line 6) * texmf.cnf, definition for: Config files. (line 6) * texmf.cnf, source for path: Path sources. (line 20) @@ -3884,7 +3884,7 @@ Index * tilde.c: Tilde expansion. (line 25) * time system call: Logging. (line 15) * tolerance for glyph lookup: Basic glyph lookup. (line 15) -* trailing '/' in home directory: Tilde expansion. (line 19) +* trailing / in home directory: Tilde expansion. (line 19) * trailing colons: Default expansion. (line 6) * translations, of path searching description: Path searching. (line 10) @@ -3910,7 +3910,7 @@ Index * unreadable file warnings: Suppressing warnings. (line 27) * unreadable files: Searching overview. (line 63) -* unusable 'ls-R' warning: ls-R. (line 51) +* unusable ls-R warning: ls-R. (line 51) * usage patterns, finding: Logging. (line 6) * USERPROFILE, as ~ expansion: Tilde expansion. (line 6) * USE_TEXMFVAR: mktex configuration. (line 128) @@ -3928,8 +3928,8 @@ Index (line 219) * Vojta, Paul: History. (line 30) * Walsh, Norman: History. (line 56) -* warning about unusable 'ls-R': ls-R. (line 51) -* warning, about missing 'texmf.cnf': Config files. (line 18) +* warning about unusable ls-R: ls-R. (line 51) +* warning, about missing texmf.cnf: Config files. (line 18) * warnings, file access: Searching overview. (line 63) * warnings, suppressing: Suppressing warnings. (line 6) @@ -3956,61 +3956,66 @@ Index Tag Table: Node: Top1480 -Node: Introduction2262 -Node: History4331 -Node: unixtex.ftp8927 -Node: Security10352 -Node: TeX directory structure12856 -Node: Path searching16897 -Node: Searching overview17855 -Node: Path sources21674 -Node: Config files22900 -Node: Path expansion28163 -Node: Default expansion29116 -Node: Variable expansion31186 -Node: Tilde expansion32587 -Node: Brace expansion33567 -Node: KPSE_DOT expansion34506 -Node: Subdirectory expansion35019 -Node: Casefolding search37367 -Node: Casefolding rationale38136 -Node: Casefolding examples39475 -Node: Filename database44521 -Node: ls-R45503 -Node: Filename aliases49179 -Node: Database format50357 -Node: Invoking kpsewhich51370 -Node: Path searching options52325 -Node: Specially-recognized files61923 -Node: Auxiliary tasks63278 -Node: Standard options67003 -Node: TeX support67359 -Node: Supported file formats68713 -Node: File lookup76381 -Node: Glyph lookup78130 -Node: Basic glyph lookup79254 -Node: Fontmap80134 -Node: Fallback font82663 -Node: Suppressing warnings83575 -Node: mktex scripts84702 -Node: mktex configuration85917 -Node: mktex script names91720 -Node: mktex script arguments93106 -Node: Programming93985 -Node: Programming overview94558 -Node: Calling sequence97419 -Node: Program-specific files103948 -Node: Programming with config files104971 -Node: Reporting bugs106558 -Node: Bug checklist107236 -Node: Mailing lists110705 -Node: Debugging111382 -Node: Logging116459 -Node: Common problems118326 -Node: Unable to find files118803 -Node: Slow path searching121213 -Node: Unable to generate fonts122588 -Node: TeX or Metafont failing125060 -Node: Index126262 +Node: Introduction2260 +Node: History4327 +Node: unixtex.ftp8923 +Node: Security10393 +Node: TeX directory structure12897 +Node: Path searching16938 +Node: Searching overview17896 +Node: Path sources21715 +Node: Config files22941 +Node: Path expansion28204 +Node: Default expansion29157 +Node: Variable expansion31227 +Node: Tilde expansion32628 +Node: Brace expansion33608 +Node: KPSE_DOT expansion34547 +Node: Subdirectory expansion35060 +Node: Casefolding search37408 +Node: Casefolding rationale38177 +Node: Casefolding examples39523 +Node: Filename database44569 +Node: ls-R45551 +Node: Filename aliases49227 +Node: Database format50405 +Node: Invoking kpsewhich51418 +Node: Path searching options52373 +Node: Specially-recognized files61971 +Node: Auxiliary tasks63326 +Node: Standard options67051 +Node: TeX support67407 +Node: Supported file formats68761 +Node: File lookup76429 +Node: Glyph lookup78178 +Node: Basic glyph lookup79302 +Node: Fontmap80182 +Node: Fallback font82711 +Node: Suppressing warnings83623 +Node: mktex scripts84750 +Node: mktex configuration85965 +Node: mktex script names91768 +Node: mktex script arguments93154 +Node: Programming94033 +Node: Programming overview94606 +Node: Calling sequence97467 +Node: Program-specific files103996 +Node: Programming with config files105019 +Node: Reporting bugs106606 +Node: Bug checklist107284 +Node: Mailing lists110753 +Node: Debugging111430 +Node: Logging116507 +Node: Common problems118374 +Node: Unable to find files118851 +Node: Slow path searching121261 +Node: Unable to generate fonts122636 +Node: TeX or Metafont failing125108 +Node: Index126310 End Tag Table + + +Local Variables: +coding: utf-8 +End: diff --git a/source/texk/kpathsea/doc/kpathsea.texi b/source/texk/kpathsea/doc/kpathsea.texi index 2d35128a4..5888fac79 100644 --- a/source/texk/kpathsea/doc/kpathsea.texi +++ b/source/texk/kpathsea/doc/kpathsea.texi @@ -3,7 +3,7 @@ @settitle Kpathsea: A library for path searching @set version 6.3.2 -@set month-year January 2020 +@set month-year March 2020 @copying This file documents the Kpathsea library for path searching. @@ -1104,8 +1104,8 @@ case. This same problematic scenario has always existed on Windows, but for whatever reason, it has become much more common since Apple also went -to a case-insensitive filesystem. Hence the move to change the -Kpathsea behavior now. +to a case-insensitive filesystem. Hence the relatively late change +to the Kpathsea behavior. @cindex Windows and casefolding The fallback case-insensitive search is omitted at compile-time on diff --git a/source/texk/kpathsea/doc/unixtex.texi b/source/texk/kpathsea/doc/unixtex.texi index e9c1ea1fe..f91f453ce 100644 --- a/source/texk/kpathsea/doc/unixtex.texi +++ b/source/texk/kpathsea/doc/unixtex.texi @@ -17,19 +17,20 @@ This @iftex chapter @end iftex -is @uref{https://tug.org/tex/unixtex.ftp}, last updated 28 November -2017. Email @email{tex-k@@tug.org} with comments or questions. +is @uref{ftp://tug.org/tex/unixtex.ftp}, a.k.a.@: +@uref{https://tug.org/unixtex.ftp}, last updated 29 February 2020. +Email @email{tex-k@@tug.org} with comments or questions. The principal free @TeX{} distribution for Unix-like systems is @TeX{} Live, on the web at @url{http://tug.org/texlive}. The pages there -describe many ways to acquire and.or build @TeX{}, over the Internet +describe many ways to acquire and/or build @TeX{}, over the Internet or on physical media, both the sources and precompiled binaries for many systems, either standalone or as part of various operating system distributions. -Web2c, Kpathsea, Dvips, and Dviljk are no longer released as a -separate packages. Their sources are now maintained as part of @TeX{} -Live. +Web2c, Kpathsea, Dvips, and Dviljk, among others, are no longer +released as a separate packages. Their sources are now maintained as +part of @TeX{} Live. @flindex ftp.cs.stanford.edu @flindex tex.web @@ -37,7 +38,7 @@ Live. The host @t{ftp.cs.stanford.edu} is the original source for the files for which Donald Knuth is directly responsible: @file{tex.web}, @file{plain.tex}, etc. However, unless you want to undertake the -project of building your @TeX{} installation from scratch, it is more +project of building your @TeX{} system from scratch, it is more reliable and less work to retrieve these files as part of a larger package. diff --git a/source/texk/kpathsea/pathsearch.c b/source/texk/kpathsea/pathsearch.c index ad6f0cd01..778b952a6 100644 --- a/source/texk/kpathsea/pathsearch.c +++ b/source/texk/kpathsea/pathsearch.c @@ -1,6 +1,6 @@ /* pathsearch.c: look up a filename in a path. - Copyright 1993, 1994, 1995, 1997, 2007, 2009-2012, 2018 Karl Berry. + Copyright 1993, 1994, 1995, 1997, 2007, 2009-2012, 2018, 2020 Karl Berry. Copyright 1997-2005 Olaf Weber. This library is free software; you can redistribute it and/or @@ -173,7 +173,7 @@ casefold_readable_file (kpathsea kpse, string name) if (kpathsea_readable_file (kpse, ret)) { break; /* success */ } else { - /* This only happens the name matches, but the potential file is + /* This only happens when the name matches, but the potential file is not actually readable, e.g., a broken symlink. It seems sufficiently unusual to be worth logging. */ #ifdef KPSE_DEBUG diff --git a/source/texk/web2c/ChangeLog b/source/texk/web2c/ChangeLog index ca9b6b29d..80fb8df01 100644 --- a/source/texk/web2c/ChangeLog +++ b/source/texk/web2c/ChangeLog @@ -1,3 +1,9 @@ +2020-03-12 Karl Berry <karl@freefriends.org> + + * doc/web2c.texi (\input quoted filename), + (\input braced filename), + (\input filename caveats): new subnodes of "\input filenames". + 2020-02-09 Phelype Oleinik <phe.h.o1@gmail.com> * tex.ch (29.256, scan_file_name): new procedure to implement diff --git a/source/texk/web2c/Makefile.in b/source/texk/web2c/Makefile.in index cb6b54245..b22667577 100644 --- a/source/texk/web2c/Makefile.in +++ b/source/texk/web2c/Makefile.in @@ -229,7 +229,8 @@ TESTS = tangle.test $(am__EXEEXT_45) ctiedir/ctie.test \ @LUAHBTEX_TRUE@@WIN32_TRUE@am__append_90 = call_luahbtex @LUAHBTEX_TRUE@@WIN32_TRUE@am__append_91 = install-luahbtex-links @LUAHBTEX_TRUE@@WIN32_TRUE@am__append_92 = uninstall-luahbtex-links -@LUAHBTEX_TRUE@@WIN32_FALSE@am__append_93 = luahbtex$(EXEEXT):texlua luahbtex$(EXEEXT):texluac +# keep texlua[c] as links to luatex unless luatex is not installed. +@LUAHBTEX_TRUE@@LUATEX_FALSE@@WIN32_FALSE@am__append_93 = luahbtex$(EXEEXT):texlua luahbtex$(EXEEXT):texluac @LUAJITTEX_TRUE@am__append_94 = luajittex @LUAJITTEX_TRUE@@WIN32_TRUE@am__append_95 = call_luajittex @LUAJITTEX_TRUE@@WIN32_TRUE@am__append_96 = install-luajittex-links @@ -239,7 +240,8 @@ TESTS = tangle.test $(am__EXEEXT_45) ctiedir/ctie.test \ @LUAJITHBTEX_TRUE@@WIN32_TRUE@am__append_100 = call_luajithbtex @LUAJITHBTEX_TRUE@@WIN32_TRUE@am__append_101 = install-luajithbtex-links @LUAJITHBTEX_TRUE@@WIN32_TRUE@am__append_102 = uninstall-luajithbtex-links -@LUAJITHBTEX_TRUE@@WIN32_FALSE@am__append_103 = luajithbtex$(EXEEXT):texluajit luajithbtex$(EXEEXT):texluajitc +# keep texluajit[c] as links to luajittex unless luajittex is not installed. +@LUAJITHBTEX_TRUE@@LUAJITTEX_FALSE@@WIN32_FALSE@am__append_103 = luajithbtex$(EXEEXT):texluajit luajithbtex$(EXEEXT):texluajitc @LUATEX_TRUE@am__append_104 = $(luatex_tests) @LUAHBTEX_TRUE@am__append_105 = $(luahbtex_tests) @LUAJITTEX_TRUE@am__append_106 = $(luajittex_tests) diff --git a/source/texk/web2c/NEWS b/source/texk/web2c/NEWS index abd45b336..ec032b1bf 100644 --- a/source/texk/web2c/NEWS +++ b/source/texk/web2c/NEWS @@ -16,7 +16,10 @@ that is a macro redefinition of the standard \input primitive. * All TeX engines except tex and etex now compress (with zlib) .fmt files (XeTeX and LuaTeX already did so). -pTeX: new primitives \ifjfont and \iftfont. +pTeX (and all variants): new primitives \ifjfont and \iftfont. +eptex, euptex: new primitives \Uchar, \Ucharcat, \current(x)spacingmode, + \ifincsname; revise \fontchar?? and \iffontchar. +euptex only: new primitive \currentcjktoken. BibTeX: now reallocates on large (>20k) field values instead of aborting. diff --git a/source/texk/web2c/doc/web2c.info b/source/texk/web2c/doc/web2c.info index e7745a4e5..19bf29f34 100644 --- a/source/texk/web2c/doc/web2c.info +++ b/source/texk/web2c/doc/web2c.info @@ -1,10 +1,10 @@ -This is web2c.info, produced by makeinfo version 5.1 from web2c.texi. +This is web2c.info, produced by makeinfo version 6.7 from web2c.texi. This file documents the installation and use of the programs in Web2c, an implementation of Donald Knuth's TeX system. Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -2005, 2007, 2008, 2009 Karl Berry & Olaf Weber. +2005, 2007, 2008, 2009, 2010-2020 Karl Berry & Olaf Weber. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are @@ -58,7 +58,7 @@ Web2c This document describes how to install and use the programs in the Web2c implementation of the TeX system, especially for Unix systems. It -corresponds to Web2c version 2020, released in January 2020. +corresponds to Web2c version 2020, released in March 2020. * Menu: @@ -82,7 +82,7 @@ File: web2c.info, Node: Introduction, Next: Installation, Prev: Top, Up: Top 1 Introduction ************** -This manual corresponds to version 2020 of Web2c, released in January +This manual corresponds to version 2020 of Web2c, released in March 2020. "Web2c" is the name of a TeX implementation, originally for Unix, but @@ -634,7 +634,7 @@ Runtime options::. * Initial and virgin:: Making memory dumps vs. production runs. * Memory dumps:: .fmt/.base files for fast startup. * Editor invocation:: The 'e' response at errors. -* \input filenames:: ~ and $ expansion in TeX/MF/MP. +* \input filenames:: Filename delimiters and Kpathsea expansion. File: web2c.info, Node: Initial and virgin, Next: Memory dumps, Up: Three programs @@ -835,8 +835,35 @@ and MetaPost, the statement terminator ';' also works. (LaTeX and other macro packages provide other interfaces to '\input' that allow different notation; here we are concerned only with the primitive operation.) - As of Web2c version 7.5.3, double-quote characters can be used to -include spaces or other special cases. In typical use, the '"' + As (allowed) extensions to standard TeX, Web2c also supports +specifying the filename in double quotes ('"some name"') and in braces +('{"some name"}'), which is convenient for filenames containing spaces +or other special characters, as described in the sections below. + + In all cases, space tokens are ignored after the filename is read. + + Also, double quote ('"') characters are ignored within the filename; +there is no way to read files whose names contain a '"'. + + However, for maximal portability of your document across systems, use +only the characters 'a'-'z', '0'-'9', and '.'. Do not use anything but +simple filenames, since directory separators vary among systems; +instead, add the necessary directories to the appropriate search path. + +* Menu: + +* Quotes: \input quoted filename. \input "some name" +* Braces: \input braced filename. \input {some name} +* Caveats: \input filename caveats. Tokenization, nulls, Kpathsea expansion. + + +File: web2c.info, Node: \input quoted filename, Next: \input braced filename, Up: \input filenames + +3.5.4.1 '\input' quoted filename: '\input "some name"' +...................................................... + +As of Web2c version 7.5.3 (2004), double-quote characters can be used to +include spaces or other special characters. In typical use, the '"' characters surround the entire filename: \input "filename with spaces" @@ -844,46 +871,69 @@ characters surround the entire filename: can enclose any characters, as in: \input filename" "with" "spaces - One more point. In LaTeX, the quotes are needed inside the braces, -thus + One more point. In LaTeX, the quotes are needed inside the braces of +its '\input' macro, thus: \input{a b} % fails \input{"a b"} % ok - This quoting mechanism comes into play _after_ TeX has tokenized and -expanded the input. So, multiple spaces and tabs may be seen as a -single space, active characters such as '~' are expanded first, and so -on. (See below.) + There is no way to quote the quote character. + + +File: web2c.info, Node: \input braced filename, Next: \input filename caveats, Prev: \input quoted filename, Up: \input filenames + +3.5.4.2 '\input' braced filename: '\input{some name}' +..................................................... + +As of Web2c 2020, '\input' filenames in TeX engines (this does not apply +in Metafont and MetaPost) can also be specified within a TeX group, +typically curly braces. For example: + \input{filename with spaces} + + As always with TeX, the brace characters are not hardwired; what +counts is the category code: the first token after the '\input' must be +of catcode 1 (begin group), and it is matched with the next character of +catcode 2 (end group). + + Within the group-delimited filename, braces are treated as normal +characters. + + As with all forms of filenames, following spaces are ignored (after +the end group), and double quote ('"') characters are ignored within the +filename. + + +File: web2c.info, Node: \input filename caveats, Prev: \input braced filename, Up: \input filenames + +3.5.4.3 '\input' filename caveats +................................. + +The quoting mechanisms just described come into play _after_ TeX has +tokenized and expanded the input. So, multiple spaces and tabs will +generally be seen as a single space, active characters such as '~' are +expanded first (generally causing an error), and so on. More examples +below. On the other hand, various C library routines and Unix itself use the null byte (character code zero, ASCII NUL) to terminate strings. So filenames in Web2c cannot contain nulls, even though TeX itself does not -treat NUL specially. In addition, some older Unix variants do not allow -eight-bit characters (codes 128-255) in filenames. - - For maximal portability of your document across systems, use only the -characters 'a'-'z', '0'-'9', and '.', and restrict your filenames to at -most eight characters (not including the extension), and at most a -three-character extension. Do not use anything but simple filenames, -since directory separators vary among systems; instead, add the -necessary directories to the appropriate search path. +treat NUL specially. Finally, the present Web2c implementation does '~' and '$' expansion -on NAME, unlike Knuth's original implementation and older versions of -Web2c. Thus: +on NAME, unlike Knuth's original implementation. Thus: \input ~jsmith/$foo.bar will dereference the environment variable or Kpathsea config file -value 'foo' and read that file extended with '.bar' in user 'jsmith''s -home directory. You can also use braces, as in '${foo}bar', if you want -to follow the variable name with a letter, numeral, or '_'. +value 'foo' and read that file, extended with '.bar', in user 'jsmith''s +home directory. You can also use braces in the variable expansion, as +in '${foo}bar', if you want to follow the variable name with a letter, +numeral, or '_'. (So another way to get a program to read a filename containing whitespace is to define an environment variable and dereference it.) - In all the common TeX formats (plain TeX, LaTeX, AMSTeX), the -characters '~' and '$' have special category codes, so to actually use -these in a document you have to change their catcodes or use '\string'. -(The result is unportable anyway, see the suggestions above.) The place -where they are most likely to be useful is when typing interactively. + In all the common TeX formats (plain TeX, LaTeX, ConTeXt, AMSTeX, +...), the characters '~' and '$' have special category codes, so to +actually use these in a document you have to change their catcodes or +use '\string'. File: web2c.info, Node: TeX, Next: Metafont, Prev: Commonalities, Up: Top @@ -2323,9 +2373,9 @@ available in many other places, of course). * Menu: -* tangle invocation:: -* weave invocation:: -* pooltype invocation:: +* tangle invocation:: +* weave invocation:: +* pooltype invocation:: File: web2c.info, Node: tangle invocation, Next: weave invocation, Up: WEB @@ -2564,7 +2614,7 @@ program. * Menu: -* dvitype output example:: +* dvitype output example:: File: web2c.info, Node: dvitype output example, Up: dvitype invocation @@ -3425,9 +3475,11 @@ Index �[index�] * Menu: -* '#define' options: Compile-time options. +* " character, ignored in filenames: \input filenames. (line 22) +* #define options: Compile-time options. (line 6) -* $ expansion in filenames: \input filenames. (line 47) +* $ expansion in filenames: \input filename caveats. + (line 17) * %& magic number: Determining the memory dump to use. (line 19) * - starting a filename: Option conventions. (line 19) @@ -3466,7 +3518,7 @@ Index * -base=BASE: Determining the memory dump to use. (line 15) * -base=DUMPNAME: Common options. (line 34) -* -change=CHFILE: mft invocation. (line 62) +* -change=CHFILE: mft invocation. (line 63) * -charcode-format=TYPE: tftopl invocation. (line 27) * -charcode-format=TYPE <1>: vftovp invocation. (line 30) * -D compiler options: Compile-time options. @@ -3527,7 +3579,7 @@ Index * -shell-restricted: tex invocation. (line 121) * -show-opcodes: dvitype invocation. (line 52) * -strict: tangle invocation. (line 46) -* -style=MFTFILE: mft invocation. (line 66) +* -style=MFTFILE: mft invocation. (line 67) * -T: mpost invocation. (line 115) * -terse: bibtex invocation. (line 28) * -tex=TEXPROGRAM: mpost invocation. (line 118) @@ -3547,7 +3599,7 @@ Index * .fmt: Initial TeX. (line 6) * .mf: mf invocation. (line 24) * .mp: mpost invocation. (line 30) -* '.mps' files and PDF: mpost invocation. (line 86) +* .mps files and PDF: mpost invocation. (line 86) * .NNN PostScript figures: mpost invocation. (line 35) * .NNNgf generic fonts: mf invocation. (line 34) * .tcx character translation files: Common options. (line 98) @@ -3571,21 +3623,29 @@ Index * \font and dynamic generation: tex invocation. (line 41) * \fontdimen: tftopl invocation. (line 99) * \immediate\write18: Shell escapes. (line 6) +* \input braced (grouped) filename: \input braced filename. + (line 6) +* \input filename caveats: \input filename caveats. + (line 6) * \input filenames: \input filenames. (line 6) +* \input quoted filename: \input quoted filename. + (line 6) * \input, and pipes: Shell escapes. (line 64) * \mag: dvicopy invocation. (line 20) * \mag <1>: dvitype invocation. (line 28) * \openin, and pipes: Shell escapes. (line 64) * \openout and security: tex invocation. (line 48) * \openout, and pipes: Shell escapes. (line 64) -* \output routine, and '\write': Shell escapes. (line 28) +* \output routine, and \write: Shell escapes. (line 28) * \pdfshellescape: Shell escapes. (line 64) -* \string: \input filenames. (line 59) +* \string, and \input filenames: \input filename caveats. + (line 29) * \tracingcharsubdef and MLTeX: \tracingcharsubdef. (line 6) * \tracinglostchars and MLTeX: \tracingcharsubdef. (line 11) * \write18 shell escape extension: Shell escapes. (line 6) * ^^ notation, avoiding: TCX files. (line 87) -* ~ expansion in filenames: \input filenames. (line 47) +* ~ expansion in filenames: \input filename caveats. + (line 17) * abbrv.bst: Basic BibTeX style files. (line 16) * accented character: TCX files. (line 6) @@ -3648,6 +3708,8 @@ Index * binaries, linking: Common options. (line 77) * blank lines, in TCX files: TCX files. (line 66) * boxes, memory for: Runtime options. (line 20) +* braced filename for \input: \input braced filename. + (line 6) * breakpoints, memory for: Runtime options. (line 20) * Breitenlohner, Peter: Introduction. (line 9) * BSTINPUTS, search path for bst files: bibtex invocation. (line 18) @@ -3660,7 +3722,9 @@ Index * byte swapping: Hardware and memory dumps. (line 13) * c-sources Makefile target: Additional targets. (line 12) -* change files, and MFT: mft invocation. (line 62) +* caveats for \input filenames: \input filename caveats. + (line 6) +* change files, and MFT: mft invocation. (line 63) * change files, and Tangle: tangle invocation. (line 11) * change files, and Weave: weave invocation. (line 14) * changing error messages style: Common options. (line 26) @@ -3680,7 +3744,7 @@ Index (line 69) * cm.base: Initial Metafont. (line 26) * cmbase.mf: Initial Metafont. (line 26) -* cmbase.mft: mft invocation. (line 72) +* cmbase.mft: mft invocation. (line 73) * cmmf.base not recommended: Initial Metafont. (line 26) * color, in DVItoMP: dvitomp invocation. (line 15) * comments, in TCX files: TCX files. (line 70) @@ -3693,7 +3757,7 @@ Index (line 6) * Computer Modern fonts, and Troff: mpost invocation. (line 65) * Computer Modern macros: Initial Metafont. (line 26) -* 'Computer Modern Typefaces', production of: mft invocation. (line 72) +* Computer Modern Typefaces, production of: mft invocation. (line 73) * configuration: Installation. (line 6) * configuration file reading: Path searching. (line 6) * configuration file values: Runtime options. (line 6) @@ -3737,6 +3801,8 @@ Index * DISPLAY: Online Metafont graphics. (line 76) * dot files, written by TeX programs: tex invocation. (line 48) +* double quote character, ignored in filenames: \input filenames. + (line 22) * downloading of fonts for MetaPost labels: mpost invocation. (line 70) * DrawingServant: Online Metafont graphics. (line 35) @@ -3758,18 +3824,19 @@ Index * dx horizontal escapement <1>: gftype invocation. (line 106) * dy vertical escapement: gftype invocation. (line 106) * dynamic array allocation: Runtime options. (line 35) -* dynamic Metafont mode definitions with 'smode': Modes. (line 28) +* dynamic Metafont mode definitions with smode: Modes. (line 28) * dynamic packing variable: pktype invocation. (line 44) * e response at error prompt: Editor invocation. (line 6) * e-circumflex: \charsubdef. (line 20) * e-TeX: TeX extensions. (line 10) -* e.mft: mft invocation. (line 72) +* e.mft: mft invocation. (line 73) * EC fonts: tex invocation. (line 41) * EC fonts <1>: mf invocation. (line 24) * editing of bitmap fonts: Font utilities available elsewhere. (line 23) * editor invoked at error: Editor invocation. (line 6) -* eight-bit characters in filenames: \input filenames. (line 34) +* eight-bit characters in filenames: \input filename caveats. + (line 12) * empty.tcx: TCX files. (line 48) * endian dependencies: Hardware and memory dumps. (line 6) @@ -3785,6 +3852,8 @@ Index * executables, shared initial and virgin: Initial and virgin. (line 6) * exit status, of shell escape: Shell escapes. (line 34) * expanded plain format: Formats. (line 54) +* expansion, and \input filenames: \input filename caveats. + (line 6) * extensions to TeX: TeX extensions. (line 6) * extra_mem_bot: Runtime options. (line 19) * FACE property: tftopl invocation. (line 95) @@ -3794,7 +3863,7 @@ Index * file formats for fonts: Font file formats. (line 6) * file recorder: Common options. (line 84) * filename conventions, in input files: \input filenames. (line 6) -* filenames starting with '-': Option conventions. (line 19) +* filenames starting with -: Option conventions. (line 19) * first line of the main input file: Common options. (line 98) * fixed-point arithmetic: Compile-time options. (line 21) @@ -3859,6 +3928,8 @@ Index * glue, memory for: Runtime options. (line 20) * glyph substitutions: MLTeX. (line 6) * gray font: gftodvi invocation. (line 29) +* group-delimited filename for \input: \input braced filename. + (line 6) * Gruff, Billy Goat: Triptrap. (line 6) * gsftopk: Font utilities available elsewhere. (line 35) @@ -3914,7 +3985,7 @@ Index * install-formats Make target: Additional targets. (line 17) * install-mems Make target: Additional targets. (line 34) * installation: Installation. (line 6) -* interaction between TCX files and '-8bit'.: TCX files. (line 104) +* interaction between TCX files and -8bit.: TCX files. (line 104) * interaction mode: Common options. (line 50) * international characters: TCX files. (line 6) * introduction: Introduction. (line 6) @@ -3984,7 +4055,8 @@ Index * memory dumps, creating: Creating memory dumps. (line 6) * mems Make target: Additional targets. (line 34) -* meta characters in filenames: \input filenames. (line 34) +* meta characters in filenames: \input filename caveats. + (line 12) * Metafont: Metafont. (line 6) * Metafont geometry: Online Metafont graphics. (line 69) @@ -4004,7 +4076,7 @@ Index (line 15) * MetaPost input files: mpost invocation. (line 30) * MetaPost invocation: mpost invocation. (line 6) -* MetaPost source, prettyprinting: mft invocation. (line 78) +* MetaPost source, prettyprinting: mft invocation. (line 79) * MetaPost, initial: Initial MetaPost. (line 6) * MetaPost, TeX, and Metafont: Three programs. (line 6) * metatype1: Font utilities available elsewhere. @@ -4044,6 +4116,8 @@ Index * mptrap.readme: Triptrap. (line 6) * MPX files, converting from DVI files: dvitomp invocation. (line 6) * Multi-lingual TeX: MLTeX. (line 6) +* multiple spaces, and \input filenames: \input filename caveats. + (line 6) * N tilde: \charsubdef. (line 36) * new graphics support for Metafont: Online Metafont graphics. (line 79) @@ -4055,7 +4129,8 @@ Index (line 65) * NO_X11WIN: Online Metafont graphics. (line 56) -* NUL, not allowed in filenames: \input filenames. (line 34) +* NUL, not allowed in filenames: \input filename caveats. + (line 12) * octal character codes, in TCX files: TCX files. (line 77) * offset for overflow labels: gftodvi invocation. (line 59) * online Metafont graphics: Online Metafont graphics. @@ -4081,7 +4156,7 @@ Index * path searching: Path searching. (line 6) * path searching debugging: Common options. (line 59) * PDF: TeX extensions. (line 20) -* PDF, and '.mps' files: mpost invocation. (line 86) +* PDF, and .mps files: mpost invocation. (line 86) * pdfTeX: TeX extensions. (line 20) * permissions, legal: Legalisms. (line 6) * PFA and PFB conversion: Font utilities available elsewhere. @@ -4114,13 +4189,13 @@ Index * plain.bst: Basic BibTeX style files. (line 11) * plain.fmt: Initial TeX. (line 13) -* plain.mft: mft invocation. (line 66) +* plain.mft: mft invocation. (line 67) * pltotf: pltotf invocation. (line 6) * pool file, writing: tangle invocation. (line 16) * Poole, Simon: Online Metafont graphics. (line 50) * pooltype: pooltype invocation. (line 6) -* portable filenames: \input filenames. (line 40) +* portable filenames: \input filenames. (line 25) * PostScript fonts, and Troff: mpost invocation. (line 65) * PostScript meets Metafont: MetaPost. (line 6) * PostScript output: mpost invocation. (line 35) @@ -4156,6 +4231,8 @@ Index * PXL files, explained: Font file formats. (line 39) * pxtoch: Font utilities available elsewhere. (line 23) +* quoted filename for \input: \input quoted filename. + (line 6) * Raichle, Bernd: MLTeX. (line 6) * reading, additional: Introduction. (line 60) * readonly directory, running TeX in: Output file location. @@ -4187,8 +4264,8 @@ Index (line 42) * security, and output files: tex invocation. (line 48) * security, and shell escapes: Shell escapes. (line 6) -* security, and 'write': mpost invocation. (line 92) -* security, and '\openout': tex invocation. (line 48) +* security, and write: mpost invocation. (line 92) +* security, and \openout: tex invocation. (line 48) * shapes: Metafont. (line 6) * sharing memory dumps: Hardware and memory dumps. (line 6) @@ -4218,7 +4295,7 @@ Index * string pool, writing: tangle invocation. (line 16) * string representation: pooltype invocation. (line 30) * style design, for BibTeX: bibtex invocation. (line 49) -* style files: mft invocation. (line 66) +* style files: mft invocation. (line 67) * substitutions of font glyphs: MLTeX. (line 6) * sun: Online Metafont graphics. (line 42) @@ -4235,6 +4312,8 @@ Index * system C library function: Shell escapes. (line 6) * system command: Shell escapes. (line 6) * T1 encoding and ISO input: TCX files. (line 48) +* tabs, and \input filenames: \input filename caveats. + (line 6) * Tachikawa, Elizabeth: Font file formats. (line 62) * tangle: tangle invocation. (line 6) * targets, additional Make: Additional targets. (line 6) @@ -4271,7 +4350,7 @@ Index (line 79) * TEXMFOUTPUT, used for reading: Output file location. (line 25) -* TEXMFOUTPUT, used if '.' unwritable: Output file location. +* TEXMFOUTPUT, used if . unwritable: Output file location. (line 19) * texput: tex invocation. (line 33) * TFM files, converting property lists to: pltotf invocation. (line 6) @@ -4286,6 +4365,8 @@ Index * time and date, in memory dumps: Hardware and memory dumps. (line 30) * title font: gftodvi invocation. (line 33) +* tokenization, and \input filenames: \input filename caveats. + (line 6) * toolkits, X: Online Metafont graphics. (line 59) * torture tests: Triptrap. (line 6) @@ -4390,75 +4471,83 @@ Index Tag Table: -Node: Top2754 -Node: Introduction3751 -Node: Installation6911 -Node: configure options9013 -Node: Compile-time options11035 -Node: Additional targets12137 -Node: Triptrap13414 -Node: Runtime options14941 -Node: Commonalities16699 -Node: Option conventions17300 -Node: Common options18523 -Node: Path searching22903 -Node: Output file location23875 -Node: Three programs25200 -Node: Initial and virgin25954 -Node: Memory dumps26883 -Node: Creating memory dumps27339 -Node: Determining the memory dump to use28550 -Node: Hardware and memory dumps30131 -Node: Editor invocation32581 -Node: \input filenames33448 -Node: TeX36441 -Node: tex invocation37592 -Node: Initial TeX44495 -Node: Formats45859 -Node: Languages and hyphenation48785 -Node: MLTeX49215 -Node: \charsubdef50703 -Node: \tracingcharsubdef53026 -Node: TCX files53601 -Node: patgen invocation59041 -Node: Shell escapes59747 -Node: IPC and TeX63327 -Node: TeX extensions63897 -Node: Metafont65028 -Node: mf invocation66316 -Node: Initial Metafont70153 -Node: Modes71783 -Node: Online Metafont graphics74033 -Node: gftodvi invocation77458 -Node: mft invocation80278 -Node: MetaPost84276 -Node: mpost invocation85038 -Node: Initial MetaPost90214 -Node: dvitomp invocation91136 -Node: BibTeX91801 -Node: bibtex invocation92162 -Node: Basic BibTeX style files94636 -Node: WEB95966 -Node: tangle invocation97207 -Node: weave invocation99330 -Node: pooltype invocation100737 -Node: DVI utilities101867 -Node: dvicopy invocation102799 -Node: dvitype invocation104082 -Node: dvitype output example106417 -Node: Font utilities109468 -Node: Font file formats110648 -Node: gftopk invocation113917 -Node: pktogf invocation115108 -Node: pktype invocation116274 -Node: gftype invocation119097 -Node: tftopl invocation123600 -Node: pltotf invocation128193 -Node: vftovp invocation129244 -Node: vptovf invocation131479 -Node: Font utilities available elsewhere132506 -Node: Legalisms134886 -Node: References137040 -Node: Index141607 +Node: Top2765 +Node: Introduction3760 +Node: Installation6918 +Node: configure options9020 +Node: Compile-time options11042 +Node: Additional targets12144 +Node: Triptrap13421 +Node: Runtime options14948 +Node: Commonalities16706 +Node: Option conventions17307 +Node: Common options18530 +Node: Path searching22910 +Node: Output file location23882 +Node: Three programs25207 +Node: Initial and virgin25973 +Node: Memory dumps26902 +Node: Creating memory dumps27358 +Node: Determining the memory dump to use28569 +Node: Hardware and memory dumps30150 +Node: Editor invocation32600 +Node: \input filenames33467 +Node: \input quoted filename35012 +Node: \input braced filename35793 +Node: \input filename caveats36727 +Node: TeX38245 +Node: tex invocation39396 +Node: Initial TeX46299 +Node: Formats47663 +Node: Languages and hyphenation50589 +Node: MLTeX51019 +Node: \charsubdef52507 +Node: \tracingcharsubdef54830 +Node: TCX files55405 +Node: patgen invocation60845 +Node: Shell escapes61551 +Node: IPC and TeX65131 +Node: TeX extensions65701 +Node: Metafont66832 +Node: mf invocation68120 +Node: Initial Metafont71957 +Node: Modes73587 +Node: Online Metafont graphics75837 +Node: gftodvi invocation79262 +Node: mft invocation82082 +Node: MetaPost86080 +Node: mpost invocation86842 +Node: Initial MetaPost92018 +Node: dvitomp invocation92940 +Node: BibTeX93605 +Node: bibtex invocation93966 +Node: Basic BibTeX style files96440 +Node: WEB97770 +Node: tangle invocation98979 +Node: weave invocation101102 +Node: pooltype invocation102509 +Node: DVI utilities103639 +Node: dvicopy invocation104571 +Node: dvitype invocation105854 +Node: dvitype output example108183 +Node: Font utilities111234 +Node: Font file formats112414 +Node: gftopk invocation115683 +Node: pktogf invocation116874 +Node: pktype invocation118040 +Node: gftype invocation120863 +Node: tftopl invocation125366 +Node: pltotf invocation129959 +Node: vftovp invocation131010 +Node: vptovf invocation133245 +Node: Font utilities available elsewhere134272 +Node: Legalisms136652 +Node: References138806 +Node: Index143373 End Tag Table + + +Local Variables: +coding: utf-8 +End: diff --git a/source/texk/web2c/doc/web2c.texi b/source/texk/web2c/doc/web2c.texi index 046086606..d44a2e480 100644 --- a/source/texk/web2c/doc/web2c.texi +++ b/source/texk/web2c/doc/web2c.texi @@ -12,7 +12,7 @@ The latest version is available from ftp://ftp.tug.org/tex/texinfo.tex.} @end tex @set version 2020 -@set month-year January 2020 +@set month-year March 2020 @c Define new indices for commands in auxiliary files, filenames, and options. @defcodeindex cm @@ -63,7 +63,7 @@ This file documents the installation and use of the programs in Web2c, an implementation of Donald Knuth's TeX system. Copyright @copyright{} 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, -2004, 2005, 2007, 2008, 2009 Karl Berry & Olaf Weber. +2004, 2005, 2007, 2008, 2009, 2010-2020 Karl Berry & Olaf Weber. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are @@ -88,7 +88,6 @@ except that this permission notice may be stated in a translation @titlepage - @title Web2c @subtitle for version @value{version} @subtitle @value{month-year} @@ -525,7 +524,7 @@ control some array sizes and other features are described in * Initial and virgin:: Making memory dumps vs. production runs. * Memory dumps:: .fmt/.base files for fast startup. * Editor invocation:: The `e' response at errors. -* \input filenames:: ~ and $ expansion in TeX/MF/MP. +* \input filenames:: Filename delimiters and Kpathsea expansion. @end menu @@ -808,9 +807,42 @@ Metafont and MetaPost, the statement terminator @samp{;} also works. @code{\input} that allow different notation; here we are concerned only with the primitive operation.) -As of Web2c version 7.5.3, double-quote characters can be used to -include spaces or other special cases. In typical use, the @samp{"} -characters surround the entire filename: +As (allowed) extensions to standard @TeX{}, Web2c also supports +specifying the filename in double quotes (@code{"some name"}) and in +braces (@code{@{"some name"@}}), which is convenient for filenames +containing spaces or other special characters, as described in the +sections below. + +In all cases, space tokens are ignored after the filename is read. + +@cindex @code{"} character, ignored in filenames +@cindex double quote character, ignored in filenames +Also, double quote (@code{"}) characters are ignored within the +filename; there is no way to read files whose names contain a @code{"}. + +@cindex portable filenames +However, for maximal portability of your document across systems, use +only the characters @samp{a}--@samp{z}, @samp{0}--@samp{9}, and +@samp{.}. Do not use anything but simple filenames, since directory +separators vary among systems; instead, add the necessary directories +to the appropriate search path. + +@menu +* Quotes: \input quoted filename. \input "some name" +* Braces: \input braced filename. \input @{some name@} +* Caveats: \input filename caveats. Tokenization, nulls, Kpathsea expansion. +@end menu + + +@node \input quoted filename +@subsubsection @code{\input} quoted filename: @code{\input "some name"} + +@cindex @code{\input} quoted filename +@cindex quoted filename for @code{\input} + +As of Web2c version 7.5.3 (2004), double-quote characters can be used +to include spaces or other special characters. In typical use, the +@samp{"} characters surround the entire filename: @example \input "filename with spaces" @end example @@ -821,16 +853,57 @@ can enclose any characters, as in: \input filename" "with" "spaces @end example -One more point. In @LaTeX{}, the quotes are needed inside the braces, thus +One more point. In @LaTeX{}, the quotes are needed inside the braces +of its @code{\input} macro, thus: @example \input@{a b@} % fails \input@{"a b"@} % ok @end example -This quoting mechanism comes into play @emph{after} @TeX{} has -tokenized and expanded the input. So, multiple spaces and tabs may be -seen as a single space, active characters such as @samp{~} are -expanded first, and so on. (See below.) +There is no way to quote the quote character. + + +@node \input braced filename +@subsubsection @code{\input} braced filename: @code{\input@{some name@}} + +@cindex @code{\input} braced (grouped) filename +@cindex braced filename for @code{\input} +@cindex group-delimited filename for @code{\input} + +As of Web2c 2020, @code{\input} filenames in @TeX{} engines (this does +not apply in Metafont and MetaPost) can also be specified within a +@TeX{} group, typically curly braces. For example: +@example +\input@{filename with spaces@} +@end example + +As always with @TeX{}, the brace characters are not hardwired; what +counts is the category code: the first token after the @code{\input} +must be of catcode@tie{}1 (begin group), and it is matched with the +next character of catcode@tie{}2 (end group). + +Within the group-delimited filename, braces are treated as normal +characters. + +As with all forms of filenames, following spaces are ignored (after +the end group), and double quote (@code{"}) characters are ignored +within the filename. + + +@node \input filename caveats +@subsubsection @code{\input} filename caveats + +@cindex @code{\input} filename caveats +@cindex caveats for @code{\input} filenames +@cindex tokenization, and @code{\input} filenames +@cindex expansion, and @code{\input} filenames +@cindex multiple spaces, and @code{\input} filenames +@cindex tabs, and @code{\input} filenames +The quoting mechanisms just described come into play @emph{after} +@TeX{} has tokenized and expanded the input. So, multiple spaces and +tabs will generally be seen as a single space, active characters such +as @samp{~} are expanded first (generally causing an error), and so +on. More examples below. @cindex NUL, not allowed in filenames @cindex eight-bit characters in filenames @@ -839,42 +912,29 @@ On the other hand, various C library routines and Unix itself use the null byte (character code zero, ASCII NUL) to terminate strings. So filenames in Web2c cannot contain nulls, even though @TeX{} itself does not treat NUL specially. -In addition, some older Unix variants do not allow eight-bit characters -(codes 128--255) in filenames. - -@cindex portable filenames -For maximal portability of your document across systems, use only the -characters @samp{a}--@samp{z}, @samp{0}--@samp{9}, and @samp{.}, and -restrict your filenames to at most eight characters (not including the -extension), and at most a three-character extension. Do not use -anything but simple filenames, since directory separators vary among -systems; instead, add the necessary directories to the appropriate -search path. @kindex ~ @r{expansion in filenames} @kindex $ @r{expansion in filenames} Finally, the present Web2c implementation does @samp{~} and @samp{$} -expansion on @var{name}, unlike Knuth's original implementation and -older versions of Web2c. Thus: +expansion on @var{name}, unlike Knuth's original implementation. +Thus: @example \input ~jsmith/$foo.bar @end example -will dereference the environment variable or Kpathsea config file value -@samp{foo} and read that file extended with @samp{.bar} in user -@samp{jsmith}'s home directory. You can also use braces, as in -@samp{$@{foo@}bar}, if you want to follow the variable name with a letter, -numeral, or @samp{_}. +will dereference the environment variable or Kpathsea config file +value @samp{foo} and read that file, extended with @samp{.bar}, in +user @samp{jsmith}'s home directory. You can also use braces in the +variable expansion, as in @samp{$@{foo@}bar}, if you want to follow +the variable name with a letter, numeral, or @samp{_}. (So another way to get a program to read a filename containing whitespace is to define an environment variable and dereference it.) -@findex \string -In all the common @TeX{} formats (plain @TeX{}, @LaTeX{}, AMS@TeX{}), -the characters @samp{~} and @samp{$} have special category codes, so to -actually use these in a document you have to change their catcodes or -use @code{\string}. (The result is unportable anyway, see the -suggestions above.) The place where they are most likely to be useful -is when typing interactively. +@findex \string@r{, and @code{\input filenames}} +In all the common @TeX{} formats (plain @TeX{}, @LaTeX{}, Con@TeX{}t, +AMS@TeX{}, @dots{}), the characters @samp{~} and @samp{$} have special +category codes, so to actually use these in a document you have to +change their catcodes or use @code{\string}. @node TeX diff --git a/source/texk/web2c/luatexdir/ChangeLog b/source/texk/web2c/luatexdir/ChangeLog index 33b871083..8a1f76702 100644 --- a/source/texk/web2c/luatexdir/ChangeLog +++ b/source/texk/web2c/luatexdir/ChangeLog @@ -1,7 +1,29 @@ +2020-03-09 Luigi Scarso <luigi.scarso@gmail.com> + * texluahb / texluahbjit for luahbtex / luajithbtex + +2020-03-09 Luigi Scarso <luigi.scarso@gmail.com> + * --shell-restricted now forbids loading of dso (dll/so object) + +2020-03-09 Luigi Scarso <luigi.scarso@gmail.com> + * append_vlist : node|nil [prevdepth] (fix + extension/warning) (HH) + +2020-03-01 Luigi Scarso <luigi.scarso@gmail.com> + * fixed lua stack overflow in run_put_next (M. Kruger) + +2020-02-29 Luigi Scarso <luigi.scarso@gmail.com> + * luahbtex: add (single codepoint) "add" method to buffer (M.Kruger) + +2020-03-06 Karl Berry <karl@tug.org> + + * am/luatex.am (texlua[jit][c]) [LUA[JIT]HBTEX && !LUA[JIT]TEX]: + keep these as links to base lua[jit]tex, not overwriting + with links to luahb[jit]tex, unless the base luatex is not installed. + https://tug.org/pipermail/tex-live/2020-March/044948.html + (and preceding) + 2020-02-12 Luigi Scarso <luigi.scarso@gmail.com> * restore state for \input delimited with {} - 2020-02-11 Luigi Scarso <luigi.scarso@gmail.com> * patches for -fno-common (thanks to D. Seifert of Gentoo team) diff --git a/source/texk/web2c/luatexdir/am/luatex.am b/source/texk/web2c/luatexdir/am/luatex.am index ab48c047c..31210a4ed 100644 --- a/source/texk/web2c/luatexdir/am/luatex.am +++ b/source/texk/web2c/luatexdir/am/luatex.am @@ -24,7 +24,10 @@ noinst_PROGRAMS += call_luahbtex install_exe_links += install-luahbtex-links uninstall_exe_links += uninstall-luahbtex-links else !WIN32 +if !LUATEX +# keep texlua[c] as links to luatex unless luatex is not installed. bin_links += luahbtex$(EXEEXT):texlua luahbtex$(EXEEXT):texluac +endif !LUATEX endif !WIN32 endif LUAHBTEX @@ -46,7 +49,10 @@ noinst_PROGRAMS += call_luajithbtex install_exe_links += install-luajithbtex-links uninstall_exe_links += uninstall-luajithbtex-links else !WIN32 +if !LUAJITTEX +# keep texluajit[c] as links to luajittex unless luajittex is not installed. bin_links += luajithbtex$(EXEEXT):texluajit luajithbtex$(EXEEXT):texluajitc +endif !LUAJITTEX endif !WIN32 endif LUAJITHBTEX diff --git a/source/texk/web2c/luatexdir/font/luafont.c b/source/texk/web2c/luatexdir/font/luafont.c index dd0c68564..68068639d 100644 --- a/source/texk/web2c/luatexdir/font/luafont.c +++ b/source/texk/web2c/luatexdir/font/luafont.c @@ -947,8 +947,11 @@ static void read_char_packets(lua_State * L, int *l_fonts, charinfo * co, intern int pc = count_char_packet_bytes(L); if (pc <= 0) return; - while (l_fonts[(max_f + 1)] != 0) - max_f++; + if (l_fonts != NULL) { + while (l_fonts[(max_f + 1)] != 0) { + max_f++; + } + } cp = cpackets = xmalloc((unsigned) (pc + 1)); for (i = 1; i <= (int) lua_rawlen(L, -1); i++) { lua_rawgeti(L, -1, i); @@ -959,8 +962,14 @@ static void read_char_packets(lua_State * L, int *l_fonts, charinfo * co, intern s = lua_tostring(L, -1); cmd = 0; if (lua_key_eq(s, font)) { + if (l_fonts == NULL) { + normal_error("vf command","no font table found"); + } cmd = packet_font_code; } else if (lua_key_eq(s, char)) { + if (l_fonts == NULL) { + normal_error("vf command","no font table found"); + } cmd = packet_char_code; if (ff == 0) { append_packet(packet_font_code); @@ -968,6 +977,9 @@ static void read_char_packets(lua_State * L, int *l_fonts, charinfo * co, intern do_store_four(ff); } } else if (lua_key_eq(s, slot)) { + if (l_fonts == NULL) { + normal_error("vf command","no font table found"); + } /*tex we could be sparse but no real reason */ cmd = packet_nop_code; lua_rawgeti(L, -2, 2); @@ -2600,13 +2612,12 @@ halfword handle_kerning(halfword head, halfword tail) /*tex The ligaturing and kerning \LUA\ interface: */ -static halfword run_lua_ligkern_callback(halfword head, halfword tail, int callback_id) +static void run_lua_ligkern_callback(halfword head, halfword tail, int callback_id) { int i; int top = lua_gettop(Luas); if (!get_callback(Luas, callback_id)) { lua_settop(Luas, top); - return tail; } nodelist_to_lua(Luas, head); nodelist_to_lua(Luas, tail); @@ -2614,34 +2625,40 @@ static halfword run_lua_ligkern_callback(halfword head, halfword tail, int callb formatted_warning("ligkern","error: %s",lua_tostring(Luas, -1)); lua_settop(Luas, top); luatex_error(Luas, (i == LUA_ERRRUN ? 0 : 1)); - return tail; } if (fix_node_lists) { fix_node_list(head); } lua_settop(Luas, top); - return tail; } halfword new_ligkern(halfword head, halfword tail) { int callback_id = 0; + if (! head) + return null; if (vlink(head) == null) return tail; callback_id = callback_defined(ligaturing_callback); if (callback_id > 0) { - tail = run_lua_ligkern_callback(head, tail, callback_id); - if (tail == null) - tail = tail_of_list(head); + halfword save_tail = null; + if (tail) { + save_tail = vlink(tail); + vlink(tail) = null; + } + run_lua_ligkern_callback(head, tail, callback_id); + tail = tail_of_list(head); + if (save_tail) { + try_couple_nodes(tail, save_tail); + } + tail = tail_of_list(head); } else if (callback_id == 0) { tail = handle_ligaturing(head, tail); } callback_id = callback_defined(kerning_callback); if (callback_id > 0) { - tail = run_lua_ligkern_callback(head, tail, callback_id); - if (tail == null) { - tail = tail_of_list(head); - } + run_lua_ligkern_callback(head, tail, callback_id); + tail = tail_of_list(head); } else if (callback_id == 0) { halfword nest1 = new_node(nesting_node, 1); halfword cur = vlink(head); diff --git a/source/texk/web2c/luatexdir/lua/lnewtokenlib.c b/source/texk/web2c/luatexdir/lua/lnewtokenlib.c index d1ef55ad1..6af006a53 100644 --- a/source/texk/web2c/luatexdir/lua/lnewtokenlib.c +++ b/source/texk/web2c/luatexdir/lua/lnewtokenlib.c @@ -264,6 +264,7 @@ inline static int run_put_next(lua_State * L) token_link(t) = x; } t = x; + lua_pop(L, 1); } lua_pop(L, 1); } diff --git a/source/texk/web2c/luatexdir/lua/luainit.c b/source/texk/web2c/luatexdir/lua/luainit.c index d32a7fdc0..11cfc2531 100644 --- a/source/texk/web2c/luatexdir/lua/luainit.c +++ b/source/texk/web2c/luatexdir/lua/luainit.c @@ -323,10 +323,12 @@ static void parse_options(int ac, char **av) opterr = 0; #ifdef LuajitTeX if ((strstr(argv[0], "luajittexlua") != NULL) || - (strstr(argv[0], "texluajit") != NULL)) { + (strstr(argv[0], "texluajit") != NULL) || + (strstr(argv[0], "texluahbjit") != NULL) ) { #else if ((strstr(argv[0], "luatexlua") != NULL) || - (strstr(argv[0], "texlua") != NULL)) { + (strstr(argv[0], "texlua") != NULL) || + (strstr(argv[0], "texluahb") != NULL)) { #endif lua_only = 1; luainit = 1; diff --git a/source/texk/web2c/luatexdir/lua/luanode.c b/source/texk/web2c/luatexdir/lua/luanode.c index a0c97e37d..502c40707 100644 --- a/source/texk/web2c/luatexdir/lua/luanode.c +++ b/source/texk/web2c/luatexdir/lua/luanode.c @@ -180,16 +180,17 @@ int lua_appendtovlist_callback(halfword box, int location, halfword prev_depth, luatex_error(Luas, (i == LUA_ERRRUN ? 0 : 1)); return 0; } - if (lua_type(Luas,-1) == LUA_TNUMBER) { - *next_depth = lua_roundnumber(Luas,-1); - *prev_set = true; - if (lua_type(Luas, -2) != LUA_TNIL) { - p = check_isnode(Luas, -2); - *result = *p; - } - } else if (lua_type(Luas, -1) != LUA_TNIL) { - p = check_isnode(Luas, -1); + if (lua_type(Luas, -2) == LUA_TUSERDATA) { + p = check_isnode(Luas, -2); *result = *p; + } else if (lua_type(Luas, -2) == LUA_TNIL) { + *result = null; + } else { + normal_warning("append to vlist","error: node or nil expected"); + } + if (lua_type(Luas, -1) == LUA_TNUMBER) { + *next_depth = lua_roundnumber(Luas, -1); + *prev_set = 1; } return 1; } diff --git a/source/texk/web2c/luatexdir/lua/luatex-core.c b/source/texk/web2c/luatexdir/lua/luatex-core.c index 3fb4c0fd1..95396765c 100644 --- a/source/texk/web2c/luatexdir/lua/luatex-core.c +++ b/source/texk/web2c/luatexdir/lua/luatex-core.c @@ -27,7 +27,7 @@ int load_luatex_core_lua (lua_State * L) 0x20, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x54, 0x65, 0x61, 0x6d, 0x27, 0x2c, 0x0a, 0x2d, 0x2d, 0x20, 0x7d, 0x0a, 0x0a, 0x4c, 0x55, 0x41, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x52, 0x45, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x20, 0x3d, 0x20, 0x31, 0x2e, - 0x31, 0x31, 0x32, 0x20, 0x2d, 0x2d, 0x20, 0x77, 0x65, 0x20, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, + 0x31, 0x32, 0x30, 0x20, 0x2d, 0x2d, 0x20, 0x77, 0x65, 0x20, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x68, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x65, 0x64, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, @@ -350,318 +350,327 @@ int load_luatex_core_lua (lua_State * L) 0x20, 0x73, 0x61, 0x66, 0x65, 0x72, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x6f, 0x72, 0x20, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, 0x7e, 0x3d, 0x20, 0x31, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x66, 0x66, 0x69, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x28, 0x27, 0x66, - 0x66, 0x69, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6b, 0x2c, 0x20, - 0x76, 0x20, 0x69, 0x6e, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x2c, 0x20, 0x66, 0x66, 0x69, 0x20, 0x64, - 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6b, 0x20, 0x7e, - 0x3d, 0x20, 0x27, 0x67, 0x63, 0x27, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x5b, 0x6b, 0x5d, 0x20, 0x3d, - 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, - 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, 0x66, 0x20, - 0x6d, 0x64, 0x35, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x20, 0x73, 0x75, 0x6d, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x64, 0x35, - 0x2e, 0x73, 0x75, 0x6d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x67, - 0x73, 0x75, 0x62, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, - 0x73, 0x75, 0x62, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, - 0x79, 0x74, 0x65, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x62, - 0x79, 0x74, 0x65, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75, 0x6d, 0x68, 0x65, 0x78, 0x61, 0x20, 0x74, 0x68, 0x65, 0x6e, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75, 0x6d, 0x68, 0x65, 0x78, 0x61, 0x28, 0x6b, 0x29, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x28, 0x67, 0x73, 0x75, 0x62, 0x28, 0x73, 0x75, 0x6d, 0x28, 0x6b, 0x29, - 0x2c, 0x20, 0x22, 0x2e, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, - 0x63, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x28, 0x22, 0x25, 0x30, 0x32, 0x78, 0x22, 0x2c, 0x62, 0x79, 0x74, 0x65, 0x28, 0x63, 0x29, 0x29, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, - 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75, 0x6d, 0x48, 0x45, 0x58, 0x41, 0x20, 0x74, - 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75, 0x6d, 0x48, 0x45, 0x58, 0x41, - 0x28, 0x6b, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x67, 0x73, 0x75, 0x62, 0x28, 0x73, 0x75, 0x6d, - 0x28, 0x6b, 0x29, 0x2c, 0x20, 0x22, 0x2e, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x28, 0x63, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x28, 0x22, 0x25, 0x30, 0x32, 0x58, 0x22, 0x2c, 0x62, 0x79, 0x74, 0x65, 0x28, - 0x63, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x65, 0x6e, 0x64, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, - 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, - 0x2d, 0x2d, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x3a, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6d, 0x69, 0x67, 0x68, 0x74, 0x20, 0x67, 0x6f, 0x20, - 0x61, 0x77, 0x61, 0x79, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x75, 0x6e, 0x70, - 0x61, 0x63, 0x6b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6e, 0x70, - 0x61, 0x63, 0x6b, 0x20, 0x3d, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x75, 0x6e, 0x70, 0x61, - 0x63, 0x6b, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x70, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x73, 0x20, 0x74, - 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, - 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x73, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x72, 0x73, 0x0a, 0x65, 0x6e, 0x64, 0x0a, - 0x0a, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x61, 0x64, - 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x0a, 0x65, 0x6e, - 0x64, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x3a, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6d, 0x69, 0x67, 0x68, 0x74, 0x20, - 0x73, 0x74, 0x61, 0x79, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x62, 0x69, 0x74, 0x33, 0x32, 0x20, 0x74, - 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x6c, 0x75, 0x61, 0x20, - 0x35, 0x2e, 0x32, 0x3a, 0x20, 0x77, 0x65, 0x27, 0x72, 0x65, 0x20, 0x6f, 0x6b, 0x61, 0x79, 0x0a, - 0x0a, 0x65, 0x6c, 0x73, 0x65, 0x69, 0x66, 0x20, 0x75, 0x74, 0x66, 0x38, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x6c, 0x75, 0x61, 0x20, 0x35, 0x2e, - 0x33, 0x3a, 0x20, 0x20, 0x62, 0x69, 0x74, 0x77, 0x69, 0x73, 0x65, 0x2e, 0x6c, 0x75, 0x61, 0x2c, - 0x20, 0x76, 0x20, 0x31, 0x2e, 0x32, 0x34, 0x20, 0x32, 0x30, 0x31, 0x34, 0x2f, 0x31, 0x32, 0x2f, - 0x32, 0x36, 0x20, 0x31, 0x37, 0x3a, 0x32, 0x30, 0x3a, 0x35, 0x33, 0x20, 0x72, 0x6f, 0x62, 0x65, - 0x72, 0x74, 0x6f, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x69, 0x74, 0x33, 0x32, 0x20, 0x3d, - 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x28, 0x20, 0x5b, 0x5b, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, - 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x20, 0x2d, 0x2d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6f, 0x66, 0x3a, 0x20, - 0x61, 0x72, 0x67, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x2e, 0x2e, 0x2e, 0x20, 0x7d, 0x0a, 0x0a, 0x62, - 0x69, 0x74, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x62, 0x6e, 0x6f, 0x74, 0x20, - 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x61, 0x29, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7e, 0x61, 0x20, 0x26, 0x20, 0x30, - 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, - 0x0a, 0x20, 0x20, 0x62, 0x61, 0x6e, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x2c, 0x20, 0x7a, 0x2c, 0x20, 0x2e, 0x2e, 0x2e, - 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x7a, 0x20, 0x74, - 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x28, 0x28, 0x78, 0x20, 0x6f, 0x72, 0x20, 0x2d, 0x31, 0x29, 0x20, 0x26, 0x20, 0x28, 0x79, + 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x6c, 0x69, 0x62, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, + 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x72, 0x73, 0x5b, 0x34, 0x5d, 0x20, 0x3d, + 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x72, 0x73, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, + 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x20, 0x3d, 0x20, 0x72, + 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x28, 0x27, 0x66, 0x66, 0x69, 0x27, 0x29, 0x0a, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x66, 0x66, 0x69, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6b, 0x2c, 0x20, 0x76, 0x20, + 0x69, 0x6e, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x2c, 0x20, 0x66, 0x66, 0x69, 0x20, 0x64, 0x6f, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6b, + 0x20, 0x7e, 0x3d, 0x20, 0x27, 0x67, 0x63, 0x27, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, + 0x69, 0x5b, 0x6b, 0x5d, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x65, + 0x6e, 0x64, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x6d, 0x64, 0x35, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x75, 0x6d, 0x20, 0x20, + 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75, 0x6d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x67, 0x73, 0x75, 0x62, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x73, 0x75, 0x62, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x3d, 0x20, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x62, 0x79, 0x74, 0x65, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75, 0x6d, 0x68, 0x65, + 0x78, 0x61, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75, 0x6d, + 0x68, 0x65, 0x78, 0x61, 0x28, 0x6b, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x67, 0x73, 0x75, 0x62, + 0x28, 0x73, 0x75, 0x6d, 0x28, 0x6b, 0x29, 0x2c, 0x20, 0x22, 0x2e, 0x22, 0x2c, 0x20, 0x66, 0x75, + 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x63, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x28, 0x22, 0x25, 0x30, 0x32, 0x78, 0x22, 0x2c, 0x62, + 0x79, 0x74, 0x65, 0x28, 0x63, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75, + 0x6d, 0x48, 0x45, 0x58, 0x41, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x64, 0x35, 0x2e, + 0x73, 0x75, 0x6d, 0x48, 0x45, 0x58, 0x41, 0x28, 0x6b, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x67, + 0x73, 0x75, 0x62, 0x28, 0x73, 0x75, 0x6d, 0x28, 0x6b, 0x29, 0x2c, 0x20, 0x22, 0x2e, 0x22, 0x2c, + 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x63, 0x29, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x28, 0x22, 0x25, 0x30, 0x32, 0x58, + 0x22, 0x2c, 0x62, 0x79, 0x74, 0x65, 0x28, 0x63, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, + 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, + 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x3a, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6d, 0x69, + 0x67, 0x68, 0x74, 0x20, 0x67, 0x6f, 0x20, 0x61, 0x77, 0x61, 0x79, 0x0a, 0x0a, 0x69, 0x66, 0x20, + 0x6e, 0x6f, 0x74, 0x20, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x20, 0x3d, 0x20, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x2e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, + 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x6c, 0x6f, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x73, 0x20, 0x3d, + 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, + 0x72, 0x73, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, + 0x6f, 0x61, 0x64, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, + 0x6c, 0x6f, 0x61, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x3a, 0x20, 0x74, 0x68, 0x69, 0x73, + 0x20, 0x6d, 0x69, 0x67, 0x68, 0x74, 0x20, 0x73, 0x74, 0x61, 0x79, 0x0a, 0x0a, 0x69, 0x66, 0x20, + 0x62, 0x69, 0x74, 0x33, 0x32, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x2d, 0x2d, 0x20, 0x6c, 0x75, 0x61, 0x20, 0x35, 0x2e, 0x32, 0x3a, 0x20, 0x77, 0x65, 0x27, 0x72, + 0x65, 0x20, 0x6f, 0x6b, 0x61, 0x79, 0x0a, 0x0a, 0x65, 0x6c, 0x73, 0x65, 0x69, 0x66, 0x20, 0x75, + 0x74, 0x66, 0x38, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, + 0x20, 0x6c, 0x75, 0x61, 0x20, 0x35, 0x2e, 0x33, 0x3a, 0x20, 0x20, 0x62, 0x69, 0x74, 0x77, 0x69, + 0x73, 0x65, 0x2e, 0x6c, 0x75, 0x61, 0x2c, 0x20, 0x76, 0x20, 0x31, 0x2e, 0x32, 0x34, 0x20, 0x32, + 0x30, 0x31, 0x34, 0x2f, 0x31, 0x32, 0x2f, 0x32, 0x36, 0x20, 0x31, 0x37, 0x3a, 0x32, 0x30, 0x3a, + 0x35, 0x33, 0x20, 0x72, 0x6f, 0x62, 0x65, 0x72, 0x74, 0x6f, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x62, 0x69, 0x74, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x28, 0x20, 0x5b, + 0x5b, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x3d, + 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x2d, 0x2d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, + 0x61, 0x64, 0x20, 0x6f, 0x66, 0x3a, 0x20, 0x61, 0x72, 0x67, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x2e, + 0x2e, 0x2e, 0x20, 0x7d, 0x0a, 0x0a, 0x62, 0x69, 0x74, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x62, 0x6e, 0x6f, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x28, 0x61, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x7e, 0x61, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, + 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x62, 0x61, 0x6e, 0x64, 0x20, 0x3d, + 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x2c, + 0x20, 0x7a, 0x2c, 0x20, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, + 0x6e, 0x6f, 0x74, 0x20, 0x7a, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x28, 0x78, 0x20, 0x6f, 0x72, 0x20, 0x2d, + 0x31, 0x29, 0x20, 0x26, 0x20, 0x28, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x2d, 0x31, 0x29, 0x29, 0x20, + 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x78, 0x20, 0x26, 0x20, 0x79, 0x20, 0x26, 0x20, + 0x7a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x3d, 0x31, 0x2c, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x22, 0x23, 0x22, 0x2c, 0x2e, 0x2e, 0x2e, 0x29, 0x20, + 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, + 0x20, 0x72, 0x65, 0x73, 0x20, 0x26, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x69, 0x2c, + 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x20, + 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x62, 0x6f, + 0x72, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x78, 0x2c, + 0x20, 0x79, 0x2c, 0x20, 0x7a, 0x2c, 0x20, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x7a, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x28, 0x78, 0x20, 0x6f, + 0x72, 0x20, 0x30, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x30, 0x29, 0x29, + 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x78, 0x20, 0x7c, 0x20, 0x79, 0x20, 0x7c, + 0x20, 0x7a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x3d, 0x31, + 0x2c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x22, 0x23, 0x22, 0x2c, 0x2e, 0x2e, 0x2e, 0x29, + 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x20, + 0x3d, 0x20, 0x72, 0x65, 0x73, 0x20, 0x7c, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x69, + 0x2c, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, + 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x62, + 0x78, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, + 0x78, 0x2c, 0x20, 0x79, 0x2c, 0x20, 0x7a, 0x2c, 0x20, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x7a, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x28, 0x78, + 0x20, 0x6f, 0x72, 0x20, 0x30, 0x29, 0x20, 0x7e, 0x20, 0x28, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x30, + 0x29, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x78, 0x20, 0x7e, 0x20, 0x79, + 0x20, 0x7e, 0x20, 0x7a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, + 0x3d, 0x31, 0x2c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x22, 0x23, 0x22, 0x2c, 0x2e, 0x2e, + 0x2e, 0x29, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x73, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73, 0x20, 0x7e, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x28, 0x69, 0x2c, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, + 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, + 0x65, 0x73, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, + 0x20, 0x62, 0x74, 0x65, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x2c, 0x20, 0x7a, 0x2c, 0x20, 0x2e, 0x2e, 0x2e, 0x29, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x7a, 0x20, 0x74, 0x68, + 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x28, 0x28, 0x28, 0x78, 0x20, 0x6f, 0x72, 0x20, 0x2d, 0x31, 0x29, 0x20, 0x26, 0x20, 0x28, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x2d, 0x31, 0x29, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, - 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, - 0x20, 0x78, 0x20, 0x26, 0x20, 0x79, 0x20, 0x26, 0x20, 0x7a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x3d, 0x31, 0x2c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, - 0x22, 0x23, 0x22, 0x2c, 0x2e, 0x2e, 0x2e, 0x29, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73, 0x20, 0x26, 0x20, - 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x69, 0x2c, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, - 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, - 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x62, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x2c, 0x20, 0x7a, 0x2c, 0x20, - 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x7a, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x28, 0x28, 0x78, 0x20, 0x6f, 0x72, 0x20, 0x30, 0x29, 0x20, 0x7c, 0x20, - 0x28, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x30, 0x29, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, - 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x20, - 0x3d, 0x20, 0x78, 0x20, 0x7c, 0x20, 0x79, 0x20, 0x7c, 0x20, 0x7a, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x3d, 0x31, 0x2c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x28, 0x22, 0x23, 0x22, 0x2c, 0x2e, 0x2e, 0x2e, 0x29, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73, 0x20, 0x7c, - 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x69, 0x2c, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, - 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, - 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x62, 0x78, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x2c, 0x20, 0x7a, - 0x2c, 0x20, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, - 0x74, 0x20, 0x7a, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x28, 0x78, 0x20, 0x6f, 0x72, 0x20, 0x30, 0x29, 0x20, - 0x7e, 0x20, 0x28, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x30, 0x29, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, - 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, - 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x72, 0x65, - 0x73, 0x20, 0x3d, 0x20, 0x78, 0x20, 0x7e, 0x20, 0x79, 0x20, 0x7e, 0x20, 0x7a, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x3d, 0x31, 0x2c, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x28, 0x22, 0x23, 0x22, 0x2c, 0x2e, 0x2e, 0x2e, 0x29, 0x20, 0x64, 0x6f, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73, - 0x20, 0x7e, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x69, 0x2c, 0x2e, 0x2e, 0x2e, 0x29, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x20, 0x26, 0x20, 0x30, 0x78, - 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, - 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x62, 0x74, 0x65, 0x73, 0x74, 0x20, - 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x78, 0x2c, 0x20, 0x79, - 0x2c, 0x20, 0x7a, 0x2c, 0x20, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x7a, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x28, 0x28, 0x78, 0x20, 0x6f, 0x72, - 0x20, 0x2d, 0x31, 0x29, 0x20, 0x26, 0x20, 0x28, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x2d, 0x31, 0x29, - 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x29, 0x20, - 0x7e, 0x3d, 0x20, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, - 0x78, 0x20, 0x26, 0x20, 0x79, 0x20, 0x26, 0x20, 0x7a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x69, 0x3d, 0x31, 0x2c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x22, - 0x23, 0x22, 0x2c, 0x2e, 0x2e, 0x2e, 0x29, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73, 0x20, 0x26, - 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x69, 0x2c, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x72, 0x65, 0x73, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, - 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x29, 0x20, 0x7e, 0x3d, 0x20, 0x30, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x6c, - 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x20, 0x28, 0x28, 0x61, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, - 0x46, 0x46, 0x46, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x62, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, - 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, - 0x20, 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x28, 0x61, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, - 0x46, 0x46, 0x46, 0x46, 0x46, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x62, 0x29, 0x20, 0x26, 0x20, 0x30, - 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, - 0x0a, 0x20, 0x20, 0x61, 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, - 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x62, 0x20, 0x3c, 0x3d, 0x20, - 0x30, 0x20, 0x6f, 0x72, 0x20, 0x28, 0x61, 0x20, 0x26, 0x20, 0x30, 0x78, 0x38, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x61, 0x20, - 0x3e, 0x3e, 0x20, 0x62, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, - 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x28, 0x61, 0x20, 0x3e, 0x3e, 0x20, - 0x62, 0x29, 0x20, 0x7c, 0x20, 0x7e, 0x28, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, - 0x46, 0x20, 0x3e, 0x3e, 0x20, 0x62, 0x29, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, - 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, - 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x6c, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x20, 0x3d, - 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x61, 0x20, 0x2c, 0x62, 0x29, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x62, 0x20, 0x26, 0x20, 0x33, 0x31, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, - 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x28, - 0x61, 0x20, 0x3c, 0x3c, 0x20, 0x62, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x61, 0x20, 0x3e, 0x3e, 0x20, - 0x28, 0x33, 0x32, 0x20, 0x2d, 0x20, 0x62, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, - 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x72, 0x72, 0x6f, - 0x74, 0x61, 0x74, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x2d, + 0x46, 0x46, 0x46, 0x46, 0x46, 0x29, 0x20, 0x7e, 0x3d, 0x20, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x78, 0x20, 0x26, 0x20, 0x79, 0x20, 0x26, 0x20, 0x7a, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x3d, 0x31, 0x2c, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x22, 0x23, 0x22, 0x2c, 0x2e, 0x2e, 0x2e, 0x29, 0x20, 0x64, + 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x20, + 0x3d, 0x20, 0x72, 0x65, 0x73, 0x20, 0x26, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x69, + 0x2c, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x72, 0x65, + 0x73, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x29, 0x20, + 0x7e, 0x3d, 0x20, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x65, + 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x6c, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x3d, 0x20, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x28, 0x61, 0x20, 0x26, 0x20, + 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x62, + 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, + 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x3d, + 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x28, 0x61, 0x20, + 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x29, 0x20, 0x3e, 0x3e, + 0x20, 0x62, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, + 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x61, 0x72, 0x73, 0x68, 0x69, 0x66, + 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x61, 0x2c, + 0x20, 0x62, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x26, 0x20, + 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x62, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x20, 0x6f, 0x72, 0x20, 0x28, 0x61, 0x20, 0x26, + 0x20, 0x30, 0x78, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x29, 0x20, 0x3d, 0x3d, 0x20, + 0x30, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x28, 0x61, 0x20, 0x3e, 0x3e, 0x20, 0x62, 0x29, 0x20, 0x26, 0x20, 0x30, + 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, + 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x28, 0x28, 0x61, 0x20, 0x3e, 0x3e, 0x20, 0x62, 0x29, 0x20, 0x7c, 0x20, 0x7e, 0x28, 0x30, 0x78, + 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x20, 0x3e, 0x3e, 0x20, 0x62, 0x29, 0x29, 0x20, + 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x6c, 0x72, + 0x6f, 0x74, 0x61, 0x74, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x28, 0x61, 0x20, 0x2c, 0x62, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x62, 0x20, 0x26, 0x20, 0x33, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x20, 0x3c, 0x3c, 0x20, 0x62, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x61, 0x20, 0x3e, 0x3e, 0x20, 0x28, 0x33, 0x32, 0x20, 0x2d, 0x20, 0x62, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, - 0x2c, 0x0a, 0x20, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x61, 0x2c, 0x20, 0x66, 0x2c, 0x20, 0x77, 0x29, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x61, 0x20, 0x3e, - 0x3e, 0x20, 0x66, 0x29, 0x20, 0x26, 0x20, 0x7e, 0x28, 0x2d, 0x31, 0x20, 0x3c, 0x3c, 0x20, 0x28, - 0x77, 0x20, 0x6f, 0x72, 0x20, 0x31, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, - 0x20, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x61, 0x2c, 0x20, 0x76, 0x2c, 0x20, 0x66, 0x2c, 0x20, 0x77, - 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x61, 0x73, 0x6b, - 0x20, 0x3d, 0x20, 0x7e, 0x28, 0x2d, 0x31, 0x20, 0x3c, 0x3c, 0x20, 0x28, 0x77, 0x20, 0x6f, 0x72, - 0x20, 0x31, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x28, 0x28, 0x61, 0x20, 0x26, 0x20, 0x7e, 0x28, 0x6d, 0x61, 0x73, 0x6b, 0x20, 0x3c, 0x3c, 0x20, - 0x66, 0x29, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x28, 0x76, 0x20, 0x26, 0x20, 0x6d, 0x61, 0x73, 0x6b, - 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x66, 0x29, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, - 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x7d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x5d, 0x20, 0x29, 0x0a, 0x0a, 0x65, 0x6c, 0x73, - 0x65, 0x69, 0x66, 0x20, 0x62, 0x69, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x6c, 0x75, 0x61, 0x6a, 0x69, 0x74, 0x20, 0x28, 0x66, 0x6f, 0x72, - 0x20, 0x6e, 0x6f, 0x77, 0x29, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x69, 0x74, 0x33, 0x32, - 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x28, 0x20, 0x5b, 0x5b, 0x0a, 0x6c, 0x6f, 0x63, - 0x61, 0x6c, 0x20, 0x62, 0x61, 0x6e, 0x64, 0x2c, 0x20, 0x62, 0x6e, 0x6f, 0x74, 0x2c, 0x20, 0x72, - 0x73, 0x68, 0x69, 0x66, 0x74, 0x2c, 0x20, 0x6c, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x3d, 0x20, - 0x62, 0x69, 0x74, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2c, 0x20, 0x62, 0x69, 0x74, 0x2e, 0x62, 0x6e, - 0x6f, 0x74, 0x2c, 0x20, 0x62, 0x69, 0x74, 0x2e, 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0x2c, 0x20, - 0x62, 0x69, 0x74, 0x2e, 0x6c, 0x73, 0x68, 0x69, 0x66, 0x74, 0x0a, 0x0a, 0x62, 0x69, 0x74, 0x33, - 0x32, 0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x61, 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, - 0x3d, 0x20, 0x62, 0x69, 0x74, 0x2e, 0x61, 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0x2c, 0x0a, 0x20, - 0x20, 0x62, 0x61, 0x6e, 0x64, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x62, 0x61, 0x6e, 0x64, 0x2c, - 0x0a, 0x20, 0x20, 0x62, 0x6e, 0x6f, 0x74, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x62, 0x6e, 0x6f, - 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x62, 0x6f, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x62, - 0x69, 0x74, 0x2e, 0x62, 0x6f, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x62, 0x78, 0x6f, 0x72, 0x20, 0x20, - 0x20, 0x20, 0x3d, 0x20, 0x62, 0x69, 0x74, 0x2e, 0x62, 0x78, 0x6f, 0x72, 0x2c, 0x0a, 0x20, 0x20, - 0x62, 0x74, 0x65, 0x73, 0x74, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x28, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x20, 0x62, 0x61, 0x6e, 0x64, 0x28, 0x2e, 0x2e, 0x2e, 0x29, 0x20, 0x7e, 0x3d, 0x20, - 0x30, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x61, 0x2c, - 0x66, 0x2c, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x62, 0x61, 0x6e, 0x64, 0x28, 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0x28, 0x61, 0x2c, 0x66, 0x29, - 0x2c, 0x32, 0x5e, 0x28, 0x77, 0x20, 0x6f, 0x72, 0x20, 0x31, 0x29, 0x2d, 0x31, 0x29, 0x0a, 0x20, - 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x6c, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x20, - 0x3d, 0x20, 0x62, 0x69, 0x74, 0x2e, 0x72, 0x6f, 0x6c, 0x2c, 0x0a, 0x20, 0x20, 0x6c, 0x73, 0x68, - 0x69, 0x66, 0x74, 0x20, 0x20, 0x3d, 0x20, 0x6c, 0x73, 0x68, 0x69, 0x66, 0x74, 0x2c, 0x0a, 0x20, - 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x28, 0x61, 0x2c, 0x76, 0x2c, 0x66, 0x2c, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x20, 0x3d, 0x20, 0x32, 0x5e, - 0x28, 0x77, 0x20, 0x6f, 0x72, 0x20, 0x31, 0x29, 0x2d, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x62, 0x61, 0x6e, 0x64, 0x28, 0x61, 0x2c, 0x62, 0x6e, 0x6f, - 0x74, 0x28, 0x6c, 0x73, 0x68, 0x69, 0x66, 0x74, 0x28, 0x6d, 0x61, 0x73, 0x6b, 0x2c, 0x66, 0x29, - 0x29, 0x29, 0x2b, 0x6c, 0x73, 0x68, 0x69, 0x66, 0x74, 0x28, 0x62, 0x61, 0x6e, 0x64, 0x28, 0x76, - 0x2c, 0x6d, 0x61, 0x73, 0x6b, 0x29, 0x2c, 0x66, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, - 0x0a, 0x20, 0x20, 0x72, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x20, 0x3d, 0x20, 0x62, 0x69, 0x74, - 0x2e, 0x72, 0x6f, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x20, - 0x3d, 0x20, 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0x2c, 0x0a, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x5d, 0x5d, 0x20, 0x29, 0x0a, 0x0a, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x68, 0x6f, 0x70, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x73, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x66, 0x61, 0x69, 0x6c, - 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x69, 0x74, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x72, 0x65, - 0x71, 0x75, 0x69, 0x72, 0x65, 0x28, 0x22, 0x62, 0x69, 0x74, 0x33, 0x32, 0x22, 0x29, 0x0a, 0x0a, - 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, - 0x6e, 0x65, 0x65, 0x64, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x28, 0x22, 0x73, 0x6f, 0x63, 0x6b, - 0x65, 0x74, 0x22, 0x29, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x0a, 0x0a, 0x64, 0x6f, 0x0a, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, - 0x20, 0x3d, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x65, - 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, - 0x61, 0x64, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, - 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x20, 0x3d, - 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5b, 0x22, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x22, 0x5d, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, - 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x6d, - 0x65, 0x20, 0x20, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x2e, - 0x6d, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5b, - 0x22, 0x6d, 0x69, 0x6d, 0x65, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x5d, 0x20, 0x20, 0x20, 0x65, - 0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, - 0x6f, 0x61, 0x64, 0x65, 0x64, 0x2e, 0x6c, 0x66, 0x73, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, - 0x6f, 0x61, 0x64, 0x65, 0x64, 0x2e, 0x6c, 0x66, 0x73, 0x20, 0x3d, 0x20, 0x6c, 0x66, 0x73, 0x20, - 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x64, 0x6f, 0x0a, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6c, 0x66, 0x73, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6c, 0x66, 0x73, 0x2e, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, - 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x61, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x73, 0x79, 0x6d, - 0x6c, 0x69, 0x6e, 0x6b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x0a, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x63, 0x61, 0x6e, - 0x20, 0x6e, 0x6f, 0x77, 0x20, 0x62, 0x65, 0x20, 0x64, 0x6f, 0x6e, 0x65, 0x20, 0x75, 0x73, 0x69, - 0x6e, 0x67, 0x20, 0x6c, 0x66, 0x73, 0x20, 0x28, 0x77, 0x61, 0x73, 0x20, 0x64, 0x65, 0x61, 0x64, - 0x20, 0x73, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x29, 0x0a, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x69, 0x73, - 0x66, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x69, - 0x73, 0x66, 0x69, 0x6c, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x20, - 0x3d, 0x20, 0x6c, 0x66, 0x73, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x28, - 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x22, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x6d, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x20, 0x6f, 0x72, 0x20, 0x6d, - 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x69, - 0x73, 0x64, 0x69, 0x72, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x69, - 0x73, 0x64, 0x69, 0x72, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x20, 0x3d, - 0x20, 0x6c, 0x66, 0x73, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x28, 0x6e, - 0x61, 0x6d, 0x65, 0x2c, 0x22, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, - 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x73, 0x68, 0x6f, 0x72, - 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x6c, 0x73, 0x6f, - 0x20, 0x62, 0x65, 0x20, 0x73, 0x6f, 0x72, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x64, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x6b, 0x70, 0x73, 0x65, 0x0a, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x73, 0x68, - 0x6f, 0x72, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x66, - 0x73, 0x2e, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, - 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x6e, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, - 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x2c, 0x20, 0x73, 0x6f, 0x20, 0x2e, 0x2e, 0x2e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, - 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, - 0x6e, 0x6b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x72, 0x65, 0x61, - 0x64, 0x6c, 0x69, 0x6e, 0x6b, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, - 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x22, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x29, 0x20, - 0x6f, 0x72, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, - 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, - 0x0a, 0x00 + 0x2c, 0x0a, 0x20, 0x20, 0x72, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x75, + 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x2d, 0x62, 0x20, 0x26, 0x20, 0x33, 0x31, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, + 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x20, + 0x3c, 0x3c, 0x20, 0x62, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x61, 0x20, 0x3e, 0x3e, 0x20, 0x28, 0x33, + 0x32, 0x20, 0x2d, 0x20, 0x62, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x61, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, + 0x46, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x61, + 0x2c, 0x20, 0x66, 0x2c, 0x20, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x28, 0x61, 0x20, 0x3e, 0x3e, 0x20, 0x66, 0x29, 0x20, 0x26, 0x20, 0x7e, 0x28, + 0x2d, 0x31, 0x20, 0x3c, 0x3c, 0x20, 0x28, 0x77, 0x20, 0x6f, 0x72, 0x20, 0x31, 0x29, 0x29, 0x0a, + 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x61, 0x2c, 0x20, + 0x76, 0x2c, 0x20, 0x66, 0x2c, 0x20, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x20, 0x3d, 0x20, 0x7e, 0x28, 0x2d, 0x31, 0x20, 0x3c, + 0x3c, 0x20, 0x28, 0x77, 0x20, 0x6f, 0x72, 0x20, 0x31, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x28, 0x61, 0x20, 0x26, 0x20, 0x7e, 0x28, 0x6d, + 0x61, 0x73, 0x6b, 0x20, 0x3c, 0x3c, 0x20, 0x66, 0x29, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x28, 0x76, + 0x20, 0x26, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x66, 0x29, 0x29, 0x20, + 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0a, 0x20, 0x20, 0x65, + 0x6e, 0x64, 0x2c, 0x0a, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x5d, + 0x20, 0x29, 0x0a, 0x0a, 0x65, 0x6c, 0x73, 0x65, 0x69, 0x66, 0x20, 0x62, 0x69, 0x74, 0x20, 0x74, + 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x6c, 0x75, 0x61, 0x6a, + 0x69, 0x74, 0x20, 0x28, 0x66, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x77, 0x29, 0x0a, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x62, 0x69, 0x74, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x28, + 0x20, 0x5b, 0x5b, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x61, 0x6e, 0x64, 0x2c, 0x20, + 0x62, 0x6e, 0x6f, 0x74, 0x2c, 0x20, 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0x2c, 0x20, 0x6c, 0x73, + 0x68, 0x69, 0x66, 0x74, 0x20, 0x3d, 0x20, 0x62, 0x69, 0x74, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2c, + 0x20, 0x62, 0x69, 0x74, 0x2e, 0x62, 0x6e, 0x6f, 0x74, 0x2c, 0x20, 0x62, 0x69, 0x74, 0x2e, 0x72, + 0x73, 0x68, 0x69, 0x66, 0x74, 0x2c, 0x20, 0x62, 0x69, 0x74, 0x2e, 0x6c, 0x73, 0x68, 0x69, 0x66, + 0x74, 0x0a, 0x0a, 0x62, 0x69, 0x74, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x61, + 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x3d, 0x20, 0x62, 0x69, 0x74, 0x2e, 0x61, 0x72, 0x73, + 0x68, 0x69, 0x66, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x62, 0x61, 0x6e, 0x64, 0x20, 0x20, 0x20, 0x20, + 0x3d, 0x20, 0x62, 0x61, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x62, 0x6e, 0x6f, 0x74, 0x20, 0x20, + 0x20, 0x20, 0x3d, 0x20, 0x62, 0x6e, 0x6f, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x62, 0x6f, 0x72, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x62, 0x69, 0x74, 0x2e, 0x62, 0x6f, 0x72, 0x2c, 0x0a, 0x20, + 0x20, 0x62, 0x78, 0x6f, 0x72, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x62, 0x69, 0x74, 0x2e, 0x62, + 0x78, 0x6f, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x62, 0x74, 0x65, 0x73, 0x74, 0x20, 0x20, 0x20, 0x3d, + 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x62, 0x61, 0x6e, 0x64, 0x28, 0x2e, + 0x2e, 0x2e, 0x29, 0x20, 0x7e, 0x3d, 0x20, 0x30, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, + 0x20, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x61, 0x2c, 0x66, 0x2c, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x62, 0x61, 0x6e, 0x64, 0x28, 0x72, 0x73, 0x68, 0x69, + 0x66, 0x74, 0x28, 0x61, 0x2c, 0x66, 0x29, 0x2c, 0x32, 0x5e, 0x28, 0x77, 0x20, 0x6f, 0x72, 0x20, + 0x31, 0x29, 0x2d, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x6c, + 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x20, 0x3d, 0x20, 0x62, 0x69, 0x74, 0x2e, 0x72, 0x6f, 0x6c, + 0x2c, 0x0a, 0x20, 0x20, 0x6c, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x20, 0x3d, 0x20, 0x6c, 0x73, + 0x68, 0x69, 0x66, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x20, + 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x61, 0x2c, 0x76, 0x2c, 0x66, + 0x2c, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x61, + 0x73, 0x6b, 0x20, 0x3d, 0x20, 0x32, 0x5e, 0x28, 0x77, 0x20, 0x6f, 0x72, 0x20, 0x31, 0x29, 0x2d, + 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x62, 0x61, 0x6e, + 0x64, 0x28, 0x61, 0x2c, 0x62, 0x6e, 0x6f, 0x74, 0x28, 0x6c, 0x73, 0x68, 0x69, 0x66, 0x74, 0x28, + 0x6d, 0x61, 0x73, 0x6b, 0x2c, 0x66, 0x29, 0x29, 0x29, 0x2b, 0x6c, 0x73, 0x68, 0x69, 0x66, 0x74, + 0x28, 0x62, 0x61, 0x6e, 0x64, 0x28, 0x76, 0x2c, 0x6d, 0x61, 0x73, 0x6b, 0x29, 0x2c, 0x66, 0x29, + 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x72, 0x72, 0x6f, 0x74, 0x61, 0x74, + 0x65, 0x20, 0x3d, 0x20, 0x62, 0x69, 0x74, 0x2e, 0x72, 0x6f, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x72, + 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x20, 0x3d, 0x20, 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0x2c, + 0x0a, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x5d, 0x20, 0x29, 0x0a, + 0x0a, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x68, 0x6f, + 0x70, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x73, 0x74, 0x20, + 0x6f, 0x72, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x69, 0x74, + 0x33, 0x32, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x28, 0x22, 0x62, 0x69, + 0x74, 0x33, 0x32, 0x22, 0x29, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x74, + 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x65, 0x64, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x28, 0x22, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x29, 0x20, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x0a, 0x0a, 0x64, 0x6f, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, + 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x2e, 0x73, 0x6f, 0x63, 0x6b, + 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x2e, 0x73, + 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5b, 0x22, + 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x5d, 0x20, 0x65, 0x6e, + 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x61, + 0x64, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, + 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x3d, 0x20, + 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5b, 0x22, 0x6d, 0x69, 0x6d, 0x65, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x22, 0x5d, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x2e, 0x6c, 0x66, 0x73, + 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x2e, 0x6c, 0x66, 0x73, + 0x20, 0x3d, 0x20, 0x6c, 0x66, 0x73, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, + 0x0a, 0x64, 0x6f, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6c, + 0x66, 0x73, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3d, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x79, 0x6d, 0x6c, + 0x69, 0x6e, 0x6b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x20, 0x3d, 0x20, + 0x6c, 0x66, 0x73, 0x2e, 0x73, 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x74, 0x68, + 0x65, 0x73, 0x65, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x6e, 0x6f, 0x77, 0x20, 0x62, 0x65, 0x20, 0x64, + 0x6f, 0x6e, 0x65, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x66, 0x73, 0x20, 0x28, 0x77, + 0x61, 0x73, 0x20, 0x64, 0x65, 0x61, 0x64, 0x20, 0x73, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x65, 0x66, + 0x6f, 0x72, 0x65, 0x29, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, + 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x69, 0x73, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x69, 0x73, 0x66, 0x69, 0x6c, 0x65, 0x28, 0x6e, 0x61, 0x6d, + 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x6c, 0x66, 0x73, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x22, 0x6d, 0x6f, 0x64, + 0x65, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x66, 0x69, 0x6c, + 0x65, 0x22, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x6c, 0x69, 0x6e, 0x6b, + 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, + 0x74, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x69, 0x73, 0x64, 0x69, 0x72, 0x20, 0x74, 0x68, 0x65, 0x6e, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x69, 0x73, 0x64, 0x69, 0x72, 0x28, 0x6e, 0x61, 0x6d, 0x65, + 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x6c, 0x66, 0x73, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x22, 0x6d, 0x6f, 0x64, 0x65, + 0x22, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, + 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x2d, 0x2d, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x68, 0x61, + 0x76, 0x65, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x73, 0x6f, 0x72, 0x74, 0x20, + 0x6f, 0x66, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, + 0x6b, 0x70, 0x73, 0x65, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, + 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, + 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x6e, 0x61, + 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x6e, 0x6f, 0x77, + 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2c, 0x20, 0x73, 0x6f, 0x20, 0x2e, 0x2e, 0x2e, + 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x66, 0x73, + 0x2e, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x6c, 0x66, 0x73, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x6b, 0x28, 0x6e, 0x61, 0x6d, + 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x22, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x22, 0x29, 0x20, 0x6f, 0x72, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, + 0x64, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x00 }; return luaL_dostring(L, (const char*) luatex_core_lua); } \ No newline at end of file diff --git a/source/texk/web2c/luatexdir/lua/luatex-core.lua b/source/texk/web2c/luatexdir/lua/luatex-core.lua index a0f46dd2e..538d8f903 100644 --- a/source/texk/web2c/luatexdir/lua/luatex-core.lua +++ b/source/texk/web2c/luatexdir/lua/luatex-core.lua @@ -7,7 +7,7 @@ -- copyright = 'LuaTeX Development Team', -- } -LUATEXCOREVERSION = 1.112 -- we reflect the luatex version where changes happened +LUATEXCOREVERSION = 1.120 -- we reflect the luatex version where changes happened -- This file overloads some Lua functions. The readline variants provide the same -- functionality as LuaTeX <= 1.04 and doing it this way permits us to keep the @@ -194,12 +194,20 @@ end if saferoption == 1 or shellescape ~= 1 then + package.loadlib = function() end + package.searchers[4] = nil + package.searchers[3] = nil + ffi = require('ffi') - for k, v in next, ffi do - if k ~= 'gc' then - ffi[k] = nil + + if ffi then + for k, v in next, ffi do + if k ~= 'gc' then + ffi[k] = nil + end end end + ffi = nil end diff --git a/source/texk/web2c/luatexdir/luaharfbuzz/spec/buffer_spec.lua b/source/texk/web2c/luatexdir/luaharfbuzz/spec/buffer_spec.lua index d0a7757e3..503b902c9 100644 --- a/source/texk/web2c/luatexdir/luaharfbuzz/spec/buffer_spec.lua +++ b/source/texk/web2c/luatexdir/luaharfbuzz/spec/buffer_spec.lua @@ -5,6 +5,15 @@ describe("harfbuzz.Buffer", function() harfbuzz.Buffer.new() end) + it("can add a single codepoints with explicit cluster value", function() + local b = harfbuzz.Buffer.new() + b:add(0x06CC, 42) + local glyphs = b:get_glyphs() + assert.are_equal(#glyphs, 1) + assert.are_equal(glyphs[1].cluster, 42) + assert.are_equal(glyphs[1].codepoint, 0x06CC) + end) + it("can add a UTF8 string", function() local b = harfbuzz.Buffer.new() local s = "Some String" diff --git a/source/texk/web2c/luatexdir/luaharfbuzz/src/luaharfbuzz/buffer.c b/source/texk/web2c/luatexdir/luaharfbuzz/src/luaharfbuzz/buffer.c index 4eb78ec7a..67921ba29 100644 --- a/source/texk/web2c/luatexdir/luaharfbuzz/src/luaharfbuzz/buffer.c +++ b/source/texk/web2c/luatexdir/luaharfbuzz/src/luaharfbuzz/buffer.c @@ -138,6 +138,17 @@ static int buffer_set_replacement_codepoint(lua_State *L) { return 0; } +static int buffer_add(lua_State *L) { + Buffer *b = (Buffer *)luaL_checkudata(L, 1, "harfbuzz.Buffer"); + + hb_codepoint_t c = (hb_codepoint_t) luaL_checkinteger(L, 2); + unsigned int cluster = luaL_checkinteger(L, 3); + + hb_buffer_add(*b, c, cluster); + + return 0; +} + static int buffer_add_codepoints(lua_State *L) { Buffer *b = (Buffer *)luaL_checkudata(L, 1, "harfbuzz.Buffer"); unsigned int item_offset; @@ -290,6 +301,7 @@ static int buffer_pre_allocate(lua_State *L) { static const struct luaL_Reg buffer_methods[] = { { "__gc", buffer_destroy }, + { "add", buffer_add }, { "add_utf8", buffer_add_utf8 }, { "add_codepoints", buffer_add_codepoints }, { "clear_contents", buffer_clear_contents }, diff --git a/source/texk/web2c/luatexdir/luapplib/src/ppheap.h b/source/texk/web2c/luatexdir/luapplib/src/ppheap.h index 1d6559d93..85a59ee0a 100644 --- a/source/texk/web2c/luatexdir/luapplib/src/ppheap.h +++ b/source/texk/web2c/luatexdir/luapplib/src/ppheap.h @@ -22,7 +22,7 @@ #define ppbytes_take(heap, size) _heap16_take(&(heap)->bytesheap, size) #define ppbytes_buffer_init(heap) heap16_buffer_init(&(heap)->bytesheap, &(heap)->bytesbuffer) -#define ppbytes_buffer(heap, atleast) heap16_buffer_some(&(heap)->bytesheap, &(heap)->bytesbuffer, atleast) +#define ppbytes_buffer(heap, atleast) _heap16_buffer_some(&(heap)->bytesheap, &(heap)->bytesbuffer, atleast) #define ppstruct_heap heap64 #define ppstruct_heap_init(heap, space, large, flags) (heap64_init(&(heap)->structheap, space, large, flags), heap64_head(&(heap)->structheap)) diff --git a/source/texk/web2c/luatexdir/luapplib/src/util/utilbasexx.c b/source/texk/web2c/luatexdir/luapplib/src/util/utilbasexx.c index 1c65b1ec3..cfe148840 100644 --- a/source/texk/web2c/luatexdir/luapplib/src/util/utilbasexx.c +++ b/source/texk/web2c/luatexdir/luapplib/src/util/utilbasexx.c @@ -37,7 +37,7 @@ typedef union { basexx_state *basexxstate; runlength_state *runlengthstate; void #define basexx_nl '\x0A' //#define put_nl(O, line, maxline, n) ((void)((line += n) > maxline && ((line = n), iof_set(O, basexx_nl)))) // assignment in conditional warning -#define put_nl(O, line, maxline, n) do { line += n; if (line > maxline) line = n; iof_set(O, basexx_nl); } while (0) +#define put_nl(O, line, maxline, n) do { line += n; if (line > maxline) { line = n; iof_set(O, basexx_nl); }} while (0) /* tail macros */ diff --git a/source/texk/web2c/luatexdir/luapplib/src/util/utiliof.c b/source/texk/web2c/luatexdir/luapplib/src/util/utiliof.c index a7141bfb6..41d6fba38 100644 --- a/source/texk/web2c/luatexdir/luapplib/src/util/utiliof.c +++ b/source/texk/web2c/luatexdir/luapplib/src/util/utiliof.c @@ -946,10 +946,10 @@ static size_t stderr_writer (iof *O, iof_mode mode) } static uint8_t iof_stdout_buffer[BUFSIZ]; -iof iof_stdout = IOF_WRITER_STRUCT(stdout_writer, NULL, iof_stdout_buffer, BUFSIZ, 0); +iof iof_stdout = IOF_WRITER_INIT(stdout_writer, NULL, iof_stdout_buffer, BUFSIZ, 0); static uint8_t iof_stderr_buffer[BUFSIZ]; -iof iof_stderr = IOF_WRITER_STRUCT(stderr_writer, NULL, iof_stderr_buffer, BUFSIZ, 0); +iof iof_stderr = IOF_WRITER_INIT(stderr_writer, NULL, iof_stderr_buffer, BUFSIZ, 0); /* read from somewhere */ diff --git a/source/texk/web2c/luatexdir/luapplib/src/util/utiliof.h b/source/texk/web2c/luatexdir/luapplib/src/util/utiliof.h index afd9c55ed..bad43a773 100644 --- a/source/texk/web2c/luatexdir/luapplib/src/util/utiliof.h +++ b/source/texk/web2c/luatexdir/luapplib/src/util/utiliof.h @@ -64,7 +64,7 @@ typedef size_t (*iof_handler) (iof *I, iof_mode mode); }; \ size_t space; \ iof_handler more; \ - union { iof *next; FILE *file; iof_file *iofile; void *link; }; \ + union { void *link; iof *next; FILE *file; iof_file *iofile; }; \ int flags; \ int refcount @@ -135,16 +135,16 @@ is way larger the sizeof(iof) /* initializers */ -#define IOF_READER_STRUCT(handler, file, buffer, size, flags) \ - { {{ (uint8_t *)(buffer), (uint8_t *)(buffer), (uint8_t *)(buffer) }}, size, handler, { file }, flags|IOF_READER, 0 } +#define IOF_READER_INIT(handler, file, buffer, size, flags) \ + { {{ (uint8_t *)(buffer), (uint8_t *)(buffer), (uint8_t *)(buffer) }}, size, handler, { file }, (flags)|IOF_READER, 0 } -#define IOF_WRITER_STRUCT(handler, file, buffer, size, flags) \ - { {{ (uint8_t *)(buffer), (uint8_t *)(buffer), (uint8_t *)(buffer) + size }}, size, handler, { file }, flags|IOF_WRITER, 0 } +#define IOF_WRITER_INIT(handler, file, buffer, size, flags) \ + { {{ (uint8_t *)(buffer), (uint8_t *)(buffer), (uint8_t *)(buffer) + size }}, size, handler, { file }, (flags)|IOF_WRITER, 0 } -#define IOF_STRING_STRUCT(buffer, size) \ +#define IOF_STRING_INIT(buffer, size) \ { {{ (uint8_t *)(buffer), (uint8_t *)(buffer), (uint8_t *)(buffer) + size }}, size, NULL, { NULL }, 0|IOF_READER|IOF_DATA, 0 } -#define IOF_STRING() IOF_STRING_STRUCT(0, 0) +#define IOF_STRING() IOF_STRING_INIT(0, 0) /* refcount */ diff --git a/source/texk/web2c/luatexdir/luapplib/src/util/utilmemallc.h b/source/texk/web2c/luatexdir/luapplib/src/util/utilmemallc.h index 57d268cf7..5471f4afb 100644 --- a/source/texk/web2c/luatexdir/luapplib/src/util/utilmemallc.h +++ b/source/texk/web2c/luatexdir/luapplib/src/util/utilmemallc.h @@ -114,45 +114,38 @@ is that if the chunk has already been allocated from a sole chunk, the space req iof interface ============= -iof is an independent interface for buffers written/read byte-by-byte. If used together with allocators, the provides a convenient -way to write byte data to the heap or stock, without a need for intermediate buffers. The idea is to have iof buffer always ready -for writing into the heap or stock. The buffer is setup just once, with +iof is an independent interface for buffers written/read byte-by-byte. When used together with allocators, it provides +a convenient way to write byte data to the heap or stock, without a need for intermediate buffers. The buffer is setup with - iof *output = buffer_init(heap, iof) // calls some(heap, 0) + iof output, *O + O = buffer_init(heap, &output); // doesn't allocate anything -Then one can write to iof with +or - iof_put(output, char); - iof_write(output, string); - iof_ensure(output, bytes); - .... + output = BUFFER_INIT(heap); // doesn't allocate anything + O = &output; -iof keeps pointers to the beginning of buffer, end of buffer, and current position. Once the position reaches the end, the iof -internal handler updates the buffer providing more space to write. In that case, updating the buffer means settings buf/pos/end -pointers according to a data pointer and space returned by more(). From the user perspective, this pretends a countinuous space -for writing, without bothering about buffer boundaries. +iof keeps pointers to the beginning of the buffer, end of buffer, and current position. Once the position reaches the end, +the iof internal handler updates the buffer providing more space to write. When used in conjunction with heap or stock, +the space to write is the space provided by the heap or stock. To start the buffer session: + + O = buffer_some(heap, O, atleast) // ensure iof *O to have atleast bytes to be written Once you are done with writing some chunk - iof_flush() // calls done() and some() again - -updates the underlying heap or stock, and makes the iof ready for a new chunk. iof it self does not allocate a memory, so it -doesn't need finalizer, iof_close(output) does nothing. So the cycle looks as follows: + buffer_done(heap, O) - buffer_init(heap, iof) - <write to iof> ... iof_flush(iof) - <write to iof> ... iof_flush(iof) - ... +instead of buffer_done(), one may also use -More often then not, we need to specify a minimal space for buffer each time, eg. for memcpy() or so. The actual space left -can be checked with iof_left(iof), the space for recent chunk is iof->space. + iof_flush(O) // calls buffer_done() and buffer_some() again + +which updates the underlying heap or stock, and makes the iof ready for a new chunk. iof itself does not allocate a memory, +so it doesn't need finalizer. iof_close(output) does nothing. To drop the buffer use: -We can also work as follows: + buffer_giveup(heap, O) // restore the from before buffer_some() - buffer_init(heap, iof) - buffer_some(heap, iof) ... <write to iof> ... data = iof_writer_result(iof, &size) - buffer_some(heap, iof) ... <write to iof> ... data = iof_writer_result(iof, &size) - ... +More often then not, we need to specify a minimal space for buffer each time, eg. for memcpy() or so. The actual space left +can be checked with iof_left(O). The entire space of recent chunk is O->space (eq. O->end - O->buf). Identical interface for heap and stock. @@ -328,6 +321,17 @@ Each allocator has 4 variants for 1, 2, 4, 8 bytes alignment respectively. Eg. s to 4 bytes, heap64_take() returns a pointer aligned to 8 bytes. You can ask for any data length, but in practise you'll always obtain 1N, 2N, 4N or 8N. Alignment implies data padding unless the user requests for "aligned" sizes. In statistics the padding is not considered a waste. + +Zeroing +======= + +All heap, stock and pool may return zeroed memory chunks, depending on initial flags: + + HEAP_ZERO + STOCK_ZERO + POOL_ZERO + +There are also take0() variants that simply return memset(take(), 0, size), regardless the flag. */ #ifndef UTIL_MEM_ALLC_C @@ -346,18 +350,18 @@ Common internals for allocators suite. A selection or all of the following defin #include <stdio.h> // printf() #include "utilmem.h" -//#include "utilmemallh.h" -#if 0 // for a while -# define ASSERT8(cond) (void)0 -# define ASSERT16(cond) (void)0 -# define ASSERT32(cond) (void)0 -# define ASSERT64(cond) (void)0 -#else +//#if defined(DEBUG) && debug != 0 +#if 1 # define ASSERT8(cond) ((void)((cond) || (printf("8bit allocator assertion, %s:%d: %s\n", __FILE__, __LINE__, #cond), 0))) # define ASSERT16(cond) ((void)((cond) || (printf("16bit allocator assertion, %s:%d: %s\n", __FILE__, __LINE__, #cond), 0))) # define ASSERT32(cond) ((void)((cond) || (printf("32bit allocator assertion, %s:%d: %s\n", __FILE__, __LINE__, #cond), 0))) # define ASSERT64(cond) ((void)((cond) || (printf("64bit allocator assertion, %s:%d: %s\n", __FILE__, __LINE__, #cond), 0))) +#else +# define ASSERT8(cond) (void)0 +# define ASSERT16(cond) (void)0 +# define ASSERT32(cond) (void)0 +# define ASSERT64(cond) (void)0 #endif #if defined(UTIL_MEM_STOCK_H) || defined(UTIL_MEM_POOL_H) @@ -474,9 +478,9 @@ otherwise it needs 4 bytes offset. /* align requested size to keep ream->data / pyre->data always aligned. size is always size_t, no insane overflow checks */ #define align_size8(size) ((void)size) -#define align_size16(size) ((void)((size & 1) ? (size += 1) : 0)) -#define align_size32(size) ((void)((size & 3) ? (size += 4 - (size & 3)) : 0)) -#define align_size64(size) ((void)((size & 7) ? (size += 8 - (size & 7)) : 0)) +#define align_size16(size) (size = aligned_size16(size)) +#define align_size32(size) (size = aligned_size32(size)) +#define align_size64(size) (size = aligned_size64(size)) /* done() and pop() operations decrements block->left space by an aligned size; block->left -= alignedwritten. Lets have 8-bytes aligned @@ -486,9 +490,9 @@ is different than for size (size_t), we cannot cross 0xff/0xffff,... bondaries. */ #define align_space8(space) ((void)space) -#define align_space16(space) ((void)((space & 1) ? (space < 0xFFFF ? (space += 1) : (space -= 1)) : 0)) -#define align_space32(space) ((void)((space & 3) ? (space < 0xFFFFFFFD ? (space += 4 - (space & 3)) : (space -= (space & 3))) : 0)) -#define align_space64(space) ((void)((space & 7) ? (space < 0xFFFFFFFFFFFFFFF8ULL ? (space += 8 - (space & 7)) : (space -= (space & 7))) : 0)) +#define align_space16(space) (space = aligned_space16(space)) +#define align_space32(space) (space = aligned_space32(space)) +#define align_space64(space) (space = aligned_space64(space)) /* handling ghost structure (stock and pool) */ diff --git a/source/texk/web2c/luatexdir/luapplib/src/util/utilmemallh.h b/source/texk/web2c/luatexdir/luapplib/src/util/utilmemallh.h index de448ecd5..a543d1acb 100644 --- a/source/texk/web2c/luatexdir/luapplib/src/util/utilmemallh.h +++ b/source/texk/web2c/luatexdir/luapplib/src/util/utilmemallh.h @@ -12,6 +12,16 @@ typedef struct ghost16 ghost16; typedef struct ghost32 ghost32; typedef struct ghost64 ghost64; +#define aligned_size8(size) (size) +#define aligned_size16(size) ((((size) + 1) >> 1) << 1) +#define aligned_size32(size) ((((size) + 3) >> 2) << 2) +#define aligned_size64(size) ((((size) + 7) >> 3) << 3) + +#define aligned_space8(size) (size) +#define aligned_space16(size) (((size) & 1) ? ((size) < 0xFFFF ? ((size) + 1) : ((size) - 1)) : (size)) +#define aligned_space32(size) (((size) & 3) ? ((size) < 0xFFFFFFFD ? ((size) - ((size) & 3) + 4) : (size) - ((size) & 3)) : (size)) +#define aligned_space64(size) (((size) & 7) ? ((size) < 0xFFFFFFFFFFFFFFF8ULL ? ((size) - ((size) & 7) + 8) : (size) - ((size) & 7)) : (size)) + /* info stub */ typedef struct { diff --git a/source/texk/web2c/luatexdir/luapplib/src/util/utilmemheap.c b/source/texk/web2c/luatexdir/luapplib/src/util/utilmemheap.c index 9392f698a..cce28e0ed 100644 --- a/source/texk/web2c/luatexdir/luapplib/src/util/utilmemheap.c +++ b/source/texk/web2c/luatexdir/luapplib/src/util/utilmemheap.c @@ -437,6 +437,26 @@ void * _heap64_take (heap64 *heap, size_t size) return data; } +void * _heap8_take0 (heap8 *heap, size_t size) +{ + return memset(_heap8_take(heap, size), 0, size); +} + +void * _heap16_take0 (heap16 *heap, size_t size) +{ + return memset(_heap16_take(heap, size), 0, size); +} + +void * _heap32_take0 (heap32 *heap, size_t size) +{ + return memset(_heap32_take(heap, size), 0, size); +} + +void * _heap64_take0 (heap64 *heap, size_t size) +{ + return memset(_heap64_take(heap, size), 0, size); +} + /* pop last heap chunk */ #define taken_from_head(taken, head) (byte_data(taken) == head->data) @@ -462,6 +482,10 @@ void heap8_pop (heap8 *heap, void *taken, size_t size) head->prev = pyre->prev; pyre_free(pyre); } + else + { + ASSERT8(0); + } } void heap16_pop (heap16 *heap, void *taken, size_t size) @@ -481,6 +505,10 @@ void heap16_pop (heap16 *heap, void *taken, size_t size) head->prev = pyre->prev; pyre_free(pyre); } + else + { + ASSERT16(0); + } } void heap32_pop (heap32 *heap, void *taken, size_t size) @@ -500,6 +528,10 @@ void heap32_pop (heap32 *heap, void *taken, size_t size) head->prev = pyre->prev; pyre_free(pyre); } + else + { + ASSERT32(0); + } } void heap64_pop (heap64 *heap, void *taken, size_t size) @@ -519,6 +551,10 @@ void heap64_pop (heap64 *heap, void *taken, size_t size) head->prev = pyre->prev; pyre_free(pyre); } + else + { + ASSERT64(0); + } } /* heap buffer */ @@ -611,7 +647,7 @@ void * _heap64_some (heap64 *heap, size_t size, size_t *pspace) return void_data(pyre->data); } -void * heap8_more (heap8 *heap, void *taken, size_t written, size_t size) +void * heap8_more (heap8 *heap, void *taken, size_t written, size_t size, size_t *pspace) { pyre8 *pyre, *prev; pyre = heap->head; @@ -619,32 +655,40 @@ void * heap8_more (heap8 *heap, void *taken, size_t written, size_t size) if (taken_from_head(taken, pyre)) { if (size <= pyre->left) - { // unlikely + { + *pspace = pyre->left; } else if (take_new_block8(heap, pyre8, pyre, size)) { pyre = heap8_new(heap); memcpy(pyre->data, taken, written); + *pspace = pyre->left; } else { pyre = heap8_sole(heap, size); memcpy(pyre->data, taken, written); + *pspace = size; } } else if (taken_from_sole(taken, pyre, prev)) { pyre = heap8_sole(heap, size); - pyre->prev = prev->prev; memcpy(pyre->data, taken, written); + *pspace = size; + pyre->prev = prev->prev; pyre_free(prev); } else + { + ASSERT8(0); + *pspace = 0; return NULL; + } return void_data(pyre->data); } -void * heap16_more (heap16 *heap, void *taken, size_t written, size_t size) +void * heap16_more (heap16 *heap, void *taken, size_t written, size_t size, size_t *pspace) { pyre16 *pyre, *prev; pyre = heap->head; @@ -653,31 +697,39 @@ void * heap16_more (heap16 *heap, void *taken, size_t written, size_t size) { if (size <= pyre->left) { + *pspace = pyre->left; } else if (take_new_block16(heap, pyre16, pyre, size)) { pyre = heap16_new(heap); memcpy(pyre->data, taken, written); + *pspace = pyre->left; } else { pyre = heap16_sole(heap, size); memcpy(pyre->data, taken, written); + *pspace = size; } } else if (taken_from_sole(taken, pyre, prev)) { pyre = heap16_sole(heap, size); - pyre->prev = prev->prev; memcpy(pyre->data, taken, written); + *pspace = size; + pyre->prev = prev->prev; pyre_free(prev); } else + { + ASSERT16(0); + *pspace = 0; return NULL; + } return void_data(pyre->data); } -void * heap32_more (heap32 *heap, void *taken, size_t written, size_t size) +void * heap32_more (heap32 *heap, void *taken, size_t written, size_t size, size_t *pspace) { pyre32 *pyre, *prev; pyre = heap->head; @@ -686,31 +738,39 @@ void * heap32_more (heap32 *heap, void *taken, size_t written, size_t size) { if (size <= pyre->left) { + *pspace = pyre->left; } else if (take_new_block32(heap, pyre32, pyre, size)) { pyre = heap32_new(heap); memcpy(pyre->data, taken, written); + *pspace = pyre->left; } else { pyre = heap32_sole(heap, size); memcpy(pyre->data, taken, written); + *pspace = size; } } else if (taken_from_sole(taken, pyre, prev)) { pyre = heap32_sole(heap, size); - pyre->prev = prev->prev; memcpy(pyre->data, taken, written); + *pspace = size; + pyre->prev = prev->prev; pyre_free(prev); } else + { + ASSERT32(0); + *pspace = 0; return NULL; + } return void_data(pyre->data); } -void * heap64_more (heap64 *heap, void *taken, size_t written, size_t size) +void * heap64_more (heap64 *heap, void *taken, size_t written, size_t size, size_t *pspace) { pyre64 *pyre, *prev; pyre = heap->head; @@ -719,27 +779,35 @@ void * heap64_more (heap64 *heap, void *taken, size_t written, size_t size) { if (size <= pyre->left) { + *pspace = pyre->left; } else if (take_new_block64(heap, pyre64, pyre, size)) { pyre = heap64_new(heap); memcpy(pyre->data, taken, written); + *pspace = pyre->left; } else { pyre = heap64_sole(heap, size); memcpy(pyre->data, taken, written); + *pspace = size; } } else if (taken_from_sole(taken, pyre, prev)) { pyre = heap64_sole(heap, size); - pyre->prev = prev->prev; memcpy(pyre->data, taken, written); + *pspace = size; + pyre->prev = prev->prev; pyre_free(prev); } else + { + ASSERT64(0); + *pspace = 0; return NULL; + } return void_data(pyre->data); } @@ -759,6 +827,10 @@ void heap8_done (heap8 *heap, void *taken, size_t written) pyre->data += written; pyre->chunks = 1; } + else + { + ASSERT8(0); + } } void heap16_done (heap16 *heap, void *taken, size_t written) @@ -777,6 +849,10 @@ void heap16_done (heap16 *heap, void *taken, size_t written) pyre->data += written; pyre->chunks = 1; } + else + { + ASSERT16(0); + } } void heap32_done (heap32 *heap, void *taken, size_t written) @@ -795,6 +871,10 @@ void heap32_done (heap32 *heap, void *taken, size_t written) pyre->data += written; pyre->chunks = 1; } + else + { + ASSERT32(0); + } } void heap64_done (heap64 *heap, void *taken, size_t written) @@ -813,6 +893,10 @@ void heap64_done (heap64 *heap, void *taken, size_t written) pyre->data += written; pyre->chunks = 1; } + else + { + ASSERT64(0); + } } /* giveup */ diff --git a/source/texk/web2c/luatexdir/luapplib/src/util/utilmemheap.h b/source/texk/web2c/luatexdir/luapplib/src/util/utilmemheap.h index 08f1ce232..8776419c2 100644 --- a/source/texk/web2c/luatexdir/luapplib/src/util/utilmemheap.h +++ b/source/texk/web2c/luatexdir/luapplib/src/util/utilmemheap.h @@ -93,13 +93,12 @@ struct heap64 { }; #define HEAP_ZERO (1 << 0) -//#define HEAP_KEEP (1 << 1) #define HEAP_DEFAULTS 0 -#define HEAP8_INIT(space, large, flags) { NULL, space, large, flags } -#define HEAP16_INIT(space, large, flags) { NULL, space, large, flags } -#define HEAP32_INIT(space, large, flags) { NULL, space, large, flags } -#define HEAP64_INIT(space, large, flags) { NULL, space, large, flags } +#define HEAP8_INIT(space, large, flags) { NULL, aligned_space8(space), large, flags } +#define HEAP16_INIT(space, large, flags) { NULL, aligned_space16(space), large, flags } +#define HEAP32_INIT(space, large, flags) { NULL, aligned_space32(space), large, flags } +#define HEAP64_INIT(space, large, flags) { NULL, aligned_space64(space), large, flags } UTILAPI heap8 * heap8_init (heap8 *heap, uint8_t space, uint8_t large, uint8_t flags); UTILAPI heap16 * heap16_init (heap16 *heap, uint16_t space, uint16_t large, uint8_t flags); @@ -131,11 +130,21 @@ UTILAPI void * _heap16_take (heap16 *heap, size_t size); UTILAPI void * _heap32_take (heap32 *heap, size_t size); UTILAPI void * _heap64_take (heap64 *heap, size_t size); +UTILAPI void * _heap8_take0 (heap8 *heap, size_t size); +UTILAPI void * _heap16_take0 (heap16 *heap, size_t size); +UTILAPI void * _heap32_take0 (heap32 *heap, size_t size); +UTILAPI void * _heap64_take0 (heap64 *heap, size_t size); + #define heap8_take(heap, size) (heap8_ensure_head(heap), _heap8_take(heap, size)) #define heap16_take(heap, size) (heap16_ensure_head(heap), _heap16_take(heap, size)) #define heap32_take(heap, size) (heap32_ensure_head(heap), _heap32_take(heap, size)) #define heap64_take(heap, size) (heap64_ensure_head(heap), _heap64_take(heap, size)) +#define heap8_take0(heap, size) (heap8_ensure_head(heap), _heap8_take0(heap, size)) +#define heap16_take0(heap, size) (heap16_ensure_head(heap), _heap16_take0(heap, size)) +#define heap32_take0(heap, size) (heap32_ensure_head(heap), _heap32_take0(heap, size)) +#define heap64_take0(heap, size) (heap64_ensure_head(heap), _heap64_take0(heap, size)) + UTILAPI void heap8_pop (heap8 *heap, void *taken, size_t size); UTILAPI void heap16_pop (heap16 *heap, void *taken, size_t size); UTILAPI void heap32_pop (heap32 *heap, void *taken, size_t size); @@ -151,10 +160,10 @@ UTILAPI void * _heap64_some (heap64 *heap, size_t size, size_t *pspace); #define heap32_some(heap, size, pspace) (heap32_ensure_head(heap), _heap32_some(heap, size, pspace)) #define heap64_some(heap, size, pspace) (heap64_ensure_head(heap), _heap64_some(heap, size, pspace)) -UTILAPI void * heap8_more (heap8 *heap, void *taken, size_t written, size_t size); -UTILAPI void * heap16_more (heap16 *heap, void *taken, size_t written, size_t size); -UTILAPI void * heap32_more (heap32 *heap, void *taken, size_t written, size_t size); -UTILAPI void * heap64_more (heap64 *heap, void *taken, size_t written, size_t size); +UTILAPI void * heap8_more (heap8 *heap, void *taken, size_t written, size_t size, size_t *pspace); +UTILAPI void * heap16_more (heap16 *heap, void *taken, size_t written, size_t size, size_t *pspace); +UTILAPI void * heap32_more (heap32 *heap, void *taken, size_t written, size_t size, size_t *pspace); +UTILAPI void * heap64_more (heap64 *heap, void *taken, size_t written, size_t size, size_t *pspace); UTILAPI void heap8_done (heap8 *heap, void *taken, size_t written); UTILAPI void heap16_done (heap16 *heap, void *taken, size_t written); diff --git a/source/texk/web2c/luatexdir/luapplib/src/util/utilmemheapiof.c b/source/texk/web2c/luatexdir/luapplib/src/util/utilmemheapiof.c index f459780df..cd9609da8 100644 --- a/source/texk/web2c/luatexdir/luapplib/src/util/utilmemheapiof.c +++ b/source/texk/web2c/luatexdir/luapplib/src/util/utilmemheapiof.c @@ -3,7 +3,7 @@ // this is identical to stock iof suite, keep in sync -static size_t heap8_writer (iof *O, iof_mode mode) +size_t heap8_writer (iof *O, iof_mode mode) { heap8 *heap; size_t written; @@ -11,19 +11,17 @@ static size_t heap8_writer (iof *O, iof_mode mode) switch (mode) { case IOFFLUSH: - written = (size_t)iof_size(O); - heap8_done(heap, O->buf, written); + heap8_buffer_done(heap, O); O->buf = _heap8_some(heap, 0, &O->space); O->pos = O->buf; O->end = O->buf + O->space; break; case IOFWRITE: written = (size_t)iof_size(O); - O->space = written << 1; - O->buf = heap8_more(heap, O->buf, written, O->space); + O->buf = heap8_more(heap, O->buf, written, written << 1, &O->space); O->pos = O->buf + written; O->end = O->buf + O->space; - return written; // eq (space - written) + return O->space - written; case IOFCLOSE: default: break; @@ -31,7 +29,7 @@ static size_t heap8_writer (iof *O, iof_mode mode) return 0; } -static size_t heap16_writer (iof *O, iof_mode mode) +size_t heap16_writer (iof *O, iof_mode mode) { heap16 *heap; size_t written; @@ -39,19 +37,17 @@ static size_t heap16_writer (iof *O, iof_mode mode) switch (mode) { case IOFFLUSH: - written = (size_t)iof_size(O); - heap16_done(heap, O->buf, written); + heap16_buffer_done(heap, O); O->buf = _heap16_some(heap, 0, &O->space); O->pos = O->buf; O->end = O->buf + O->space; break; case IOFWRITE: written = (size_t)iof_size(O); - O->space = written << 1; - O->buf = heap16_more(heap, O->buf, written, O->space); + O->buf = heap16_more(heap, O->buf, written, written << 1, &O->space); O->pos = O->buf + written; O->end = O->buf + O->space; - return written; // eq (space - written) + return O->space - written; case IOFCLOSE: default: break; @@ -59,7 +55,7 @@ static size_t heap16_writer (iof *O, iof_mode mode) return 0; } -static size_t heap32_writer (iof *O, iof_mode mode) +size_t heap32_writer (iof *O, iof_mode mode) { heap32 *heap; size_t written; @@ -67,19 +63,17 @@ static size_t heap32_writer (iof *O, iof_mode mode) switch (mode) { case IOFFLUSH: - written = (size_t)iof_size(O); - heap32_done(heap, O->buf, written); + heap32_buffer_done(heap, O); O->buf = _heap32_some(heap, 0, &O->space); O->pos = O->buf; O->end = O->buf + O->space; break; case IOFWRITE: written = (size_t)iof_size(O); - O->space = written << 1; - O->buf = heap32_more(heap, O->buf, written, O->space); + O->buf = heap32_more(heap, O->buf, written, written << 1, &O->space); O->pos = O->buf + written; O->end = O->buf + O->space; - return written; // eq (space - written) + return O->space - written; case IOFCLOSE: default: break; @@ -87,7 +81,7 @@ static size_t heap32_writer (iof *O, iof_mode mode) return 0; } -static size_t heap64_writer (iof *O, iof_mode mode) +size_t heap64_writer (iof *O, iof_mode mode) { heap64 *heap; size_t written; @@ -95,19 +89,17 @@ static size_t heap64_writer (iof *O, iof_mode mode) switch (mode) { case IOFFLUSH: - written = (size_t)iof_size(O); - heap64_done(heap, O->buf, written); + heap64_buffer_done(heap, O); O->buf = _heap64_some(heap, 0, &O->space); O->pos = O->buf; O->end = O->buf + O->space; break; case IOFWRITE: written = (size_t)iof_size(O); - O->space = written << 1; - O->buf = heap64_more(heap, O->buf, written, O->space); + O->buf = heap64_more(heap, O->buf, written, written << 1, &O->space); O->pos = O->buf + written; O->end = O->buf + O->space; - return written; // eq (space - written) + return O->space - written; case IOFCLOSE: default: break; @@ -115,51 +107,9 @@ static size_t heap64_writer (iof *O, iof_mode mode) return 0; } -/* buffer init (made once) */ - -iof * heap8_buffer_init (heap8 *heap, iof *O) -{ - void *data; - size_t space; - data = heap8_some(heap, 0, &space); - if (iof_writer(O, (void *)heap, heap8_writer, data, space) == NULL) // sanity - return NULL; - return O; -} - -iof * heap16_buffer_init (heap16 *heap, iof *O) -{ - void *data; - size_t space; - data = heap16_some(heap, 0, &space); - if (iof_writer(O, (void *)heap, heap16_writer, data, space) == NULL) - return NULL; - return O; -} - -iof * heap32_buffer_init (heap32 *heap, iof *O) -{ - void *data; - size_t space; - data = heap32_some(heap, 0, &space); - if (iof_writer(O, (void *)heap, heap32_writer, data, space) == NULL) - return NULL; - return O; -} - -iof * heap64_buffer_init (heap64 *heap, iof *O) -{ - void *data; - size_t space; - data = heap64_some(heap, 0, &space); - if (iof_writer(O, (void *)heap, heap64_writer, data, space) == NULL) - return NULL; - return O; -} - /* buffer for some */ -iof * heap8_buffer_some (heap8 *heap, iof *O, size_t atleast) +iof * _heap8_buffer_some (heap8 *heap, iof *O, size_t atleast) { O->buf = _heap8_some(heap, atleast, &O->space); O->pos = O->buf; @@ -167,7 +117,7 @@ iof * heap8_buffer_some (heap8 *heap, iof *O, size_t atleast) return O; } -iof * heap16_buffer_some (heap16 *heap, iof *O, size_t atleast) +iof * _heap16_buffer_some (heap16 *heap, iof *O, size_t atleast) { O->buf = _heap16_some(heap, atleast, &O->space); O->pos = O->buf; @@ -175,7 +125,7 @@ iof * heap16_buffer_some (heap16 *heap, iof *O, size_t atleast) return O; } -iof * heap32_buffer_some (heap32 *heap, iof *O, size_t atleast) +iof * _heap32_buffer_some (heap32 *heap, iof *O, size_t atleast) { O->buf = _heap32_some(heap, atleast, &O->space); O->pos = O->buf; @@ -183,7 +133,7 @@ iof * heap32_buffer_some (heap32 *heap, iof *O, size_t atleast) return O; } -iof * heap64_buffer_some (heap64 *heap, iof *O, size_t atleast) +iof * _heap64_buffer_some (heap64 *heap, iof *O, size_t atleast) { O->buf = _heap64_some(heap, atleast, &O->space); O->pos = O->buf; diff --git a/source/texk/web2c/luatexdir/luapplib/src/util/utilmemheapiof.h b/source/texk/web2c/luatexdir/luapplib/src/util/utilmemheapiof.h index 8384eda7a..1f3da7efb 100644 --- a/source/texk/web2c/luatexdir/luapplib/src/util/utilmemheapiof.h +++ b/source/texk/web2c/luatexdir/luapplib/src/util/utilmemheapiof.h @@ -5,14 +5,39 @@ #include "utilmemheap.h" #include "utiliof.h" -UTILAPI iof * heap8_buffer_init (heap8 *heap, iof *O); -UTILAPI iof * heap16_buffer_init (heap16 *heap, iof *O); -UTILAPI iof * heap32_buffer_init (heap32 *heap, iof *O); -UTILAPI iof * heap64_buffer_init (heap64 *heap, iof *O); - -UTILAPI iof * heap8_buffer_some (heap8 *heap, iof *O, size_t atleast); -UTILAPI iof * heap16_buffer_some (heap16 *heap, iof *O, size_t atleast); -UTILAPI iof * heap32_buffer_some (heap32 *heap, iof *O, size_t atleast); -UTILAPI iof * heap64_buffer_some (heap64 *heap, iof *O, size_t atleast); +UTILAPI size_t heap8_writer (iof *O, iof_mode mode); +UTILAPI size_t heap16_writer (iof *O, iof_mode mode); +UTILAPI size_t heap32_writer (iof *O, iof_mode mode); +UTILAPI size_t heap64_writer (iof *O, iof_mode mode); + +#define HEAP8_BUFFER_INIT(heap) IOF_WRITER_INIT(heap8_writer, (void *)(heap), NULL, 0, 0) +#define HEAP16_BUFFER_INIT(heap) IOF_WRITER_INIT(heap16_writer, (void *)(heap), NULL, 0, 0) +#define HEAP32_BUFFER_INIT(heap) IOF_WRITER_INIT(heap32_writer, (void *)(heap), NULL, 0, 0) +#define HEAP64_BUFFER_INIT(heap) IOF_WRITER_INIT(heap64_writer, (void *)(heap), NULL, 0, 0) + +#define heap8_buffer_init(heap, O) iof_writer(O, (void *)(heap), heap8_writer, NULL, 0) +#define heap16_buffer_init(heap, O) iof_writer(O, (void *)(heap), heap16_writer, NULL, 0) +#define heap32_buffer_init(heap, O) iof_writer(O, (void *)(heap), heap32_writer, NULL, 0) +#define heap64_buffer_init(heap, O) iof_writer(O, (void *)(heap), heap64_writer, NULL, 0) + +UTILAPI iof * _heap8_buffer_some (heap8 *heap, iof *O, size_t atleast); +UTILAPI iof * _heap16_buffer_some (heap16 *heap, iof *O, size_t atleast); +UTILAPI iof * _heap32_buffer_some (heap32 *heap, iof *O, size_t atleast); +UTILAPI iof * _heap64_buffer_some (heap64 *heap, iof *O, size_t atleast); + +#define heap8_buffer_some(heap, O, atleast) (heap8_ensure_head(heap), _heap8_buffer_some(heap, O, atleast)) +#define heap16_buffer_some(heap, O, atleast) (heap16_ensure_head(heap), _heap16_buffer_some(heap, O, atleast)) +#define heap32_buffer_some(heap, O, atleast) (heap32_ensure_head(heap), _heap32_buffer_some(heap, O, atleast)) +#define heap64_buffer_some(heap, O, atleast) (heap64_ensure_head(heap), _heap64_buffer_some(heap, O, atleast)) + +#define heap8_buffer_done(heap, O) heap8_done(heap, (O)->buf, (size_t)iof_size(O)) +#define heap16_buffer_done(heap, O) heap16_done(heap, (O)->buf, (size_t)iof_size(O)) +#define heap32_buffer_done(heap, O) heap32_done(heap, (O)->buf, (size_t)iof_size(O)) +#define heap64_buffer_done(heap, O) heap64_done(heap, (O)->buf, (size_t)iof_size(O)) + +#define heap8_buffer_giveup(heap, O) heap8_giveup(heap, (O)->buf) +#define heap16_buffer_giveup(heap, O) heap16_giveup(heap, (O)->buf) +#define heap32_buffer_giveup(heap, O) heap32_giveup(heap, (O)->buf) +#define heap64_buffer_giveup(heap, O) heap64_giveup(heap, (O)->buf) #endif \ No newline at end of file diff --git a/source/texk/web2c/luatexdir/luatex_svnversion.h b/source/texk/web2c/luatexdir/luatex_svnversion.h index 3ca997fce..75b1d77e4 100644 --- a/source/texk/web2c/luatexdir/luatex_svnversion.h +++ b/source/texk/web2c/luatexdir/luatex_svnversion.h @@ -1 +1 @@ -#define luatex_svn_revision 7289 +#define luatex_svn_revision 7307 diff --git a/source/texk/web2c/mplibdir/ChangeLog b/source/texk/web2c/mplibdir/ChangeLog index b6f1945f1..a03ed1ac9 100644 --- a/source/texk/web2c/mplibdir/ChangeLog +++ b/source/texk/web2c/mplibdir/ChangeLog @@ -1,7 +1,10 @@ +2020-02-18 Luigi Scarso <luigi.scarso@gmail.com> + * better mp_snprintf macro + + 2019-03-06 Luigi Scarso <luigi.scarso@gmail.com> * Code clean-up. - 2019-02-06: Taco Hoekwater <taco@elvenkind.com> * New primitive void: convert a suffix to a boolean. Work in progress. diff --git a/source/texk/web2c/mplibdir/mp.w b/source/texk/web2c/mplibdir/mp.w index 279739f85..69eeb571f 100644 --- a/source/texk/web2c/mplibdir/mp.w +++ b/source/texk/web2c/mplibdir/mp.w @@ -2960,15 +2960,8 @@ void *mp_xmalloc (MP mp, size_t nmem, size_t size) { } @ @<Internal library declarations@>= -/*int mp_snprintf_res ;*/ -/* Some compilers (i.e. gcc 8.2.0 ) complained with the old */ -/* #define mp_snprintf (void)snprintf */ -/* about truncation. For the moment we store the result. */ -/*# define mp_snprintf mp_snprintf_res=snprintf */ -/* Now gcc 10 does't like common symbols, so we switch back */ -/* to the old define. */ -#define mp_snprintf (void)snprintf - +/* Avoid warning on format truncation */ +#define mp_snprintf(...) (snprintf(__VA_ARGS__) < 0 ? abort() : (void)0) @* Dynamic memory allocation. diff --git a/source/texk/web2c/uptexdir/uptex_version.h b/source/texk/web2c/uptexdir/uptex_version.h index 5483afaa4..b5c4a7473 100644 --- a/source/texk/web2c/uptexdir/uptex_version.h +++ b/source/texk/web2c/uptexdir/uptex_version.h @@ -1 +1 @@ -#define UPTEX_VERSION "u1.25" +#define UPTEX_VERSION "u1.26" diff --git a/source/utils/README b/source/utils/README index d769221e2..29a0776ec 100644 --- a/source/utils/README +++ b/source/utils/README @@ -1,10 +1,10 @@ -$Id: README 53703 2020-02-06 23:29:37Z kakuto $ +$Id: README 54083 2020-03-04 23:30:22Z karl $ Public domain. Originally written 2005 by Karl Berry. Extra utilities we (optionally) compile for TeX Live. See comments in ../texk/README. -asymptote 2.62 - checked 16jan20 +asymptote 2.64 - checked 5mar20 update to TL from CTAN, to include prebuilt doc. see http://tug.org/texlive/build.html#asymptote and tlpkg/bin/tl-update-asy diff --git a/source/utils/configure b/source/utils/configure index 9ccafa0c6..26083bb8d 100755 --- a/source/utils/configure +++ b/source/utils/configure @@ -3148,7 +3148,7 @@ case $enable_luajittex in #( : ;; #( *) : case $host in #( - alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ) : + alpha* | sparc* | x86_64-*-solaris* | powerpc-* ) : { $as_echo "$as_me:${as_lineno-$LINENO}: $host -> \`--disable-luajittex'" >&5 $as_echo "$as_me: $host -> \`--disable-luajittex'" >&6;} ac_configure_args="$ac_configure_args '--disable-luajittex'" ;; #( @@ -3161,7 +3161,7 @@ case $enable_luajithbtex in #( : ;; #( *) : case $host in #( - alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ) : + alpha* | sparc* | x86_64-*-solaris* | powerpc-* ) : { $as_echo "$as_me:${as_lineno-$LINENO}: $host -> \`--disable-luajithbtex'" >&5 $as_echo "$as_me: $host -> \`--disable-luajithbtex'" >&6;} ac_configure_args="$ac_configure_args '--disable-luajithbtex'" ;; #( @@ -3174,7 +3174,7 @@ case $enable_mfluajit in #( : ;; #( *) : case $host in #( - alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ) : + alpha* | sparc* | x86_64-*-solaris* | powerpc-* ) : { $as_echo "$as_me:${as_lineno-$LINENO}: $host -> \`--disable-mfluajit'" >&5 $as_echo "$as_me: $host -> \`--disable-mfluajit'" >&6;} ac_configure_args="$ac_configure_args '--disable-mfluajit'" ;; #( @@ -3187,7 +3187,7 @@ case $enable_mfluajit_nowin in #( : ;; #( *) : case $host in #( - alpha* | sparc* | x86_64-*-solaris* | powerpc-*-darwin* ) : + alpha* | sparc* | x86_64-*-solaris* | powerpc-* ) : { $as_echo "$as_me:${as_lineno-$LINENO}: $host -> \`--disable-mfluajit-nowin'" >&5 $as_echo "$as_me: $host -> \`--disable-mfluajit-nowin'" >&6;} ac_configure_args="$ac_configure_args '--disable-mfluajit-nowin'" ;; #( -- GitLab