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