[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:10430] Re: Namazu with gettext



<14310.52341.96789.25346W@lavender>の記事において
ukai@debian.or.jpさんは書きました。

>> なんでもいいんでしょうけど 例えば gettext とかの source が
>> 参考になると思います:)

  最終的に無事解決したそうです。高林さんからのメールを末尾に付けておき
ます。

# sh-utilsのsourceを参考にしたようです。

>> # autoconf, automake 便利ですけどいろいろややこしいですねぇ(^^;

  そうですね... 私は今だきちんと理解できていません。CVSなどと合わせて
ソフトウェア開発に関するトピックスをまとめた本なんかがあると嬉しいんで
すが...

----ここから
初めにやったこと:

  1. gettext 0.10.35 をインストール

  2. Namazu のディレクトリで gettextize を実行。 intl, po ディレ
     クトリを作成

  3. ./configure.in に 

      ALL_LINGUAS="ja"
      AM_GNU_GETTEXT

    を追加

  4. aclocal.m4 を更新
     % cat \
        /usr/local/share/aclocal/{gettext,lcmessage,progtest}.m4
     >> aclocal.m4

  5. autoreconf を実行


つまづいた問題: 

    /usr/local/lib などに既存の libintl.a が存在し、
    かつ、 libc に gettext が含まれない (libc5)

  という状況で ./configure を実行すると、src/Makefile の 
  LIBS に -lintl が設定されないわりには config.h に
  
    #define ENABLE_NLS 1
    #define HAVE_GETTEXT 1
    #define HAVE_LC_MESSAGES 1
  
  と設定してくれるので、 make すると undefined reference to
  `gettext' ででこけてしまう。


解決策:

  sh-utils-2.0 の configure では上記の事態は起きない。
  (src/Makefile の LIBS に -lintl をきちんと設定してくれる)

  そこで、sh-utils-2.0 の aclocal.m4 を参考に Namazu の 
  aclocal.m4 を修正した。すると、上記の問題は解決した。

  どうやら 

    % cat \
       /usr/local/share/aclocal/{gettext,lcmessage,progtest}.m4
    >> aclocal.m4

  と安易に追加した macro (gettext 0.10.35付属品) に不具合が
  あったらしい。修正点はこんな感じ:

***************
*** 151,167 ****
  
  	   if test "$gt_cv_func_gettext_libc" != "yes"; then
  	     AC_CHECK_LIB(intl, bindtextdomain,
! 	       [AC_CACHE_CHECK([for gettext in libintl],
! 		 gt_cv_func_gettext_libintl,
! 		 [AC_CHECK_LIB(intl, gettext,
! 		  gt_cv_func_gettext_libintl=yes,
! 		  gt_cv_func_gettext_libintl=no)],
! 		 gt_cv_func_gettext_libintl=no)])
  	   fi
  
  	   if test "$gt_cv_func_gettext_libc" = "yes" \
! 	      || test "$gt_cv_func_gettext_libintl" = "yes"; then
! 	      AC_DEFINE(HAVE_GETTEXT)
  	      AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
  		[test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
  	      if test "$MSGFMT" != "no"; then
--- 2388,2400 ----
  
  	   if test "$gt_cv_func_gettext_libc" != "yes"; then
  	     AC_CHECK_LIB(intl, bindtextdomain,
! 	       [AC_CHECK_LIB(intl, gettext)])
  	   fi
  
  	   if test "$gt_cv_func_gettext_libc" = "yes" \
! 	      || test "$ac_cv_lib_intl_gettext" = "yes"; then
! 	      AC_DEFINE(HAVE_GETTEXT, 1,
! 	  [Define to 1 if you have gettext and don't want to use GNU gettext.])
  	      AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
  		[test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
  	      if test "$MSGFMT" != "no"; then

----ここまで
-- 
野首 貴嗣
E-mail: knok@xxxxxxxxxxxxx (private)
        nokubi@xxxxxxxxx (official)