新しい cygwin の autotools だと、古い autotools を使っているソースツリーで autoreconf を実行した場合に以下のエラーが出て、こけることがよくあるように思える。
autoreconf-2.67: Entering directory `.' autoreconf-2.67: configure.in: not using Gettext autoreconf-2.67: running: aclocal --output=aclocal.m4t aclocal: macro `_LT_DECL_SED' required but not defined aclocal: macro `_LT_FUNC_STRIPNAME_CNF' required but not defined autoreconf-2.67: aclocal failed with exit status: 1
きちんと追ったわけではないため、間違えているかもしれないが、autotools は生成されるファイル (aclocal.m4 など) のコメントにある generated by 〜 に記載されているバージョンを見て、内部で呼び出すスクリプトのバージョンをそれに合わせているようである。
おそらく可能な限り想定されているソースツリー側でバージョンで再生成することで、autotools のバージョンの差異による問題をなくそうという配慮であろうが、どうも逆にこれが上記のエラーを引き起こしているようである。
回避するには autotools で生成されるファイルをあらかじめ消しておけばいい。cygport の場合はコンパイル前にその処理を挿入しておくと良い。
修正:src_patch_hook で prep の時点で消しておく方が diff にも出現しなくてより良いと思われる。(2011/02/13)
CYGPORT_USE_UNSTABLE_API=1 # src_patch_hook を使うためのおまじない src_patch_hook() { cd ${origsrcdir}/${SRC_DIR} chmod -R u+w * # permission denied を防ぐ rm -f aclocal.m4 configure find . -name Makefile.in | xargs rm -f }