From: Minero Aoki Date: 2003-02-10T19:14:16+09:00 Subject: [ruby-list:37084] Re: setup.rb: Patch to ignore CVS,*~,... あおきです。 In mail "[ruby-list:37083] Re: setup.rb: Patch to ignore CVS,*~,..." "Shirai,Kaoru" 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 ) } } このツールは便利って言えば便利なんですが、ちょっとデータを連動させ すぎて逆に不便になってきたんで、作り直そうと思ってるところです。 ------------------------------------------------------------------- 青木峰郎