Re: pl/perl extension fails on Windows
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Sandeep Thakkar <sandeep.thakkar@enterprisedb.com>
Cc: Christoph Berg <myon@debian.org>, Tom Lane <tgl@sss.pgh.pa.us>, Ashutosh Sharma <ashu.coek88@gmail.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2017-08-09T20:25:26Z
Lists: pgsql-hackers
On Tue, Aug 8, 2017 at 12:15 PM, Sandeep Thakkar <sandeep.thakkar@enterprisedb.com> wrote: > I copied and pasted that portion of the build log into file build.log > (attached) for Windows 32bit and Windows 64bit. Can you also share the output of 'perl -V' on each system? Comparing the 32-bit log and the 64-bit log, I see the following differences: 32-bit has extra options /IC:\pgBuild32\uuid\include /Oy- /analyze- /D _USE_32BIT_TIME_T 64-bit has extra options /D WIN64 /D CONSERVATIVE /D USE_SITECUSTOMIZE Both builds have several copies of /IC:\pgBuild32\include or /IC:\pgBuild64\include, but the 64-bit build has an extra one (I wrote that command on Linux, might need different quoting to work on Windows.) I'm suspicious about _USE_32BIT_TIME_T. The contents of a PerlInterpreter are defined in Perl's intrpvar.h, and one of those lines is: PERLVAR(I, basetime, Time_t) /* $^T */ Now, Time_t is defined as time_t elsewhere in the Perl headers, so if the plperl build and the Perl interpreter build had different ideas about whether that flag was set, the interpreter sizes would be different. Unfortunately for this theory, if I'm interpreting the screenshot you posted correctly, the sizes are different by exactly 16 bytes, and I can't see how a difference in the size of time_t could account for more than 8 bytes (4 bytes of actual size change + 4 bytes of padding). -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
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