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.
> 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 :
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.
Hope this helps a bit,
Niko Tyni email@example.com