Re: pl/perl extension fails on Windows
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Dave Page <dpage@postgresql.org>
Cc: Sandeep Thakkar <sandeep.thakkar@enterprisedb.com>,
Ashutosh Sharma <ashu.coek88@gmail.com>,
Robert Haas <robertmhaas@gmail.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2017-08-17T16:15:58Z
Lists: pgsql-hackers
I wrote:
> Short of declaring this version of Perl unsupported, the only answer
> I can think of is to put a kluge into the MSVC build scripts along
> the lines of "if it's 32-bit Windows, and the Perl version is before X,
> assume we need _USE_32BIT_TIME_T even if $Config{ccflags} doesn't
> say so". It would be nice to have some hard evidence about what X
> should be, but we don't know when ActiveState fixed this. (I poked
> around in their bugzilla, without success.)
Ah-hah: it wasn't ActiveState that fixed this at all; it was upstream
Perl. The stanza that Ashutosh found about defining _USE_32BIT_TIME_T
originated in Perl 5.13.4; older Perls simply don't provide it, no
matter how they were built.
We can now isolate the exact reason we're having trouble on baiji:
it's building Postgres with MSVC 2005, which by default will think
time_t is 64 bits, but it must be using a copy of Perl that was
built with an older Microsoft compiler that doesn't think that.
(Dave's "perl -V" output says ccversion='12.00.8804', but I don't
know how to translate that to the marketing version.) And since it's
pre-5.13.4, Perl itself doesn't know it should advertise this fact.
So it's now looking to me like we should do the above with X = 5.13.4.
That won't be a perfect solution, but it's about the best we can
readily do. Realistically, nobody out in the wider world is likely
to care about building current PG releases against such old Perl
versions on Windows; if we satisfy our older buildfarm critters,
it's enough for me.
regards, tom lane
Commits
-
MSVC: Test whether 32-bit Perl needs -D_USE_32BIT_TIME_T.
- 1886899420ce 9.3.21 landed
- aed8d41af628 9.4.16 landed
- 1c1a572d055f 9.5.11 landed
- 140fa2fbad94 9.6.7 landed
- 9b5c99790e83 10.2 landed
- 65a00f30352a 11.0 landed
-
Further tweaks to compiler flags for PL/Perl on Windows.
- f7e4783ddbef 9.2.23 landed
- bc4404405f21 9.3.19 landed
- 4f862351d20b 9.4.14 landed
- bff216d8789f 9.5.9 landed
- c343314882f1 9.6.5 landed
- 1d7a479d22f6 10.0 landed
- b5178c5d08ca 11.0 landed
-
Absorb -D_USE_32BIT_TIME_T switch from Perl, if relevant.
- e3335ec0b6a6 9.2.23 landed
- 5a5c2feca3fd 10.0 landed
- 3883be3eae97 9.6.5 landed
- 25169b948e13 9.3.19 landed
- 1621a75531c8 9.5.9 landed
- 01de7ea85378 9.4.14 landed
-
PL/Perl portability fix: absorb relevant -D switches from Perl.
- df52739ce3e7 9.5.8 landed
- 9cbdc689418b 9.4.13 landed
- 456c7dff2af1 9.2.22 landed
- 1e58c503ec46 9.6.4 landed
- 0d8f015e7726 9.3.18 landed
- 3c163a7fc76d 10.0 landed
-
PL/Perl portability fix: avoid including XSUB.h in plperl.c.
- d48180ec812d 9.4.13 landed
- b92f17277eb9 9.3.18 landed
- b4b958251fbf 9.2.22 landed
- 99eea89dbe31 9.5.8 landed
- 30a5c8bfbd7b 9.6.4 landed
- bebe174bb446 10.0 landed