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