[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: DynaLoader issue with perl 5.12 on armhf when using fakechroot



On Sun, Jun 19, 2011 at 10:31:40AM +0200, Johannes Schauer wrote:
 
> Please CC me as I'm not subscribed to the debian-perl list.

Done.

> josch@hoothoot> fakeroot fakechroot chroot debian-sid-armhf perl -e "use fields;fields::new();"
> Hash::Util object version 0.07 does not match bootstrap parameter 0 at /usr/lib/perl/5.12/DynaLoader.pm line 215.
> Compilation failed in require at /usr/share/perl/5.12/fields.pm line 122.

> I so far failed to locate the source of this error but hopefully somebody finds
> that issue interesting enough to give me a few pointers or can tell me to whom
> else direct my issue.

The error source is the XS_VERSION_BOOTCHECK macro in XSUB.h.

If I read the code correctly, it's comparing the floating point number
given to DynaLoader::bootstrap() in Hash/Util.pm against the XS_VERSION
definition passed to the gcc in the Perl build; from the armhf build
log of perl 5.12.3-7 [1]:

 cc -c   -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"0.07\" -DXS_VERSION=\"0.07\" -fPIC "-I../.."  -DPERL_EXT Util.c

It looks like the bootstsrap() argument gets truncated to 0 somehow.

I can't see how this could happen and what it has to do with fakechroot,
but floating point conversions are involved and the XSUB.h code changed
quite a bit between 5.10 and 5.12.

[1] http://buildd.debian-ports.org/status/fetch.php?pkg=perl&arch=armhf&ver=5.12.3-7&stamp=1305881838

Hope this helps a bit,
-- 
Niko Tyni   ntyni@debian.org


Reply to: