forked from mysociety/fixmystreet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cpanfile
184 lines (173 loc) · 6.56 KB
/
cpanfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# setenv script
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';
requires 'Catalyst::Authentication::Store::DBIx::Class';
requires 'Catalyst::Devel';
requires 'Catalyst::Model::Adaptor';
requires 'Catalyst::Plugin::Authentication';
requires 'Catalyst::Plugin::Session::State::Cookie';
requires 'Catalyst::Plugin::Session::Store::DBIC';
requires 'Catalyst::Plugin::SmartURI';
requires 'Catalyst::Plugin::Static::Simple';
requires 'Catalyst::Plugin::Unicode::Encoding';
requires 'Catalyst::View::TT';
# Modules used by FixMyStreet
requires 'Authen::SASL';
requires 'Cache::Memcached';
requires 'Carp';
requires 'CGI';
requires 'Crypt::Eksblowfish::Bcrypt';
requires 'DateTime';
requires 'DateTime::Format::HTTP';
requires 'DateTime::Format::ISO8601';
requires 'DateTime::Format::Pg';
requires 'DateTime::Format::W3CDTF';
requires 'DateTime::TimeZone';
requires 'DBD::Pg', '2.9.2';
requires 'DBI';
requires 'DBIx::Class::EncodedColumn::Crypt::Eksblowfish::Bcrypt';
requires 'DBIx::Class::FilterColumn';
requires 'DBIx::Class::InflateColumn::DateTime';
requires 'DBIx::Class::ResultSet';
requires 'DBIx::Class::Schema::Loader';
requires 'Digest::MD5';
requires 'Digest::SHA';
requires 'Email::Send';
requires 'Email::Send::SMTP';
requires 'Email::Simple';
requires 'Email::Valid';
requires 'Error';
requires 'FCGI';
requires 'File::Find';
requires 'File::Path';
requires 'File::Slurp';
requires 'Geography::NationalGrid';
requires 'Getopt::Long::Descriptive';
requires 'HTML::Entities';
requires 'HTTP::Request::Common';
requires 'Image::Size';
requires 'IO::String';
requires 'JSON';
requires 'JSON::XS';
requires 'Locale::gettext';
requires 'LWP::Simple';
requires 'LWP::UserAgent';
requires 'Math::Trig';
requires 'Module::Pluggable';
requires 'Moose';
requires 'namespace::autoclean';
requires 'Net::Domain::TLD';
requires 'Net::SMTP::SSL';
requires 'Net::SMTP::TLS';
requires 'Path::Class';
requires 'POSIX';
requires 'Readonly';
requires 'Regexp::Common';
requires 'Scalar::Util';
requires 'Statistics::Distributions';
requires 'Storable';
requires 'Template::Plugin::Comma';
requires 'Text::CSV';
requires 'URI';
requires 'URI::Escape';
requires 'URI::QueryParam';
requires 'XML::RSS';
requires 'XML::Simple';
requires 'YAML';
feature 'uk', 'FixMyStreet.com specific requirements' => sub {
# East Hampshire
requires 'SOAP::Lite';
# Barnet
# TODO: This can perhaps be removed since Barnet switched to email for problem reports
requires 'SOAP::WSDL';
};
feature 'open311-endpoint', 'Open311::Endpoint specific requirements' => sub {
requires 'Web::Simple';
requires 'Data::Rx';
requires 'MooX::HandlesVia';
requires 'Types::Standard';
requires 'LWP::Protocol::PSGI'; # for testing end-to-end
requires 'DateTime::Format::Oracle'; # for EXOR
};
feature 'zurich', 'Zueri wie neu specific requirements' => sub {
# # Geocoder
requires 'SOAP::Lite';
};
# Moderation by from_body user
requires 'Algorithm::Diff';
# Modules used by css watcher
requires 'File::ChangeNotify';
requires 'Path::Tiny';
requires 'File::Find::Rule';
feature 'run-tests', 'Spin up a test database and config to run tests' => sub {
requires 'Test::PostgreSQL';
};
# Modules used by the test suite
requires 'CGI::Simple';
requires 'HTTP::Headers';
requires 'HTTP::Response';
requires 'Sort::Key';
requires 'Sub::Override';
requires 'Test::Exception';
requires 'Test::LongString';
requires 'Test::MockTime';
requires 'Test::More', '0.88';
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...