put Catalyst::Plugin::Test::MangleDollarUnderScore into a better namespace
[catagits/Catalyst-Runtime.git] / Makefile.PL
1 use inc::Module::Install 0.87;
2
3 perl_version '5.008001';
4
5 name 'Catalyst-Runtime';
6 all_from 'lib/Catalyst/Runtime.pm';
7
8 requires 'namespace::clean';
9 requires 'B::Hooks::EndOfScope' => '0.08';
10 requires 'MooseX::Emulate::Class::Accessor::Fast' => '0.00801';
11 requires 'Class::MOP' => '0.83';
12 requires 'Moose' => '0.78';
13 requires 'MooseX::MethodAttributes::Inheritable' => '0.12';
14 requires 'Carp';
15 requires 'Class::C3::Adopt::NEXT' => '0.07';
16 requires 'CGI::Simple::Cookie';
17 requires 'Data::Dump';
18 requires 'File::Modified';
19 requires 'HTML::Entities';
20 requires 'HTTP::Body'    => '1.04'; # makes uploadtmp work
21 requires 'HTTP::Headers' => '1.64';
22 requires 'HTTP::Request';
23 requires 'HTTP::Response';
24 requires 'HTTP::Request::AsCGI' => '0.8';
25 requires 'LWP::UserAgent';
26 requires 'Module::Pluggable' => '3.01';
27 requires 'Path::Class' => '0.09';
28 requires 'Scalar::Util';
29 requires 'Sub::Exporter';
30 requires 'Text::SimpleTable' => '0.03';
31 requires 'Time::HiRes';
32 requires 'Tree::Simple' => '1.15';
33 requires 'Tree::Simple::Visitor::FindByPath';
34 requires 'URI' => '1.35';
35 requires 'Text::Balanced'; # core in 5.8.x but mentioned for completeness
36 requires 'MRO::Compat';
37
38 recommends 'B::Hooks::OP::Check::StashChange';
39
40 test_requires 'Class::Data::Inheritable';
41 test_requires 'Test::MockObject' => '1.07'; # Newish (hah, 2006!) version to
42                                             # hopefully avoid broken distro
43                                             # packages (RT#46104)
44
45 # aggregate tests if AGGREGATE_TESTS is set and a recent Test::Aggregate is available
46 if ($ENV{AGGREGATE_TESTS} && can_use('Test::Aggregate', '0.34_01')) {
47     test_requires('Test::Aggregate', '0.34_01');
48 }
49 else {
50     tests join q{ },
51         grep { $_ ne 't/aggregate.t' }
52         map  { glob } qw[t/*.t t/aggregate/*.t];
53 }
54
55 my @force_build_requires_if_author = qw(
56   Test::NoTabs
57   Test::Pod
58   Test::Pod::Coverage
59   Pod::Coverage
60 );
61
62 if ($Module::Install::AUTHOR) {
63     foreach my $module (@force_build_requires_if_author) {
64         build_requires $module;
65     }
66     darwin_check_no_resource_forks();
67 }
68
69 install_script glob('script/*.pl');
70 auto_install;
71 WriteAll;
72
73 if ($Module::Install::AUTHOR) {
74
75   # Strip out the author only build_requires from META.yml
76   # Need to do this _after_ WriteAll else it looses track of them
77   strip_author_only_build_requires(@force_build_requires_if_author, 'Test::Aggregate');
78
79   Meta->{values}{resources} = [
80     [ 'MailingList' => 'http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst' ],
81     [ 'IRC'         => 'irc://irc.perl.org/#catalyst' ],
82     [ 'license',    => 'http://dev.perl.org/licenses/' ],
83     [ 'homepage',   => 'http://dev.catalyst.perl.org/'],
84     [ 'repository', => 'http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Runtime/' ],
85   ];
86
87   Meta->write;
88 }
89
90 print <<"EOF";
91
92  Important:
93
94     This library is for running Catalyst applications.
95
96     For development and use of catalyst.pl and myapp_create.pl, make sure
97     you also install the development tools package Catalyst::Devel.
98
99         perl -MCPANPLUS -e 'install Catalyst::Devel' # or
100         perl -MCPAN -e 'install Catalyst::Devel'
101
102     To get some commonly used plugins, as well as the TT view and DBIC 
103     model, install Task::Catalyst in the same way.
104
105  Have fun!
106 EOF
107
108 # NOTE - This is the version number of the _incompatible_ code,
109 #        not the version number of the fixed version.
110 my %conflicts = (
111     'Catalyst::Plugin::ENV' => '9999', # This plugin is just stupid, full stop
112                                        # should have been a core fix.
113     'Catalyst::Plugin::Unicode::Encoding' => '0.2',
114     'Catalyst::Authentication::Credential::HTTP' => '1.009',
115     'Catalyst::Plugin::Session::Store::File' => '0.16',
116     'Catalyst::Plugin::Session' => '0.21',
117     'Catalyst::Plugin::Session::State::Cookie' => '0.10',
118     'Catalyst::Plugin::Session::Store::FastMmap' => '0.09',
119     'Catalyst::Controller::AllowDisable' => '0.03',
120     'Reaction' => '0.001999',
121     'Catalyst::Plugin::Upload::Image::Magick' => '0.03',
122     'Catalyst::Plugin::ConfigLoader'   => '0.22', # Older versions work but
123                                                   # throw Data::Visitor warns
124     'Catalyst::Devel'                  => '0.09',
125     'Catalyst::Plugin::SmartURI'       => '0.032',
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',
133     'CatalystX::CRUD'                  => '0.42',
134     'CatalystX::CRUD::Model::RDBO'     => '0.20',
135 );
136 check_conflicts(%conflicts);
137
138 # End of script, helper functions below.
139
140 sub 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
155 sub strip_author_only_build_requires {
156     my @build_requires_to_strip = @_;
157     Meta->{values}{build_requires} = [ grep {
158       my $ok = 1;
159       foreach my $module (@build_requires_to_strip) {
160         if ($_->[0] =~ /$module/) {
161           $ok = 0;
162           last;
163         }
164       }
165       $ok;
166     } @{Meta->{values}{build_requires}} ];
167 }
168
169 sub check_conflicts {
170     my %conflicts = @_;
171
172     my %conflicts_found;
173     for my $mod ( sort keys %conflicts ) {
174         eval "require($mod)";
175         next if $@;
176
177         my $installed = $mod->VERSION();
178         $conflicts_found{$mod} = $installed if ( $installed le $conflicts{$mod} );
179     }
180
181     return unless scalar keys %conflicts_found;
182
183     print <<"EOF";
184
185  WARNING:
186
187     This version of Catalyst conflicts with the versions of
188     some components you have installed.
189
190     You will need to upgrade these modules after installing
191     this version of Catalyst.
192
193     List of the conflicting components and their installed versions:
194
195 EOF
196
197     foreach my $mod (keys %conflicts_found) {
198         print sprintf("    %s => %s\n", $mod, $conflicts_found{$mod});
199     }
200     print "\n";
201
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;
207 }