X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Makefile.PL;h=7cfceca0f69f1ab15a78b37ae15a57febffefeab;hb=0caae1168cadec2adbb25e63058557b7b9857a61;hp=d94015d15f6a1f0b3bb5c0d813b7bde01350fd27;hpb=e896822dbc5d27f54b7336d2b46df47b8027b3c2;p=gitmo%2FClass-MOP.git diff --git a/Makefile.PL b/Makefile.PL index d94015d..7cfceca 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -7,6 +7,8 @@ use ExtUtils::MakeMaker; use Config qw(%Config); use File::Spec; +use 5.008; + # If undefined, try our best, if true, require XS, if false, never do # XS my $force_xs; @@ -16,21 +18,27 @@ for (@ARGV) { /^--xs/ and $force_xs = 1; } -my $has_compiler = $force_xs; +our $has_compiler = $force_xs; unless ( defined $force_xs ) { $has_compiler = check_for_compiler() or no_cc(); } my %prereqs = ( - 'Scalar::Util' => '1.18', - 'Sub::Name' => '0.02', - 'Sub::Identify' => '0.03', - 'MRO::Compat' => '0.05', - 'Carp' => 0, + 'Scalar::Util' => '1.18', + 'Sub::Name' => '0.04', + 'Sub::Identify' => '0.03', + 'MRO::Compat' => '0.05', + 'Test::More' => '0', + 'Test::Exception' => '0', + 'File::Spec' => '0', + 'Carp' => '0', + 'Devel::GlobalDestruction' => '0', + 'Task::Weaken' => '0', + 'B' => '0', ); -delete $prereqs{'Sub::Name'} +delete @prereqs{qw(Sub::Name Devel::GlobalDestruction)} unless $has_compiler; write_makefile(); @@ -44,7 +52,7 @@ sub write_makefile { PREREQ_PM => \%prereqs, CONFIGURE => \&init, CCFLAGS => $ccflags, - clean => { FILES => 'test.c test.o' }, + clean => { FILES => 'test.c test.o t/pp*' }, ABSTRACT_FROM => 'lib/Class/MOP.pm', AUTHOR => 'Stevan Little ', LICENSE => 'perl', @@ -110,6 +118,21 @@ EOF return 1; } +# This sucks, but it's the best guess we can make. Since we just use +# it to run two sets of tests, it's not big deal if it ends up true +# for a non-maintainer. +sub is_maintainer { + return 0 if $ENV{PERL5_CPAN_IS_RUNNING} || $ENV{PERL5_CPANPLUS_IS_RUNNING}; + + return 1; +} + +sub get_pp_tests { + opendir my $dh, 't' or die "Cannot read t: $!"; + + return grep { $_ !~ /^99/ } grep {/^\d.+\.t$/} readdir $dh; +} + # This is EUMM voodoo sub init { my $hash = $_[1]; @@ -120,3 +143,27 @@ sub init { $hash; } + +package MY; + +sub postamble { + my @test_files = ::get_pp_tests(); + my $pp_tests = join q{ }, map { File::Spec->catfile('t', "pp_${_}") } @test_files; + my @pp_test_targets = join qq{\n}, map { + my $source = File::Spec->catfile('t', ${_}); + File::Spec->catfile('t', "pp_${_}") . q{: } + . qq{$source t/header_pp.inc\n\t} + . q{$(NOECHO) $(ABSPERLRUN) "-MExtUtils::Command" -e cat t/header_pp.inc } + . $source . q{ > $@} . qq{\n} + } @test_files; + my $test_dep = $::has_compiler && (::is_maintainer() || $ENV{AUTOMATED_TESTING}) + ? qq{pure_all :: pp_tests\n} . join qq{\n}, @pp_test_targets + : ''; + + return <<"EOM" +pp_tests: ${pp_tests} + +${test_dep} + +EOM +}