namazu-dev(ring)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: File::MMagic (Re: directory structure)
knok@xxxxxxxxxxxxx (NOKUBI Takatsugu) wrote:
>> ? File-MMagic/blib
>> ? File-MMagic/Makefile
>> ? File-MMagic/pm_to_blib
>>
>> はどうしましょう?
>
> cd File-MMagic && make distcleanでその辺りを含め完全に消せるので、そ
>ういったことをできるようにしたいですね...
面倒なので、 Makefile.am に
CLEANFILES = (snip) \
File-MMagic/Makefile File-MMagic/pm_to_blib
CLEANDIRS = File-MMagic/blib
と定義して dist-hook: に
rm -rf $(distdir)/$(CLEANDIRS)
を追加しました。clean-hook: は作れないので make clean では消
せません。
>> ./configure 時にすでにインストールされている File-Magic の
>> ヴァージョンを調べて、それが新しいときは File-Magic を作り直
>> さない、という処理ができるといいんだけど。
>
> Version check時に適当なファイルをtouchで作って、それで判別できないで
>しょうか。
いい方法がありました。
% perl -e 'use File::MMagic 0.15'
% perl -e 'use File::MMagic 0.16'
% perl -e 'use File::MMagic 0.17'
File::MMagic version 0.17 required--this is only version 0.16 at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
で判別できます。というわけで、 configure.in に
changequote(<<, >>)
tmp=`$PERL -nle 'print \$1 if /^\\$VERSION = "([\d\.]+)";\$/' \
File-MMagic/MMagic.pm`
dnl *
dnl * tmp="10.0" # for testing
dnl *
AC_MSG_CHECKING(for File::MMagic module)
if $PERL -e "use File::MMagic $tmp" 1>/dev/null 2> /dev/null; then
AC_MSG_RESULT(yes)
FILE_MMAGIC=""
else
AC_MSG_RESULT(no)
AC_MSG_WARN(File::MMagic module not installed. preparing its Makefile.)
cd File-MMagic
$PERL Makefile.PL
cd ..
FILE_MMAGIC="File-MMagic"
fi
changequote([, ])
AC_SUBST(FILE_MMAGIC)
なるコードを入れて対応しました。File::MMagic がインストール
されていないときは File-MMagic ディレクトリに移動して perl
Makefile.PL を実行し、 Makefile を作成します。
そして、Makefile.am の
SUBDIRS = src @FILE_MMAGIC@
が
SUBDIRS = src File-MMagic
に置き換わるので、普通に make すれば namazu, mknmz とともに
File-MMagic も make できます。ちと tricky ですね。:-)
-- Satoru Takabayashi