Bug#482139: perl: Fails to verify long module versions

Niko Tyni ntyni at debian.org
Wed Apr 29 19:39:06 UTC 2009


severity 482139 minor
thanks

On Wed, May 21, 2008 at 12:59:50AM +0200, Sebastian Harl wrote:
> Package: perl
> Version: 5.10.0-10
> Severity: normal
 
> While testing a release candidate of rrdtool 1.3, which uses a quite
> long version number (1.299908051800), I stumped across the following
> error message:
> 
>   RRDs object version 1.2999080518 does not match bootstrap parameter
>   1.299908052 at /usr/lib/perl/5.10/DynaLoader.pm line 219.
> 
> Obviously, the macro XS_VERSION_BOOTCHECK (defined in XSUB.h) treats the
> object version differently from the bootstrap parameter in regard to
> precision.

It works if $VERSION is quoted in RRDs.pm:

-$VERSION=1.299907080300;
+$VERSION="1.299907080300";

The difference is in Perl_upg_version(), called via Perl_new_version()
from the XS_VERSION_BOOTCHECK macro. Perl_upg_version() converts a
double value (NV) to a string with nine decimals while leaving a string
value intact.

This seems to be a documentation problem or at most a real bug with an
easy workaround, so lowering the severity.

Assuming the behaviour is intentional and just needs documentation,
it's a bit hard to say where that should go. DynaLoader doesn't actually
know anything about the version comparison - the boot_<module> function
containing the XS_VERSION_BOOTCHECK call is generated by ExtUtils::ParseXS
via xsubpp.

The attached patch adds a note about this in perlxs.pod, in the
'VERSIONCHECK' context. I'll send this upstream.

Cheers,
-- 
Niko Tyni   ntyni at debian.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 482139.patch
Type: text/x-diff
Size: 656 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/perl-maintainers/attachments/20090429/5e53c350/attachment.patch>


More information about the Perl-maintainers mailing list