nDiki : Build.PL
Related term
2005年8月24日 (水)
■ Module::Build でソースパッケージング

@ ExtUtils::MakeMaker
私が Perl が好きな理由の一つに、標準でExtUtils::MakeMakerという Makefile ジェネレータがついているところである。これを使って Makefile.PL を書くと
perl Makefile.PL make manifest make make test make dist
で <pacakge>-<versionno>.tar.gz というソースパッケージを作ることができ、
tar zxvf <pacakge>-<versionno>.tar.gz cd <pacakge>-<versionno> perl Makefile.PL make make test make install
という手順でインストールする事ができるようになる。 パッケージの作り方が確立されているので、容易に新しいパッケージを開発しはじめられる。
逆に Java でプログラムを書くのが億劫なのは、このあたりの準備が面倒だからである。 Ant を使っても結局ここら辺自分でやらなければならないし。
@ ちょっとしたアーカイブの作成
ちょっとしたパッケージを作りたいと思うことは良くある。 例えばいくつかのデータファイルと、READMEファイルなんかをひとまとめにしてアーカイブにするとか。
本当にちょっとしたであれば、手動でアーカイブすれば良いのだが、
- アーカイブしたいファイル群がバージョン管理下にあって、CVS ディレクトリや .svn ディレクトリがある (除外してアーカイブする必要がある)
- 同じディレクトリにある、作業用のファイルはアーカイブしたくない (除外してアーカイブする必要がある)
- アーカイブする前に、チェック用のリグレッションテスト一式を走らせたい (リグレッションテストをかけられるようにする)
- UNIX でも Windows でもアーカイブ化できるようにしたい。
あたりを考慮しなければならない時は面倒くさくなってくる。
自動化としては
- シェルスクリプト/バッチファイルを書く
- Makefile を書く
- GNU Autotools を使う
あたりがぱっと思い浮かぶ。 しかし、最初の2つは毎回同じようなものを書くのが面倒だし保守もしにくい。 GNU Autotools はちょっとごっつすぎだし、Windows での環境構築も面倒。
@ ExtUtils::MakeMaker の欠点
ということで最初は ExtUtils::MakeMaker を使うという線で考えてみた。 もともと Perl モジュール用で汎用用途にはちょっと邪魔な振舞いもあるが、使えないことはないと思う。 しかし make (GNU Make あるいは nmake など) に依存しているという欠点がある。
@ Module::Build で
ということで ExtUtils::MakeMaker の代替である Module::Build ベースで汎用用途に使えないか検討してみた。こちらは pure Perl で make を必要としない。
Module::Build も Perl モジュールビルドにあわせた振舞いがあるものの、ちょっとカスタマイズすれば使えそうだ。 で、いろいろいじった結果、次のような感じにすると使いやすそうだ。
use Module::Build;
my $class = Module::Build
->subclass(class => 'NonmoduleBuilder',
code => q{
# Don't make blib
sub ACTION_code {};
# Don't make blib
sub ACTION_docs {};
# Don't make META.yml
sub ACTION_distmeta {
# no warning on ACTION_distdir
$_[0]->{metafile} = 'MANIFEST';
};
# Don't add MEATA.yml to MANIFEST
sub ACTION_manifest {
$_[0]->{metafile} = 'MANIFEST',
$_[0]->SUPER::ACTION_manifest(@_);
};
});
# Set your archive name and version.
$class->new(dist_name => 'mypackage',
dist_version => '1.0.2',
)->create_build_script;
カスタマイズした部分は以下(Module::Build 0.26 で動作確認)。
- Perl モジュールビルドに特有の blib ディレクトリを作らないようにする。
- META.yml を生成しないようにし、アーカイブに含まれないようにする。
上記のようなファイルを Build.PL という名前で作っておけば
perl Build.PL ./Build manifest ./Build ./Build test ./Build dist
等として、アーカイブ作成が容易にできるようになる。
しばらくこの方法でいろいろ試してみることにしてみよう。
- SCons は GNU Autotools のかわりになるか (2005-04-20)
- ActivePerl で Ming (2005-02-23)
- nmake で毎回 pl2bat されるのを何とかしたい (2004-11-25)
- 私的10大ニュース2004 [ comp ] (2004-12-31)
- bundle を作成して Perl モジュールをまとめてインストール。 (2004-10-21)
2005年11月14日 (月)
■ 久しぶりに build.xml を書く

ソフトウェアのレビュー日。 最近ミーティングの調整やドキュメントの作成などばかりで、ソースコードに触れる機会がほとんどなかったので Eclipse なんか入れちゃったりしてウキウキ。
……あれ? ビルドまだ自動化してないの? いや、普通まず最初にビルド自動化しておくでしょ。configure.ac とか Makefile.am とか Makefile とか Makefile.PL とか Build.PL とか書いちゃうでしょ。 Java ならまあ build.xml とか書いとくでしょ。 make dist (相当が)できるようなターゲット書いておくでしょ。
……無いのね。Eclipse でぬくぬく書いてるのね。コード書いている間はいいよ。 でもね、節目のビルドはね、そういうのでやってね。ビルドファイルの含めているソースアーカイブもコマンド一発で作れるようにしておいてね。
はい。では、書きますよ。今回は私が。 次はちゃんと書いてね。
- Module::Build でソースパッケージング (2005-08-24)
- 「プロジェクトマネジメント」はどうやって勉強すれば良いですか? (2006-11-22)
- assertion (2004-05-16)
- TrueCrypt で USB メモリに Windows と Linux ... (2006-12-14)
- Debian GNU/Linux で Dropbox (2008-09-16)
■よく検索されるキーワード
torrent(62) windows(62) perl(58) 提案書(48) 書き方(47) linux(44) アジェンダ(32) usb(29) 動画(27) x31(27) 使い方(27) 手帳(25) ssh(25) mp980(23) thinkpad(22) svn(21) ほぼ日手帳(21) java(21) インストール(20) 画像(20) debian(20) ドラマ(16) subversion(16) cvs(15) ubuntu(15) 設定(15) 秋葉原(14) gmail(13) ヨドバシ(13) 無料動画(13) tortoisesvn(13) dropbox(13) c#(12) .net(12) 壁紙(12) make(12) gnu(12) ノート(11) ヨドバシカメラ(11) a6(11) tc-1(11) ganttproject(11) 冷蔵庫(11) 宮根誠司(11) porter(11) 無印(10) フリー(10) 筆まめ(10) tar(10) 充電式カイロ(10) 方眼(9) パスワード(9) 日本語(9) visual(9) cwrsync(9) wiki(9) gimp(9) フォーマット(9) firefox(8) ボールペン(8) nullpointerexception(8) grub(8) skk(8) ppm(8) ご査収(8) ダウンロード(8) ケース(8) サンプル(8) 提案書の書き方(8) 無料(8) 無印良品(8) google(8) 2008(8) gtd(8) 3.5(8) framework(8) ツール(8) cgi(7) mew(7) バッグインバッグ(7)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.053193s / load averages: 0.28, 0.21, 0.17
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク