Adopt Catalyst::ClassData to latest Class::MOP::Class changes.
[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.00800';
11 requires 'Moose' => '0.70';
12 requires 'Carp';
13 requires 'Class::C3::Adopt::NEXT' => '0.07';
14 requires 'Class::MOP' => '0.79';
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.5';
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 # Run aggregate tests if AGGREGATE_TESTS environment = 1, but not if it = 0
43 # Otherwise default to using Test::Aggregate if installed, but not requiring it.
44 if (   ( exists $ENV{AGGREGATE_TESTS} && !$ENV{AGGREGATE_TESTS})
45     || (!exists $ENV{AGGREGATE_TESTS} && !can_use('Test::Aggregate', '0.34_01'))) {
46     tests join q{ },
47         grep { $_ ne 't/aggregate.t' }
48         map  { glob } qw[t/*.t t/aggregate/*.t];
49 }
50 else {
51     test_requires('Test::Aggregate', '0.34_01');
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);
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::SmartURI'       => '0.029',
110     'CatalystX::CRUD'                  => '0.37',
111     'Catalyst::Action::RenderView'     => '0.07',
112     'Catalyst::Plugin::DebugCookie'    => '0.999002',
113     'Catalyst::Plugin::Authentication' => '0.100091',
114     'CatalystX::Imports'               => '0.03',
115     'Catalyst::Plugin::HashedCookies'  => '1.03',
116 );
117 check_conflicts(%conflicts);
118
119 # End of script, helper functions below.
120
121 sub darwin_check_no_resource_forks {
122     if ($^O eq 'darwin') {
123         my $osx_ver = `/usr/bin/sw_vers -productVersion`;
124         chomp $osx_ver;
125
126         # TAR on 10.4 wants COPY_EXTENDED_ATTRIBUTES_DISABLE
127         # On 10.5 (Leopard) it wants COPYFILE_DISABLE
128         my $attr = $osx_ver eq '10.5' ? 'COPYFILE_DISABLE' : 'COPY_EXTENDED_ATTRIBUTES_DISABLE';
129
130         makemaker_args(dist => { PREOP => qq{\@if [ "\$\$$attr" != "true" ]; then}.
131                                           qq{ echo "You must set the ENV variable $attr to true,"; }.
132                                           ' echo "to avoid getting resource forks in your dist."; exit 255; fi' });
133         }
134 }
135
136 sub strip_author_only_build_requires {
137     my @build_requires_to_strip = @_;
138     Meta->{values}{build_requires} = [ grep {
139       my $ok = 1;
140       foreach my $module (@build_requires_to_strip) {
141         if ($_->[0] =~ /$module/) {
142           $ok = 0;
143           last;
144         }
145       }
146       $ok;
147     } @{Meta->{values}{build_requires}} ];
148 }
149
150 sub check_conflicts {
151     my %conflicts = @_;
152
153     my %conflicts_found;
154     for my $mod ( sort keys %conflicts ) {
155         eval "require($mod)";
156         next if $@;
157
158         my $installed = $mod->VERSION();
159         $conflicts_found{$mod} = $installed if ( $installed le $conflicts{$mod} );
160     }
161
162     return unless scalar keys %conflicts_found;
163
164     print <<"EOF";
165
166  WARNING:
167
168     This version of Catalyst conflicts with the versions of
169     some components you have installed.
170
171     You will need to upgrade these modules after installing
172     this version of Catalyst.
173
174     List of the conflicting components and their installed versions:
175
176 EOF
177
178     foreach my $mod (keys %conflicts_found) {
179         print sprintf("    %s => %s\n", $mod, $conflicts_found{$mod});
180     }
181     print "\n";
182
183     # More or less copied from Module::Build, via Moose
184     return if $ENV{PERL_MM_USE_DEFAULT};
185     return unless -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT));
186
187     sleep 4;
188 }