#症状
#解決策
.travis.yml
の冒頭にdist: trusty
と添えるだけで直る。
#原因その1
travisが初期状態で持ってるperlbrew
のバージョンが古い?
perlbrew
でソースを読みに行くURLが404 not found
でcurl
に失敗している。
よって、perlbrew use 5.xx
に失敗。初期状態でperlbrew list
に入っている5.22以上だと影響がない。
#原因その2
Module::Build::Tiny のバージョンが古い?
cpanfile
に
on configure => sub {
requires 'Module::Build::Tiny', '0.039';
};
とわざわざ最新のバージョンを指定しているのにも関わらず、
Can't locate Module/Build/Tiny.pm in @INC (you may need to install the Module::Build::Tiny module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at Build.PL line 9.
と、怒られる。この事象だけなら.travis.yml
に
before_install:
- 'cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)'
- 'cpanm Module::Build::Tiny'
と明示的なインストールをすることで解決するが、そもそもdist: trusty
と指定した場合、__この記載はいらない__ことを確認したし、そうでない場合はperlbrew use 5.xx
に失敗してもテストが止まらず、指定していないバージョンでテストを走らせてpassしてしまう__という謎の大暴走を起こすので__全くお勧めできない。
#結論
.travis.yml
にdist: trusty
と入れれば従来通り後方互換性を自動確認しながらモジュールを更新できる。
dist: trusty
language: perl
sudo: false
perl:
- '5.8'
- '5.10'
- '5.12'
- '5.14'
- '5.16'
- '5.18'
- '5.20'
- '5.22'
- '5.24'
- '5.26'
- '5.28'
- '5.30'
...
#なぜ?
わかりません。curl
の先が404 not found
になっている時点で参照元のデータベースが古いか、バグかを疑うところなんですが、travis CIのサポートにメールで問い合わせた結果としてdist: trusty
使えばええねん、という回答しか来なかったので。
この件を深掘りできる方の__コメントおよび編集リクエストお待ちしております__。