From: Minero Aoki Date: 2001-06-30T16:07:16+09:00 Subject: [ruby-list:30421] Re: setup.rb: pre_*, post_*, task 'all' あおきです。 In mail "[ruby-list:30419] Re: setup.rb: pre_*, post_*, task 'all'" I wrote: > > これを適用すると、TASKの前後に行う処理を記述できます。 > > それぞれ、pre_config, post_config, pre_setup, post_setup, pre_install, post_install。 > > これでコンパイルの前後に行う仕事などが記述可能になります。 > ただフックはパッケージそれぞれに用意できるようにしたいので、 > setup-config.rb 相当のものはパッケージごとに別ファイルを用意し、 > そこで特定名のクラスを定義してもらうようにしましょう。 実装しました。フックは setup/PACKAGENAME.rb に クラス InstallerHook_PACKAGENAME を書いてください。 pre_config post_config なんかが呼ばれます。 2.1.0 として RAA に置いたので試してみてください。 > # ああ、srcdir 対応やってない……わたなべさんごめんなさい これもついでに対応しちゃいました。 さらに調子にのって --prefix も使えるようにしました。 -------- ……なんですが、どうも 2.1.0 の方法はまわりくどい気がするので、潔く パッケージごとにインストーラクラスを作ってもらうほうがいいんでは ないかと思いはじめました。たとえばパッケージが tmail strscan raccrt と三つあるとしたら、setup/tmail.rb setup/strscan.rb setup/raccrt.rb を用意して(ここまでは同じ)、その中ではそれぞれ class Installer_tmail < Installer DIRS = { # ディレクトリ インストールパス 'lib/tmail' => 'tmail', 'ext/b64' => 'tmail', 'ext/mails' => 'tmail' } end のようなものを書いてもらう。んでフックしたければこのクラスで def install pre_install super post_install end と、すればいいわけです。んで PATHCONV は廃止。どうでしょう? というかこの案ももう実装しました。もうちょっと考えてから アップロードしようと思います。 # こんなことやってる場合じゃないって ------------------------------------------------------------------- 青木峰郎