Make mk_classdata fail if the class' metaclass is not a Class::MOP::Class.
[catagits/Catalyst-Runtime.git] / Makefile.PL
CommitLineData
c55f01aa 1use inc::Module::Install 0.64;
022d1311 2
2f381252 3perl_version '5.008001';
0ba80bce 4
341d40d1 5name 'Catalyst-Runtime';
6all_from 'lib/Catalyst/Runtime.pm';
24b3262a 7
64b2a0de 8requires 'namespace::clean';
d134bcca 9requires 'Scope::Upper' => '0.06';
0580eb62 10requires 'MooseX::Emulate::Class::Accessor::Fast' => '0.00800';
107d0ba0 11requires 'Moose' => '0.70';
9ce44430 12requires 'Carp';
269408a4 13requires 'Class::C3::Adopt::NEXT' => '0.07';
fbedfd6b 14requires 'Class::MOP';
fa32ac82 15requires 'CGI::Simple::Cookie';
f63c03e4 16requires 'Data::Dump';
24b3262a 17requires 'File::Modified';
18requires 'HTML::Entities';
2f381252 19requires 'HTTP::Body' => '1.04'; # makes uploadtmp work
1e514a51 20requires 'HTTP::Headers' => '1.64';
24b3262a 21requires 'HTTP::Request';
22requires 'HTTP::Response';
ee3c41e3 23requires 'HTTP::Request::AsCGI' => '0.5';
24b3262a 24requires 'LWP::UserAgent';
d8e0de58 25requires 'Module::Pluggable' => '3.01';
1e514a51 26requires 'Path::Class' => '0.09';
24b3262a 27requires 'Scalar::Util';
64edd785 28requires 'Sub::Exporter';
1e514a51 29requires 'Text::SimpleTable' => '0.03';
24b3262a 30requires 'Time::HiRes';
1e514a51 31requires 'Tree::Simple' => '1.15';
24b3262a 32requires 'Tree::Simple::Visitor::FindByPath';
1e514a51 33requires 'URI' => '1.35';
ea0e58d9 34requires 'Text::Balanced'; # core in 5.8.x but mentioned for completeness
6f1f968a 35requires 'MRO::Compat';
a9835938 36
65b708a6 37recommends 'B::Hooks::OP::Check::StashChange';
38
1a667b7c 39test_requires 'Class::Data::Inheritable';
647a251f 40test_requires 'Test::MockObject';
1a667b7c 41
c102399c 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.
bf6d41be 44if ( ( exists $ENV{AGGREGATE_TESTS} && !$ENV{AGGREGATE_TESTS})
c70c5546 45 || (!exists $ENV{AGGREGATE_TESTS} && !can_use('Test::Aggregate', '0.34_01'))) {
bf6d41be 46 tests join q{ },
47 grep { $_ ne 't/aggregate.t' }
48 map { glob } qw[t/*.t t/aggregate/*.t];
49}
a24c0135 50else {
51 test_requires('Test::Aggregate', '0.34_01');
52}
621f279b 53my @force_build_requires_if_author = qw(
54 Test::NoTabs
55 Test::Pod
56 Test::Pod::Coverage
57 Pod::Coverage
58);
59
60if ($Module::Install::AUTHOR) {
c102399c 61 foreach my $module (@force_build_requires_if_author) {
62 build_requires $module;
63 }
64 darwin_check_no_resource_forks();
de925c79 65}
66
24b3262a 67install_script glob('script/*.pl');
b6395bce 68auto_install;
24b3262a 69WriteAll;
614f3ad6 70
621f279b 71if ($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
c102399c 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/' ],
621f279b 83 ];
84
85 Meta->write;
86}
c102399c 87
614f3ad6 88print <<"EOF";
89
90 Important:
a5b5152b 91
0187a79d 92 This library is for running Catalyst applications.
93
341d40d1 94 For development and use of catalyst.pl and myapp_create.pl, make sure
95 you also install the development tools package Catalyst::Devel.
f63c03e4 96
6bc14aef 97 perl -MCPANPLUS -e 'install Catalyst::Devel' # or
98 perl -MCPAN -e 'install Catalyst::Devel'
99
ac5c933b 100 To get some commonly used plugins, as well as the TT view and DBIC
6bc14aef 101 model, install Task::Catalyst in the same way.
a5b5152b 102
a5b5152b 103 Have fun!
614f3ad6 104EOF
64d96919 105
c102399c 106# NOTE - This is the version number of the _incompatible_ code,
107# not the version number of the fixed version.
108my %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);
117check_conflicts(%conflicts);
118
119# End of script, helper functions below.
120
121sub 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
136sub 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}
64d96919 149
64d96919 150sub check_conflicts {
c102399c 151 my %conflicts = @_;
152
153 my %conflicts_found;
64d96919 154 for my $mod ( sort keys %conflicts ) {
dc0e73a3 155 eval "require($mod)";
64d96919 156 next if $@;
157
158 my $installed = $mod->VERSION();
c102399c 159 $conflicts_found{$mod} = $installed if ( $installed le $conflicts{$mod} );
160 }
161
162 return unless scalar keys %conflicts_found;
163
164 print <<"EOF";
64d96919 165
c102399c 166 WARNING:
64d96919 167
c102399c 168 This version of Catalyst conflicts with the versions of
169 some components you have installed.
64d96919 170
c102399c 171 You will need to upgrade these modules after installing
64d96919 172 this version of Catalyst.
c102399c 173
174 List of the conflicting components and their installed versions:
64d96919 175
176EOF
177
c102399c 178 foreach my $mod (keys %conflicts_found) {
179 print sprintf(" %s => %s\n", $mod, $conflicts_found{$mod});
64d96919 180 }
c102399c 181 print "\n";
64d96919 182
c102399c 183 # More or less copied from Module::Build, via Moose
6b2a933b 184 return if $ENV{PERL_MM_USE_DEFAULT};
64d96919 185 return unless -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT));
186
187 sleep 4;
188}