あおきです。
In mail "[ruby-list:37083] Re: setup.rb: Patch to ignore CVS,*~,..."
"Shirai,Kaoru" <shirai / korinkan.co.jp> wrote:
> 白井です。
> > もうちょっと言うなら、ruby を使った開発スタイル全体をトータル
> > で考えなおす必要があるのではないでしょうか。そもそもあの面倒な
> > ディレクトリツリーをどうやって開発中に用意しているのかわからな
> > いのですが、どういう状況で開発しているんでしょうか? また、
> > その方法は普遍的に通用するんでしょうか。
>
> 面倒なとおっしゃいますが、よく考えられた綺麗なツリーだと思いますよ。私
> の場合、あのツリーのまま CVS に入れています。ですから、 install.rb を放
> り込めばそれだけで配布パッケージが完成してしまいます。例えば:
うーむ、本当にそのままなんですね……。それは考えてませんでした。
あのツリーは直接使うにはちょっとツリーが深すぎるような気がするん
ですよ。あと言ったとおり、小さいツールとかをパラパラとその場に
置けないのが嫌です。CVS/ もありますし。
> 今のところ、このツリー以外の形で開発用のソースツリーを持つ理由は考えられ
> ません。青木さんの場合は、開発用と配布用とでは全く別のツリーで管理してい
> るのでしょうか?
はい。ぼくのはこんな感じです。
~/r/
amstd/
fileutils/
missing/
net/
strscan/
tmail/
T/
extctrl.rb
myassert.rb
testaddress.rb
testencode.rb
testheader.rb
:
base64/
tmbase64.c
mails/
cmails.c
doc/
address.rrd
basics.rd
config.rrd
:
ChangeLog
DEPENDS
Incompatibilities
Incompatibilities.ja
:
tmail.rb
tmbase64.so
unifytmail.rb
utils.rb
racc/
cparse/
refe/
remake/
ripper/
で、開発中は次のようなシンボリックリンクのみのディレクトリを
作っておいて、RUBYLIB=~/lib/ruby としてます。
lib
ruby
cscan.so -> ~/r/strscan/cscan.so
strscan.rb -> ~/r/strscan/strscan.rb
tmail.rb -> ~/r/tmail/_loadlib.rb
tmail -> ~/r/tmail ※ ファイル単位でリンクを張ることもある
racc -> ~/r/racc
そうするといちいちインストールしなくていいので楽なんです。
その代わり中途半端なバージョンのファイルが混じる可能性があります。
配布用には remake というコマンドを使ってゼロから再配置してます。
次のようなファイルを作っておいて remake pack と打つと全部やって
くれるようになってます。(でも pack の定義はここにはない。
environ('rubyprog/tmail') の時点で rubyprog から継承している)
mount 'racc'
environ( 'rubyprog/tmail' ) {
$version = '0.10.6'
$packaging = %w( single multi )
$type = 'ruby'
$instpath = 'tmail'
$topfile = '_loadlib.rb'
$extern_libs = %w( raccrt )
$view_name = 'TMail'
$category = 'mail library'
$format = 'ruby script, ruby extention'
$require = 'ruby(>=1.6), C compiler'
$license = 'LGPL'
$manual = true
$since = 1998
$description = {}
$description['ja'] = <<'----'
……略……
----
$rubysrc = %w(
_loadlib.rb
address.rb
base64.rb
……略……
environ( 'mails' ) {
$dir = $dir + '/sc'
$type = 'ext'
$package = 'tmail'
$instpath = 'tmail'
$topfile = nil
$c = %w( mails.c )
$tools = %w( extconf.rb depend MANIFEST )
}
environ( 'b64' ) {
$dir = $dir + '/b64'
$type = 'ext'
$package = 'tmail'
$instpath = 'tmail'
$topfile = nil
$c = %w( tmbase64.c )
$tools = %w( extconf.rb depend MANIFEST )
}
}
このツールは便利って言えば便利なんですが、ちょっとデータを連動させ
すぎて逆に不便になってきたんで、作り直そうと思ってるところです。
-------------------------------------------------------------------
青木峰郎