Tcl-8.6.3

Introduction to Tcl

The Tcl package contains the Tool Command Language, a robust general-purpose scripting language.

This package is known to build and work properly using an LFS-7.7 platform.

Package Information

  • Download (HTTP): http://downloads.sourceforge.net/tcl/tcl8.6.3-src.tar.gz

  • Download MD5 sum: db382feca91754b7f93da16dc4cdad1f

  • Download size: 8.5 MB

  • Estimated disk space required: 73 MB (includes documentation installation)(add 10MB for tests)

  • Estimated build time: 0.9 SBU (adittional 2.2 SBU for the tests)

Additional Downloads

Optional Documentation

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/tcl

Installation of Tcl

This package is also installed in LFS during the bootstrap phase. As it is not installed during Chapter 6 of LFS, installation instructions are included here in BLFS.

If you downloaded the optional documentation, unpack the tarball by issuing the following command:

tar -xf ../tcl8.6.3-html.tar.gz --strip-components=1

32-bit Installation

Install Tcl by running the following commands:

export SRCDIR=`pwd` &&

cd unix &&

BUILDENV=32 ./configure --prefix=/usr \
            --without-tzdata        \
            --mandir=/usr/share/man \
            --libdir=/usr/lib32     \
            CC="gcc -m32" &&
make &&

sed -e "s#$SRCDIR/unix#/usr/lib32#" \
    -e "s#$SRCDIR#/usr/include#"  \
    -i tclConfig.sh               &&

sed -e "s#$SRCDIR/unix/pkgs/tdbc1.0.2#/usr/lib32/tdbc1.0.2#" \
    -e "s#$SRCDIR/pkgs/tdbc1.0.2/generic#/usr/include#"    \
    -e "s#$SRCDIR/pkgs/tdbc1.0.2/library#/usr/lib32/tcl8.6#" \
    -e "s#$SRCDIR/pkgs/tdbc1.0.2#/usr/include#"            \
    -i pkgs/tdbc1.0.2/tdbcConfig.sh                        &&

sed -e "s#$SRCDIR/unix/pkgs/itcl4.0.2#/usr/lib32/itcl4.0.2#" \
    -e "s#$SRCDIR/pkgs/itcl4.0.2/generic#/usr/include#"    \
    -e "s#$SRCDIR/pkgs/itcl4.0.2#/usr/include#"            \
    -i pkgs/itcl4.0.2/itclConfig.sh                        &&

unset SRCDIR

To test the results, issue: make test.

Now, as the root user:

make install &&
make install-private-headers &&
mv -v /usr/bin/tclsh8.6{,-32}
ln -v -sf tclsh8.6-32 /usr/bin/tclsh-32 &&
chmod -v 755 /usr/lib32/libtcl8.6.so

Clean up the build directory before moving on to the next platform:

make clean
cd ..

x32 ABI Installation

Install Tcl by running the following commands:

export SRCDIR=`pwd` &&

cd unix &&

BUILDENV=x32 ./configure --prefix=/usr \
            --without-tzdata        \
            --mandir=/usr/share/man \
            --libdir=/usr/libx32    \
            CC="gcc -mx32" &&
make &&

sed -e "s#$SRCDIR/unix#/usr/libx32#" \
    -e "s#$SRCDIR#/usr/include#"  \
    -i tclConfig.sh               &&

sed -e "s#$SRCDIR/unix/pkgs/tdbc1.0.2#/usr/libx32/tdbc1.0.2#" \
    -e "s#$SRCDIR/pkgs/tdbc1.0.2/generic#/usr/include#"    \
    -e "s#$SRCDIR/pkgs/tdbc1.0.2/library#/usr/libx32/tcl8.6#" \
    -e "s#$SRCDIR/pkgs/tdbc1.0.2#/usr/include#"            \
    -i pkgs/tdbc1.0.2/tdbcConfig.sh                        &&

sed -e "s#$SRCDIR/unix/pkgs/itcl4.0.2#/usr/libx32/itcl4.0.2#" \
    -e "s#$SRCDIR/pkgs/itcl4.0.2/generic#/usr/include#"    \
    -e "s#$SRCDIR/pkgs/itcl4.0.2#/usr/include#"            \
    -i pkgs/itcl4.0.2/itclConfig.sh                        &&

unset SRCDIR

To test the results, issue: make test.

Now, as the root user:

make install &&
make install-private-headers &&
mv -v /usr/bin/tclsh8.6{,-x32}
ln -v -sf tclsh8.6-x32 /usr/bin/tclsh-x32 &&
chmod -v 755 /usr/libx32/libtcl8.6.so

Clean up the build directory before moving on to the next platform:

make clean
cd ..

64-bit Installation

Install Tcl by running the following commands:

export SRCDIR=`pwd` &&

cd unix &&

./configure --prefix=/usr           \
            --without-tzdata        \
            --mandir=/usr/share/man \
            $([ $(uname -m) = x86_64 ] && echo --enable-64bit) &&
make &&

sed -e "s#$SRCDIR/unix#/usr/lib#" \
    -e "s#$SRCDIR#/usr/include#"  \
    -i tclConfig.sh               &&

sed -e "s#$SRCDIR/unix/pkgs/tdbc1.0.2#/usr/lib/tdbc1.0.2#" \
    -e "s#$SRCDIR/pkgs/tdbc1.0.2/generic#/usr/include#"    \
    -e "s#$SRCDIR/pkgs/tdbc1.0.2/library#/usr/lib/tcl8.6#" \
    -e "s#$SRCDIR/pkgs/tdbc1.0.2#/usr/include#"            \
    -i pkgs/tdbc1.0.2/tdbcConfig.sh                        &&

sed -e "s#$SRCDIR/unix/pkgs/itcl4.0.2#/usr/lib/itcl4.0.2#" \
    -e "s#$SRCDIR/pkgs/itcl4.0.2/generic#/usr/include#"    \
    -e "s#$SRCDIR/pkgs/itcl4.0.2#/usr/include#"            \
    -i pkgs/itcl4.0.2/itclConfig.sh                        &&

unset SRCDIR

To test the results, issue: make test.

Now, as the root user:

make install &&
make install-private-headers &&
mv -v /usr/bin/tclsh8.6{,-64}
ln -v -sf tclsh8.6-64 /usr/bin/tclsh-64 &&
ln -sfv multiarch_wrapper /usr/bin/tclsh
ln -sfv multiarch_wrapper /usr/bin/tclsh8.6
chmod -v 755 /usr/lib/libtcl8.6.so

If you downloaded the optional documentation, install it by issuing the following commands as the root user:

mkdir -v -p /usr/share/doc/tcl-8.6.3 &&
cp -v -r  ../html/* /usr/share/doc/tcl-8.6.3

Command Explanations

--without-tzdata: This switch prevents installation of the shipped timezone data which are older than the ones provided in LFS.

$([ $(uname -m) = x86_64 ] && echo --enable-64bit): This switch is used to enable 64 bit support in Tcl on 64 bit operating systems.

make install-private-headers: This command is used to install the Tcl library interface headers used by other packages if they link to the Tcl library.

ln -v -sf tclsh8.6 /usr/bin/tclsh: This command is used to create a compatibility symbolic link to the tclsh8.6 file as many packages expect a file named tclsh.

sed -e ...: The Tcl package expects that its source tree is preserved so that packages depending on it for their compilation can utilize it. These sed remove the references to the build directory and replace them with saner system-wide locations.

Contents

Installed Programs: tclsh and tclsh8.6
Installed Libraries: libtcl8.6.so and libtclstub8.6.a
Installed Directories: /usr/lib/itcl4.0.1, /usr/lib/sqlite3.8.6 /usr/lib/tcl8, /usr/lib/tcl8.6, /usr/lib/tdbc1.0.1, /usr/lib/tdbcmysql1.0.1, /usr/lib/tdbcodbc1.0.1, /usr/lib/tdbcpostgres1.0.1, /usr/lib/thread2.7.1, /usr/share/doc/tcl-8.6.3, and /usr/share/man/mann

Short Descriptions

tclsh

is a symlink to the tclsh8.6 program.

tclsh8.6

is a simple shell containing the Tcl interpreter.

libtcl8.6.so

contains the API functions required by Tcl.

Last updated on 2015-02-20 16:15:05 -0500