mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-01-18 13:07:50 +00:00
218 lines
7.5 KiB
XML
218 lines
7.5 KiB
XML
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
<!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.2">
|
|
<!ENTITY itcl-ver "4.2.1">
|
|
]>
|
|
|
|
<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 the <application>Tcl</application> language.</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 and 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>Note that the Tcl package used here is a minimal version needed
|
|
to run the LFS tests. For the full package, see the
|
|
<ulink url='&blfs-book;general/tcl.html'>BLFS Tcl procedures</ulink>.</para>-->
|
|
|
|
<para>First, unpack the documentation by issuing the following command:</para>
|
|
|
|
<screen><userinput remap="pre">tar -xf ../tcl&tcl-version;-html.tar.gz --strip-components=1</userinput></screen>
|
|
|
|
<para>Prepare Tcl for compilation:</para>
|
|
|
|
<screen><userinput remap="configure">SRCDIR=$(pwd)
|
|
cd unix
|
|
./configure --prefix=/usr \
|
|
--mandir=/usr/share/man \
|
|
$([ "$(uname -m)" = x86_64 ] && echo --enable-64bit)</userinput></screen>
|
|
|
|
<variablelist>
|
|
<title>The meaning of the configure options:</title>
|
|
|
|
<varlistentry>
|
|
<term><parameter>$([ "$(uname -m)" = x86_64 ] && echo --enable-64bit)</parameter></term>
|
|
<listitem>
|
|
<para>The construct <parameter>$(<shell command>)</parameter>
|
|
is replaced by the output of the shell command. Here this output is
|
|
empty if running on a 32 bit machine, and is
|
|
<parameter>--enable-64bit</parameter> if running on a 64 bit machine.
|
|
</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 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.</para>
|
|
|
|
<para>To test the results, issue:</para>
|
|
|
|
<screen><userinput remap="test">make test</userinput></screen>
|
|
<!--
|
|
<note>
|
|
<para>
|
|
In the test results there are several places associated with clock.test
|
|
that indicate a failure, but the summary at the end indicates no
|
|
failures. clock.test passes on a complete LFS system.
|
|
</para>
|
|
</note>
|
|
-->
|
|
<para>One test, unixInit-1.2, is known to fail.</para>
|
|
|
|
<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>Finally, 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>
|
|
|
|
</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>
|