Re: Perl 5.13.3+ MAY BREAK COMPILED DRIVERS - Please test DBI 1.613_71!

Jonathan Leffler <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.sybase.devel
Message-ID <[email protected]>
OK - I'm an idiot (and you knew that already), but...

Where do I download DBI 1.613_71 from?  I go the DBI 1.613 page at
search.cpan.org and click on the link that says "download the latest dev
build" which is identifies as 1.613_71, but it goes to a 404 page.  So,
please can someone enlighten me on what the current procedure is - as you
can tell, I do not often go to CPAN to collect non-release versions of
anything.

Also, what are the symptoms that there are going to be problems?  I can find
nothing that looks like PERL_POLLUTE in the Makefiles or build process I
have - there is an "MPOLLUTE =" in one Makefile.  Does that mean that I
(meaning DBD::Informix) don't use PERL_POLLUTE, or is there something else?
There are lines like:

Informix.c:    ST(0) = (av) ? sv_2mortal(newRV((SV *)av)) : &sv_undef;
Informix.c:    else ST(0) = &sv_undef;
Informix.xsi:    ST(0) = (av) ? sv_2mortal(newRV((SV *)av)) : &sv_undef;
Informix.xsi:    else ST(0) = &sv_undef;

Do these require a PL_ prefix?  That prefix used to appear automagically,
didn't it - but is the trouble that the auto-magic is going away?  If I look
at the Perl 5.12.1 'perldoc perlguts', there is nothing there to indicate
that you do not continue to use SvIOK and sv_catpv() - pulling a couple of
names at quasi-random.  So, since the documentation doesn't indicate any
change there - and 'perldoc perlguts' does not contain 'pollute' or
'POLLUTE' - I think the change must be different from what I'm imagining.

On a different machine - one I use less often - with Perl 5.10.1, the build
command for Informix.o is:

gcc -m64 -c  -I/usr/informix/11.50.FC3/incl/esql
-I/usr/perl/v5.10.1-64bit/lib/5.10.1/sun4-solaris-64/auto/DBI
-I/usr/perl/v5.10.1-64bit/lib/site_perl/5.10.1/sun4-solaris-64/auto/DBI
-I/auto/DBI
-I/usr/perl/v5.10.1-64bit/lib/site_perl/5.10.1/sun4-solaris-64/auto/DBI
-fno-strict-aliasing -pipe -I/usr/gnu64/include -mcpu=v9 -m64
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV
-DPERL_USE_SAFE_PUTENV -O   -DVERSION=\"2008.0513\"
-DXS_VERSION=\"2008.0513\" -fPIC
"-I/usr/perl/v5.10.1-64bit/lib/5.10.1/sun4-solaris-64/CORE"
-DESQLC_VERSION=350 -DNDEBUG -DDO_NOT_USE_STDERR_H -DESQLC_IFX_LOC_T
Informix.c

I modified Informix.c to contain the following stanza after all the headers
and just before the first function definition:

#ifdef PERL_POLLUTE
#error PERL_POLLUTE defined
#endif

I recompiled (several times - editing the Informix.c file after it was
generated and then running just the GCC compilation), and that '#error'
never fired.  Does that prove anything useful?  (That was Sun Solaris 10,
Perl 5.10.1, DBI 1.609, DBD::Informix 2008.0513 (the current version of
DBD::Informix).)

nm -g Informix.o | grep undef
[215]   |             0|           0|NOTY |GLOB |0    |UNDEF  |PL_sv_undef


So, there is a mapping going on with this version - does that tell me
anything?

(I've periodically had people have problems building DBD::Informix and
PL_sv_xxx symbols figured in the bug reports; I was never able to reproduce
them reliably.  Does that indicate anything?)

On Fri, Aug 27, 2010 at 1:53 PM, Tim Bunce <[email protected]> wrote:

> Short version:
>
> Please download build test *and install* DBI 1.613_71, then download build
> and test any compiled drivers you use to check they work with DBI 1.613_71.
>
> Let us know about any failures *and* successes.
>
> Also grep the source code of the driver to see if it defines
> PERL_POLUTE. If it does, let us know.
>
> Long version:
>
> Perl 5.13.3+ removes support for PERL_POLUTE. PERL_POLUTE enables use of
> old-style variables names, without the PL_ prefix (e.g. sv_undef instead
> of PL_sv_undef).
>
> The DBI has, for many years, enabled PERL_POLUTE mode in DBIXS.h, so
> it's likely that compiled drivers are use some old-style variables names.
> These drivers won't work with Perl 5.13.3+.
>
> To aid testing for this, the DBI 1.613_71 doesn't enabled PERL_POLUTE mode.
>
> So please test compiled drivers against DBI 1.613_71.
>
> Thanks!
>
> Tim.
>



-- 
Jonathan Leffler <[email protected]>  #include <disclaimer.h>
Guardian of DBD::Informix - v2008.0513 - http://dbi.perl.org
"Blessed are we who can laugh at ourselves, for we shall never cease to be
amused."
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.