The Tcl package contains the Tool Command Language, a robust general-purpose scripting language. The Expect package is written in the Tcl language.
This package and the next two (Expect and DejaGNU) are installed to support running the test suites for GCC and binutils and other packages. Installing three packages for testing purposes may seem excessive, but it is very reassuring, if not essential, to know that the most important tools are working properly. These packages are required to run the test suites in Chapter 8.
Note that the Tcl package used here is a minimal version needed to run the LFS tests. For the full package, see the BLFS Tcl procedures.
Prepare Tcl for compilation:
SRCDIR=$(pwd) cd unix ./configure --prefix=/usr \ --mandir=/usr/share/man \ $([ "$(uname -m)" = x86_64 ] && echo --enable-64bit)
The meaning of the configure options:
$([ "$(uname
-m)" = x86_64 ] && echo
--enable-64bit)
The construct $(<shell
command>)
is replaced by the output of the
shell command. Here this output is empty if running on a 32
bit machine, and is --enable-64bit
if running on a
64 bit machine.
Build the package:
make sed -e "s|$SRCDIR/unix|/usr/lib|" \ -e "s|$SRCDIR|/usr/include|" \ -i tclConfig.sh sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.1|/usr/lib/tdbc1.1.1|" \ -e "s|$SRCDIR/pkgs/tdbc1.1.1/generic|/usr/include|" \ -e "s|$SRCDIR/pkgs/tdbc1.1.1/library|/usr/lib/tcl8.6|" \ -e "s|$SRCDIR/pkgs/tdbc1.1.1|/usr/include|" \ -i pkgs/tdbc1.1.1/tdbcConfig.sh sed -e "s|$SRCDIR/unix/pkgs/itcl4.2.0|/usr/lib/itcl4.2.0|" \ -e "s|$SRCDIR/pkgs/itcl4.2.0/generic|/usr/include|" \ -e "s|$SRCDIR/pkgs/itcl4.2.0|/usr/include|" \ -i pkgs/itcl4.2.0/itclConfig.sh unset SRCDIR
The various “sed” instructions after the “make” command removes references to the build directory from the configuration files and replaces them with the install directory. This is not mandatory for the remainder of LFS, but may be needed in case a package built later uses Tcl.
Install the package:
make install
Make the installed library writable so debugging symbols can be removed later:
chmod -v u+w /usr/lib/libtcl8.6.so
Install Tcl's headers. The next package, Expect, requires them.
make install-private-headers
Now make a necessary symbolic link:
ln -sfv tclsh8.6 /usr/bin/tclsh