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