あおきです。

  In mail "[ruby-list:35249] setup.rb: packages/foo/ext/lib"
    "Akinori MUSHA" <knu / iDaemons.org> wrote:

> 1) 拡張ライブラリのディレクトリ下の lib/

> 	foo/ext/*/lib/*
> 
> もインストールするようにしてほしいです。(実際には MANIFEST および
> extconf.rb のあるディレクトリ下の lib/*)

うーん、これは……。
ext/**/lib は種別としては ext と lib のどっちになるべきですか?


> 2) --{with,without}=..
> 
>  今の setup.rb --{with,without}=.. で指定できるのはパッケージ単位
> ですが、パッケージ内の特定のモジュールのみインストールできると便利
> だと思います。

「モジュール」は何を指してるんでしょう。
パッケージごとの、lib/ や ext/ ということでしょうか?
そうだと仮定すると、さらに 1) での判断が影響してきますね。

あと少なくともオプション名は変えないと挙動が定義できなく
なります。たぶん。たとえば a b c という三つのパッケージが
入っておりそれぞれに bin lib ext ext/**/lib があるとして、

  --with=a --without=b --with-dir=lib --without-dir=ext

だったらどのディレクトリがインストールされるべきでしょう。


>  setup.rb 3.x でパッケージという考え方を導入したときに廃止したの
> だと思いますが、開発時は「ちょっとこれはまだ不完全だから外したい」
> とか「これだけインストールしてテストしたい」なんてことがあるので、
> もし簡単に実現可能であれば検討をお願いします。

「開発時」の開発は、以下のどっちを指しているのでしょう。

  * パッケージの開発
  * パッケージに入れるプログラムの開発

このどちらかによってかなり方針が変わってくると思います。

ちなみに実装は簡単です。ですが上記のように、仕様を決めるのが
難儀です。


> 3) setup.rb と install.rb の一本化
> 
>  あまり差も大きくないので、複数パッケージかどうかを packages/ の
> 有無で判別するようにして一本化してしまってはいかがでしょう。

確かにコード上の差は小さいんですが、挙動の差は小さくないので
分けといたほうがいいように思います。一本化するとどんな利点が
得られそうですか?

----

とりあえず 3) は置いておいて 1) と 2) について。
この二つはどちらも setup.rb の致命的な弱点が根源にあると思います。
それはプログラム開発用のツリーとパッケージのツリーが違うことです。
それゆえ、開発中に試しにインストールしてみたり、パッケージにして
からちょっといじったり、ということができません。またパッケージを
作る責任もユーザに丸投げしてます。

逆に普通の C プログラムなんかだと開発中もパッケージも同じディレク
トリツリーで、同じプログラム (make) を使ってコンパイル・インストー
ルすることが多いのでこのズレがありません。察するに、Knu さんが求
めているのはそれと同じような存在ではないかと思うのですが、違うで
しょうか?

# まずはこのへんでストップしときます。
-------------------------------------------------------------------
青木峰郎