Fix the meta method test
[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.10';
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';
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::Plugin::Session::Store::File' => '0.16',
110     'Catalyst::Plugin::Session' => '0.21',
111     'Catalyst::Plugin::Session::State::Cookie' => '0.10',
112     'Catalyst::Plugin::Session::Store::FastMmap' => '0.09',
113     'Catalyst::Controller::AllowDisable' => '0.03',
114     'Reaction' => '0.001999',
115     'Catalyst::Plugin::Upload::Image::Magick' => '0.03',
116     'Catalyst::Plugin::ConfigLoader'   => '0.22', # Older versions work but
117                                                   # throw Data::Visitor warns
118     'Catalyst::Devel'                  => '0.09',
119     'Catalyst::Plugin::SmartURI'       => '0.032',
120     'CatalystX::CRUD'                  => '0.37',
121     'Catalyst::Action::RenderView'     => '0.07',
122     'Catalyst::Plugin::DebugCookie'    => '0.999002',
123     'Catalyst::Plugin::Authentication' => '0.100091',
124     'CatalystX::Imports'               => '0.03',
125     'Catalyst::Plugin::HashedCookies'  => '1.03',
126     'Catalyst::Action::REST'           => '0.67',
127     'CatalystX::CRUD'                  => '0.42',
128     'CatalystX::CRUD::Model::RDBO'     => '0.20',
129 );
130 check_conflicts(%conflicts);
131
132 # End of script, helper functions below.
133
134 sub darwin_check_no_resource_forks {
135     if ($^O eq 'darwin') {
136         my $osx_ver = `/usr/bin/sw_vers -productVersion`;
137         chomp $osx_ver;
138
139         # TAR on 10.4 wants COPY_EXTENDED_ATTRIBUTES_DISABLE
140         # On 10.5 (Leopard) it wants COPYFILE_DISABLE
141         my $attr = $osx_ver eq '10.5' ? 'COPYFILE_DISABLE' : 'COPY_EXTENDED_ATTRIBUTES_DISABLE';
142
143         makemaker_args(dist => { PREOP => qq{\@if [ "\$\$$attr" != "true" ]; then}.
144                                           qq{ echo "You must set the ENV variable $attr to true,"; }.
145                                           ' echo "to avoid getting resource forks in your dist."; exit 255; fi' });
146         }
147 }
148
149 sub strip_author_only_build_requires {
150     my @build_requires_to_strip = @_;
151     Meta->{values}{build_requires} = [ grep {
152       my $ok = 1;
153       foreach my $module (@build_requires_to_strip) {
154         if ($_->[0] =~ /$module/) {
155           $ok = 0;
156           last;
157         }
158       }
159       $ok;
160     } @{Meta->{values}{build_requires}} ];
161 }
162
163 sub check_conflicts {
164     my %conflicts = @_;
165
166     my %conflicts_found;
167     for my $mod ( sort keys %conflicts ) {
168         eval "require($mod)";
169         next if $@;
170
171         my $installed = $mod->VERSION();
172         $conflicts_found{$mod} = $installed if ( $installed le $conflicts{$mod} );
173     }
174
175     return unless scalar keys %conflicts_found;
176
177     print <<"EOF";
178
179  WARNING:
180
181     This version of Catalyst conflicts with the versions of
182     some components you have installed.
183
184     You will need to upgrade these modules after installing
185     this version of Catalyst.
186
187     List of the conflicting components and their installed versions:
188
189 EOF
190
191     foreach my $mod (keys %conflicts_found) {
192         print sprintf("    %s => %s\n", $mod, $conflicts_found{$mod});
193     }
194     print "\n";
195
196     # More or less copied from Module::Build, via Moose
197     return if $ENV{PERL_MM_USE_DEFAULT};
198     return unless -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT));
199
200     sleep 4;
201 }