lfs/chapter08/tcl.xml
2024-06-09 19:47:30 +08:00

207 lines
7.0 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
<!ENTITY tdbc-ver "1.1.7">
<!ENTITY itcl-ver "4.2.4">
]>
<sect1 id="ch-system-tcl" role="wrap">
<?dbhtml filename="tcl.html"?>
<sect1info condition="script">
<productname>tcl</productname>
<productnumber>&tcl-version;</productnumber>
<address>&tcl-url;</address>
</sect1info>
<title>Tcl-&tcl-version;</title>
<indexterm zone="ch-system-tcl">
<primary sortas="a-Tcl">Tcl</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The <application>Tcl</application> package contains the Tool Command Language,
a robust general-purpose scripting language. The <application>Expect</application> package
is written in <application>Tcl</application> (pronounced "tickle").</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&tcl-tmp-sbu;</seg>
<seg>&tcl-tmp-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Tcl</title>
<para>This package and the next two (Expect and DejaGNU) are
installed to support running the test suites for Binutils, GCC 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.</para>
<para>Prepare Tcl for compilation:</para>
<screen><userinput remap="configure">SRCDIR=$(pwd)
cd unix
./configure --prefix=/usr \
--mandir=/usr/share/man \
--disable-rpath</userinput></screen>
<variablelist>
<title>The meaning of the new configure parameters:</title>
<varlistentry>
<term><parameter>--disable-rpath</parameter></term>
<listitem>
<para>This parameter prevents hard coding library search paths
(rpath) into the binary executable files and shared libraries.
This package does not need rpath for an installation into the
standard location, and rpath may sometimes cause unwanted effects
or even security issues.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Build the package:</para>
<screen><userinput remap="make">make
sed -e "s|$SRCDIR/unix|/usr/lib|" \
-e "s|$SRCDIR|/usr/include|" \
-i tclConfig.sh
sed -e "s|$SRCDIR/unix/pkgs/tdbc&tdbc-ver;|/usr/lib/tdbc&tdbc-ver;|" \
-e "s|$SRCDIR/pkgs/tdbc&tdbc-ver;/generic|/usr/include|" \
-e "s|$SRCDIR/pkgs/tdbc&tdbc-ver;/library|/usr/lib/tcl8.6|" \
-e "s|$SRCDIR/pkgs/tdbc&tdbc-ver;|/usr/include|" \
-i pkgs/tdbc&tdbc-ver;/tdbcConfig.sh
sed -e "s|$SRCDIR/unix/pkgs/itcl&itcl-ver;|/usr/lib/itcl&itcl-ver;|" \
-e "s|$SRCDIR/pkgs/itcl&itcl-ver;/generic|/usr/include|" \
-e "s|$SRCDIR/pkgs/itcl&itcl-ver;|/usr/include|" \
-i pkgs/itcl&itcl-ver;/itclConfig.sh
unset SRCDIR</userinput></screen>
<para>The various <quote>sed</quote> instructions after the
<quote>make</quote> command remove references to the build directory from
the configuration files and replace them with the install directory.
This is not mandatory for the remainder of LFS, but may be needed if a
package built later uses Tcl.</para>
<para>To test the results, issue:</para>
<screen><userinput remap="test">make test</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
<para>Make the installed library writable so debugging symbols can
be removed later:</para>
<screen><userinput remap="install">chmod -v u+w /usr/lib/libtcl&tcl-major-version;.so</userinput></screen>
<para>Install Tcl's headers. The next package, Expect, requires them.</para>
<screen><userinput remap="install">make install-private-headers</userinput></screen>
<para>Now make a necessary symbolic link:</para>
<screen><userinput remap="install">ln -sfv tclsh&tcl-major-version; /usr/bin/tclsh</userinput></screen>
<para>Rename a man page that conflicts with a Perl man page:</para>
<screen><userinput remap="install">mv /usr/share/man/man3/{Thread,Tcl_Thread}.3</userinput></screen>
<para>Optionally, install the documentation by issuing
the following commands:</para>
<screen><userinput remap="install">cd ..
tar -xf ../tcl&tcl-version;-html.tar.gz --strip-components=1
mkdir -v -p /usr/share/doc/tcl-&tcl-version;
cp -v -r ./html/* /usr/share/doc/tcl-&tcl-version;</userinput></screen>
</sect2>
<sect2 id="contents-tcl" role="content">
<title>Contents of Tcl</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed library</segtitle>
<seglistitem>
<seg>
tclsh (link to tclsh&tcl-major-version;) and
tclsh&tcl-major-version;
</seg>
<seg>
libtcl&tcl-major-version;.so and
libtclstub&tcl-major-version;.a
</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="tclsh&tcl-major-version;">
<term><command>tclsh&tcl-major-version;</command></term>
<listitem>
<para>The Tcl command shell</para>
<indexterm zone="ch-system-tcl tclsh&tcl-major-version;">
<primary sortas="b-tclsh&tcl-major-version;">tclsh&tcl-major-version;</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="tclsh">
<term><command>tclsh</command></term>
<listitem>
<para>A link to tclsh&tcl-major-version;</para>
<indexterm zone="ch-system-tcl tclsh">
<primary sortas="b-tclsh">tclsh</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libtcl&tcl-major-version;.so">
<term><filename class="libraryfile">libtcl&tcl-major-version;.so</filename></term>
<listitem>
<para>The Tcl library</para>
<indexterm zone="ch-system-tcl libtcl&tcl-major-version;.so">
<primary sortas="c-libtcl&tcl-major-version;.so">libtcl&tcl-major-version;.so</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libtclstub&tcl-major-version;.a">
<term><filename class="libraryfile">libtclstub&tcl-major-version;.a</filename></term>
<listitem>
<para>The Tcl Stub library</para>
<indexterm zone="ch-system-tcl libtclstub&tcl-major-version;.a">
<primary sortas="c-libtclstub&tcl-major-version;.a">libtclstub&tcl-major-version;.a</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>