Port to Module::Install::AuthorRequires.
[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::autoclean';
9 requires 'namespace::clean';
10 requires 'B::Hooks::EndOfScope' => '0.08';
11 requires 'MooseX::Emulate::Class::Accessor::Fast' => '0.00801';
12 requires 'Class::MOP' => '0.83';
13 requires 'Moose' => '0.78';
14 requires 'MooseX::MethodAttributes::Inheritable' => '0.12';
15 requires 'Carp';
16 requires 'Class::C3::Adopt::NEXT' => '0.07';
17 requires 'CGI::Simple::Cookie';
18 requires 'Data::Dump';
19 requires 'File::Modified';
20 requires 'HTML::Entities';
21 requires 'HTTP::Body'    => '1.04'; # makes uploadtmp work
22 requires 'HTTP::Headers' => '1.64';
23 requires 'HTTP::Request';
24 requires 'HTTP::Response';
25 requires 'HTTP::Request::AsCGI' => '0.8';
26 requires 'LWP::UserAgent';
27 requires 'Module::Pluggable' => '3.01';
28 requires 'Path::Class' => '0.09';
29 requires 'Scalar::Util';
30 requires 'Sub::Exporter';
31 requires 'Text::SimpleTable' => '0.03';
32 requires 'Time::HiRes';
33 requires 'Tree::Simple' => '1.15';
34 requires 'Tree::Simple::Visitor::FindByPath';
35 requires 'URI' => '1.35';
36 requires 'Task::Weaken';
37 requires 'Text::Balanced'; # core in 5.8.x but mentioned for completeness
38 requires 'MRO::Compat';
39 requires 'String::RewritePrefix' => '0.004'; # Catalyst::Utils::resolve_namespace
40
41 recommends 'B::Hooks::OP::Check::StashChange';
42
43 test_requires 'Class::Data::Inheritable';
44 test_requires 'Test::Exception';
45
46 # aggregate tests if AGGREGATE_TESTS is set and a recent Test::Aggregate and a Test::Simple it works with is available
47 if ($ENV{AGGREGATE_TESTS} && can_use('Test::Simple', '0.88') && can_use('Test::Aggregate', '0.35_05')) {
48     author_requires('Test::Aggregate', '0.35_05');
49     author_requires('Test::Simple', '0.88');
50 }
51 else {
52     tests join q{ },
53         grep { $_ ne 't/aggregate.t' }
54         map  { glob } qw[t/*.t t/aggregate/*.t];
55 }
56
57 author_requires($_) for qw(
58   Test::NoTabs
59   Test::Pod
60   Test::Pod::Coverage
61   Pod::Coverage
62 );
63
64 if ($Module::Install::AUTHOR) {
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   Meta->{values}{resources} = [
74     [ 'MailingList' => 'http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst' ],
75     [ 'IRC'         => 'irc://irc.perl.org/#catalyst' ],
76     [ 'license',    => 'http://dev.perl.org/licenses/' ],
77     [ 'homepage',   => 'http://dev.catalyst.perl.org/'],
78     [ 'repository', => 'http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Runtime/' ],
79   ];
80
81   Meta->write;
82 }
83
84 print <<"EOF";
85
86  Important:
87
88     This library is for running Catalyst applications.
89
90     For development and use of catalyst.pl and myapp_create.pl, make sure
91     you also install the development tools package Catalyst::Devel.
92
93         perl -MCPANPLUS -e 'install Catalyst::Devel' # or
94         perl -MCPAN -e 'install Catalyst::Devel'
95
96     To get some commonly used plugins, as well as the TT view and DBIC 
97     model, install Task::Catalyst in the same way.
98
99  Have fun!
100 EOF
101
102 # NOTE - This is the version number of the _incompatible_ code,
103 #        not the version number of the fixed version.
104 my %conflicts = (
105     'Catalyst::Component::ACCEPT_CONTEXT' => '0.06',
106     'Catalyst::Plugin::ENV' => '9999', # This plugin is just stupid, full stop
107                                        # should have been a core fix.
108     'Catalyst::Plugin::Unicode::Encoding' => '0.2',
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 check_conflicts {
151     my %conflicts = @_;
152
153     my %conflicts_found;
154     for my $mod ( sort keys %conflicts ) {
155         eval "require($mod)";
156         next if $@;
157
158         my $installed = $mod->VERSION();
159         $conflicts_found{$mod} = $installed if ( $installed le $conflicts{$mod} );
160     }
161
162     return unless scalar keys %conflicts_found;
163
164     print <<"EOF";
165
166  WARNING:
167
168     This version of Catalyst conflicts with the versions of
169     some components you have installed.
170
171     You will need to upgrade these modules after installing
172     this version of Catalyst.
173
174     List of the conflicting components and their installed versions:
175
176 EOF
177
178     foreach my $mod (keys %conflicts_found) {
179         print sprintf("    %s => %s\n", $mod, $conflicts_found{$mod});
180     }
181     print "\n";
182
183     # More or less copied from Module::Build, via Moose
184     return if $ENV{PERL_MM_USE_DEFAULT};
185     return unless -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT));
186
187     sleep 4;
188 }