Can has sane version plzkthnx?
[catagits/Catalyst-Runtime.git] / Makefile.PL
1 use inc::Module::Install 0.64;
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 'Scope::Upper' => '0.06';
10 requires 'MooseX::Emulate::Class::Accessor::Fast' => '0.00801';
11 requires 'Moose' => '0.73';
12 requires 'MooseX::MethodAttributes::Inheritable' => '0.05';
13 requires 'Carp';
14 requires 'Class::C3::Adopt::NEXT' => '0.07';
15 requires 'Class::MOP' => '0.79';
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.5';
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 # Run aggregate tests if AGGREGATE_TESTS environment = 1, but not if it = 0
44 # Otherwise default to using Test::Aggregate if installed, but not requiring it.
45 if (   ( exists $ENV{AGGREGATE_TESTS} && !$ENV{AGGREGATE_TESTS})
46     || (!exists $ENV{AGGREGATE_TESTS} && !can_use('Test::Aggregate', '0.34_01'))) {
47     tests join q{ },
48         grep { $_ ne 't/aggregate.t' }
49         map  { glob } qw[t/*.t t/aggregate/*.t];
50 }
51 else {
52     test_requires('Test::Aggregate', '0.34_01');
53 }
54 my @force_build_requires_if_author = qw(
55   Test::NoTabs
56   Test::Pod
57   Test::Pod::Coverage
58   Pod::Coverage
59 );
60
61 if ($Module::Install::AUTHOR) {
62     foreach my $module (@force_build_requires_if_author) {
63         build_requires $module;
64     }
65     darwin_check_no_resource_forks();
66 }
67
68 install_script glob('script/*.pl');
69 auto_install;
70 WriteAll;
71
72 if ($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
76   strip_author_only_build_requires(@force_build_requires_if_author);
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/' ],
84   ];
85
86   Meta->write;
87 }
88
89 print <<"EOF";
90
91  Important:
92
93     This library is for running Catalyst applications.
94
95     For development and use of catalyst.pl and myapp_create.pl, make sure
96     you also install the development tools package Catalyst::Devel.
97
98         perl -MCPANPLUS -e 'install Catalyst::Devel' # or
99         perl -MCPAN -e 'install Catalyst::Devel'
100
101     To get some commonly used plugins, as well as the TT view and DBIC 
102     model, install Task::Catalyst in the same way.
103
104  Have fun!
105 EOF
106
107 # NOTE - This is the version number of the _incompatible_ code,
108 #        not the version number of the fixed version.
109 my %conflicts = (
110     'Catalyst::Devel'                  => '0.09',
111     'Catalyst::Plugin::SmartURI'       => '0.029',
112     'CatalystX::CRUD'                  => '0.37',
113     'Catalyst::Action::RenderView'     => '0.07',
114     'Catalyst::Plugin::DebugCookie'    => '0.999002',
115     'Catalyst::Plugin::Authentication' => '0.100091',
116     'CatalystX::Imports'               => '0.03',
117     'Catalyst::Plugin::HashedCookies'  => '1.03',
118 );
119 check_conflicts(%conflicts);
120
121 # End of script, helper functions below.
122
123 sub darwin_check_no_resource_forks {
124     if ($^O eq 'darwin') {
125         my $osx_ver = `/usr/bin/sw_vers -productVersion`;
126         chomp $osx_ver;
127
128         # TAR on 10.4 wants COPY_EXTENDED_ATTRIBUTES_DISABLE
129         # On 10.5 (Leopard) it wants COPYFILE_DISABLE
130         my $attr = $osx_ver eq '10.5' ? 'COPYFILE_DISABLE' : 'COPY_EXTENDED_ATTRIBUTES_DISABLE';
131
132         makemaker_args(dist => { PREOP => qq{\@if [ "\$\$$attr" != "true" ]; then}.
133                                           qq{ echo "You must set the ENV variable $attr to true,"; }.
134                                           ' echo "to avoid getting resource forks in your dist."; exit 255; fi' });
135         }
136 }
137
138 sub strip_author_only_build_requires {
139     my @build_requires_to_strip = @_;
140     Meta->{values}{build_requires} = [ grep {
141       my $ok = 1;
142       foreach my $module (@build_requires_to_strip) {
143         if ($_->[0] =~ /$module/) {
144           $ok = 0;
145           last;
146         }
147       }
148       $ok;
149     } @{Meta->{values}{build_requires}} ];
150 }
151
152 sub check_conflicts {
153     my %conflicts = @_;
154
155     my %conflicts_found;
156     for my $mod ( sort keys %conflicts ) {
157         eval "require($mod)";
158         next if $@;
159
160         my $installed = $mod->VERSION();
161         $conflicts_found{$mod} = $installed if ( $installed le $conflicts{$mod} );
162     }
163
164     return unless scalar keys %conflicts_found;
165
166     print <<"EOF";
167
168  WARNING:
169
170     This version of Catalyst conflicts with the versions of
171     some components you have installed.
172
173     You will need to upgrade these modules after installing
174     this version of Catalyst.
175
176     List of the conflicting components and their installed versions:
177
178 EOF
179
180     foreach my $mod (keys %conflicts_found) {
181         print sprintf("    %s => %s\n", $mod, $conflicts_found{$mod});
182     }
183     print "\n";
184
185     # More or less copied from Module::Build, via Moose
186     return if $ENV{PERL_MM_USE_DEFAULT};
187     return unless -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT));
188
189     sleep 4;
190 }