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