summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Garcia-Suarez <rgarciasuarez@gmail.com>2009-06-08 10:03:10 +0200
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2009-06-08 10:03:10 +0200
commitc09562552278eb4945e2fed8b0ba38b1a12597a7 (patch)
tree1a2cd70aa5485ffdc751b39562bd127ce31441c7
parentd2aa556d1dea54fbfdfccbd64c2c477a79461a56 (diff)
downloadperl-c09562552278eb4945e2fed8b0ba38b1a12597a7.tar.gz
Upgrade to MakeMaker 6.53_02
-rw-r--r--MANIFEST5
-rw-r--r--lib/ExtUtils/Changes44
-rw-r--r--lib/ExtUtils/Command/MM.pm2
-rw-r--r--lib/ExtUtils/Liblist.pm2
-rw-r--r--lib/ExtUtils/Liblist/Kid.pm2
-rw-r--r--lib/ExtUtils/MM.pm2
-rw-r--r--lib/ExtUtils/MM_AIX.pm2
-rw-r--r--lib/ExtUtils/MM_Any.pm40
-rw-r--r--lib/ExtUtils/MM_BeOS.pm2
-rw-r--r--lib/ExtUtils/MM_Cygwin.pm2
-rw-r--r--lib/ExtUtils/MM_DOS.pm2
-rw-r--r--lib/ExtUtils/MM_Darwin.pm2
-rw-r--r--lib/ExtUtils/MM_MacOS.pm2
-rw-r--r--lib/ExtUtils/MM_NW5.pm2
-rw-r--r--lib/ExtUtils/MM_OS2.pm2
-rw-r--r--lib/ExtUtils/MM_QNX.pm2
-rw-r--r--lib/ExtUtils/MM_UWIN.pm2
-rw-r--r--lib/ExtUtils/MM_Unix.pm4
-rw-r--r--lib/ExtUtils/MM_VMS.pm15
-rw-r--r--lib/ExtUtils/MM_VOS.pm2
-rw-r--r--lib/ExtUtils/MM_Win32.pm6
-rw-r--r--lib/ExtUtils/MM_Win95.pm2
-rw-r--r--lib/ExtUtils/MY.pm2
-rw-r--r--lib/ExtUtils/MakeMaker.pm17
-rw-r--r--lib/ExtUtils/MakeMaker/Config.pm2
-rw-r--r--lib/ExtUtils/Mkbootstrap.pm2
-rw-r--r--lib/ExtUtils/Mksymlists.pm2
-rw-r--r--lib/ExtUtils/t/MM_Cygwin.t30
-rw-r--r--lib/ExtUtils/t/arch_check.t15
-rw-r--r--lib/ExtUtils/t/basic.t7
-rw-r--r--lib/ExtUtils/t/fix_libs.t28
-rw-r--r--lib/ExtUtils/t/is_of_type.t31
-rw-r--r--lib/ExtUtils/t/miniperl.t50
-rw-r--r--lib/ExtUtils/t/pm_to_blib.t70
-rw-r--r--lib/ExtUtils/t/pod2man.t7
-rw-r--r--lib/ExtUtils/t/xs.t3
-rw-r--r--lib/ExtUtils/testlib.pm2
-rw-r--r--t/lib/MakeMaker/Test/NoXS.pm14
-rw-r--r--t/lib/MakeMaker/Test/Utils.pm27
39 files changed, 358 insertions, 97 deletions
diff --git a/MANIFEST b/MANIFEST
index c4d43cf5ec..cc1786811b 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 ed008f5ab5..b94843ef95 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 73cfd41140..f893852f6e 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 691f204695..58dadc0895 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 5bf9b153cd..ab89b32392 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 4d2254b9df..2f74088648 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 11673bf8ac..12b83ae978 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 4fde1fee6c..9ec3e06a8a 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 2b35e32d80..34d62585bb 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 a0a7d40486..3929ceb9a5 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 e9ac41e80f..03537cc7e3 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 3489730d57..cbbdf6c7b7 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 fbdf0ce34f..64173cede3 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 803b08a446..0c1290579e 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 17e71637cb..3c0bea9d8c 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 4233d93230..a4eae596a2 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 5c84591008..d89b47c586 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 1208ccffb0..82bb654640 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 2b4f1a382e..16cc0f70a4 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 fd4f8c4fe5..686245c662 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 2a15502da8..4b9e9b8fb3 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 4467ba10d7..cd7afe85c1 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 7e80a95b8a..23f4108c72 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 67655ef5ee..33665f2363 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 9b60e7766a..b9859ed6b8 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 f6606cf1c2..5f8ae47488 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 e3e866e364..5aa6ef78cc 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 7ce380c2ba..36ada354b8 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 a4fe88b0ba..e4b3aef7af 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 afd5fae8c8..67d39f578d 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 0000000000..c683fc5571
--- /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 0000000000..d123ee34fd
--- /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 0000000000..2334eb05d8
--- /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 0000000000..66ef879e4e
--- /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 fa533bdcf0..1632234b15 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 398b84ae8f..5a15190d3e 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 41eaf80c03..f4241de44f 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 0000000000..ef20e66cf6
--- /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 2e9e7250ca..1fb417472d 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<run_ok>
+
+ 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<setup_mm_test_root>
Creates a rooted logical to avoid the 8-level limit on older VMS systems.