19 10 / 2012

MakeMaker, dev releases, perl 5.16 and Carton

This is a quick heads up on the usage of Carton with perl 5.16 as of today.

Perl 5.16.0 and 5.16.1 are shipped with a developer version (6.63_02) of ExtUtils::MakeMaker, and because the version indexed with PAUSE is lower (6.62) than that, Carton with install —deployment option will fail to find the one that you need to replicate locally.

This shouldn’t be an issue as long as you have the same version of perl locally and remotely, and I plan to add a workaround for that in upcoming Carton releases.

However, it usually makes me a sad face where perl is shipped with a developer version number of modules in core while CPAN version has not been updated to correspond to that patch. I understand and appreciate that p5p sometimes wants to fix core modules where upstream is on CPAN without being blocked on their updates, but ideally there should be a corresponding release on CPAN soon after the perl core is shipped.

This is a quick script to find these odd modules from CoreList:

Eliminating the one that has ‘>’ sign i.e. CPAN has the newer version than core, the problematic dists are: MakeMaker, File::Path, PathUtils, I18N::LangTags, IO, Test, Text::Soundex, Time::Piece and Encode. However most of the times your application would not depend on these modules directly in cpanfile - as long as that’s the case you’re safe. The most offending one (to me at least) is MakeMaker because that’s always used frist, and guess that’s why i have to add a workaround to that anyway. This happened in perl 5.14 and I won’t be surprised to see it continue to occur.