Skip Menu |

This queue is for tickets about the ExtUtils-MakeMaker CPAN distribution.

Report information
The Basics
Id: 21430
Status: open
Priority: 0/
Queue: ExtUtils-MakeMaker

People
Owner: Nobody in particular
Requestors: mschwern [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: Wishlist
Broken in: (no value)
Fixed in: (no value)



Subject: Steal patches from ActiveState
ActiveState makes a lot of changes to MakeMaker. Steal them. http://downloads.activestate.com/ActivePerl/src/5.8/AP819_diff.txt
On Mon Sep 11 17:34:57 2006, MSCHWERN wrote: Show quoted text
> ActiveState makes a lot of changes to MakeMaker. Steal them. > > http://downloads.activestate.com/ActivePerl/src/5.8/AP819_diff.txt
Indeed. May I suggest to take a closer a look at their ExtUtils::Liblist::Kid modification? It's attached as a separate patch for convenience. This allows you to specify linker libraries with their full name and have MakeMaker not eat them. This is a good thing on, for example, cygwin where you need to specify every dependency at link time but where Kid.pm's unix branch is used. On a more general note, I wonder why Kid.pm doesn't just pass unrecognized linker flags along unaltered. This would get rid of problems like the ones described in tickets 14505 and 32894.
--- Kid.pm.orig 2007-07-19 22:56:46.001000000 +0200 +++ Kid.pm 2008-03-30 00:34:47.000000000 +0100 @@ -82,6 +82,12 @@ sub _unix_os2_ext { next; } + if ($Config_libext && $thislib =~ /\Q$Config_libext\E$/) { + push @libs, $thislib unless $libs_seen{$thislib}++; + push(@ldloadlibs, $thislib); + next; + } + # Handle possible library arguments. unless ($thislib =~ s/^-l//){ warn "Unrecognized argument in LIBS ignored: '$thislib'\n";
I certainly encourage you to apply the Kid.pm.patch. The reason we applied this patch to ActivePerl is that we compile perl both statically and dynamically and install both libperl.a and libperl.so in the arch/CORE directory. With this setup we had the problem that "perl -MExtUtils::Embed -e ldopts" would not be able to generate references that linked against libperl.a, since -lperl always resolved to libperl.so. We would also be grateful if the other patches could be applied as well, since this avoids the problems that occur in ActivePerl when users upgrade ExtUtils::MakeMaker from the CPAN shell or with PPM. I'll try to break down the other changes we have into suitable chunks for you. Stay tuned ;)
The bulk of of ActivePerl changes are the support for generating HTML manpages, but this part needed quite a bit of rework to be generally applicable. I'll open a new bug to track that part.
On Sun Mar 30 16:35:24 2008, TSCH wrote: Show quoted text
> Indeed. May I suggest to take a closer a look at their > ExtUtils::Liblist::Kid modification? It's attached as a separate patch > for convenience. This allows you to specify linker libraries with their > full name and have MakeMaker not eat them. This is a good thing on, for > example, cygwin where you need to specify every dependency at link time > but where Kid.pm's unix branch is used. > > On a more general note, I wonder why Kid.pm doesn't just pass > unrecognized linker flags along unaltered. This would get rid of > problems like the ones described in tickets 14505 and 32894.
Here's an updated patch that makes linking to other XS modules work on cygwin with perl 5.10. In 5.10, perl stopped producing libFoo.dll.a, and now outputs only Foo.dll files. It's possible to directly link against them on cygwin.
--- C:/Cygwin/lib/perl5/5.10/ExtUtils/Liblist/Kid.pm.orig Sat Aug 02 14:58:45 2008 +++ C:/Cygwin/lib/perl5/5.10/ExtUtils/Liblist/Kid.pm Sat Aug 02 15:02:09 2008 @@ -81,6 +81,16 @@ next; } + # Handle fully-specified libraries + if (-f $thislib && + (($Config_libext && $thislib =~ /\Q$Config_libext\E$/) || + ($so && $thislib =~ /\Q$so\E$/))) + { + push @libs, $thislib unless $libs_seen{$thislib}++; + push(@ldloadlibs, $thislib); + next; + } + # Handle possible library arguments. unless ($thislib =~ s/^-l//){ warn "Unrecognized argument in LIBS ignored: '$thislib'\n";
As of perl 5.20.1, AS's changes to EUMM, as seen in http://downloads.activestate.com/ActivePerl/releases/5.20.1.2000/ActivePerl-5.20.1.2000-298557-diff.txt are nearly all related to generating HTML docs, aside from: diff -ruN perl-5.20.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm AP2000_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm --- perl-5.20.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm 2014-05-14 16:51:23.000000000 -0700 +++ AP2000_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm 2014-05-03 02:28:05.000000000 -0700 @@ -88,6 +88,10 @@ if ( $thislib =~ m!^-Wl,! ) { push( @extralibs, $thislib ); push( @ldloadlibs, $thislib ); + } + if ($Config_libext && $thislib =~ /\Q$Config_libext\E$/) { + push @libs, $thislib unless $libs_seen{$thislib}++; + push(@ldloadlibs, $thislib); next; } and: diff -ruN perl-5.20.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm AP2000_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm --- perl-5.20.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm 2014-05-14 16:51:23.000000000 -0700 +++ AP2000_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm 2014-05-03 02:28:06.000000000 -0700 @@ -31,8 +31,8 @@ $ENV{EMXSHELL} = 'sh'; # to run `commands` -my $BORLAND = $Config{'cc'} =~ /^bcc/i; -my $GCC = $Config{'cc'} =~ /^gcc/i; +my $BORLAND = $Config{'cc'} =~ /\bbcc\b/i; +my $GCC = $Config{'cc'} =~ /\bgcc\b/i; =item os_flavor and: diff -ruN perl-5.20.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm AP2000_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm --- perl-5.20.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm 2014-05-14 16:51:23.000000000 -0700 +++ AP2000_source/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm 2014-05-03 02:28:06.000000000 -0700 @@ -135,7 +135,7 @@ open( my $def, ">", "$data->{FILE}.def" ) or croak("Can't create $data->{FILE}.def: $!\n"); # put library name in quotes (it could be a keyword, like 'Alias') - if ($Config::Config{'cc'} !~ /^gcc/i) { + if ($Config::Config{'cc'} !~ /\bgcc\b/i) { print $def "LIBRARY \"$data->{DLBASE}\"\n"; } print $def "EXPORTS\n ";
On Wed Jan 07 17:14:00 2015, ETJ wrote: Show quoted text
> diff -ruN perl-5.20.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm
[...] Show quoted text
> diff -ruN perl-5.20.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm
[...] Incorporated as https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/commit/00ec4a3bfb6889b34f60cbcae5589218d180c0ae
RT-Send-CC: kaffeetisch [...] gmx.de
On Sun Aug 03 10:35:56 2008, TSCH wrote: Show quoted text
> Here's an updated patch that makes linking to other XS modules work on > cygwin with perl 5.10. In 5.10, perl stopped producing libFoo.dll.a, > and now outputs only Foo.dll files. It's possible to directly link > against them on cygwin.
Slightly after you posted this; could you tell me if the Liblist::Kid change is still needed? If so, I'll apply it.