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