- use a better BuildRoot - drop a redundant mkdir in %%install - call patchlevel.h only once; rm patchlevel.bak - update modules Sys::Syslog, Module::Load::Conditional, Module::CoreList, Test::Harness, Test::Simple, CGI.pm (dropping the upstreamed patch), File::Path (that includes our perl-5.10.0-CVE-2008-2827.patch), constant, Pod::Simple, Archive::Tar, Archive::Extract, File::Fetch, File::Temp, IPC::Cmd, Time::HiRes, Module::Build, ExtUtils::CBuilder - standardize the patches for updating embedded modules - work around a bug in Module::Build tests bu setting TMPDIR to a directory inside the source tree
445 lines
14 KiB
Diff
445 lines
14 KiB
Diff
perl-update-ExtUtils-CBuilder-0.24
|
|
|
|
diff -urN perl-5.10.0.orig/lib/ExtUtils/CBuilder/Base.pm perl-5.10.0/lib/ExtUtils/CBuilder/Base.pm
|
|
--- perl-5.10.0.orig/lib/ExtUtils/CBuilder/Base.pm 2007-12-18 11:47:07.000000000 +0100
|
|
+++ perl-5.10.0/lib/ExtUtils/CBuilder/Base.pm 2009-03-11 20:12:36.000000000 +0100
|
|
@@ -6,9 +6,10 @@
|
|
use Cwd ();
|
|
use Config;
|
|
use Text::ParseWords;
|
|
+use IO::File;
|
|
|
|
use vars qw($VERSION);
|
|
-$VERSION = '0.21';
|
|
+$VERSION = '0.24';
|
|
|
|
sub new {
|
|
my $class = shift;
|
|
@@ -118,10 +119,8 @@
|
|
|
|
my $tmpfile = File::Spec->catfile(File::Spec->tmpdir, 'compilet.c');
|
|
{
|
|
- local *FH;
|
|
- open FH, "> $tmpfile" or die "Can't create $tmpfile: $!";
|
|
- print FH "int boot_compilet() { return 1; }\n";
|
|
- close FH;
|
|
+ my $FH = IO::File->new("> $tmpfile") or die "Can't create $tmpfile: $!";
|
|
+ print $FH "int boot_compilet() { return 1; }\n";
|
|
}
|
|
|
|
my ($obj_file, @lib_files);
|
|
diff -urN perl-5.10.0.orig/lib/ExtUtils/CBuilder/Changes perl-5.10.0/lib/ExtUtils/CBuilder/Changes
|
|
--- perl-5.10.0.orig/lib/ExtUtils/CBuilder/Changes 2007-12-18 11:47:07.000000000 +0100
|
|
+++ perl-5.10.0/lib/ExtUtils/CBuilder/Changes 2009-03-11 20:13:30.000000000 +0100
|
|
@@ -1,5 +1,31 @@
|
|
Revision history for Perl extension ExtUtils::CBuilder.
|
|
|
|
+ - Added 'gnu' and 'gnukfreebsd' as Unix variants. [Niko Tyni]
|
|
+
|
|
+ - Brought in some VMS fixes from bleadperl: "Correct and complete
|
|
+ CBuilder's handling of external libraries when linking on VMS."
|
|
+ [Craig Berry]
|
|
+
|
|
+0.23 - Sat Apr 19 22:28:03 2008
|
|
+
|
|
+ - Fixed some problems (some old, some new) with Strawberry Perl on
|
|
+ Windows. [Alberto Simo~es]
|
|
+
|
|
+ - Will now install in the core perl lib directory when the user's
|
|
+ perl is new enough to have us in core. [Yi Ma Mao]
|
|
+
|
|
+0.22 - Fri Feb 8 21:52:21 2008
|
|
+
|
|
+ - Replaced the split_like_shell() method on Windows with a
|
|
+ near-no-op, which is probably more correct and has the benefit of
|
|
+ not messing up UNC paths. [John R. LoVerso, see
|
|
+ http://rt.cpan.org/Ticket/Display.html?id=26545]
|
|
+
|
|
+ - Fixed extra_compiler_flags on Windows, they were being
|
|
+ ignored. [Robert May]
|
|
+
|
|
+0.21 - Tue Oct 30 06:46:01 2007
|
|
+
|
|
- Clean up perl_src path using Cwd::realpath(). Only affects usage
|
|
as part of the perl core.
|
|
|
|
diff -urN perl-5.10.0.orig/lib/ExtUtils/CBuilder/Platform/Unix.pm perl-5.10.0/lib/ExtUtils/CBuilder/Platform/Unix.pm
|
|
--- perl-5.10.0.orig/lib/ExtUtils/CBuilder/Platform/Unix.pm 2007-12-18 11:47:07.000000000 +0100
|
|
+++ perl-5.10.0/lib/ExtUtils/CBuilder/Platform/Unix.pm 2009-03-11 20:12:36.000000000 +0100
|
|
@@ -4,7 +4,7 @@
|
|
use ExtUtils::CBuilder::Base;
|
|
|
|
use vars qw($VERSION @ISA);
|
|
-$VERSION = '0.21';
|
|
+$VERSION = '0.24';
|
|
@ISA = qw(ExtUtils::CBuilder::Base);
|
|
|
|
sub link_executable {
|
|
diff -urN perl-5.10.0.orig/lib/ExtUtils/CBuilder/Platform/VMS.pm perl-5.10.0/lib/ExtUtils/CBuilder/Platform/VMS.pm
|
|
--- perl-5.10.0.orig/lib/ExtUtils/CBuilder/Platform/VMS.pm 2007-12-18 11:47:07.000000000 +0100
|
|
+++ perl-5.10.0/lib/ExtUtils/CBuilder/Platform/VMS.pm 2009-03-11 20:12:36.000000000 +0100
|
|
@@ -4,7 +4,7 @@
|
|
use ExtUtils::CBuilder::Base;
|
|
|
|
use vars qw($VERSION @ISA);
|
|
-$VERSION = '0.22';
|
|
+$VERSION = '0.24';
|
|
@ISA = qw(ExtUtils::CBuilder::Base);
|
|
|
|
use File::Spec::Functions qw(catfile catdir);
|
|
@@ -134,7 +134,7 @@
|
|
# In general, we pass through the basic libraries from %Config unchanged.
|
|
# The one exception is that if we're building in the Perl source tree, and
|
|
# a library spec could be resolved via a logical name, we go to some trouble
|
|
- # to insure that the copy in the local tree is used, rather than one to
|
|
+ # to ensure that the copy in the local tree is used, rather than one to
|
|
# which a system-wide logical may point.
|
|
if ($self->perl_src) {
|
|
my($lib,$locspec,$type);
|
|
diff -urN perl-5.10.0.orig/lib/ExtUtils/CBuilder/Platform/Windows.pm perl-5.10.0/lib/ExtUtils/CBuilder/Platform/Windows.pm
|
|
--- perl-5.10.0.orig/lib/ExtUtils/CBuilder/Platform/Windows.pm 2007-12-18 11:47:07.000000000 +0100
|
|
+++ perl-5.10.0/lib/ExtUtils/CBuilder/Platform/Windows.pm 2009-03-11 20:12:36.000000000 +0100
|
|
@@ -7,9 +7,10 @@
|
|
use File::Spec;
|
|
|
|
use ExtUtils::CBuilder::Base;
|
|
+use IO::File;
|
|
|
|
use vars qw($VERSION @ISA);
|
|
-$VERSION = '0.21';
|
|
+$VERSION = '0.24';
|
|
@ISA = qw(ExtUtils::CBuilder::Base);
|
|
|
|
sub new {
|
|
@@ -33,61 +34,24 @@
|
|
}
|
|
|
|
sub split_like_shell {
|
|
- # As it turns out, Windows command-parsing is very different from
|
|
- # Unix command-parsing. Double-quotes mean different things,
|
|
- # backslashes don't necessarily mean escapes, and so on. So we
|
|
- # can't use Text::ParseWords::shellwords() to break a command string
|
|
- # into words. The algorithm below was bashed out by Randy and Ken
|
|
- # (mostly Randy), and there are a lot of regression tests, so we
|
|
- # should feel free to adjust if desired.
|
|
-
|
|
+ # Since Windows will pass the whole command string (not an argument
|
|
+ # array) to the target program and make the program parse it itself,
|
|
+ # we don't actually need to do any processing here.
|
|
(my $self, local $_) = @_;
|
|
|
|
return @$_ if defined() && UNIVERSAL::isa($_, 'ARRAY');
|
|
-
|
|
- my @argv;
|
|
- return @argv unless defined() && length();
|
|
-
|
|
- my $arg = '';
|
|
- my( $i, $quote_mode ) = ( 0, 0 );
|
|
-
|
|
- while ( $i < length() ) {
|
|
-
|
|
- my $ch = substr( $_, $i , 1 );
|
|
- my $next_ch = substr( $_, $i+1, 1 );
|
|
-
|
|
- if ( $ch eq '\\' && $next_ch eq '"' ) {
|
|
- $arg .= '"';
|
|
- $i++;
|
|
- } elsif ( $ch eq '\\' && $next_ch eq '\\' ) {
|
|
- $arg .= '\\';
|
|
- $i++;
|
|
- } elsif ( $ch eq '"' && $next_ch eq '"' && $quote_mode ) {
|
|
- $quote_mode = !$quote_mode;
|
|
- $arg .= '"';
|
|
- $i++;
|
|
- } elsif ( $ch eq '"' && $next_ch eq '"' && !$quote_mode &&
|
|
- ( $i + 2 == length() ||
|
|
- substr( $_, $i + 2, 1 ) eq ' ' )
|
|
- ) { # for cases like: a"" => [ 'a' ]
|
|
- push( @argv, $arg );
|
|
- $arg = '';
|
|
- $i += 2;
|
|
- } elsif ( $ch eq '"' ) {
|
|
- $quote_mode = !$quote_mode;
|
|
- } elsif ( $ch eq ' ' && !$quote_mode ) {
|
|
- push( @argv, $arg ) if $arg;
|
|
- $arg = '';
|
|
- ++$i while substr( $_, $i + 1, 1 ) eq ' ';
|
|
- } else {
|
|
- $arg .= $ch;
|
|
- }
|
|
-
|
|
- $i++;
|
|
- }
|
|
-
|
|
- push( @argv, $arg ) if defined( $arg ) && length( $arg );
|
|
- return @argv;
|
|
+ return unless defined() && length();
|
|
+ return ($_);
|
|
+}
|
|
+
|
|
+sub do_system {
|
|
+ # See above
|
|
+ my $self = shift;
|
|
+ my $cmd = join(" ",
|
|
+ grep length,
|
|
+ map {$a=$_;$a=~s/\t/ /g;$a=~s/^\s+|\s+$//;$a}
|
|
+ grep defined, @_);
|
|
+ return $self->SUPER::do_system($cmd);
|
|
}
|
|
|
|
sub arg_defines {
|
|
@@ -119,7 +83,7 @@
|
|
cflags => [
|
|
$self->split_like_shell($cf->{ccflags}),
|
|
$self->split_like_shell($cf->{cccdlflags}),
|
|
- $self->split_like_shell($cf->{extra_compiler_flags}),
|
|
+ $self->split_like_shell($args{extra_compiler_flags}),
|
|
],
|
|
optimize => [ $self->split_like_shell($cf->{optimize}) ],
|
|
defines => \@defines,
|
|
@@ -329,18 +293,16 @@
|
|
$self->add_to_cleanup($script);
|
|
print "Generating script '$script'\n" if !$self->{quiet};
|
|
|
|
- open( SCRIPT, ">$script" )
|
|
+ my $SCRIPT = IO::File->new( ">$script" )
|
|
or die( "Could not create script '$script': $!" );
|
|
|
|
- print SCRIPT join( "\n",
|
|
+ print $SCRIPT join( "\n",
|
|
map { ref $_ ? @{$_} : $_ }
|
|
grep defined,
|
|
delete(
|
|
@spec{ qw(includes cflags optimize defines perlinc) } )
|
|
);
|
|
|
|
- close SCRIPT;
|
|
-
|
|
push @{$spec{includes}}, '@"' . $script . '"';
|
|
|
|
return %spec;
|
|
@@ -402,10 +364,10 @@
|
|
|
|
print "Generating script '$script'\n" if !$self->{quiet};
|
|
|
|
- open( SCRIPT, ">$script" )
|
|
+ my $SCRIPT = IO::File->new( ">$script" )
|
|
or die( "Could not create script '$script': $!" );
|
|
|
|
- print SCRIPT join( "\n",
|
|
+ print $SCRIPT join( "\n",
|
|
map { ref $_ ? @{$_} : $_ }
|
|
grep defined,
|
|
delete(
|
|
@@ -414,8 +376,6 @@
|
|
def_file implib map_file) } )
|
|
);
|
|
|
|
- close SCRIPT;
|
|
-
|
|
push @{$spec{lddlflags}}, '@"' . $script . '"';
|
|
|
|
return %spec;
|
|
@@ -459,7 +419,7 @@
|
|
|
|
print "Generating script '$script'\n" if !$self->{quiet};
|
|
|
|
- open( SCRIPT, ">$script" )
|
|
+ my $SCRIPT = IO::File->new( ">$script" )
|
|
or die( "Could not create script '$script': $!" );
|
|
|
|
# XXX Borland "response files" seem to be unable to accept macro
|
|
@@ -467,15 +427,13 @@
|
|
# backslash doesn't work, and any level of quotes are stripped. The
|
|
# result is is a floating point number in the source file where a
|
|
# string is expected. So we leave the macros on the command line.
|
|
- print SCRIPT join( "\n",
|
|
+ print $SCRIPT join( "\n",
|
|
map { ref $_ ? @{$_} : $_ }
|
|
grep defined,
|
|
delete(
|
|
@spec{ qw(includes cflags optimize perlinc) } )
|
|
);
|
|
|
|
- close SCRIPT;
|
|
-
|
|
push @{$spec{includes}}, '@"' . $script . '"';
|
|
|
|
return %spec;
|
|
@@ -525,29 +483,25 @@
|
|
print "Generating scripts '$ld_script' and '$ld_libs'.\n" if !$self->{quiet};
|
|
|
|
# Script 1: contains options & names of object files.
|
|
- open( LD_SCRIPT, ">$ld_script" )
|
|
+ my $LD_SCRIPT = IO::File->new( ">$ld_script" )
|
|
or die( "Could not create linker script '$ld_script': $!" );
|
|
|
|
- print LD_SCRIPT join( " +\n",
|
|
+ print $LD_SCRIPT join( " +\n",
|
|
map { @{$_} }
|
|
grep defined,
|
|
delete(
|
|
@spec{ qw(lddlflags libpath other_ldflags startup objects) } )
|
|
);
|
|
|
|
- close LD_SCRIPT;
|
|
-
|
|
# Script 2: contains name of libs to link against.
|
|
- open( LD_LIBS, ">$ld_libs" )
|
|
+ my $LD_LIBS = IO::File->new( ">$ld_libs" )
|
|
or die( "Could not create linker script '$ld_libs': $!" );
|
|
|
|
- print LD_LIBS join( " +\n",
|
|
+ print $LD_LIBS join( " +\n",
|
|
(delete $spec{libperl} || ''),
|
|
@{delete $spec{perllibs} || []},
|
|
);
|
|
|
|
- close LD_LIBS;
|
|
-
|
|
push @{$spec{lddlflags}}, '@"' . $ld_script . '"';
|
|
push @{$spec{perllibs}}, '@"' . $ld_libs . '"';
|
|
|
|
@@ -669,32 +623,30 @@
|
|
|
|
print "Generating script '$script'\n" if !$self->{quiet};
|
|
|
|
- open( SCRIPT, ">$script" )
|
|
+ my $SCRIPT = IO::File->new( ">$script" )
|
|
or die( "Could not create script '$script': $!" );
|
|
|
|
- print( SCRIPT 'SEARCH_DIR(' . $_ . ")\n" )
|
|
+ print $SCRIPT ( 'SEARCH_DIR(' . $_ . ")\n" )
|
|
for @{delete $spec{libpath} || []};
|
|
|
|
# gcc takes only one startup file, so the first object in startup is
|
|
# specified as the startup file and any others are shifted into the
|
|
# beginning of the list of objects.
|
|
if ( $spec{startup} && @{$spec{startup}} ) {
|
|
- print SCRIPT 'STARTUP(' . shift( @{$spec{startup}} ) . ")\n";
|
|
+ print $SCRIPT 'STARTUP(' . shift( @{$spec{startup}} ) . ")\n";
|
|
unshift @{$spec{objects}},
|
|
@{delete $spec{startup} || []};
|
|
}
|
|
|
|
- print SCRIPT 'INPUT(' . join( ',',
|
|
+ print $SCRIPT 'INPUT(' . join( ',',
|
|
@{delete $spec{objects} || []}
|
|
) . ")\n";
|
|
|
|
- print SCRIPT 'INPUT(' . join( ' ',
|
|
+ print $SCRIPT 'INPUT(' . join( ' ',
|
|
(delete $spec{libperl} || ''),
|
|
@{delete $spec{perllibs} || []},
|
|
) . ")\n";
|
|
|
|
- close SCRIPT;
|
|
-
|
|
push @{$spec{other_ldflags}}, '"' . $script . '"';
|
|
|
|
return %spec;
|
|
diff -urN perl-5.10.0.orig/lib/ExtUtils/CBuilder/Platform/aix.pm perl-5.10.0/lib/ExtUtils/CBuilder/Platform/aix.pm
|
|
--- perl-5.10.0.orig/lib/ExtUtils/CBuilder/Platform/aix.pm 2007-12-18 11:47:07.000000000 +0100
|
|
+++ perl-5.10.0/lib/ExtUtils/CBuilder/Platform/aix.pm 2009-03-11 20:12:36.000000000 +0100
|
|
@@ -5,7 +5,7 @@
|
|
use File::Spec;
|
|
|
|
use vars qw($VERSION @ISA);
|
|
-$VERSION = '0.21';
|
|
+$VERSION = '0.24';
|
|
@ISA = qw(ExtUtils::CBuilder::Platform::Unix);
|
|
|
|
sub need_prelink { 1 }
|
|
diff -urN perl-5.10.0.orig/lib/ExtUtils/CBuilder/Platform/cygwin.pm perl-5.10.0/lib/ExtUtils/CBuilder/Platform/cygwin.pm
|
|
--- perl-5.10.0.orig/lib/ExtUtils/CBuilder/Platform/cygwin.pm 2007-12-18 11:47:07.000000000 +0100
|
|
+++ perl-5.10.0/lib/ExtUtils/CBuilder/Platform/cygwin.pm 2009-03-11 20:12:36.000000000 +0100
|
|
@@ -5,7 +5,7 @@
|
|
use ExtUtils::CBuilder::Platform::Unix;
|
|
|
|
use vars qw($VERSION @ISA);
|
|
-$VERSION = '0.21';
|
|
+$VERSION = '0.24';
|
|
@ISA = qw(ExtUtils::CBuilder::Platform::Unix);
|
|
|
|
sub link_executable {
|
|
diff -urN perl-5.10.0.orig/lib/ExtUtils/CBuilder/Platform/darwin.pm perl-5.10.0/lib/ExtUtils/CBuilder/Platform/darwin.pm
|
|
--- perl-5.10.0.orig/lib/ExtUtils/CBuilder/Platform/darwin.pm 2007-12-18 11:47:07.000000000 +0100
|
|
+++ perl-5.10.0/lib/ExtUtils/CBuilder/Platform/darwin.pm 2009-03-11 20:12:36.000000000 +0100
|
|
@@ -4,7 +4,7 @@
|
|
use ExtUtils::CBuilder::Platform::Unix;
|
|
|
|
use vars qw($VERSION @ISA);
|
|
-$VERSION = '0.21';
|
|
+$VERSION = '0.24';
|
|
@ISA = qw(ExtUtils::CBuilder::Platform::Unix);
|
|
|
|
sub compile {
|
|
diff -urN perl-5.10.0.orig/lib/ExtUtils/CBuilder/Platform/dec_osf.pm perl-5.10.0/lib/ExtUtils/CBuilder/Platform/dec_osf.pm
|
|
--- perl-5.10.0.orig/lib/ExtUtils/CBuilder/Platform/dec_osf.pm 2007-12-18 11:47:07.000000000 +0100
|
|
+++ perl-5.10.0/lib/ExtUtils/CBuilder/Platform/dec_osf.pm 2009-03-11 20:12:36.000000000 +0100
|
|
@@ -6,7 +6,7 @@
|
|
|
|
use vars qw($VERSION @ISA);
|
|
@ISA = qw(ExtUtils::CBuilder::Platform::Unix);
|
|
-$VERSION = '0.21';
|
|
+$VERSION = '0.24';
|
|
|
|
sub link_executable {
|
|
my $self = shift;
|
|
diff -urN perl-5.10.0.orig/lib/ExtUtils/CBuilder/Platform/os2.pm perl-5.10.0/lib/ExtUtils/CBuilder/Platform/os2.pm
|
|
--- perl-5.10.0.orig/lib/ExtUtils/CBuilder/Platform/os2.pm 2007-12-18 11:47:07.000000000 +0100
|
|
+++ perl-5.10.0/lib/ExtUtils/CBuilder/Platform/os2.pm 2009-03-11 20:12:36.000000000 +0100
|
|
@@ -4,7 +4,7 @@
|
|
use ExtUtils::CBuilder::Platform::Unix;
|
|
|
|
use vars qw($VERSION @ISA);
|
|
-$VERSION = '0.21';
|
|
+$VERSION = '0.24';
|
|
@ISA = qw(ExtUtils::CBuilder::Platform::Unix);
|
|
|
|
sub need_prelink { 1 }
|
|
diff -urN perl-5.10.0.orig/lib/ExtUtils/CBuilder/t/01-basic.t perl-5.10.0/lib/ExtUtils/CBuilder/t/01-basic.t
|
|
--- perl-5.10.0.orig/lib/ExtUtils/CBuilder/t/01-basic.t 2007-12-18 11:47:07.000000000 +0100
|
|
+++ perl-5.10.0/lib/ExtUtils/CBuilder/t/01-basic.t 2009-03-11 20:08:15.000000000 +0100
|
|
@@ -53,6 +53,16 @@
|
|
}
|
|
|
|
my @words = $b->split_like_shell(' foo bar');
|
|
-ok @words, 2;
|
|
-ok $words[0], 'foo';
|
|
-ok $words[1], 'bar';
|
|
+
|
|
+skip(
|
|
+ $^O =~ m/MSWin/ ? "Skip under MSWindows" : 0, # whether to skip
|
|
+ @words, 2
|
|
+ );
|
|
+skip(
|
|
+ $^O =~ m/MSWin/ ? "Skip under MSWindows" : 0, # whether to skip
|
|
+ $words[0], 'foo'
|
|
+);
|
|
+skip(
|
|
+ $^O =~ m/MSWin/ ? "Skip under MSWindows" : 0, # whether to skip
|
|
+ $words[1], 'bar'
|
|
+);
|
|
diff -urN perl-5.10.0.orig/lib/ExtUtils/CBuilder.pm perl-5.10.0/lib/ExtUtils/CBuilder.pm
|
|
--- perl-5.10.0.orig/lib/ExtUtils/CBuilder.pm 2007-12-18 11:47:07.000000000 +0100
|
|
+++ perl-5.10.0/lib/ExtUtils/CBuilder.pm 2009-03-11 20:12:36.000000000 +0100
|
|
@@ -5,7 +5,7 @@
|
|
use File::Basename ();
|
|
|
|
use vars qw($VERSION @ISA);
|
|
-$VERSION = '0.21';
|
|
+$VERSION = '0.24';
|
|
$VERSION = eval $VERSION;
|
|
|
|
# Okay, this is the brute-force method of finding out what kind of
|
|
@@ -36,6 +36,8 @@
|
|
sunos Unix
|
|
cygwin Unix
|
|
os2 Unix
|
|
+ gnu Unix
|
|
+ gnukfreebsd Unix
|
|
|
|
dos Windows
|
|
MSWin32 Windows
|