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