Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save soh335/6880292 to your computer and use it in GitHub Desktop.
Save soh335/6880292 to your computer and use it in GitHub Desktop.
Imager::File::(*) が carton で上手く扱えない件
  • Imager
    • imager は install する時に gif, png, jpeg のライブラリがあれば一緒に入れる。なかったら入れない。
  • Imager::File::PNG みたいな別 dist も一応ある

cpanfile を

requires 'Imager';
requires 'Imager::File::PNG';

とする。

cpanm . --installdeps

  • libpng がない状態で cpanm . --installdeps した場合は Imager は error にならずに、Imager::File::PNG はエラーになる
  • libpng がある状態だと、 Imager で ::PNG も一緒に入り、requires 'Imager::File::PNG'; の箇所は up to date となる。

結果として libpng があれば大丈夫

carton install

requires 'Imager::FIle::PNG' も書く場合

  • libpng がない状態で carton install した場合は Imager は error にならずに、Imager::File::PNG はエラーになる
  • ある状態で、Imager がまだ入ってない状態だと Imager を install したタイミングで ::PNG も一緒に入り requires 'Imager::File::PNG'; は up to date となる。
    • この状態だと Imager::File::PNG の install.json は作られないので cpanfile.snapshot には記録されない
    • carton check を行うと cpanfile と cpanfile.snapshot に差異が出るので通らない

requires 'Imager::File::PNG' を書かずに requires 'Imager' だけの場合

  • libpng がない状態だと Imager::File::PNG が存在しない。 carton check に問題は起きないが png file を扱おうとすると死ぬ
  • libpng がある状態なら問題なし
    • あるなしに関わらず Imager の install は上手く行き、carton check は通るが、png file が扱えるかどうかが扱うまで分からない。

期待したい状態

  • Imager::File::PNG が carton に正しく入っていて、それを carton check で確認出来る。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment