Re: BUG #15065: ActivePerl 5.24.3 breaks PG compilation on Windows

From: Heath Lord <heath(dot)lord(at)crunchydata(dot)com>
To: Heath Lord <heath(dot)lord(at)crunchydata(dot)com>, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #15065: ActivePerl 5.24.3 breaks PG compilation on Windows
Date: 2018-02-14 13:27:09
Message-ID: CA+BEBhtfeb4b3TGC3rnsDSF9WCTC47f00oDXKbgT4+CwRCk3Aw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Wed, Feb 14, 2018 at 8:19 AM, PG Bug reporting form <
noreply(at)postgresql(dot)org> wrote:

> The following bug has been logged on the website:
>
> Bug reference: 15065
> Logged by: Heath Lord
> Email address: heath(dot)lord(at)crunchydata(dot)com
> PostgreSQL version: 9.6.7
> Operating system: Windows
> Description:
>
> With the latest release of ActivePerl 5.24.3 they are installing both a
> .a and a .lib with their installation. While this normally wouldn't be an
> issue, the logic that is being used in the PG source checks for one or the
> other and if it finds both it will fail with an error stating that it could
> not find them.
> In the postgres/src/tools/msvc/Mkvcbuild.pm file the following logic
> exists:
>
> # ActivePerl 5.16 provided perl516.lib; 5.18 provided libperl518.a
> my @perl_libs =
> grep { /perl\d+\.lib$|libperl\d+\.a$/ }
> glob($perl_path);
> if (@perl_libs == 1)
> {
> $plperl->AddLibrary($perl_libs[0]);
> }
>
> The issue is that with the latest ActivePerl release the if statement
> results in a value of 2 which causes this to fail and it falls through to
> the else which is the failure case. This causes all of the Windows builds
> to fail if using the latest version of ActivePerl.
> There are two possible solutions that I am proposing:
>
> 1) [msvc_perl_lib_check_for_two_use_second.patch]
> Add an elsif clause and check if @perl_libs is 2 and then use
> the libperl###.a which I have tested and everything compiles fine and
> passes
> all tests.
>
> 2) [msvc_perl_lib_check_inclusive_use_first_found.patch]
> Change the if statement to check for 1 or more perl libs found and
> then always use the first one that was found. I have also built and tested
> that this passes all regression.
>
> Both of these options work and have been built and tested. The
> resulting
> generated binaries are of identical size as well.
>
> I am not sure given the fact that this breaks all windows builds using
> this version of ActivePerl if this change needs to be backpatched or not?
> Thank you in advance for any help or assistance given to get one of these
> fixes into the PG code base.
>
> I will be attaching the patches referenced above in a follow up reply
> after the bug has been submitted.
>
> -Heath
>
>
I am attaching the patch files that I have referenced above for your
review. Thank you.

-Heath

Attachment Content-Type Size
msvc_perl_lib_check_for_two_use_second.patch application/octet-stream 767 bytes
msvc_perl_lib_check_inclusive_use_first_found.patch application/octet-stream 847 bytes

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message PG Bug reporting form 2018-02-14 14:10:39 BUG #15066: Index size on column of nulls
Previous Message PG Bug reporting form 2018-02-14 13:19:35 BUG #15065: ActivePerl 5.24.3 breaks PG compilation on Windows