tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

MYMETA.yml ってどうすればいいの?

ちょっと前に、新しい CPAN モジュールを ship した関係で気づいたのですが、Perl 5.14 でモジュール作成すると、MYMETA.yml というファイルが生成されます。

と、いうか、5.14 というよりはどうやら ExtUtils::MakeMaker の 6.57 以降を使うと生成されるみたい*1。さらに、E::MM 6.57 はデベロッパリリースしか出ていないので、Perl 5.14 以外の環境だと、(明示的にデベロッパリリースを入れてなければ)たぶん META.yml が生成されないはずです。

で、何が困ったかというと、別の環境(5.8)でモジュールいじってみたら、MANIFEST と合わなくなっていてテストがこけたり*2、5.14 の環境でも、ShipIt 使おうとしたら、途中でエラーになって落っこったりします。MANIFEST.SKIP に MYMETA.yml を登録すると、とりあえずどちらの現象も回避できます。

ただ、長期的には、MYMETA.yml に tool chanin が対応していく方向性みたいなので、MANIFEST.SKIP でいいのかどうかはちょっと疑問だったりもします。*3

自分は MANIFEST もリポジトリに突っ込んでいるのですが、これが間違いという気もしなくもありません。でも、MANIFEST を git の管理下から外しても、ShipIt がコケる現象は変わらないしなぁ。。。*4

と、いうわけで、しばらくは MANIFEST.SKIP に登録してしのごうと思っているのですが、イマイチ納得できなかったのでした。

*1:5.14 には 6.57_05 が入っているっぽい

*2:私は Test::CheckManifest というモジュールを使って MANIFEST のテストを流しています

*3:でもインストール時に、ユーザの環境で動的に生成するファイルだから、SKIP でもいいのか?うーん、よくわからんです。。。

*4:もしかすると、これは ShipIt のバグなのかもしれない。でも自分はそう言い切る自信は無い