Subscribed unsubscribe Subscribe Subscribe

Time::Piece::MySQL が carton で上手く扱えない件

例えば

requires 'Time::Piece', '>= 1.21';
requires 'Time::Piece::MySQL';

のような cpanfile を書いた場合 cpanfile.snapshot は以下のようになる。

# carton snapshot format: version 1.0
DISTRIBUTIONS
  Time-Piece-1.23
    pathname: R/RJ/RJBS/Time-Piece-1.23.tar.gz
    provides:
      Time::Piece 1.23
      Time::Seconds 1.23
    requirements:
      Exporter 5.57
      ExtUtils::MakeMaker 0
  Time-Piece-MySQL-0.06
    pathname: K/KA/KASEI/Time-Piece-MySQL-0.06.tar.gz
    provides:
      Time::Piece 0.06
      Time::Piece::MySQL 0.06
    requirements:
      ExtUtils::MakeMaker 0
      Test::More 0.47
      Time::Piece 1.03

見ると、 Time::Piece::MySQL の provides に Time::Piece 0.06 がある。これは lib/Time/Piece/MySQL.pm - metacpan.org - Perl programming language のように書いてしまっているのが原因ぽい。

carton install --deployment などした時に先に Time::Piece::MySQL が実行されると

Searching Time::Piece on mirror index /path/to/dir/local/cache/modules/02packages.details.txt
Already tried Time-Piece-MySQL-0.06. Skipping.
-> FAIL Installing the dependencies failed: Installed version (1.20_01) of Time::Piece is not in range '1.21'

となる。ちゃんと no_index は指定するようにしたり pause に index されないように改行したりしたいですね。

妥協案

extlib とかに入れるしかないのだろうか ............

書き忘れ

作者の方に no_index に TIme::Piece を追加してくれないかということはメールはしました。