refactor of namespace handling
[catagits/Catalyst-Runtime.git] / Makefile.PL
CommitLineData
c66a708f 1use inc::Module::Install 0.87;
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';
acca8cd5 9requires 'B::Hooks::EndOfScope' => '0.08';
0a0c74aa 10requires 'MooseX::Emulate::Class::Accessor::Fast' => '0.00801';
fec3ecdf 11requires 'Class::MOP' => '0.83';
3db3a59f 12requires 'Moose' => '0.78';
d75b106e 13requires 'MooseX::MethodAttributes::Inheritable' => '0.12';
9ce44430 14requires 'Carp';
269408a4 15requires 'Class::C3::Adopt::NEXT' => '0.07';
fa32ac82 16requires 'CGI::Simple::Cookie';
f63c03e4 17requires 'Data::Dump';
24b3262a 18requires 'File::Modified';
19requires 'HTML::Entities';
2f381252 20requires 'HTTP::Body' => '1.04'; # makes uploadtmp work
1e514a51 21requires 'HTTP::Headers' => '1.64';
24b3262a 22requires 'HTTP::Request';
23requires 'HTTP::Response';
995f7cbd 24requires 'HTTP::Request::AsCGI' => '0.8';
24b3262a 25requires 'LWP::UserAgent';
d8e0de58 26requires 'Module::Pluggable' => '3.01';
1e514a51 27requires 'Path::Class' => '0.09';
24b3262a 28requires 'Scalar::Util';
64edd785 29requires 'Sub::Exporter';
1e514a51 30requires 'Text::SimpleTable' => '0.03';
24b3262a 31requires 'Time::HiRes';
1e514a51 32requires 'Tree::Simple' => '1.15';
24b3262a 33requires 'Tree::Simple::Visitor::FindByPath';
1e514a51 34requires 'URI' => '1.35';
ea0e58d9 35requires 'Text::Balanced'; # core in 5.8.x but mentioned for completeness
6f1f968a 36requires 'MRO::Compat';
17b3d800 37requires 'String::RewritePrefix' => '0.004'; # Catalyst::Utils::resolve_namespace
a9835938 38
65b708a6 39recommends 'B::Hooks::OP::Check::StashChange';
40
1a667b7c 41test_requires 'Class::Data::Inheritable';
83ea876e 42test_requires 'Test::MockObject' => '1.07'; # Newish (hah, 2006!) version to
43 # hopefully avoid broken distro
44 # packages (RT#46104)
cdc96667 45test_requires 'Test::Exception';
1a667b7c 46
e262f38e 47# aggregate tests if AGGREGATE_TESTS is set and a recent Test::Aggregate is available
48if ($ENV{AGGREGATE_TESTS} && can_use('Test::Aggregate', '0.34_01')) {
49 test_requires('Test::Aggregate', '0.34_01');
50}
51else {
bf6d41be 52 tests join q{ },
53 grep { $_ ne 't/aggregate.t' }
54 map { glob } qw[t/*.t t/aggregate/*.t];
55}
e262f38e 56
621f279b 57my @force_build_requires_if_author = qw(
0a0c74aa 58 Test::NoTabs
59 Test::Pod
60 Test::Pod::Coverage
621f279b 61 Pod::Coverage
62);
63
64if ($Module::Install::AUTHOR) {
c102399c 65 foreach my $module (@force_build_requires_if_author) {
66 build_requires $module;
67 }
68 darwin_check_no_resource_forks();
de925c79 69}
70
24b3262a 71install_script glob('script/*.pl');
b6395bce 72auto_install;
24b3262a 73WriteAll;
614f3ad6 74
621f279b 75if ($Module::Install::AUTHOR) {
76
77 # Strip out the author only build_requires from META.yml
78 # Need to do this _after_ WriteAll else it looses track of them
c508cb5c 79 strip_author_only_build_requires(@force_build_requires_if_author, 'Test::Aggregate');
c102399c 80
81 Meta->{values}{resources} = [
82 [ 'MailingList' => 'http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst' ],
83 [ 'IRC' => 'irc://irc.perl.org/#catalyst' ],
84 [ 'license', => 'http://dev.perl.org/licenses/' ],
85 [ 'homepage', => 'http://dev.catalyst.perl.org/'],
86 [ 'repository', => 'http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Runtime/' ],
621f279b 87 ];
88
89 Meta->write;
90}
c102399c 91
614f3ad6 92print <<"EOF";
93
94 Important:
a5b5152b 95
0187a79d 96 This library is for running Catalyst applications.
97
341d40d1 98 For development and use of catalyst.pl and myapp_create.pl, make sure
99 you also install the development tools package Catalyst::Devel.
f63c03e4 100
6bc14aef 101 perl -MCPANPLUS -e 'install Catalyst::Devel' # or
102 perl -MCPAN -e 'install Catalyst::Devel'
103
ac5c933b 104 To get some commonly used plugins, as well as the TT view and DBIC
6bc14aef 105 model, install Task::Catalyst in the same way.
a5b5152b 106
a5b5152b 107 Have fun!
614f3ad6 108EOF
64d96919 109
d31581c6 110# NOTE - This is the version number of the _incompatible_ code,
111# not the version number of the fixed version.
112my %conflicts = (
d75b106e 113 'Catalyst::Plugin::ENV' => '9999', # This plugin is just stupid, full stop
114 # should have been a core fix.
71b46798 115 'Catalyst::Plugin::Unicode::Encoding' => '0.2',
c49128b1 116 'Catalyst::Authentication::Credential::HTTP' => '1.009',
3db3a59f 117 'Catalyst::Plugin::Session::Store::File' => '0.16',
1d9dd180 118 'Catalyst::Plugin::Session' => '0.21',
119 'Catalyst::Plugin::Session::State::Cookie' => '0.10',
3db3a59f 120 'Catalyst::Plugin::Session::Store::FastMmap' => '0.09',
90e5b064 121 'Catalyst::Controller::AllowDisable' => '0.03',
b7abc49b 122 'Reaction' => '0.001999',
800a9f17 123 'Catalyst::Plugin::Upload::Image::Magick' => '0.03',
d31581c6 124 'Catalyst::Plugin::ConfigLoader' => '0.22', # Older versions work but
125 # throw Data::Visitor warns
126 'Catalyst::Devel' => '0.09',
3db3a59f 127 'Catalyst::Plugin::SmartURI' => '0.032',
d31581c6 128 'CatalystX::CRUD' => '0.37',
129 'Catalyst::Action::RenderView' => '0.07',
130 'Catalyst::Plugin::DebugCookie' => '0.999002',
131 'Catalyst::Plugin::Authentication' => '0.100091',
132 'CatalystX::Imports' => '0.03',
133 'Catalyst::Plugin::HashedCookies' => '1.03',
134 'Catalyst::Action::REST' => '0.67',
0f64a277 135 'CatalystX::CRUD' => '0.42',
136 'CatalystX::CRUD::Model::RDBO' => '0.20',
d31581c6 137);
138check_conflicts(%conflicts);
139
c102399c 140# End of script, helper functions below.
141
142sub darwin_check_no_resource_forks {
143 if ($^O eq 'darwin') {
144 my $osx_ver = `/usr/bin/sw_vers -productVersion`;
145 chomp $osx_ver;
146
147 # TAR on 10.4 wants COPY_EXTENDED_ATTRIBUTES_DISABLE
148 # On 10.5 (Leopard) it wants COPYFILE_DISABLE
149 my $attr = $osx_ver eq '10.5' ? 'COPYFILE_DISABLE' : 'COPY_EXTENDED_ATTRIBUTES_DISABLE';
150
151 makemaker_args(dist => { PREOP => qq{\@if [ "\$\$$attr" != "true" ]; then}.
152 qq{ echo "You must set the ENV variable $attr to true,"; }.
153 ' echo "to avoid getting resource forks in your dist."; exit 255; fi' });
154 }
155}
156
d31581c6 157sub strip_author_only_build_requires {
158 my @build_requires_to_strip = @_;
159 Meta->{values}{build_requires} = [ grep {
c102399c 160 my $ok = 1;
d31581c6 161 foreach my $module (@build_requires_to_strip) {
c102399c 162 if ($_->[0] =~ /$module/) {
163 $ok = 0;
164 last;
165 }
166 }
167 $ok;
d31581c6 168 } @{Meta->{values}{build_requires}} ];
c102399c 169}
64d96919 170
64d96919 171sub check_conflicts {
c102399c 172 my %conflicts = @_;
173
174 my %conflicts_found;
64d96919 175 for my $mod ( sort keys %conflicts ) {
dc0e73a3 176 eval "require($mod)";
64d96919 177 next if $@;
178
179 my $installed = $mod->VERSION();
d31581c6 180 $conflicts_found{$mod} = $installed if ( $installed le $conflicts{$mod} );
c102399c 181 }
182
183 return unless scalar keys %conflicts_found;
184
185 print <<"EOF";
64d96919 186
c102399c 187 WARNING:
64d96919 188
c102399c 189 This version of Catalyst conflicts with the versions of
190 some components you have installed.
64d96919 191
c102399c 192 You will need to upgrade these modules after installing
64d96919 193 this version of Catalyst.
c102399c 194
195 List of the conflicting components and their installed versions:
64d96919 196
197EOF
198
c102399c 199 foreach my $mod (keys %conflicts_found) {
200 print sprintf(" %s => %s\n", $mod, $conflicts_found{$mod});
64d96919 201 }
d31581c6 202 print "\n";
64d96919 203
d31581c6 204 # More or less copied from Module::Build, via Moose
205 return if $ENV{PERL_MM_USE_DEFAULT};
206 return unless -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT));
207
208 sleep 4;
64d96919 209}