Tcl パッケージは、堅牢で汎用的なスクリプト言語であるツールコマンド言語 (Tool Command Language) を提供します。 Expect パッケージは Tcl 言語によって書かれています。
本パッケージとこれに続く 2 つのパッケージ (Expect と DejaGNU) は、GCC および Binutils などにおけるテストスイートを実行するのに必要となるためインストールするものです。 テスト目的のためにこれら 3 つのパッケージをインストールするというのは、少々大げさなことかもしれません。 ただ本質的ではないことであっても、重要なツール類が正常に動作するという確認が得られれば安心できます。 これら 3 つのパッケージは、本章で行うテストのために必要となるものです。
はじめにドキュメントを伸張(解凍)する以下のコマンドを実行します。
tar -xf ../tcl8.6.10-html.tar.gz --strip-components=1
Tcl をコンパイルするための準備をします。
SRCDIR=$(pwd) cd unix ./configure --prefix=/usr \ --mandir=/usr/share/man \ $([ "$(uname -m)" = x86_64 ] && echo --enable-64bit)
configure オプションの意味
$([ "$(uname
-m)" = x86_64 ] && echo
--enable-64bit)
$(<shell
command>)
という記述は、そのシェルコマンドの出力結果によって置き換えられます。
この出力は 32 ビットマシンでは空となり、64 ビットマシン上では --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.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
"make" コマンドに続くたくさんの "sed" コマンドは、設定ファイルにあるビルドディレクトリへの参照を削除して、インストールディレクトリへの参照に置き換えます。 これ以降の LFS 作業において必須のことではありませんが、後にビルドされるパッケージが Tcl を用いるかもしれないからです。
ビルド結果をテストする場合は、以下を実行します。
make test
テストスイートにおいては clock.test に関連する箇所がいくつかあって、これは失敗します。 ただしテスト結果のまとめにおいては、失敗は 1 つもないものとして示されます。 clock.test は LFS システムが完成すれば成功します。
パッケージをインストールします。
make install
インストールされたライブラリを書き込み可能にします。 こうすることで後にデバッグシンボルを削除できるようにします。
chmod -v u+w /usr/lib/libtcl8.6.so
Tcl のヘッダーファイルをインストールします。 これらは次にビルドする Expect が必要とするファイルです。
make install-private-headers
必要となるシンボリックリンクを生成します。
ln -sfv tclsh8.6 /usr/bin/tclsh