URI-decode chained args
[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.78';
13 requires 'MooseX::MethodAttributes::Inheritable' => '0.10';
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' => '1.07'; # Newish (hah, 2006!) version to
42                                             # hopefully avoid broken distro
43                                             # packages (RT#46104)
44
45 # aggregate tests if AGGREGATE_TESTS is set and a recent Test::Aggregate is available
46 if ($ENV{AGGREGATE_TESTS} && can_use('Test::Aggregate', '0.34_01')) {
47     test_requires('Test::Aggregate', '0.34_01');
48 }
49 else {
50     tests join q{ },
51         grep { $_ ne 't/aggregate.t' }
52         map  { glob } qw[t/*.t t/aggregate/*.t];
53 }
54
55 my @force_build_requires_if_author = qw(
56   Test::NoTabs
57   Test::Pod
58   Test::Pod::Coverage
59   Pod::Coverage
60 );
61
62 if ($Module::Install::AUTHOR) {
63     foreach my $module (@force_build_requires_if_author) {
64         build_requires $module;
65     }
66     darwin_check_no_resource_forks();
67 }
68
69 install_script glob('script/*.pl');
70 auto_install;
71 WriteAll;
72
73 if ($Module::Install::AUTHOR) {
74
75   # Strip out the author only build_requires from META.yml
76   # Need to do this _after_ WriteAll else it looses track of them
77   strip_author_only_build_requires(@force_build_requires_if_author, 'Test::Aggregate');
78
79   Meta->{values}{resources} = [
80     [ 'MailingList' => 'http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst' ],
81     [ 'IRC'         => 'irc://irc.perl.org/#catalyst' ],
82     [ 'license',    => 'http://dev.perl.org/licenses/' ],
83     [ 'homepage',   => 'http://dev.catalyst.perl.org/'],
84     [ 'repository', => 'http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Runtime/' ],
85   ];
86
87   Meta->write;
88 }
89
90 print <<"EOF";
91
92  Important:
93
94     This library is for running Catalyst applications.
95
96     For development and use of catalyst.pl and myapp_create.pl, make sure
97     you also install the development tools package Catalyst::Devel.
98
99         perl -MCPANPLUS -e 'install Catalyst::Devel' # or
100         perl -MCPAN -e 'install Catalyst::Devel'
101
102     To get some commonly used plugins, as well as the TT view and DBIC 
103     model, install Task::Catalyst in the same way.
104
105  Have fun!
106 EOF
107
108 # NOTE - This is the version number of the _incompatible_ code,
109 #        not the version number of the fixed version.
110 my %conflicts = (
111     'Catalyst::Authentication::Credential::HTTP' => '1.009',
112     'Catalyst::Plugin::Session::Store::File' => '0.16',
113     'Catalyst::Plugin::Session' => '0.21',
114     'Catalyst::Plugin::Session::State::Cookie' => '0.10',
115     'Catalyst::Plugin::Session::Store::FastMmap' => '0.09',
116     'Catalyst::Controller::AllowDisable' => '0.03',
117     'Reaction' => '0.001999',
118     'Catalyst::Plugin::Upload::Image::Magick' => '0.03',
119     'Catalyst::Plugin::ConfigLoader'   => '0.22', # Older versions work but
120                                                   # throw Data::Visitor warns
121     'Catalyst::Devel'                  => '0.09',
122     'Catalyst::Plugin::SmartURI'       => '0.032',
123     'CatalystX::CRUD'                  => '0.37',
124     'Catalyst::Action::RenderView'     => '0.07',
125     'Catalyst::Plugin::DebugCookie'    => '0.999002',
126     'Catalyst::Plugin::Authentication' => '0.100091',
127     'CatalystX::Imports'               => '0.03',
128     'Catalyst::Plugin::HashedCookies'  => '1.03',
129     'Catalyst::Action::REST'           => '0.67',
130     'CatalystX::CRUD'                  => '0.42',
131     'CatalystX::CRUD::Model::RDBO'     => '0.20',
132 );
133 check_conflicts(%conflicts);
134
135 # End of script, helper functions below.
136
137 sub darwin_check_no_resource_forks {
138     if ($^O eq 'darwin') {
139         my $osx_ver = `/usr/bin/sw_vers -productVersion`;
140         chomp $osx_ver;
141
142         # TAR on 10.4 wants COPY_EXTENDED_ATTRIBUTES_DISABLE
143         # On 10.5 (Leopard) it wants COPYFILE_DISABLE
144         my $attr = $osx_ver eq '10.5' ? 'COPYFILE_DISABLE' : 'COPY_EXTENDED_ATTRIBUTES_DISABLE';
145
146         makemaker_args(dist => { PREOP => qq{\@if [ "\$\$$attr" != "true" ]; then}.
147                                           qq{ echo "You must set the ENV variable $attr to true,"; }.
148                                           ' echo "to avoid getting resource forks in your dist."; exit 255; fi' });
149         }
150 }
151
152 sub strip_author_only_build_requires {
153     my @build_requires_to_strip = @_;
154     Meta->{values}{build_requires} = [ grep {
155       my $ok = 1;
156       foreach my $module (@build_requires_to_strip) {
157         if ($_->[0] =~ /$module/) {
158           $ok = 0;
159           last;
160         }
161       }
162       $ok;
163     } @{Meta->{values}{build_requires}} ];
164 }
165
166 sub check_conflicts {
167     my %conflicts = @_;
168
169     my %conflicts_found;
170     for my $mod ( sort keys %conflicts ) {
171         eval "require($mod)";
172         next if $@;
173
174         my $installed = $mod->VERSION();
175         $conflicts_found{$mod} = $installed if ( $installed le $conflicts{$mod} );
176     }
177
178     return unless scalar keys %conflicts_found;
179
180     print <<"EOF";
181
182  WARNING:
183
184     This version of Catalyst conflicts with the versions of
185     some components you have installed.
186
187     You will need to upgrade these modules after installing
188     this version of Catalyst.
189
190     List of the conflicting components and their installed versions:
191
192 EOF
193
194     foreach my $mod (keys %conflicts_found) {
195         print sprintf("    %s => %s\n", $mod, $conflicts_found{$mod});
196     }
197     print "\n";
198
199     # More or less copied from Module::Build, via Moose
200     return if $ENV{PERL_MM_USE_DEFAULT};
201     return unless -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT));
202
203     sleep 4;
204 }