diff options
Diffstat (limited to 'cpanfile')
-rw-r--r-- | cpanfile | 53 |
1 files changed, 53 insertions, 0 deletions
@@ -3,6 +3,10 @@ requires 'List::MoreUtils'; requires 'local::lib'; requires 'Class::Unload'; +# Interesting installation issues, see end of this file +requires 'ExtUtils::MakeMaker', '6.72'; # [1] +# requires 'MooseX::NonMoose'; # [2] + # Catalyst itself, and modules/plugins used requires 'Catalyst', '5.80031'; requires 'Catalyst::Action::RenderView'; @@ -129,3 +133,52 @@ requires 'Test::Warn'; requires 'Test::WWW::Mechanize::Catalyst'; requires 'Web::Scraper'; +################################################################# +# +# [1] Many things in cpanfile.snapshot require ExtUtils::MakeMaker 6.59, and +# one thing (DBIx::Class::IntrospectableM2M) requires 6.72, and so the snapshot +# contains the details for ExtUtils::MakeMaker 6.72. carton itself requires +# ExtUtils::MakeMaker 6.64. +# +# I don't understand the intracacies of carton/cpanm, but from the +# build.logs, I ascertain that DBIx::Class::Schema::Loader requires +# DBIx::Class::IntrospectableM2M and somehow in the process sets it up so that +# DBIx::Class::IntrospectableM2M tries to install the version of +# ExtUtils::MakeMaker used during the DBIx::Class::Schema::Loader installation. +# +# It seems as if the version of ExtUtils::MakeMaker used at any point is the +# one in local if present, then the one in local-carton if present, then the +# system one. Let's look at a few different installation platforms: +# +# On Debian wheezy, ExtUtils::MakeMaker is version 6.57. The installation of +# carton installs ExtUtils::MakeMaker 7.04 in local-carton. Running carton +# install installs ExtUtils::MakeMaker 6.72 in local at some point before +# DBIx::Class::Schema::Loader (due to one of the 6.59 requirements), and so +# DBIx::Class::IntrospectableM2M uses and tries to install 6.72, which is fine. +# +# On Ubuntu trusty, ExtUtils::MakeMaker is version 6.66. The installation of +# carton is satisfied already. Running carton install, nothing else upgrades +# ExtUtils::MakeMaker (as 6.66 > 6.59), and so when we get to +# DBIx::Class::IntrospectableM2M it uses the system 6.66 and upgrades to 6.72, +# which is again fine. +# +# On Mac OS X 10.9.5, ExtUtils::MakeMaker is version 6.63. The installation of +# carton installs ExtUtils::MakeMaker 7.04 in local-carton. Running carton +# install, nothing else upgrades ExtUtils::MakeMaker (as 6.63 > 6.59), and when +# we get to DBIx::Class::IntrospectableM2M it therefore uses 7.04 and can't +# install it (as the snapshot only contains 6.72) and fails. +# +# Therefore, if we make sure the ExtUtils::MakeMaker from the snapshot is +# installed early in the process, it will be available when we get to +# DBIx::Class::IntrospectableM2M, be used and match its own condition. +# I'm sure this isn't the correct solution, but it is a working one. +# +# +# [2] The installation of Catalyst::Model::DBIC::Schema tries to install any +# module that it finds already present in an optional section. On a Mac, the +# system has MooseX::NonMoose version 0.22, which is an optional component for +# Catalyst::Helper support, and it finds that but then thinks it is not +# installed, tries to install it but doesn't find it in the snapshot, and +# fails. The easiest solution here is to include MooseX::NonMoose in +# cpanfile.snapshot so it can be found, though I guess it shouldn't be trying +# to install it if it's already thought that 0.22 was installed... |