Detect redispatch exceptions by a class check, not by checking the exception message.
[catagits/Catalyst-Runtime.git] / Makefile.PL
CommitLineData
c66a708f 1use inc::Module::Install 0.87;
022d1311 2
2f381252 3perl_version '5.008001';
0ba80bce 4
341d40d1 5name 'Catalyst-Runtime';
6all_from 'lib/Catalyst/Runtime.pm';
24b3262a 7
64b2a0de 8requires 'namespace::clean';
acca8cd5 9requires 'B::Hooks::EndOfScope' => '0.08';
0a0c74aa 10requires 'MooseX::Emulate::Class::Accessor::Fast' => '0.00801';
fec3ecdf 11requires 'Class::MOP' => '0.83';
3db3a59f 12requires 'Moose' => '0.78';
d75b106e 13requires 'MooseX::MethodAttributes::Inheritable' => '0.12';
9ce44430 14requires 'Carp';
269408a4 15requires 'Class::C3::Adopt::NEXT' => '0.07';
fa32ac82 16requires 'CGI::Simple::Cookie';
f63c03e4 17requires 'Data::Dump';
24b3262a 18requires 'File::Modified';
19requires 'HTML::Entities';
2f381252 20requires 'HTTP::Body' => '1.04'; # makes uploadtmp work
1e514a51 21requires 'HTTP::Headers' => '1.64';
24b3262a 22requires 'HTTP::Request';
23requires 'HTTP::Response';
995f7cbd 24requires 'HTTP::Request::AsCGI' => '0.8';
24b3262a 25requires 'LWP::UserAgent';
d8e0de58 26requires 'Module::Pluggable' => '3.01';
1e514a51 27requires 'Path::Class' => '0.09';
24b3262a 28requires 'Scalar::Util';
64edd785 29requires 'Sub::Exporter';
1e514a51 30requires 'Text::SimpleTable' => '0.03';
24b3262a 31requires 'Time::HiRes';
1e514a51 32requires 'Tree::Simple' => '1.15';
24b3262a 33requires 'Tree::Simple::Visitor::FindByPath';
1e514a51 34requires 'URI' => '1.35';
ea0e58d9 35requires 'Text::Balanced'; # core in 5.8.x but mentioned for completeness
6f1f968a 36requires 'MRO::Compat';
17b3d800 37requires 'String::RewritePrefix' => '0.004'; # Catalyst::Utils::resolve_namespace
a9835938 38
65b708a6 39recommends 'B::Hooks::OP::Check::StashChange';
40
1a667b7c 41test_requires 'Class::Data::Inheritable';
cdc96667 42test_requires 'Test::Exception';
1a667b7c 43
e262f38e 44# aggregate tests if AGGREGATE_TESTS is set and a recent Test::Aggregate is available
45if ($ENV{AGGREGATE_TESTS} && can_use('Test::Aggregate', '0.34_01')) {
46 test_requires('Test::Aggregate', '0.34_01');
47}
48else {
bf6d41be 49 tests join q{ },
50 grep { $_ ne 't/aggregate.t' }
51 map { glob } qw[t/*.t t/aggregate/*.t];
52}
e262f38e 53
621f279b 54my @force_build_requires_if_author = qw(
0a0c74aa 55 Test::NoTabs
56 Test::Pod
57 Test::Pod::Coverage
621f279b 58 Pod::Coverage
59);
60
61if ($Module::Install::AUTHOR) {
c102399c 62 foreach my $module (@force_build_requires_if_author) {
63 build_requires $module;
64 }
65 darwin_check_no_resource_forks();
de925c79 66}
67
24b3262a 68install_script glob('script/*.pl');
b6395bce 69auto_install;
24b3262a 70WriteAll;
614f3ad6 71
621f279b 72if ($Module::Install::AUTHOR) {
73
74 # Strip out the author only build_requires from META.yml
75 # Need to do this _after_ WriteAll else it looses track of them
c508cb5c 76 strip_author_only_build_requires(@force_build_requires_if_author, 'Test::Aggregate');
c102399c 77
78 Meta->{values}{resources} = [
79 [ 'MailingList' => 'http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst' ],
80 [ 'IRC' => 'irc://irc.perl.org/#catalyst' ],
81 [ 'license', => 'http://dev.perl.org/licenses/' ],
82 [ 'homepage', => 'http://dev.catalyst.perl.org/'],
83 [ 'repository', => 'http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Runtime/' ],
621f279b 84 ];
85
86 Meta->write;
87}
c102399c 88
614f3ad6 89print <<"EOF";
90
91 Important:
a5b5152b 92
0187a79d 93 This library is for running Catalyst applications.
94
341d40d1 95 For development and use of catalyst.pl and myapp_create.pl, make sure
96 you also install the development tools package Catalyst::Devel.
f63c03e4 97
6bc14aef 98 perl -MCPANPLUS -e 'install Catalyst::Devel' # or
99 perl -MCPAN -e 'install Catalyst::Devel'
100
ac5c933b 101 To get some commonly used plugins, as well as the TT view and DBIC
6bc14aef 102 model, install Task::Catalyst in the same way.
a5b5152b 103
a5b5152b 104 Have fun!
614f3ad6 105EOF
64d96919 106
d31581c6 107# NOTE - This is the version number of the _incompatible_ code,
108# not the version number of the fixed version.
109my %conflicts = (
33632a44 110 'Catalyst::Component::ACCEPT_CONTEXT' => '0.06',
d75b106e 111 'Catalyst::Plugin::ENV' => '9999', # This plugin is just stupid, full stop
112 # should have been a core fix.
71b46798 113 'Catalyst::Plugin::Unicode::Encoding' => '0.2',
c49128b1 114 'Catalyst::Authentication::Credential::HTTP' => '1.009',
3db3a59f 115 'Catalyst::Plugin::Session::Store::File' => '0.16',
1d9dd180 116 'Catalyst::Plugin::Session' => '0.21',
117 'Catalyst::Plugin::Session::State::Cookie' => '0.10',
3db3a59f 118 'Catalyst::Plugin::Session::Store::FastMmap' => '0.09',
90e5b064 119 'Catalyst::Controller::AllowDisable' => '0.03',
b7abc49b 120 'Reaction' => '0.001999',
800a9f17 121 'Catalyst::Plugin::Upload::Image::Magick' => '0.03',
d31581c6 122 'Catalyst::Plugin::ConfigLoader' => '0.22', # Older versions work but
123 # throw Data::Visitor warns
124 'Catalyst::Devel' => '0.09',
3db3a59f 125 'Catalyst::Plugin::SmartURI' => '0.032',
d31581c6 126 'CatalystX::CRUD' => '0.37',
127 'Catalyst::Action::RenderView' => '0.07',
128 'Catalyst::Plugin::DebugCookie' => '0.999002',
129 'Catalyst::Plugin::Authentication' => '0.100091',
130 'CatalystX::Imports' => '0.03',
131 'Catalyst::Plugin::HashedCookies' => '1.03',
132 'Catalyst::Action::REST' => '0.67',
0f64a277 133 'CatalystX::CRUD' => '0.42',
134 'CatalystX::CRUD::Model::RDBO' => '0.20',
d31581c6 135);
136check_conflicts(%conflicts);
137
c102399c 138# End of script, helper functions below.
139
140sub darwin_check_no_resource_forks {
141 if ($^O eq 'darwin') {
142 my $osx_ver = `/usr/bin/sw_vers -productVersion`;
143 chomp $osx_ver;
144
145 # TAR on 10.4 wants COPY_EXTENDED_ATTRIBUTES_DISABLE
146 # On 10.5 (Leopard) it wants COPYFILE_DISABLE
147 my $attr = $osx_ver eq '10.5' ? 'COPYFILE_DISABLE' : 'COPY_EXTENDED_ATTRIBUTES_DISABLE';
148
149 makemaker_args(dist => { PREOP => qq{\@if [ "\$\$$attr" != "true" ]; then}.
150 qq{ echo "You must set the ENV variable $attr to true,"; }.
151 ' echo "to avoid getting resource forks in your dist."; exit 255; fi' });
152 }
153}
154
d31581c6 155sub strip_author_only_build_requires {
156 my @build_requires_to_strip = @_;
157 Meta->{values}{build_requires} = [ grep {
c102399c 158 my $ok = 1;
d31581c6 159 foreach my $module (@build_requires_to_strip) {
c102399c 160 if ($_->[0] =~ /$module/) {
161 $ok = 0;
162 last;
163 }
164 }
165 $ok;
d31581c6 166 } @{Meta->{values}{build_requires}} ];
c102399c 167}
64d96919 168
64d96919 169sub check_conflicts {
c102399c 170 my %conflicts = @_;
171
172 my %conflicts_found;
64d96919 173 for my $mod ( sort keys %conflicts ) {
dc0e73a3 174 eval "require($mod)";
64d96919 175 next if $@;
176
177 my $installed = $mod->VERSION();
d31581c6 178 $conflicts_found{$mod} = $installed if ( $installed le $conflicts{$mod} );
c102399c 179 }
180
181 return unless scalar keys %conflicts_found;
182
183 print <<"EOF";
64d96919 184
c102399c 185 WARNING:
64d96919 186
c102399c 187 This version of Catalyst conflicts with the versions of
188 some components you have installed.
64d96919 189
c102399c 190 You will need to upgrade these modules after installing
64d96919 191 this version of Catalyst.
c102399c 192
193 List of the conflicting components and their installed versions:
64d96919 194
195EOF
196
c102399c 197 foreach my $mod (keys %conflicts_found) {
198 print sprintf(" %s => %s\n", $mod, $conflicts_found{$mod});
64d96919 199 }
d31581c6 200 print "\n";
64d96919 201
d31581c6 202 # More or less copied from Module::Build, via Moose
203 return if $ENV{PERL_MM_USE_DEFAULT};
204 return unless -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT));
205
206 sleep 4;
64d96919 207}