diff options
author | Chris 'BinGOs' Williams <chris@bingosnet.co.uk> | 2021-12-18 12:44:39 +0000 |
---|---|---|
committer | Chris 'BinGOs' Williams <chris@bingosnet.co.uk> | 2021-12-18 12:44:39 +0000 |
commit | d58d6b4be384ab0942be3856651b846220f90980 (patch) | |
tree | 56dbb2766eb64b28b6fae4893da1e1dbcf52901f | |
parent | a3aaec921c9b50eb220092214145c88a5ccc7980 (diff) | |
download | perl-d58d6b4be384ab0942be3856651b846220f90980.tar.gz |
Update ExtUtils-MakeMaker to CPAN version 7.64
[DELTA]
7.64 Fri 17 Dec 15:35:46 GMT 2021
No changes since v7.63_11
7.63_11 Tue 14 Dec 16:00:11 GMT 2021
OS390 fixes:
- Extend prereqs sort to work on EBCDIC
7.63_10 Mon 13 Dec 16:26:49 GMT 2021
OS390 fixes:
- Fix dynamic loading
7.63_09 Wed 8 Dec 22:20:53 GMT 2021
Enhancements:
- Don't use canned libpth values
7.63_08 Sat 27 Nov 17:28:03 GMT 2021
Correction:
- Previous change to ${LDFLAGS) was reverted
7.63_07 Sat 27 Nov 11:34:12 GMT 2021
Enhancements:
- Add $(LDFLAGS) when linking binary modules
7.63_06 Wed 3 Nov 01:24:05 GMT 2021
Bug fixes:
- Add -rpath when compiling XS modules on macOS
7.63_05 Sat 14 Aug 09:04:08 BST 2021
Enhancements:
- Added CPPRUN variable
7.63_04 Wed 30 Jun 15:15:01 BST 2021
Doc fixes:
- Describe CCFLAGS’ default
7.63_03 Tue 22 Jun 14:39:32 BST 2021
OS390 Enhancements:
- Fix override xs_make_dynamic_lib() for os390
7.63_02 Thu 3 Jun 19:52:03 BST 2021
Doc fixes:
- Changed wording for POLLUTE
7.63_01 Tue 25 May 16:22:50 BST 2021
Bug fixes:
- Comparing inodes numerically is unsafe
37 files changed, 345 insertions, 53 deletions
@@ -818,6 +818,7 @@ cpan/ExtUtils-MakeMaker/t/00compile.t See if MakeMaker modules compile cpan/ExtUtils-MakeMaker/t/01perl_bugs.t cpan/ExtUtils-MakeMaker/t/02-xsdynamic.t cpan/ExtUtils-MakeMaker/t/03-xsstatic.t +cpan/ExtUtils-MakeMaker/t/04-xs-rpath-darwin.t cpan/ExtUtils-MakeMaker/t/arch_check.t Test MakeMaker's arch_check() cpan/ExtUtils-MakeMaker/t/backwards.t Check MakeMaker's backwards compatibility cpan/ExtUtils-MakeMaker/t/basic.t See if MakeMaker can build a module diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl index 27af38c15d..fd9b63793a 100755 --- a/Porting/Maintainers.pl +++ b/Porting/Maintainers.pl @@ -467,7 +467,7 @@ use File::Glob qw(:case); }, 'ExtUtils::MakeMaker' => { - 'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.62.tar.gz', + 'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.64.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 e36453608e..34b1dc15a5 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm @@ -8,7 +8,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.62'; +$VERSION = '7.64'; $VERSION =~ tr/_//d; 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 62fd8682d3..348b67586e 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.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; my $Is_VMS = $^O eq 'VMS'; diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm index 16c13d91cf..cf68149da7 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm @@ -3,7 +3,7 @@ package ExtUtils::Liblist; use strict; use warnings; -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; use File::Spec; diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm index 3a715fb082..01a4a48602 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.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; use ExtUtils::MakeMaker::Config; @@ -58,6 +58,10 @@ sub _unix_os2_ext { my ( $fullname, @fullname ); my ( $pwd ) = cwd(); # from Cwd.pm my ( $found ) = 0; + if ($Config{gccversion}) { + chomp(my @incpath = grep s/^ //, grep { /^#include </ .. /^End of search / } `$Config{cc} -E -v - </dev/null 2>&1 >/dev/null`); + unshift @libpath, map { s{/include[^/]*}{/lib}; $_ } @incpath + } if ( $^O eq 'darwin' or $^O eq 'next' ) { # 'escape' Mach-O ld -framework and -F flags, so they aren't dropped later on diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm index b7765f05b2..a9d8d26899 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm @@ -4,7 +4,7 @@ use strict; use warnings; use ExtUtils::MakeMaker::Config; -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; require ExtUtils::Liblist; diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm index 562ee34520..b25adf58b2 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm @@ -2,7 +2,7 @@ package ExtUtils::MM_AIX; use strict; use warnings; -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; use ExtUtils::MakeMaker::Config; diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm index 69a94920ee..826a4a556f 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm @@ -2,7 +2,7 @@ package ExtUtils::MM_Any; use strict; use warnings; -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; use Carp; diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm index 2c12ad1be7..d00dea576a 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm @@ -27,7 +27,7 @@ require ExtUtils::MM_Any; require ExtUtils::MM_Unix; our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix ); -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm index 190db104bd..91d2094196 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm @@ -10,7 +10,7 @@ require ExtUtils::MM_Unix; require ExtUtils::MM_Win32; our @ISA = qw( ExtUtils::MM_Unix ); -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm index 5a9eb22707..4e1b86a8ed 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm @@ -3,7 +3,7 @@ package ExtUtils::MM_DOS; use strict; use warnings; -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; 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 5db448b9be..4e971c36a9 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm @@ -8,7 +8,7 @@ BEGIN { our @ISA = qw( ExtUtils::MM_Unix ); } -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm index 60c149157e..f914555bb0 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm @@ -3,7 +3,7 @@ package ExtUtils::MM_MacOS; use strict; use warnings; -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; sub new { diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm index c345fcb4d9..052083d29b 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm @@ -23,7 +23,7 @@ use warnings; use ExtUtils::MakeMaker::Config; use File::Basename; -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; 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 788eb6ec01..95583e264b 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm @@ -6,7 +6,7 @@ use warnings; use ExtUtils::MakeMaker qw(neatvalue); use File::Spec; -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; require ExtUtils::MM_Any; diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS390.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS390.pm index 172d27c85f..444b89a0e8 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS390.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS390.pm @@ -2,7 +2,7 @@ package ExtUtils::MM_OS390; use strict; use warnings; -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; use ExtUtils::MakeMaker::Config; @@ -61,8 +61,8 @@ sub xs_make_dynamic_lib { $ld_run_path_shell = 'LD_RUN_PATH="$(LD_RUN_PATH)" '; } - push @m, sprintf <<'MAKE', $ld_run_path_shell, $dlsyms_arg, $self->xs_obj_opt('$@'), $ldfrom, $libs, $exportlist; - %s$(LD) $(LDDLFLAGS) %s $(OTHERLDFLAGS) %s $(MYEXTLIB) %s \ + push @m, sprintf <<'MAKE', $ld_run_path_shell, $self->xs_obj_opt('$@'), $dlsyms_arg, $ldfrom, $libs, $exportlist; + %s$(LD) %s $(LDDLFLAGS) %s $(OTHERLDFLAGS) %s $(MYEXTLIB) \ $(PERL_ARCHIVE) %s $(PERL_ARCHIVE_AFTER) %s \ $(INST_DYNAMIC_FIX) $(CHMOD) $(PERM_RWX) $@ diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm index 475711278c..071a2d5aca 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm @@ -2,7 +2,7 @@ package ExtUtils::MM_QNX; use strict; use warnings; -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; 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 4eabbcabd4..7bb41d0f37 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm @@ -2,7 +2,7 @@ package ExtUtils::MM_UWIN; use strict; use warnings; -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; 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 977b50ed02..504e751630 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm @@ -15,7 +15,7 @@ use ExtUtils::MakeMaker qw($Verbose neatvalue _sprintf562); # If we make $VERSION an our variable parse_version() breaks use vars qw($VERSION); -$VERSION = '7.62'; +$VERSION = '7.64'; $VERSION =~ tr/_//d; require ExtUtils::MM_Any; @@ -141,9 +141,9 @@ sub c_o { $flags =~ s/"-I(\$\(PERL_INC\))"/-iwithsysroot "$1"/; } - if (my $cpp = $Config{cpprun}) { + if (my $cpp = $self->{CPPRUN}) { my $cpp_cmd = $self->const_cccmd; - $cpp_cmd =~ s/^CCCMD\s*=\s*\$\(CC\)/$cpp/; + $cpp_cmd =~ s/^CCCMD\s*=\s*\$\(CC\)/\$(CPPRUN)/; push @m, qq{ .c.i: $cpp_cmd $flags \$*.c > \$*.i @@ -1048,9 +1048,19 @@ sub xs_make_dynamic_lib { } $ldfrom = "-all $ldfrom -none" if $Is{OSF}; + my $ldrun = ''; # The IRIX linker doesn't use LD_RUN_PATH - my $ldrun = $Is{IRIX} && $self->{LD_RUN_PATH} ? - qq{-rpath "$self->{LD_RUN_PATH}"} : ''; + if ( $self->{LD_RUN_PATH} ) { + if ( $Is{IRIX} ) { + $ldrun = qq{-rpath "$self->{LD_RUN_PATH}"}; + } + elsif ( $^O eq 'darwin' ) { + # both clang and gcc support -Wl,-rpath, but only clang supports + # -rpath so by using -Wl,-rpath we avoid having to check for the + # type of compiler + $ldrun = qq{-Wl,-rpath,"$self->{LD_RUN_PATH}"}; + } + } # For example in AIX the shared objects/libraries from previous builds # linger quite a while in the shared dynalinker cache even when nobody @@ -1315,7 +1325,7 @@ sub _fixin_replace_shebang { if ($self->maybe_command($origcmd) && grep { $_ eq $origdir } @absdirs) { my ($odev, $oino) = stat $origcmd; my ($idev, $iino) = stat $interpreter; - if ($odev == $idev && $oino == $iino) { + if ($odev == $idev && $oino eq $iino) { warn "$origcmd is the same as $interpreter, leaving alone" if $Verbose; $interpreter = $origcmd; diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm index 414ee4b20c..8564bc7362 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm @@ -16,7 +16,7 @@ BEGIN { use File::Basename; -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; 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 72f472cca2..341750e365 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm @@ -2,7 +2,7 @@ package ExtUtils::MM_VOS; use strict; use warnings; -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; 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 ab2e0b9b68..f6a1bc9763 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.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; $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 e415beb2ae..f7bc5f7506 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm @@ -3,7 +3,7 @@ package ExtUtils::MM_Win95; use strict; use warnings; -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; require ExtUtils::MM_Win32; diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm index 6640c33157..5c4cf770d2 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.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; our @ISA = qw(ExtUtils::MM); diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm index b9b38368e0..8ee3ca8e2c 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm @@ -25,7 +25,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.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; # Emulate something resembling CVS $Revision$ @@ -393,7 +393,7 @@ sub full_setup { # we will use all these variables in the Makefile @Get_from_Config = qw( - ar cc cccdlflags ccdlflags dlext dlsrc exe_ext full_ar ld + ar cc cccdlflags ccdlflags cpprun dlext dlsrc exe_ext full_ar ld lddlflags ldflags libc lib_ext obj_ext osname osvers ranlib sitelibexp sitearchexp so ); @@ -634,7 +634,7 @@ END if (%unsatisfied && $self->{PREREQ_FATAL}){ my $failedprereqs = join "\n", map {" $_ $unsatisfied{$_}"} - sort { $a cmp $b } keys %unsatisfied; + sort { lc $a cmp lc $b } keys %unsatisfied; die <<"END"; MakeMaker FATAL: prerequisites not found. $failedprereqs @@ -720,7 +720,7 @@ END # RT#91540 PREREQ_FATAL not recognized on command line if (%unsatisfied && $self->{PREREQ_FATAL}){ my $failedprereqs = join "\n", map {" $_ $unsatisfied{$_}"} - sort { $a cmp $b } keys %unsatisfied; + sort { lc $a cmp lc $b } keys %unsatisfied; die <<"END"; MakeMaker FATAL: prerequisites not found. $failedprereqs @@ -1836,7 +1836,11 @@ currently used by MakeMaker but may be handy in Makefile.PLs. =item CCFLAGS String that will be included in the compiler call command line between -the arguments INC and OPTIMIZE. +the arguments INC and OPTIMIZE. Note that setting this will overwrite its +default value (C<$Config::Config{ccflags}>); to preserve that, include +the default value directly, e.g.: + + CCFLAGS => "$Config::Config{ccflags} ..." =item CONFIG @@ -1846,6 +1850,7 @@ ar cc cccdlflags ccdlflags +cpprun dlext dlsrc ld @@ -2671,10 +2676,9 @@ instead. See above, or the L<ExtUtils::MakeMaker::FAQ> entry. =item POLLUTE -Release 5.005 grandfathered old global symbol names by providing preprocessor -macros for extension source compatibility. As of release 5.6, these -preprocessor definitions are not available by default. The POLLUTE flag -specifies that the old names should still be defined: +Prior to 5.6 various interpreter variables were available without a C<PL_> +prefix, eg. C<PL_undef> was available as C<undef>. As of release 5.6, these +are only defined if the POLLUTE flag is enabled: perl Makefile.PL POLLUTE=1 diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm index 323b1575f7..7b2498b6e8 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm @@ -3,7 +3,7 @@ package ExtUtils::MakeMaker::Config; use strict; use warnings; -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; use Config (); diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod index 4b0b237500..1184841ecb 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.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; 1; diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm index a842bb40d6..e4625e3330 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm @@ -2,7 +2,7 @@ package ExtUtils::MakeMaker::Locale; use strict; use warnings; -our $VERSION = "7.62"; +our $VERSION = "7.64"; $VERSION =~ tr/_//d; use base 'Exporter'; diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod index eafccc9d10..e4768745ac 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.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm index 0208a1f932..726ac76be1 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm @@ -16,7 +16,7 @@ use warnings; use vars qw(@ISA $VERSION $CLASS $STRICT $LAX *declare *qv); -$VERSION = '7.62'; +$VERSION = '7.64'; $VERSION =~ tr/_//d; $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 147cb88ff9..2f02cc93b6 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm @@ -11,7 +11,7 @@ use warnings; use vars qw($VERSION $CLASS $STRICT $LAX); -$VERSION = '7.62'; +$VERSION = '7.64'; $VERSION =~ tr/_//d; #--------------------------------------------------------------------------# diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm index 1f14ee9e76..51b1add163 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm @@ -3,7 +3,7 @@ package ExtUtils::Mkbootstrap; use strict; use warnings; -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; require Exporter; diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm index 2a7c455e8e..4498c39bf4 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm @@ -11,7 +11,7 @@ use Config; our @ISA = qw(Exporter); our @EXPORT = qw(&Mksymlists); -our $VERSION = '7.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; sub Mksymlists { diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm index 5826a12736..de24aa3fd0 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.62'; +our $VERSION = '7.64'; $VERSION =~ tr/_//d; use Cwd; diff --git a/cpan/ExtUtils-MakeMaker/t/04-xs-rpath-darwin.t b/cpan/ExtUtils-MakeMaker/t/04-xs-rpath-darwin.t new file mode 100644 index 0000000000..1848883875 --- /dev/null +++ b/cpan/ExtUtils-MakeMaker/t/04-xs-rpath-darwin.t @@ -0,0 +1,269 @@ +#!/usr/bin/perl -w + +# This test file tests a special case for the generation of XS modules on OS darwin. +# More specifically, it tests if we are able to compile an XS module which refers +# to another shared library in a non-standard location such that we can +# load the XS module from a perl script without having to set the +# DYLD_LIBRARY_PATH environment variable. See PR #403 and issue #402. +# +package Main; +use strict; +use warnings; +use Config; +BEGIN { + chdir 't' or die "chdir(t): $!\n"; + unshift @INC, 'lib/'; + use Test::More; + if( $^O ne "darwin" ) { + plan skip_all => 'Not darwin platform'; + } + else { + plan skip_all => 'Dynaloading not enabled' + if !$Config{usedl} or $Config{usedl} ne 'define'; + plan tests => 1; + } +} +use Cwd; +use ExtUtils::MakeMaker; +use File::Temp qw[tempdir]; +use File::Path; # exports: mkpath and rmtree +use File::Spec; + +{ + $| = 1; + # We need this when re-running "perl Makefile.PL" + my $ext_utils_lib_dir = File::Spec->rel2abs('../lib'); + # This tmpdir will be removed when the program exits + my $tmpdir = tempdir( DIR => '.', CLEANUP => 1 ); + my $cwd = getcwd; + # File::Temp will not clean up the temp directory if the current directory + # is a sub directory of the temp dir. This can happen in the case of an + # error (a call to die). which disrupts the normal program flow that would + # have restored the cwd before exit. To solve this issue + # we add the below END block (which will be called before the File::Temp + # cleanup END block call since END blocks are called in LIFO order) + END { chdir $cwd } + _chdir($tmpdir); + my $self = Main->new( + mylib_dir => "mylib", + mylib_c_fn => "mylib.c", + mylib_h_fn => "mylib.h", + mylib_lib_name => "mylib", + module_name => "My::Module", + test_script_name => 'p.pl', + ext_utils_lib_dir => $ext_utils_lib_dir, + ); + $self->compile_library(); + $self->write_makefile_pl(); + $self->write_module_file(); + $self->write_xs_file(); + $self->run_make(); + $self->write_test_script(); + $self->run_test_script(); + _chdir($cwd); +} + +sub _chdir { chdir $_[0] or die "Cannot change directory to $_[0] : $!" } + +sub _mkpath { mkpath($_[0]) or die "Could not create directory $_[0] : $!" }; + +sub run_test_script { + my ($self) = @_; + + my @cmd = ($^X, '-Mblib', $self->{test_script_name}); + my $out = _capture_stdout(\@cmd); + like( $out, qr{\Qcalling foo()\E\s+\QHello from foo()\E}); +} + +sub write_xs_file { + my ($self) = @_; + + my $str = <<'END'; +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" +#include "mylib.h" + +MODULE = <<module_name_colon>> PACKAGE = <<module_name_colon>> +PROTOTYPES: DISABLE + +void +mylib_func() + CODE: + printf("calling foo()\n"); + foo(); +END + $str =~ s/\Q<<module_name_colon>>\E/$self->{module_name}/g; + my @module_name = split /::/, $self->{module_name}; + my $xs_name = pop @module_name; + $xs_name .= '.xs'; + _write_file( $xs_name, $str ); +} + +sub write_test_script { + my ($self) = @_; + + my $str = <<'END'; +use strict; +use warnings; +use ExtUtils::testlib; +use <<module_name_colon>>; + +<<module_name_colon>>::mylib_func(); +END + $str =~ s/\Q<<module_name_colon>>\E/$self->{module_name}/g; + _write_file( $self->{test_script_name}, $str ); +} + +sub run_make { + my ($self) = @_; + + my @cmd = ($^X, '-I'. $self->{ext_utils_lib_dir}, 'Makefile.PL'); + _run_system_cmd(\@cmd); + _run_system_cmd(['make']); +} + +sub write_module_file { + my ( $self ) = @_; + + my @dirs = split /::/, $self->{module_name}; + my $basename = pop @dirs; + my $dir = File::Spec->catfile('lib', @dirs); + _mkpath( $dir ); + my $fn = File::Spec->catfile($dir, $basename . '.pm'); + my $str = <<'END'; +package <<module_name_colon>>; +require Exporter; +require DynaLoader; +$VERSION = 1.01; +@ISA = qw(Exporter DynaLoader); +@EXPORT = qw(); +bootstrap <<module_name_colon>> $VERSION; +1; + +=head1 NAME + +<<module_name_colon>> - Short description of <<module_name_colon>> +END + $str =~ s/\Q<<module_name_colon>>\E/$self->{module_name}/g; + _write_file( $fn, $str ); +} + +sub write_makefile_pl { + my ( $self ) = @_; + + my $str = <<'END'; +use strict; +use warnings; +use ExtUtils::MakeMaker; + +WriteMakefile( + NAME => '<<module_name_colon>>', + VERSION_FROM => 'lib/<<module_name_slash>>.pm', + ABSTRACT_FROM => 'lib/<<module_name_slash>>.pm', + PERL => "$^X -w", + LIBS => ['-L./<<lib_dir>> -l<<lib_name>>'], + INC => '-I. -I./<<lib_dir>>', +); +END + my $mod_name1 = $self->{module_name}; + my $mod_name2 = $self->{module_name}; + $mod_name2 =~ s{::}{/}g; + $str =~ s/\Q<<module_name_colon>>\E/$mod_name1/g; + $str =~ s/\Q<<module_name_slash>>\E/$mod_name2/g; + $str =~ s/\Q<<lib_dir>>\E/$self->{mylib_dir}/g; + $str =~ s/\Q<<lib_name>>\E/$self->{mylib_lib_name}/g; + _write_file('Makefile.PL', $str); +} + +sub compile_library { + my ($self) = @_; + + _mkpath( $self->{mylib_dir} ); + my $cwd = getcwd; + _chdir( $self->{mylib_dir} ); + $self->write_mylib_h(); + $self->write_mylib_c(); + $self->compile_mylib(); + _chdir( $cwd ); +} + +sub compile_mylib { + my ($self) = @_; + + my $cc = $Config{cc}; + my $libext = $Config{so}; + + my $libname = 'lib' . $self->{mylib_lib_name} . '.' . $libext; + my @cmd = ($cc, '-I.', '-dynamiclib', '-install_name', + '@rpath/' . $libname, + 'mylib.c', '-o', $libname); + _run_system_cmd(\@cmd); +} + +sub _capture_stdout { + my ($cmd) = @_; + + my $out = `@$cmd`; + _check_sys_cmd_error( $cmd, $? ) if $? != 0; + return $out; +} + +sub _stringify_cmd { '"' . (join " ", @{$_[0]}) . '"' } + +sub _check_sys_cmd_error { + my ( $cmd, $error ) = @_; + my $cmd_str = _stringify_cmd($cmd); + if ( $error == -1 ) { + # A return value of -1 from system() indicates a failure to start the program + die "Could not run $cmd_str: $!"; + } + elsif ($error & 127) { + die sprintf "Command $cmd_str : killed by signal %d, %s coredump\n", + ($error & 127), ($error & 128) ? 'with' : 'without'; + } + elsif ($error != 0) { + die sprintf "$cmd_str exited with error code %d\n", $error >> 8; + } +} + +sub _run_system_cmd { + my ($cmd) = @_; + + my $res = system @$cmd; + _check_sys_cmd_error( $cmd, $res ) if $res != 0; + +} + +sub write_mylib_c { + my ($self) = @_; + my $str = <<'END'; +#include <stdio.h> +#include <stdlib.h> +#include "mylib.h" + +void foo() { + printf( "Hello from foo()\n"); +} +END + _write_file($self->{mylib_c_fn}, $str); +} + +sub write_mylib_h { + my ($self) = @_; + my $str = 'void foo();'; + _write_file($self->{mylib_h_fn}, $str); +} + +sub _write_file { + my ($file, $text) = @_; + my $utf8 = ("$]" < 5.008 or !$Config{useperlio}) ? "" : ":utf8"; + open(FILE, ">$utf8", $file) || die "Can't create $file: $!"; + print FILE $text; + close FILE; +} + +sub new { + my ($class, %args) = @_; + return bless \%args, $class; +} diff --git a/cpan/ExtUtils-MakeMaker/t/prereq.t b/cpan/ExtUtils-MakeMaker/t/prereq.t index c51cf1df85..9f81a9802c 100644 --- a/cpan/ExtUtils-MakeMaker/t/prereq.t +++ b/cpan/ExtUtils-MakeMaker/t/prereq.t @@ -133,10 +133,14 @@ ok( chdir 'Big-Dummy', "chdir'd to Big-Dummy" ) || "strict" => 99999, } ); - is $warnings, - "Warning: prerequisite I::Do::Not::Exist 0 not found.\n". - sprintf("Warning: prerequisite strict 99999 not found. We have %s.\n", - $strict::VERSION), '2 bad prereq warnings'; + + my $strict_warn + = sprintf("Warning: prerequisite strict 99999 not found. We have %s.\n", + $strict::VERSION); + # Done this way because EBCDIC sorts in a different order + ok( $warnings =~ s/Warning: prerequisite I::Do::Not::Exist 0 not found\.\n// + && $warnings =~ s/\Q$strict_warn// + && $warnings eq "", '2 bad prereq warnings'); $warnings = ''; eval { |