Remove MockObject from Makefile.PL
[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::Exception';
42
43 # aggregate tests if AGGREGATE_TESTS is set and a recent Test::Aggregate is available
44 if ($ENV{AGGREGATE_TESTS} && can_use('Test::Aggregate', '0.34_01')) {
45     test_requires('Test::Aggregate', '0.34_01');
46 }
47 else {
48     tests join q{ },
49         grep { $_ ne 't/aggregate.t' }
50         map  { glob } qw[t/*.t t/aggregate/*.t];
51 }
52
53 my @force_build_requires_if_author = qw(
54   Test::NoTabs
55   Test::Pod
56   Test::Pod::Coverage
57   Pod::Coverage
58 );
59
60 if ($Module::Install::AUTHOR) {
61     foreach my $module (@force_build_requires_if_author) {
62         build_requires $module;
63     }
64     darwin_check_no_resource_forks();
65 }
66
67 install_script glob('script/*.pl');
68 auto_install;
69 WriteAll;
70
71 if ($Module::Install::AUTHOR) {
72
73   # Strip out the author only build_requires from META.yml
74   # Need to do this _after_ WriteAll else it looses track of them
75   strip_author_only_build_requires(@force_build_requires_if_author, 'Test::Aggregate');
76
77   Meta->{values}{resources} = [
78     [ 'MailingList' => 'http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst' ],
79     [ 'IRC'         => 'irc://irc.perl.org/#catalyst' ],
80     [ 'license',    => 'http://dev.perl.org/licenses/' ],
81     [ 'homepage',   => 'http://dev.catalyst.perl.org/'],
82     [ 'repository', => 'http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Runtime/' ],
83   ];
84
85   Meta->write;
86 }
87
88 print <<"EOF";
89
90  Important:
91
92     This library is for running Catalyst applications.
93
94     For development and use of catalyst.pl and myapp_create.pl, make sure
95     you also install the development tools package Catalyst::Devel.
96
97         perl -MCPANPLUS -e 'install Catalyst::Devel' # or
98         perl -MCPAN -e 'install Catalyst::Devel'
99
100     To get some commonly used plugins, as well as the TT view and DBIC 
101     model, install Task::Catalyst in the same way.
102
103  Have fun!
104 EOF
105
106 # NOTE - This is the version number of the _incompatible_ code,
107 #        not the version number of the fixed version.
108 my %conflicts = (
109     'Catalyst::Component::ACCEPT_CONTEXT' => '0.06',
110     'Catalyst::Plugin::ENV' => '9999', # This plugin is just stupid, full stop
111                                        # should have been a core fix.
112     'Catalyst::Plugin::Unicode::Encoding' => '0.2',
113     'Catalyst::Authentication::Credential::HTTP' => '1.009',
114     'Catalyst::Plugin::Session::Store::File' => '0.16',
115     'Catalyst::Plugin::Session' => '0.21',
116     'Catalyst::Plugin::Session::State::Cookie' => '0.10',
117     'Catalyst::Plugin::Session::Store::FastMmap' => '0.09',
118     'Catalyst::Controller::AllowDisable' => '0.03',
119     'Reaction' => '0.001999',
120     'Catalyst::Plugin::Upload::Image::Magick' => '0.03',
121     'Catalyst::Plugin::ConfigLoader'   => '0.22', # Older versions work but
122                                                   # throw Data::Visitor warns
123     'Catalyst::Devel'                  => '0.09',
124     'Catalyst::Plugin::SmartURI'       => '0.032',
125     'CatalystX::CRUD'                  => '0.37',
126     'Catalyst::Action::RenderView'     => '0.07',
127     'Catalyst::Plugin::DebugCookie'    => '0.999002',
128     'Catalyst::Plugin::Authentication' => '0.100091',
129     'CatalystX::Imports'               => '0.03',
130     'Catalyst::Plugin::HashedCookies'  => '1.03',
131     'Catalyst::Action::REST'           => '0.67',
132     'CatalystX::CRUD'                  => '0.42',
133     'CatalystX::CRUD::Model::RDBO'     => '0.20',
134 );
135 check_conflicts(%conflicts);
136
137 # End of script, helper functions below.
138
139 sub darwin_check_no_resource_forks {
140     if ($^O eq 'darwin') {
141         my $osx_ver = `/usr/bin/sw_vers -productVersion`;
142         chomp $osx_ver;
143
144         # TAR on 10.4 wants COPY_EXTENDED_ATTRIBUTES_DISABLE
145         # On 10.5 (Leopard) it wants COPYFILE_DISABLE
146         my $attr = $osx_ver eq '10.5' ? 'COPYFILE_DISABLE' : 'COPY_EXTENDED_ATTRIBUTES_DISABLE';
147
148         makemaker_args(dist => { PREOP => qq{\@if [ "\$\$$attr" != "true" ]; then}.
149                                           qq{ echo "You must set the ENV variable $attr to true,"; }.
150                                           ' echo "to avoid getting resource forks in your dist."; exit 255; fi' });
151         }
152 }
153
154 sub strip_author_only_build_requires {
155     my @build_requires_to_strip = @_;
156     Meta->{values}{build_requires} = [ grep {
157       my $ok = 1;
158       foreach my $module (@build_requires_to_strip) {
159         if ($_->[0] =~ /$module/) {
160           $ok = 0;
161           last;
162         }
163       }
164       $ok;
165     } @{Meta->{values}{build_requires}} ];
166 }
167
168 sub check_conflicts {
169     my %conflicts = @_;
170
171     my %conflicts_found;
172     for my $mod ( sort keys %conflicts ) {
173         eval "require($mod)";
174         next if $@;
175
176         my $installed = $mod->VERSION();
177         $conflicts_found{$mod} = $installed if ( $installed le $conflicts{$mod} );
178     }
179
180     return unless scalar keys %conflicts_found;
181
182     print <<"EOF";
183
184  WARNING:
185
186     This version of Catalyst conflicts with the versions of
187     some components you have installed.
188
189     You will need to upgrade these modules after installing
190     this version of Catalyst.
191
192     List of the conflicting components and their installed versions:
193
194 EOF
195
196     foreach my $mod (keys %conflicts_found) {
197         print sprintf("    %s => %s\n", $mod, $conflicts_found{$mod});
198     }
199     print "\n";
200
201     # More or less copied from Module::Build, via Moose
202     return if $ENV{PERL_MM_USE_DEFAULT};
203     return unless -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT));
204
205     sleep 4;
206 }