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