Обсуждение: pgsql: Fix msvc builds for ActivePerl > 5.24
Fix msvc builds for ActivePerl > 5.24 From this version ActivePerl ships both a .lib and a .a file for the perl library, which our code would detect as there being no library available. Instead, we should pick the .lib version and use that. Report and suggested fix in bug #15065 Author: Heath Lord Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/7240962f8626ff09bb8f9e71ecdb074775bdd035 Modified Files -------------- src/tools/msvc/Mkvcbuild.pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
On Fri, Mar 02, 2018 at 11:42:32AM +0000, Magnus Hagander wrote: > Fix msvc builds for ActivePerl > 5.24 > --- a/src/tools/msvc/Mkvcbuild.pm > +++ b/src/tools/msvc/Mkvcbuild.pm > @@ -524,9 +524,11 @@ sub mkvcbuild > my $perl_path = $solution->{options}->{perl} . '\lib\CORE\*perl*'; > > # ActivePerl 5.16 provided perl516.lib; 5.18 provided libperl518.a > + # Starting with ActivePerl 5.24, both perlnn.lib and libperlnn.a are provided. > + # In this case, prefer .lib. Sounds reasonable, but ... > my @perl_libs = > grep { /perl\d+\.lib$|libperl\d+\.a$/ } glob($perl_path); > - if (@perl_libs == 1) > + if (@perl_libs > 0) > { > $plperl->AddLibrary($perl_libs[0]); > } ... the behavior doesn't match the comment. By default, glob() sorts by ASCII value, so @perl_libs = qw(libperl524.a perl524.lib).
On Sat, Mar 3, 2018 at 9:00 AM, Noah Misch <noah@leadboat.com> wrote:
On Fri, Mar 02, 2018 at 11:42:32AM +0000, Magnus Hagander wrote:
> Fix msvc builds for ActivePerl > 5.24
> --- a/src/tools/msvc/Mkvcbuild.pm
> +++ b/src/tools/msvc/Mkvcbuild.pm
> @@ -524,9 +524,11 @@ sub mkvcbuild
> my $perl_path = $solution->{options}->{perl} . '\lib\CORE\*perl*';
>
> # ActivePerl 5.16 provided perl516.lib; 5.18 provided libperl518.a
> + # Starting with ActivePerl 5.24, both perlnn.lib and libperlnn.a are provided.
> + # In this case, prefer .lib.
Sounds reasonable, but ...
> my @perl_libs =
> grep { /perl\d+\.lib$|libperl\d+\.a$/ } glob($perl_path);
> - if (@perl_libs == 1)
> + if (@perl_libs > 0)
> {
> $plperl->AddLibrary($perl_libs[0]);
> }
... the behavior doesn't match the comment. By default, glob() sorts by ASCII
value, so @perl_libs = qw(libperl524.a perl524.lib).
Not being a perl guy, I've committed what I think is a correct fix.
Thanks for the spot!
--
Thanks for the spot!