Mailing List Archive

My patch patch.2b1e to perl5.002beta1
# This is my patch e to perl5.002beta1.

exit 0 # Just in case

This is patch.2b1e to perl5.002beta1. This is simply
an upgrade from MakeMaker-5.10 to MakeMaker-5.11.

Nothing else is included.

cd to your perl source directory and type
patch -p1 -N < patch.2b1e

Patch and enjoy,

Andy Dougherty doughera@lafcol.lafayette.edu
Dept. of Physics
Lafayette College, Easton PA 18042


Here are Andreas' notes:


MakeMaker 5.11 is only half a step forward.

It fixes the most urgent problems and includes a few new subroutines
from Ilya's pen without actually using them. It does not yet install
into sitelib. It does not write a .packlist file anymore (this is a
transitory non-solution, I will try to replace the .packlist
computation by a safer replacement).

But it does fix the known bugs: extralibs was wrong, link() was called
on systems without link(), manpages for man1dir were installed
completely wrong, if xsubpp was too old we reached a runtime error,
libg++ could not be handled because of a missing \Q, xsubpp was called
with -noprototypes per default. A few installation directories didn't
keep up with the defaults from 5.002 when used with PREFIX.

I apologize for unresolved issues, especially with regard to Ilya's
changes, but I prefer to have one thing done before I try the next
changes.

Get it from CPAN/authors/id/ANDK/MakeMaker-5.11.tar.gz

The testing I have done is limited, because perl5.002b1d has problems
with some newXS calls. So extensions where I had to use xubpp could
not be compiled here. Wherever I had already run xsubpp, everything
seemed ok.

I append the Changes file below.


andreas


Installation of files to INST_MAN1DIR was missing a
$self->catdir and a dot between the filename and the
MAN1EXT.

There was a rare problem with the .packlist file: The
.packlist entries are appended to the .packlist file in
INST_ARCHAUTOLIB. The file is rewritten later to contain
only unique entries. For the rewriting of the file I used
perl -i.bak. That's not ok for AFS and dies if the .packlist
file doesn't exist for any other reason. THIS PROBLEM IS
NOT YET RESOLVED. I have dropped support for .packlist until
I have a nice fix for this.

Don Jackson saw this on his sun4-sunos box.
>Argument "Running '/bin/perl
/usr/local/lib/perl5/ExtUtils/x..." isn't numeric
>for right bitshift at
/usr/local/lib/perl5/ExtUtils/MakeMaker.pm line 1708.
>0 at /usr/local/lib/perl5/ExtUtils/MakeMaker.pm line
1708.
>Argument "Running '/bin/perl
/usr/local/lib/perl5/ExtUtils/x..." isn't numeric
>for right bitshift at
/usr/local/lib/perl5/ExtUtils/MakeMaker.pm line 1734.
>0 at /usr/local/lib/perl5/ExtUtils/MakeMaker.pm line
1734.
Was a precedence bug, solved.

Ilya sent a big patch for OS2. It was a bit complicated to
fold it in, so I included only the easy changes, and would
like to reconsider the thing, when there is a bit more time
and less pressure. All the new methods are included, but not
yet used, so the next patch will be easier to comprehend.

manifypods had no dependencies. Added them, although the
correct solution would be to have dependencies on the
produced manpages. The latter is not possible, because they
contain colons.

Two occurrences of \Q in did not have a coresponding \E.
Fixed.

Liblist choked on -lg++, because the \Q was missing
completely. Fixed.

Manifest.pm tried a link() even on systems without link()
available. Fix supplied by Ilya applied.

Introduced XS_VERSION to support a better matching control
between the VERSION of the *.pm and the *.xs part of the
package.

Dropped the default -noprototype argument to xsubpp.

Index: lib/ExtUtils/Liblist.pm
*** perl5.002b1d/lib/ExtUtils/Liblist.pm Sat Dec 2 16:50:47 1995
--- perl5.002b1e/lib/ExtUtils/Liblist.pm Wed Dec 6 11:52:22 1995
***************
*** 10,15 ****
--- 10,22 ----

sub ext {
my($potential_libs, $Verbose) = @_;
+ if ($Config{'osname'} eq 'os2' and $Config{libs}) {
+ # Dynamic libraries are not transitive, so we may need including
+ # the libraries linked against perl.dll again.
+
+ $potential_libs .= " " if $potential_libs;
+ $potential_libs .= $Config{libs};
+ }
return ("", "", "", "") unless $potential_libs;
print STDOUT "Potential libraries are '$potential_libs':\n" if $Verbose;

***************
*** 111,117 ****

# what do we know about this library...
my $is_dyna = ($fullname !~ /\Q$Config_libext\E$/);
! my $in_perl = ($libs =~ /\B-l${thislib}\b/s);

# Do not add it into the list if it is already linked in
# with the main perl executable.
--- 118,124 ----

# what do we know about this library...
my $is_dyna = ($fullname !~ /\Q$Config_libext\E$/);
! my $in_perl = ($libs =~ /\B-l\Q$ {thislib}\E\b/s);

# Do not add it into the list if it is already linked in
# with the main perl executable.
Index: lib/ExtUtils/MakeMaker.pm
Prereq: 1.114
*** perl5.002b1d/lib/ExtUtils/MakeMaker.pm Sat Dec 2 16:50:48 1995
--- perl5.002b1e/lib/ExtUtils/MakeMaker.pm Wed Dec 6 11:52:22 1995
***************
*** 56,65 ****

package ExtUtils::MakeMaker;

! # Last edited $Date: 1995/11/24 21:01:25 $ by Andreas Koenig
! # $Id: MakeMaker.pm,v 1.114 1995/11/24 21:01:25 k Exp $

! $Version = $VERSION = "5.10";

$ExtUtils::MakeMaker::Version_OK = 4.13; # Makefiles older than $Version_OK will die
# (Will be checked from MakeMaker version 4.13 onwards)
--- 56,65 ----

package ExtUtils::MakeMaker;

! # Last edited $Date: 1995/12/05 18:20:28 $ by Andreas Koenig
! # $Id: MakeMaker.pm,v 1.115 1995/12/05 18:20:28 k Exp $

! $Version = $VERSION = "5.11";

$ExtUtils::MakeMaker::Version_OK = 4.13; # Makefiles older than $Version_OK will die
# (Will be checked from MakeMaker version 4.13 onwards)
***************
*** 356,362 ****
my($skipit) = $self->skipcheck($section);
if ($skipit){
push @{$self->{RESULT}}, "\n# --- MakeMaker $section section $skipit.";
! } else { # MEMO: b 329 print "$self->{NAME}**$section**\n" and $section eq 'postamble'
my(%a) = %{$self->{$section} || {}};
push @{$self->{RESULT}}, "\n# --- MakeMaker $section section:";
push @{$self->{RESULT}}, "# " . join ", ", %a if $ExtUtils::MakeMaker::Verbose && %a;
--- 356,362 ----
my($skipit) = $self->skipcheck($section);
if ($skipit){
push @{$self->{RESULT}}, "\n# --- MakeMaker $section section $skipit.";
! } else {
my(%a) = %{$self->{$section} || {}};
push @{$self->{RESULT}}, "\n# --- MakeMaker $section section:";
push @{$self->{RESULT}}, "# " . join ", ", %a if $ExtUtils::MakeMaker::Verbose && %a;
***************
*** 791,798 ****

# Perl Macro: With source No source
# PERL_SRC ../.. (undefined)

# INST Macro: For standard for any other
# modules module
--- 791,798 ----

# Perl Macro: With source No source
# PERL_SRC ../.. (undefined)

# INST Macro: For standard for any other
# modules module
***************
*** 890,910 ****
$self->{INST_EXE} ||= $self->catdir('.','blib',$Config::Config{archname});

if ($self->{PREFIX}){
! $self->{INSTALLPRIVLIB} = $self->catdir($self->{PREFIX},"lib","perl5");
! $self->{INSTALLBIN} = $self->catdir($self->{PREFIX},"bin");
! $self->{INSTALLMAN3DIR} = $self->catdir($self->{PREFIX},"perl5","man","man3")
! unless defined $self->{INSTALLMAN3DIR};
}

if( $self->{INSTALLPRIVLIB} && ! $self->{INSTALLARCHLIB} ){
! my($archname) = $Config::Config{archname};
! if (-d $self->catdir($self->{INSTALLPRIVLIB},$archname)){
! $self->{INSTALLARCHLIB} = $self->catdir($self->{INSTALLPRIVLIB},$archname);
print STDOUT "Defaulting INSTALLARCHLIB to $self->{INSTALLARCHLIB}\n";
} else {
$self->{INSTALLARCHLIB} = $self->{INSTALLPRIVLIB};
}
}
$self->{INSTALLPRIVLIB} ||= $Config::Config{installprivlib};
$self->{INSTALLARCHLIB} ||= $Config::Config{installarchlib};
$self->{INSTALLBIN} ||= $Config::Config{installbin};
--- 890,930 ----
$self->{INST_EXE} ||= $self->catdir('.','blib',$Config::Config{archname});

if ($self->{PREFIX}){
! # With perl5.002 it turns out, that we hardcoded some assumptions in here:
! # $self->{INSTALLPRIVLIB} = $self->catdir($self->{PREFIX},"lib","perl5");
! # $self->{INSTALLBIN} = $self->catdir($self->{PREFIX},"bin");
! # $self->{INSTALLMAN3DIR} = $self->catdir($self->{PREFIX},"perl5","man","man3")
! # unless defined $self->{INSTALLMAN3DIR};
!
! # we have to look at the relation between $Config{prefix} and
! # the requested values
! ($self->{INSTALLPRIVLIB} = $Config{installprivlib})
! =~ s/\Q$Config{prefix}\E/$self->{PREFIX}/;
! ($self->{INSTALLBIN} = $Config{installbin})
! =~ s/\Q$Config{prefix}\E/$self->{PREFIX}/;
! ($self->{INSTALLMAN3DIR} = $Config{installman3dir})
! =~ s/\Q$Config{prefix}\E/$self->{PREFIX}/;
}

if( $self->{INSTALLPRIVLIB} && ! $self->{INSTALLARCHLIB} ){
! # Same as above here. With the unresolved versioned directory issue, we have to
! # be more careful to follow Configure
! # my($archname) = $Config::Config{archname};
! # if (-d $self->catdir($self->{INSTALLPRIVLIB},$archname)){
! # $self->{INSTALLARCHLIB} = $self->catdir($self->{INSTALLPRIVLIB},$archname);
! # print STDOUT "Defaulting INSTALLARCHLIB to $self->{INSTALLARCHLIB}\n";
! # } else {
! # $self->{INSTALLARCHLIB} = $self->{INSTALLPRIVLIB};
! # }
! ($self->{INSTALLARCHLIB} = $Config{installarchlib})
! =~ s/\Q$Config{installprivlib}\E/$self->{INSTALLPRIVLIB}/;
! if (-d $self->{INSTALLARCHLIB}) {
print STDOUT "Defaulting INSTALLARCHLIB to $self->{INSTALLARCHLIB}\n";
} else {
$self->{INSTALLARCHLIB} = $self->{INSTALLPRIVLIB};
}
}
+
$self->{INSTALLPRIVLIB} ||= $Config::Config{installprivlib};
$self->{INSTALLARCHLIB} ||= $Config::Config{installarchlib};
$self->{INSTALLBIN} ||= $Config::Config{installbin};
***************
*** 969,986 ****
$self->{VERSION} = "0.10" unless $self->{VERSION};
($self->{VERSION_SYM} = $self->{VERSION}) =~ s/\W/_/g;


# --- Initialize Perl Binary Locations

# Find Perl 5. The only contract here is that both 'PERL' and 'FULLPERL'
# will be working versions of perl 5. miniperl has priority over perl
# for PERL to ensure that $(PERL) is usable while building ./ext/*
- my $path_sep = $Is_OS2 ? ";" : $Is_VMS ? "/" : ":";
- my $path = $ENV{PATH};
- $path =~ s:\\:/:g if $Is_OS2;
- my @path = split $path_sep, $path;
my ($component,@defpath);
! foreach $component ($self->{PERL_SRC}, @path, $Config::Config{binexp}) {
push @defpath, $component if defined $component;
}
$self->{PERL} =
--- 989,1007 ----
$self->{VERSION} = "0.10" unless $self->{VERSION};
($self->{VERSION_SYM} = $self->{VERSION}) =~ s/\W/_/g;

+ # Graham Barr and Paul Marquess had some ideas how to ensure
+ # version compatibility between the *.pm file and the
+ # corresponding *.xs file. The bottomline was, that we need an
+ # XS_VERSION macro that defaults to VERSION:
+ $self->{XS_VERSION} ||= $self->{VERSION};

# --- Initialize Perl Binary Locations

# Find Perl 5. The only contract here is that both 'PERL' and 'FULLPERL'
# will be working versions of perl 5. miniperl has priority over perl
# for PERL to ensure that $(PERL) is usable while building ./ext/*
my ($component,@defpath);
! foreach $component ($self->{PERL_SRC}, $self->path(), $Config::Config{binexp}) {
push @defpath, $component if defined $component;
}
$self->{PERL} =
***************
*** 994,999 ****
--- 1015,1029 ----
unless ($self->{FULLPERL});
}

+ # Ilya's suggestion, will have to go into ExtUtils::MM_OS2 and MM_VMS
+ sub path {
+ my($self) = @_;
+ my $path_sep = $Is_OS2 ? ";" : $Is_VMS ? "/" : ":";
+ my $path = $ENV{PATH};
+ $path =~ s:\\:/:g if $Is_OS2;
+ my @path = split $path_sep, $path;
+ }
+
sub init_dirscan { # --- File and Directory Lists (.xs .pm .pod etc)
my($self) = @_;
unless (ref $self){
***************
*** 1119,1125 ****
$ispod = 1;
}
if( $ispod ) {
! $manifypods{$name} = '$(INST_MAN1DIR)'.basename($name).'$(MAN1EXT)';
}
}

--- 1149,1155 ----
$ispod = 1;
}
if( $ispod ) {
! $manifypods{$name} = $self->catdir('$(INST_MAN1DIR)',basename($name).'.$(MAN1EXT)');
}
}

***************
*** 1296,1307 ****
0; # false and not empty
}

sub maybe_command {
my($self,$file) = @_;
! return 1 if -x $file && ! -d $file;
return;
}

sub post_initialize {
my($self) = shift;
unless (ref $self){
--- 1326,1377 ----
0; # false and not empty
}

+
+ # Ilya's suggestion. Not yet used, want to understand it first, but at least the code is here
+ sub maybe_command_in_dirs { # $ver is optional argument if looking for perl
+ my($self, $names, $dirs, $trace, $ver) = @_;
+ my($name, $dir);
+ foreach $dir (@$dirs){
+ next unless defined $dir; # $self->{PERL_SRC} may be undefined
+ foreach $name (@$names){
+ my($abs,$tryabs);
+ if ($self->file_name_is_absolute($name)) {
+ $abs = $name;
+ } elsif ($name =~ m|/|) {
+ $abs = $self->catfile(".", $name); # not absolute
+ } else {
+ $abs = $self->catfile($dir, $name);
+ }
+ print "Checking $abs for $name\n" if ($trace >= 2);
+ next unless $tryabs = $self->maybe_command($abs);
+ print "Substituting $tryabs instead of $abs\n"
+ if ($trace >= 2 and $tryabs ne $abs);
+ $abs = $tryabs;
+ if (defined $ver) {
+ print "Executing $abs\n" if ($trace >= 2);
+ if (`$abs -e 'require $ver; print "VER_OK\n" ' 2>&1` =~ /VER_OK/) {
+ print "Using PERL=$abs\n" if $trace;
+ return $abs;
+ }
+ } else { # Do not look for perl
+ return $abs;
+ }
+ }
+ }
+ }
+
sub maybe_command {
my($self,$file) = @_;
! return $file if -x $file && ! -d $file;
return;
}

+ # Ilya's suggestion, not yet used
+ sub file_name_is_absolute {
+ my($self,$file) = @_;
+ $file =~ m:^/: ;
+ }
+
sub post_initialize {
my($self) = shift;
unless (ref $self){
***************
*** 1351,1356 ****
--- 1421,1429 ----
VERSION_SYM = $self->{VERSION_SYM}
VERSION_MACRO = VERSION
DEFINE_VERSION = -D\$(VERSION_MACRO)=\\\"\$(VERSION)\\\"
+ XS_VERSION = $self->{XS_VERSION}
+ XS_VERSION_MACRO = XS_VERSION
+ XS_DEFINE_VERSION = -D\$(XS_VERSION_MACRO)=\\\"\$(XS_VERSION)\\\"

# In which directory should we put this extension during 'make'?
# This is typically ./blib.
***************
*** 1621,1627 ****

my($cccmd) = $new;
$cccmd =~ s/^\s*\Q$Config::Config{cc}\E\s/\$(CC) /;
! $cccmd .= " \$(DEFINE_VERSION)";
$self->{CONST_CCCMD} = "CCCMD = $cccmd\n";
}

--- 1694,1700 ----

my($cccmd) = $new;
$cccmd =~ s/^\s*\Q$Config::Config{cc}\E\s/\$(CC) /;
! $cccmd .= " \$(DEFINE_VERSION) \$(XS_DEFINE_VERSION)";
$self->{CONST_CCCMD} = "CCCMD = $cccmd\n";
}

***************
*** 1672,1678 ****

# What are the correct thresholds for version 1 && 2 Paul?
if ( $xsubpp_version > 1.923 ){
! $self->{XSPROTOARG} = "-noprototypes" unless defined $self->{XSPROTOARG};
} else {
if (defined $self->{XSPROTOARG} && $self->{XSPROTOARG} =~ /\-prototypes/) {
print STDOUT qq{Warning: This extension wants to pass the switch "-prototypes" to xsubpp.
--- 1745,1751 ----

# What are the correct thresholds for version 1 && 2 Paul?
if ( $xsubpp_version > 1.923 ){
! $self->{XSPROTOARG} = "" unless defined $self->{XSPROTOARG};
} else {
if (defined $self->{XSPROTOARG} && $self->{XSPROTOARG} =~ /\-prototypes/) {
print STDOUT qq{Warning: This extension wants to pass the switch "-prototypes" to xsubpp.
***************
*** 1705,1711 ****
my $command = "$self->{PERL} $xsubpp -v 2>&1";
print "Running: $command\n" if $Verbose;
$version = `$command` ;
! warn "Running '$command' exits with status " . $?>>8 if $?;
chop $version ;

return $1 if $version =~ /^xsubpp version (.*)/ ;
--- 1778,1784 ----
my $command = "$self->{PERL} $xsubpp -v 2>&1";
print "Running: $command\n" if $Verbose;
$version = `$command` ;
! warn "Running '$command' exits with status " . ($?>>8) if $?;
chop $version ;

return $1 if $version =~ /^xsubpp version (.*)/ ;
***************
*** 1731,1737 ****
$command = "$self->{PERL} $xsubpp $file 2>&1";
print "Running: $command\n" if $Verbose;
my $text = `$command` ;
! warn "Running '$command' exits with status " . $?>>8 if $?;
unlink $file ;

# gets 1.2 -> 1.92 and 2.000a1
--- 1804,1810 ----
$command = "$self->{PERL} $xsubpp $file 2>&1";
print "Running: $command\n" if $Verbose;
my $text = `$command` ;
! warn "Running '$command' exits with status " . ($?>>8) if $?;
unlink $file ;

# gets 1.2 -> 1.92 and 2.000a1
***************
*** 2232,2238 ****
-e 'system("$(PERL) $(POD2MAN_EXE) $$_>$$m{$$_}")==0 or warn "Couldn\\047t install $$m{$$_}\n";' \\
-e 'chmod 0644, $$m{$$_} or warn "chmod 644 $$m{$$_}: $$!\n";}'
];
! push @m, "\nmanifypods :";

push(@m,"\n");
if (%{$self->{MAN1PODS}} || %{$self->{MAN3PODS}}) {
--- 2305,2312 ----
-e 'system("$(PERL) $(POD2MAN_EXE) $$_>$$m{$$_}")==0 or warn "Couldn\\047t install $$m{$$_}\n";' \\
-e 'chmod 0644, $$m{$$_} or warn "chmod 644 $$m{$$_}: $$!\n";}'
];
! push @m, "\nmanifypods : ";
! push @m, join " \\\n\t", keys %{$self->{MAN1PODS}}, keys %{$self->{MAN3PODS}};

push(@m,"\n");
if (%{$self->{MAN1PODS}} || %{$self->{MAN3PODS}}) {
***************
*** 2541,2547 ****
@ echo Appending installation info to $(INSTALLARCHLIB)/perllocal.pod
@ $(PERL) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) \\
-e "use ExtUtils::MakeMaker; MY->new({})->writedoc('Module', '$(NAME)', \\
! 'LINKTYPE=$(LINKTYPE)', 'VERSION=$(VERSION)', \\
'EXE_FILES=$(EXE_FILES)')" >> $(INSTALLARCHLIB)/perllocal.pod
};

--- 2615,2621 ----
@ echo Appending installation info to $(INSTALLARCHLIB)/perllocal.pod
@ $(PERL) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) \\
-e "use ExtUtils::MakeMaker; MY->new({})->writedoc('Module', '$(NAME)', \\
! 'LINKTYPE=$(LINKTYPE)', 'VERSION=$(VERSION)', 'XS_VERSION=$(XS_VERSION)', \\
'EXE_FILES=$(EXE_FILES)')" >> $(INSTALLARCHLIB)/perllocal.pod
};

***************
*** 2560,2568 ****
-e 'foreach (\@ARGV){ die qq{ \$\$message \$\$_\\n} unless -w \$\$_}' \\
\$(INSTALLPRIVLIB) \$(INSTALLARCHLIB)
\$(MAKE) INST_LIB=\$(INSTALLPRIVLIB) INST_ARCHLIB=\$(INSTALLARCHLIB) INST_EXE=\$(INSTALLBIN) INST_MAN1DIR=\$(INSTALLMAN1DIR) INST_MAN3DIR=\$(INSTALLMAN3DIR) all
- \@\$(PERL) -i.bak -lne 'print unless \$\$seen{ \$\$_ }++' \$(INSTALLARCHLIB)/auto/\$(FULLEXT)/.packlist
");

push @m, '
#### UNINSTALL IS STILL EXPERIMENTAL ####
uninstall ::
--- 2634,2648 ----
-e 'foreach (\@ARGV){ die qq{ \$\$message \$\$_\\n} unless -w \$\$_}' \\
\$(INSTALLPRIVLIB) \$(INSTALLARCHLIB)
\$(MAKE) INST_LIB=\$(INSTALLPRIVLIB) INST_ARCHLIB=\$(INSTALLARCHLIB) INST_EXE=\$(INSTALLBIN) INST_MAN1DIR=\$(INSTALLMAN1DIR) INST_MAN3DIR=\$(INSTALLMAN3DIR) all
");

+ # .packlist is not supported in this MakeMaker, because it needs a serious fix. -i.bak
+ # is not allowed in an environment, with afs, we have to read here, write there, and I
+ # don't have time to fix it today -> TODO
+ # The following line was executed with MMs up to 5.10:
+ # \@\$(PERL) -i.bak -lne 'print unless \$\$seen{ \$\$_ }++' \$(PERL_ARCHLIB)/auto/\$(FULLEXT)/.packlist
+
+
push @m, '
#### UNINSTALL IS STILL EXPERIMENTAL ####
uninstall ::
***************
*** 2570,2576 ****

push(@m, map("\tcd $_ && test -f $self->{MAKEFILE} && \$(MAKE) uninstall\n",
@{$self->{DIR}}));
! push @m, "\t".'$(RM_RF) `cat $(INSTALLARCHLIB)/auto/$(FULLEXT)/.packlist`
';

join("",@m);
--- 2650,2656 ----

push(@m, map("\tcd $_ && test -f $self->{MAKEFILE} && \$(MAKE) uninstall\n",
@{$self->{DIR}}));
! push @m, "\t".'$(RM_RF) `cat $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist`
';

join("",@m);
***************
*** 2824,2830 ****
# Which *.a files could we make use of...
local(%static);
File::Find::find(sub {
! return unless m/\Q$self->{LIB_EXT}$/;
return if m/^libperl/;
# don't include the installed version of this extension. I
# leave this line here, although it is not necessary anymore:
--- 2904,2910 ----
# Which *.a files could we make use of...
local(%static);
File::Find::find(sub {
! return unless m/\Q$self->{LIB_EXT}\E$/;
return if m/^libperl/;
# don't include the installed version of this extension. I
# leave this line here, although it is not necessary anymore:
***************
*** 2843,2849 ****

$extra = [] unless $extra && ref $extra eq 'ARRAY';
for (sort keys %static) {
! next unless /\Q$self->{LIB_EXT}$/;
$_ = dirname($_) . "/extralibs.ld";
push @$extra, $_;
}
--- 2923,2929 ----

$extra = [] unless $extra && ref $extra eq 'ARRAY';
for (sort keys %static) {
! next unless /\Q$self->{LIB_EXT}\E$/;
$_ = dirname($_) . "/extralibs.ld";
push @$extra, $_;
}
***************
*** 3121,3131 ****

sub maybe_command {
my($self,$file) = @_;
! return 1 if -x $file && ! -d _;
! return 1 if -x "$file.exe" && ! -d _;
return;
}

# the following keeps AutoSplit happy
package ExtUtils::MakeMaker;
1;
--- 3201,3218 ----

sub maybe_command {
my($self,$file) = @_;
! return $file if -x $file && ! -d _;
! return "$file.exe" if -x "$file.exe" && ! -d _;
! return "$file.cmd" if -x "$file.cmd" && ! -d _;
return;
}

+ sub file_name_is_absolute {
+ my($self,$file) = @_;
+ $file =~ m{^([a-z]:)?[\\/]}i ;
+ }
+
+
# the following keeps AutoSplit happy
package ExtUtils::MakeMaker;
1;
***************
*** 3830,3842 ****

=item XSPROTOARG

! May be set to an empty string, C<-prototypes>, or
C<-noprototypes>. See the xsubpp documentation for details. MakeMaker
! defaults to the empty string for older versions of xsubpp and to
! C<-noprototypes> for more recent ones. The default will change to
! C<-prototypes> really soon now. So do not rely on the default when
! writing extensions. Better armour your extension with prototype
! support from the start.

=back

--- 3917,3930 ----

=item XSPROTOARG

! May be set to an empty string, which is identical to C<-prototypes>, or
C<-noprototypes>. See the xsubpp documentation for details. MakeMaker
! defaults to the empty string.
!
! =item XS_VERSION
!
! Your version number for the XS part of your extension. This defaults
! to S(VERSION).

=back

Index: lib/ExtUtils/Manifest.pm
*** perl5.002b1d/lib/ExtUtils/Manifest.pm Sat Dec 2 16:50:48 1995
--- perl5.002b1e/lib/ExtUtils/Manifest.pm Wed Dec 6 11:52:22 1995
***************
*** 136,144 ****
$Verbose = 1;
$Is_VMS = $Config{'osname'} eq 'VMS';

! $VERSION = $VERSION = substr(q$Revision: 1.16 $,10,4);

$Quiet = 0;

sub mkmanifest {
my $manimiss = 0;
--- 136,149 ----
$Verbose = 1;
$Is_VMS = $Config{'osname'} eq 'VMS';

! $VERSION = $VERSION = substr(q$Revision: 1.17 $,10,4);

$Quiet = 0;
+
+ # Really cool fix from Ilya :)
+ unless (defined $Config{d_link}) {
+ *ln = \&cp;
+ }

sub mkmanifest {
my $manimiss = 0;


End of patch.