-*- Text -*-

開発者用ノート

このノートは不完全であることに気を付けてください。

* 必要なsoftware

	- GNU Automake (http://sourceware.cygnus.com/automake/)
	- GNU Autoconf (http://sourceware.cygnus.com/autoconf/)
	- GNU Make (http://www.gnu.org/software/make/make.html)
	- GNU Emacs (http://www.gnu.org/software/emacs/emacs.html)
	- GNU Texinfo (http://www.gnu.org/software/texinfo/texinfo.html)
	- ASCII pTeX (http://www.ascii.co.jp/) (optional)
#現在未使用	- texi2html (http://texinfo.org/texi2html/) (optional)

なるべく最新を使ってください。


* 必要な知識

とりあえずMakeとAutoconfとAutomakeが使えるようになってください。そんな
に深く理解する必要はないです。


* texinfo -> info

今はmakeinfoにやらせてます。一番上のdirectoryにあるtagify.elも使います。

* texinfo -> dvi

TEX=ptexでtexi2dviを走らせてます。


* texinfo -> html

makeinfo --htmlで行っています。


* やりたいこと

1. 普通にcheckoutすると、我々が有用とみなしている全てのdocumentが入手
   でき、それらが最新であること。そしてそれらは単にconfigureとmakeを走
   らせるだけで簡単にinstallできる。

2. 全部は取りたくないuserが必要な物だけ取って、なおかつ、それらを同じ
   ぐらい簡単にinstallできる。まだ実装していない現在の考え。

$ cvs co -l gnujdoc
$ cd gnujdoc
$ ./configure --disable-xxx (ここで要らないものはdisable。)
$ make (ここで勝手にcheckoutする。configureのときの方が楽か？)
$ make install

   もちろん、CVSが直接使えない状態でも出来なければならない。そういう場
   合は手動でcheckoutする。checkoutすべきものはMANUALSを見ると分かる。

$ cvs co -l gnujdoc
$ cvs co gnujdoc/xxx
...
$ ./configure --disable-automatic-checkout (繋がらないことが分かってる
                                            場合は指定しなくて良い。必
                                            要なものは自分でcheckoutし
                                            ているので、optionでdisable
                                            する必要がない。)
$ make
$ make install

3. もはや含まれないdocumentが欲しい場合、tagを使ってcheckoutできる。
   以前のreleaseに含まれいた場合は当然それを入手すれば良い。そうでない
   場合、MANUALSに書かれているtagを使ってcheckoutする。しかしinstallの
   面倒は見ないで良いだろう。


* 新しいdocumentの追加

まずは例を見てください。automakeでも見れば良いでしょう。基本的には、

1. directoryを掘って、そこにtexinfoをコピる。directory名には必ず
   version(versionがない場合は代わりにdate)を含めること。これは将来他
   と絶対ぶつからないことを保証するために必要なので、絶対に守らなけれ
   ばならない。

2. texinfoをeuc-japanに適当なtoolで直しておく。

3. configure.inの"Check user options"以下に適当にマネして加える。普通は

gnujdoc_CHECK_SUBDIR(gnujdoc_subdir_名前,名前)
AC_ARG_ENABLE(名前,
  AS_HELP_STRING([--disable-名前],
    [do not install the 名前 manual],
  [test "x$enableval" = xno && gnujdoc_subdir_名前=""])
GNUJDOC_SUBDIRS="$GNUJDOC_SUBDIRS $gnujdoc_subdir_名前"

   で良い。さらに最後のAC_CONFIG_FILESの中に"名前/Makefile"を加える。

4. それ用のMakefile.amを作る。多分コピってマネれば良い。もしそれ専用の
   texinfo.texが必要ならTEXINFO_TEXを定義せずにそのdirectoryに置いてお
   く。独自のruleが必要ならincludeせずに自分で書く。

5. top directoryでaclocal && autoconf && automakeする。もし何かerrorが
   出たら、それを直す。
   autoreconf -fi でも動作するはず。

6. ちゃんと本当に上手く行くかどうか、確認すること。

7. AUTHORSに必要なエントリを加える。これは絶対忘れてはならない。もちろ
   ん、ChangeLogも忘れず。さらに、MANUALSに簡単な説明とdirectory名、
   そのmanualそのものに関する責任者の連絡先を入れる。
   なお、AUTHORSには *gnujdocの* 開発者の名前だけを入れること。その他
   の貢献者はTHANKSに列挙する。

8. .cvsignoreを作る。Makefile.inや*.infoを無視するようにすること。CVS
   にadd & commitする。


* 古いdocumentの削除

ちょっと面倒です。削るべきかどうかはちゃんと相談してからにしてください。
(いずれは追加する場合も相談してからにすべきだが、現時点は勝手にやらせ
るしかあるまい...) 削っても良くなる場合というのは、

a. 作者が削除して欲しいと思ったとき。
b. 保守する人がいなくなったとき。
c. 他のmanualで事足りるとき。
d. あまりにひどくて、全然役に立たないとき。

のいずれかであると考えられます。このような場合、以下の方法に従ってくだ
さい。

1. 最新の状態に一意なtagを付ける。directory名をそのまま使えば良いが、
   `.'は`-'に置き換える。削りたいdirectoryにだけ付けて、他のところには
   付けないようにすること。cvs tag TAG DIRとすれば良い。

2. MANUALSの先頭を`+'から`-'に換える。責任者のところは削って、代わりに
   tag名を書いておく。

3. top-directoryに加えたその他の変更をちゃんと取り除く。configure.inと
   Makefile.amだけのはず。AUTHORSに関しては、...こういう場合どうなるん
   だ？！

4. 後は普通に、rm -rf DIRして、cvs remove DIR/*、cvs commit DIR/*。
   (rm -rfした後だから当然実際にはwildcardが使えなくなっていることに注
   意！だから例えば、

$ foo=`echo DIR/* DIR/.* | sed -e 's/DIR/\. / /' | sed -e 's/DIR/\.\. / /'`
$ rm -rf DIR
$ cvs remove $foo
$ cvs commit $foo

  とかすると良いかも。)


1999-05-18  おくじ <okuji@kuicr.kyoto-u.ac.jp>
2005-06-04  ふとし <fut_nis@d3.dion.ne.jp> update for autoconf-2.59
	    	   			   update for makeinfo-4.8
2005-12-11  ふとし <fut_nis@d3.dion.ne.jp> use makeinfo --html
