aboutsummaryrefslogtreecommitdiffstats
path: root/cpanfile
diff options
context:
space:
mode:
authorMatthew Somerville <matthew-github@dracos.co.uk>2015-02-18 13:52:49 +0000
committerMatthew Somerville <matthew-github@dracos.co.uk>2015-02-18 13:52:49 +0000
commitf1be0c6d3422a3661ae1bc7604012c157a73c868 (patch)
tree7300ba0c55cea3e55f05d97cb47984143219113e /cpanfile
parentd8e19f1e68a1bb149365d7b6843ff3384a6bbf5e (diff)
Improvements for installing on Macs.
This works around a couple of issues installing using either MacPorts or Homebrew, making sure the version of ExtUtils::MakeMaker in the snapshot is installed early in the process, and that MooseX::NonMoose is present in the snapshot.
Diffstat (limited to 'cpanfile')
-rw-r--r--cpanfile53
1 files changed, 53 insertions, 0 deletions
diff --git a/cpanfile b/cpanfile
index ba92755f9..e6284d6b2 100644
--- a/cpanfile
+++ b/cpanfile
@@ -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...