X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Makefile.PL;h=1deccc5bf4e3a82d40ebf7a64e3c9dbadd177647;hb=b2e54862c91ba576736e1889a84733d11cb1b675;hp=bf6d28f16bba229ab4ad1159cea90ebe27fc8188;hpb=aa2aafaeb56dc0b50be2878642669c5ee17d944f;p=p5sagit%2Fnamespace-clean.git diff --git a/Makefile.PL b/Makefile.PL index bf6d28f..1deccc5 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -1,30 +1,136 @@ -#!/usr/bin/env perl -use warnings; use strict; +use warnings; +use 5.008001; + +use ExtUtils::MakeMaker; + +my $mymeta_works = eval { ExtUtils::MakeMaker->VERSION('6.5707'); 1 }; +my $mymeta = $mymeta_works || eval { ExtUtils::MakeMaker->VERSION('6.5702'); 1 }; + +my %BUILD_DEPS = ( + 'Test::More' => '0.88', +); + +my %RUN_DEPS = ( + 'Package::Stash' => '0.23', +); + +my %OPT_RUN_DEPS = (can_cc() ? ( + 'B::Hooks::EndOfScope' => '0.07', # when changing, also change $b_h_eos_req in namespace/clean.pm + + # these pieces are needed if using the debugger on the perl range + ($] > 5.008_008_9 && $] < 5.013_006_1) + ? ( 'Sub::Name' => '0.04', 'Sub::Identify' => '0.04' ) # when changing, also change $sn_ver and $si_ver in namespace/clean.pm + : () + , + + # make sure we smoke the pure-perl version + is_smoker() ? ( 'Devel::Hide' => 0 ) : (), +) : () ); + +my %META_BITS = ( + resources => { + homepage => 'http://search.cpan.org/dist/namespace-clean', + + # EUMM not supporting nested meta :( + #repository => { + # type => 'git', + # url => 'git://git.shadowcat.co.uk/p5sagit/namespace-clean.git', + # web => 'http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit/namespace-clean.git', + #} + #bugtracker => { + # mailto => 'bug-namespace-clean@rt.cpan.org', + # web => 'http://rt.cpan.org/Public/Dist/Display.html?Name=namespace-clean', + #}, + + repository => 'git://git.shadowcat.co.uk/p5sagit/namespace-clean.git', + bugtracker => 'http://rt.cpan.org/Public/Dist/Display.html?Name=namespace-clean', + }, +); -use inc::Module::Install; +my %WriteMakefileArgs = ( + 'NAME' => 'namespace::clean', + 'VERSION_FROM' => 'lib/namespace/clean.pm', + 'ABSTRACT' => 'Keep imports and functions out of your namespace', + 'AUTHOR' => 'Robert \'phaylon\' Sedlacek , Florian Ragwitz , Jesse Luehrs ', -name q{namespace-clean}; -license q{perl}; -author q{Robert 'phaylon' Sedlacek }; -all_from q{lib/namespace/clean.pm}; + 'PREREQ_PM' => { + %RUN_DEPS, %OPT_RUN_DEPS, + $mymeta_works ? () : (%BUILD_DEPS), + }, -build_requires q{Test::More}, '0.62'; -build_requires q{FindBin}, 0; + $mymeta_works + ? ( # BUILD_REQUIRES makes MYMETA right, requires stops META being wrong + 'BUILD_REQUIRES' => \%BUILD_DEPS, + 'META_ADD' => { + %META_BITS, + requires => \%RUN_DEPS, + }, + ) + : ( # META_ADD both to get META right - only Makefile written + 'META_ADD' => { + %META_BITS, + requires => \%RUN_DEPS, + build_requires => \%BUILD_DEPS, + }, + ) + , -requires q{B::Hooks::EndOfScope}, 0; -requires q{Symbol}, 0; + ($mymeta and !$mymeta_works) ? ( 'NO_MYMETA' => 1 ) : (), -auto_provides; -auto_install; + 'LICENSE' => 'perl', +); -if (-e 'MANIFEST.SKIP') { - print "Creating README file\n"; - system 'pod2text lib/namespace/clean.pm > README'; +unless ( eval { ExtUtils::MakeMaker->VERSION('6.56') } ) { + my $br = delete $WriteMakefileArgs{BUILD_REQUIRES}; + my $pp = $WriteMakefileArgs{PREREQ_PM}; + for my $mod ( keys %$br ) { + if ( exists $pp->{$mod} ) { + $pp->{$mod} = $br->{$mod} if $br->{$mod} > $pp->{$mod}; + } + else { + $pp->{$mod} = $br->{$mod}; + } + } +} + +delete $WriteMakefileArgs{CONFIGURE_REQUIRES} + unless eval { ExtUtils::MakeMaker->VERSION('6.52') }; + +WriteMakefile(%WriteMakefileArgs); + + +# can we locate a (the) C compiler +sub can_cc { + my @chunks = split(/ /, $Config::Config{cc}) or return; + + # $Config{cc} may contain args; try to find out the program part + while (@chunks) { + return can_run("@chunks") || (pop(@chunks), next); + } - print "Adding author tests to 'make test' run\n"; - tests 't/*.t t_author/*.t'; + return; } -WriteAll; +# check if we can run some command +sub can_run { + my ($cmd) = @_; + + return $cmd if -x $cmd; + if (my $found_cmd = MM->maybe_command($cmd)) { + return $found_cmd; + } + + for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') { + next if $dir eq ''; + my $abs = File::Spec->catfile($dir, $cmd); + return $abs if (-x $abs or $abs = MM->maybe_command($abs)); + } + + return; +} + +sub is_smoker { + return ( $ENV{AUTOMATED_TESTING} && ! $ENV{PERL5_CPANM_IS_RUNNING} && ! $ENV{RELEASE_TESTING} ) +}