Re: [HACKERS] pl/perl extension fails on Windows
От | Andrew Dunstan |
---|---|
Тема | Re: [HACKERS] pl/perl extension fails on Windows |
Дата | |
Msg-id | bb3d3eb6-e310-471c-1d8c-d239ecaf52ad@2ndQuadrant.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] pl/perl extension fails on Windows (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: [HACKERS] pl/perl extension fails on Windows
|
Список | pgsql-hackers |
On 07/13/2017 10:36 AM, Tom Lane wrote: > Andrew Dunstan <andrew.dunstan@2ndquadrant.com> writes: >> On 07/13/2017 08:08 AM, Ashutosh Sharma wrote: >>> - dVAR; dXSBOOTARGSAPIVERCHK; >>> + dVAR; dXSBOOTARGSNOVERCHK; >> Good job hunting this down! >> One suggestion I saw in a little googling was that we add this to the XS >> file after the inclusion of XSUB.h: >> #undef dXSBOOTARGSAPIVERCHK >> #define dXSBOOTARGSAPIVERCHK dXSBOOTARGSNOVERCHK > I don't see anything even vaguely like that in the Util.c file generated > by Perl 5.10.1, which is what I've got on my RHEL machine. This is all fairly modern, so it's hardly surprising that it doesn't happen with the ancient perl 5.10. here's a snippet from the generated Util.c on crake (Fedora 25, perl 5.24): XS_EXTERNAL(boot_PostgreSQL__InServer__Util); /* prototype to pass -Wmissing-prototypes */ XS_EXTERNAL(boot_PostgreSQL__InServer__Util) { #if PERL_VERSION_LE(5, 21, 5) dVAR; dXSARGS; #else dVAR;dXSBOOTARGSAPIVERCHK; #endif > > What I do notice is this in Util.xs: > > VERSIONCHECK: DISABLE > > which leads immediately to two questions: > > 1. Why is your version of xsubpp apparently ignoring this directive > and generating a version check anyway? > > 2. Why do we have this directive in the first place? It does not seem > to me like a terribly great idea to ignore low-level version mismatches. > > In the same vein, I'm suspicious of proposals to "fix" this problem > by removing the version check, which seems to be where Ashutosh > is headed. In the long run that seems certain to cause huge headaches. That is a different version check. It's the equivalent of xsubpp's --noversioncheck flag. The versions it would check are the object file and the corresponding pm file. In fact the usage I suggested seems to be blessed in XSUB.h in this comment: /* dXSBOOTARGSNOVERCHK has no API in xsubpp to choose it so do #undef dXSBOOTARGSXSAPIVERCHK #define dXSBOOTARGSXSAPIVERCHKdXSBOOTARGSNOVERCHK */ It would be nice to get to the bottom of why we're getting a version mismatch on Windows, since we're clearly not getting one on Linux. But since we've got on happily all these years without the API version check we might well survive a few more going on as we are. cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
В списке pgsql-hackers по дате отправления: