namazu-ml(ring)


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

Re: namazu-1.3.1.0-pre-2 (Re: namazu-1.3.1.0-pre-1)



馬場@京大宇宙物理 です。

 Date: Hajime BABA <baba@xxxxxxxxxxxxxxxxxxxxxx>
 From: [namazu 22] Re: namazu-1.3.1.0-pre-2 (Re: namazu-1.3.1.0-pre-1)
 Subject: Tue, 02 Feb 1999 23:23:27 JST

 >  > >ということで、昨日 pre-1 をベースに、手元で適当に変更してみたもの
 >  > >があります。ついでに automake を使うようにしました。もし使うようで
 >  > >したらお送りしますので、言ってくださいませ。>高林さん
 >  > ぜひ送ってくださいませ。 > 馬場さん
 > はい、では私信で送ります。ちょっと整理するので、しばらく待ってね。

コメントを整理していたら意外に長くなってしまって、高林さん一人に送
るのはもったいなくなった :-) ので、コメントだけMLに投げてみます。
はたして誰が見るのか不明ですが、もしも参考になれば幸いです。

変更したソースコードはでかくて迷惑ですので、高林さんだけにお送りし
ます。これは適当にマージしていただいて、pre3 で見ることにしませう。
--
馬場  肇 ( Hajime BABA )            E-mail: baba@xxxxxxxxxxxxxxxxxxxxxx
京都大学理学部宇宙物理学教室 博士課程二回生
--


やったこと:

・GNU coding standards に従うようにファイル名を変更し
  (ToDo -> TODO, README.en -> README)、いくつかのファイル
  (AUTHORS, NEWS, THANKS) のダミーを新設

・install-sh, missing, mkinstalldirs を他のツールからコピー

・src/configure.in を移動し、automake を使うように編集
  変更点は基本的に先頭付近と最後のあたり

・Makefile.am, src/Makefile.am を手で新規作成、
  src/Makefile.am はもとの src/Makefile.in を適当に編集したもの
  C でしか使っていない変数は、config.h で定義するように変更し、
  src/Makefile.am からは削除

・config.h を生成し、これを利用するように src/namazu.h を編集
  config.h の生成には acconfig.h が必要なので、これは手で新規作成

・src/namazu.h, src/message.c と conf.pl.in を
  src/Makefile 中の定義の VERSION を利用するように編集

・ファイル "VERSION" は自動生成するように変更

くらいかな。そして、

  % automake
  % automake src/Makefile
  % aclocal
  % autoconf
  % autoheader

としました。これで、Makefile.in, config.h.in, src/Makefile.in,
configure がそろいます。ここまでくれば、あとは基本的に make 以外の
コマンドは打たなくてもいいです。

  % ./configure
  % make dist

すれば、配布パッケージ namazu-@VERSION@.tar.gz ができます。また、

  % make distclean

すれば、生成されるファイルは全部消去されます。automake を使えば、
clean,distclean,install,dist などが一般的・直感的になるので、かな
り便利になるんじゃないかとおもいます。make uninstall も、限定的で
すができるようになります。


@VERSION@ を定義しているところは、configure.in の先頭付近の

  AM_INIT_AUTOMAKE(namazu, 1310pre1-am)

という行です。この '1310pre1-am' を変更するだけで、VERSION と、バ
イナリ中に埋め込まれるバージョン番号と、tar-ball の名前を変えるこ
とができます。

# ただし、autoconf,automake をインストールしておく必要あり。

また、ソースコードが増えたり減ったりしたときは、src/Makefile.am の
先頭付近を編集します。そして、make すれば、勝手に Makefile.in と 
Makefile, config.h などの依存関係を考えて再生成してくれます。

automake はいちおう CYGNUS GNUwinでの動作も考えているようですから
(というか、automake は cygnus で開発されていますから)、Makefile の
統合というのは、まだ詳しくは見ていませんし良く分かっていませんが、
可能ではないかとおもいます。



なお、僕の改造だと、細かい問題点はいくつかあるかとおもいます。これ
は僕が最近の namazu のコードについていっていない部分があるのと、
automake/autoconf に不馴れな部分があるのと、両方だとおもうので、適
宜修正してやっていただければとおもいます。

それから、以下は完全に蛇足なのですが、GNU coding standards と他の 
GNU ツールなどを見ていて、もっと generic にするにはどうすればいい
か、という僕なりのコメントです。GNU coding standards は info で見
られます。


AUTHORS は GNU coding standards で要求されています。とりあえず、高
林さんの名前とメールアドレスだけを入れておきました。

ChangeLog は、C-x 4 a (add-change-log-entry-other-window) で書かれ
る形式にする方がいいようにおもいます。

INSTALL は、ndtpd のソースコードの INSTALL, INSTALL-ja をコピーし
て最後の方を編集すれば、なお良くなるでしょう。

NEWS は、GNU coding standards で要求されているファイルです。これに
はフォーマットがあるようですが、それにしたがって書かれているのは少
なく、mule と lookup くらいしかまだ見たことはありません。自由な形
式で書いておくといいでしょう。

README も GNU coding standards で要求されてます。とりあえず 
README.en を rename しておきましたが、あるいは README.ja を README 
としても良いかもしれません。その場合は、Makefile.am の EXTRA_DIST 
をいじってください。

THANKS は、GNU coding standards の必須のファイルではありません。し
かし recommended なものです。まあ、doc/ 以下に書いてあるから不要だ
という考え方もできますので、必要なければ削除してください。

ToDo は、TODO と書くことが推奨されているようです。これもGNU coding
standards で要求されています。

ファイル VERSION は、とりあえず入れておきましたが、個人的には不要
だとおもいます。そしたら、Makefile.am の all-local: は削れます。

また、Makefile.am でコメントに書いてますが、別にインストールせんで
もいいんじゃないかとおもうファイルがあります。

src/Makefile.am 中で、sed を使って Perl スクリプトを置換する時は、
スクリプト内部では%VER% よりも@VAR@ とする方がどちらかというと一般
的であるようです。ただし、これについては数が多かったので、一部しか
いじっていません。

@OPT_PERL@ を置換するより、単に @PERL@ を置換するように、*.pl を書
き換えると良いかとおもいます。このあたり ndtpd のソースコードが良
いでしょう。

mknmz では $conf::VERSION を参照するようになっていますが、これより
は、sed による置換で、mknmz のソースコードの内部に「埋め込む」方が
いいです。外部にバージョンを持つと混乱する場合があるからです。


... 他にもまだあるのかもしれませんが、ま、こんなところです。
あとは automake/autoconf のグルーの意見を待ちたいとおもいます。