beta-0.89.2
[luatex.git] / source / doc / tlbuild.info
blob018090b855298a31c0a011e18a778541c4a19b1f
1 This is tlbuild.info, produced by makeinfo version 5.2 from
2 tlbuild.texi.
4 This file documents the TeX Live build system and more.
6    Copyright (C) 2016 Karl Berry.
7 Copyright (C) 2013, 2014, 2015 Karl Berry & Peter Breitenlohner.
9    Permission is granted to make and distribute verbatim copies of this
10 manual provided the copyright notice and this permission notice are
11 preserved on all copies.
13    Permission is granted to copy and distribute modified versions of
14 this manual under the conditions for verbatim copying, provided that the
15 entire resulting derived work is distributed under the terms of a
16 permission notice identical to this one.
18    Permission is granted to copy and distribute translations of this
19 manual into another language, under the above conditions for modified
20 versions, except that this permission notice may be stated in a
21 translation approved by the TeX Users Group.
22 INFO-DIR-SECTION TeX
23 START-INFO-DIR-ENTRY
24 * TLbuild: (tlbuild).           TeX Live configuration and development.
25 END-INFO-DIR-ENTRY
27 \x1f
28 File: tlbuild.info,  Node: Top,  Next: Introduction,  Up: (dir)
30 Building TeX Live (2016)
31 ************************
33 For an overview of this manual, *note Introduction::.
35 * Menu:
37 * Introduction::                About this manual.
38 * Overview of build system::    The TeX Live build system.
39 * Prerequisites::               Requirements for building TeX Live.
40 * Building::                    The overall build process.
41 * Installing::                  How and where installation happens (or not).
42 * Layout and infrastructure::   Autoconf macros, etc., in detail.
43 * Configure options::           List of all configure options.
44 * Cross compilation::           Building on host X for target Y.
45 * Coding conventions::          Conventions to follow.
46 * install-tl::                  The TeX Live installer.
47 * tlmgr::                       The native TeX Live package manager.
48 * Index::                       General index.
50 \x1f
51 File: tlbuild.info,  Node: Introduction,  Next: Overview of build system,  Prev: Top,  Up: Top
53 1 Introduction
54 **************
56 This manual (dated February 2016) corresponds to the TeX Live 2016
57 release.
59    This manual is aimed at system installers and programmers, and
60 focuses on how to configure, build, and develop the TeX Live (TL)
61 sources.  It is also available as plain text files in the source tree:
62 'source/README.*'.
64    The 'source/README' file in the TL source tree provides the
65 maximally-terse information for doing a build, and portability
66 information for different systems, along with
67 'source/doc/README.solaris'.
69    For information on acquiring the TL sources, see
70 <http://tug.org/texlive/svn>.
72    This manual does not duplicate the (primarily user-level) information
73 found in other TL documentation resources, such as:
75    * The TeX Live web pages: <http://tug.org/texlive>.
77    * The web page with an overview of how to build the binaries which
78      are distributed with TeX Live: <http://tug.org/texlive/build.html>.
80    * The TeX Live user manual: <http://tug.org/texlive/doc.html>, or run
81      'texdoc texlive'.
83    * Other TeX-related Texinfo manuals (*note (web2c)::, *note
84      (kpathsea)::, etc.): <http://tug.org/texinfohtml/>, or check the
85      'TeX' category in the GNU Info system.
87    * Package documentation:
88      <http://tug.org/texlive/Contents/live/doc.html>, or the 'doc.html'
89      file at the top level of the installed TL.
91    As an exception, the full documentation for 'install-tl' and 'tlmgr'
92 is included here, just because it is convenient to do so.  The same text
93 is available online (linked from <http://tug.org/texlive/doc.html>, or
94 by invoking the program with '--help' (or look at the end of the source
95 file).
97 \x1f
98 File: tlbuild.info,  Node: Overview of build system,  Next: Prerequisites,  Prev: Introduction,  Up: Top
100 2 Overview of build system
101 **************************
103 The TeX Live build system was redesigned in 2009, consistently using
104 Autoconf, Automake, and Libtool.  Thus
105    'configure && make && make check && make install'
106 or the basically-equivalent top-level 'Build' script suffice to build
107 and install the TL programs.  The 'make check' clause performs various
108 tests of the generated programs--not strictly required but strongly
109 recommended.  Running 'configure --help' will display a comprehensive
110 list of all 'configure' options.
112    The main components of the TL build system are:
114 'libs/LIB'
115      Generic libraries.
117 'texk/LIB'
118      TeX-specific libraries in subdirectories, notably LIB='kpathsea'.
119      (The other one is 'texk/ptexenc'.)
121 'texk/PROG'
122      TeX-specific programs (that use Kpathsea).
124 'utils/PROG'
125      Other programs (that don't use Kpathsea).
127    The primary design goal of the build system is modularity.  Each
128 program and library module (or package) specifies its own requirements
129 and properties, such as required libraries, whether an installed
130 (system) version of a library can be used, 'configure' options to be
131 seen at the top-level, and more.  An explicit list of all available
132 modules is kept in only one, central, place ('m4/kpse-pkgs.m4').
134    A second, related goal is to configure and build each library before
135 configuring any other (program or library) module which uses that
136 library.  This allows checking for properties and features of a library
137 built as part of the TL tree in much the same way as for a system
138 version of that library.
140    All generic libraries and several programs are maintained
141 independently.  The corresponding modules use (most of) the distributed
142 source tree and document any modifications of that source.
144    All this is for the sake of simplifying both upgrading of modules
145 maintained independently and integrating new modules into the TL build
146 system.  (Not to say that either task is trivial.)
148 \x1f
149 File: tlbuild.info,  Node: Prerequisites,  Next: Building,  Prev: Overview of build system,  Up: Top
151 3 Prerequisites
152 ***************
154 Overall, building the TeX Live programs, when using all libraries from
155 the TL source tree, requires only C and C++ compilers and GNU 'make'.
156 (If 'make' from your 'PATH' is not GNU make, you can set 'MAKE' in the
157 environment to whatever is necessary.)
159    Indeed, GNU 'make' is required only because of some third-party
160 libraries, notably FreeType; all the TL-maintained directories (and
161 Automake/Autoconf output in general) should work with any reasonable
162 'make'.
164    However, a few programs in the tree have additional requirements:
166 'web2c'
167      requires 'perl' for some tests run by 'make check'.
169 'xdvik'
170 'xpdfopen'
171      require X11 headers and libraries, often in "development" packages
172      that are not installed by default.
174 'xetex'
175      requires 'fontconfig' (again both headers and library).
177 'xindy'
178      requires GNU 'clisp' and in addition 'perl', 'latex', and
179      'pdflatex' to build the rules and/or documentation.
181 Lacking the required tools, building these programs must avoided, e.g.,
182 'configure --without-x --disable-xetex --disable-xindy'
184    Modifying source files induces more requirements, as one might
185 expect:
187    * Modification of any '.y' or '.l' source files requires 'bison' or
188      'flex' to updatete the corresponding C sources.
190    * Modification of the sources for '.info' files requires 'makeinfo'.
192    * Modification of any part of the build system (M4 macros,
193      'configure.ac', 'Makefile.am', or their fragments) requires GNU M4,
194      GNU Autoconf, GNU Automake, and GNU Libtool to update the generated
195      files.  *Note Build system tools::.
197    If you haven't modified any source files, and infrastructure tools
198 such as 'autoconf' or 'makeinfo' are still being run, check your
199 timestamps--notably, 'use-commit-times' must be set to 'yes' in your
200 Subversion configuration (*note Build system tools::).  Barring buggy
201 commits, no infrastructure tools are needed to do a normal build.
203 \x1f
204 File: tlbuild.info,  Node: Building,  Next: Installing,  Prev: Prerequisites,  Up: Top
206 4 Building
207 **********
209 The top-level 'Build' script is intended to simplify building the
210 binaries distributed with TeX Live itself--we call this the "native" TL
211 build.  It configures and makes everything in a subdirectory of the main
212 build tree (default 'Work/'), installs everything in an other
213 subdirectory (default 'inst/'), and finally runs 'make check'.  The
214 exact directory and command names can be specified via environment
215 variables and a few leading options.  All remaining arguments
216 (assignments or options) are passed to the 'configure' script.  Please
217 take a look at the script itself for more information; it is not
218 complicated.
220    An alternative, and the one we will mainly discuss here, is to run
221 'configure' and 'make' oneself in a suitable empty subdirectory.
222 Building in the source directory itself is not supported (sorry).
224 * Menu:
226 * Build iteration::     What 'configure' and 'make' do.
227 * Build problems::      If the build fails.
228 * Build in parallel::   Simultaneous 'make' processes.
229 * Build distribution::  Making a distribution tarball.
230 * Build one package::   Example of working on just one program.
232 \x1f
233 File: tlbuild.info,  Node: Build iteration,  Next: Build problems,  Up: Building
235 4.1 Build iteration
236 ===================
238 Running the top-level 'configure' script configures the top level and
239 the subdirectories 'libs', 'utils', and 'texk'.  Running 'make' at the
240 top-level first iterates over all TeX-specific libraries, and then runs
241 'make' in 'libs', 'utils', and 'texk' to iterate over all generic
242 libraries, utility programs, and TeX-specific programs.  These
243 iterations consist of two steps:
245   1. For each library or program module not yet configured, run
246      'configure', adding the configure option '--disable-build' if the
247      module need not be built, otherwise running 'make all'.
249   2. For each library or program module that must be built, run 'make'
250      for the selected target(s): 'default' or 'all' to (re-)build,
251      'check' to run tests, 'install', etc.
253    Running the top-level 'make' a second time iterates again over all
254 the library and program modules, but finds (should find) nothing to be
255 done unless some source files have been modified.
257 \x1f
258 File: tlbuild.info,  Node: Build problems,  Next: Build in parallel,  Prev: Build iteration,  Up: Building
260 4.2 Build problems
261 ==================
263 If configuring or building a module fails, you should first find and fix
264 the problem, then perhaps remove the subdirectory for that module from
265 the build tree, and finally rerun the top-level 'make' (or 'Build' with
266 '--no-clean' as its first argument).
268 \x1f
269 File: tlbuild.info,  Node: Build in parallel,  Next: Build distribution,  Prev: Build problems,  Up: Building
271 4.3 Build in parallel
272 =====================
274 The TL build system carefully formulates dependencies as well as 'make'
275 rules when a tool (such as 'tangle', 'ctangle', or 'convert') creates
276 several output files.  This allows for parallel builds ('make -j N' with
277 N>1 or even 'make -j') that can considerably speed up the TL build.
279    Incidentally, a noticeable speed-up can also be (independently)
280 gained by using a configure cache file, i.e., with the option '-C'
281 (recommended).
283 \x1f
284 File: tlbuild.info,  Node: Build distribution,  Next: Build one package,  Prev: Build in parallel,  Up: Building
286 4.4 Build distribution
287 ======================
289 Running 'make dist' at the top-level creates a tarball
290 'tex-live-YYYY-MM-DD.tar.xz' from the TL source tree.  Running 'make
291 distcheck' also verifies that this tarball suffices to build and install
292 all of TL.
294    This is useful for checking consistency of the source tree and
295 Makefiles, but the result is not a complete or even usable TeX system,
296 since all the support files are lacking; *note Installing::.
298 \x1f
299 File: tlbuild.info,  Node: Build one package,  Prev: Build distribution,  Up: Building
301 4.5 Build one package
302 =====================
304 To build one package, the basic idea is to use the 'configure' option
305 '--disable-all-pkgs' (*note '--disable-all-pkgs'::).  Then all program
306 and library modules are configured but none are made.  However, the
307 'Makefile's still contain all build rules and dependencies and can be
308 invoked to build an individual program or library and causes to first
309 build any required libraries.
311    This "build-on-demand" procedure is used, e.g., in the 'luatex'
312 repository to build LuaTeX, essentially from a subset of the complete
313 TeX Live tree.  Similarly, when, e.g., building the original e-TeX has
314 been disabled (as it is by default), one can run 'make etex' (or 'make
315 etex.exe') in 'texk/web2c/' to build e-TeX (although there is no
316 comparably simple way to install e-TeX).
318    If you want to work on a single program within the TL sources, this
319 is the recommended way to do it.  Here is an example from start to
320 finish for working on 'dvipdfm-x'.
322      mkdir mydir && cd mydir  # new working directory
324      # Get sources (<http://tug.org/texlive/svn>)
325      rsync -a --delete --exclude=.svn --exclude=Work \
326            tug.org::tldevsrc/Build/source/ .
328      # Create build directory:
329      mkdir Work && cd Work
331      # Do the configure:
332      ../configure --disable-all-pkgs --enable-dvipdfm-x \
333        -C CFLAGS=-g CXXFLAGS=-g >&outc
335      # Do the make:
336      make >&outm
338      # Test:
339      cd texk/dvipdfm-x
340      make check
342    Then you modify source files in 'mydir/texk/dvipdfm-x' and rerun
343 'make' in 'mydir/Work/texk/dvipdfm-x' to rebuild.
345    The second line of the 'configure' invocation shows examples of extra
346 things you likely want to specify if you intend to hack the sources (and
347 not just build binaries): the '-C' speeds up 'configure', and the
348 'CFLAGS' and 'CXXFLAGS' settings eliminate compiler optimization for
349 debugging purposes.
351    Of course, one should actually look at the output and check that
352 things are working.  There are many 'configure' options you can tweak as
353 desired; check the output from 'configure --help'.
355    Finally, the above retrieves the entire TL source tree (some 300mb).
356 It is natural to ask if this is really necessary.  Strictly speaking,
357 the answer is no, but it is vastly more convenient to do so.  If you cut
358 down the source tree, you must also give additional 'configure' flags to
359 individually disable using system versions of libraries, or the
360 intricacies of the dependencies (such as 'teckit' requiring 'zlib') will
361 have undesired side effects.  For an example, see the 'build-pdftex.sh'
362 script in the 'pdftex' development sources (<http://pdftex.org>), which
363 are indeed a cut-down TL source tree.
365 \x1f
366 File: tlbuild.info,  Node: Installing,  Next: Layout and infrastructure,  Prev: Building,  Up: Top
368 5 Installing
369 ************
371 This section discusses the results of 'make install' in the source tree.
373    The main consideration is that 'make install' is not enough to make a
374 usable TeX installation.  Beyond the compiled binaries, (thousands of)
375 support files are needed; just as a first example 'plain.tex' is not in
376 the source tree.
378    These support files are maintained completely independently and are
379 not present in the source tree.  The best basis for dealing with them is
380 the TeX Live (plain text) database in 'Master/tlpkg/texlive.tlpdb',
381 and/or the TeX Live installer, 'install-tl'.  More information is under
382 'Master/tlpkg' and at <http://tug.org/texlive/distro.html>.
384 * Menu:
386 * Installation directories::    The prefix, 'bindir', etc., directories.
387 * Linked scripts::              Scripts not maintained in the sources.
388 * Distro builds::               Configuring and building for OS distributions.
390 \x1f
391 File: tlbuild.info,  Node: Installation directories,  Next: Linked scripts,  Up: Installing
393 5.1 Installation directories
394 ============================
396 Running 'make install' (or 'make install-strip') installs executables in
397 'BINDIR', libraries in 'LIBDIR', headers in 'INCLUDEDIR', general data
398 (including "linked scripts", *note Linked scripts::) in
399 'DATAROOTDIR/texmf-dist', man pages in 'MANDIR', and Info files in
400 'INFODIR'.
402    The values of these directories are determined by 'configure' and can
403 be specified explictly as options such as '--prefix=PREFIX' or
404 '--bindir=BINDIR'; otherwise, they are given by their usual Autoconf
405 defaults:
407      PREFIX                  /usr/local
408      EXEC_PREFIX             PREFIX
409      BINDIR                  EXEC_PREFIX/bin
410      LIBDIR                  EXEC_PREFIX/lib
411      INCLUDEDIR              PREFIX/include
412      DATAROOTDIR             PREFIX/share
413      MANDIR                  DATAROOTDIR/man
414      INFODIR                 DATAROOTDIR/info
416 except possibly modified as follows:
418    * If the option '--enable-multiplatform' is given, '/PLATFORM' (i.e.,
419      the canonical platform name) is appended to 'BINDIR' and 'LIBDIR'.
420      This is implied for a native TL build.
422    * In a native TL build, 'DATAROOTDIR' is set to 'PREFIX', 'INFODIR'
423      is set to 'PREFIX/texmf-dist/doc/info', and 'MANDIR' to
424      'PREFIX/texmf-dist/doc/man', corresponding to the directories used
425      in the TL distribution.
427 The top-level 'configure' script displays all these installation paths.
429    For the native TL build, the 'Build' script leaves the binaries in
430 './inst/bin/STD-PLATFORM-NAME'.  The new binaries are not directly
431 usable from that location; they need to be copied to
432 'Master/bin/TL-PLATFORM'.  The other files and directories that end up
433 in './inst/' are ignored.
435 \x1f
436 File: tlbuild.info,  Node: Linked scripts,  Next: Distro builds,  Prev: Installation directories,  Up: Installing
438 5.2 Linked scripts
439 ==================
441 Quite a few executables are architecture-independent shell, Perl, or
442 other interpreted scripts, rather than compiled binaries.  A few are
443 maintained as part of the TL source tree, but most are maintained
444 elsewhere with copies under 'texk/texlive/linked_scripts'.
446    These so-called "linked scripts" are installed under
447 'DATAROOTDIR/texmf-dist/scripts'; for Unix-like systems a symbolic link
448 is made in 'BINDIR'.  For example, a symlink points from 'BINDIR/ps2eps'
449 to 'DATAROOTDIR/texmf-dist/scripts/ps2eps/ps2eps.pl'.  For Windows, a
450 standard wrapper binary (e.g., 'BINDIR/ps2eps.exe') serves the same
451 purpose.  (The source for the wrapper is in 'texk/texlive/w32_wrapper'.)
453    One reason for this is to avoid having many copies of the same
454 script; a more important reason is that it guarantees the scripts will
455 stay in sync across the different supported operating systems.
457    Most important of all, we want the 'BINDIR' resulting from the build
458 to be as close as possible to what is in the TL distribution.  At
459 present, there are a few exceptions--Asymptote, Biber, Xindy--and each
460 one creates considerable extra work.  We don't want to add more.  (See
461 <http://tug.org/texlive/build.html> for information about building those
462 exceptions, as well as the 'xz' and 'wget' programs that are used in the
463 TL infrastructure.)
465 \x1f
466 File: tlbuild.info,  Node: Distro builds,  Prev: Linked scripts,  Up: Installing
468 5.3 Distro builds
469 =================
471 Although they use the same code base, building for the native TL
472 distribution as shipped by the TeX user groups is typically quite
473 different from a "distro" build needed by, e.g., a full GNU/Linux or BSD
474 operating system distribution.
476    The native TL distribution uses shared libraries only when absolutely
477 necessary ('libc', 'libm', X11 libraries, and 'libfontconfig').
478 However, a distro typically wants to use as many shared libraries as
479 possible from elsewhere on the system, including TeX-specific libraries
480 such as 'libkpathsea' (even though Kpathsea has never officially been
481 released as a shared library, but we digress).  In addition, the
482 installation paths will, in general, be completely different.
484    Here are the 'configure' options that distro builds are likely to
485 find most relevant:
487 '--disable-native-texlive-build'
488      This must be specified to avoid interference from the many tweaks
489      we do for the native TL build.
491 '--with-banner-add=/SOMEDISTRO'
492      This isn't technically required, but is strongly recommended, so
493      your build and your distro can be distinguished from others.
495 '--enable-shared'
496      Build shared versions of the TeX-specific libraries (uses
497      'libtool').
499 '--disable-static'
500      Do not build the static versions of the TeX-specific libraries.
502 '--with-system-LIB'
503      Use system versions for as many libraries LIB as possible.
504      'configure --help' will give you the list of possibilities.
506 '--with-LIB-includes=DIR'
507 '--with-LIB-libdir=DIR'
508      If needed, allows you to specify where the headers/code are for the
509      given library LIB.
511 '--prefix=/usr'
512 '--prefix=/opt/TeXLive'
513      Or whatever your convention is.  The default is '/usr/local' and
514      you shouldn't install there for a distro.
516 '--libdir=\${exec_prefix}/lib64'
517      May be needed for 64-bit bi-architecture (GNU/Linux) systems.
519    You will need to take care of the support files mentioned above
520 (*note Installing::), and many other issues, such as font maps,
521 languages, and formats, independently of the build.  Norbert Preining
522 has written a detailed article on adapting TL for distros:
523 <http://tug.org/TUGboat/tb34-3/tb108preining-distro.pdf>.  (If the
524 article needs updating in the future, perhaps we will merge it into this
525 document.)
527 \x1f
528 File: tlbuild.info,  Node: Layout and infrastructure,  Next: Configure options,  Prev: Installing,  Up: Top
530 6 Layout and infrastructure
531 ***************************
533 The TeX Live source tree is the subtree rooted at 'Build/source' of the
534 complete TL distribution and contains the sources for all executables
535 distributed by TL, as well as 'configure' scripts and 'make' rules to
536 build and install them together with some of their support files.
538 * Menu:
540 * Build system tools::          If modifying infrastructure files.
541 * Top-level directories::
542 * Autoconf macros::             TL-specific Autoconf macros.
543 * Library modules::             Details on some specific libraries,
544 * Program modules::             and on some programs.
545 * Extending TeX Live::             Adding a new module.
547 \x1f
548 File: tlbuild.info,  Node: Build system tools,  Next: Top-level directories,  Up: Layout and infrastructure
550 6.1 Build system tools
551 ======================
553 As mentioned above (*note Prerequisites::), a normal build requires very
554 little.  On the other hand, if you want to modify the TeX Live
555 infrastructure sources, such as 'configure.ac' or 'Makefile.am' files,
556 you will need to have several additional tools installed.
558    In general, the TL build system uses the latest released versions of
559 the GNU build tools, installed directly from the original GNU releases
560 (e.g., by building them with 'configure --prefix=/usr/local/gnu' and
561 having 'PATH' start with '/usr/local/gnu/bin').  We have found that
562 trying to use the versions of these tools packaged for distros causes
563 many extra hassles, so don't do that, tempting as it may be.
565    Currently the versions we use are:
567      autoconf (GNU Autoconf) 2.69
568      automake (GNU automake) 1.15
569      bison (GNU Bison) 3.0.4
570      flex 2.6.0
571      ltmain.sh (GNU libtool) 2.4.6
572      m4 (GNU M4) 1.4.17
573      makeinfo (GNU texinfo) 6.1
575    These versions should be used to update the generated files (e.g.,
576 'configure' or 'Makefile.in') in all or parts of the TL tree after their
577 dependencies have been changed.  This can be done explicitly with the
578 top-level 'reautoconf' script or implicitly by using the configure
579 option '--enable-maintainer-mode'.
581    The files in the Subversion repository (see
582 <http://tug.org/texlive/svn>) are all up to date, but unfortunately this
583 may not be reflected by their timestamps.  (For starters, be sure to set
584 'use-commit-times=yes' in '~/.subversion/config' or the equivalent.)
586    To avoid unnecessary runs of 'bison', 'flex', or 'makeinfo' it may be
587 necessary to 'touch' the generated ('.c', '.h', or '.info') files.  With
588 '--enable-maintainer-mode' it may also be necessary to 'touch' first
589 'aclocal.m4', then 'configure' and 'config.h.in' (or 'c-auto.in'), and
590 finally all 'Makefile.in' files.  Perhaps 'make -t' will help.
592 \x1f
593 File: tlbuild.info,  Node: Top-level directories,  Next: Autoconf macros,  Prev: Build system tools,  Up: Layout and infrastructure
595 6.2 Top-level directories
596 =========================
598 Here is a brief description of the top-level directories in the TeX Live
599 source tree.
601    As mentioned at the beginning of *note Overview of build system::,
602 the main source directories are 'texk/' (TeX-specific programs and
603 libraries), 'utils/' (additional programs), and 'libs/' (generic
604 libraries).
606    The top-level directories 'am/' and 'm4/' contain 'Makefile.am'
607 fragments and Autoconf macros, respectively, used in many places.
608 Specifically, the file 'm4/kpse-pkgs.m4' contains lists of all program
609 and library modules; missing modules are silently ignored.  (This helps
610 in creating cut-down source trees.)
612    Each module contributes fragments (in separate files) defining its
613 capabilities and requirements to the 'configure.ac' scripts at the
614 top-level and in the subdirectories 'libs', 'utils', and 'texk'.  The
615 fragments from program modules supply 'configure' options to disable or
616 enable building them; those from library modules specify if an installed
617 (system) version of that library can be used.  This ultimately
618 determines which modules need to be built--although all modules must be
619 configured for the benefit of 'make' targets such as 'dist' or
620 'distcheck'.
622    The top-level 'build-aux/' directory contains the common files
623 'compile', 'config.guess', 'config.sub', 'depcomp', etc. for most
624 packages, pulled from the GNU Gnulib sources
625 (<http://www.gnu.org/software/gnulib>), which in turn synchronizes with
626 the appropriate ultimate upstream repository.  There are, however,
627 independent copies in, e.g., 'libs/freetype2/freetype-*/builds/unix/',
628 and similar places.  The 'reautoconf' script does not touch those, but a
629 TL cron job keeps them in sync (nightly).
631    The directory 'extra/' contains things which are not part of the TL
632 build, but are present just for (someone's) convenience, e.g.,
633 'epstopdf' which is developed here.
635 \x1f
636 File: tlbuild.info,  Node: Autoconf macros,  Next: Library modules,  Prev: Top-level directories,  Up: Layout and infrastructure
638 6.3 Autoconf macros
639 ===================
641 Here we describe some of the Autoconf macros used in several modules-not
642 a complete list, by any means.  These general macros are supplemented by
643 module-specific macros in directories such as 'texk/dvipng/m4/'; some of
644 those are described in *note Library modules:: and *note Program
645 modules::.
647 * Menu:
649 * Setup:     General setup macros.
650 * Programs:  Macros for programs.
651 * Compilers: Macros for compilers.
652 * Libraries: Macros for libraries.
653 * Flags:     Macros for library and header flags.
654 * Windows:   Macros for Windows.
656 \x1f
657 File: tlbuild.info,  Node: General setup macros,  Next: Macros for programs,  Up: Autoconf macros
659 6.3.1 General setup macros
660 --------------------------
662 The TL sources use two general setup macros:
664  -- Macro: KPSE_BASIC (NAME, [MORE-OPTIONS])
665      Initialize the basic TL infrastructure for module NAME:
666         'AM_INIT_AUTOMAKE([foreign MORE-OPTIONS])'
667         'AM_MAINTAINER_MODE'
668         'KPSE_COMPILER_WARNINGS'
669      and make sure the C compiler understands function prototypes.  This
670      is used for all generic library and program modules.
672  -- Macro: KPSE_COMMON (NAME, [MORE-OPTIONS])
673      Like 'KPSE_BASIC' but add:
674         'LT_PREREQ([2.2.6])'
675         'LT_INIT([win32-dll])'
676         'AC_SYS_LARGEFILE'
677         'AC_FUNC_FSEEKO'
678      and check for frequently used functions, headers, types, and
679      structures.  This is used for TeX-specific modules.
681 \x1f
682 File: tlbuild.info,  Node: Macros for programs,  Next: Macros for compilers,  Prev: General setup macros,  Up: Autoconf macros
684 6.3.2 Macros for programs
685 -------------------------
687 Macros for program checks:
689  -- Macro: KPSE_CHECK_LATEX
690      Set 'LATEX' to the name of the first of 'latex', 'elatex', or
691      'lambda' which exists in 'PATH', or to 'no' if none of them exists.
692      Call 'AC_SUBST' for 'LATEX'.  The result of this test can be
693      overridden by setting the 'LATEX' environment variable or the cache
694      variable 'ac_cv_prog_LATEX'.
696  -- Macro: KPSE_CHECK_PDFLATEX
697      Check for 'pdflatex' in 'PATH' and set 'PDFLATEX'.
699  -- Macro: KPSE_CHECK_PERL
700      Check for 'perl' or 'perl5' in 'PATH' and set 'PERL'.
702  -- Macro: KPSE_PROG_LEX
703      Call 'AC_PROG_LEX' and add the flag '-l' for 'flex'.
705 \x1f
706 File: tlbuild.info,  Node: Macros for compilers,  Next: Macros for libraries,  Prev: Macros for programs,  Up: Autoconf macros
708 6.3.3 Macros for compilers
709 --------------------------
711 Macros for compiler-related checks:
713  -- Macro: KPSE_COMPILER_WARNINGS
714      When using the (Objective) C/C++ compiler, set
715      'WARNING_[OBJ]C[XX]FLAGS' to suitable warning flags (depending on
716      the value given to or implied for '--enable-compiler-warnings').
717      Call 'AC_SUBST' for them.  At the moment this only works for GNU
718      compilers, but could be extended to others if necessary.
720      This macro caches its results in the 'kpse_cv_warning_cflags', ...
721      variables.
723  -- Macro: KPSE_COMPILER_VISIBILITY
724      When using the C or C++ compiler, try to set
725      'VISIBILITY_C[XX]FLAGS' to flags to hide external symbols.  Call
726      'AC_SUBST' for this variable.  At the moment this only tests for
727      the compiler option '-fvisibility=hidden', but that could be
728      extended with more checks if necessary.
730      This macro caches its results in the 'kpse_cv_visibility_cflags' or
731      'kpse_cv_visibility_cxxflags' variable.
733  -- Macro: KPSE_CXX_HACK
734      Provide the configure option '--enable-cxx-runtime-hack'.  If
735      enabled and when using 'g++', try to statically link with
736      'libstdc++', somewhat improving portability of the resulting
737      binary.
739      This macro caches its result in the 'kpse_cv_cxx_hack' variable.
741 \x1f
742 File: tlbuild.info,  Node: Macros for libraries,  Next: Macros for library and header flags,  Prev: Macros for compilers,  Up: Autoconf macros
744 6.3.4 Macros for libraries
745 --------------------------
747 One macro for a library check:
749  -- Macro: KPSE_LARGEFILE (VARIABLE, [EXTRA-DEFINE])
750      Call 'AC_SYS_LARGEFILE' and 'AC_FUNC_FSEEKO' and append suitable
751      '-D' flags (optionally including '-DEXTRA-DEFINE') to VARIABLE.
753 \x1f
754 File: tlbuild.info,  Node: Macros for library and header flags,  Next: Macros for Windows,  Prev: Macros for libraries,  Up: Autoconf macros
756 6.3.5 Macros for library and header flags
757 -----------------------------------------
759 Each library module 'libs/LIB' or 'texk/LIB' is supplemented by a macro
760 'KPSE_LIB_FLAGS' (all uppercase) that provides make variables for that
761 library.  E.g., for 'libs/libpng':
763  -- Macro: KPSE_LIBPNG_FLAGS
764      Provide the configure option '--with-system-libpng'.  Set and
765      'AC_SUBST' 'make' variables for modules using this library (either
766      an installed version or from the TeX Live tree): 'LIBPNG_INCLUDES'
767      for use in 'CPPFLAGS', 'LIBPNG_LIBS' for use in 'LDADD',
768      'LIBPNG_DEPEND' for use as dependency, and 'LIBPNG_RULE' defining
769      'make' rules to rebuild the library.
771  -- Macro: KPSE_ADD_FLAGS (NAME)
772      Temporarily extend 'CPPFLAGS' and 'LIBS' with the values required
773      for the library module 'NAME'.
775  -- Macro: KPSE_RESTORE_FLAGS
776      Restore 'CPPFLAGS' and 'LIBS' to their original values.
778    As an example, the 'configure.ac' file for a hypothetical program
779 'utils/foo' using 'libpng', and hence 'zlib', would contain
780      KPSE_ZLIB_FLAGS
781      KPSE_LIBPNG_FLAGS
783 and its 'Makefile.am' would be along these lines:
784      bin_PROGRAMS = foo
785      AM_CPPFLAGS = ${LIBPNG_INCLUDES} ${ZLIB_INCLUDES}
786      foo_LDADD = ${LIBPNG_LIBS} ${ZLIB_LIBS}
787      foo_DEPENDENCIES = ${ZLIB_DEPEND} ${LIBPNG_DEPEND}
788      ## Rebuild libz
789      @ZLIB_RULE@
790      ## Rebuild libpng
791      @LIBPNG_RULE@
793    If it was necessary to examine whether certain 'zlib' or 'libpng'
794 features were available, 'configure.ac' should be continued this way:
795      KPSE_ADD_FLAGS([zlib])
796      ... # tests for 'zlib' features, if any
797      KPSE_ADD_FLAGS([libpng])
798      ... # tests for 'libpng' features
799      KPSE_RESTORE_FLAGS # restore 'CPPFLAGS' and 'LIBS'
801 \x1f
802 File: tlbuild.info,  Node: Macros for Windows,  Prev: Macros for library and header flags,  Up: Autoconf macros
804 6.3.6 Macros for Windows
805 ------------------------
807 Windows differs in several aspects from Unix-like systems, many of them
808 due to the lack of symbolic links.
810  -- Macro: KPSE_CHECK_WIN32
811      Check if compiling for a Windows system.  The result is 'no' for
812      Unix-like systems (including Cygwin), 'mingw32' for Windows with
813      GCC, or 'native' for Windows with MSVC. The result is cached in the
814      'kpse_cv_have_win32' variable.
816  -- Macro: KPSE_COND_WIN32
817      Call 'KPSE_CHECK_WIN32' and define the Automake conditional 'WIN32'
818      ('true' if the value of 'kpse_cv_have_win32' is not 'no').
820  -- Macro: KPSE_COND_MINGW32
821      Call 'KPSE_COND_WIN32' and define the Automake conditional
822      'MINGW32' ('true' if the value of 'kpse_cv_have_win32' is
823      'mingw32').
825  -- Macro: KPSE_COND_WIN32_WRAP
826      Call 'KPSE_COND_WIN32' and define the Automake conditional
827      'WIN32_WRAP' ('true' if the standard Windows wrapper
828      ('texk/texlive/w32_wrapper/runscript.exe') exists.  This wrapper is
829      used on Windows instead of symlinks for the "linked scripts" (*note
830      Linked scripts::).
832  -- Macro: KPSE_WIN32_CALL
833      Call 'KPSE_COND_WIN32', check if the file
834      'texk/texlive/w32_wrapper/callexe.c' exists; if it does, create a
835      symlink in the build tree.  Compiling 'callexe.c' with
836      '-DEXEPROG='"FOO.exe"'' and installing 'callexe.exe' as 'BAR.exe'
837      is used on Windows instead of a symlink 'BAR->FOO' for Unix-like
838      systems.
840 \x1f
841 File: tlbuild.info,  Node: Library modules,  Next: Program modules,  Prev: Autoconf macros,  Up: Layout and infrastructure
843 6.4 Library modules
844 ===================
846 Here we discuss some specifics for a few of the libraries in TL, both
847 for the details themselves, and as a way of illuminating the general
848 structure and variation.
850 * Menu:
852 * 'png' library::       'libs/libpng'
853 * 'zlib' library::      'libs/zlib'
854 * 'freetype' library::  'libs/freetype2'
855 * 'kpathsea' library::  'texk/kpathsea'
857 \x1f
858 File: tlbuild.info,  Node: 'png' library,  Next: 'zlib' library,  Up: Library modules
860 6.4.1 The 'png' library in 'libs/libpng'
861 ----------------------------------------
863 This generic library uses the source tree in, e.g., the subdirectory
864 'libpng-1.6.16' with all modifications for TL recorded in
865 'libpng-1.6.16-PATCHES/*'.  The 'configure.ac' fragment
866 'ac/withenable.ac' contains
868      KPSE_WITH_LIB([libpng], [zlib])
870 specifying the module name, and indicating the dependency on 'zlib'.  A
871 third literal argument 'tree' would specify that the library from the
872 TeX Live tree cannot be replaced by a system version.  That not being
873 the case here, a second fragment 'ac/libpng.ac' contains
875      KPSE_TRY_LIB([libpng],
876                   [#include <png.h>],
877                   [png_structp png; png_voidp io; png_rw_ptr fn;
878      png_set_read_fn(png, io, fn);])
880 thus providing the simple C code
882      #include <png.h>
883      int main ()
884      { png_structp png; png_voidp io; png_rw_ptr fn;
885        png_set_read_fn(png, io, fn);
886        return 0; }
888 which Autoconf uses to verify the usability of a system version with C
889 code.  The analogous macro 'KPSE_TRY_LIBXX' would check using C++ code.
890 These fragments are included by 'configure.ac' at the top level.
892    For this library, among many other modules, a proxy build system for
893 TL is used ('configure.ac', 'Makefile.am', and 'include/Makefile.am'),
894 ignoring the distributed one.  Consequently, a few generated files and
895 auxiliary scripts are removed from the distributed source tree.  The
896 public headers 'png.h', 'pngconf.h', and 'pnglibconf.h' are "installed"
897 (as symlinks) under 'include/' in the build tree exactly as they are for
898 a system version under, e.g., '/usr/include/'.
900    The module is supplemented by the file 'm4/kpse-libpng-flags.m4' that
901 defines the M4 macro 'KPSE_LIBPNG_FLAGS' used by all modules depending
902 on this library in their 'configure.ac' to generate the 'make' variables
903 'LIBPNG_INCLUDES' for use in 'CPPFLAGS', 'LIBPNG_LIBS' for use in
904 'LDADD', 'LIBPNG_DEPEND' for use as dependencies, and 'LIBPNG_RULE'
905 defining 'make' rules to rebuild the library.
907    'm4/kpse-libpng-flags.m4' also supplies the configure option
908 '--with-system-libpng' and uses 'pkg-config' to determine the flags
909 required for the system library.
911 \x1f
912 File: tlbuild.info,  Node: 'zlib' library,  Next: 'freetype' library,  Prev: 'png' library,  Up: Library modules
914 6.4.2 The 'zlib' library in 'libs/zlib'
915 ---------------------------------------
917 This generic library is very much analogous to 'libpng', but without the
918 dependency on any other library.  The file 'm4/kpse-zlib-flags.m4'
919 supplies the configure option '--with-system-zlib', as well as
920 '--with-zlib-includes' and '--with-zlib-libdir' to specify non-standard
921 locations of the 'zlib' headers and/or library.
923 \x1f
924 File: tlbuild.info,  Node: 'freetype' library,  Next: 'kpathsea' library,  Prev: 'zlib' library,  Up: Library modules
926 6.4.3 The 'freetype' library in 'libs/freetype2'
927 ------------------------------------------------
929 This module uses a wrapper build system with an almost trivial
930 'configure.ac' and with a 'Makefile.am' that invokes 'configure' and
931 'make' for the distributed source, followed by 'make install' with the
932 build tree as destination.  The flags required for the system library
933 are obtained through 'freetype-config'.
935 \x1f
936 File: tlbuild.info,  Node: 'kpathsea' library,  Prev: 'freetype' library,  Up: Library modules
938 6.4.4 The 'kpathsea' library in 'texk/kpathsea'
939 -----------------------------------------------
941 This is one of the TeX-specific libraries that are maintained as part of
942 TeX Live (*note (kpathsea)::).  Despite being a core part of the TeX
943 system, it is not a terribly special case in the infrastructure.  The
944 TeX libraries are Libtool libraries (static and/or shared) and are
945 installed by 'make install' together with the programs.  They are,
946 however, not part of the TL DVD as distributed by TeX user groups, and
947 have never been officially released for standalone use.
949    It is possible, and perhaps even useful for distro builds (*note
950 Distro builds::), to specify the configure option
951 '--with-system-kpathsea' in order to use a system version of the
952 library.  Programs outside the TL tree should use 'pkg-config' for the
953 required flags.
955    In addition to 'ac/withenable.ac' and 'ac/kpathsea.ac' there is a
956 third fragment 'ac/mktex.ac' included by both 'ac/withenable.ac' and
957 'configure.ac' that supplies configure options such as
958 '--enable-mktextfm-default', which determine the compile time default of
959 whether or not to run 'mktextfm' to generate a missing '.tfm' file.  In
960 any case, however, the command line options '-mktex=tfm' or
961 '-no-mktex=tfm' for the TeX-like engines override this default.
963 \x1f
964 File: tlbuild.info,  Node: Program modules,  Next: Extending TeX Live,  Prev: Library modules,  Up: Layout and infrastructure
966 6.5 Program modules
967 ===================
969 As with libraries (*note Library modules::), here we discuss the details
970 for a few of the programs in TL.
972 * Menu:
974 * 't1utils' package:: 'utils/t1utils'
975 * 'xindy' package::   'utils/xindy'
976 * 'xdvik' package::   'texk/xdvik'
977 * 'asymptote'::       'utils/asymptote'
979 \x1f
980 File: tlbuild.info,  Node: 't1utils' package,  Next: 'xindy' package,  Up: Program modules
982 6.5.1 The 't1utils' package in 'utils/t1utils'
983 ----------------------------------------------
985 Once again we use the distributed source tree 't1utils-1.39' with
986 modifications documented in 't1utils-1.39-PATCHES/*' and a proxy build
987 system consisting of 'configure.ac' and 'Makefile.am'.  The fragment
988 'ac/withenable.ac' contains
990      KPSE_ENABLE_PROG([t1utils])
992 specifying the module name without any dependencies, and supplies the
993 configure option '--disable-t1utils'.
995 \x1f
996 File: tlbuild.info,  Node: 'xindy' package,  Next: 'xdvik' package,  Prev: 't1utils' package,  Up: Program modules
998 6.5.2 The 'xindy' package in 'utils/xindy'
999 ------------------------------------------
1001 This module uses the distributed source tree 'xindy-2.5.1' with
1002 modifications documented in 'xindy-2.5.1-PATCHES/*', a proxy
1003 'configure.ac', and a wrapper 'Makefile.am' that descends into
1004 'xindy-2.5.1'.  The 'xindy' build requires that the distributed
1005 'Makefile's allow a 'VPATH' build, can handle all targets, and do not
1006 refer to '${top_srcdir}' or '${top_builddir}'.  The fragment
1007 'ac/withenable.ac' contains
1009      KPSE_ENABLE_PROG([xindy], , [disable native])
1010      m4_include(kpse_TL[utils/xindy/ac/xindy.ac])
1011      m4_include(kpse_TL[utils/xindy/ac/clisp.ac])
1013 where 'disable' in the third argument indicates that 'xindy' is only
1014 built if explicitly enabled by the user with 'configure --enable-xindy'
1015 (the need for 'clisp' is too painful to require by default), and
1016 'native' disallows cross compilation.  The additional fragments
1017 'ac/xindy.ac' and 'ac/clisp.ac' specify more 'configure' options to be
1018 seen at the top level with 'ac/xindy.ac' also included by
1019 'configure.ac'.
1021 \x1f
1022 File: tlbuild.info,  Node: 'xdvik' package,  Next: 'asymptote',  Prev: 'xindy' package,  Up: Program modules
1024 6.5.3 The 'xdvik' package in 'texk/xdvik'
1025 -----------------------------------------
1027 This package is maintained as part of the TeX Live tree with sources in
1028 its top level directory and the subdirectory 'gui'.  The fragment
1029 'ac/withenable.ac' contains
1031      dnl extra_dirs = texk/xdvik/squeeze
1032      KPSE_ENABLE_PROG([xdvik], [kpathsea freetype2], [x])
1033      m4_include(kpse_TL[texk/xdvik/ac/xdvik.ac])
1035 thus specifying the dependency on the 'kpathsea', 'freetype', and X11
1036 libraries.  The M4 comment (following 'dnl') signals the subsidiary
1037 'squeeze/configure.ac'.  This is needed because the main executable
1038 'xdvi-bin' (to be installed as, e.g., 'xdvi-xaw') is for the 'host'
1039 system whereas the auxiliary program 'squeeze/squeeze' has to run on the
1040 'build' system and in a cross compilation they differ.
1042    The additional fragment 'ac/xdvik.ac' is also included by
1043 'configure.ac' and supplies the configure option '--with-xdvi-x-toolkit'
1044 also seen at the top-level.
1046 \x1f
1047 File: tlbuild.info,  Node: 'asymptote',  Prev: 'xdvik' package,  Up: Program modules
1049 6.5.4 The subdirectory 'utils/asymptote'
1050 ----------------------------------------
1052 This subdirectory contains the sources for 'asy' and 'xasy' but due to
1053 its complexity and prerequisites (e.g., OpenGL) it is not part of the TL
1054 build system.  These programs must be built and installed independently,
1055 but are included on the TL DVD together with their support files.
1057 \x1f
1058 File: tlbuild.info,  Node: Extending TeX Live,  Prev: Program modules,  Up: Layout and infrastructure
1060 6.6 Extending TeX Live
1061 ======================
1063 This section outlines the basic process for adding new packages to the
1064 TL build system.
1066 * Menu:
1068 * Adding a new program module::
1069 * Adding a new generic library module::
1070 * Adding a new TeX-specific library module::
1072 \x1f
1073 File: tlbuild.info,  Node: Adding a new program module,  Next: Adding a new generic library module,  Up: Extending TeX Live
1075 6.6.1 Adding a new program module
1076 ---------------------------------
1078 A TeX-specific program module in a subdirectory 'texk/PROG' may use the
1079 TeX-specific libraries and is included by adding its name 'PROG' to the
1080 M4 list 'kpse_texk_pkgs' defined in 'm4/kpse-pkgs.m4'.
1082    A generic program module in a subdirectory 'utils/PROG' must not use
1083 the TeX-specific libraries and is included by adding its name 'PROG' to
1084 the M4 list 'kpse_utils_pkgs' in 'm4/kpse-pkgs.m4'.
1086    In either case, apart from the program sources and build system
1087 ('configure.ac' and 'Makefile.am'), the subdirectory 'texk/PROG' or
1088 'utils/PROG' must provide a fragment 'ac/withenable.ac' that contains
1089 the M4 macro 'KPSE_ENABLE_PROG' defined in 'm4/kpse-setup.m4' with
1090 'PROG' as the mandatory first argument and three optional arguments:
1092   1. a list of required libraries from the TL tree;
1094   2. a list of options ('disable' if this module is not to be built
1095      without the configure option '--enable-PROG', 'native' if cross
1096      compilation is not possible, 'x' if the program requires X11
1097      libraries);
1099   3. and a comment added to the help text for the 'configure' option
1100      '--enable-PROG' or '--disable-PROG'.
1102    If the module requires specific configure options to be seen at the
1103 top-level, they should be defined in an additional fragment 'ac/PROG.ac'
1104 included from 'ac/withenable.ac' and 'configure.ac'.
1106 \x1f
1107 File: tlbuild.info,  Node: Adding a new generic library module,  Next: Adding a new TeX-specific library module,  Prev: Adding a new program module,  Up: Extending TeX Live
1109 6.6.2 Adding a new generic library module
1110 -----------------------------------------
1112 A generic library module in a subdirectory 'libs/LIB' must not depend on
1113 TeX-specific libraries, by definition.  It is included by adding its
1114 name 'LIB' to the M4 list 'kpse_libs_pkgs' in 'm4/kpse-pkgs.m4'--before
1115 any other libraries from the TeX Live tree on which it depends.
1117    As with program modules, the subdirectory 'libs/LIB' must contain the
1118 sources and build system for the library (and any installable support
1119 programs) and a fragment 'ac/withenable.ac' that contains the M4 macro
1120 'KPSE_WITH_LIB' defined in 'm4/kpse-setup.m4' with 'LIB' as the
1121 mandatory first argument and two optional arguments: a list of required
1122 libraries from the TL tree, and a list of options (currently there is
1123 only one: specify 'tree' if this library cannot be replaced by a system
1124 version).
1126    If a system version can be used, a second fragment 'ac/LIB.ac' is
1127 needed, containing the M4 macro 'KPSE_TRY_LIB' (or 'KPSE_TRY_LIBXX')
1128 with 'LIB' as the mandatory first argument and two additional arguments
1129 for the Autoconf macro 'AC_LANG_PROGRAM' used to compile and link a
1130 small C (or C++) program as sanity check for using the system library.
1132    In addition a file 'm4/kpse-LIB-flags' (at the top level) must define
1133 the M4 macro 'KPSE_LIB_FLAGS' (all uppercase) setting up the 'make'
1134 variables 'LIB_INCLUDES', 'LIB_LIBS', 'LIB_DEPEND', and 'LIB_RULE' with
1135 the values required for 'CPPFLAGS', 'LDADD', dependencies, and a
1136 (multi-line) 'make' rule to rebuild the library when necessary.  All of
1137 that is needed for the library from the TL tree and, if supported, for a
1138 system version.
1140    If a system library is allowed, 'KPSE_LIB_FLAGS' also provides the
1141 configure option '--with-system-LIB' and uses the additional M4 macro
1142 'KPSE_LIB_SYSTEM_FLAGS' to generate the 'make' variables for a system
1143 library.  Furthermore the definition of the M4 macro
1144 'KPSE_ALL_SYSTEM_FLAGS' in 'm4/kpse-pkgs.m4' must be extended by the
1145 line:
1146    'AC_REQUIRE([KPSE_LIB_SYSTEM_FLAGS])'
1148 \x1f
1149 File: tlbuild.info,  Node: Adding a new TeX-specific library module,  Prev: Adding a new generic library module,  Up: Extending TeX Live
1151 6.6.3 Adding a new TeX-specific library module
1152 ----------------------------------------------
1154 A TeX-specific library module in a subdirectory 'texk/LIB' may depend on
1155 other TeX-specific libraries but must not depend on any generic library
1156 from the TL tree.  It is included in the same general ways as a generic
1157 library (see the previous section), with these modifications:
1159    * The library name 'LIB' is added to the M4 list 'kpse_texlibs_pkgs'
1160      also in 'm4/kpse-pkgs.m4'.
1162    * The fragment 'ac/withenable.ac' must use 'KPSE_WITH_TEXLIB'.
1164 \x1f
1165 File: tlbuild.info,  Node: Configure options,  Next: Cross compilation,  Prev: Layout and infrastructure,  Up: Top
1167 7 Configure options
1168 *******************
1170 Corresponding to the large number of program and library modules there
1171 are a large number 'configure' options, most of which are described
1172 here.  The command
1173    'configure --help'
1174 at the top level gives an exhaustive list of all global options and a
1175 few important module-specific ones, whereas, e.g.,
1176    'texk/lcdf-typetools/configure --help'
1177 also displays the 'lcdf-typetools' specific options, which are not shown
1178 at the top-level.
1180    The help text also mentions several influential environment
1181 variables, but for TeX Live it is better to specify them as assigments
1182 on the command line.
1184    The './Build' script used to make the binaries shipped with TeX Live
1185 invokes the top-level 'configure' with a few additional options (*note
1186 Building::).  The defaults discussed below are those for the actual
1187 'configure' script; invoking 'configure' via './Build' may yield
1188 different results.
1190    Defaults for most options are set at the top level and propagated
1191 explicitly to all subdirectories.  Options specified on the command line
1192 are checked for consistency but never modified.
1194 * Menu:
1196 * Global configure options::
1197 * Program-specific configure options::
1198 * Library-specific configure options::
1199 * Variables for configure::
1201 \x1f
1202 File: tlbuild.info,  Node: Global configure options,  Next: Program-specific configure options,  Up: Configure options
1204 7.1 Global configure options
1205 ============================
1207 Here are the global configure options.
1209 * Menu:
1211 * '--disable-native-texlive-build'::
1212 * '--prefix' '--bindir' ...::
1213 * '--disable-largefile'::
1214 * '--disable-missing'::
1215 * '--enable-compiler-warnings='LEVEL::
1216 * '--enable-cxx-runtime-hack'::
1217 * '--enable-maintainer-mode'::
1218 * '--enable-multiplatform'::
1219 * '--enable-shared'::
1220 * '--enable-silent-rules'::
1221 * '--without-ln-s'::
1222 * '--without-x'::
1224 \x1f
1225 File: tlbuild.info,  Node: '--disable-native-texlive-build',  Next: '--prefix' '--bindir' ...,  Up: Global configure options
1227 7.1.1 '--disable-native-texlive-build'
1228 --------------------------------------
1230 If enabled (the default), build for a TL binary distribution as shipped
1231 by the TeX user groups.  This requires GNU 'make' and implies
1232 '--enable-multiplatform' and '--enable-cxx-runtime-hack' (unless they
1233 are explicitly disabled), and enforces '--disable-shared'.
1235    If building TL for a GNU/Linux or other distribution, this should be
1236 disabled and system versions of most libraries would be used (*note
1237 Distro builds::).  This may fail without GNU 'make', but will be tried
1238 regardless.
1240    A related option, '--enable-texlive-build', is automatically passed
1241 to all subdirectories (and cannot be disabled).  Subdirectories that can
1242 also be built independently from the TL tree (such as 'utils/xindy' and
1243 'texk/dvipng') can use this option, e.g., to choose TL-specific
1244 installation paths.
1246 \x1f
1247 File: tlbuild.info,  Node: '--prefix' '--bindir' ...,  Next: '--disable-largefile',  Prev: '--disable-native-texlive-build',  Up: Global configure options
1249 7.1.2 '--prefix', '--bindir', ...
1250 ---------------------------------
1252 These standard Autoconf options specify various installation directories
1253 as usual.  For the complete list, *note Installation directories::.
1255    Also as usual, all values are prefixed by the value of 'DESTDIR', if
1256 set, on the 'make' command line (*note Installation in a temporary
1257 location: (automake)Staged Installs.).
1259 \x1f
1260 File: tlbuild.info,  Node: '--disable-largefile',  Next: '--disable-missing',  Prev: '--prefix' '--bindir' ...,  Up: Global configure options
1262 7.1.3 '--disable-largefile'
1263 ---------------------------
1265 Omit large file support (LFS), needed on most 32-bit Unix systems for
1266 files with 2GB or more.  Regardless of this, the size of 'DVI' and 'GF'
1267 files must always be <2GB, due to the file format specifications.
1269    With LFS, there is no fixed limit on the size of PDF files created by
1270 'pdftex' or PostScript files created by 'dvips'.  The size of PDF images
1271 included by 'pdftex' or 'luatex' must, however, be <2GB when using
1272 'poppler' version 0.22 or before (even on 64-bit systems with LFS).
1274 \x1f
1275 File: tlbuild.info,  Node: '--disable-missing',  Next: '--enable-compiler-warnings='LEVEL,  Prev: '--disable-largefile',  Up: Global configure options
1277 7.1.4 '--disable-missing'
1278 -------------------------
1280 Immediately terminate the build process if a requested program or
1281 feature must be disabled, e.g., due to missing libraries.  This can help
1282 when figuring out a specific (sub)set of modules to enable.
1284 \x1f
1285 File: tlbuild.info,  Node: '--enable-compiler-warnings='LEVEL,  Next: '--enable-cxx-runtime-hack',  Prev: '--disable-missing',  Up: Global configure options
1287 7.1.5 '--enable-compiler-warnings='LEVEL
1288 ----------------------------------------
1290 Enable various levels of compiler warnings for (Objective) C and C++:
1291 the LEVEL value can be one of: 'no min yes max all'.  The default is
1292 'yes' in 'maintainer-mode' (see below) and 'min' otherwise.  This option
1293 defines 'WARNING_[OBJ]C[XX]FLAGS' but these flags are not used in all
1294 library and program modules.  Using them should help to resolve
1295 portability problems.
1297    At present, these warning flags are only defined for the GNU
1298 compilers but flags for other compilers could be added when needed.
1300 \x1f
1301 File: tlbuild.info,  Node: '--enable-cxx-runtime-hack',  Next: '--enable-maintainer-mode',  Prev: '--enable-compiler-warnings='LEVEL,  Up: Global configure options
1303 7.1.6 '--enable-cxx-runtime-hack'
1304 ---------------------------------
1306 If enabled (as it is for the native TL build) and when using 'g++', try
1307 to statically link with 'libstdc++', somewhat improving portability of
1308 the resulting binary.  *Note Macros for compilers::.
1310 \x1f
1311 File: tlbuild.info,  Node: '--enable-maintainer-mode',  Next: '--enable-multiplatform',  Prev: '--enable-cxx-runtime-hack',  Up: Global configure options
1313 7.1.7 '--enable-maintainer-mode'
1314 --------------------------------
1316 Enable 'make' rules and dependencies not useful (and sometimes
1317 confusing) to the casual user.  This requires current versions of the
1318 GNU build tools (*note Build system tools::), as it automatically
1319 rebuilds infrastructure files as needed.  *Note 'missing' and
1320 'AM_MAINTAINER_MODE': (automake)maintainer-mode.
1322 \x1f
1323 File: tlbuild.info,  Node: '--enable-multiplatform',  Next: '--enable-shared',  Prev: '--enable-maintainer-mode',  Up: Global configure options
1325 7.1.8 '--enable-multiplatform'
1326 ------------------------------
1328 If enabled and '--bindir=DIR' or '--libdir=DIR' are not specified,
1329 install executables and libraries in per-platform subdirectories of
1330 'EPREFIX/bin' and 'EPREFIX/lib' where EPREFIX is the value given or
1331 implied for 'exec_prefix'.  In any case, the values for 'bindir' and
1332 'libdir' are automatically propagated to all subdirectories.
1334 \x1f
1335 File: tlbuild.info,  Node: '--enable-shared',  Next: '--enable-silent-rules',  Prev: '--enable-multiplatform',  Up: Global configure options
1337 7.1.9 '--enable-shared'
1338 -----------------------
1340 Build shared versions of the TeX-specific libraries such as
1341 'libkpathsea'.  This is not allowed for a native TL build (i.e.,
1342 '--disable-native-texlive-build' must also be specified).
1344 \x1f
1345 File: tlbuild.info,  Node: '--enable-silent-rules',  Next: '--without-ln-s',  Prev: '--enable-shared',  Up: Global configure options
1347 7.1.10 '--enable-silent-rules'
1348 ------------------------------
1350 Enable the use of less verbose build rules.  When using GNU 'make' (or
1351 another 'make' implementation supporting nested variable expansions),
1352 you can specify 'V=1' on the 'make' command line to get more verbosity,
1353 or 'V=0' to get less, regardless of this option.
1355 \x1f
1356 File: tlbuild.info,  Node: '--without-ln-s',  Next: '--without-x',  Prev: '--enable-silent-rules',  Up: Global configure options
1358 7.1.11 '--without-ln-s'
1359 -----------------------
1361 Required when using a system without a working 'ln -s' to build binaries
1362 for a Unix-like system.  However, 'make install' will not create
1363 anything useful and might even fail.
1365 \x1f
1366 File: tlbuild.info,  Node: '--without-x',  Prev: '--without-ln-s',  Up: Global configure options
1368 7.1.12 '--without-x'
1369 --------------------
1371 Disable all programs using the X Window System.
1373 \x1f
1374 File: tlbuild.info,  Node: Program-specific configure options,  Next: Library-specific configure options,  Prev: Global configure options,  Up: Configure options
1376 7.2 Program-specific configure options
1377 ======================================
1379 Here are (some of) the program-specific 'configure' options.
1381 * Menu:
1383 * '--enable-PROG' '--disable-PROG'::
1384 * '--disable-all-pkgs'::
1385 * Configure options for 'texk/web2c'::
1386 * Configure options for 'texk/bibtex-x'::
1387 * Configure options for 'texk/dvipdfm-x'::
1388 * Configure options for 'texk/dvisvgm'::
1389 * Configure options for 'texk/texlive'::
1390 * Configure options for 'texk/xdvik'::
1391 * Configure options for 'utils/xindy'::
1393 \x1f
1394 File: tlbuild.info,  Node: '--enable-PROG' '--disable-PROG',  Next: '--disable-all-pkgs',  Up: Program-specific configure options
1396 7.2.1 '--enable-PROG', '--disable-PROG'
1397 ---------------------------------------
1399 Do or do not build and install the program(s) of the module 'PROG'.
1401 \x1f
1402 File: tlbuild.info,  Node: '--disable-all-pkgs',  Next: Configure options for 'texk/web2c',  Prev: '--enable-PROG' '--disable-PROG',  Up: Program-specific configure options
1404 7.2.2 '--disable-all-pkgs'
1405 --------------------------
1407 Do not build any program modules by default--only those explicitly
1408 enabled.  This is useful when one wants to work on only a single
1409 program, which is specified with an additional '--enable' option, e.g.,
1410 '--enable-dvipdfm-x'.  It's still simplest to check out and configure
1411 the whole source tree, but at least only the program you are interested
1412 in, and its dependencies, are built.  The 'configure' will generally
1413 take less than a minute with everything disabled.  (It is a good idea to
1414 run 'make check' after doing this, and after making any changes, to
1415 ensure that whatever tests have been written still pass.)
1417    Without this option, all modules are built except those that are
1418 explicitly disabled or specify 'disable' in their 'ac/withenable.ac'
1419 fragment.
1421 \x1f
1422 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
1424 7.2.3 Configure options for 'texk/web2c'
1425 ----------------------------------------
1427 '--with-banner-add=STR'
1428 Add 'STR' to the default version string ('TeX Live YEAR' or 'Web2C
1429 YEAR') appended to banner lines.  This is ignored for a native TL build,
1430 but distro builds should specify, e.g., '/SOMEDISTRO'.
1432 '--with-editor=CMD'
1433 Specify the command 'CMD' to invoke from the 'e' option of TeX-like
1434 engines, replacing the default 'vi +%d '%s'' for Unix or 'texworks
1435 --position=%d "%s"' for Windows.
1437 '--with-fontconfig-includes=DIR', '--with-fontconfig-libdir=DIR'
1438 Building XeTeX on non-Mac systems requires the 'fontconfig' library
1439 headers and code.  If one or both of these options are given, the
1440 required flags are derived from them; otherwise, they are determined via
1441 'pkg-config' (if present).
1443 '--with-mf-x-toolkit'
1444 Use the X toolkit ('libXt') for Metafont (the default is to use the
1445 lowest-level 'Xlib' support; it seems this has the best chance of
1446 working across X installations nowadays).
1448 '--disable-dump-share'
1449 Make the 'fmt'/'base' dump files architecture dependent (somewhat faster
1450 on LittleEndian architectures).
1452 '--disable-ipc'
1453 Disable TeX's '--ipc' option.
1455 '--disable-mf-nowin'
1456 Do not build a separate non-graphically-capable Metafont ('mf-nowin').
1458 '--disable-tex', '--enable-etex', ...
1459 Do not or do build the various TeX, Metafont, and MetaPost engines
1460 (defaults are defined in the fragment 'texk/web2c/ac/web2c.ac').
1462 '--disable-web-progs'
1463 Do not build the core WEB programs 'bibtex', ..., 'weave'.  Useful if,
1464 e.g., you only want to (re)build some engines.
1466 '--enable-auto-core'
1467 This option causes TeX and Metafont to produce a core dump when a
1468 particular hacky filename is encountered, for use in creating preloaded
1469 binaries.  This is rarely done nowadays.
1471 '--enable-libtool-hack'
1472 If enabled (which is the default for all platforms), prevents 'libtool'
1473 from linking explicitly with dependencies of 'libfontconfig' such as
1474 'libexpat'.
1476 '--enable-*win'
1477 Include various types of other window support for Metafont (EPSF output,
1478 'mftalk', old terminals, ...).
1480 '--enable-tex-synctex', '--disable-etex-synctex', ...
1481 Build the TeX engines with or without 'SyncTeX' support; ignored for a
1482 native TeX Live build, defaults are again defined in
1483 'texk/web2c/ac/web2c.ac'.
1485 '--disable-synctex'
1486 Do not build the 'SyncTeX' library and tool.
1488 \x1f
1489 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
1491 7.2.4 Configure options for 'texk/bibtex-x'
1492 -------------------------------------------
1494 The programs 'bibtex8' and 'bibtexu' have been merged into the module
1495 'bibtex-x' (extended BibTeX).
1497 '--disable-bibtex8'
1498 Do not build the 'bibtex8' program.
1500 '--disable-bibtexu'
1501 Do not build the 'bibtexu' program (building 'bibtexu' requires 'ICU'
1502 libraries).
1504 \x1f
1505 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
1507 7.2.5 Configure options for 'texk/dvipdfm-x'
1508 --------------------------------------------
1510 The former modules 'dvipdfmx' (extended DVI to PDF converter) and
1511 'xdvipdfmx' (the same, as used by XeTeX) have been merged into
1512 'dvipdfm-x' at the source level.  Two separate binaries are still
1513 created by default.  In addition, 'dvipdfm' is created as a symlink to
1514 'dvipdfmx', with backward-compatible (very slightly different) behavior.
1516 '--disable-dvipdfmx'
1517 Do not build the 'dvipdfmx' program with the 'dvipdfm' symlink.
1519 '--disable-xdvipdfmx'
1520 Do not build the 'xdvipdfmx' program.
1522 \x1f
1523 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
1525 7.2.6 Configure options for 'texk/dvisvgm'
1526 ------------------------------------------
1528 '--with-system-libgs'
1529 Build 'dvisvgm' using installed Ghostscript ('gs') headers and library
1530 (not allowed for a native TL build).  The default is to load the 'gs'
1531 library at runtime if possible, or otherwise disable support for
1532 PostScript specials.
1534 '--without-libgs'
1535 Build 'dvisvgm' without PostScript support at all.  Because the dynamic
1536 loading just mentioned defeats all attempts at static linking, the
1537 result can crash due to library incompatibilities, e.g., on CentOS 5.
1539 '--with-libgs-includes=DIR', '--with-libgs-libdir=DIR'
1540 Specify non-standard locations of the Ghostscript headers and library.
1542 \x1f
1543 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
1545 7.2.7 Configure options for 'texk/texlive'
1546 ------------------------------------------
1548 '--disable-linked-scripts'
1549 Do not install the "linked scripts" (*note Linked scripts::), except for
1550 the TL scripts required to run 'texlinks'.
1552 \x1f
1553 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
1555 7.2.8 Configure options for 'texk/xdvik'
1556 ----------------------------------------
1558 '--with-gs=FILENAME'
1559 Hardwire the location of Ghostscript ('gs').
1561 '--with-xdvi-x-toolkit=KIT'
1562 Use toolkit 'KIT' for 'xdvik', one of: 'motif xaw xaw3d neXtaw'.  The
1563 default is 'motif' if available, else 'xaw'.
1565 '--enable-xi2-scrolling'
1566 Use XInput 2.1 "smooth scrolling" if available.  (default: yes, except
1567 for a native TL build).
1569 \x1f
1570 File: tlbuild.info,  Node: Configure options for 'utils/xindy',  Prev: Configure options for 'texk/xdvik',  Up: Program-specific configure options
1572 7.2.9 Configure options for 'utils/xindy'
1573 -----------------------------------------
1575 '--enable-xindy-rules'
1576 Build and install 'xindy' rules (default: yes, except for a native TL
1577 build).
1579 '--enable-xindy-docs'
1580 Build and install 'xindy' documentation (default: yes, except for a
1581 native TL build).
1583 '--with-clisp-runtime=FILENAME'
1584 Specifies the Full path for the CLISP runtime file ('lisp.run' or
1585 'lisp.exe') to be installed.  When specified as 'default' (the default
1586 for a native TL build) the path is determined by the CLISP executable;
1587 the value 'system' (not allowed for a native TL build, but the default
1588 for a non-native one) indicates that 'xindy' will use the installed
1589 version of 'clisp' (which must be identical to the one used to build
1590 'xindy').
1592 \x1f
1593 File: tlbuild.info,  Node: Library-specific configure options,  Next: Variables for configure,  Prev: Program-specific configure options,  Up: Configure options
1595 7.3 Library-specific configure options
1596 ======================================
1598 Here are (some of) the library-specific 'configure' options, starting
1599 with this generic one:
1601 '--with-system-LIB'
1603    Use an installed (system) version of the library 'LIB'; this option
1604 exists for most libraries, but is not allowed for a native TL build.
1605 Using a system version implies also using the system versions of all
1606 libraries (if any) that LIB depends on.
1608    For many libraries '--with-LIB-includes=DIR' and
1609 '--with-LIB-libdir=DIR' can specify non-standard search locations;
1610 others use 'pkg-config' or similar to determine the required flags.
1612    The top-level 'configure' script performs a consistency check for all
1613 required system libraries and bails out if tests fail.
1615 * Menu:
1617 * Configure options for 'kpathsea'::
1618 * Configure options for system 'poppler'::
1620 \x1f
1621 File: tlbuild.info,  Node: Configure options for 'kpathsea',  Next: Configure options for system 'poppler',  Up: Library-specific configure options
1623 7.3.1 Configure options for 'kpathsea'
1624 --------------------------------------
1626 '--enable-CMD-default', '--disable-CMD-default'
1627 Determine the compile time default whether or not to run CMD, one of:
1628 'mkocp'
1629      (Omega compiled translation process file)
1630 'mkofm'
1631      (Omega font metrics file)
1632 'mktexfmt'
1633      (format/base dump file)
1634 'mktexmf'
1635      (Metafont source)
1636 'mktexpk'
1637      (PK bitmap font)
1638 'mktextex'
1639      (TeX source)
1640 'mktextfm'
1641      (TFM file)
1643 to generate the specified type of file dynamically.  The default can be
1644 overridden by the user in any case.
1646 \x1f
1647 File: tlbuild.info,  Node: Configure options for system 'poppler',  Prev: Configure options for 'kpathsea',  Up: Library-specific configure options
1649 7.3.2 Configure options for system 'poppler'
1650 --------------------------------------------
1652 Building LuaTeX (or LuaJITTeX) and XeTeX requires 'poppler', either from
1653 the TL tree or system headers and library.  Building pdfTeX requires
1654 either 'xpdf' from the TeX Live tree or system 'poppler' headers and
1655 library.
1657 '--with-system-poppler'
1658 Use a system version (0.18 or newer) of 'poppler' for LuaTeX (or
1659 LuaJITTeX) and XeTeX, and use 'pkg-config' to obtain the required flags.
1661 '--with-system-xpdf'
1662 Use a system version (0.12 or better) of 'poppler' (and 'pkg-config')
1663 for pdfTeX instead of 'xpdf' from the TL tree.  *Note
1664 '--disable-largefile'::.
1666 \x1f
1667 File: tlbuild.info,  Node: Variables for configure,  Prev: Library-specific configure options,  Up: Configure options
1669 7.4 Variables for configure
1670 ===========================
1672 The values for these variables can be specified as 'configure' arguments
1673 of the form 'VAR=VALUE'.  They can also be defined in the environment,
1674 but that might not work for cross compilations.
1676 'CC'
1677 'CXX'
1678 'CPPFLAGS'
1679      And plenty more.  As usual with Autoconf, these variables specify
1680      the name (or full path) of compilers, preprocessor flags, and
1681      similar.  *Note autoconf: (GNU Autoconf)Preset Output Variables.
1683 'CLISP'
1684      Name (or full path) of the 'clisp' executable, used to build
1685      'xindy'.
1687 'FT2_CONFIG'
1688 'ICU_CONFIG'
1689 'PKG_CONFIG'
1690      These specify the name (or path) for the 'freetype-config',
1691      'icu-config', and 'pkg-config' commands used to determine the flags
1692      required for system versions of 'libfreetype', the ICU libraries,
1693      or many other libraries.
1695 'KPSEWHICH'
1696      Name (or path) of an installed 'kpsewhich' binary, used by 'make
1697      check' to determine the location of, e.g., 'cmbx10.tfm'.
1699 'MAKE'
1700 'SED'
1701      And more.  Name (or path) of the 'make', 'sed', and similar
1702      programs; used at the top level and propagated to all
1703      subdirectories.
1705 'PERL'
1706 'LATEX'
1707 'PDFLATEX'
1708      Name (or full path) for the 'perl', 'latex', and 'pdflatex'
1709      commands used, e.g., to build the 'xindy' documentation.
1711 \x1f
1712 File: tlbuild.info,  Node: Cross compilation,  Next: Coding conventions,  Prev: Configure options,  Up: Top
1714 8 Cross compilation
1715 *******************
1717 In a cross compilation a "build" system is used to create binaries to be
1718 executed on a "host" system with different hardware and/or operating
1719 system.
1721    In simple cases, the build system can execute binaries for the host
1722 system.  This typically occurs for bi-arch systems where, e.g.,
1723 'i386-linux' binaries can run on 'x86_64-linux' systems and 'win32'
1724 binaries can run on 'win64' systems.  Although sometimes called "native
1725 cross", technically this is not cross compilation at all.  In most such
1726 cases it suffices to specify suitable compiler flags.  It might be
1727 useful to add the configure option '--build=HOST' to get the correct
1728 canonical host name, but note that this should _not_ be '--host=HOST'
1729 (*note (autoconf)Hosts and Cross-Compilation::).
1731    In order to build, e.g., 32-bit binaries with 'clang' on a 64-bit
1732 MacOSX system one could use:
1734      TL_BUILD_ENV="CC='clang -arch i386' \
1735        CXX='clang++ -arch i386' \
1736        OBJCXX='clang++ -arch i386'" \
1737        ./Build --build=i386-apple-darwin
1739 * Menu:
1741 * Cross configuring::           Configuring for cross compilation.
1742 * Cross problems::              Cross compilation problems.
1744 \x1f
1745 File: tlbuild.info,  Node: Cross configuring,  Next: Cross problems,  Up: Cross compilation
1747 8.1 Cross configuring
1748 =====================
1750 In a standard cross compilation, binaries for the host system cannot
1751 execute on the build system and it is necessary to specify the configure
1752 options '--host=HOST' and '--build=BUILD' with two different values.
1754    Building binaries requires suitable "cross" tools, e.g., compiler,
1755 linker, and archiver, and perhaps a "cross" version of 'pkg-config' and
1756 similar to locate host system libraries.  Autoconf expects that these
1757 cross tools are given by their usual variables or found under their
1758 usual name prefixed with 'HOST-'.  Here a list of such tools and
1759 corresponding variables:
1761      ar                AR
1762      freetype-config   FT2_CONFIG
1763      g++               CXX
1764      gcc               CC
1765      icu-config        ICU_CONFIG
1766      objdump           OBJDUMP
1767      pkg-config        PKG_CONFIG
1768      ranlib            RANLIB
1769      strip             STRIP
1771 In order to, e.g., build 'mingw32' binaries on 'x86_64-linux' with a
1772 cross compiler found as 'i386-pc-mingw32-gcc' one would specify
1774      --host=i386-pc-mingw32 --build=x86_64-linux-gnu
1776 or perhaps
1778      --host=mingw32 --build=x86_64-linux CC=i386-pc-mingw32-gcc
1780 but this latter, especially, might require adding 'CXX' and others.
1782    Configure arguments such as 'CFLAGS=...' refer to the cross compiler.
1783 If necessary, you can specify compilers and flags for the few auxiliary
1784 C and C++ programs required for the build process as configure arguments
1786      BUILDCC=...
1787      BUILDCPPFLAGS=...
1788      BUILDCFLAGS=...
1789      BUILDCXX=...
1790      BUILDCXXFLAGS=...
1791      BUILDLDFLAGS=...
1793 \x1f
1794 File: tlbuild.info,  Node: Cross problems,  Prev: Cross configuring,  Up: Cross compilation
1796 8.2 Cross problems
1797 ==================
1799 The fact that binaries for the host system cannot be executed on the
1800 build system causes some problems.
1802    One problem is that configure tests using 'AC_RUN_IFELSE' can compile
1803 and link the test program but cannot execute it.  Such tests should be
1804 avoided if possible and otherwise must supply a pessimistic test result.
1806    Another problem arises if the build process must execute some
1807 (auxiliary or installable) programs.  Auxiliary programs can be placed
1808 into a subdirectory that is configured natively as is done for
1809 'texk/web2c/web2c', 'texk/dvipsk/squeeze', and 'texk/xdvik/squeeze'.
1810 The module 'libs/freetype2' uses the value of 'CC_BUILD', 'BUILD-gcc',
1811 'gcc', or 'cc' as the compiler for the auxiliary program.
1813    The situation for installable programs needed by the build process is
1814 somewhat different.  A rather expensive possibility, chosen for the ICU
1815 libraries in module 'libs/icu', is to first compile natively for the
1816 build system and in a second step to use these (uninstalled) programs
1817 during the cross compilation.
1819    This approach would also be possible for the tools such as 'tangle'
1820 used in the module 'texk/web2c' to build the WEB programs, but that
1821 would require first building a native 'kpathsea' library.  To avoid this
1822 complication, cross compilation of the WEB or CWEB programs requires
1823 sufficiently recent installed versions of 'tangle', 'ctangle',
1824 'otangle', and 'tie'.
1826    Building 'xindy' requires running the host system 'clisp' binary,
1827 thus cross compilation is not possible.
1829 \x1f
1830 File: tlbuild.info,  Node: Coding conventions,  Next: install-tl,  Prev: Cross compilation,  Up: Top
1832 9 Coding conventions
1833 ********************
1835 Ideally, building all of TeX Live with '--enable-compiler-warnings=max'
1836 should produce no (GCC) compiler warnings at all.  In spite of
1837 considerable efforts into that direction we are still far from that goal
1838 and there are reasons that we may never fully reach it.  Below are some
1839 rules about declarations of functions or variables and the use of
1840 'const'.  These rules should be applied to all parts of the TeX Live
1841 tree, except some of those maintained independently.
1843 * Menu:
1845 * Declarations and definitions::
1846 * Const::
1848 \x1f
1849 File: tlbuild.info,  Node: Declarations and definitions,  Next: Const,  Up: Coding conventions
1851 9.1 Declarations and definitions
1852 ================================
1854 C standards
1855 ...........
1857 The TeX Live build system no longer supports pre-ANSI C compilers.  Thus
1858 all function prototypes and definitions must conform to the ANSI C
1859 standard (including 'void' in the declaration of C functions with no
1860 parameters).  On the other hand, TL is built for a wide variety of
1861 systems, not all of which support the C99 standard.  Therefore using C99
1862 features should be avoided if that can easily be done.  In particular C
1863 code must not contain declarations after statements or C++-style
1864 comments.
1866    If some C99 (or later) constructs must be used, the module should
1867 verify that they are available and otherwise provide an alternative.
1868 For example, the module 'texk/chktex' uses the C99 function 'stpcpy()'
1869 that may or may not be available on a particular system.  It uses
1870 'AC_CHECK_DECLS([stpcpy])' in 'configure.ac' to test this, and provides
1871 the perhaps slightly less efficient alternative
1873      #if !(defined HAVE_DECL_STPCPY && HAVE_DECL_STPCPY)
1874      static inline char *stpcpy(char *dest, const char *src)
1875      {
1876        return strcpy(dest, src) + strlen(src);
1877      }
1878      #endif
1880 in the file 'Utility.h'.
1882 Static functions
1883 ................
1885 Functions used in only one file should be declared 'static'; they
1886 require no prototype except as forward declaration.
1888 Extern functions
1889 ................
1891 Functions not declared 'static', usually because they are used in
1892 several files, require an ('extern') prototype in exactly one header
1893 file, which is included in the file defining the function and in all
1894 files using that function--this is the only way to guarantee consistency
1895 between definition and use.  There should be no 'extern' declarations
1896 sprinkled throughout the C code (with or without comments as to where
1897 that function is defined).
1899 Variable declarations
1900 .....................
1902 The declaration of global variables follows analogous rules: they are
1903 either declared 'static' if used in only one file or declared 'extern'
1904 in exactly one header and instantiated in exactly one file.
1906 \x1f
1907 File: tlbuild.info,  Node: Const,  Prev: Declarations and definitions,  Up: Coding conventions
1909 9.2 Const
1910 =========
1912 The 'const' feature of C is valuable, but easy to mis-use.
1914 Function parameters
1915 ...................
1917 Ideally, a function parameter not modified by the function should be
1918 declared as 'const'.  This is important in particular for strings
1919 ('char*') because the actual arguments are often string literals.  It is
1920 perfectly legitimate and safe to use a type 'char*' value for a type
1921 'const char*' variable (in an assignment, as initializer, as function
1922 argument, or as return value).  It is equally safe to use a type
1923 'char**' value for a type 'const char*const*' variable, but not for a
1924 type 'const char**' variable since that might cause modification of a
1925 quantity supposed to be constant.
1927    Getting all 'const' qualifiers right can get quite involved but can
1928 almost always be done.  There are only a couple notable exceptions: the
1929 X11 headers are full of declarations that ought to use 'const' but do
1930 not, and the same is true to some extent for 'libfreetype' (but,
1931 thankfully, not for 'zlib' nowadays).
1933 What must be avoided with 'const'
1934 .................................
1936 The GCC compiler warnings "assignment discards qualifiers..." and
1937 analogous warnings for "initialization", "passing arg", or "return" must
1938 be strenously avoided in our own code.  The only exception is when they
1939 are caused by X11 headers or macros or other third party code.
1941 What should be avoided with 'const'
1942 ...................................
1944 A type cast, e.g., from 'const char*' to 'char*' does not solve any
1945 problems; depending on warning options, it may only hide them.
1946 Therefore such casts should be avoided whenever possible and otherwise
1947 must be carefully analyzed to make sure that they cannot cause the
1948 modification of quantities supposed to be constant.
1950 \x1f
1951 File: tlbuild.info,  Node: install-tl,  Next: tlmgr,  Prev: Coding conventions,  Up: Top
1953 Appendix A install-tl
1954 *********************
1956 * Menu:
1958 * install-tl NAME::
1959 * install-tl SYNOPSIS::
1960 * install-tl DESCRIPTION::
1961 * install-tl REFERENCES::
1962 * install-tl OPTIONS::
1963 * install-tl ENVIRONMENT VARIABLES::
1964 * install-tl AUTHORS AND COPYRIGHT::
1966 \x1f
1967 File: tlbuild.info,  Node: install-tl NAME,  Next: install-tl SYNOPSIS,  Up: install-tl
1969 A.1 NAME
1970 ========
1972 install-tl - TeX Live cross-platform installer
1974 \x1f
1975 File: tlbuild.info,  Node: install-tl SYNOPSIS,  Next: install-tl DESCRIPTION,  Prev: install-tl NAME,  Up: install-tl
1977 A.2 SYNOPSIS
1978 ============
1980 install-tl [_option_]...
1982    install-tl.bat [_option_]...
1984 \x1f
1985 File: tlbuild.info,  Node: install-tl DESCRIPTION,  Next: install-tl REFERENCES,  Prev: install-tl SYNOPSIS,  Up: install-tl
1987 A.3 DESCRIPTION
1988 ===============
1990 This installer creates a runnable TeX Live installation from various
1991 media, including over the network.  The installer works across all
1992 platforms supported by TeX Live.  For information on initially
1993 downloading the TeX Live, see <http://tug.org/texlive/acquire.html>.
1995    The basic idea of TeX Live installation is to choose one of the
1996 top-level _schemes_, each of which is defined as a different set of
1997 _collections_ and _packages_, where a collection is a set of packages,
1998 and a package is what contains actual files.
2000    Within the installer, you can choose a scheme, and further customize
2001 the set of collections to install, but not the set of the packages.  To
2002 do that, use 'tlmgr' (reference below) after the initial installation is
2003 completely.
2005    The default is 'scheme-full', to install everything, and this is
2006 highly recommended.
2008 \x1f
2009 File: tlbuild.info,  Node: install-tl REFERENCES,  Next: install-tl OPTIONS,  Prev: install-tl DESCRIPTION,  Up: install-tl
2011 A.4 REFERENCES
2012 ==============
2014 Post-installation configuration, package updates, and much more, are
2015 handled through *tlmgr*(1), the TeX Live Manager
2016 (<http://tug.org/texlive/tlmgr.html>).
2018    The most up-to-date version of this documentation is on the Internet
2019 at <http://tug.org/texlive/doc/install-tl.html>.
2021    For the full documentation of TeX Live, see
2022 <http://tug.org/texlive/doc>.
2024 \x1f
2025 File: tlbuild.info,  Node: install-tl OPTIONS,  Next: install-tl ENVIRONMENT VARIABLES,  Prev: install-tl REFERENCES,  Up: install-tl
2027 A.5 OPTIONS
2028 ===========
2030 As usual, all options can be specified in any order, and with either a
2031 leading '-' or '--'.  An argument value can be separated from its option
2032 by either a space or '='.
2034 *-gui* [[=]_module_]
2036      If no _module_ is given starts the 'perltk' (see below) GUI
2037      installer.
2039      If _module_ is given loads the given installer module.  Currently
2040      the following modules are supported:
2042      'text'
2044           The text mode user interface (default on Unix systems).  Same
2045           as the '-no-gui' option.
2047      'wizard'
2049           The wizard mode user interface (default on Windows), asking
2050           only minimal questions before installing all of TeX Live.
2052      'perltk'
2054           The expert GUI installer, providing access to more options.
2055           Can also be invoked on Windows by running
2056           'install-tl-advanced.bat'.
2058      The 'perltk' and 'wizard' modules, and thus also when calling with
2059      a bare '-gui' (without _module_), requires the Perl/Tk module
2060      (<http://tug.org/texlive/distro.html#perltk>); if Perl/Tk is not
2061      available, installation continues in text mode.
2063 *-no-gui*
2065      Use the text mode installer (default except on Windows).
2067 *-lang* _llcode_
2069      By default, the GUI tries to deduce your language from the
2070      environment (on Windows via the registry, on Unix via
2071      'LC_MESSAGES').  If that fails you can select a different language
2072      by giving this option with a language code (based on ISO 639-1).
2073      Currently supported (but not necessarily completely translated)
2074      are: English (en, default), Czech (cs), German (de), French (fr),
2075      Italian (it), Japanese (ja), Dutch (nl), Polish (pl), Brazilian
2076      Portuguese (pt_BR), Russian (ru), Slovak (sk), Slovenian (sl),
2077      Serbian (sr), Ukrainian (uk), Vietnamese (vi), simplified Chinese
2078      (zh_CN), and traditional Chinese (zh_TW).
2080 *-repository* _url|path_
2082      Specify the package repository to be used as the source of the
2083      installation, either a local directory via '/path/to/directory' or
2084      a 'file:/' url, or a network location via a 'http://' or 'ftp://'
2085      url.  (No other protocols are supported.)
2087      The default is to pick a mirror automatically, using
2088      <http://mirror.ctan.org/systems/texlive/tlnet>; the chosen mirror
2089      is used for the entire download.  You can use the special argument
2090      'ctan' as an abbreviation for this.  See <http://ctan.org> for more
2091      about CTAN and its mirrors.
2093      If the repository is on the network, trailing '/' characters and/or
2094      trailing '/tlpkg' and '/archive' components are ignored.  For
2095      example, you could choose a particular CTAN mirror with something
2096      like this:
2098        -repository http://ctan.example.org/its/ctan/dir/systems/texlive/tlnet
2100      Of course a real hostname and its particular top-level CTAN path
2101      have to be specified.  The list of CTAN mirrors is available at
2102      <http://ctan.org/mirrors>.
2104      If the repository is local, the installation type (compressed or
2105      live) is automatically determined, by checking for the presence of
2106      a 'archive' directory relative to the root.  Compressed is
2107      preferred if both are available, since it is faster.  Here's an
2108      example of using a local directory:
2110        -repository /local/TL/repository
2112      After installation is complete, you can use that installation as
2113      the repository for another installation.  If you chose to install
2114      less than the full scheme containing all packages, the list of
2115      available schemes will be adjusted accordingly.
2117      For backward compatibility and convenience, '--location' and
2118      '--repo' are accepted as aliases for this option.
2120 *-select-repository*
2122      This option allows manual selection of a mirror from the current
2123      list of active CTAN mirrors.  This option is supported in all
2124      installer modes (text, wizard, perltk), and will also offer to
2125      install from local media if available, or from a repository
2126      specified on the command line (see above).  It's useful when the
2127      (default) automatic redirection does not choose a good host for
2128      you.
2130 *-all-options*
2132      Normally options not relevant to the current platform are not shown
2133      (i.e., when running on Unix, Windows-specific options are omitted).
2134      Giving this command line option allows configuring settings in the
2135      final 'texlive.tlpdb' that do not have any immediate effect.
2137 *-custom-bin* _path_
2139      If you have built your own set of TeX Live binaries (perhaps
2140      because your platform was not supported by TeX Live out of the
2141      box), this option allows you to specify the _path_ to a directory
2142      where the binaries for the current system are present.  The
2143      installation will continue as usual, but at the end all files from
2144      _path_ are copied over to 'bin/custom/' under your installation
2145      directory and this 'bin/custom/' directory is what will be added to
2146      the path for the post-install actions.  (By the way, for
2147      information on building TeX Live, see
2148      <http://tug.org/texlive/build.html>).
2150 *-debug-translation*
2152      In GUI mode, this switch makes 'tlmgr' report any missing, or more
2153      likely untranslated, messages to standard error.  Helpful for
2154      translators to see what remains to be done.
2156 *-force-platform* _platform_
2158      Instead of auto-detecting the current platform, use _platform_.
2159      Binaries for this platform must be present and they must actually
2160      be runnable, or installation will fail.  '-force-arch' is a
2161      synonym.
2163 *-help*, *-help*, *-?*
2165      Display this help and exit (on the web via
2166      <http://tug.org/texlive/doc/install-tl.html>).  Sometimes the
2167      'perldoc' and/or 'PAGER' programs on the system have problems,
2168      possibly resulting in control characters being literally output.
2169      This can't always be detected, but you can set the 'NOPERLDOC'
2170      environment variable and 'perldoc' will not be used.
2172 *-in-place*
2174      This is a quick-and-dirty installation option in case you already
2175      have an rsync or svn checkout of TeX Live.  It will use the
2176      checkout as-is and will just do the necessary post-install.  Be
2177      warned that the file 'tlpkg/texlive.tlpdb' may be rewritten, that
2178      removal has to be done manually, and that the only realistic way to
2179      maintain this installation is to redo it from time to time.  This
2180      option is not available via the installer interfaces.  USE AT YOUR
2181      OWN RISK.
2183 *-logfile* _file_
2185      Write both all messages (informational, debugging, warnings) to
2186      _file_, in addition to standard output or standard error.
2188      If this option is not given, the installer will create a log file
2189      in the root of the writable installation tree, for example,
2190      '/usr/local/texlive/YYYY/install-tl.log' for the _YYYY_ release.
2192 *-no-cls*
2194      (only for text mode installer) do not clear the screen when
2195      entering a new menu (for debugging purposes).
2197 *-non-admin*
2199      For Windows only: configure for the current user, not for all
2200      users.
2202 *-persistent-downloads*
2204 *-no-persistent-downloads*
2206      For network installs, activating this option makes the installer
2207      try to set up a persistent connection using the 'Net::LWP' Perl
2208      module.  This opens only one connection between your computer and
2209      the server per session and reuses it, instead of initiating a new
2210      download for each package, which typically yields a significant
2211      speed-up.
2213      This option is turned on by default, and the installation program
2214      will fall back to using 'wget' if this is not possible.  To disable
2215      usage of LWP and persistent connections, use
2216      '--no-persistent-downloads'.
2218 *-portable*
2220      Install for portable use, e.g., on a USB stick.  Also selectable
2221      from within the perltk and text installers.
2223 *-print-platform*
2225      Print the TeX Live identifier for the detected platform
2226      (hardware/operating system) combination to standard output, and
2227      exit.  '-print-arch' is a synonym.
2229 *-profile* _profile_
2231      Load the file _profile_ and do the installation with no user
2232      interaction, that is, a batch (unattended) install.
2234      A _profile_ file contains all the values needed to perform an
2235      installation.  After a normal installation has finished, a profile
2236      for that exact installation is written to the file
2237      DEST/tlpkg/texlive.profile.  That file can be given as the argument
2238      to '-profile' to redo the exact same installation on a different
2239      system, for example.  Alternatively, you can use a custom profile,
2240      most easily created by starting from a generated one and changing
2241      values, or an empty file, which will take all the defaults.
2243      Normally a profile has to specify the value '1' for each collection
2244      to be installed, even if the scheme is specified.  This follows
2245      from the logic of the installer in that you can first select a
2246      scheme and then change the collections being installed.  But for
2247      convenience there is an exception to this within profiles: If the
2248      profile contains a variable for 'selected_scheme' and _no_
2249      collection variables at all are defined in the profile, then the
2250      collections which the specified scheme requires are installed.
2252      Thus, a line 'selected_scheme scheme-medium' together with the
2253      definitions of the installation directories ('TEXDIR', 'TEXMFHOME',
2254      'TEXMFLOCAL', 'TEXMFSYSCONFIG', 'TEXMFSYSVAR') suffices to install
2255      the medium scheme with all default options.
2257 *-q*
2259      Omit normal informational messages.
2261 *-scheme* _scheme_
2263      Schemes are the highest level of package grouping in TeX Live; the
2264      default is to use the 'full' scheme, which includes everything.
2265      This option overrides that default.  You can change the scheme
2266      again before the actual installation with the usual menu.  The
2267      _scheme_ argument may optionally have a prefix 'scheme-'.  The list
2268      of supported scheme names depends on what your package repository
2269      provides; see the interactive menu list.
2271 *-v*
2273      Include verbose debugging messages; repeat for maximum debugging,
2274      as in '-v -v'.  (Further repeats are accepted but ignored.)
2276 *-version*, *-version*
2278      Output version information and exit.  If '-v' has also been given
2279      the revisions of the used modules are reported, too.
2281 \x1f
2282 File: tlbuild.info,  Node: install-tl ENVIRONMENT VARIABLES,  Next: install-tl AUTHORS AND COPYRIGHT,  Prev: install-tl OPTIONS,  Up: install-tl
2284 A.6 ENVIRONMENT VARIABLES
2285 =========================
2287 For ease in scripting and debugging, 'install-tl' will look for the
2288 following environment variables.  They are not of interest in normal
2289 user installations.
2291 'TEXLIVE_INSTALL_ENV_NOCHECK'
2293      Omit the check for environment variables containing the string
2294      'tex'.  People developing TeX-related software are likely to have
2295      many such variables.
2297 'TEXLIVE_INSTALL_NO_CONTEXT_CACHE'
2299      Omit creating the ConTeXt cache.  This is useful for
2300      redistributors.
2302 'TEXLIVE_INSTALL_PREFIX'
2304 'TEXLIVE_INSTALL_TEXMFCONFIG'
2306 'TEXLIVE_INSTALL_TEXMFHOME'
2308 'TEXLIVE_INSTALL_TEXMFLOCAL'
2310 'TEXLIVE_INSTALL_TEXMFSYSCONFIG'
2312 'TEXLIVE_INSTALL_TEXMFSYSVAR'
2314 'TEXLIVE_INSTALL_TEXMFVAR'
2316      Specify the respective directories.
2318 'NOPERLDOC'
2320      Don't try to run the '--help' message through 'perldoc'.
2322 \x1f
2323 File: tlbuild.info,  Node: install-tl AUTHORS AND COPYRIGHT,  Prev: install-tl ENVIRONMENT VARIABLES,  Up: install-tl
2325 A.7 AUTHORS AND COPYRIGHT
2326 =========================
2328 This script and its documentation were written for the TeX Live
2329 distribution (<http://tug.org/texlive>) and both are licensed under the
2330 GNU General Public License Version 2 or later.
2332 \x1f
2333 File: tlbuild.info,  Node: tlmgr,  Next: Index,  Prev: install-tl,  Up: Top
2335 Appendix B tlmgr
2336 ****************
2338 * Menu:
2340 * tlmgr NAME::
2341 * tlmgr SYNOPSIS::
2342 * tlmgr DESCRIPTION::
2343 * tlmgr EXAMPLES::
2344 * tlmgr OPTIONS::
2345 * tlmgr ACTIONS::
2346 * tlmgr USER MODE::
2347 * tlmgr CONFIGURATION FILE FOR TLMGR::
2348 * tlmgr TAXONOMIES::
2349 * tlmgr MULTIPLE REPOSITORIES::
2350 * tlmgr GUI FOR TLMGR::
2351 * tlmgr MACHINE-READABLE OUTPUT::
2352 * tlmgr AUTHORS AND COPYRIGHT::
2354 \x1f
2355 File: tlbuild.info,  Node: tlmgr NAME,  Next: tlmgr SYNOPSIS,  Up: tlmgr
2357 B.1 NAME
2358 ========
2360 tlmgr - the TeX Live Manager
2362 \x1f
2363 File: tlbuild.info,  Node: tlmgr SYNOPSIS,  Next: tlmgr DESCRIPTION,  Prev: tlmgr NAME,  Up: tlmgr
2365 B.2 SYNOPSIS
2366 ============
2368 tlmgr [_option_]...  _action_ [_option_]...  [_operand_]...
2370 \x1f
2371 File: tlbuild.info,  Node: tlmgr DESCRIPTION,  Next: tlmgr EXAMPLES,  Prev: tlmgr SYNOPSIS,  Up: tlmgr
2373 B.3 DESCRIPTION
2374 ===============
2376 *tlmgr* manages an existing TeX Live installation, both packages and
2377 configuration options.  For information on initially downloading and
2378 installing TeX Live, see <http://tug.org/texlive/acquire.html>.
2380    The most up-to-date version of this documentation (updated nightly
2381 from the development sources) is available at
2382 <http://tug.org/texlive/tlmgr.html>, along with procedures for updating
2383 'tlmgr' itself and information about test versions.
2385    TeX Live is organized into a few top-level _schemes_, each of which
2386 is specified as a different set of _collections_ and _packages_, where a
2387 collection is a set of packages, and a package is what contains actual
2388 files.  Schemes typically contain a mix of collections and packages, but
2389 each package is included in exactly one collection, no more and no less.
2390 A TeX Live installation can be customized and managed at any level.
2392    See <http://tug.org/texlive/doc> for all the TeX Live documentation
2393 available.
2395 \x1f
2396 File: tlbuild.info,  Node: tlmgr EXAMPLES,  Next: tlmgr OPTIONS,  Prev: tlmgr DESCRIPTION,  Up: tlmgr
2398 B.4 EXAMPLES
2399 ============
2401 After successfully installing TeX Live, here are a few common operations
2402 with 'tlmgr':
2404 'tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet'
2406      Tell 'tlmgr' to use a nearby CTAN mirror for future updates; useful
2407      if you installed TeX Live from the DVD image and want continuing
2408      updates.
2410 'tlmgr update --list'
2412      Report what would be updated without actually updating anything.
2414 'tlmgr update --all'
2416      Make your local TeX installation correspond to what is in the
2417      package repository (typically useful when updating from CTAN).
2419 'tlmgr info' _pkg_
2421      Display detailed information about _pkg_, such as the installation
2422      status and description.
2424    For all the capabilities and details of 'tlmgr', please read the
2425 following voluminous information.
2427 \x1f
2428 File: tlbuild.info,  Node: tlmgr OPTIONS,  Next: tlmgr ACTIONS,  Prev: tlmgr EXAMPLES,  Up: tlmgr
2430 B.5 OPTIONS
2431 ===========
2433 The following options to 'tlmgr' are global options, not specific to any
2434 action.  All options, whether global or action-specific, can be given
2435 anywhere on the command line, and in any order.  The first non-option
2436 argument will be the main action.  In all cases, '--'_option_ and
2437 '-'_option_ are equivalent, and an '=' is optional between an option
2438 name and its value.
2440 *-repository* _url|path_
2442      Specifies the package repository from which packages should be
2443      installed or updated, overriding the default package repository
2444      found in the installation's TeX Live Package Database (a.k.a.  the
2445      TLPDB, defined entirely in the file 'tlpkg/texlive.tlpdb').  The
2446      documentation for 'install-tl' has more details about this
2447      (<http://tug.org/texlive/doc/install-tl.html>).
2449      '--repository' changes the repository location only for the current
2450      run; to make a permanent change, use 'option repository' (see the
2451      *note option: tlmgr option. action).
2453      For backward compatibility and convenience, '--location' and
2454      '--repo' are accepted as aliases for this option.
2456 *-gui* [_action_]
2458      'tlmgr' has a graphical interface as well as the command line
2459      interface.  You can give this option, '--gui', together with an
2460      action to be brought directly into the respective screen of the
2461      GUI. For example, running
2463        tlmgr --gui update
2465      starts you directly at the update screen.  If no action is given,
2466      the GUI will be started at the main screen.
2468 *-gui-lang* _llcode_
2470      By default, the GUI tries to deduce your language from the
2471      environment (on Windows via the registry, on Unix via
2472      'LC_MESSAGES').  If that fails you can select a different language
2473      by giving this option with a language code (based on ISO 639-1).
2474      Currently supported (but not necessarily completely translated)
2475      are: English (en, default), Czech (cs), German (de), French (fr),
2476      Italian (it), Japanese (ja), Dutch (nl), Polish (pl), Brazilian
2477      Portuguese (pt_BR), Russian (ru), Slovak (sk), Slovenian (sl),
2478      Serbian (sr), Ukrainian (uk), Vietnamese (vi), simplified Chinese
2479      (zh_CN), and traditional Chinese (zh_TW).
2481 *-debug-translation*
2483      In GUI mode, this switch tells 'tlmgr' to report any untranslated
2484      (or missing) messages to standard error.  This can help translators
2485      to see what remains to be done.
2487 *-machine-readable*
2489      Instead of the normal output intended for human consumption, write
2490      (to standard output) a fixed format more suitable for machine
2491      parsing.  See the *note MACHINE-READABLE OUTPUT: tlmgr
2492      MACHINE-READABLE OUTPUT. section below.
2494 *-no-execute-actions*
2496      Suppress the execution of the execute actions as defined in the
2497      tlpsrc files.  Documented only for completeness, as this is only
2498      useful in debugging.
2500 *-package-logfile* _file_
2502      'tlmgr' logs all package actions (install, remove, update, failed
2503      updates, failed restores) to a separate log file, by default
2504      'TEXMFSYSVAR/web2c/tlmgr.log'.  This option allows you to specific
2505      a different file for the log.
2507 *-pause*
2509      This option makes 'tlmgr' wait for user input before exiting.
2510      Useful on Windows to avoid disappearing command windows.
2512 *-persistent-downloads*
2514 *-no-persistent-downloads*
2516      For network-based installations, this option (on by default) makes
2517      'tlmgr' try to set up a persistent connection (using the 'LWP' Perl
2518      module).  The idea is to open and reuse only one connection per
2519      session between your computer and the server, instead of initiating
2520      a new download for each package.
2522      If this is not possible, 'tlmgr' will fall back to using 'wget'.
2523      To disable these persistent connections, use
2524      '--no-persistent-downloads'.
2526 *-pin-file*
2528      Change the pinning file location from
2529      'TEXMFLOCAL/tlpkg/pinning.txt' (see *note Pinning: tlmgr Pinning.
2530      below).  Documented only for completeness, as this is only useful
2531      in debugging.
2533 *-usermode*
2535      Activates user mode for this run of 'tlmgr'; see *note USER MODE:
2536      tlmgr USER MODE. below.
2538 *-usertree* _dir_
2540      Uses _dir_ for the tree in user mode; see *note USER MODE: tlmgr
2541      USER MODE. below.
2543    The standard options for TeX Live programs are also accepted:
2544 '--help/-h/-?', '--version', '-q' (no informational messages), '-v'
2545 (debugging messages, can be repeated).  For the details about these, see
2546 the 'TeXLive::TLUtils' documentation.
2548    The '--version' option shows version information about the TeX Live
2549 release and about the 'tlmgr' script itself.  If '-v' is also given,
2550 revision number for the loaded TeX Live Perl modules are shown, too.
2552 \x1f
2553 File: tlbuild.info,  Node: tlmgr ACTIONS,  Next: tlmgr USER MODE,  Prev: tlmgr OPTIONS,  Up: tlmgr
2555 B.6 ACTIONS
2556 ===========
2558 * Menu:
2560 * tlmgr help::
2561 * tlmgr version::
2562 * tlmgr backup [--clean[=_N_]] [--backupdir _dir_] [--all | _pkg_]...::
2563 * tlmgr candidates _pkg_::
2564 * tlmgr check [_option_]... [files|depends|executes|runfiles|all]::
2565 * tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]]::
2566 * tlmgr dump-tlpdb [--local|--remote]::
2567 * tlmgr generate [_option_]... _what_::
2568 * tlmgr gui::
2569 * tlmgr info [_option_...] [collections|schemes|_pkg_...]::
2570 * tlmgr init-usertree::
2571 * tlmgr install [_option_]... _pkg_...::
2572 * tlmgr option::
2573 * tlmgr paper::
2574 * tlmgr path [--w32mode=user|admin] [add|remove]::
2575 * tlmgr pinning::
2576 * tlmgr platform list|add|remove _platform_...::
2577 * tlmgr platform set _platform_::
2578 * tlmgr platform set auto::
2579 * tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]...::
2580 * tlmgr print-platform::
2581 * tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]]::
2582 * tlmgr remove [_option_]... _pkg_...::
2583 * tlmgr repository::
2584 * tlmgr search [_option_...] _what_::
2585 * tlmgr uninstall::
2586 * tlmgr update [_option_]... [_pkg_]...::
2588 \x1f
2589 File: tlbuild.info,  Node: tlmgr help,  Next: tlmgr version,  Up: tlmgr ACTIONS
2591 B.6.1 help
2592 ----------
2594 Display this help information and exit (same as '--help', and on the web
2595 at <http://tug.org/texlive/doc/tlmgr.html>).  Sometimes the 'perldoc'
2596 and/or 'PAGER' programs on the system have problems, resulting in
2597 control characters being literally output.  This can't always be
2598 detected, but you can set the 'NOPERLDOC' environment variable and
2599 'perldoc' will not be used.
2601 \x1f
2602 File: tlbuild.info,  Node: tlmgr version,  Next: tlmgr backup [--clean[=_N_]] [--backupdir _dir_] [--all | _pkg_]...,  Prev: tlmgr help,  Up: tlmgr ACTIONS
2604 B.6.2 version
2605 -------------
2607 Gives version information (same as '--version').
2609    If '-v' has been given the revisions of the used modules are
2610 reported, too.
2612 \x1f
2613 File: tlbuild.info,  Node: tlmgr backup [--clean[=_N_]] [--backupdir _dir_] [--all | _pkg_]...,  Next: tlmgr candidates _pkg_,  Prev: tlmgr version,  Up: tlmgr ACTIONS
2615 B.6.3 backup [-clean[=_N_]] [-backupdir _dir_] [-all | _pkg_]...
2616 ----------------------------------------------------------------
2618 If the '--clean' option is not specified, this action makes a backup of
2619 the given packages, or all packages given '--all'.  These backups are
2620 saved to the value of the '--backupdir' option, if that is an existing
2621 and writable directory.  If '--backupdir' is not given, the 'backupdir'
2622 option setting in the TLPDB is used, if present.  If both are missing,
2623 no backups are made.
2625    If the '--clean' option is specified, backups are pruned (removed)
2626 instead of saved.  The optional integer value _N_ may be specified to
2627 set the number of backups that will be retained when cleaning.  If 'N'
2628 is not given, the value of the 'autobackup' option is used.  If both are
2629 missing, an error is issued.  For more details of backup pruning, see
2630 the 'option' action.
2632    Options:
2634 *-backupdir* _directory_
2636      Overrides the 'backupdir' option setting in the TLPDB. The
2637      _directory_ argument is required and must specify an existing,
2638      writable directory where backups are to be placed.
2640 *-all*
2642      If '--clean' is not specified, make a backup of all packages in the
2643      TeX Live installation; this will take quite a lot of space and
2644      time.  If '--clean' is specified, all packages are pruned.
2646 *-clean*[=_N_]
2648      Instead of making backups, prune the backup directory of old
2649      backups, as explained above.  The optional integer argument _N_
2650      overrides the 'autobackup' option set in the TLPDB. You must use
2651      '--all' or a list of packages together with this option, as
2652      desired.
2654 *-dry-run*
2656      Nothing is actually backed up or removed; instead, the actions to
2657      be performed are written to the terminal.
2659 \x1f
2660 File: tlbuild.info,  Node: tlmgr candidates _pkg_,  Next: tlmgr check [_option_]... [files|depends|executes|runfiles|all],  Prev: tlmgr backup [--clean[=_N_]] [--backupdir _dir_] [--all | _pkg_]...,  Up: tlmgr ACTIONS
2662 B.6.4 candidates _pkg_
2663 ----------------------
2665 *candidates _pkg_*
2667      Shows the available candidate repositories for package _pkg_.  See
2668      *note MULTIPLE REPOSITORIES: tlmgr MULTIPLE REPOSITORIES. below.
2670 \x1f
2671 File: tlbuild.info,  Node: tlmgr check [_option_]... [files|depends|executes|runfiles|all],  Next: tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]],  Prev: tlmgr candidates _pkg_,  Up: tlmgr ACTIONS
2673 B.6.5 check [_option_]... [files|depends|executes|runfiles|all]
2674 ---------------------------------------------------------------
2676 Executes one (or all) check(s) on the consistency of the installation.
2678 *files*
2680      Checks that all files listed in the local TLPDB ('texlive.tlpdb')
2681      are actually present, and lists those missing.
2683 *depends*
2685      Lists those packages which occur as dependencies in an installed
2686      collections, but are themselves not installed, and those packages
2687      that are not contained in any collection.
2689      If you call 'tlmgr check collections' this test will be carried out
2690      instead since former versions for 'tlmgr' called it that way.
2692 *executes*
2694      Check that the files referred to by 'execute' directives in the TeX
2695      Live Database are present.
2697 *runfiles*
2699      List those filenames that are occurring more than one time in the
2700      runfiles.
2702    Options:
2704 *-use-svn*
2706      Use the output of 'svn status' instead of listing the files; for
2707      checking the TL development repository.
2709 \x1f
2710 File: tlbuild.info,  Node: tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]],  Next: tlmgr dump-tlpdb [--local|--remote],  Prev: tlmgr check [_option_]... [files|depends|executes|runfiles|all],  Up: tlmgr ACTIONS
2712 B.6.6 conf [texmf|tlmgr|updmap [-conffile _file_] [-delete] [_key_ [_value_]]]
2713 ------------------------------------------------------------------------------
2715 With only 'conf', show general configuration information for TeX Live,
2716 including active configuration files, path settings, and more.  This is
2717 like the 'texconfig conf' call, but works on all supported platforms.
2719    With either 'conf texmf', 'conf tlmgr', or 'conf updmap' given in
2720 addition, shows all key/value pairs (i.e., all settings) as saved in
2721 'ROOT/texmf.cnf', the tlmgr configuration file (see below), or the first
2722 found (via kpsewhich) 'updmap.cfg' file, respectively.
2724    If _key_ is given in addition, shows the value of only that _key_ in
2725 the respective file.  If option _-delete_ is also given, the
2726 configuration file - it is removed, not just commented out!
2728    If _value_ is given in addition, _key_ is set to _value_ in the
2729 respective file.  _No error checking is done!_
2731    In all cases the file used can be explicitly specified via the option
2732 '--conffile _file_', in case one wants to operate on a different file.
2734    Practical application: if the execution of (some or all) system
2735 commands via '\write18' was left enabled during installation, you can
2736 disable it afterwards:
2738   tlmgr conf texmf shell_escape 0
2740    A more complicated example: the 'TEXMFHOME' tree (see the main TeX
2741 Live guide, <http://tug.org/texlive/doc.html>) can be set to multiple
2742 directories, but they must be enclosed in braces and separated by
2743 commas, so quoting the value to the shell is a good idea.  Thus:
2745   tlmgr conf texmf TEXMFHOME "{~/texmf,~/texmfbis}"
2747    Warning: The general facility is here, but tinkering with settings in
2748 this way is very strongly discouraged.  Again, no error checking on
2749 either keys or values is done, so any sort of breakage is possible.
2751 \x1f
2752 File: tlbuild.info,  Node: tlmgr dump-tlpdb [--local|--remote],  Next: tlmgr generate [_option_]... _what_,  Prev: tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]],  Up: tlmgr ACTIONS
2754 B.6.7 dump-tlpdb [-local|-remote]
2755 ---------------------------------
2757 Dump complete local or remote TLPDB to standard output, as-is.  The
2758 output is analogous to the '--machine-readable' output; see *note
2759 MACHINE-READABLE OUTPUT: tlmgr MACHINE-READABLE OUTPUT. section.
2761    Options:
2763 *-local*
2765      Dump the local tlpdb.
2767 *-remote*
2769      Dump the remote tlpdb.
2771    Exactly one of '--local' and '--remote' must be given.
2773    In either case, the first line of the output specifies the repository
2774 location, in this format:
2776   "location-url" "\t" location
2778    where 'location-url' is the literal field name, followed by a tab,
2779 and _location_ is the file or url to the repository.
2781    Line endings may be either LF or CRLF depending on the current
2782 platform.
2784 \x1f
2785 File: tlbuild.info,  Node: tlmgr generate [_option_]... _what_,  Next: tlmgr gui,  Prev: tlmgr dump-tlpdb [--local|--remote],  Up: tlmgr ACTIONS
2787 B.6.8 generate [_option_]... _what_
2788 -----------------------------------
2790 *generate language*
2792 *generate language.dat*
2794 *generate language.def*
2796 *generate language.dat.lua*
2798 *generate fmtutil*
2800    The 'generate' action overwrites any manual changes made in the
2801 respective files: it recreates them from scratch based on the
2802 information of the installed packages, plus local adaptions.  The TeX
2803 Live installer and 'tlmgr' routinely call 'generate' for all of these
2804 files.
2806    For managing your own fonts, please read the 'updmap --help'
2807 information and/or <http://tug.org/fonts/fontinstall.html>.
2809    In more detail: 'generate' remakes any of the configuration files
2810 'language.dat', 'language.def', 'language.dat.lua', and 'fmtutil.cnf',
2811 from the information present in the local TLPDB, plus locally-maintained
2812 files.
2814    The locally-maintained files are 'language-local.dat',
2815 'language-local.def', 'language-local.dat.lua', or 'fmtutil-local.cnf',
2816 searched for in 'TEXMFLOCAL' in the respective directories.  If local
2817 additions are present, the final file is made by starting with the main
2818 file, omitting any entries that the local file specifies to be disabled,
2819 and finally appending the local file.
2821    (Historical note: The formerly supported 'updmap-local.cfg' is no
2822 longer read, since 'updmap' now supports multiple 'updmap.cfg' files.
2823 Thus, local additions can and should be put into an 'updmap.cfg' file in
2824 'TEXMFLOCAL'.  The 'generate updmap' action no longer exists.)
2826    Local files specify entries to be disabled with a comment line,
2827 namely one of these:
2829   #!NAME
2830   %!NAME
2831   --!NAME
2833    where 'fmtutil.cnf' uses '#', 'language.dat' and 'language.def' use
2834 '%', and 'language.dat.lua' use '--'.  In all cases, the _name_ is the
2835 respective format name or hyphenation pattern identifier.  Examples:
2837   #!pdflatex
2838   %!german
2839   --!usenglishmax
2841    (Of course, you're not likely to actually want to disable those
2842 particular items.  They're just examples.)
2844    After such a disabling line, the local file can include another entry
2845 for the same item, if a different definition is desired.  In general,
2846 except for the special disabling lines, the local files follow the same
2847 syntax as the master files.
2849    The form 'generate language' recreates all three files
2850 'language.dat', 'language.def', and 'language.dat.lua', while the forms
2851 with an extension recreates only that given language file.
2853    Options:
2855 *-dest* _output_file_
2857      specifies the output file (defaults to the respective location in
2858      'TEXMFSYSVAR').  If '--dest' is given to 'generate language', it
2859      serves as a basename onto which '.dat' will be appended for the
2860      name of the 'language.dat' output file, '.def' will be appended to
2861      the value for the name of the 'language.def' output file, and
2862      '.dat.lua' to the name of the 'language.dat.lua' file.  (This is
2863      just to avoid overwriting; if you want a specific name for each
2864      output file, we recommend invoking 'tlmgr' twice.)
2866 *-localcfg* _local_conf_file_
2868      specifies the (optional) local additions (defaults to the
2869      respective location in 'TEXMFLOCAL').
2871 *-rebuild-sys*
2873      tells tlmgr to run necessary programs after config files have been
2874      regenerated.  These are: 'fmtutil-sys --all' after 'generate
2875      fmtutil', 'fmtutil-sys --byhyphen .../language.dat' after 'generate
2876      language.dat', and 'fmtutil-sys --byhyphen .../language.def' after
2877      'generate language.def'.
2879      These subsequent calls cause the newly-generated files to actually
2880      take effect.  This is not done by default since those calls are
2881      lengthy processes and one might want to made several related
2882      changes in succession before invoking these programs.
2884    The respective locations are as follows:
2886   tex/generic/config/language.dat (and language-local.dat);
2887   tex/generic/config/language.def (and language-local.def);
2888   tex/generic/config/language.dat.lua (and language-local.dat.lua);
2889   web2c/fmtutil.cnf (and fmtutil-local.cnf);
2891 \x1f
2892 File: tlbuild.info,  Node: tlmgr gui,  Next: tlmgr info [_option_...] [collections|schemes|_pkg_...],  Prev: tlmgr generate [_option_]... _what_,  Up: tlmgr ACTIONS
2894 B.6.9 gui
2895 ---------
2897 Start the graphical user interface.  See *GUI* below.
2899 \x1f
2900 File: tlbuild.info,  Node: tlmgr info [_option_...] [collections|schemes|_pkg_...],  Next: tlmgr init-usertree,  Prev: tlmgr gui,  Up: tlmgr ACTIONS
2902 B.6.10 info [_option_...] [collections|schemes|_pkg_...]
2903 --------------------------------------------------------
2905 With no argument, lists all packages available at the package
2906 repository, prefixing those already installed with 'i'.
2908    With the single word 'collections' or 'schemes' as the argument,
2909 lists the request type instead of all packages.
2911    With any other arguments, display information about _pkg_: the name,
2912 category, short and long description, installation status, and TeX Live
2913 revision number.  If _pkg_ is not locally installed, searches in the
2914 remote installation source.
2916    It also displays information taken from the TeX Catalogue, namely the
2917 package version, date, and license.  Consider these, especially the
2918 package version, as approximations only, due to timing skew of the
2919 updates of the different pieces.  By contrast, the 'revision' value
2920 comes directly from TL and is reliable.
2922    The former actions 'show' and 'list' are merged into this action, but
2923 are still supported for backward compatibility.
2925    Options:
2927 *-list*
2929      If the option '--list' is given with a package, the list of
2930      contained files is also shown, including those for
2931      platform-specific dependencies.  When given with schemes and
2932      collections, '--list' outputs their dependencies in a similar way.
2934 *-only-installed*
2936      If this options is given, the installation source will not be used;
2937      only locally installed packages, collections, or schemes are
2938      listed.  (Does not work for listing of packages for now)
2940 *-taxonomy*
2942 *-keyword*
2944 *-functionality*
2946 *-characterization*
2948      In addition to the normal data displayed, also display information
2949      for given packages from the corresponding taxonomy (or all of
2950      them).  See *note TAXONOMIES: tlmgr TAXONOMIES. below for details.
2952 \x1f
2953 File: tlbuild.info,  Node: tlmgr init-usertree,  Next: tlmgr install [_option_]... _pkg_...,  Prev: tlmgr info [_option_...] [collections|schemes|_pkg_...],  Up: tlmgr ACTIONS
2955 B.6.11 init-usertree
2956 --------------------
2958 Sets up a texmf tree for so-called user mode management, either the
2959 default user tree ('TEXMFHOME'), or one specified on the command line
2960 with '--usertree'.  See *note USER MODE: tlmgr USER MODE. below.
2962 \x1f
2963 File: tlbuild.info,  Node: tlmgr install [_option_]... _pkg_...,  Next: tlmgr option,  Prev: tlmgr init-usertree,  Up: tlmgr ACTIONS
2965 B.6.12 install [_option_]... _pkg_...
2966 -------------------------------------
2968 Install each _pkg_ given on the command line.  By default this installs
2969 all packages on which the given _pkg_s are dependent, also.  Options:
2971 *-file*
2973      Instead of fetching a package from the installation repository, use
2974      the package files given on the command line.  These files must be
2975      standard TeX Live package files (with contained tlpobj file).
2977 *-reinstall*
2979      Reinstall a package (including dependencies for collections) even
2980      if it already seems to be installed (i.e, is present in the TLPDB).
2981      This is useful to recover from accidental removal of files in the
2982      hierarchy.
2984      When re-installing, only dependencies on normal packages are
2985      followed (i.e., not those of category Scheme or Collection).
2987 *-no-depends*
2989      Do not install dependencies.  (By default, installing a package
2990      ensures that all dependencies of this package are fulfilled.)
2992 *-no-depends-at-all*
2994      Normally, when you install a package which ships binary files the
2995      respective binary package will also be installed.  That is, for a
2996      package 'foo', the package 'foo.i386-linux' will also be installed
2997      on an 'i386-linux' system.  This option suppresses this behavior,
2998      and also implies '--no-depends'.  Don't use it unless you are sure
2999      of what you are doing.
3001 *-dry-run*
3003      Nothing is actually installed; instead, the actions to be performed
3004      are written to the terminal.
3006 *-force*
3008      If updates to 'tlmgr' itself (or other parts of the basic
3009      infrastructure) are present, 'tlmgr' will bail out and not perform
3010      the installation unless this option is given.  Not recommended.
3012 \x1f
3013 File: tlbuild.info,  Node: tlmgr option,  Next: tlmgr paper,  Prev: tlmgr install [_option_]... _pkg_...,  Up: tlmgr ACTIONS
3015 B.6.13 option
3016 -------------
3018 *option [show]*
3020 *option showall*
3022 *option _key_ [_value_]*
3024    The first form shows the global TeX Live settings currently saved in
3025 the TLPDB with a short description and the 'key' used for changing it in
3026 parentheses.
3028    The second form is similar, but also shows options which can be
3029 defined but are not currently set to any value.
3031    In the third form, if _value_ is not given, the setting for _key_ is
3032 displayed.  If _value_ is present, _key_ is set to _value_.
3034    Possible values for _key_ are (run 'tlmgr option showall' for the
3035 definitive list):
3037  repository (default package repository),
3038  formats    (create formats at installation time),
3039  postcode   (run postinst code blobs)
3040  docfiles   (install documentation files),
3041  srcfiles   (install source files),
3042  backupdir  (default directory for backups),
3043  autobackup (number of backups to keep).
3044  sys_bin    (directory to which executables are linked by the path action)
3045  sys_man    (directory to which man pages are linked by the path action)
3046  sys_info   (directory to which Info files are linked by the path action)
3047  desktop_integration (Windows-only: create Start menu shortcuts)
3048  fileassocs (Windows-only: change file associations)
3049  multiuser  (Windows-only: install for all users)
3051    One common use of 'option' is to permanently change the installation
3052 to get further updates from the Internet, after originally installing
3053 from DVD. To do this, you can run
3055  tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet
3057    The 'install-tl' documentation has more information about the
3058 possible values for 'repository'.  (For backward compatibility,
3059 'location' can be used as alternative name for 'repository'.)
3061    If 'formats' is set (this is the default), then formats are
3062 regenerated when either the engine or the format files have changed.
3063 Disable this only when you know what you are doing.
3065    The 'postcode' option controls execution of per-package
3066 postinstallation action code.  It is set by default, and again disabling
3067 is not likely to be of interest except perhaps to developers.
3069    The 'docfiles' and 'srcfiles' options control the installation of
3070 their respective files of a package.  By default both are enabled (1).
3071 This can be disabled (set to 0) if disk space is (very) limited.
3073    The options 'autobackup' and 'backupdir' determine the defaults for
3074 the actions 'update', 'backup' and 'restore'.  These three actions need
3075 a directory in which to read or write the backups.  If '--backupdir' is
3076 not specified on the command line, the 'backupdir' option value is used
3077 (if set).
3079    The 'autobackup' option (de)activates automatic generation of
3080 backups.  Its value is an integer.  If the 'autobackup' value is '-1',
3081 no backups are removed.  If 'autobackup' is 0 or more, it specifies the
3082 number of backups to keep.  Thus, backups are disabled if the value is
3083 0.  In the '--clean' mode of the 'backup' action this option also
3084 specifies the number to be kept.
3086    To setup 'autobackup' to '-1' on the command line, use:
3088   tlmgr option -- autobackup -1
3090    The '--' avoids having the '-1' treated as an option.  ('--' stops
3091 parsing for options at the point where it appears; this is a general
3092 feature across most Unix programs.)
3094    The 'sys_bin', 'sys_man', and 'sys_info' options are used on
3095 Unix-like systems to control the generation of links for executables,
3096 info files and man pages.  See the 'path' action for details.
3098    The last three options control behaviour on Windows installations.
3099 If 'desktop_integration' is set, then some packages will install items
3100 in a sub-folder of the Start menu for 'tlmgr gui', documentation, etc.
3101 If 'fileassocs' is set, Windows file associations are made (see also the
3102 'postaction' action).  Finally, if 'multiuser' is set, then adaptions to
3103 the registry and the menus are done for all users on the system instead
3104 of only the current user.  All three options are on by default.
3106 \x1f
3107 File: tlbuild.info,  Node: tlmgr paper,  Next: tlmgr path [--w32mode=user|admin] [add|remove],  Prev: tlmgr option,  Up: tlmgr ACTIONS
3109 B.6.14 paper
3110 ------------
3112 *paper [a4|letter]*
3114 *[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|-list]*
3116    With no arguments ('tlmgr paper'), shows the default paper size
3117 setting for all known programs.
3119    With one argument (e.g., 'tlmgr paper a4'), sets the default for all
3120 known programs to that paper size.
3122    With a program given as the first argument and no paper size
3123 specified (e.g., 'tlmgr dvips paper'), shows the default paper size for
3124 that program.
3126    With a program given as the first argument and a paper size as the
3127 last argument (e.g., 'tlmgr dvips paper a4'), set the default for that
3128 program to that paper size.
3130    With a program given as the first argument and '--list' given as the
3131 last argument (e.g., 'tlmgr dvips paper --list'), shows all valid paper
3132 sizes for that program.  The first size shown is the default.
3134    Incidentally, this syntax of having a specific program name before
3135 the 'paper' keyword is unusual.  It is inherited from the longstanding
3136 'texconfig' script, which supports other configuration settings for some
3137 programs, notably 'dvips'.  'tlmgr' does not support those extra
3138 settings.
3140 \x1f
3141 File: tlbuild.info,  Node: tlmgr path [--w32mode=user|admin] [add|remove],  Next: tlmgr pinning,  Prev: tlmgr paper,  Up: tlmgr ACTIONS
3143 B.6.15 path [-w32mode=user|admin] [add|remove]
3144 ----------------------------------------------
3146 On Unix, merely adds or removes symlinks for binaries, man pages, and
3147 info pages in the system directories specified by the respective options
3148 (see the *note option: tlmgr option. description above).  Does not
3149 change any initialization files, either system or personal.
3151    On Windows, the registry part where the binary directory is added or
3152 removed is determined in the following way:
3154    If the user has admin rights, and the option '--w32mode' is not
3155 given, the setting _w32_multi_user_ determines the location (i.e., if it
3156 is on then the system path, otherwise the user path is changed).
3158    If the user has admin rights, and the option '--w32mode' is given,
3159 this option determines the path to be adjusted.
3161    If the user does not have admin rights, and the option '--w32mode' is
3162 not given, and the setting _w32_multi_user_ is off, the user path is
3163 changed, while if the setting _w32_multi_user_ is on, a warning is
3164 issued that the caller does not have enough privileges.
3166    If the user does not have admin rights, and the option '--w32mode' is
3167 given, it must be *user* and the user path will be adjusted.  If a user
3168 without admin rights uses the option '--w32mode admin' a warning is
3169 issued that the caller does not have enough privileges.
3171 \x1f
3172 File: tlbuild.info,  Node: tlmgr pinning,  Next: tlmgr platform list|add|remove _platform_...,  Prev: tlmgr path [--w32mode=user|admin] [add|remove],  Up: tlmgr ACTIONS
3174 B.6.16 pinning
3175 --------------
3177 The 'pinning' action manages the pinning file, see *note Pinning: tlmgr
3178 Pinning. below.
3180 'pinning show'
3182      Shows the current pinning data.
3184 'pinning add' _repo_ _pkgglob_...
3186      Pins the packages matching the _pkgglob_(s) to the repository
3187      _repo_.
3189 'pinning remove' _repo_ _pkgglob_...
3191      Any packages recorded in the pinning file matching the <pkgglob>s
3192      for the given repository _repo_ are removed.
3194 'pinning remove _repo_ --all'
3196      Remove all pinning data for repository _repo_.
3198 \x1f
3199 File: tlbuild.info,  Node: tlmgr platform list|add|remove _platform_...,  Next: tlmgr platform set _platform_,  Prev: tlmgr pinning,  Up: tlmgr ACTIONS
3201 B.6.17 platform list|add|remove _platform_...
3202 ---------------------------------------------
3204 \x1f
3205 File: tlbuild.info,  Node: tlmgr platform set _platform_,  Next: tlmgr platform set auto,  Prev: tlmgr platform list|add|remove _platform_...,  Up: tlmgr ACTIONS
3207 B.6.18 platform set _platform_
3208 ------------------------------
3210 \x1f
3211 File: tlbuild.info,  Node: tlmgr platform set auto,  Next: tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]...,  Prev: tlmgr platform set _platform_,  Up: tlmgr ACTIONS
3213 B.6.19 platform set auto
3214 ------------------------
3216 'platform list' lists the TeX Live names of all the platforms (a.k.a.
3217 architectures), ('i386-linux', ...)  available at the package
3218 repository.
3220    'platform add' _platform_...  adds the executables for each given
3221 platform _platform_ to the installation from the repository.
3223    'platform remove' _platform_...  removes the executables for each
3224 given platform _platform_ from the installation, but keeps the currently
3225 running platform in any case.
3227    'platform set' _platform_ switches TeX Live to always use the given
3228 platform instead of auto detection.
3230    'platform set auto' switches TeX Live to auto detection mode for
3231 platform.
3233    Platform detection is needed to select the proper 'xz', 'xzdec' and
3234 'wget' binaries that are shipped with TeX Live.
3236    'arch' is a synonym for 'platform'.
3238    Options:
3240 *-dry-run*
3242      Nothing is actually installed; instead, the actions to be performed
3243      are written to the terminal.
3245 \x1f
3246 File: tlbuild.info,  Node: tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]...,  Next: tlmgr print-platform,  Prev: tlmgr platform set auto,  Up: tlmgr ACTIONS
3248 B.6.20 postaction [-w32mode=user|admin] [-fileassocmode=1|2] [-all] [install|remove] [shortcut|fileassoc|script] [_pkg_]...
3249 ---------------------------------------------------------------------------------------------------------------------------
3251 Carry out the postaction 'shortcut', 'fileassoc', or 'script' given as
3252 the second required argument in install or remove mode (which is the
3253 first required argument), for either the packages given on the command
3254 line, or for all if '--all' is given.
3256    If the option '--w32mode' is given the value 'user', all actions will
3257 only be carried out in the user-accessible parts of the
3258 registry/filesystem, while the value 'admin' selects the system-wide
3259 parts of the registry for the file associations.  If you do not have
3260 enough permissions, using '--w32mode=admin' will not succeed.
3262    '--fileassocmode' specifies the action for file associations.  If it
3263 is set to 1 (the default), only new associations are added; if it is set
3264 to 2, all associations are set to the TeX Live programs.  (See also
3265 'option fileassocs'.)
3267 \x1f
3268 File: tlbuild.info,  Node: tlmgr print-platform,  Next: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]],  Prev: tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]...,  Up: tlmgr ACTIONS
3270 B.6.21 print-platform
3271 ---------------------
3273 Print the TeX Live identifier for the detected platform
3274 (hardware/operating system) combination to standard output, and exit.
3275 '--print-arch' is a synonym.
3277 \x1f
3278 File: tlbuild.info,  Node: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]],  Next: tlmgr remove [_option_]... _pkg_...,  Prev: tlmgr print-platform,  Up: tlmgr ACTIONS
3280 B.6.22 restore [-backupdir _dir_] [-all | _pkg_ [_rev_]]
3281 --------------------------------------------------------
3283 Restore a package from a previously-made backup.
3285    If '--all' is given, try to restore the latest revision of all
3286 package backups found in the backup directory.
3288    Otherwise, if neither _pkg_ nor _rev_ are given, list the available
3289 backup revisions for all packages.
3291    With _pkg_ given but no _rev_, list all available backup revisions of
3292 _pkg_.
3294    When listing available packages tlmgr shows the revision and in
3295 parenthesis the creation time if available (in format yyyy-mm-dd hh:mm).
3297    With both _pkg_ and _rev_, tries to restore the package from the
3298 specified backup.
3300    Options:
3302 *-all*
3304      Try to restore the latest revision of all package backups found in
3305      the backup directory.  Additional non-option arguments (like _pkg_)
3306      are not allowed.
3308 *-backupdir* _directory_
3310      Specify the directory where the backups are to be found.  If not
3311      given it will be taken from the configuration setting in the TLPDB.
3313 *-dry-run*
3315      Nothing is actually restored; instead, the actions to be performed
3316      are written to the terminal.
3318 *-force*
3320      Don't ask questions.
3322 \x1f
3323 File: tlbuild.info,  Node: tlmgr remove [_option_]... _pkg_...,  Next: tlmgr repository,  Prev: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]],  Up: tlmgr ACTIONS
3325 B.6.23 remove [_option_]... _pkg_...
3326 ------------------------------------
3328 Remove each _pkg_ specified.  Removing a collection removes all package
3329 dependencies (unless '--no-depends' is specified), but not any
3330 collection dependencies of that collection.  However, when removing a
3331 package, dependencies are never removed.  Options:
3333 *-no-depends*
3335      Do not remove dependent packages.
3337 *-no-depends-at-all*
3339      See above under *install* (and beware).
3341 *-force*
3343      By default, removal of a package or collection that is a dependency
3344      of another collection or scheme is not allowed.  With this option,
3345      the package will be removed unconditionally.  Use with care.
3347      A package that has been removed using the '--force' option because
3348      it is still listed in an installed collection or scheme will not be
3349      updated, and will be mentioned as *forcibly removed* in the output
3350      of *tlmgr update -list*.
3352 *-dry-run*
3354      Nothing is actually removed; instead, the actions to be performed
3355      are written to the terminal.
3357 \x1f
3358 File: tlbuild.info,  Node: tlmgr repository,  Next: tlmgr search [_option_...] _what_,  Prev: tlmgr remove [_option_]... _pkg_...,  Up: tlmgr ACTIONS
3360 B.6.24 repository
3361 -----------------
3363 *repository list*
3365 *repository list _path|tag_*
3367 *repository add _path_ [_tag_]*
3369 *repository remove _path|tag_*
3371 *repository set _path_[#_tag_] [_path_[#_tag_] ...]*
3373      This action manages the list of repositories.  See *note MULTIPLE
3374      REPOSITORIES: tlmgr MULTIPLE REPOSITORIES. below for detailed
3375      explanations.
3377      The first form ('list') lists all configured repositories and the
3378      respective tags if set.  If a path, url, or tag is given after the
3379      'list' keyword, it is interpreted as source from where to
3380      initialize a TeX Live Database and lists the contained packages.
3381      This can also be an up-to-now not used repository, both locally and
3382      remote.  If one pass in addition '--with-platforms', for each
3383      package the available platforms (if any) are listed, too.
3385      The third form ('add') adds a repository (optionally attaching a
3386      tag) to the list of repositories.  The forth form ('remove')
3387      removes a repository, either by full path/url, or by tag.  The last
3388      form ('set') sets the list of repositories to the items given on
3389      the command line, not keeping previous settings
3391      In all cases, one of the repositories must be tagged as 'main';
3392      otherwise, all operations will fail!
3394 \x1f
3395 File: tlbuild.info,  Node: tlmgr search [_option_...] _what_,  Next: tlmgr uninstall,  Prev: tlmgr repository,  Up: tlmgr ACTIONS
3397 B.6.25 search [_option_...] _what_
3398 ----------------------------------
3400 * Menu:
3402 * tlmgr search [_option_...] --file _what_::
3403 * tlmgr search [_option_...] --taxonomy _what_::
3404 * tlmgr search [_option_...] --keyword _what_::
3405 * tlmgr search [_option_...] --functionality _what_::
3406 * tlmgr search [_option_...] --characterization _what_::
3407 * tlmgr search [_option_...] --all _what_::
3409 \x1f
3410 File: tlbuild.info,  Node: tlmgr search [_option_...] --file _what_,  Next: tlmgr search [_option_...] --taxonomy _what_,  Up: tlmgr search [_option_...] _what_
3412 B.6.25.1 search [_option_...] -file _what_
3413 ..........................................
3415 \x1f
3416 File: tlbuild.info,  Node: tlmgr search [_option_...] --taxonomy _what_,  Next: tlmgr search [_option_...] --keyword _what_,  Prev: tlmgr search [_option_...] --file _what_,  Up: tlmgr search [_option_...] _what_
3418 B.6.25.2 search [_option_...] -taxonomy _what_
3419 ..............................................
3421 \x1f
3422 File: tlbuild.info,  Node: tlmgr search [_option_...] --keyword _what_,  Next: tlmgr search [_option_...] --functionality _what_,  Prev: tlmgr search [_option_...] --taxonomy _what_,  Up: tlmgr search [_option_...] _what_
3424 B.6.25.3 search [_option_...] -keyword _what_
3425 .............................................
3427 \x1f
3428 File: tlbuild.info,  Node: tlmgr search [_option_...] --functionality _what_,  Next: tlmgr search [_option_...] --characterization _what_,  Prev: tlmgr search [_option_...] --keyword _what_,  Up: tlmgr search [_option_...] _what_
3430 B.6.25.4 search [_option_...] -functionality _what_
3431 ...................................................
3433 \x1f
3434 File: tlbuild.info,  Node: tlmgr search [_option_...] --characterization _what_,  Next: tlmgr search [_option_...] --all _what_,  Prev: tlmgr search [_option_...] --functionality _what_,  Up: tlmgr search [_option_...] _what_
3436 B.6.25.5 search [_option_...] -characterization _what_
3437 ......................................................
3439 \x1f
3440 File: tlbuild.info,  Node: tlmgr search [_option_...] --all _what_,  Prev: tlmgr search [_option_...] --characterization _what_,  Up: tlmgr search [_option_...] _what_
3442 B.6.25.6 search [_option_...] -all _what_
3443 .........................................
3445 By default, search the names, short descriptions, and long descriptions
3446 of all locally installed packages for the argument _what_, interpreted
3447 as a regular expression.
3449    Options:
3451 *-global*
3453      Search the TeX Live Database of the installation medium, instead of
3454      the local installation.
3456 *-word*
3458      Restrict the search to match only full words.  For example,
3459      searching for 'table' with this option will not output packages
3460      containing the word 'tables' (unless they also contain the word
3461      'table' on its own).
3463 *-list*
3465      If a search for any (or all) taxonomies is done, by specifying one
3466      of the taxonomy options below, then instead of searching for
3467      packages, list the entire corresponding taxonomy (or all of them).
3468      See *note TAXONOMIES: tlmgr TAXONOMIES. below.
3470    Other search options are selected by specifying one of the following:
3472 *-file*
3474      List all filenames containing _what_.
3476 *-taxonomy*
3478 *-keyword*
3480 *-functionality*
3482 *-characterization*
3484      Search in the corresponding taxonomy (or all) instead of the
3485      package descriptions.  See *note TAXONOMIES: tlmgr TAXONOMIES.
3486      below.
3488 *-all*
3490      Search for package names, descriptions, and taxonomies, but not
3491      files.
3493 \x1f
3494 File: tlbuild.info,  Node: tlmgr uninstall,  Next: tlmgr update [_option_]... [_pkg_]...,  Prev: tlmgr search [_option_...] _what_,  Up: tlmgr ACTIONS
3496 B.6.26 uninstall
3497 ----------------
3499 Uninstalls the entire TeX Live installation.  Options:
3501 *-force*
3503      Do not ask for confirmation, remove immediately.
3505 \x1f
3506 File: tlbuild.info,  Node: tlmgr update [_option_]... [_pkg_]...,  Prev: tlmgr uninstall,  Up: tlmgr ACTIONS
3508 B.6.27 update [_option_]... [_pkg_]...
3509 --------------------------------------
3511 Updates the packages given as arguments to the latest version available
3512 at the installation source.  Either '--all' or at least one _pkg_ name
3513 must be specified.  Options:
3515 *-all*
3517      Update all installed packages except for 'tlmgr' itself.  Thus, if
3518      updates to 'tlmgr' itself are present, this will simply give an
3519      error, unless also the option '--force' or '--self' is given.  (See
3520      below.)
3522      In addition to updating the installed packages, during the update
3523      of a collection the local installation is (by default) synchronized
3524      to the status of the collection on the server, for both additions
3525      and removals.
3527      This means that if a package has been removed on the server (and
3528      thus has also been removed from the respective collection), 'tlmgr'
3529      will remove the package in the local installation.  This is called
3530      "auto-remove" and is announced as such when using the option
3531      '--list'.  This auto-removal can be suppressed using the option
3532      '--no-auto-remove' (not recommended, see option description).
3534      Analogously, if a package has been added to a collection on the
3535      server that is also installed locally, it will be added to the
3536      local installation.  This is called "auto-install" and is announced
3537      as such when using the option '--list'.  This auto-installation can
3538      be suppressed using the option '--no-auto-install'.
3540      An exception to the collection dependency checks (including the
3541      auto-installation of packages just mentioned) are those that have
3542      been "forcibly removed" by you, that is, you called 'tlmgr remove
3543      --force' on them.  (See the 'remove' action documentation.)  To
3544      reinstall any such forcibly removed packages use
3545      '--reinstall-forcibly-removed'.
3547      If you want to exclude some packages from the current update run
3548      (e.g., due to a slow link), see the '--exclude' option below.
3550 *-self*
3552      Update 'tlmgr' itself (that is, the infrastructure packages) if
3553      updates to it are present.  On Windows this includes updates to the
3554      private Perl interpreter shipped inside TeX Live.
3556      If this option is given together with either '--all' or a list of
3557      packages, then 'tlmgr' will be updated first and, if this update
3558      succeeds, the new version will be restarted to complete the rest of
3559      the updates.
3561      In short:
3563        tlmgr update --self        # update infrastructure only
3564        tlmgr update --self --all  # update infrastructure and all packages
3565        tlmgr update --force --all # update all packages but *not* infrastructure
3566                                   # ... this last at your own risk, not recommended!
3568 *-dry-run*
3570      Nothing is actually installed; instead, the actions to be performed
3571      are written to the terminal.  This is a more detailed report than
3572      '--list'.
3574 *-list* [_pkg_]
3576      Concisely list the packages which would be updated, newly
3577      installed, or removed, without actually changing anything.  If
3578      '--all' is also given, all available updates are listed.  If
3579      '--self' is given, but not '--all', only updates to the critical
3580      packages (tlmgr, texlive infrastructure, perl on Windows, etc.)
3581      are listed.  If neither '--all' nor '--self' is given, and in
3582      addition no _pkg_ is given, then '--all' is assumed (thus, 'tlmgr
3583      update --list' is the same as 'tlmgr update --list --all').  If
3584      neither '--all' nor '--self' is given, but specific package names
3585      are given, those packages are checked for updates.
3587 *-exclude* _pkg_
3589      Exclude _pkg_ from the update process.  If this option is given
3590      more than once, its arguments accumulate.
3592      An argument _pkg_ excludes both the package _pkg_ itself and all
3593      its related platform-specific packages _pkg.ARCH_. For example,
3595        tlmgr update --all --exclude a2ping
3597      will not update 'a2ping', 'a2ping.i386-linux', or any other
3598      'a2ping.'_ARCH_ package.
3600      If this option specifies a package that would otherwise be a
3601      candidate for auto-installation, auto-removal, or reinstallation of
3602      a forcibly removed package, 'tlmgr' quits with an error message.
3603      Excludes are not supported in these circumstances.
3605 *-no-auto-remove* [_pkg_]...
3607      By default, 'tlmgr' tries to remove packages which have disappeared
3608      on the server, as described above under '--all'.  This option
3609      prevents such removals, either for all packages (with '--all'), or
3610      for just the given _pkg_ names.  This can lead to an inconsistent
3611      TeX installation, since packages are not infrequently renamed or
3612      replaced by their authors.  Therefore this is not recommend.
3614 *-no-auto-install* [_pkg_]...
3616      Under normal circumstances 'tlmgr' will install packages which are
3617      new on the server, as described above under '--all'.  This option
3618      prevents any such automatic installation, either for all packages
3619      (with '--all'), or the given _pkg_ names.
3621      Furthermore, after the 'tlmgr' run using this has finished, the
3622      packages that would have been auto-installed _will be considered as
3623      forcibly removed_.  So, if 'foobar' is the only new package on the
3624      server, then
3626        tlmgr update --all --no-auto-install
3628      is equivalent to
3630        tlmgr update --all
3631        tlmgr remove --force foobar
3633 *-reinstall-forcibly-removed*
3635      Under normal circumstances 'tlmgr' will not install packages that
3636      have been forcibly removed by the user; that is, removed with
3637      'remove --force', or whose installation was prohibited by
3638      '--no-auto-install' during an earlier update.
3640      This option makes 'tlmgr' ignore the forcible removals and
3641      re-install all such packages.  This can be used to completely
3642      synchronize an installation with the server's idea of what is
3643      available:
3645        tlmgr update --reinstall-forcibly-removed --all
3647 *-backup* and *-backupdir* _directory_
3649      These two options control the creation of backups of packages
3650      _before_ updating; that is, backup of packages as currently
3651      installed.  If neither of these options are given, no backup
3652      package will be saved.  If '--backupdir' is given and specifies a
3653      writable directory then a backup will be made in that location.  If
3654      only '--backup' is given, then a backup will be made to the
3655      directory previously set via the 'option' action (see below).  If
3656      both are given then a backup will be made to the specified
3657      _directory_.
3659      You can set options via the 'option' action to automatically create
3660      backups for all packages, and/or keep only a certain number of
3661      backups.  Please see the 'option' action for details.
3663      'tlmgr' always makes a temporary backup when updating packages, in
3664      case of download or other failure during an update.  In contrast,
3665      the purpose of this '--backup' option is to allow you to save a
3666      persistent backup in case the actual _content_ of the update causes
3667      problems, e.g., introduces an incompatibility.
3669      The 'restore' action explains how to restore from a backup.
3671 *-no-depends*
3673      If you call for updating a package normally all depending packages
3674      will also be checked for updates and updated if necessary.  This
3675      switch suppresses this behavior.
3677 *-no-depends-at-all*
3679      See above under *install* (and beware).
3681 *-force*
3683      Force update of normal packages, without updating 'tlmgr' itself
3684      (unless the '--self' option is also given).  Not recommended.
3686      Also, 'update --list' is still performed regardless of this option.
3688    If the package on the server is older than the package already
3689 installed (e.g., if the selected mirror is out of date), 'tlmgr' does
3690 not downgrade.  Also, packages for uninstalled platforms are not
3691 installed.
3693 \x1f
3694 File: tlbuild.info,  Node: tlmgr USER MODE,  Next: tlmgr CONFIGURATION FILE FOR TLMGR,  Prev: tlmgr ACTIONS,  Up: tlmgr
3696 B.7 USER MODE
3697 =============
3699 'tlmgr' provides a restricted way, called "user mode", to manage
3700 arbitrary texmf trees in the same way as the main installation.  For
3701 example, this allows people without write permissions on the
3702 installation location to update/install packages into a tree of their
3703 own.
3705    'tlmgr' is switched into user mode with the command line option
3706 '--usermode'.  It does not switch automatically, nor is there any
3707 configuration file setting for it.  Thus, this option has to be
3708 explicitly given every time user mode is to be activated.
3710    This mode of 'tlmgr' works on a user tree, by default the value of
3711 the 'TEXMFHOME' variable.  This can be overridden with the command line
3712 option '--usertree'.  In the following when we speak of the user tree we
3713 mean either 'TEXMFHOME' or the one given on the command line.
3715    Not all actions are allowed in user mode; 'tlmgr' will warn you and
3716 not carry out any problematic actions.  Currently not supported (and
3717 probably will never be) is the 'platform' action.  The 'gui' action is
3718 currently not supported, but may be in a future release.
3720    Some 'tlmgr' actions don't need any write permissions and thus work
3721 the same in user mode and normal mode.  Currently these are: 'check',
3722 'help', 'list', 'print-platform', 'search', 'show', 'version'.
3724    On the other hand, most of the actions dealing with package
3725 management do need write permissions, and thus behave differently in
3726 user mode, as described below: 'install', 'update', 'remove', 'option',
3727 'paper', 'generate', 'backup', 'restore', 'uninstall', 'symlinks'.
3729    Before using 'tlmgr' in user mode, you have to set up the user tree
3730 with the 'init-usertree' action.  This creates _usertree_'/web2c' and
3731 _usertree_'/tlpkg/tlpobj', and a minimal
3732 _usertree_'/tlpkg/texlive.tlpdb'.  At that point, you can tell 'tlmgr'
3733 to do the (supported) actions by adding the '--usermode' command line
3734 option.
3736    In user mode the file _usertree_'/tlpkg/texlive.tlpdb' contains only
3737 the packages that have been installed into the user tree using 'tlmgr',
3738 plus additional options from the "virtual" package
3739 '00texlive.installation' (similar to the main installation's
3740 'texlive.tlpdb').
3742    All actions on packages in user mode can only be carried out on
3743 packages that are known as 'relocatable'.  This excludes all packages
3744 containing executables and a few other core packages.  Of the 2500 or so
3745 packages currently in TeX Live the vast majority are relocatable and can
3746 be installed into a user tree.
3748    Description of changes of actions in user mode:
3750 * Menu:
3752 * tlmgr user mode install::
3753 * tlmgr user mode backup; restore; remove; update::
3754 * tlmgr user mode generate; option; paper::
3756 \x1f
3757 File: tlbuild.info,  Node: tlmgr user mode install,  Next: tlmgr user mode backup; restore; remove; update,  Up: tlmgr USER MODE
3759 B.7.1 user mode install
3760 -----------------------
3762 In user mode, the 'install' action checks that the package and all
3763 dependencies are all either relocated or already installed in the system
3764 installation.  If this is the case, it unpacks all containers to be
3765 installed into the user tree (to repeat, that's either 'TEXMFHOME' or
3766 the value of '--usertree') and add the respective packages to the user
3767 tree's 'texlive.tlpdb' (creating it if need be).
3769    Currently installing a collection in user mode installs all dependent
3770 packages, but in contrast to normal mode, does _not_ install dependent
3771 collections.  For example, in normal mode 'tlmgr install
3772 collection-context' would install 'collection-basic' and other
3773 collections, while in user mode, _only_ the packages mentioned in
3774 'collection-context' are installed.
3776 \x1f
3777 File: tlbuild.info,  Node: tlmgr user mode backup; restore; remove; update,  Next: tlmgr user mode generate; option; paper,  Prev: tlmgr user mode install,  Up: tlmgr USER MODE
3779 B.7.2 user mode backup; restore; remove; update
3780 -----------------------------------------------
3782 In user mode, these actions check that all packages to be acted on are
3783 installed in the user tree before proceeding; otherwise, they behave
3784 just as in normal mode.
3786 \x1f
3787 File: tlbuild.info,  Node: tlmgr user mode generate; option; paper,  Prev: tlmgr user mode backup; restore; remove; update,  Up: tlmgr USER MODE
3789 B.7.3 user mode generate; option; paper
3790 ---------------------------------------
3792 In user mode, these actions operate only on the user tree's
3793 configuration files and/or 'texlive.tlpdb'.  creates configuration files
3794 in user tree
3796 \x1f
3797 File: tlbuild.info,  Node: tlmgr CONFIGURATION FILE FOR TLMGR,  Next: tlmgr TAXONOMIES,  Prev: tlmgr USER MODE,  Up: tlmgr
3799 B.8 CONFIGURATION FILE FOR TLMGR
3800 ================================
3802 A small subset of the command line options can be set in a config file
3803 for 'tlmgr' which resides in 'TEXMFCONFIG/tlmgr/config'.  By default,
3804 the config file is in '~/.texliveYYYY/texmf-config/tlmgr/config'
3805 (replacing 'YYYY' with the year of your TeX Live installation).  This is
3806 _not_ 'TEXMFSYSVAR', so that the file is specific to a single user.
3808    In this file, empty lines and lines starting with # are ignored.  All
3809 other lines must look like
3811   key = value
3813    where the allowed keys are 'gui-expertmode' (value 0 or 1),
3814 'persistent-downloads' (value 0 or 1), 'auto-remove' (value 0 or 1), and
3815 'gui-lang' (value like in the command line option).
3817    'persistent-downloads', 'gui-lang', and 'auto-remove' correspond to
3818 the respective command line options of the same name.  'gui-expertmode'
3819 switches between the full GUI and a simplified GUI with only the
3820 important and mostly used settings.
3822 \x1f
3823 File: tlbuild.info,  Node: tlmgr TAXONOMIES,  Next: tlmgr MULTIPLE REPOSITORIES,  Prev: tlmgr CONFIGURATION FILE FOR TLMGR,  Up: tlmgr
3825 B.9 TAXONOMIES
3826 ==============
3828 tlmgr allows searching and listing of various categorizations, which we
3829 call _taxonomies_, as provided by an enhanced TeX Catalogue (available
3830 for testing at <http://az.ctan.org>).  This is useful when, for example,
3831 you don't know a specific package name but have an idea of the
3832 functionality you need; or when you want to see all packages relating to
3833 a given area.
3835    There are three different taxonomies, specified by the following
3836 options:
3838 '--keyword'
3840      The keywords, as specified at <http://az.ctan.org/keyword>.
3842 '--functionality'
3844      The "by-topic" categorization created by J\"urgen Fenn, as
3845      specified at <http://az.ctan.org/characterization/by-function>.
3847 '--characterization'
3849      Both the primary and secondary functionalities, as specified at
3850      <http://az.ctan.org/characterization/choose_dimen>.
3852 '--taxonomy'
3854      Operate on all the taxonomies.
3856    The taxonomies are updated nightly and stored within TeX Live, so
3857 Internet access is not required to search them.
3859    Examples:
3861   tlmgr search --taxonomy exercise      # check all taxonomies for "exercise"
3862   tlmgr search --taxonomy --word table  # check for "table" on its own
3863   tlmgr search --list --keyword         # dump entire keyword taxonomy
3864   tlmgr show --taxonomy pdftex          # show pdftex package information,
3865                                         #   including all taxonomy entries
3867 \x1f
3868 File: tlbuild.info,  Node: tlmgr MULTIPLE REPOSITORIES,  Next: tlmgr GUI FOR TLMGR,  Prev: tlmgr TAXONOMIES,  Up: tlmgr
3870 B.10 MULTIPLE REPOSITORIES
3871 ==========================
3873 The main TeX Live repository contains a vast array of packages.
3874 Nevertheless, additional local repositories can be useful to provide
3875 locally-installed resources, such as proprietary fonts and house styles.
3876 Also, alternative package repositories distribute packages that cannot
3877 or should not be included in TeX Live, for whatever reason.
3879    The simplest and most reliable method is to temporarily set the
3880 installation source to any repository (with the '-repository' or 'option
3881 repository' command line options), and perform your operations.
3883    When you are using multiple repositories over a sustained time,
3884 however, explicitly switching between them becomes inconvenient.  Thus,
3885 it's possible to tell 'tlmgr' about additional repositories you want to
3886 use.  The basic command is 'tlmgr repository add'.  The rest of this
3887 section explains further.
3889    When using multiple repositories, one of them has to be set as the
3890 main repository, which distributes most of the installed packages.  When
3891 you switch from a single repository installation to a multiple
3892 repository installation, the previous sole repository will be set as the
3893 main repository.
3895    By default, even if multiple repositories are configured, packages
3896 are _still_ _only_ installed from the main repository.  Thus, simply
3897 adding a second repository does not actually enable installation of
3898 anything from there.  You also have to specify which packages should be
3899 taken from the new repository, by specifying so-called "pinning" rules,
3900 described next.
3902 * Menu:
3904 * tlmgr Pinning::
3906 \x1f
3907 File: tlbuild.info,  Node: tlmgr Pinning,  Up: tlmgr MULTIPLE REPOSITORIES
3909 B.10.1 Pinning
3910 --------------
3912 When a package 'foo' is pinned to a repository, a package 'foo' in any
3913 other repository, even if it has a higher revision number, will not be
3914 considered an installable candidate.
3916    As mentioned above, by default everything is pinned to the main
3917 repository.  Let's now go through an example of setting up a second
3918 repository and enabling updates of a package from it.
3920    First, check that we have support for multiple repositories, and have
3921 only one enabled (as is the case by default):
3923  $ tlmgr repository list
3924  List of repositories (with tags if set):
3925    /var/www/norbert/tlnet
3927    Ok.  Let's add the 'tlcontrib' repository (this is a real repository,
3928 hosted at <http://tlcontrib.metatex.org>, maintained by Taco Hoekwater
3929 et al.), with the tag 'tlcontrib':
3931  $ tlmgr repository add http://tlcontrib.metatex.org/2012 tlcontrib
3933    Check the repository list again:
3935  $ tlmgr repository list
3936  List of repositories (with tags if set):
3937     http://tlcontrib.metatex.org/2012 (tlcontrib)
3938     /var/www/norbert/tlnet (main)
3940    Now we specify a pinning entry to get the package 'context' from
3941 'tlcontrib':
3943  $ tlmgr pinning add tlcontrib context
3945    Check that we can find 'context':
3947  $ tlmgr show context
3948  tlmgr: package repositories:
3949  ...
3950  package:     context
3951  repository:  tlcontrib/26867
3952  ...
3954    - install 'context':
3956  $ tlmgr install context
3957  tlmgr: package repositories:
3958  ...
3959  [1/1,  ??:??/??:??] install: context @tlcontrib [
3961    In the output here you can see that the 'context' package has been
3962 installed from the 'tlcontrib' repository ('@tlcontrib').
3964    Finally, 'tlmgr pinning' also supports removing certain or all
3965 packages from a given repository:
3967   $ tlmgr pinning remove tlcontrib context  # remove just context
3968   $ tlmgr pinning remove tlcontrib --all    # take nothing from tlcontrib
3970    A summary of the 'tlmgr pinning' actions is given above.
3972 \x1f
3973 File: tlbuild.info,  Node: tlmgr GUI FOR TLMGR,  Next: tlmgr MACHINE-READABLE OUTPUT,  Prev: tlmgr MULTIPLE REPOSITORIES,  Up: tlmgr
3975 B.11 GUI FOR TLMGR
3976 ==================
3978 The graphical user interface for 'tlmgr' needs Perl/Tk to be installed.
3979 For Windows the necessary modules are shipped within TeX Live, for all
3980 other (i.e., Unix-based) systems Perl/Tk (as well as Perl of course) has
3981 to be installed.  <http://tug.org/texlive/distro.html#perltk> has a list
3982 of invocations for some distros.
3984    When started with 'tlmgr gui' the graphical user interface will be
3985 shown.  The main window contains a menu bar, the main display, and a
3986 status area where messages normally shown on the console are displayed.
3988    Within the main display there are three main parts: the 'Display
3989 configuration' area, the list of packages, and the action buttons.
3991    Also, at the top right the currently loaded repository is shown; this
3992 also acts as a button and when clicked will try to load the default
3993 repository.  To load a different repository, see the 'tlmgr' menu item.
3995    Finally, the status area at the bottom of the window gives additional
3996 information about what is going on.
3998 * Menu:
4000 * tlmgr Main display::
4001 * tlmgr Menu bar::
4003 \x1f
4004 File: tlbuild.info,  Node: tlmgr Main display,  Next: tlmgr Menu bar,  Up: tlmgr GUI FOR TLMGR
4006 B.11.1 Main display
4007 -------------------
4009 * Menu:
4011 * tlmgr Display configuration area::
4012 * tlmgr Package list area::
4013 * tlmgr Main display action buttons::
4015 \x1f
4016 File: tlbuild.info,  Node: tlmgr Display configuration area,  Next: tlmgr Package list area,  Up: tlmgr Main display
4018 B.11.1.1 Display configuration area
4019 ...................................
4021 The first part of the main display allows you to specify (filter) which
4022 packages are shown.  By default, all are shown.  Changes here are
4023 reflected right away.
4025 Status
4027      Select whether to show all packages (the default), only those
4028      installed, only those _not_ installed, or only those with update
4029      available.
4031 Category
4033      Select which categories are shown: packages, collections, and/or
4034      schemes.  These are briefly explained in the *note DESCRIPTION:
4035      tlmgr DESCRIPTION. section above.
4037 Match
4039      Select packages matching for a specific pattern.  By default, this
4040      uses the same algorithm as 'tlmgr search', i.e., searches
4041      everything: descriptions, taxonomies, and/or filenames.  You can
4042      also select any subset for searching.
4044 Selection
4046      Select packages to those selected, those not selected, or all.
4047      Here, "selected" means that the checkbox in the beginning of the
4048      line of a package is ticked.
4050 Display configuration buttons
4052      To the right there are three buttons: select all packages, select
4053      none (a.k.a.  deselect all), and reset all these filters to the
4054      defaults, i.e., show all available.
4056 \x1f
4057 File: tlbuild.info,  Node: tlmgr Package list area,  Next: tlmgr Main display action buttons,  Prev: tlmgr Display configuration area,  Up: tlmgr Main display
4059 B.11.1.2 Package list area
4060 ..........................
4062 The second are of the main display lists all installed packages.  If a
4063 repository is loaded, those that are available but not installed are
4064 also listed.
4066    Double clicking on a package line pops up an informational window
4067 with further details: the long description, included files, etc.
4069    Each line of the package list consists of the following items:
4071 a checkbox
4073      Used to select particular packages; some of the action buttons (see
4074      below) work only on the selected packages.
4076 package name
4078      The name (identifier) of the package as given in the database.
4080 local revision (and version)
4082      If the package is installed the TeX Live revision number for the
4083      installed package will be shown.  If there is a catalogue version
4084      given in the database for this package, it will be shown in
4085      parentheses.  However, the catalogue version, unlike the TL
4086      revision, is not guaranteed to reflect what is actually installed.
4088 remote revision (and version)
4090      If a repository has been loaded the revision of the package in the
4091      repository (if present) is shown.  As with the local column, if a
4092      catalogue version is provided it will be displayed.  And also as
4093      with the local column, the catalogue version may be stale.
4095 short description
4097      The short description of the package.
4099 \x1f
4100 File: tlbuild.info,  Node: tlmgr Main display action buttons,  Prev: tlmgr Package list area,  Up: tlmgr Main display
4102 B.11.1.3 Main display action buttons
4103 ....................................
4105 Below the list of packages are several buttons:
4107 Update all installed
4109      This calls 'tlmgr update --all', i.e., tries to update all
4110      available packages.  Below this button is a toggle to allow
4111      reinstallation of previously removed packages as part of this
4112      action.
4114      The other four buttons only work on the selected packages, i.e.,
4115      those where the checkbox at the beginning of the package line is
4116      ticked.
4118 Update
4120      Update only the selected packages.
4122 Install
4124      Install the selected packages; acts like 'tlmgr install', i.e.,
4125      also installs dependencies.  Thus, installing a collection installs
4126      all its constituent packages.
4128 Remove
4130      Removes the selected packages; acts like 'tlmgr remove', i.e., it
4131      will also remove dependencies of collections (but not dependencies
4132      of normal packages).
4134 Backup
4136      Makes a backup of the selected packages; acts like 'tlmgr backup'.
4137      This action needs the option 'backupdir' set (see 'Options -'
4138      General>).
4140 \x1f
4141 File: tlbuild.info,  Node: tlmgr Menu bar,  Prev: tlmgr Main display,  Up: tlmgr GUI FOR TLMGR
4143 B.11.2 Menu bar
4144 ---------------
4146 The following entries can be found in the menu bar:
4148 'tlmgr' menu
4150      The items here load various repositories: the default as specified
4151      in the TeX Live database, the default network repository, the
4152      repository specified on the command line (if any), and an
4153      arbitrarily manually-entered one.  Also has the so-necessary 'quit'
4154      operation.
4156 'Options menu'
4158      Provides access to several groups of options: 'Paper'
4159      (configuration of default paper sizes), 'Platforms' (only on Unix,
4160      configuration of the supported/installed platforms), 'GUI Language'
4161      (select language used in the GUI interface), and 'General'
4162      (everything else).
4164      Several toggles are also here.  The first is 'Expert options',
4165      which is set by default.  If you turn this off, the next time you
4166      start the GUI a simplified screen will be shown that display only
4167      the most important functionality.  This setting is saved in the
4168      configuration file of 'tlmgr'; see *note CONFIGURATION FILE FOR
4169      TLMGR: tlmgr CONFIGURATION FILE FOR TLMGR. for details.
4171      The other toggles are all off by default: for debugging output, to
4172      disable the automatic installation of new packages, and to disable
4173      the automatic removal of packages deleted from the server.  Playing
4174      with the choices of what is or isn't installed may lead to an
4175      inconsistent TeX Live installation; e.g., when a package is
4176      renamed.
4178 'Actions menu'
4180      Provides access to several actions: update the filename database
4181      (aka 'ls-R', 'mktexlsr', 'texhash'), rebuild all formats
4182      ('fmtutil-sys --all'), update the font map database ('updmap-sys'),
4183      restore from a backup of a package, and use of symbolic links in
4184      system directories (not on Windows).
4186      The final action is to remove the entire TeX Live installation
4187      (also not on Windows).
4189 'Help menu'
4191      Provides access to the TeX Live manual (also on the web at
4192      <http://tug.org/texlive/doc.html>) and the usual "About" box.
4194 \x1f
4195 File: tlbuild.info,  Node: tlmgr MACHINE-READABLE OUTPUT,  Next: tlmgr AUTHORS AND COPYRIGHT,  Prev: tlmgr GUI FOR TLMGR,  Up: tlmgr
4197 B.12 MACHINE-READABLE OUTPUT
4198 ============================
4200 With the '--machine-readable' option, 'tlmgr' writes to stdout in the
4201 fixed line-oriented format described here, and the usual informational
4202 messages for human consumption are written to stderr (normally they are
4203 written to stdout).  The idea is that a program can get all the
4204 information it needs by reading stdout.
4206    Currently this option only applies to the *note update: tlmgr update
4207 [_option_]... [_pkg_]..., *note install: tlmgr install [_option_]...
4208 _pkg_..., and *note option: tlmgr option. actions.
4210 * Menu:
4212 * tlmgr Machine-readable 'update' and 'install' output::
4213 * tlmgr Machine-readable 'option' output::
4215 \x1f
4216 File: tlbuild.info,  Node: tlmgr Machine-readable 'update' and 'install' output,  Next: tlmgr Machine-readable 'option' output,  Up: tlmgr MACHINE-READABLE OUTPUT
4218 B.12.1 Machine-readable 'update' and 'install' output
4219 -----------------------------------------------------
4221 The output format is as follows:
4223   fieldname "\t" value
4224   ...
4225   "end-of-header"
4226   pkgname status localrev serverrev size runtime esttot
4227   ...
4228   "end-of-updates"
4229   other output from post actions, not in machine readable form
4231    The header section currently has two fields: 'location-url' (the
4232 repository source from which updates are being drawn), and 'total-bytes'
4233 (the total number of bytes to be downloaded).
4235    The _localrev_ and _serverrev_ fields for each package are the
4236 revision numbers in the local installation and server repository,
4237 respectively.  The _size_ field is the number of bytes to be downloaded,
4238 i.e., the size of the compressed tar file for a network installation,
4239 not the unpacked size.  The runtime and esttot fields are only present
4240 for updated and auto-install packages, and contain the currently passed
4241 time since start of installation/updates and the estimated total time.
4243    Line endings may be either LF or CRLF depending on the current
4244 platform.
4246 'location-url' _location_
4248      The _location_ may be a url (including 'file:///foo/bar/...'), or a
4249      directory name ('/foo/bar').  It is the package repository from
4250      which the new package information was drawn.
4252 'total-bytes' _count_
4254      The _count_ is simply a decimal number, the sum of the sizes of all
4255      the packages that need updating or installing (which are listed
4256      subsequently).
4258    Then comes a line with only the literal string 'end-of-header'.
4260    Each following line until a line with literal string 'end-of-updates'
4261 reports on one package.  The fields on each line are separated by a tab.
4262 Here are the fields.
4264 _pkgname_
4266      The TeX Live package identifier, with a possible platform suffix
4267      for executables.  For instance, 'pdftex' and 'pdftex.i386-linux'
4268      are given as two separate packages, one on each line.
4270 _status_
4272      The status of the package update.  One character, as follows:
4274      'd'
4276           The package was removed on the server.
4278      'f'
4280           The package was removed in the local installation, even though
4281           a collection depended on it.  (E.g., the user ran 'tlmgr
4282           remove --force'.)
4284      'u'
4286           Normal update is needed.
4288      'r'
4290           Reversed non-update: the locally-installed version is newer
4291           than the version on the server.
4293      'a'
4295           Automatically-determined need for installation, the package is
4296           new on the server and is (most probably) part of an installed
4297           collection.
4299      'i'
4301           Package will be installed and isn't present in the local
4302           installation (action install).
4304      'I'
4306           Package is already present but will be reinstalled (action
4307           install).
4309 _localrev_
4311      The revision number of the installed package, or '-' if it is not
4312      present locally.
4314 _serverrev_
4316      The revision number of the package on the server, or '-' if it is
4317      not present on the server.
4319 _size_
4321      The size in bytes of the package on the server.  The sum of all the
4322      package sizes is given in the 'total-bytes' header field mentioned
4323      above.
4325 _runtime_
4327      The run time since start of installations or updates.
4329 _esttot_
4331      The estimated total time.
4333 \x1f
4334 File: tlbuild.info,  Node: tlmgr Machine-readable 'option' output,  Prev: tlmgr Machine-readable 'update' and 'install' output,  Up: tlmgr MACHINE-READABLE OUTPUT
4336 B.12.2 Machine-readable 'option' output
4337 ---------------------------------------
4339 The output format is as follows:
4341   key "\t" value
4343    If a value is not saved in the database the string '(not set)' is
4344 shown.
4346    If you are developing a program that uses this output, and find that
4347 changes would be helpful, do not hesitate to write the mailing list.
4349 \x1f
4350 File: tlbuild.info,  Node: tlmgr AUTHORS AND COPYRIGHT,  Prev: tlmgr MACHINE-READABLE OUTPUT,  Up: tlmgr
4352 B.13 AUTHORS AND COPYRIGHT
4353 ==========================
4355 This script and its documentation were written for the TeX Live
4356 distribution (<http://tug.org/texlive>) and both are licensed under the
4357 GNU General Public License Version 2 or later.
4359 \x1f
4360 File: tlbuild.info,  Node: Index,  Prev: tlmgr,  Up: Top
4362 Index
4363 *****
4365 \0\b[index\0\b]
4366 * Menu:
4368 * --bindir configure option:             '--prefix' '--bindir' ....
4369                                                                (line  6)
4370 * --bindir configure option <1>:         '--enable-multiplatform'.
4371                                                                (line  6)
4372 * --build=HOST:                          Cross configuring.    (line  6)
4373 * --disable-all-packages configure option: Build one package.  (line  6)
4374 * --disable-all-pkgs:                    '--disable-all-pkgs'. (line  6)
4375 * --disable-bibtex8:                     Configure options for 'texk/bibtex-x'.
4376                                                                (line  9)
4377 * --disable-bibtexu:                     Configure options for 'texk/bibtex-x'.
4378                                                                (line 12)
4379 * --disable-dump-share:                  Configure options for 'texk/web2c'.
4380                                                                (line 27)
4381 * --disable-dvipdfmx:                    Configure options for 'texk/dvipdfm-x'.
4382                                                                (line 12)
4383 * --disable-etex-synctex:                Configure options for 'texk/web2c'.
4384                                                                (line 59)
4385 * --disable-ipc:                         Configure options for 'texk/web2c'.
4386                                                                (line 31)
4387 * --disable-largefile:                   '--disable-largefile'.
4388                                                                (line  6)
4389 * --disable-linked-scripts:              Configure options for 'texk/texlive'.
4390                                                                (line  6)
4391 * --disable-mf-nowin:                    Configure options for 'texk/web2c'.
4392                                                                (line 34)
4393 * --disable-missing:                     '--disable-missing'.  (line  6)
4394 * --disable-native-texlive-build:        '--disable-native-texlive-build'.
4395                                                                (line  6)
4396 * --disable-PROG:                        '--enable-PROG' '--disable-PROG'.
4397                                                                (line  6)
4398 * --disable-synctex:                     Configure options for 'texk/web2c'.
4399                                                                (line 64)
4400 * --disable-tex:                         Configure options for 'texk/web2c'.
4401                                                                (line 37)
4402 * --disable-web-progs:                   Configure options for 'texk/web2c'.
4403                                                                (line 41)
4404 * --disable-xdvipdfmx:                   Configure options for 'texk/dvipdfm-x'.
4405                                                                (line 15)
4406 * --enable-*win for Metafont window support: Configure options for 'texk/web2c'.
4407                                                                (line 55)
4408 * --enable-auto-core:                    Configure options for 'texk/web2c'.
4409                                                                (line 45)
4410 * --enable-compiler-warnings=LEVEL:      '--enable-compiler-warnings='LEVEL.
4411                                                                (line  6)
4412 * --enable-cxx-runtime-hack configure option: Macros for compilers.
4413                                                                (line 29)
4414 * --enable-etex:                         Configure options for 'texk/web2c'.
4415                                                                (line 37)
4416 * --enable-libtool-hack:                 Configure options for 'texk/web2c'.
4417                                                                (line 50)
4418 * --enable-maintainer-mode:              '--enable-maintainer-mode'.
4419                                                                (line  6)
4420 * --enable-maintainer-mode configure option: Build system tools.
4421                                                                (line 28)
4422 * --enable-mktextfm-default:             'kpathsea' library.   (line 20)
4423 * --enable-multiplatform:                '--enable-multiplatform'.
4424                                                                (line  6)
4425 * --enable-PROG:                         '--enable-PROG' '--disable-PROG'.
4426                                                                (line  6)
4427 * --enable-shared:                       '--enable-shared'.    (line  6)
4428 * --enable-silent-rules:                 '--enable-silent-rules'.
4429                                                                (line  6)
4430 * --enable-tex-synctex:                  Configure options for 'texk/web2c'.
4431                                                                (line 59)
4432 * --enable-texlive-build:                '--disable-native-texlive-build'.
4433                                                                (line 16)
4434 * --enable-xi2-scrolling:                Configure options for 'texk/xdvik'.
4435                                                                (line 13)
4436 * --enable-xindy-docs:                   Configure options for 'utils/xindy'.
4437                                                                (line 10)
4438 * --enable-xindy-rules:                  Configure options for 'utils/xindy'.
4439                                                                (line  6)
4440 * --host=HOST:                           Cross configuring.    (line  6)
4441 * --libdir configure option:             '--enable-multiplatform'.
4442                                                                (line  6)
4443 * --no-clean Build option:               Build problems.       (line  6)
4444 * --prefix configure option:             '--prefix' '--bindir' ....
4445                                                                (line  6)
4446 * --with-banner-add=STR:                 Configure options for 'texk/web2c'.
4447                                                                (line  6)
4448 * --with-clisp-runtime=FILENAME:         Configure options for 'utils/xindy'.
4449                                                                (line 14)
4450 * --with-editor=CMD:                     Configure options for 'texk/web2c'.
4451                                                                (line 11)
4452 * --with-fontconfig-includes=DIR:        Configure options for 'texk/web2c'.
4453                                                                (line 16)
4454 * --with-fontconfig-libdir=DIR:          Configure options for 'texk/web2c'.
4455                                                                (line 16)
4456 * --with-gs=FILENAME:                    Configure options for 'texk/xdvik'.
4457                                                                (line  6)
4458 * --with-LIB-includes=DIR, -libdir:      Library-specific configure options.
4459                                                                (line 16)
4460 * --with-libgs-includes, -libdir:        Configure options for 'texk/dvisvgm'.
4461                                                                (line 17)
4462 * --with-system-kpathsea:                'kpathsea' library.   (line 14)
4463 * --with-system-LIB:                     Adding a new generic library module.
4464                                                                (line 34)
4465 * --with-system-LIB <1>:                 Library-specific configure options.
4466                                                                (line  9)
4467 * --with-system-libgs:                   Configure options for 'texk/dvisvgm'.
4468                                                                (line  6)
4469 * --with-system-poppler:                 Configure options for system 'poppler'.
4470                                                                (line 11)
4471 * --with-system-xpdf:                    Configure options for system 'poppler'.
4472                                                                (line 15)
4473 * --with-xdvi-x-toolkit:                 'xdvik' package.      (line 21)
4474 * --with-xdvi-x-toolkit=KIT:             Configure options for 'texk/xdvik'.
4475                                                                (line  9)
4476 * --without-libgs:                       Configure options for 'texk/dvisvgm'.
4477                                                                (line 12)
4478 * --without-ln-s:                        '--without-ln-s'.     (line  6)
4479 * --without-x:                           '--without-x'.        (line  6)
4480 * -C configure option:                   Build in parallel.    (line 11)
4481 * -j make option:                        Build in parallel.    (line  6)
4482 * adapting TeX Live for distros:         Distro builds.        (line 54)
4483 * adding a new generic library:          Adding a new generic library module.
4484                                                                (line  6)
4485 * adding a new program:                  Adding a new program module.
4486                                                                (line  6)
4487 * adding a new TeX-specific library:     Adding a new TeX-specific library module.
4488                                                                (line  6)
4489 * adding to TeX Live:                    Extending TeX Live.   (line  6)
4490 * 'am/' top-level directory:             Top-level directories.
4491                                                                (line 14)
4492 * ANSI C:                                Declarations and definitions.
4493                                                                (line  6)
4494 * asymptote:                             Linked scripts.       (line 22)
4495 * asymptote <1>:                         'asymptote'.          (line  6)
4496 * Autoconf:                              Overview of build system.
4497                                                                (line  6)
4498 * autoconf macros:                       Autoconf macros.      (line  6)
4499 * Automake:                              Overview of build system.
4500                                                                (line  6)
4501 * biber:                                 Linked scripts.       (line 22)
4502 * bibtex-x:                              Configure options for 'texk/bibtex-x'.
4503                                                                (line  6)
4504 * bibtex8:                               Configure options for 'texk/bibtex-x'.
4505                                                                (line  6)
4506 * bibtexu:                               Configure options for 'texk/bibtex-x'.
4507                                                                (line  6)
4508 * BSD distro:                            Distro builds.        (line  6)
4509 * build directory, required:             Building.             (line 17)
4510 * build iteration:                       Build iteration.      (line  6)
4511 * build on demand:                       Build one package.    (line  6)
4512 * build one package:                     Build one package.    (line  6)
4513 * build problems:                        Build problems.       (line  6)
4514 * Build script:                          Building.             (line  6)
4515 * build system, design of:               Overview of build system.
4516                                                                (line  6)
4517 * BUILDCC, BUILDCFLAGS, ...:             Cross configuring.    (line 42)
4518 * building:                              Building.             (line  6)
4519 * building a distribution:               Build distribution.   (line  6)
4520 * building in parallel:                  Build in parallel.    (line  6)
4521 * C, ANSI, required:                     Declarations and definitions.
4522                                                                (line  6)
4523 * C99, avoided:                          Declarations and definitions.
4524                                                                (line  6)
4525 * cache file, for 'configure':           Build in parallel.    (line 11)
4526 * cache for 'configure':                 Build in parallel.    (line  6)
4527 * callexe.c:                             Macros for Windows.   (line 32)
4528 * CC:                                    Variables for configure.
4529                                                                (line 10)
4530 * CC_BUILD:                              Cross problems.       (line 13)
4531 * chktex:                                Declarations and definitions.
4532                                                                (line 18)
4533 * clisp:                                 Variables for configure.
4534                                                                (line 18)
4535 * CLISP:                                 Variables for configure.
4536                                                                (line 17)
4537 * CLISP <1>:                             Configure options for 'utils/xindy'.
4538                                                                (line 14)
4539 * 'clisp', required by 'xindy':          Prerequisites.        (line 30)
4540 * coding conventions:                    Coding conventions.   (line  6)
4541 * compilers, C and C++:                  Prerequisites.        (line  6)
4542 * config.guess, config.sub:              Top-level directories.
4543                                                                (line 30)
4544 * 'configure' options:                   Configure options.    (line  6)
4545 * 'configure' options, for 'bibtex-x':   Configure options for 'texk/bibtex-x'.
4546                                                                (line  6)
4547 * 'configure' options, for 'dvipdfm-x':  Configure options for 'texk/dvipdfm-x'.
4548                                                                (line  6)
4549 * 'configure' options, for 'dvisvgm':    Configure options for 'texk/dvisvgm'.
4550                                                                (line  6)
4551 * 'configure' options, for 'kpathsea':   Configure options for 'kpathsea'.
4552                                                                (line  6)
4553 * 'configure' options, for system 'poppler': Configure options for system 'poppler'.
4554                                                                (line  6)
4555 * 'configure' options, for 'texk/texlive': Configure options for 'texk/texlive'.
4556                                                                (line  6)
4557 * 'configure' options, for 'web2c':      Configure options for 'texk/web2c'.
4558                                                                (line  6)
4559 * 'configure' options, for 'xdvik':      Configure options for 'texk/xdvik'.
4560                                                                (line  6)
4561 * 'configure' options, for 'xindy':      Configure options for 'utils/xindy'.
4562                                                                (line  6)
4563 * 'configure' options, global:           Global configure options.
4564                                                                (line  6)
4565 * 'configure' options, library-specific: Library-specific configure options.
4566                                                                (line  6)
4567 * 'configure' options, program-specific: Program-specific configure options.
4568                                                                (line  6)
4569 * 'configure' variables:                 Variables for configure.
4570                                                                (line  6)
4571 * configuring, for cross compilation:    Cross configuring.    (line  6)
4572 * 'const':                               Const.                (line  6)
4573 * conventions, coding:                   Coding conventions.   (line  6)
4574 * CPPFLAGS:                              Variables for configure.
4575                                                                (line 12)
4576 * cross compilation:                     Cross compilation.    (line  6)
4577 * cross compilation configuring:         Cross configuring.    (line  6)
4578 * cross compilation problems:            Cross problems.       (line  6)
4579 * cross compilation, with host binary:   'xdvik' package.      (line 14)
4580 * ctangle:                               Cross problems.       (line 26)
4581 * CXX:                                   Variables for configure.
4582                                                                (line 11)
4583 * declarations and definitions, in source code: Declarations and definitions.
4584                                                                (line  6)
4585 * dependencies, with several output files: Build in parallel.  (line  6)
4586 * DESTDIR:                               '--prefix' '--bindir' ....
4587                                                                (line  9)
4588 * directories, for installation:         Installation directories.
4589                                                                (line  6)
4590 * directories, top-level:                Top-level directories.
4591                                                                (line  6)
4592 * discards qualifiers warning:           Const.                (line 30)
4593 * 'dist' and 'distcheck' targets for 'make': Build distribution.
4594                                                                (line  6)
4595 * distribution tarball, making:          Build distribution.   (line  6)
4596 * distro, building for:                  Distro builds.        (line  6)
4597 * dvipdfmx:                              Configure options for 'texk/dvipdfm-x'.
4598                                                                (line  6)
4599 * dvisvgm:                               Configure options for 'texk/dvisvgm'.
4600                                                                (line  6)
4601 * environment variables, for 'configure': Configure options.   (line 16)
4602 * exec_prefix:                           '--enable-multiplatform'.
4603                                                                (line  6)
4604 * extending TeX Live:                    Extending TeX Live.   (line  6)
4605 * 'extern' functions:                    Declarations and definitions.
4606                                                                (line 43)
4607 * 'extra/' top-level directory:          Top-level directories.
4608                                                                (line 39)
4609 * failure to build:                      Build problems.       (line  6)
4610 * 'ffcall', required by 'xindy':         Prerequisites.        (line 30)
4611 * flags, macros for library and header:  Macros for library and header flags.
4612                                                                (line  6)
4613 * 'fontconfig' library, required by 'xetex': Prerequisites.    (line 27)
4614 * FreeType:                              Prerequisites.        (line 11)
4615 * 'freetype' cross compiling:            Cross problems.       (line 13)
4616 * freetype library:                      'freetype' library.   (line  6)
4617 * freetype-config:                       'freetype' library.   (line  6)
4618 * freetype-config <1>:                   Variables for configure.
4619                                                                (line 24)
4620 * FT2_CONFIG:                            Variables for configure.
4621                                                                (line 21)
4622 * general setup macros:                  General setup macros. (line  6)
4623 * generic library module, adding:        Adding a new generic library module.
4624                                                                (line  6)
4625 * global 'configure' options:            Global configure options.
4626                                                                (line  6)
4627 * 'gmake', required:                     Prerequisites.        (line 11)
4628 * GNU 'make', required:                  Prerequisites.        (line 11)
4629 * GNU tools, needed for building:        Build system tools.   (line  6)
4630 * GNU/Linux distro:                      Distro builds.        (line  6)
4631 * Gnulib, used for common files:         Top-level directories.
4632                                                                (line 30)
4633 * ICU cross compiling:                   Cross problems.       (line 20)
4634 * ICU libraries:                         Variables for configure.
4635                                                                (line 24)
4636 * icu-config:                            Variables for configure.
4637                                                                (line 24)
4638 * ICU_CONFIG:                            Variables for configure.
4639                                                                (line 22)
4640 * infrastructure, tools needed for:      Build system tools.   (line  6)
4641 * install-tl, TeX Live installer:        Installing.           (line  8)
4642 * installation directories:              Installation directories.
4643                                                                (line  6)
4644 * installing:                            Installing.           (line  6)
4645 * interprocess communication:            Configure options for 'texk/web2c'.
4646                                                                (line 31)
4647 * introduction:                          Introduction.         (line  6)
4648 * iteration through sources, by 'configure' and 'make': Build iteration.
4649                                                                (line  6)
4650 * kpathsea library:                      'kpathsea' library.   (line  6)
4651 * kpathsea.ac:                           'kpathsea' library.   (line 20)
4652 * kpse-libpng-flags.m4:                  'png' library.        (line 43)
4653 * kpse-pkgs.m4:                          Overview of build system.
4654                                                                (line 30)
4655 * kpse-zlib-flags.m4:                    'zlib' library.       (line  6)
4656 * kpsewhich:                             Variables for configure.
4657                                                                (line 30)
4658 * KPSEWHICH:                             Variables for configure.
4659                                                                (line 29)
4660 * KPSE_ADD_FLAGS:                        Macros for library and header flags.
4661                                                                (line 18)
4662 * KPSE_ALL_SYSTEM_FLAGS:                 Adding a new generic library module.
4663                                                                (line 34)
4664 * KPSE_BASIC:                            General setup macros. (line  8)
4665 * KPSE_CHECK_LATEX:                      Macros for programs.  (line  8)
4666 * KPSE_CHECK_PDFLATEX:                   Macros for programs.  (line 15)
4667 * KPSE_CHECK_PERL:                       Macros for programs.  (line 18)
4668 * KPSE_CHECK_WIN32:                      Macros for Windows.   (line  9)
4669 * KPSE_COMMON:                           General setup macros. (line 16)
4670 * KPSE_COMPILER_VISIBILITY:              Macros for compilers. (line 18)
4671 * KPSE_COMPILER_WARNINGS:                Macros for compilers. (line  8)
4672 * KPSE_COND_MINGW32:                     Macros for Windows.   (line 19)
4673 * KPSE_COND_WIN32:                       Macros for Windows.   (line 15)
4674 * KPSE_COND_WIN32_WRAP:                  Macros for Windows.   (line 24)
4675 * kpse_cv_cxx_hack:                      Macros for compilers. (line 34)
4676 * kpse_cv_have_win32:                    Macros for Windows.   (line 10)
4677 * kpse_cv_visibility_c[xx]flags:         Macros for compilers. (line 25)
4678 * kpse_cv_warning_cflags:                Macros for compilers. (line 15)
4679 * KPSE_CXX_HACK:                         Macros for compilers. (line 28)
4680 * KPSE_ENABLE_PROG:                      Adding a new program module.
4681                                                                (line 14)
4682 * KPSE_LARGEFILE:                        Macros for libraries. (line  8)
4683 * KPSE_LIBPNG_FLAGS:                     Macros for library and header flags.
4684                                                                (line 10)
4685 * KPSE_LIBPNG_FLAGS <1>:                 'png' library.        (line 43)
4686 * kpse_libs_pkgs:                        Adding a new generic library module.
4687                                                                (line  6)
4688 * KPSE_LIB_FLAGS:                        Macros for library and header flags.
4689                                                                (line  6)
4690 * KPSE_LIB_FLAGS <1>:                    Adding a new generic library module.
4691                                                                (line 26)
4692 * KPSE_LIB_SYSTEM_FLAGS:                 Adding a new generic library module.
4693                                                                (line 34)
4694 * KPSE_PROG_LEX:                         Macros for programs.  (line 21)
4695 * KPSE_RESTORE_FLAGS:                    Macros for library and header flags.
4696                                                                (line 22)
4697 * kpse_texk_pkgs:                        Adding a new program module.
4698                                                                (line  6)
4699 * kpse_texlibs_pkgs:                     Adding a new TeX-specific library module.
4700                                                                (line 11)
4701 * KPSE_TRY_LIB:                          'png' library.        (line 18)
4702 * KPSE_TRY_LIB <1>:                      Adding a new generic library module.
4703                                                                (line 20)
4704 * KPSE_TRY_LIBXX:                        'png' library.        (line 31)
4705 * KPSE_TRY_LIBXX <1>:                    Adding a new generic library module.
4706                                                                (line 20)
4707 * kpse_utils_pkgs:                       Adding a new program module.
4708                                                                (line 10)
4709 * KPSE_WIN32_CALL:                       Macros for Windows.   (line 31)
4710 * KPSE_WITH_LIB:                         Adding a new generic library module.
4711                                                                (line 11)
4712 * KPSE_WITH_TEXLIB:                      Adding a new TeX-specific library module.
4713                                                                (line 14)
4714 * large file support:                    '--disable-largefile'.
4715                                                                (line  6)
4716 * LATEX:                                 Variables for configure.
4717                                                                (line 40)
4718 * layout of sources:                     Layout and infrastructure.
4719                                                                (line  6)
4720 * LFS (large file support):              '--disable-largefile'.
4721                                                                (line  6)
4722 * libfreetype:                           Variables for configure.
4723                                                                (line 24)
4724 * 'libfreetype', and 'const':            Const.                (line 21)
4725 * libpng library:                        'png' library.        (line  6)
4726 * library module, generic, adding:       Adding a new generic library module.
4727                                                                (line  6)
4728 * library module, TeX-specific, adding:  Adding a new TeX-specific library module.
4729                                                                (line  6)
4730 * library modules:                       Library modules.      (line  6)
4731 * library-specific 'configure' options:  Library-specific configure options.
4732                                                                (line  6)
4733 * libstc++, statically linking:          Macros for compilers. (line 29)
4734 * Libtool:                               Overview of build system.
4735                                                                (line  6)
4736 * libtool, hack for avoiding excessive linking: Configure options for 'texk/web2c'.
4737                                                                (line 50)
4738 * libXt:                                 Configure options for 'texk/web2c'.
4739                                                                (line 22)
4740 * linked scripts:                        Linked scripts.       (line  6)
4741 * linking C++ libraries statically:      Macros for compilers. (line 29)
4742 * lisp.run, lisp.exe:                    Configure options for 'utils/xindy'.
4743                                                                (line 14)
4744 * LittleEndian architectures:            Configure options for 'texk/web2c'.
4745                                                                (line 27)
4746 * 'm4/' top-level directory:             Top-level directories.
4747                                                                (line 14)
4748 * macros, for compilers:                 Macros for compilers. (line  6)
4749 * macros, for libraries:                 Macros for libraries. (line  6)
4750 * macros, for library and header flags:  Macros for library and header flags.
4751                                                                (line  6)
4752 * macros, for programs:                  Macros for programs.  (line  6)
4753 * macros, for Windows:                   Macros for Windows.   (line  6)
4754 * macros, general setup:                 General setup macros. (line  6)
4755 * MAKE:                                  Variables for configure.
4756                                                                (line 33)
4757 * make -t:                               Build system tools.   (line 39)
4758 * mf-nowin:                              Configure options for 'texk/web2c'.
4759                                                                (line 34)
4760 * 'mingw32':                             Cross configuring.    (line 27)
4761 * MINGW32, Automake conditional:         Macros for Windows.   (line 20)
4762 * mktex.ac:                              'kpathsea' library.   (line 20)
4763 * mktextfm:                              'kpathsea' library.   (line 20)
4764 * modules, for libraries:                Library modules.      (line  6)
4765 * modules, for programs:                 Program modules.      (line  6)
4766 * motif:                                 Configure options for 'texk/xdvik'.
4767                                                                (line  9)
4768 * native cross compilation:              Cross compilation.    (line 10)
4769 * one package, building:                 Build one package.    (line  6)
4770 * OpenGL, required for Asymptote:        'asymptote'.          (line  6)
4771 * operating system distribution, building for: Distro builds.  (line  6)
4772 * otangle:                               Cross problems.       (line 26)
4773 * overall build process:                 Building.             (line  6)
4774 * parallel build:                        Build in parallel.    (line  6)
4775 * paths, for installation:               Installation directories.
4776                                                                (line  6)
4777 * PDF files, size of:                    '--disable-largefile'.
4778                                                                (line 10)
4779 * PDFLATEX:                              Variables for configure.
4780                                                                (line 41)
4781 * PERL:                                  Variables for configure.
4782                                                                (line 39)
4783 * 'perl', required by 'web2c', etc.:     Prerequisites.        (line 19)
4784 * PKG_CONFIG:                            Variables for configure.
4785                                                                (line 23)
4786 * plain.tex, not in source tree:         Installing.           (line  8)
4787 * png library:                           'png' library.        (line  6)
4788 * poppler:                               Configure options for system 'poppler'.
4789                                                                (line  6)
4790 * PostScript files, size of:             '--disable-largefile'.
4791                                                                (line 10)
4792 * Preining, Norbert:                     Distro builds.        (line 54)
4793 * preloaded binaries:                    Configure options for 'texk/web2c'.
4794                                                                (line 45)
4795 * prerequisites for building:            Prerequisites.        (line  6)
4796 * problems with build:                   Build problems.       (line  6)
4797 * program module, adding:                Adding a new program module.
4798                                                                (line  6)
4799 * program modules:                       Program modules.      (line  6)
4800 * program-specific 'configure' options:  Program-specific configure options.
4801                                                                (line  6)
4802 * reautoconf:                            Build system tools.   (line 28)
4803 * requirements for building:             Prerequisites.        (line  6)
4804 * runscript.exe:                         Macros for Windows.   (line 25)
4805 * scripts, linked and not maintained:    Linked scripts.       (line  6)
4806 * scrolling:                             Configure options for 'texk/xdvik'.
4807                                                                (line 13)
4808 * SED:                                   Variables for configure.
4809                                                                (line 34)
4810 * setup macros, general:                 General setup macros. (line  6)
4811 * shared libraries, using vs. avoiding:  Distro builds.        (line 11)
4812 * size of PDF and PS files:              '--disable-largefile'.
4813                                                                (line 10)
4814 * size of source tree:                   Build one package.    (line 57)
4815 * source code declarations:              Declarations and definitions.
4816                                                                (line  6)
4817 * source directory building, not supported: Building.          (line 17)
4818 * source tree:                           Layout and infrastructure.
4819                                                                (line  6)
4820 * squeeze:                               Cross problems.       (line 13)
4821 * squeeze/configure.ac:                  'xdvik' package.      (line 14)
4822 * 'static' functions:                    Declarations and definitions.
4823                                                                (line 37)
4824 * static linking for C++:                Macros for compilers. (line 29)
4825 * stpcpy:                                Declarations and definitions.
4826                                                                (line 18)
4827 * Subversion repository:                 Build system tools.   (line 34)
4828 * support files, separate from build:    Installing.           (line  8)
4829 * symlinks, used for scripts:            Linked scripts.       (line  6)
4830 * synctex:                               Configure options for 'texk/web2c'.
4831                                                                (line 59)
4832 * synctex <1>:                           Configure options for 'texk/web2c'.
4833                                                                (line 64)
4834 * system distribution, building for:     Distro builds.        (line  6)
4835 * t1utils package:                       't1utils' package.    (line  6)
4836 * tangle:                                Cross problems.       (line 26)
4837 * tests, running:                        Overview of build system.
4838                                                                (line  6)
4839 * TeX-specific library module, adding:   Adding a new TeX-specific library module.
4840                                                                (line  6)
4841 * texlive.tlpdb, TeX Live database:      Installing.           (line  8)
4842 * tie:                                   Cross problems.       (line 26)
4843 * timestamps, in repository:             Build system tools.   (line 34)
4844 * tools, for building:                   Build system tools.   (line  6)
4845 * top-level directories:                 Top-level directories.
4846                                                                (line  6)
4847 * touching files to avoid rerunning:     Build system tools.   (line 39)
4848 * type cast, avoiding:                   Const.                (line 38)
4849 * use-commit-times, Subversion:          Build system tools.   (line 34)
4850 * variable declarations, in source code: Declarations and definitions.
4851                                                                (line 54)
4852 * variables for 'configure':             Variables for configure.
4853                                                                (line  6)
4854 * warning, discards qualifiers:          Const.                (line 30)
4855 * WARNING_C[XX]FLAGS:                    Macros for compilers. (line  9)
4856 * web2c program:                         Cross problems.       (line 13)
4857 * web2c.ac:                              Configure options for 'texk/web2c'.
4858                                                                (line 37)
4859 * wget:                                  Linked scripts.       (line 22)
4860 * WIN32, Automake conditional:           Macros for Windows.   (line 16)
4861 * WIN32_WRAP, Automake conditional:      Macros for Windows.   (line 25)
4862 * Windows, invoking scripts on:          Linked scripts.       (line  6)
4863 * Windows, macros for:                   Macros for Windows.   (line  6)
4864 * withenable.ac, for new modules:        Adding a new program module.
4865                                                                (line 14)
4866 * wrapper binary for scripts on Windows: Linked scripts.       (line  6)
4867 * X toolkit:                             Configure options for 'texk/web2c'.
4868                                                                (line 22)
4869 * X11 headers, and 'const':              Const.                (line 21)
4870 * X11, required by X clients:            Prerequisites.        (line 23)
4871 * xasy:                                  'asymptote'.          (line  6)
4872 * xaw:                                   Configure options for 'texk/xdvik'.
4873                                                                (line  9)
4874 * xdvik:                                 'xdvik' package.      (line  6)
4875 * xdvik <1>:                             Configure options for 'texk/xdvik'.
4876                                                                (line  6)
4877 * xdvipdfmx:                             Configure options for 'texk/dvipdfm-x'.
4878                                                                (line  6)
4879 * xindy:                                 Linked scripts.       (line 22)
4880 * xindy <1>:                             'xindy' package.      (line  6)
4881 * xindy <2>:                             Configure options for 'utils/xindy'.
4882                                                                (line  6)
4883 * 'xindy' cross compiling impossible:    Cross problems.       (line 33)
4884 * XInput:                                Configure options for 'texk/xdvik'.
4885                                                                (line 13)
4886 * Xlib:                                  Configure options for 'texk/web2c'.
4887                                                                (line 22)
4888 * xpdf as library:                       Configure options for system 'poppler'.
4889                                                                (line  6)
4890 * xz:                                    Linked scripts.       (line 22)
4891 * zlib library:                          'zlib' library.       (line  6)
4894 \x1f
4895 Tag Table:
4896 Node: Top\x7f1030
4897 Node: Introduction\x7f1948
4898 Node: Overview of build system\x7f3708
4899 Node: Prerequisites\x7f5772
4900 Node: Building\x7f7834
4901 Node: Build iteration\x7f9053
4902 Node: Build problems\x7f10125
4903 Node: Build in parallel\x7f10528
4904 Node: Build distribution\x7f11120
4905 Node: Build one package\x7f11691
4906 Node: Installing\x7f14467
4907 Node: Installation directories\x7f15482
4908 Node: Linked scripts\x7f17298
4909 Node: Distro builds\x7f18779
4910 Node: Layout and infrastructure\x7f21169
4911 Node: Build system tools\x7f21958
4912 Node: Top-level directories\x7f23967
4913 Node: Autoconf macros\x7f26008
4914 Node: General setup macros\x7f26709
4915 Node: Macros for programs\x7f27576
4916 Node: Macros for compilers\x7f28388
4917 Node: Macros for libraries\x7f29822
4918 Node: Macros for library and header flags\x7f30248
4919 Node: Macros for Windows\x7f32128
4920 Node: Library modules\x7f33705
4921 Node: 'png' library\x7f34202
4922 Node: 'zlib' library\x7f36495
4923 Node: 'freetype' library\x7f37016
4924 Node: 'kpathsea' library\x7f37550
4925 Node: Program modules\x7f38953
4926 Node: 't1utils' package\x7f39389
4927 Node: 'xindy' package\x7f39956
4928 Node: 'xdvik' package\x7f41141
4929 Node: 'asymptote'\x7f42220
4930 Node: Extending TeX Live\x7f42675
4931 Node: Adding a new program module\x7f43043
4932 Node: Adding a new generic library module\x7f44562
4933 Node: Adding a new TeX-specific library module\x7f46775
4934 Node: Configure options\x7f47462
4935 Node: Global configure options\x7f48844
4936 Node: '--disable-native-texlive-build'\x7f49412
4937 Node: '--prefix' '--bindir' ...\x7f50408
4938 Node: '--disable-largefile'\x7f50956
4939 Node: '--disable-missing'\x7f51649
4940 Node: '--enable-compiler-warnings='LEVEL\x7f52056
4941 Node: '--enable-cxx-runtime-hack'\x7f52801
4942 Node: '--enable-maintainer-mode'\x7f53234
4943 Node: '--enable-multiplatform'\x7f53769
4944 Node: '--enable-shared'\x7f54313
4945 Node: '--enable-silent-rules'\x7f54690
4946 Node: '--without-ln-s'\x7f55152
4947 Node: '--without-x'\x7f55509
4948 Node: Program-specific configure options\x7f55701
4949 Node: '--enable-PROG' '--disable-PROG'\x7f56364
4950 Node: '--disable-all-pkgs'\x7f56647
4951 Node: Configure options for 'texk/web2c'\x7f57641
4952 Node: Configure options for 'texk/bibtex-x'\x7f60165
4953 Node: Configure options for 'texk/dvipdfm-x'\x7f60714
4954 Node: Configure options for 'texk/dvisvgm'\x7f61493
4955 Node: Configure options for 'texk/texlive'\x7f62385
4956 Node: Configure options for 'texk/xdvik'\x7f62812
4957 Node: Configure options for 'utils/xindy'\x7f63422
4958 Node: Library-specific configure options\x7f64327
4959 Node: Configure options for 'kpathsea'\x7f65342
4960 Node: Configure options for system 'poppler'\x7f66055
4961 Node: Variables for configure\x7f66852
4962 Node: Cross compilation\x7f68280
4963 Node: Cross configuring\x7f69579
4964 Node: Cross problems\x7f71252
4965 Node: Coding conventions\x7f72899
4966 Node: Declarations and definitions\x7f73568
4967 Node: Const\x7f75750
4968 Node: install-tl\x7f77613
4969 Node: install-tl NAME\x7f77954
4970 Node: install-tl SYNOPSIS\x7f78112
4971 Node: install-tl DESCRIPTION\x7f78320
4972 Node: install-tl REFERENCES\x7f79321
4973 Node: install-tl OPTIONS\x7f79837
4974 Ref: install-tl *-gui* [[=]_module_]\x7f80191
4975 Ref: install-tl 'text'\x7f80400
4976 Ref: install-tl 'wizard'\x7f80523
4977 Ref: install-tl 'perltk'\x7f80677
4978 Ref: install-tl *-no-gui*\x7f81111
4979 Ref: install-tl *-lang* _llcode_\x7f81192
4980 Ref: install-tl *-repository* _url|path_\x7f81879
4981 Ref: install-tl *-select-repository*\x7f83690
4982 Ref: install-tl *-all-options*\x7f84126
4983 Ref: install-tl *-custom-bin* _path_\x7f84433
4984 Ref: install-tl *-debug-translation*\x7f85088
4985 Ref: install-tl *-force-platform* _platform_\x7f85307
4986 Ref: install-tl *-help*, *--help*, *-?*\x7f85551
4987 Ref: install-tl *-in-place*\x7f85944
4988 Ref: install-tl *-logfile* _file_\x7f86471
4989 Ref: install-tl *-no-cls*\x7f86822
4990 Ref: install-tl *-non-admin*\x7f86953
4991 Ref: install-tl *--persistent-downloads*\x7f87058
4992 Ref: install-tl *--no-persistent-downloads*\x7f87086
4993 Ref: install-tl *-portable*\x7f87694
4994 Ref: install-tl *-print-platform*\x7f87833
4995 Ref: install-tl *-profile* _profile_\x7f88026
4996 Ref: install-tl *-q*\x7f89520
4997 Ref: install-tl *-scheme* _scheme_\x7f89582
4998 Ref: install-tl *-v*\x7f90056
4999 Ref: install-tl *-version*, *--version*\x7f90217
5000 Node: install-tl ENVIRONMENT VARIABLES\x7f90348
5001 Ref: install-tl 'TEXLIVE_INSTALL_ENV_NOCHECK'\x7f90737
5002 Ref: install-tl 'TEXLIVE_INSTALL_NO_CONTEXT_CACHE'\x7f90939
5003 Ref: install-tl 'TEXLIVE_INSTALL_PREFIX'\x7f91045
5004 Ref: install-tl 'TEXLIVE_INSTALL_TEXMFCONFIG'\x7f91076
5005 Ref: install-tl 'TEXLIVE_INSTALL_TEXMFHOME'\x7f91105
5006 Ref: install-tl 'TEXLIVE_INSTALL_TEXMFLOCAL'\x7f91135
5007 Ref: install-tl 'TEXLIVE_INSTALL_TEXMFSYSCONFIG'\x7f91169
5008 Ref: install-tl 'TEXLIVE_INSTALL_TEXMFSYSVAR'\x7f91200
5009 Ref: install-tl 'TEXLIVE_INSTALL_TEXMFVAR'\x7f91228
5010 Ref: install-tl 'NOPERLDOC'\x7f91283
5011 Node: install-tl AUTHORS AND COPYRIGHT\x7f91347
5012 Node: tlmgr\x7f91705
5013 Node: tlmgr NAME\x7f92142
5014 Node: tlmgr SYNOPSIS\x7f92267
5015 Node: tlmgr DESCRIPTION\x7f92457
5016 Node: tlmgr EXAMPLES\x7f93553
5017 Ref: tlmgr 'tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet'\x7f93844
5018 Ref: tlmgr 'tlmgr update --list'\x7f94025
5019 Ref: tlmgr 'tlmgr update --all'\x7f94118
5020 Ref: tlmgr 'tlmgr info' _pkg_\x7f94274
5021 Node: tlmgr OPTIONS\x7f94480
5022 Ref: tlmgr *--repository* _url|path_\x7f95000
5023 Ref: tlmgr *--gui* [_action_]\x7f95725
5024 Ref: tlmgr *--gui-lang* _llcode_\x7f96132
5025 Ref: tlmgr *--debug-translation*\x7f96815
5026 Ref: tlmgr *--machine-readable*\x7f97018
5027 Ref: tlmgr *--no-execute-actions*\x7f97286
5028 Ref: tlmgr *--package-logfile* _file_\x7f97479
5029 Ref: tlmgr *--pause*\x7f97734
5030 Ref: tlmgr *--persistent-downloads*\x7f97889
5031 Ref: tlmgr *--no-persistent-downloads*\x7f97917
5032 Ref: tlmgr *--pin-file*\x7f98411
5033 Ref: tlmgr *--usermode*\x7f98629
5034 Ref: tlmgr *--usertree* _dir_\x7f98749
5035 Node: tlmgr ACTIONS\x7f99299
5036 Node: tlmgr help\x7f100531
5037 Node: tlmgr version\x7f101007
5038 Node: tlmgr backup [--clean[=_N_]] [--backupdir _dir_] [--all | _pkg_]...\x7f101325
5039 Ref: tlmgr *--backupdir* _directory_\x7f102419
5040 Ref: tlmgr *--all*\x7f102616
5041 Ref: tlmgr *--clean*[=_N_]\x7f102838
5042 Ref: tlmgr *--dry-run*\x7f103135
5043 Node: tlmgr candidates _pkg_\x7f103255
5044 Ref: tlmgr *candidates _pkg_* 1\x7f103542
5045 Node: tlmgr check [_option_]... [files|depends|executes|runfiles|all]\x7f103686
5046 Ref: tlmgr *files*\x7f104129
5047 Ref: tlmgr *depends*\x7f104264
5048 Ref: tlmgr *executes*\x7f104606
5049 Ref: tlmgr *runfiles*\x7f104724
5050 Ref: tlmgr *--use-svn*\x7f104836
5051 Node: tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]]\x7f104953
5052 Node: tlmgr dump-tlpdb [--local|--remote]\x7f107025
5053 Ref: tlmgr *--local*\x7f107535
5054 Ref: tlmgr *--remote*\x7f107574
5055 Node: tlmgr generate [_option_]... _what_\x7f107996
5056 Ref: tlmgr *generate language*\x7f108237
5057 Ref: tlmgr *generate language.dat*\x7f108262
5058 Ref: tlmgr *generate language.def*\x7f108287
5059 Ref: tlmgr *generate language.dat.lua*\x7f108316
5060 Ref: tlmgr *generate fmtutil*\x7f108336
5061 Ref: tlmgr *--dest* _output_file_\x7f110573
5062 Ref: tlmgr *--localcfg* _local_conf_file_\x7f111149
5063 Ref: tlmgr *--rebuild-sys*\x7f111272
5064 Node: tlmgr gui\x7f112133
5065 Node: tlmgr info [_option_...] [collections|schemes|_pkg_...]\x7f112377
5066 Ref: tlmgr *--list*\x7f113582
5067 Ref: tlmgr *--only-installed*\x7f113861
5068 Ref: tlmgr *--taxonomy*\x7f114076
5069 Ref: tlmgr *--keyword*\x7f114088
5070 Ref: tlmgr *--functionality*\x7f114106
5071 Ref: tlmgr *--characterization*\x7f114127
5072 Node: tlmgr init-usertree\x7f114340
5073 Node: tlmgr install [_option_]... _pkg_...\x7f114766
5074 Ref: tlmgr *--file*\x7f115130
5075 Ref: tlmgr *--reinstall*\x7f115356
5076 Ref: tlmgr *--no-depends*\x7f115736
5077 Ref: tlmgr *--no-depends-at-all*\x7f115895
5078 Ref: tlmgr *--dry-run* 1\x7f116293
5079 Ref: tlmgr *--force*\x7f116411
5080 Node: tlmgr option\x7f116617
5081 Ref: tlmgr *option [show]*\x7f116790
5082 Ref: tlmgr *option showall*\x7f116808
5083 Ref: tlmgr *option _key_ [_value_]*\x7f116834
5084 Node: tlmgr paper\x7f120682
5085 Ref: tlmgr *paper [a4|letter]*\x7f120867
5086 Ref: tlmgr *[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|--list]*\x7f120941
5087 Node: tlmgr path [--w32mode=user|admin] [add|remove]\x7f121968
5088 Node: tlmgr pinning\x7f123451
5089 Ref: tlmgr 'pinning show'\x7f123758
5090 Ref: tlmgr 'pinning add' _repo_ _pkgglob_...\x7f123831
5091 Ref: tlmgr 'pinning remove' _repo_ _pkgglob_...\x7f123950
5092 Ref: tlmgr 'pinning remove _repo_ --all'\x7f124103
5093 Node: tlmgr platform list|add|remove _platform_...\x7f124157
5094 Node: tlmgr platform set _platform_\x7f124405
5095 Node: tlmgr platform set auto\x7f124633
5096 Ref: tlmgr *--dry-run* 2\x7f125750
5097 Node: tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]...\x7f125859
5098 Node: tlmgr print-platform\x7f127161
5099 Node: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]]\x7f127633
5100 Ref: tlmgr *--all* 1\x7f128529
5101 Ref: tlmgr *--backupdir* _directory_ 1\x7f128723
5102 Ref: tlmgr *--dry-run* 3\x7f128879
5103 Ref: tlmgr *--force* 1\x7f128996
5104 Node: tlmgr remove [_option_]... _pkg_...\x7f129024
5105 Ref: tlmgr *--no-depends* 1\x7f129547
5106 Ref: tlmgr *--no-depends-at-all* 1\x7f129609
5107 Ref: tlmgr *--force* 2\x7f129665
5108 Ref: tlmgr *--dry-run* 4\x7f130137
5109 Node: tlmgr repository\x7f130244
5110 Ref: tlmgr *repository list*\x7f130452
5111 Ref: tlmgr *repository list _path|tag_*\x7f130482
5112 Ref: tlmgr *repository add _path_ [_tag_]*\x7f130515
5113 Ref: tlmgr *repository remove _path|tag_*\x7f130547
5114 Ref: tlmgr *repository set _path_[#_tag_] [_path_[#_tag_] ...]*\x7f130601
5115 Node: tlmgr search [_option_...] _what_\x7f131685
5116 Node: tlmgr search [_option_...] --file _what_\x7f132196
5117 Node: tlmgr search [_option_...] --taxonomy _what_\x7f132447
5118 Node: tlmgr search [_option_...] --keyword _what_\x7f132758
5119 Node: tlmgr search [_option_...] --functionality _what_\x7f133076
5120 Node: tlmgr search [_option_...] --characterization _what_\x7f133414
5121 Node: tlmgr search [_option_...] --all _what_\x7f133754
5122 Ref: tlmgr *--global*\x7f134202
5123 Ref: tlmgr *--word*\x7f134314
5124 Ref: tlmgr *--list* 1\x7f134553
5125 Ref: tlmgr *--file* 1\x7f134899
5126 Ref: tlmgr *--taxonomy* 1\x7f134956
5127 Ref: tlmgr *--keyword* 1\x7f134968
5128 Ref: tlmgr *--functionality* 1\x7f134986
5129 Ref: tlmgr *--characterization* 1\x7f135007
5130 Ref: tlmgr *--all* 2\x7f135162
5131 Node: tlmgr uninstall\x7f135245
5132 Ref: tlmgr *--force* 3\x7f135499
5133 Node: tlmgr update [_option_]... [_pkg_]...\x7f135555
5134 Ref: tlmgr *--all* 3\x7f135926
5135 Ref: tlmgr *--self*\x7f137667
5136 Ref: tlmgr *--dry-run* 5\x7f138431
5137 Ref: tlmgr *--list* [_pkg_]\x7f138608
5138 Ref: tlmgr *--exclude* _pkg_\x7f139297
5139 Ref: tlmgr *--no-auto-remove* [_pkg_]...\x7f139990
5140 Ref: tlmgr *--no-auto-install* [_pkg_]...\x7f140441
5141 Ref: tlmgr *--reinstall-forcibly-removed*\x7f141097
5142 Ref: tlmgr *--backup* and *--backupdir* _directory_\x7f141661
5143 Ref: tlmgr *--no-depends* 2\x7f142842
5144 Ref: tlmgr *--no-depends-at-all* 2\x7f143045
5145 Ref: tlmgr *--force* 4\x7f143101
5146 Node: tlmgr USER MODE\x7f143527
5147 Node: tlmgr user mode install\x7f146338
5148 Node: tlmgr user mode backup; restore; remove; update\x7f147285
5149 Node: tlmgr user mode generate; option; paper\x7f147727
5150 Node: tlmgr CONFIGURATION FILE FOR TLMGR\x7f148103
5151 Node: tlmgr TAXONOMIES\x7f149194
5152 Ref: tlmgr '--keyword' 2\x7f149820
5153 Ref: tlmgr '--functionality' 2\x7f149905
5154 Ref: tlmgr '--characterization' 2\x7f150061
5155 Ref: tlmgr '--taxonomy' 2\x7f150202
5156 Node: tlmgr MULTIPLE REPOSITORIES\x7f150743
5157 Node: tlmgr Pinning\x7f152464
5158 Node: tlmgr GUI FOR TLMGR\x7f154439
5159 Node: tlmgr Main display\x7f155661
5160 Node: tlmgr Display configuration area\x7f155913
5161 Ref: tlmgr Status\x7f156274
5162 Ref: tlmgr Category\x7f156438
5163 Ref: tlmgr Match\x7f156624
5164 Ref: tlmgr Selection\x7f156884
5165 Ref: tlmgr Display configuration buttons\x7f157088
5166 Node: tlmgr Package list area\x7f157271
5167 Ref: tlmgr a checkbox\x7f157855
5168 Ref: tlmgr package name\x7f157991
5169 Ref: tlmgr local revision (and version)\x7f158090
5170 Ref: tlmgr remote revision (and version)\x7f158465
5171 Ref: tlmgr short description\x7f158762
5172 Node: tlmgr Main display action buttons\x7f158807
5173 Ref: tlmgr Update all installed\x7f159073
5174 Ref: tlmgr Update\x7f159445
5175 Ref: tlmgr Install\x7f159495
5176 Ref: tlmgr Remove\x7f159681
5177 Ref: tlmgr Backup\x7f159859
5178 Node: tlmgr Menu bar\x7f160016
5179 Ref: tlmgr 'tlmgr' menu\x7f160213
5180 Ref: tlmgr 'Options menu'\x7f160521
5181 Ref: tlmgr 'Actions menu'\x7f161604
5182 Ref: tlmgr 'Help menu'\x7f162032
5183 Node: tlmgr MACHINE-READABLE OUTPUT\x7f162165
5184 Node: tlmgr Machine-readable 'update' and 'install' output\x7f162981
5185 Ref: tlmgr 'location-url' _location_\x7f164263
5186 Ref: tlmgr 'total-bytes' _count_\x7f164479
5187 Ref: tlmgr _pkgname_\x7f164889
5188 Ref: tlmgr _status_\x7f165099
5189 Ref: tlmgr 'd'\x7f165177
5190 Ref: tlmgr 'f'\x7f165237
5191 Ref: tlmgr 'u'\x7f165416
5192 Ref: tlmgr 'r'\x7f165462
5193 Ref: tlmgr 'a'\x7f165585
5194 Ref: tlmgr 'i'\x7f165763
5195 Ref: tlmgr 'I'\x7f165882
5196 Ref: tlmgr _localrev_\x7f165984
5197 Ref: tlmgr _serverrev_\x7f166091
5198 Ref: tlmgr _size_\x7f166203
5199 Ref: tlmgr _runtime_\x7f166372
5200 Ref: tlmgr _esttot_\x7f166442
5201 Node: tlmgr Machine-readable 'option' output\x7f166475
5202 Node: tlmgr AUTHORS AND COPYRIGHT\x7f166993
5203 Node: Index\x7f167340
5204 \x1f
5205 End Tag Table