In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/7ad910c539e81fc14531489c2ef9c54784deef8f?hp=42752acc4959c5b770bbc29532bf2677f4533c4e>

- Log -----------------------------------------------------------------
commit 7ad910c539e81fc14531489c2ef9c54784deef8f
Author: Chris 'BinGOs' Williams <[email protected]>
Date:   Fri Jun 9 17:41:20 2017 +0100

    Update ExtUtils-MakeMaker to CPAN version 7.28
    
      [DELTA]
    
    7.28  Tue May 30 22:01:08 BST 2017
    
        No changes since v7.27_02
    
    7.27_02 Tue May 30 09:27:56 BST 2017
    
        Bug fixes:
        - Prune auto/share from search paths RT#121918
    
    7.27_01 Sun May 28 11:35:46 BST 2017
    
        Bug fixes:
        - Fix regression with metadata RT#121913
    
    7.26  Sat May 27 21:01:47 BST 2017
    
        No changes since 7.25_06
    
    7.25_06 Tue May 23 20:18:01 BST 2017
    
        Bug fixes:
        - Fix regression with XS tests on MSWin32 with MS toolchain
    
    7.25_05 Mon May 15 10:18:01 BST 2017
    
        Bug fixes:
        - Make MakeMaker pass compilation tests on AIX again
        - Test, fix test dep on SKIPped linktype
    
    7.25_04 Fri May 12 12:24:09 BST 2017
    
        Enhancements:
        - Add os_unsupported() function
    
    7.25_03 Thu May 11 17:51:23 BST 2017
    
        Bug fixes:
        - processPL now depends on 'pure_all' instead of 'all'
    
    7.25_02 Thu May 11 11:54:42 BST 2017
    
        Bug fixes:
        - Only add staticlibs that are installed under auto/
        - Correct the order of tests of chmod()
    
        Doc fixes:
        - Fixed typo in MakeMaker.pm
    
    7.25_01 Fri Feb  3 13:36:25 GMT 2017
    
        Bug fixes:
        - Make perllocal.pod files reproducible
        - META_ADD/MERGE default meta version based on each other
        - Eliminate an ancient, unneeded, dangerous call to Carp::longmess
-----------------------------------------------------------------------

Summary of changes:
 MANIFEST                                           |   1 +
 Porting/Maintainers.pl                             |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm    |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm |   5 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm    |   2 +-
 .../ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm         |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm     |  26 +++--
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm     |  17 +++-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm    |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm  |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm     |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm  |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm   |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm     |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm     |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm     |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm    |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm    |  36 ++++---
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm     |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm     |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm   |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm   |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm         |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm  |  26 +++--
 .../lib/ExtUtils/MakeMaker/Config.pm               |   2 +-
 .../lib/ExtUtils/MakeMaker/FAQ.pod                 |   2 +-
 .../lib/ExtUtils/MakeMaker/Locale.pm               |   2 +-
 .../lib/ExtUtils/MakeMaker/Tutorial.pod            |   4 +-
 .../lib/ExtUtils/MakeMaker/version.pm              |   2 +-
 .../lib/ExtUtils/MakeMaker/version/regex.pm        |   2 +-
 .../ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm    |   2 +-
 cpan/ExtUtils-MakeMaker/t/03-xsstatic.t            |   3 -
 cpan/ExtUtils-MakeMaker/t/basic.t                  |  16 +++-
 cpan/ExtUtils-MakeMaker/t/eu_command.t             |  13 +--
 .../t/lib/MakeMaker/Test/Setup/XS.pm               |  76 ++++++++++++++-
 cpan/ExtUtils-MakeMaker/t/metafile_data.t          | 106 ++++++++++++++++++++-
 cpan/ExtUtils-MakeMaker/t/os_unsupported.t         |  15 +++
 40 files changed, 324 insertions(+), 74 deletions(-)
 create mode 100644 cpan/ExtUtils-MakeMaker/t/os_unsupported.t

diff --git a/MANIFEST b/MANIFEST
index 1214581627..27bd73739f 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1200,6 +1200,7 @@ cpan/ExtUtils-MakeMaker/t/MM_Unix.t                       
        See if ExtUtils::MM_UNIX works
 cpan/ExtUtils-MakeMaker/t/MM_VMS.t                             See if 
ExtUtils::MM_VMS works
 cpan/ExtUtils-MakeMaker/t/MM_Win32.t                           See if 
ExtUtils::MM_Win32 works
 cpan/ExtUtils-MakeMaker/t/oneliner.t                           See if MM can 
generate perl one-liners
+cpan/ExtUtils-MakeMaker/t/os_unsupported.t
 cpan/ExtUtils-MakeMaker/t/parse_abstract.t                     See if 
parse_abstract works
 cpan/ExtUtils-MakeMaker/t/parse_version.t                      See if 
parse_version works
 cpan/ExtUtils-MakeMaker/t/PL_FILES.t                           Test PL_FILES 
in MakeMaker
diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl
index b7d4b3b8fe..693f2a5088 100755
--- a/Porting/Maintainers.pl
+++ b/Porting/Maintainers.pl
@@ -460,7 +460,7 @@ use File::Glob qw(:case);
     },
 
     'ExtUtils::MakeMaker' => {
-        'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.24.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.28.tar.gz',
         'FILES'        => q[cpan/ExtUtils-MakeMaker],
         'EXCLUDED'     => [
             qr{^t/lib/Test/},
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm
index c9ff022f03..b96609d08c 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm
@@ -7,7 +7,7 @@ use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION);
 @ISA       = qw(Exporter);
 @EXPORT    = qw(cp rm_f rm_rf mv cat eqtime mkpath touch test_f test_d chmod
                 dos2unix);
-$VERSION = '7.24';
+$VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 my $Is_VMS   = $^O eq 'VMS';
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm
index 69779b2912..ea69e14798 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm
+++ b/cpan/ExtUtils-MakeMaker/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 test_s cp_nonempty);
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 my $Is_VMS = $^O eq 'VMS';
@@ -219,7 +219,8 @@ sub perllocal_install {
                            : @ARGV;
 
     my $pod;
-    $pod = sprintf <<'POD', scalar(localtime), $type, $name, $name;
+    my $time = gmtime($ENV{SOURCE_DATE_EPOCH} || time);
+    $pod = sprintf <<'POD', scalar($time), $type, $name, $name;
  =head2 %s: C<%s> L<%s|%s>
 
  =over 4
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm
index 7b2ca535ce..58418815cd 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm
@@ -2,7 +2,7 @@ package ExtUtils::Liblist;
 
 use strict;
 
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 use File::Spec;
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm
index a7fae86276..0dc9fc5c1c 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm
@@ -11,7 +11,7 @@ use 5.006;
 
 use strict;
 use warnings;
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 use ExtUtils::MakeMaker::Config;
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm
index b327932388..ec1aa80132 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm
@@ -3,7 +3,7 @@ package ExtUtils::MM;
 use strict;
 use ExtUtils::MakeMaker::Config;
 
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 require ExtUtils::Liblist;
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm
index ea646606fc..19f1d5c6c3 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm
@@ -1,9 +1,10 @@
 package ExtUtils::MM_AIX;
 
 use strict;
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
+use ExtUtils::MakeMaker::Config;
 require ExtUtils::MM_Unix;
 our @ISA = qw(ExtUtils::MM_Unix);
 
@@ -34,13 +35,7 @@ Define DL_FUNCS and DL_VARS and write the *.exp files.
 sub dlsyms {
     my($self,%attribs) = @_;
     return '' unless $self->needs_linking;
-    my @m;
-    # these will need XSMULTI-fying but maybe that already happens
-    push @m,"\ndynamic :: $self->{BASEEXT}.exp\n\n"
-      unless $self->{SKIPHASH}{'dynamic'}; # dynamic and static are subs, so...
-    push @m,"\nstatic :: $self->{BASEEXT}.exp\n\n"
-      unless $self->{SKIPHASH}{'static'};  # we avoid a warning if we tick them
-    join "\n", @m, $self->xs_dlsyms_iterator(\%attribs);
+    join "\n", $self->xs_dlsyms_iterator(\%attribs);
 }
 
 =head3 xs_dlsyms_ext
@@ -53,6 +48,21 @@ sub xs_dlsyms_ext {
     '.exp';
 }
 
+sub xs_dlsyms_arg {
+    my($self, $file) = @_;
+    return qq{-bE:${file}};
+}
+
+sub init_others {
+    my $self = shift;
+    $self->SUPER::init_others;
+    # perl "hints" add -bE:$(BASEEXT).exp to LDDLFLAGS. strip that out
+    # so right value can be added by xs_make_dynamic_lib to work for XSMULTI
+    $self->{LDDLFLAGS} ||= $Config{lddlflags};
+    $self->{LDDLFLAGS} =~ s#(\s*)\S*\Q$(BASEEXT)\E\S*(\s*)#$1$2#;
+    return;
+}
+
 =head1 AUTHOR
 
 Michael G Schwern <[email protected]> with code from ExtUtils::MM_Unix
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm
index 433a8dd7a3..4afe450604 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm
@@ -1,7 +1,7 @@
 package ExtUtils::MM_Any;
 
 use strict;
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 use Carp;
@@ -910,6 +910,17 @@ MAKE_FRAG
 }
 
 
+=head3 xs_dlsyms_arg
+
+Returns command-line arg(s) to linker for file listing dlsyms to export.
+Defaults to returning empty string, can be overridden by e.g. AIX.
+
+=cut
+
+sub xs_dlsyms_arg {
+    return '';
+}
+
 =head3 xs_dlsyms_ext
 
 Returns file-extension for C<xs_make_dlsyms> method's output file,
@@ -1318,8 +1329,10 @@ sub metafile_data {
     # needs to be based on the original version
     my $v1_add = _metaspec_version($meta_add) !~ /^2/;
 
+    my ($add_v, $merge_v) = map _metaspec_version($_), $meta_add, $meta_merge;
     for my $frag ($meta_add, $meta_merge) {
-        $frag = CPAN::Meta::Converter->new($frag, default_version => 
"1.4")->upgrade_fragment;
+        my $def_v = $frag == $meta_add ? $merge_v : $add_v;
+        $frag = CPAN::Meta::Converter->new($frag, default_version => 
$def_v)->upgrade_fragment;
     }
 
     # if we upgraded a 1.x _ADD fragment, we gave it a prereqs key that
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm
index 9ede797146..a2700b50a7 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm
+++ b/cpan/ExtUtils-MakeMaker/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 = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm
index e180a44530..ce2084449f 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm
+++ b/cpan/ExtUtils-MakeMaker/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 = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm
index a453278b2f..ee24ac338f 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm
@@ -2,7 +2,7 @@ package ExtUtils::MM_DOS;
 
 use strict;
 
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 require ExtUtils::MM_Any;
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm
index 03dfe27376..557a9f5487 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm
@@ -7,7 +7,7 @@ BEGIN {
     our @ISA = qw( ExtUtils::MM_Unix );
 }
 
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm
index 8207502f71..787a82e328 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm
@@ -2,7 +2,7 @@ package ExtUtils::MM_MacOS;
 
 use strict;
 
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 sub new {
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm
index 6ec9b7cb8f..f46ecb6f5e 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm
@@ -22,7 +22,7 @@ use strict;
 use ExtUtils::MakeMaker::Config;
 use File::Basename;
 
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 require ExtUtils::MM_Win32;
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm
index f23ec5a2a6..7b4f8fac54 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm
@@ -5,7 +5,7 @@ use strict;
 use ExtUtils::MakeMaker qw(neatvalue);
 use File::Spec;
 
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 require ExtUtils::MM_Any;
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm
index 6475983eb8..2c8d56b5c4 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm
@@ -1,7 +1,7 @@
 package ExtUtils::MM_QNX;
 
 use strict;
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 require ExtUtils::MM_Unix;
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm
index e7e65ef2ad..0a4f0bf53d 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm
@@ -1,7 +1,7 @@
 package ExtUtils::MM_UWIN;
 
 use strict;
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 require ExtUtils::MM_Unix;
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
index 66a24d7838..ce3dc1abd0 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
@@ -14,7 +14,7 @@ use ExtUtils::MakeMaker qw($Verbose neatvalue _sprintf562);
 
 # If we make $VERSION an our variable parse_version() breaks
 use vars qw($VERSION);
-$VERSION = '7.24';
+$VERSION = '7.28';
 $VERSION = eval $VERSION;  ## no critic [BuiltinFunctions::ProhibitStringyEval]
 
 require ExtUtils::MM_Any;
@@ -932,6 +932,7 @@ sub dynamic_lib {
     return '' unless $self->has_link_code;
     my @m = $self->xs_dynamic_lib_macros(\%attribs);
     my @libs;
+    my $dlsyms_ext = eval { $self->xs_dlsyms_ext };
     if ($self->{XSMULTI}) {
         my @exts = $self->_xs_list_basenames;
         for my $ext (@exts) {
@@ -952,10 +953,14 @@ sub dynamic_lib {
             my $ldfrom = $self->_xsbuild_value('xs', $ext, 'LDFROM');
             $ldfrom = $objfile unless defined $ldfrom;
             my $exportlist = "$ext.def";
-            push @libs, [ $objfile, $instfile, $instdir, $ldfrom, $exportlist 
];
+            my @libchunk = ($objfile, $instfile, $instdir, $ldfrom, 
$exportlist);
+            push @libchunk, $dlsyms_ext ? $ext.$dlsyms_ext : undef;
+            push @libs, \@libchunk;
         }
     } else {
-        @libs = ([ qw($(OBJECT) $(INST_DYNAMIC) $(INST_ARCHAUTODIR) $(LDFROM) 
$(EXPORT_LIST)) ]);
+        my @libchunk = qw($(OBJECT) $(INST_DYNAMIC) $(INST_ARCHAUTODIR) 
$(LDFROM) $(EXPORT_LIST));
+        push @libchunk, $dlsyms_ext ? '$(BASEEXT)'.$dlsyms_ext : undef;
+        @libs = (\@libchunk);
     }
     push @m, map { $self->xs_make_dynamic_lib(\%attribs, @$_); } @libs;
 
@@ -999,10 +1004,11 @@ Defines the recipes for the C<dynamic_lib> section.
 =cut
 
 sub xs_make_dynamic_lib {
-    my ($self, $attribs, $object, $to, $todir, $ldfrom, $exportlist) = @_;
+    my ($self, $attribs, $object, $to, $todir, $ldfrom, $exportlist, $dlsyms) 
= @_;
     $exportlist = '' if $exportlist ne '$(EXPORT_LIST)';
     my $armaybe = $self->_xs_armaybe($attribs);
-    my @m = sprintf '%s : %s $(MYEXTLIB) %s$(DFSEP).exists %s 
$(PERL_ARCHIVEDEP) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP)'."\n", $to, 
$object, $todir, $exportlist;
+    my @m = sprintf '%s : %s $(MYEXTLIB) %s$(DFSEP).exists %s 
$(PERL_ARCHIVEDEP) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP) %s'."\n", $to, 
$object, $todir, $exportlist, ($dlsyms || '');
+    my $dlsyms_arg = $self->xs_dlsyms_arg($dlsyms);
     if ($armaybe ne ':'){
         $ldfrom = 'tmp$(LIB_EXT)';
         push(@m,"      \$(ARMAYBE) cr $ldfrom $object\n");
@@ -1043,8 +1049,8 @@ sub xs_make_dynamic_lib {
         $ld_run_path_shell = 'LD_RUN_PATH="$(LD_RUN_PATH)" ';
     }
 
-    push @m, sprintf <<'MAKE', $ld_run_path_shell, $ldrun, $ldfrom, 
$self->xs_obj_opt('$@'), $libs, $exportlist;
-       %s$(LD) %s $(LDDLFLAGS) %s $(OTHERLDFLAGS) %s $(MYEXTLIB) \
+    push @m, sprintf <<'MAKE', $ld_run_path_shell, $ldrun, $dlsyms_arg, 
$ldfrom, $self->xs_obj_opt('$@'), $libs, $exportlist;
+       %s$(LD) %s $(LDDLFLAGS) %s %s $(OTHERLDFLAGS) %s $(MYEXTLIB) \
          $(PERL_ARCHIVE) %s $(PERL_ARCHIVE_AFTER) %s \
          $(INST_DYNAMIC_FIX)
        $(CHMOD) $(PERM_RWX) $@
@@ -2531,6 +2537,14 @@ $(MAKE_APERL_FILE) : static $(FIRST_MAKEFILE) pm_to_blib
        'auto', $self->{FULLEXT}, "$self->{BASEEXT}$self->{LIB_EXT}"
     );
     File::Find::find(sub {
+       if ($File::Find::name =~ m{/auto/share\z}) {
+           # in a subdir of auto/share, prune because e.g.
+           # Alien::pkgconfig uses File::ShareDir to put .a files
+           # there. do not want
+           $File::Find::prune = 1;
+           return;
+       }
+
        return unless m/\Q$self->{LIB_EXT}\E$/;
 
         # Skip perl's libraries.
@@ -2578,7 +2592,7 @@ $(MAKE_APERL_FILE) : static $(FIRST_MAKEFILE) pm_to_blib
        return if $File::Find::name =~ m:\Q$installed_version\E\z:;
        use Cwd 'cwd';
        $static{cwd() . "/" . $_}++;
-    }, grep( -d $_, @{$searchdirs || []}) );
+    }, grep( -d $_, map { $self->catdir($_, 'auto') } @{$searchdirs || []}) );
 
     # We trust that what has been handed in as argument, will be buildable
     $static = [] unless $static;
@@ -3259,7 +3273,7 @@ sub processPL {
 
             $m .= <<MAKE_FRAG;
 
-all :: $target
+pure_all :: $target
        \$(NOECHO) \$(NOOP)
 
 $target :: $plfile $pm_dep
@@ -3659,7 +3673,7 @@ test_ : test_$default_testtype
 EOF
 
     for my $linktype (qw(dynamic static)) {
-        my $directdeps = "$linktype pure_all";
+        my $directdeps = join ' ', grep !$self->{SKIPHASH}{$_}, $linktype, 
"pure_all"; # no depend on a linktype if SKIPped
         push @m, "subdirs-test_$linktype :: $directdeps\n";
         foreach my $dir (@{ $self->{DIR} }) {
             my $test = $self->cd($dir, "\$(MAKE) test_$linktype \$(PASTHRU)");
@@ -3869,7 +3883,7 @@ Obsolete, deprecated method. Not used since Version 5.21.
 sub writedoc {
 # --- perllocal.pod section ---
     my($self,$what,$name,@attribs)=@_;
-    my $time = localtime;
+    my $time = gmtime($ENV{SOURCE_DATE_EPOCH} || time);
     print "=head2 $time: $what C<$name>\n\n=over 4\n\n=item *\n\n";
     print join "\n\n=item *\n\n", map("C<$_>",@attribs);
     print "\n\n=back\n\n";
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm
index ed3ec8cab0..01c1807c57 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm
@@ -15,7 +15,7 @@ BEGIN {
 
 use File::Basename;
 
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 require ExtUtils::MM_Any;
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm
index c176118d4d..a280176f0b 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm
@@ -1,7 +1,7 @@
 package ExtUtils::MM_VOS;
 
 use strict;
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 require ExtUtils::MM_Unix;
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm
index 9844d837b7..2f65eb9edf 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm
@@ -27,7 +27,7 @@ use ExtUtils::MakeMaker qw(neatvalue _sprintf562);
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
 our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix );
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 $ENV{EMXSHELL} = 'sh'; # to run `commands`
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm
index 0d6f0e31bf..c9f5bed3ea 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm
@@ -2,7 +2,7 @@ package ExtUtils::MM_Win95;
 
 use strict;
 
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 require ExtUtils::MM_Win32;
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm
index 779c791297..af7faf6904 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm
@@ -3,7 +3,7 @@ package ExtUtils::MY;
 use strict;
 require ExtUtils::MM;
 
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 our @ISA = qw(ExtUtils::MM);
 
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
index d579256e86..1d81d5ec11 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
@@ -24,7 +24,7 @@ my %Recognized_Att_Keys;
 our %macro_fsentity; # whether a macro is a filesystem name
 our %macro_dep; # whether a macro is a dependency
 
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;  ## no critic [BuiltinFunctions::ProhibitStringyEval]
 
 # Emulate something resembling CVS $Revision$
@@ -34,7 +34,7 @@ $Revision = int $Revision * 10000;
 our $Filename = __FILE__;   # referenced outside MakeMaker
 
 our @ISA = qw(Exporter);
-our @EXPORT    = qw(&WriteMakefile $Verbose &prompt);
+our @EXPORT    = qw(&WriteMakefile $Verbose &prompt &os_unsupported);
 our @EXPORT_OK = qw($VERSION &neatvalue &mkbootstrap &mksymlists
                     &WriteEmptyMakefile &open_for_writing &write_file_via_tmp
                     &_sprintf562);
@@ -227,6 +227,10 @@ sub prompt ($;$) {  ## no critic
     return (!defined $ans || $ans eq '') ? $def : $ans;
 }
 
+sub os_unsupported {
+    die "OS unsupported\n";
+}
+
 sub eval_in_subdirs {
     my($self) = @_;
     use Cwd qw(cwd abs_path);
@@ -652,11 +656,6 @@ END
         }
     }
 
-    # This is for old Makefiles written pre 5.00, will go away
-    if ( Carp::longmess("") =~ /runsubdirpl/s ){
-        carp("WARNING: Please rerun 'perl Makefile.PL' to regenerate your 
Makefiles\n");
-    }
-
     my $newclass = ++$PACKNAME;
     local @Parent = @Parent;    # Protect against non-local exits
     {
@@ -3014,6 +3013,8 @@ you provide your own C<TESTS> attribute, defaults to 
false.
 
   {RECURSIVE_TEST_FILES=>1}
 
+This is supported since 6.76
+
 =item tool_autosplit
 
   {MAXLEN => 8}
@@ -3290,6 +3291,17 @@ prevents automated processes from blocking on user input.
 
 If no $default is provided an empty string will be used instead.
 
+=item os_unsupported
+
+  os_unsupported();
+  os_unsupported if $^O eq 'MSWin32';
+
+The C<os_unsupported()> function provides a way to correctly exit your
+C<Makefile.PL> before calling C<WriteMakefile>. It is essentially a
+C<die> with the message "OS unsupported".
+
+This is supported since 7.26
+
 =back
 
 =head2 Supported versions of Perl
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm
index bce9c66dee..5ef367cb33 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm
@@ -2,7 +2,7 @@ package ExtUtils::MakeMaker::Config;
 
 use strict;
 
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 use Config ();
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod
index 179c9d6f30..f4d9575a87 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod
@@ -1,6 +1,6 @@
 package ExtUtils::MakeMaker::FAQ;
 
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 1;
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm
index bec2cc15a4..9d45f5e8a3 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm
@@ -1,7 +1,7 @@
 package ExtUtils::MakeMaker::Locale;
 
 use strict;
-our $VERSION = "7.24";
+our $VERSION = "7.28";
 $VERSION = eval $VERSION;
 
 use base 'Exporter';
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod
index 76c08d1bed..74b933040e 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod
@@ -1,6 +1,6 @@
 package ExtUtils::MakeMaker::Tutorial;
 
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 
@@ -125,7 +125,7 @@ Simply add another entry in the test location string. For 
example, to test:
 
 You would use the following C<test> directive:
 
-    test => {TESTS => 't/*.t t/*/*/*.t}
+    test => {TESTS => 't/*.t t/*/*/*.t'}
 
 Note that in the above example, tests in the first subdirectory will not be
 run. To run all tests in the intermediary subdirectory preceeding the one
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm
index bcfaaa342c..3e7b2aedfc 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm
@@ -15,7 +15,7 @@ use strict;
 
 use vars qw(@ISA $VERSION $CLASS $STRICT $LAX *declare *qv);
 
-$VERSION = '7.24';
+$VERSION = '7.28';
 $VERSION = eval $VERSION;
 $CLASS = 'version';
 
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm
index 0255909561..3be9475b87 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm
@@ -10,7 +10,7 @@ use strict;
 
 use vars qw($VERSION $CLASS $STRICT $LAX);
 
-$VERSION = '7.24';
+$VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 #--------------------------------------------------------------------------#
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm
index 5eea8bc67e..d3344f3dae 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm
+++ b/cpan/ExtUtils-MakeMaker/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 = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 require Exporter;
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm
index 0cfb22ac28..6211063319 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm
@@ -10,7 +10,7 @@ use Config;
 
 our @ISA = qw(Exporter);
 our @EXPORT = qw(&Mksymlists);
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 sub Mksymlists {
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm
index 0e774664ff..d342bd2abe 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm
@@ -3,7 +3,7 @@ package ExtUtils::testlib;
 use strict;
 use warnings;
 
-our $VERSION = '7.24';
+our $VERSION = '7.28';
 $VERSION = eval $VERSION;
 
 use Cwd;
diff --git a/cpan/ExtUtils-MakeMaker/t/03-xsstatic.t 
b/cpan/ExtUtils-MakeMaker/t/03-xsstatic.t
index 1d748ebd4c..8e18ab31fb 100644
--- a/cpan/ExtUtils-MakeMaker/t/03-xsstatic.t
+++ b/cpan/ExtUtils-MakeMaker/t/03-xsstatic.t
@@ -11,9 +11,6 @@ use MakeMaker::Test::Utils;
 use MakeMaker::Test::Setup::XS;
 use Test::More;
 
-plan skip_all => "Disabled as broken perl installs give false negative"
-  # if not static perl, and not author
-  unless !$Config{usedl} or $ENV{AUTHOR_TESTING};
 plan skip_all => "ExtUtils::CBuilder not installed or couldn't find a compiler"
   unless have_compiler();
 plan skip_all => 'Shared perl library' if $Config{useshrplib} eq 'true';
diff --git a/cpan/ExtUtils-MakeMaker/t/basic.t 
b/cpan/ExtUtils-MakeMaker/t/basic.t
index c98e28c653..41ecd99b15 100644
--- a/cpan/ExtUtils-MakeMaker/t/basic.t
+++ b/cpan/ExtUtils-MakeMaker/t/basic.t
@@ -24,7 +24,7 @@ use ExtUtils::MM;
 use Test::More
     !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
     ? (skip_all => "cross-compiling and make not available")
-    : (tests => 186);
+    : (tests => 188);
 use File::Find;
 use File::Spec;
 use File::Path;
@@ -438,8 +438,11 @@ note "META file validity"; SKIP: {
 }
 
 
-
 # Make sure init_dirscan doesn't go into the distdir
+# also with a "messup.PL" that will make a build fail
+open $fh, '>', 'messup.PL' or die "messup.PL: $!";
+print $fh 'die';
+close $fh;
 @mpl_out = run(qq{$perl Makefile.PL "PREFIX=$DUMMYINST"});
 
 cmp_ok( $?, '==', 0, 'Makefile.PL exited with zero' ) || diag(@mpl_out);
@@ -448,6 +451,14 @@ ok( grep(/^Writing $makefile for Big::Dummy/, @mpl_out) == 
1,
                                 'init_dirscan skipped distdir') ||
   diag(@mpl_out);
 
+# "make test" straight after "perl Makefile.PL" is expected to work same as
+#   "make all test" so check that with "messup.PL" that will make the
+#   build step fail
+$test_out = run("$make test");
+unlike( $test_out, qr/All tests successful/, 'make test caused build' );
+isnt( $?, 0,                                 '  build should fail' ) ||
+    diag $test_out;
+
 # I know we'll get ignored errors from make here, that's ok.
 # Send STDERR off to oblivion.
 open(SAVERR, ">&STDERR") or die $!;
@@ -455,6 +466,7 @@ open(STDERR, ">",File::Spec->devnull) or die $!;
 
 my $realclean_out = run("$make realclean");
 is( $?, 0, 'realclean' ) || diag($realclean_out);
+1 while unlink 'messup.PL'; # also zap deliberate build-breaker
 
 open(STDERR, ">&SAVERR") or die $!;
 close SAVERR;
diff --git a/cpan/ExtUtils-MakeMaker/t/eu_command.t 
b/cpan/ExtUtils-MakeMaker/t/eu_command.t
index 269aa5c9a4..32a6f59dca 100644
--- a/cpan/ExtUtils-MakeMaker/t/eu_command.t
+++ b/cpan/ExtUtils-MakeMaker/t/eu_command.t
@@ -151,20 +151,21 @@ BEGIN {
         is( ((stat('testdir'))[2] & 07777) & 0700,
             0100, 'change a dir to execute-only' );
 
-        # change a dir to read-only
-        @ARGV = ( '0400', 'testdir' );
+        # change a dir to write-only
+        @ARGV = ( '0200', 'testdir' );
         ExtUtils::Command::chmod();
 
         is( ((stat('testdir'))[2] & 07777) & 0700,
-            0400, 'change a dir to read-only' );
+            0200, 'change a dir to write-only' );
 
-        # change a dir to write-only
-        @ARGV = ( '0200', 'testdir' );
+        # change a dir to read-only
+        @ARGV = ( '0400', 'testdir' );
         ExtUtils::Command::chmod();
 
         is( ((stat('testdir'))[2] & 07777) & 0700,
-            0200, 'change a dir to write-only' );
+            0400, 'change a dir to read-only' );
 
+        # remove the dir we've been playing with
         @ARGV = ('testdir');
         rm_rf;
         ok( ! -e 'testdir', 'rm_rf can delete a read-only dir' );
diff --git a/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm 
b/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm
index f557875c04..89628a5b53 100644
--- a/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm
+++ b/cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm
@@ -19,7 +19,8 @@ use ExtUtils::MM;
 my $tempdir = tempdir(DIR => getcwd, CLEANUP => 1);
 chdir $tempdir;
 my $typemap = 'type map';
-$typemap =~ s/ //g unless MM->new({NAME=>'name', NORECURS=>1})->can_dep_space;
+my $MM = MM->new({NAME=>'name', NORECURS=>1});
+$typemap =~ s/ //g unless $MM->can_dep_space;
 chdir File::Spec->updir;
 
 my $PM_TEST = <<'END';
@@ -148,6 +149,7 @@ $label2files{static} = +{
     $MAKEFILEPL, 'Test', 'lib/XS/Test.pm', qq{'$typemap'},
     q{LINKTYPE => 'static'},
   ),
+  "blib/arch/auto/share/dist/x-y/libwhatevs$MM->{LIB_EXT}" => 'hi there', # 
mimic what File::ShareDir can do
 };
 
 $label2files{subdirs} = +{
@@ -211,6 +213,69 @@ $label2files{subdirsstatic} = +{
   ),
 };
 
+# to mimic behaviour of CGI-Deurl-XS version 0.08
+$label2files{subdirsskip} = +{
+  %{ $label2files{subdirscomplex} }, # make copy
+  'Makefile.PL' => sprintf(
+    $MAKEFILEPL,
+    'Test', 'Test.pm', qq{},
+    <<'EOF',
+MYEXTLIB => 'Other$(DIRFILESEP)libparser$(LIB_EXT)',
+EOF
+  ) . <<'EOF',
+sub MY::postamble {
+    my ($self) = @_;
+    return '$(MYEXTLIB) : 
Other$(DIRFILESEP)Makefile'."\n\t".$self->cd('Other', '$(MAKE) 
$(PASSTHRU)')."\n";
+}
+EOF
+  'Other/Makefile.PL' => sprintf(
+    $MAKEFILEPL,
+    'Other', 'Other.pm', qq{},
+    <<'EOF',
+SKIP   => [qw(all static dynamic )],
+clean  => {'FILES' => 'libparser$(LIB_EXT)'},
+EOF
+  ) . <<'EOF',
+sub MY::top_targets {
+  my ($self) = @_;
+  my $static_lib_pure_cmd = $self->static_lib_pure_cmd('$(O_FILES)');
+  <<'SNIP' . $static_lib_pure_cmd;
+all :: static
+
+pure_all :: static
+
+static :: libparser$(LIB_EXT)
+
+libparser$(LIB_EXT): $(O_FILES)
+SNIP
+}
+EOF
+  't/plus1.t' => <<'END',
+#!/usr/bin/perl -w
+use Test::More tests => 2;
+use_ok "XS::Test";
+is XS::Test::plus1(3), 4;
+END
+  'Test.xs' => <<EOF,
+#ifdef __cplusplus
+extern "C" {
+#endif
+int plus1(int);
+#ifdef __cplusplus
+}
+#endif
+$XS_TEST
+int
+plus1(input)
+       int     input
+   CODE:
+       RETVAL = plus1(input);
+   OUTPUT:
+       RETVAL
+EOF
+};
+virtual_rename('subdirsskip', 'Other/lib/file.c', 'Other/file.c');
+
 my $XS_MULTI = $XS_OTHER;
 # check compiling from top dir still can include local
 $XS_MULTI =~ s:(#include "XSUB.h"):$1\n#include "header.h":;
@@ -326,7 +391,7 @@ sub list_dynamic {
     $^O ne 'MSWin32' ? (
         [ 'bscode', '', '' ],
         [ 'bscodemulti', '', '' ],
-        $^O ne 'VMS' ? ([ 'subdirscomplex', '', '' ]) : (),
+        $^O !~ m!^(VMS|aix)$! ? ([ 'subdirscomplex', '', '' ]) : (),
     ) : (), # DynaLoader different
     [ 'subdirs', '', '' ],
     [ 'subdirsstatic', ' LINKTYPE=dynamic', ' LINKTYPE=dynamic' ],
@@ -335,6 +400,7 @@ sub list_dynamic {
     [ 'staticmulti', ' LINKTYPE=dynamic', ' LINKTYPE=dynamic' ],
     [ 'staticmulti', ' dynamic', '_dynamic' ],
     [ 'xsbuild', '', '' ],
+    [ 'subdirsskip', '', '' ],
   );
 }
 
@@ -391,7 +457,11 @@ sub run_tests {
   }
 
   chdir File::Spec->updir or die;
-  ok rmtree($dir), "teardown $dir";
+  if ($ENV{EUMM_KEEP_TESTDIRS}) {
+    ok 1, "don't teardown $dir";
+  } else {
+    ok rmtree($dir), "teardown $dir";
+  }
 }
 
 1;
diff --git a/cpan/ExtUtils-MakeMaker/t/metafile_data.t 
b/cpan/ExtUtils-MakeMaker/t/metafile_data.t
index 01d72d81d0..bb3670aa77 100644
--- a/cpan/ExtUtils-MakeMaker/t/metafile_data.t
+++ b/cpan/ExtUtils-MakeMaker/t/metafile_data.t
@@ -17,7 +17,7 @@ use File::Temp;
 use Cwd;
 use MakeMaker::Test::Utils;
 
-plan tests => 31;
+plan tests => 35;
 require ExtUtils::MM_Any;
 
 sub mymeta_ok {
@@ -262,6 +262,110 @@ my @GENERIC_OUT = (
     },'TEST_REQUIRES meta-spec 2.0';
 }
 
+{
+    my $mm = $new_mm->(
+        @GENERIC_IN,
+    );
+    is_deeply $mm->metafile_data(
+        {
+            resources => {
+                homepage => "https://metacpan.org/release/ExtUtils-MakeMaker";,
+                repository => 
"http://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker";,
+            },
+        },
+        { @METASPEC14 },
+    ), {
+        prereqs => { @REQ20 },
+        resources => {
+            homepage => "https://metacpan.org/release/ExtUtils-MakeMaker";,
+            repository => {
+                url => 
"http://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker";,
+            },
+        },
+        @GENERIC_OUT,
+    }, 'META_ADD takes meta version 1.4 from META_MERGE';
+}
+
+{
+    my $mm = $new_mm->(
+        @GENERIC_IN,
+    );
+    is_deeply $mm->metafile_data(
+        { @METASPEC14 },
+        {
+            resources => {
+                homepage => "https://metacpan.org/release/ExtUtils-MakeMaker";,
+                repository => 
"http://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker";,
+            },
+        },
+    ), {
+        prereqs => { @REQ20 },
+        resources => {
+            homepage => "https://metacpan.org/release/ExtUtils-MakeMaker";,
+            repository => {
+                url => 
"http://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker";,
+            },
+        },
+        @GENERIC_OUT,
+    }, 'META_MERGE takes meta version 1.4 from META_ADD';
+}
+
+{
+    my $mm = $new_mm->(
+        @GENERIC_IN,
+    );
+    is_deeply $mm->metafile_data(
+        {
+            'configure_requires' => {
+                'Fake::Module1' => 1,
+            },
+            'prereqs' => {
+                @REQ20,
+                'test' => {
+                    'requires' => {
+                        'Fake::Module2' => 2,
+                    },
+                },
+            },
+        },
+        { @METASPEC20 },
+    ), {
+        prereqs => {
+            @REQ20,
+            test => { requires => { "Fake::Module2" => 2, }, },
+        },
+        @GENERIC_OUT,
+    }, 'META_ADD takes meta version 2 from META_MERGE';
+}
+
+{
+    my $mm = $new_mm->(
+        @GENERIC_IN,
+    );
+    is_deeply $mm->metafile_data(
+        { @METASPEC20 },
+        {
+            'configure_requires' => {
+                'Fake::Module1' => 1,
+            },
+            'prereqs' => {
+                @REQ20,
+                'test' => {
+                    'requires' => {
+                        'Fake::Module2' => 2,
+                    },
+                },
+            },
+        },
+    ), {
+        prereqs => {
+            @REQ20,
+            test => { requires => { "Fake::Module2" => 2, }, },
+        },
+        @GENERIC_OUT,
+    }, 'META_MERGE takes meta version 2 from META_ADD';
+}
+
 # Test _REQUIRES key priority over META_ADD
 {
     my $mm = $new_mm->(
diff --git a/cpan/ExtUtils-MakeMaker/t/os_unsupported.t 
b/cpan/ExtUtils-MakeMaker/t/os_unsupported.t
new file mode 100644
index 0000000000..42396c0547
--- /dev/null
+++ b/cpan/ExtUtils-MakeMaker/t/os_unsupported.t
@@ -0,0 +1,15 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+    unshift @INC, 't/lib';
+}
+
+use strict;
+use Test::More tests => 1;
+use ExtUtils::MakeMaker;
+
+eval q{
+    os_unsupported();
+};
+
+like( $@, qr/^OS unsupported$/, 'OS Unsupported' );

--
Perl5 Master Repository

Reply via email to