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