convert to Distar
[catagits/Catalyst-Runtime.git] / Makefile.PL
index 8e6c2c9..3361aac 100644 (file)
 use strict;
 use warnings;
-use inc::Module::Install 0.91;
-# Ensure that these get used - yes, M::I loads them for us, but if you're
-# in author mode and don't have them installed, then the error is tres
-# cryptic.
-if ($Module::Install::AUTHOR) { # We could just use them, but telling
-    my @fail;                   # people the set of things they need nicer
-    foreach my $module (qw/
-        Module::Install::AuthorRequires
-        Module::Install::CheckConflicts
-        Module::Install::AuthorTests
-        Module::Install::Authority
-    /) {
-        push(@fail, $module)
-            unless eval qq{require $module; 1;};
-    }
-    die("Module::Install extensions failed, not installed? \n"
-        . join("\n", map { "  $_" } @fail) . "\n") if @fail;
-}
+use 5.008003;
+
+my %META = (
+  name => 'Catalyst-Runtime',
+  license => 'perl_5',
+  prereqs => {
+    configure => { requires => {
+      'ExtUtils::MakeMaker'   => 0,
+    } },
+    build => { requires => {
+    } },
+    test => {
+      requires => {
+        'Test::Fatal' => 0,
+        'Test::More' => '0.88',
+        'HTTP::Request::Common' => 0,
+        'IO::Scalar' => 0,
+        'HTTP::Status' => 0,
+      },
+    },
+    runtime => {
+      requires => {
+        'perl'                  => 5.008003,
+        'List::Util'            => '1.45',
+        'namespace::autoclean'  => '0.28',
+        'namespace::clean'      => '0.23',
+        'MooseX::Emulate::Class::Accessor::Fast' => '0.00903',
+        'Class::Load'           => '0.12',
+        'Data::OptList'         => 0,
+        'Moose'                 => '1.03',
+        'MooseX::MethodAttributes::Role::AttrContainer::Inheritable' => '0.24',
+        'MooseX::Role::WithOverloading' => '0.09',
+        'Carp'                  => '1.25',
+        'Class::C3::Adopt::NEXT' => '0.07',
+        'CGI::Simple::Cookie'   => '1.109',
+        'Data::Dump'            => 0,
+        'Data::OptList'         => 0,
+        'HTML::Entities'        => 0,
+        'HTML::HeadParser'      => 0,
+        'HTTP::Body'            => '1.22',
+        'HTTP::Headers'         => '1.64',
+        'HTTP::Request'         => '5.814',
+        'HTTP::Response'        => '5.813',
+        'HTTP::Request::AsCGI'  => '1.0',
+        'Module::Pluggable'     => '4.7',
+        'Path::Class'           => '0.09',
+        'Scalar::Util'          => 0,
+        'Sub::Exporter'         => 0,
+        'Text::SimpleTable'     => '0.03',
+        'Time::HiRes'           => 0,
+        'Tree::Simple'          => '1.15',
+        'Tree::Simple::Visitor::FindByPath' => 0,
+        'Try::Tiny'             => '0.17',
+        'Safe::Isa'             => 0,
+        'Task::Weaken'          => 0,
+        'Text::Balanced'        => 0, # core in 5.8.x but mentioned for completeness
+        'MRO::Compat'           => 0,
+        'MooseX::Getopt'        => '0.48',
+        'String::RewritePrefix' => '0.004', # Catalyst::Utils::resolve_namespace
+        'Devel::InnerPackage'   => 0, # No longer core in blead
+        'Plack'                 => '0.9991', # IIS6+7 fix middleware
+        'Plack::Middleware::ReverseProxy' => '0.04',
+        'Plack::Test::ExternalServer' => 0,
+        'Class::Data::Inheritable' => 0,
+        'Encode'                => '2.49',
+        'LWP'                   => '5.837', # LWP had unicode fail in 5.8.26
+        'URI'                   => '1.65',
+        'URI::ws'               => '0.03',
+        'JSON::MaybeXS'         => '1.000000',
+        'Stream::Buffered'      => 0,
+        'Hash::MultiValue'      => 0,
+        'Plack::Request::Upload' => 0,
+        'CGI::Struct'           => 0,
+        "Plack::Middleware::Conditional" => 0,
+        "Plack::Middleware::IIS6ScriptNameFix" => 0,
+        "Plack::Middleware::IIS7KeepAliveFix" => 0,
+        "Plack::Middleware::LighttpdScriptNameFix" => 0,
+        "Plack::Middleware::ContentLength" => 0,
+        "Plack::Middleware::Head" => 0,
+        "Plack::Middleware::HTTPExceptions" => 0,
+        "Plack::Middleware::FixMissingBodyInRedirect" => '0.09',
+        "Plack::Middleware::MethodOverride" => '0.12',
+        "Plack::Middleware::RemoveRedundantBody" => '0.03',
+      },
+    },
+    develop   => {
+      requires => {
+        'Test::Aggregate'         => '0.364',
+        'Test::Simple'            => '0.88',
+        'CatalystX::LeakChecker'  => '0.05',
+        'Catalyst::Devel'         => '1.0', # For http server test
+        'Catalyst::Engine::PSGI'  => 0,
+        'Test::WWW::Mechanize::Catalyst' => '0.51',
+        'Test::TCP'               => '2.00', # ditto, ships Net::EmptyPort
+        'File::Copy::Recursive'   => 0,
+        'Starman'                 => 0,
+        'MooseX::Daemonize'       => 0,
+        'Test::NoTabs'            => 0,
+        'Test::Pod'               => 0,
+        'Test::Pod::Coverage'     => 0,
+        'Test::Spelling'          => 0,
+        'Pod::Coverage::TrustPod' => 0,
+        'Catalyst::Plugin::Params::Nested' => 0,
+        'Catalyst::Plugin::ConfigLoader' => 0,
+      },
+    },
+  },
+  resources => {
+    repository => {
+      # r/w: catagits@git.shadowcat.co.uk:Catalyst-Runtime.git
+      url => 'git://git.shadowcat.co.uk/catagits/Catalyst-Runtime.git',
+      web => 'http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits/Catalyst-Runtime.git;a=summary',
+      type => 'git',
+    },
+    x_IRC => 'irc://irc.perl.org/#catalyst',
+    bugtracker => {
+      web => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Catalyst-Runtime',
+      mailto => 'bug-Catalyst-Runtime@rt.cpan.org',
+    },
+    license => [ 'http://dev.perl.org/licenses/' ],
+    x_MailingList => 'http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst',
+    homepage => 'http://dev.catalyst.perl.org/',
+  },
+  no_index => {
+    directory => [ 't', 'xt' ]
+  },
+  x_breaks => {
+    'Catalyst::Plugin::SubRequest' => '<= 0.14',
+    'Catalyst::Model::Akismet' => '<= 0.02',
+    'Catalyst::Component::ACCEPT_CONTEXT' => '<= 0.06',
+    'Catalyst::Plugin::ENV' => 0, # This plugin is just stupid, full stop
+                                  # should have been a core fix.
+    'Catalyst::Plugin::Unicode::Encoding' => '<= 0.2',
+    'Catalyst::Plugin::Authentication' => '<= 0.10010', # _config accessor in ::Credential::Password
+    'Catalyst::Authentication::Credential::HTTP' => '<= 1.009',
+    'Catalyst::Plugin::Session::Store::File'     => '<= 0.16',
+    'Catalyst::Plugin::Session'                  => '<= 0.21',
+    'Catalyst::Plugin::Session::State::Cookie'   => '<= 0.10',
+    'Catalyst::Plugin::Session::Store::FastMmap' => '<= 0.09',
+    'Catalyst::Controller::AllowDisable'         => '<= 0.03',
+    'Reaction'                                   => '<= 0.001999',
+    'Catalyst::Plugin::Upload::Image::Magick'    => '<= 0.03',
+    'Catalyst::Plugin::ConfigLoader'             => '<= 0.22', # Older versions work but
+                                                  # throw Data::Visitor warns
+    'Catalyst::Devel'                            => '<= 1.19',
+    'Catalyst::Plugin::SmartURI'                 => '<= 0.032',
+    'CatalystX::CRUD'                            => '<= 0.37',
+    'Catalyst::Action::RenderView'               => '<= 0.07',
+    'Catalyst::Plugin::DebugCookie'              => '<= 0.999002',
+    'Catalyst::Plugin::Authentication'           => '<= 0.100091',
+    'CatalystX::Imports'                         => '<= 0.03',
+    'Catalyst::Plugin::HashedCookies'            => '<= 1.03',
+    'Catalyst::Action::REST'                     => '<= 0.67',
+    'CatalystX::CRUD'                            => '<= 0.42',
+    'CatalystX::CRUD::Model::RDBO'               => '<= 0.20',
+    'Catalyst::View::Mason'                      => '<= 0.17',
+#    Note these are not actually needed - they fail tests against the
+#    new version, but still work fine..
+#    'Catalyst::ActionRole::ACL'                  => '<= 0.05',
+#    'Catalyst::Plugin::Session::Store::DBIC'     => '<= 0.11',
+    'Test::WWW::Mechanize::Catalyst'            => '<= 0.53', # Dep warnings unless upgraded.
+  },
+  x_authority => 'cpan:MSTROUT',
+);
 
-perl_version '5.008003';
-
-name 'Catalyst-Runtime';
-author 'Sebastian Riedel <sri@cpan.org>';
-authority('MSTROUT');
-all_from 'lib/Catalyst/Runtime.pm';
-
-requires 'List::MoreUtils';
-requires 'namespace::autoclean' => '0.09';
-requires 'namespace::clean' => '0.23';
-requires 'MooseX::Emulate::Class::Accessor::Fast' => '0.00903';
-requires 'Class::Load' => '0.12';
-requires 'Class::MOP' => '0.95';
-requires 'Data::OptList';
-requires 'Moose' => '1.03';
-requires 'MooseX::MethodAttributes::Inheritable' => '0.24';
-requires 'MooseX::Role::WithOverloading' => '0.09';
-requires 'Carp';
-requires 'Class::C3::Adopt::NEXT' => '0.07';
-requires 'CGI::Simple::Cookie' => '1.109';
-requires 'Data::Dump';
-requires 'Data::OptList';
-requires 'HTML::Entities';
-requires 'HTML::HeadParser';
-requires 'HTTP::Body'    => '1.06'; # ->cleanup(1)
-requires 'HTTP::Headers' => '1.64';
-requires 'HTTP::Request' => '5.814';
-requires 'HTTP::Response' => '5.813';
-requires 'HTTP::Request::AsCGI' => '1.0';
-requires 'LWP::UserAgent';
-requires 'Module::Pluggable' => '3.9';
-requires 'Path::Class' => '0.09';
-requires 'Scalar::Util';
-requires 'Sub::Exporter';
-requires 'Text::SimpleTable' => '0.03';
-requires 'Time::HiRes';
-requires 'Tree::Simple' => '1.15';
-requires 'Tree::Simple::Visitor::FindByPath';
-requires 'Try::Tiny';
-requires 'Safe::Isa';
-requires 'URI' => '1.35';
-requires 'Task::Weaken';
-requires 'Text::Balanced'; # core in 5.8.x but mentioned for completeness
-requires 'MRO::Compat';
-requires 'MooseX::Getopt' => '0.48';
-requires 'String::RewritePrefix' => '0.004'; # Catalyst::Utils::resolve_namespace
-requires 'Plack' => '0.9991'; # IIS6+7 fix middleware
-requires 'Plack::Middleware::ReverseProxy' => '0.04';
-requires 'Plack::Test::ExternalServer';
-
-test_requires 'Class::Data::Inheritable';
-test_requires 'Test::Exception';
-test_requires 'Test::More' => '0.88';
-test_requires 'Data::Dump';
-test_requires 'HTTP::Request::Common';
-
-# aggregate tests if AGGREGATE_TESTS is set and a recent Test::Aggregate and a Test::Simple it works with is available
-my @author_requires;
-if ($ENV{AGGREGATE_TESTS} && can_use('Test::Simple', '0.88') && can_use('Test::Aggregate', '0.364')) {
-    push(@author_requires, 'Test::Aggregate', '0.364');
-    push(@author_requires, 'Test::Simple', '0.88');
+my $tests = 't/*.t';
+if ($ENV{AGGREGATE_TESTS} && eval { require Test::Aggregate; Test::Aggregate->VERSION(0.364); }) {
     open my $fh, '>', '.aggregating';
 }
 else {
     unlink '.aggregating';
-    tests 't/*.t t/aggregate/*.t';
+    $tests .= ' t/aggregate/*.t';
 }
 
-push(@author_requires, 'CatalystX::LeakChecker', '0.05');
-push(@author_requires, 'Catalyst::Devel', '1.0'); # For http server test
-
-author_tests('t/author');
-author_requires(
-  @author_requires,
-  map {; $_ => 0 } qw(
-  File::Copy::Recursive
-  Catalyst::Engine::PSGI
-  Test::Without::Module
-  Starman
-  MooseX::Daemonize
-  Test::NoTabs
-  Test::Pod
-  Test::Pod::Coverage
-  Test::Spelling
-  Pod::Coverage::TrustPod
-));
-
-if ($Module::Install::AUTHOR) {
-    darwin_check_no_resource_forks();
+my %MM_ARGS = (
+  test => { TESTS => $tests },
+  EXE_FILES => [ glob 'script/*.pl' ],
+  PREREQ_PM => {
+    (eval { require Moose; Moose->VERSION('2.1300') } ? () : (
+      'MooseX::Role::WithOverloading' => '0.09'
+    )),
+  },
+);
+
+## BOILERPLATE ###############################################################
+require ExtUtils::MakeMaker;
+(do './maint/Makefile.PL.include' or die $@) unless -f 'META.yml';
+
+# have to do this since old EUMM dev releases miss the eval $VERSION line
+my $eumm_version  = eval $ExtUtils::MakeMaker::VERSION;
+my $mymeta        = $eumm_version >= 6.57_02;
+my $mymeta_broken = $mymeta && $eumm_version < 6.57_07;
+
+($MM_ARGS{NAME} = $META{name}) =~ s/-/::/g;
+($MM_ARGS{VERSION_FROM} = "lib/$MM_ARGS{NAME}.pm") =~ s{::}{/}g;
+$META{license} = [ $META{license} ]
+  if $META{license} && !ref $META{license};
+$MM_ARGS{LICENSE} = $META{license}[0]
+  if $META{license} && $eumm_version >= 6.30;
+$MM_ARGS{NO_MYMETA} = 1
+  if $mymeta_broken;
+$MM_ARGS{META_ADD} = { 'meta-spec' => { version => 2 }, %META }
+  unless -f 'META.yml';
+
+for (qw(configure build test runtime)) {
+  my $key = $_ eq 'runtime' ? 'PREREQ_PM' : uc $_.'_REQUIRES';
+  my $r = $MM_ARGS{$key} = {
+    %{$META{prereqs}{$_}{requires} || {}},
+    %{delete $MM_ARGS{$key} || {}},
+  };
+  defined $r->{$_} or delete $r->{$_} for keys %$r;
 }
 
-resources(
-    'MailingList' => 'http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst',
-    'IRC'         => 'irc://irc.perl.org/#catalyst',
-    'license',    => 'http://dev.perl.org/licenses/',
-    'homepage',   => 'http://dev.catalyst.perl.org/',
-    'repository', => 'git://git.shadowcat.co.uk/catagits/Catalyst-Runtime.git',
-);
+$MM_ARGS{MIN_PERL_VERSION} = delete $MM_ARGS{PREREQ_PM}{perl} || 0;
 
-install_script glob('script/*.pl');
-auto_install;
-WriteAll;
+delete $MM_ARGS{MIN_PERL_VERSION}
+  if $eumm_version < 6.47_01;
+$MM_ARGS{BUILD_REQUIRES} = {%{$MM_ARGS{BUILD_REQUIRES}}, %{delete $MM_ARGS{TEST_REQUIRES}}}
+  if $eumm_version < 6.63_03;
+$MM_ARGS{PREREQ_PM} = {%{$MM_ARGS{PREREQ_PM}}, %{delete $MM_ARGS{BUILD_REQUIRES}}}
+  if $eumm_version < 6.55_01;
+delete $MM_ARGS{CONFIGURE_REQUIRES}
+  if $eumm_version < 6.51_03;
+
+ExtUtils::MakeMaker::WriteMakefile(%MM_ARGS);
+## END BOILERPLATE ###########################################################
 
 print <<"EOF";
 
@@ -140,60 +245,3 @@ print <<"EOF";
 
  Have fun!
 EOF
-
-# NOTE - This is the version number of the _incompatible_ code,
-#        not the version number of the fixed version.
-my %conflicts = (
-    'Catalyst::Plugin::SubRequest' => '0.14',
-    'Catalyst::Model::Akismet' => '0.02',
-    'Catalyst::Component::ACCEPT_CONTEXT' => '0.06',
-    'Catalyst::Plugin::ENV' => '9999', # This plugin is just stupid, full stop
-                                       # should have been a core fix.
-    'Catalyst::Plugin::Unicode::Encoding' => '0.2',
-    'Catalyst::Plugin::Authentication' => '0.10010', # _config accessor in ::Credential::Password
-    'Catalyst::Authentication::Credential::HTTP' => '1.009',
-    'Catalyst::Plugin::Session::Store::File'     => '0.16',
-    'Catalyst::Plugin::Session'                  => '0.21',
-    'Catalyst::Plugin::Session::State::Cookie'   => '0.10',
-    'Catalyst::Plugin::Session::Store::FastMmap' => '0.09',
-    'Catalyst::Controller::AllowDisable'         => '0.03',
-    'Reaction'                                   => '0.001999',
-    'Catalyst::Plugin::Upload::Image::Magick'    => '0.03',
-    'Catalyst::Plugin::ConfigLoader'             => '0.22', # Older versions work but
-                                                  # throw Data::Visitor warns
-    'Catalyst::Devel'                            => '1.19',
-    'Catalyst::Plugin::SmartURI'                 => '0.032',
-    'CatalystX::CRUD'                            => '0.37',
-    'Catalyst::Action::RenderView'               => '0.07',
-    'Catalyst::Plugin::DebugCookie'              => '0.999002',
-    'Catalyst::Plugin::Authentication'           => '0.100091',
-    'CatalystX::Imports'                         => '0.03',
-    'Catalyst::Plugin::HashedCookies'            => '1.03',
-    'Catalyst::Action::REST'                     => '0.67',
-    'CatalystX::CRUD'                            => '0.42',
-    'CatalystX::CRUD::Model::RDBO'               => '0.20',
-    'Catalyst::View::Mason'                      => '0.17',
-#    Note these are not actually needed - they fail tests against the
-#    new version, but still work fine..
-#    'Catalyst::ActionRole::ACL'                  => '0.05',
-#    'Catalyst::Plugin::Session::Store::DBIC'     => '0.11',
-      'Test::WWW::Mechanize::Catalyst'            => '0.53', # Dep warnings unless upgraded.
-);
-check_conflicts(%conflicts);
-
-# End of script, helper functions below.
-
-sub darwin_check_no_resource_forks {
-    if ($^O eq 'darwin') {
-        my $osx_ver = `/usr/bin/sw_vers -productVersion`;
-        chomp $osx_ver;
-
-        # TAR on 10.4 wants COPY_EXTENDED_ATTRIBUTES_DISABLE
-        # On 10.5 (Leopard) it wants COPYFILE_DISABLE
-        my $attr = $osx_ver =~ /^10.(5|6|7|8)/  ? 'COPYFILE_DISABLE' : 'COPY_EXTENDED_ATTRIBUTES_DISABLE';
-
-        makemaker_args(dist => { PREOP => qq{\@if [ "\$\$$attr" != "true" ]; then}.
-                                          qq{ echo "You must set the ENV variable $attr to 'true',"; }.
-                                          ' echo "to avoid getting resource forks in your dist."; exit 255; fi' });
-    }
-}