From: Rafael Garcia-Suarez Date: Mon, 8 Jun 2009 08:03:10 +0000 (+0200) Subject: Upgrade to MakeMaker 6.53_02 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=c09562552278eb4945e2fed8b0ba38b1a12597a7;p=p5sagit%2Fp5-mst-13.2.git Upgrade to MakeMaker 6.53_02 --- diff --git a/MANIFEST b/MANIFEST index c4d43cf..cc17868 100644 --- a/MANIFEST +++ b/MANIFEST @@ -2200,6 +2200,7 @@ lib/ExtUtils/testlib.pm Fixes up @INC to use just-built extension lib/ExtUtils/t/eu_command.t See if ExtUtils::Command works lib/ExtUtils/t/FIRST_MAKEFILE.t See if FIRST_MAKEFILE works lib/ExtUtils/t/fixin.t See if ExtUtils::MakeMaker works +lib/ExtUtils/t/fix_libs.t Test for ExtUtils::MakeMaker lib/ExtUtils/t/hints.t See if hint files are honored. lib/ExtUtils/t/Installapi2.t See if new api for ExtUtils::Install::install() works lib/ExtUtils/t/INSTALL_BASE.t Test INSTALL_BASE in MakeMaker @@ -2207,6 +2208,7 @@ lib/ExtUtils/t/Installed.t See if ExtUtils::Installed works lib/ExtUtils/t/Install.t See if ExtUtils::Install works lib/ExtUtils/t/INST_PREFIX.t See if MakeMaker can apply PREFIXs lib/ExtUtils/t/INST.t Check MakeMaker INST_* macros +lib/ExtUtils/t/is_of_type.t Test for ExtUtils::MakeMaker lib/ExtUtils/t/Liblist.t See if ExtUtils::Liblist works lib/ExtUtils/t/make.t See if make detection works lib/ExtUtils/t/maketext_filter.t See if maketext_filter works @@ -2214,6 +2216,7 @@ lib/ExtUtils/t/Manifest.t See if ExtUtils::Manifest works lib/ExtUtils/t/metafile_data.t See if META.yml handling works lib/ExtUtils/t/metafile_file.t See if META.yml handling works lib/ExtUtils/t/min_perl_version.t Test the MIN_PERL_VERSION argument to WriteMakefile. +lib/ExtUtils/t/miniperl.t Test MakeMaker with miniperl lib/ExtUtils/t/Mkbootstrap.t See if ExtUtils::Mkbootstrap works lib/ExtUtils/t/MM_Any.t See if ExtUtils::MM_Any works lib/ExtUtils/t/MM_BeOS.t See if ExtUtils::MM_BeOS works @@ -2229,6 +2232,7 @@ lib/ExtUtils/t/Packlist.t See if Packlist works lib/ExtUtils/t/parse_version.t See if parse_version works lib/ExtUtils/t/PL_FILES.t Test PL_FILES in MakeMaker lib/ExtUtils/t/pm.t See if MakeMaker can handle PM +lib/ExtUtils/t/pm_to_blib.t Test for ExtUtils::MakeMaker lib/ExtUtils/t/pod2man.t See if MakeMaker can handle no pod2man lib/ExtUtils/t/postamble.t See if postamble works lib/ExtUtils/t/prefixify.t See if MakeMaker can apply a PREFIX @@ -3986,6 +3990,7 @@ t/lib/locale/latin1 Part of locale.t in Latin 1 t/lib/locale/utf8 Part of locale.t in UTF8 t/lib/MakeMaker/Test/Setup/BFD.pm MakeMaker test utilities t/lib/MakeMaker/Test/Setup/MPV.pm MakeMaker test utilities +t/lib/MakeMaker/Test/NoXS.pm MakeMaker test utilities t/lib/MakeMaker/Test/Setup/PL_FILES.pm MakeMaker test utilities t/lib/MakeMaker/Test/Setup/Problem.pm MakeMaker test utilities t/lib/MakeMaker/Test/Setup/Recurs.pm MakeMaker test utilities diff --git a/lib/ExtUtils/Changes b/lib/ExtUtils/Changes index ed008f5..b94843e 100644 --- a/lib/ExtUtils/Changes +++ b/lib/ExtUtils/Changes @@ -1,7 +1,49 @@ +6.53_02 Sun Jun 7 19:24:56 PDT 2009 + Test Fixes + * Stray use of Shell::Command broke older perls + + Other + * MakeMaker will now automatically test itself with multiple + perl versions before releasing. + + +6.53_01 Sun Jun 7 19:02:20 PDT 2009 + Bug Fixes + * blib will now be rebuilt if the Makefile is changed + [rt.cpan.org 46658] + * 6.52 broke the setting of EXTRALIBS, LDLOADLIBS and BSLOADLIBS + when $self->{LIBS}[0] is undefined. + [rt.cpan.org 46633] (Craig Berry) + + Cygwin + * Fixed MM_Cygwin.t when the path prefix (ie. cygdrive) has been + changed by the user. [rt.cpan.org 46585] (JDHEDDEN) + + VMS + * Removed attempts to compensate for the "bin" logical added + by some versions of GNV, Craig says they're futile. + Put a warning into the Makefile.PL instead. + [rt.cpan.org 46679] (Craig Berry) + * Removed the arch_check() special case for VMS. + [rt.cpan.org 46678] (Craig Berry) + + Win32 + * Restore building the core by not trying to load the Win32 + module in arch_check() with miniperl. + [rt.cpan.org 46667] (Max Maischein) + + Tests + * Forgot to get rid of the tests for bytes and vmsish + which were removed in 6.51_01. + * Stopped running a Windows specific arch_check.t test + on non-Windows. (Craig Berry) + [rt.cpan.org 46678] + + 6.52 Sat May 30 11:22:04 PDT 2009 Docs * Documented CONFIGURE_REQUIRES (Alexandr Ciornii) - * Modnerized the docs for PREREQ_PM + * Modernized the docs for PREREQ_PM 6.51_04 Sun May 24 14:04:11 PDT 2009 diff --git a/lib/ExtUtils/Command/MM.pm b/lib/ExtUtils/Command/MM.pm index 73cfd41..f893852 100644 --- a/lib/ExtUtils/Command/MM.pm +++ b/lib/ExtUtils/Command/MM.pm @@ -10,7 +10,7 @@ our @ISA = qw(Exporter); our @EXPORT = qw(test_harness pod2man perllocal_install uninstall warn_if_old_packlist); -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; my $Is_VMS = $^O eq 'VMS'; diff --git a/lib/ExtUtils/Liblist.pm b/lib/ExtUtils/Liblist.pm index 691f204..58dadc0 100644 --- a/lib/ExtUtils/Liblist.pm +++ b/lib/ExtUtils/Liblist.pm @@ -2,7 +2,7 @@ package ExtUtils::Liblist; use strict; -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; use File::Spec; require ExtUtils::Liblist::Kid; diff --git a/lib/ExtUtils/Liblist/Kid.pm b/lib/ExtUtils/Liblist/Kid.pm index 5bf9b15..ab89b32 100644 --- a/lib/ExtUtils/Liblist/Kid.pm +++ b/lib/ExtUtils/Liblist/Kid.pm @@ -9,7 +9,7 @@ use 5.006; # Broken out of MakeMaker from version 4.11 use strict; -our $VERSION = 6.52; +our $VERSION = 6.53_02; use Config; use Cwd 'cwd'; diff --git a/lib/ExtUtils/MM.pm b/lib/ExtUtils/MM.pm index 4d2254b..2f74088 100644 --- a/lib/ExtUtils/MM.pm +++ b/lib/ExtUtils/MM.pm @@ -3,7 +3,7 @@ package ExtUtils::MM; use strict; use ExtUtils::MakeMaker::Config; -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; require ExtUtils::Liblist; require ExtUtils::MakeMaker; diff --git a/lib/ExtUtils/MM_AIX.pm b/lib/ExtUtils/MM_AIX.pm index 11673bf..12b83ae 100644 --- a/lib/ExtUtils/MM_AIX.pm +++ b/lib/ExtUtils/MM_AIX.pm @@ -1,7 +1,7 @@ package ExtUtils::MM_AIX; use strict; -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; require ExtUtils::MM_Unix; our @ISA = qw(ExtUtils::MM_Unix); diff --git a/lib/ExtUtils/MM_Any.pm b/lib/ExtUtils/MM_Any.pm index 4fde1fe..9ec3e06 100644 --- a/lib/ExtUtils/MM_Any.pm +++ b/lib/ExtUtils/MM_Any.pm @@ -1,7 +1,7 @@ package ExtUtils::MM_Any; use strict; -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; use Carp; use File::Spec; @@ -109,6 +109,22 @@ sub os_flavor_is { } +=head3 can_load_xs + + my $can_load_xs = $self->can_load_xs; + +Returns true if we have the ability to load XS. + +This is important because miniperl, used to build XS modules in the +core, can not load XS. + +=cut + +sub can_load_xs { + return defined &DynaLoader::boot_DynaLoader ? 1 : 0; +} + + =head3 split_command my @cmds = $MM->split_command($cmd, @args); @@ -1773,15 +1789,9 @@ CODE $self->{LD_RUN_PATH} = ""; - # Compute EXTRALIBS, BSLOADLIBS and LDLOADLIBS from $self->{LIBS} - # Lets look at $self->{LIBS} carefully: It may be an anon array, a string or - # undefined. In any case we turn it into an anon array: - - # May check $Config{libs} too, thus not empty. - $self->{LIBS} = [$self->{LIBS}] unless ref $self->{LIBS}; - - $self->{LIBS} = [''] unless @{$self->{LIBS}} && defined $self->{LIBS}[0]; + $self->{LIBS} = $self->_fix_libs($self->{LIBS}); + # Compute EXTRALIBS, BSLOADLIBS and LDLOADLIBS from $self->{LIBS} foreach my $libs ( @{$self->{LIBS}} ){ $libs =~ s/^\s*(.*\S)\s*$/$1/; # remove leading and trailing whitespace my(@libs) = $self->extliblist($libs); @@ -1820,6 +1830,18 @@ CODE } +# Lets look at $self->{LIBS} carefully: It may be an anon array, a string or +# undefined. In any case we turn it into an anon array +sub _fix_libs { + my($self, $libs) = @_; + + return !defined $libs ? [''] : + !ref $libs ? [$libs] : + !defined $libs->[0] ? [''] : + $libs ; +} + + =head3 tools_other my $make_frag = $MM->tools_other; diff --git a/lib/ExtUtils/MM_BeOS.pm b/lib/ExtUtils/MM_BeOS.pm index 2b35e32..34d6258 100644 --- a/lib/ExtUtils/MM_BeOS.pm +++ b/lib/ExtUtils/MM_BeOS.pm @@ -26,7 +26,7 @@ require ExtUtils::MM_Any; require ExtUtils::MM_Unix; our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix ); -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; =item os_flavor diff --git a/lib/ExtUtils/MM_Cygwin.pm b/lib/ExtUtils/MM_Cygwin.pm index a0a7d40..3929ceb 100644 --- a/lib/ExtUtils/MM_Cygwin.pm +++ b/lib/ExtUtils/MM_Cygwin.pm @@ -9,7 +9,7 @@ require ExtUtils::MM_Unix; require ExtUtils::MM_Win32; our @ISA = qw( ExtUtils::MM_Unix ); -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; =head1 NAME diff --git a/lib/ExtUtils/MM_DOS.pm b/lib/ExtUtils/MM_DOS.pm index e9ac41e..03537cc 100644 --- a/lib/ExtUtils/MM_DOS.pm +++ b/lib/ExtUtils/MM_DOS.pm @@ -2,7 +2,7 @@ package ExtUtils::MM_DOS; use strict; -our $VERSION = 6.52; +our $VERSION = 6.53_02; require ExtUtils::MM_Any; require ExtUtils::MM_Unix; diff --git a/lib/ExtUtils/MM_Darwin.pm b/lib/ExtUtils/MM_Darwin.pm index 3489730..cbbdf6c 100644 --- a/lib/ExtUtils/MM_Darwin.pm +++ b/lib/ExtUtils/MM_Darwin.pm @@ -7,7 +7,7 @@ BEGIN { our @ISA = qw( ExtUtils::MM_Unix ); } -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; =head1 NAME diff --git a/lib/ExtUtils/MM_MacOS.pm b/lib/ExtUtils/MM_MacOS.pm index fbdf0ce..64173ce 100644 --- a/lib/ExtUtils/MM_MacOS.pm +++ b/lib/ExtUtils/MM_MacOS.pm @@ -2,7 +2,7 @@ package ExtUtils::MM_MacOS; use strict; -our $VERSION = 6.52; +our $VERSION = 6.53_02; sub new { die <<'UNSUPPORTED'; diff --git a/lib/ExtUtils/MM_NW5.pm b/lib/ExtUtils/MM_NW5.pm index 803b08a..0c12905 100644 --- a/lib/ExtUtils/MM_NW5.pm +++ b/lib/ExtUtils/MM_NW5.pm @@ -22,7 +22,7 @@ use strict; use ExtUtils::MakeMaker::Config; use File::Basename; -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; require ExtUtils::MM_Win32; our @ISA = qw(ExtUtils::MM_Win32); diff --git a/lib/ExtUtils/MM_OS2.pm b/lib/ExtUtils/MM_OS2.pm index 17e7163..3c0bea9 100644 --- a/lib/ExtUtils/MM_OS2.pm +++ b/lib/ExtUtils/MM_OS2.pm @@ -5,7 +5,7 @@ use strict; use ExtUtils::MakeMaker qw(neatvalue); use File::Spec; -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; require ExtUtils::MM_Any; require ExtUtils::MM_Unix; diff --git a/lib/ExtUtils/MM_QNX.pm b/lib/ExtUtils/MM_QNX.pm index 4233d93..a4eae59 100644 --- a/lib/ExtUtils/MM_QNX.pm +++ b/lib/ExtUtils/MM_QNX.pm @@ -1,7 +1,7 @@ package ExtUtils::MM_QNX; use strict; -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; require ExtUtils::MM_Unix; our @ISA = qw(ExtUtils::MM_Unix); diff --git a/lib/ExtUtils/MM_UWIN.pm b/lib/ExtUtils/MM_UWIN.pm index 5c84591..d89b47c 100644 --- a/lib/ExtUtils/MM_UWIN.pm +++ b/lib/ExtUtils/MM_UWIN.pm @@ -1,7 +1,7 @@ package ExtUtils::MM_UWIN; use strict; -our $VERSION = 6.52; +our $VERSION = 6.53_02; require ExtUtils::MM_Unix; our @ISA = qw(ExtUtils::MM_Unix); diff --git a/lib/ExtUtils/MM_Unix.pm b/lib/ExtUtils/MM_Unix.pm index 1208ccf..82bb654 100644 --- a/lib/ExtUtils/MM_Unix.pm +++ b/lib/ExtUtils/MM_Unix.pm @@ -15,7 +15,7 @@ use ExtUtils::MakeMaker qw($Verbose neatvalue); # If we make $VERSION an our variable parse_version() breaks use vars qw($VERSION); -$VERSION = '6.52'; +$VERSION = '6.53_02'; require ExtUtils::MM_Any; our @ISA = qw(ExtUtils::MM_Any); @@ -2800,7 +2800,7 @@ sub pm_to_blib { my $self = shift; my($autodir) = $self->catdir('$(INST_LIB)','auto'); my $r = q{ -pm_to_blib : $(TO_INST_PM) +pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM) }; # VMS will swallow '' and PM_FILTER is often empty. So use q[] diff --git a/lib/ExtUtils/MM_VMS.pm b/lib/ExtUtils/MM_VMS.pm index 2b4f1a3..16cc0f7 100644 --- a/lib/ExtUtils/MM_VMS.pm +++ b/lib/ExtUtils/MM_VMS.pm @@ -15,7 +15,7 @@ BEGIN { use File::Basename; -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; require ExtUtils::MM_Any; require ExtUtils::MM_Unix; @@ -1565,19 +1565,6 @@ map_clean : } -=item arch_check (override) - -vmsify all arguments for consistency - -=cut - -sub arch_check { - my $self = shift; - - return $self->SUPER::arch_check(map { vmsify($_) } @_); -} - - # --- Output postprocessing section --- =item maketext_filter (override) diff --git a/lib/ExtUtils/MM_VOS.pm b/lib/ExtUtils/MM_VOS.pm index fd4f8c4..686245c 100644 --- a/lib/ExtUtils/MM_VOS.pm +++ b/lib/ExtUtils/MM_VOS.pm @@ -1,7 +1,7 @@ package ExtUtils::MM_VOS; use strict; -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; require ExtUtils::MM_Unix; our @ISA = qw(ExtUtils::MM_Unix); diff --git a/lib/ExtUtils/MM_Win32.pm b/lib/ExtUtils/MM_Win32.pm index 2a15502..4b9e9b8 100644 --- a/lib/ExtUtils/MM_Win32.pm +++ b/lib/ExtUtils/MM_Win32.pm @@ -27,7 +27,7 @@ use ExtUtils::MakeMaker qw( neatvalue ); require ExtUtils::MM_Any; require ExtUtils::MM_Unix; our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix ); -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; $ENV{EMXSHELL} = 'sh'; # to run `commands` @@ -414,6 +414,10 @@ Normalize all arguments for consistency of comparison. sub arch_check { my $self = shift; + # Win32 is an XS module, minperl won't have it. + # arch_check() is not critical, so just fake it. + return 1 unless $self->can_load_xs; + require Win32; return $self->SUPER::arch_check( map { lc Win32::GetShortPathName($_) } @_); } diff --git a/lib/ExtUtils/MM_Win95.pm b/lib/ExtUtils/MM_Win95.pm index 4467ba1..cd7afe8 100644 --- a/lib/ExtUtils/MM_Win95.pm +++ b/lib/ExtUtils/MM_Win95.pm @@ -2,7 +2,7 @@ package ExtUtils::MM_Win95; use strict; -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; require ExtUtils::MM_Win32; our @ISA = qw(ExtUtils::MM_Win32); diff --git a/lib/ExtUtils/MY.pm b/lib/ExtUtils/MY.pm index 7e80a95..23f4108 100644 --- a/lib/ExtUtils/MY.pm +++ b/lib/ExtUtils/MY.pm @@ -3,7 +3,7 @@ package ExtUtils::MY; use strict; require ExtUtils::MM; -our $VERSION = 6.52; +our $VERSION = 6.53_02; our @ISA = qw(ExtUtils::MM); { diff --git a/lib/ExtUtils/MakeMaker.pm b/lib/ExtUtils/MakeMaker.pm index 67655ef..33665f2 100644 --- a/lib/ExtUtils/MakeMaker.pm +++ b/lib/ExtUtils/MakeMaker.pm @@ -18,7 +18,7 @@ our @Overridable; my @Prepend_parent; my %Recognized_Att_Keys; -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; # Emulate something resembling CVS $Revision$ (our $Revision = $VERSION) =~ s{_}{}; @@ -123,7 +123,7 @@ sub _verify_att { my @sigs = ref $sig ? @$sig : $sig; my $given = ref $val; - unless( grep { $given eq $_ || ($_ && eval{$val->isa($_)}) } @sigs ) { + unless( grep { _is_of_type($val, $_) } @sigs ) { my $takes = join " or ", map { _format_att($_) } @sigs; my $has = _format_att($given); @@ -134,6 +134,19 @@ sub _verify_att { } +# Check if a given thing is a reference or instance of $type +sub _is_of_type { + my($thing, $type) = @_; + + return 1 if ref $thing eq $type; + + local $SIG{__DIE__}; + return 1 if eval{ $thing->isa($type) }; + + return 0; +} + + sub _format_att { my $given = shift; diff --git a/lib/ExtUtils/MakeMaker/Config.pm b/lib/ExtUtils/MakeMaker/Config.pm index 9b60e77..b9859ed 100644 --- a/lib/ExtUtils/MakeMaker/Config.pm +++ b/lib/ExtUtils/MakeMaker/Config.pm @@ -2,7 +2,7 @@ package ExtUtils::MakeMaker::Config; use strict; -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; use Config (); diff --git a/lib/ExtUtils/Mkbootstrap.pm b/lib/ExtUtils/Mkbootstrap.pm index f6606cf..5f8ae47 100644 --- a/lib/ExtUtils/Mkbootstrap.pm +++ b/lib/ExtUtils/Mkbootstrap.pm @@ -3,7 +3,7 @@ package ExtUtils::Mkbootstrap; # There's just too much Dynaloader incest here to turn on strict vars. use strict 'refs'; -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; require Exporter; our @ISA = ('Exporter'); diff --git a/lib/ExtUtils/Mksymlists.pm b/lib/ExtUtils/Mksymlists.pm index e3e866e..5aa6ef7 100644 --- a/lib/ExtUtils/Mksymlists.pm +++ b/lib/ExtUtils/Mksymlists.pm @@ -10,7 +10,7 @@ use Config; our @ISA = qw(Exporter); our @EXPORT = qw(&Mksymlists); -our $VERSION = '6.52'; +our $VERSION = '6.53_02'; sub Mksymlists { my(%spec) = @_; diff --git a/lib/ExtUtils/t/MM_Cygwin.t b/lib/ExtUtils/t/MM_Cygwin.t index 7ce380c..36ada35 100644 --- a/lib/ExtUtils/t/MM_Cygwin.t +++ b/lib/ExtUtils/t/MM_Cygwin.t @@ -103,31 +103,23 @@ like( $res, qr/pure_all.*foo.*foo.1/s, '... should add MAN3PODS targets' ); SKIP: { my $comspec = $ENV{COMSPEC}; + skip(q[$ENV{COMSPEC} does not exist], 1) unless $comspec; - skip("\$ENV{COMSPEC} does not exist", 3) unless $comspec; + $comspec = Cygwin::win_to_posix_path($comspec); - # Convert into cygwin-flavoured '/cygdrive/c/...' path. - # Is there a better way than direct munging? A File::* - # module perhaps? - - $comspec =~ s{^(\w):} {/cygdrive/\l$1}x; - $comspec =~ s{\\ } {/}gx; - - ok(MM->maybe_command($comspec),"$comspec should be executable"); - - # /cygdrive/c should *never* be executable, it's a directory. + ok MM->maybe_command($comspec), qq{'$comspec' should be executable"}; +} - ok(! MM->maybe_command(q{/cygdrive/c}), - qq{/cygdrive/c should never be executable} - ); +# 'C:/' should *never* be executable, it's a directory. +{ + my $cdrive = Cygwin::win_to_posix_path("C:/"); - # Our copy of Perl (with a unix-path) should always be executable. + ok !MM->maybe_command($cdrive), qq{'$cdrive' should never be executable}; +} - ok(MM->maybe_command($Config{perlpath}), - qq{$Config{perlpath} should be executable} - ); +# Our copy of Perl (with a unix-path) should always be executable. +ok MM->maybe_command($Config{perlpath}), qq{'$Config{perlpath}' should be executable}; -} package FakeOut; diff --git a/lib/ExtUtils/t/arch_check.t b/lib/ExtUtils/t/arch_check.t index a4fe88b..e4b3aef 100644 --- a/lib/ExtUtils/t/arch_check.t +++ b/lib/ExtUtils/t/arch_check.t @@ -1,12 +1,5 @@ #!/usr/bin/perl -w -BEGIN { - if ($ENV{PERL_CORE}) { - chdir 't' if -d 't'; - @INC = qw(../lib lib); - } -} - use strict; use lib 't/lib'; @@ -52,8 +45,9 @@ if you have problems building this extension. # Different file path separators [rt.cpan.org 46416] SKIP: { - skip "Can't load File::Spec::Win32" unless eval "require File::Spec::Win32"; - local @File::Spec::ISA = qw(File::Spec::Win32); + require File::Spec; + skip "Win32 test", 1 unless File::Spec->isa("File::Spec::Win32"); + ok $mm->arch_check( "/_64/perl1004/lib/Config.pm", '\\_64\\perl1004\\lib\\Config.pm', @@ -63,6 +57,9 @@ SKIP: { # PERL_SRC is set, no check is done { + # Clear our log + $stdout->read; + local $mm->{PERL_SRC} = 1; ok $mm->arch_check( $rel2abs->(qw(. t testdata reallylongdirectoryname arch1 Config.pm)), diff --git a/lib/ExtUtils/t/basic.t b/lib/ExtUtils/t/basic.t index afd5fae..67d39f5 100644 --- a/lib/ExtUtils/t/basic.t +++ b/lib/ExtUtils/t/basic.t @@ -24,16 +24,9 @@ use File::Find; use File::Spec; use File::Path; -# 'make disttest' sets a bunch of environment variables which interfere -# with our testing. -delete @ENV{qw(PREFIX LIB MAKEFLAGS)}; - my $perl = which_perl(); my $Is_VMS = $^O eq 'VMS'; -# GNV logical interferes with testing -local $ENV{'bin'} = '[.bin]' if $Is_VMS; - chdir 't'; perl_lib; diff --git a/lib/ExtUtils/t/fix_libs.t b/lib/ExtUtils/t/fix_libs.t new file mode 100644 index 0000000..c683fc5 --- /dev/null +++ b/lib/ExtUtils/t/fix_libs.t @@ -0,0 +1,28 @@ +#!/usr/bin/perl -w + +# Unit test the code which fixes up $self->{LIBS} + +use strict; +use lib 't/lib'; +use Test::More 'no_plan'; + +use ExtUtils::MakeMaker; + +my @tests = ( + # arg # want + [ undef, [''] ], + [ "foo", ['foo'] ], + [ [], [''] ], + [ ["foo"], ['foo'] ], + [ [1, 2, 3], [1, 2, 3] ], + [ [0], [0] ], + [ [''], [''] ], + [ " ", [' '] ], +); + +for my $test (@tests) { + my($arg, $want) = @$test; + + my $display = defined $arg ? $arg : "undef"; + is_deeply( MM->_fix_libs($arg), $want, "fix_libs($display)" ); +} diff --git a/lib/ExtUtils/t/is_of_type.t b/lib/ExtUtils/t/is_of_type.t new file mode 100644 index 0000000..d123ee3 --- /dev/null +++ b/lib/ExtUtils/t/is_of_type.t @@ -0,0 +1,31 @@ +#!/usr/bin/perl -w + +# Test _is_of_type() + +use strict; +use ExtUtils::MakeMaker; + +use Test::More "no_plan"; + +my $is_of_type = \&ExtUtils::MakeMaker::_is_of_type; + +my @tests = ( + [23, "", 1], + [[], "", 0], + [{}, "", 0], + [[], "HASH", 0], + [{}, "HASH", 1], + [bless({}, "Foo"), "Foo", 1], + [bless({}, "Bar"), "Foo", 0], + [bless([], "Foo"), "", 0], + [bless([], "Foo"), "HASH", 0], + [bless([], "Foo"), "ARRAY", 1], +); + +for my $test (@tests) { + my($thing, $type, $want) = @$test; + + # [rt.cpan.org 41060] + local $SIG{__DIE__} = sub { fail("sigdie should be ignored") }; + is !!$is_of_type->($thing, $type), !!$want, qq[_is_of_type($thing, '$type'): $want]; +} diff --git a/lib/ExtUtils/t/miniperl.t b/lib/ExtUtils/t/miniperl.t new file mode 100644 index 0000000..2334eb0 --- /dev/null +++ b/lib/ExtUtils/t/miniperl.t @@ -0,0 +1,50 @@ +#!/usr/bin/perl -w + +# Test that we can build modules as miniperl. +# This mostly means no XS modules. + +use strict; +use lib 't/lib'; + +use Test::More 'no_plan'; + +BEGIN { + ok !$INC{"ExtUtils/MakeMaker.pm"}, "MakeMaker is not yet loaded"; +} + +# Disable all XS from here on +use MakeMaker::Test::NoXS; + +use ExtUtils::MakeMaker; + +use MakeMaker::Test::Utils; +use MakeMaker::Test::Setup::BFD; + + +my $perl = which_perl(); +my $makefile = makefile_name(); +my $make = make_run(); + + +# Setup our test environment +{ + chdir 't'; + + perl_lib; + + ok( setup_recurs(), 'setup' ); + END { + ok( chdir File::Spec->updir ); + ok( teardown_recurs(), 'teardown' ); + } + + ok( chdir('Big-Dummy'), "chdir'd to Big-Dummy" ) || + diag("chdir failed: $!"); +} + + +# Run make once +{ + run_ok(qq{$perl Makefile.PL}); + run_ok($make); +} diff --git a/lib/ExtUtils/t/pm_to_blib.t b/lib/ExtUtils/t/pm_to_blib.t new file mode 100644 index 0000000..66ef879 --- /dev/null +++ b/lib/ExtUtils/t/pm_to_blib.t @@ -0,0 +1,70 @@ +#!/usr/bin/perl -w + +# Ensure pm_to_blib runs at the right times. + +use strict; +use lib 't/lib'; + +use Test::More 'no_plan'; + +use ExtUtils::MakeMaker; + +use MakeMaker::Test::Utils; +use MakeMaker::Test::Setup::BFD; + + +my $perl = which_perl(); +my $makefile = makefile_name(); +my $make = make_run(); + + +# Setup our test environment +{ + chdir 't'; + + perl_lib; + + ok( setup_recurs(), 'setup' ); + END { + ok( chdir File::Spec->updir ); + ok( teardown_recurs(), 'teardown' ); + } + + ok( chdir('Big-Dummy'), "chdir'd to Big-Dummy" ) || + diag("chdir failed: $!"); +} + + +# Run make once +{ + run_ok(qq{$perl Makefile.PL}); + run_ok($make); + + ok( -e "blib/lib/Big/Dummy.pm", "blib copied pm file" ); +} + + +# Change a pm file, it should be copied. +{ + # Wait a couple seconds else our changed file will have the same timestamp + # as the blib file + sleep 2; + + ok( open my $fh, ">>", "lib/Big/Dummy.pm" ) or die $!; + print $fh "Something else\n"; + close $fh; + + run_ok($make); + like slurp("blib/lib/Big/Dummy.pm"), qr/Something else\n$/; +} + + +# Rerun the Makefile.PL, pm_to_blib should rerun +{ + run_ok(qq{$perl Makefile.PL}); + + # XXX This is a fragile way to check that it reran. + like run_ok($make), qr/^Skip /ms; + + ok( -e "blib/lib/Big/Dummy.pm", "blib copied pm file" ); +} diff --git a/lib/ExtUtils/t/pod2man.t b/lib/ExtUtils/t/pod2man.t index fa533bd..1632234 100644 --- a/lib/ExtUtils/t/pod2man.t +++ b/lib/ExtUtils/t/pod2man.t @@ -1,12 +1,5 @@ #!/usr/bin/perl -w -BEGIN { - if ($ENV{PERL_CORE}) { - chdir 't' if -d 't'; - @INC = qw(../lib); - } -} - # Test our simulation of pod2man use strict; diff --git a/lib/ExtUtils/t/xs.t b/lib/ExtUtils/t/xs.t index 398b84a..5a15190 100644 --- a/lib/ExtUtils/t/xs.t +++ b/lib/ExtUtils/t/xs.t @@ -32,9 +32,6 @@ else { my $Is_VMS = $^O eq 'VMS'; my $perl = which_perl(); -# GNV logical interferes with testing -$ENV{'bin'} = '[.bin]' if $Is_VMS; - chdir 't'; perl_lib; diff --git a/lib/ExtUtils/testlib.pm b/lib/ExtUtils/testlib.pm index 41eaf80..f4241de 100644 --- a/lib/ExtUtils/testlib.pm +++ b/lib/ExtUtils/testlib.pm @@ -3,7 +3,7 @@ package ExtUtils::testlib; use strict; use warnings; -our $VERSION = 6.52; +our $VERSION = 6.53_02; use Cwd; use File::Spec; diff --git a/t/lib/MakeMaker/Test/NoXS.pm b/t/lib/MakeMaker/Test/NoXS.pm new file mode 100644 index 0000000..ef20e66 --- /dev/null +++ b/t/lib/MakeMaker/Test/NoXS.pm @@ -0,0 +1,14 @@ +package MakeMaker::Test::NoXS; + +# Disable all XS loading. + +use Carp; + +require DynaLoader; +require XSLoader; + +no warnings 'redefine'; +*DynaLoader::bootstrap = sub { confess "Tried to load XS for @_"; }; +*XSLoader::load = sub { confess "Tried to load XS for @_"; }; + +1; diff --git a/t/lib/MakeMaker/Test/Utils.pm b/t/lib/MakeMaker/Test/Utils.pm index 2e9e725..1fb4174 100644 --- a/t/lib/MakeMaker/Test/Utils.pm +++ b/t/lib/MakeMaker/Test/Utils.pm @@ -7,8 +7,6 @@ use Config; require Exporter; our @ISA = qw(Exporter); -our $VERSION = 0.04; - our $Is_VMS = $^O eq 'VMS'; our $Is_MacOS = $^O eq 'MacOS'; @@ -17,6 +15,7 @@ our @EXPORT = qw(which_perl perl_lib makefile_name makefile_backup setup_mm_test_root have_compiler slurp $Is_VMS $Is_MacOS + run_ok ); @@ -29,6 +28,9 @@ our @EXPORT = qw(which_perl perl_lib makefile_name makefile_backup HARNESS_TIMER HARNESS_OPTIONS HARNESS_VERBOSE + PREFIX + LIB + MAKEFLAGS ); # Remember the ENV values because on VMS %ENV is global @@ -301,6 +303,27 @@ sub run { } } + +=item B + + my @out = run_ok($cmd); + +Like run() but it tests that the result exited normally. + +The output from run() will be used as a diagnostic if it fails. + +=cut + +sub run_ok { + my $tb = Test::Builder->new; + + my @out = run(@_); + + $tb->cmp_ok( $?, '==', 0, "run(@_)" ) || $tb->diag(@out); + + return wantarray ? @out : join "", @out; +} + =item B Creates a rooted logical to avoid the 8-level limit on older VMS systems.