Turn of test aggregation by default.
[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 'Moose' => '0.73';
12 requires 'MooseX::MethodAttributes::Inheritable' => '0.06';
13 requires 'Carp';
14 requires 'Class::C3::Adopt::NEXT' => '0.07';
15 requires 'Class::MOP' => '0.79';
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.5';
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);
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 );
121 check_conflicts(%conflicts);
122
123 # End of script, helper functions below.
124
125 sub darwin_check_no_resource_forks {
126     if ($^O eq 'darwin') {
127         my $osx_ver = `/usr/bin/sw_vers -productVersion`;
128         chomp $osx_ver;
129
130         # TAR on 10.4 wants COPY_EXTENDED_ATTRIBUTES_DISABLE
131         # On 10.5 (Leopard) it wants COPYFILE_DISABLE
132         my $attr = $osx_ver eq '10.5' ? 'COPYFILE_DISABLE' : 'COPY_EXTENDED_ATTRIBUTES_DISABLE';
133
134         makemaker_args(dist => { PREOP => qq{\@if [ "\$\$$attr" != "true" ]; then}.
135                                           qq{ echo "You must set the ENV variable $attr to true,"; }.
136                                           ' echo "to avoid getting resource forks in your dist."; exit 255; fi' });
137         }
138 }
139
140 sub strip_author_only_build_requires {
141     my @build_requires_to_strip = @_;
142     Meta->{values}{build_requires} = [ grep {
143       my $ok = 1;
144       foreach my $module (@build_requires_to_strip) {
145         if ($_->[0] =~ /$module/) {
146           $ok = 0;
147           last;
148         }
149       }
150       $ok;
151     } @{Meta->{values}{build_requires}} ];
152 }
153
154 sub check_conflicts {
155     my %conflicts = @_;
156
157     my %conflicts_found;
158     for my $mod ( sort keys %conflicts ) {
159         eval "require($mod)";
160         next if $@;
161
162         my $installed = $mod->VERSION();
163         $conflicts_found{$mod} = $installed if ( $installed le $conflicts{$mod} );
164     }
165
166     return unless scalar keys %conflicts_found;
167
168     print <<"EOF";
169
170  WARNING:
171
172     This version of Catalyst conflicts with the versions of
173     some components you have installed.
174
175     You will need to upgrade these modules after installing
176     this version of Catalyst.
177
178     List of the conflicting components and their installed versions:
179
180 EOF
181
182     foreach my $mod (keys %conflicts_found) {
183         print sprintf("    %s => %s\n", $mod, $conflicts_found{$mod});
184     }
185     print "\n";
186
187     # More or less copied from Module::Build, via Moose
188     return if $ENV{PERL_MM_USE_DEFAULT};
189     return unless -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT));
190
191     sleep 4;
192 }