GNU Libtoolのインストール

GNU Autoconfとともに,ソフトウェアのリポジトリーからのビルドで必要な場合があるGNU Libtoolをソースコードからインストールする。

インストール情報
項目 説明
配布元
リポジトリー libtool.git – GNU Libtool
手順 README.md – libtool.git – GNU Libtool
依存情報
依存先 (必須) Make (GNU Make)
依存先 (任意) リポジトリーからのビルドに必要: Autoconf, Automake, Help2man, XZ
依存元 APR
インストール手順
sh -eux <<-"EOT"
PKG=libtool VER=2.4.6 TAG=v$VER
LOCAL=~/.local J=$(grep -cs '^processor' /proc/cpuinfo || echo 2)
mkdir -p "$LOCAL/src"
cd "$LOCAL/src" if false command -v git >/dev/null; then [ -e $PKG ] || git clone --depth 1 git://git.savannah.gnu.org/$PKG.git $PKG cd $PKG git fetch --depth 1 origin tag $TAG
git checkout -f $TAG git submodule update --init --depth 1 --progress || git -C gnulib fetch --shallow-since 2015-01-15
git clean -dfX [ -e .gitmodules ] && git submodule foreach --recursive git clean -dfX # [ -e configure.ac ] && autoreconf -is
./bootstrap else [ -e $PKG-$VER ] || wget http://ftp.jaist.ac.jp/pub/GNU/$PKG/$PKG-$VER.tar.xz tar -xf $PKG-$VER.* cd $PKG-$VER make -kj $J distclean clean || :
fi ./configure --prefix="$LOCAL/stow/$PKG-$VER" make -j $J
make -j $J check
make -j $J install cd "$LOCAL/stow" echo $PKG-[0-9]* | xargs -n 1 stow --ignore=dir -D stow --ignore=dir $PKG-$VER
EOT
インストール例
日付 バージョン OS 依存関係
2019-03-31 2.4.6 Ubuntu 18.04 GNU Make 4.2.1, GCC 7.4.0

配布用のtarファイルからのビルドは問題なく成功した。しかし,リポジトリーからのビルドは問題が起き,結局解決できなかった。解決できなかったところを記録として記す。

まず,./bootstrapの実行時に以下のエラーが出た。

error: Server does not allow request for unadvertised object 342d9f09f2bab9a0380faa88787147bac4d48278
Fetched in submodule path 'gnulib', but it did not contain 342d9f09f2bab9a0380faa88787147bac4d48278. Direct fetching of that commit failed.
bootstrap: running: gnulib/gnulib-tool --no-changelog --avoid=dummy --libtool --macro-prefix=GL --aux-dir=build-aux --m4-base=m4 --local-dir=gl --symlink --import announce-gen bootstrap...
gnulib/gnulib-tool: *** minimum supported autoconf version is 2.63. Try adding AC_PREREQ([2.63]) to your configure.ac.
gnulib/gnulib-tool: *** Stop.

これは,GNU M4のインストール時に発生したものと同じ原因のエラーだ。そのため,./bootstrap実行前に必要なコミットが含まれるように,リポジトリーの履歴をダウンロードすることで対応できた。

具体的には,git submodule upadte --depth 1の指定でダウンロードできていない342d9f09f2bab9a0380faa88787147bac4d48278のコミットは2015-01-15のコミットだ。そのため,git submoduleに失敗後,git fetch --shalow-since 2015-01-15で該当コミットの日付までのデータをダウンロードして対処した。

問題はmake check時のテストの失敗だ。2.4.6をリポジトリーからビルド後,make checkで以下のテストが失敗した。

 14: verbatim aclocal.m4 w/o AC_CONFIG_MACRO_DIRS    FAILED (libtoolize.at:782)

期待される最後の以下の1文が出力されていないのが失敗の理由な模様だ。

libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am.

tests/testsuite.dir/014に失敗した試験のログなどが出力される。

しかし,この解決策がわからず,リポジトリーからのビルドを断念した。そのため,if false command -v gitでgit経由ではビルドしないようにしている。

tarファイルからのインストールではmake checkもパスしてインストールできた。tarファイルからインストールしても実用上は問題ない。ただし,気持ち悪いので,解決策がわかり次第,手順を更新する。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です