Bump Moose dep, remove MOP dep as Moose already depends on recent enough version...
[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.76';
12 requires 'MooseX::MethodAttributes::Inheritable' => '0.09';
13 requires 'Carp';
14 requires 'Class::C3::Adopt::NEXT' => '0.07';
15 requires 'CGI::Simple::Cookie';
16 requires 'Data::Dump';
17 requires 'File::Modified';
18 requires 'HTML::Entities';
19 requires 'HTTP::Body'    => '1.04'; # makes uploadtmp work
20 requires 'HTTP::Headers' => '1.64';
21 requires 'HTTP::Request';
22 requires 'HTTP::Response';
23 requires 'HTTP::Request::AsCGI' => '0.8';
24 requires 'LWP::UserAgent';
25 requires 'Module::Pluggable' => '3.01';
26 requires 'Path::Class' => '0.09';
27 requires 'Scalar::Util';
28 requires 'Sub::Exporter';
29 requires 'Text::SimpleTable' => '0.03';
30 requires 'Time::HiRes';
31 requires 'Tree::Simple' => '1.15';
32 requires 'Tree::Simple::Visitor::FindByPath';
33 requires 'URI' => '1.35';
34 requires 'Text::Balanced'; # core in 5.8.x but mentioned for completeness
35 requires 'MRO::Compat';
36
37 recommends 'B::Hooks::OP::Check::StashChange';
38
39 test_requires 'Class::Data::Inheritable';
40 test_requires 'Test::MockObject';
41
42 # aggregate tests if AGGREGATE_TESTS is set and a recent Test::Aggregate is available
43 if ($ENV{AGGREGATE_TESTS} && can_use('Test::Aggregate', '0.34_01')) {
44     test_requires('Test::Aggregate', '0.34_01');
45 }
46 else {
47     tests join q{ },
48         grep { $_ ne 't/aggregate.t' }
49         map  { glob } qw[t/*.t t/aggregate/*.t];
50 }
51
52 my @force_build_requires_if_author = qw(
53   Test::NoTabs
54   Test::Pod
55   Test::Pod::Coverage
56   Pod::Coverage
57 );
58
59 if ($Module::Install::AUTHOR) {
60     foreach my $module (@force_build_requires_if_author) {
61         build_requires $module;
62     }
63     darwin_check_no_resource_forks();
64 }
65
66 install_script glob('script/*.pl');
67 auto_install;
68 WriteAll;
69
70 if ($Module::Install::AUTHOR) {
71
72   # Strip out the author only build_requires from META.yml
73   # Need to do this _after_ WriteAll else it looses track of them
74   strip_author_only_build_requires(@force_build_requires_if_author);
75
76   Meta->{values}{resources} = [
77     [ 'MailingList' => 'http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst' ],
78     [ 'IRC'         => 'irc://irc.perl.org/#catalyst' ],
79     [ 'license',    => 'http://dev.perl.org/licenses/' ],
80     [ 'homepage',   => 'http://dev.catalyst.perl.org/'],
81     [ 'repository', => 'http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Runtime/' ],
82   ];
83
84   Meta->write;
85 }
86
87 print <<"EOF";
88
89  Important:
90
91     This library is for running Catalyst applications.
92
93     For development and use of catalyst.pl and myapp_create.pl, make sure
94     you also install the development tools package Catalyst::Devel.
95
96         perl -MCPANPLUS -e 'install Catalyst::Devel' # or
97         perl -MCPAN -e 'install Catalyst::Devel'
98
99     To get some commonly used plugins, as well as the TT view and DBIC 
100     model, install Task::Catalyst in the same way.
101
102  Have fun!
103 EOF
104
105 # NOTE - This is the version number of the _incompatible_ code,
106 #        not the version number of the fixed version.
107 my %conflicts = (
108     'Catalyst::Plugin::ConfigLoader'   => '0.22', # Older versions work but
109                                                   # throw Data::Visitor warns
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     'Catalyst::Action::REST'           => '0.67',
119 );
120 check_conflicts(%conflicts);
121
122 # End of script, helper functions below.
123
124 sub darwin_check_no_resource_forks {
125     if ($^O eq 'darwin') {
126         my $osx_ver = `/usr/bin/sw_vers -productVersion`;
127         chomp $osx_ver;
128
129         # TAR on 10.4 wants COPY_EXTENDED_ATTRIBUTES_DISABLE
130         # On 10.5 (Leopard) it wants COPYFILE_DISABLE
131         my $attr = $osx_ver eq '10.5' ? 'COPYFILE_DISABLE' : 'COPY_EXTENDED_ATTRIBUTES_DISABLE';
132
133         makemaker_args(dist => { PREOP => qq{\@if [ "\$\$$attr" != "true" ]; then}.
134                                           qq{ echo "You must set the ENV variable $attr to true,"; }.
135                                           ' echo "to avoid getting resource forks in your dist."; exit 255; fi' });
136         }
137 }
138
139 sub strip_author_only_build_requires {
140     my @build_requires_to_strip = @_;
141     Meta->{values}{build_requires} = [ grep {
142       my $ok = 1;
143       foreach my $module (@build_requires_to_strip) {
144         if ($_->[0] =~ /$module/) {
145           $ok = 0;
146           last;
147         }
148       }
149       $ok;
150     } @{Meta->{values}{build_requires}} ];
151 }
152
153 sub check_conflicts {
154     my %conflicts = @_;
155
156     my %conflicts_found;
157     for my $mod ( sort keys %conflicts ) {
158         eval "require($mod)";
159         next if $@;
160
161         my $installed = $mod->VERSION();
162         $conflicts_found{$mod} = $installed if ( $installed le $conflicts{$mod} );
163     }
164
165     return unless scalar keys %conflicts_found;
166
167     print <<"EOF";
168
169  WARNING:
170
171     This version of Catalyst conflicts with the versions of
172     some components you have installed.
173
174     You will need to upgrade these modules after installing
175     this version of Catalyst.
176
177     List of the conflicting components and their installed versions:
178
179 EOF
180
181     foreach my $mod (keys %conflicts_found) {
182         print sprintf("    %s => %s\n", $mod, $conflicts_found{$mod});
183     }
184     print "\n";
185
186     # More or less copied from Module::Build, via Moose
187     return if $ENV{PERL_MM_USE_DEFAULT};
188     return unless -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT));
189
190     sleep 4;
191 }