tlbuild: Build system tools
6.1 Build system tools
======================
As mentioned above (⇒Prerequisites), a normal build has few
requirements. On the other hand, if you want to modify the TeX Live
infrastructure sources, such as 'configure.ac' or 'Makefile.am' files,
you will need to have several additional tools installed.
In general, the TL build system uses the latest released versions of
the GNU build tools, installed directly from the original GNU releases
(e.g., by building them with 'configure --prefix=/usr/local/gnu' and
having 'PATH' start with '/usr/local/gnu/bin'). We have found that
trying to use the versions of these tools packaged for distros causes
many extra hassles, so don't do that, tempting as it may be.
Currently the versions we use are:
autoconf (GNU Autoconf) 2.69
automake (GNU automake) 1.16.2
bison (GNU Bison) 3.7.4
flex 2.6.0
ltmain.sh (GNU libtool) 2.4.6
m4 (GNU M4) 1.4.18
makeinfo (GNU texinfo) 6.7
These versions should be used to update the generated files (e.g.,
'configure' or 'Makefile.in') in all or parts of the TL tree after their
dependencies have been changed. This can be done explicitly with the
top-level 'reautoconf' script or implicitly by using the configure
option '--enable-maintainer-mode'.
It has often turned out that the bison and flex versions are not
critical; however, the autotools versions are. If you don't have the
given versions, get them before modifying the build infrastructure.
The files in the Subversion repository (see
<https://tug.org/texlive/svn>) are all up to date (barring bugs). For
this to be reflected by their timestamps in your checkout, be sure to
set 'use-commit-times=yes' in '~/.subversion/config' or the equivalent.
If timestamps are wrong, you may also be able to avoid unnecessary
runs of 'bison', 'flex', or 'makeinfo' with 'touch' of the generated
('.c', '.h', or '.info') files. With '--enable-maintainer-mode' it may
also be necessary to 'touch' first 'aclocal.m4', then 'configure' and
'config.h.in' (or 'c-auto.in'), and finally all 'Makefile.in' files.