gnu-devels-jp
[Top][All Lists]
Advanced

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

improve the structure of gnujdoc


From: OKUJI Yoshinori
Subject: improve the structure of gnujdoc
Date: Mon, 15 Jan 2001 17:08:10 +0900

  おくじです。

  本当は管理者が言い出してくれないかなーと思ってたんですが、誰も言わな
いみたいなので。

  GNUjdocのパッケージは構造的に問題があることは大体みなさん、分かって
おられると思います。以前林さんがおっしゃってたと記憶してますが、同じソ
フトウェアのマニュアルでも、バージョンが変わると、違うディレクトリに収
める必要があり、CVSの利点が全然活かせません。さらに、ユーザにとっても、
ダウンロードしなくてもいいバージョンまで取ってこないといけない上、イン
ストールするときに、どのバージョンを選ぶか、ちまちま手動で決めてやらな
いといけません。特に、GNUjdocのスナップショットが10MBを超えた今では(!)、
この欠点は深刻であると思われます。もっと上手いやり方が望まれます。

  そこで、私からの提案を述べておきます。必要条件は、

1. 同じソフトウェアの異なるバージョンのマニュアルは、CVS的に同じファイ
   ルでないといけない。
2. ユーザが必要なものだけを選択し、ダウンロードできないといけない。
3. 楽に自動化できなければならない。
4. インストールは極力単純に行えなければならない。

と仮定します。すると、条件1のために、異なるバージョンはCVSのブランチを
利用することになります。しかし、条件2を満たすには、あるマニュアルのブ
ランチが他のマニュアルに影響を与えてはいけないことになります。つまり、
個々のマニュアルは自分自身のブランチを持てなくてはならない、ということ
です。

現時点でのCVSの機能では、これは各マニュアル毎にモジュールを持たないと
いけません。だから、例えば、GNUjdocのリポジトリは次のようになるでしょ
う:

gnujdoc/
        autoconf/  ... GNU Autoconf
        automake/  ... GNU Automake
        binutils/  ... GNU binutils
        ...

しかし、このままでは、どんなモジュールがあるかを判定するのに、自動的に
行うのが難しくなります(条件3、4)。そこで、全体を統轄するようなモジュー
ルも必要になります。このモジュールはどんなモジュールがリポジトリ中にあ
るかを記録し、それらをチェックアウトしたり、インストールするためのイン
ターフェースを提供すると良いでしょう。ここでは、そのモジュールを
gnujdocとすると、次のようなインターフェースが考えられます:

# autoconfをCVSからチェックアウト。実際には、
# cvs co autoconf
$ sh checkout autoconf

# automakeのバージョン1.3を陽に指定。実際には、
# cvs co -r branch_1_3 automake
$ sh checkout automake 1.3

# binutilsを更新。実際には、
# cd binutils && cvs update
$ sh update binutils

# チェックアウトされたものを設定。実際には、
# for i in $modules; do sh ./configure $option; done
$ sh configure --prefix=/opt/gnujdoc

# それらのInfoを生成。実際には、
# for i in $modules; do (cd $i && make); done
$ sh make

# HTMLの生成。実際には、
# for i in $modules; do (cd $i && make html); done
$ sh make html

# 存在するマニュアルのリストを表示。実際には、
# cat module_list
$ sh list
autoconf        1.2, 1.3 (default)
automake        1.3, 1.4 (default)
binutils        2.9.1 (default), 2.10
...

# 全部デフォルトでチェックアウト。実際には、
# for i in $modules; do cvs co $i; done
$ sh checkout

# 一発インストール。実際には、
# for i in $modules; do (cd $i && make install); done
$ sh install

# アーカイブ作成。実際には、...どうやろうかな?
$ sh dist

たくさんコマンドがあるのが欝陶しいなら、一つのコマンドにまとめても良い
でしょう。これらは簡単なシェルスクリプトで書けます(別にPerlやRubyでも
いいけど)。実際には、gnujdocモジュールに含まれる、マニュアルのリストは
手動で管理しないと仕方ありません。ここが唯一面倒な部分です。それ以外は
プログラム内で解決できるはずです。

  で、これを本当にはどうやらないといけないかというと、

1. GNUjdoc専用のリポジトリを持てるかどうか。
2. 複数のモジュールを持てるかどうか。

に依ります。2が駄目だと、ここで述べた方法は使えません。1が駄目なら、全
てのモジュールに接頭辞「gnujdoc-」みたいなものを付ければ済みます。duff
にあったときは好き放題だったんですが、やっぱり他人のリソースだと、そう
もいかないですね。OpenLabではどうなんでしょう?GNUなら、ちゃんと説明し
たら問題ないと思います。

  他の人の意見を知りたいので、コメントください。これで良ければ、私が書
いてもかまいません。



reply via email to

[Prev in Thread] Current Thread [Next in Thread]