in reply to Re^2: Perl Debug Build
in thread Perl Debug Build
Please run the following command to find out where the Scalar/Util.pm is being loaded from, and if the corresponding Util.so is found:
$ PERL_CORE=1 tusc ./perl ext/Storable/t/weak.t | grep Util
This must be run from the main build directory, where the perl binary is located.
The normal output from this - with a fully functioning Scalar::Util - would look like this:
stat64("./Scalar/Util.pmc", 0x7fffdf30) ............. ... ERR#2 ENOENT stat64("./Scalar/Util.pm", 0x7fffdeb0) .............. ... ERR#2 ENOENT stat64("../lib/Scalar/Util.pmc", 0x7fffdf30) ........ ... ERR#2 ENOENT stat64("../lib/Scalar/Util.pm", 0x7fffdeb0) ......... ... = 0 open("../lib/Scalar/Util.pm", O_RDONLY|0x800, 0666) . ... = 4 stat64("./List/Util.pmc", 0x7fffdf30) ............... ... ERR#2 ENOENT stat64("./List/Util.pm", 0x7fffdeb0) ................ ... ERR#2 ENOENT stat64("../lib/List/Util.pmc", 0x7fffdf30) .......... ... ERR#2 ENOENT stat64("../lib/List/Util.pm", 0x7fffdeb0) ........... ... = 0 open("../lib/List/Util.pm", O_RDONLY|0x800, 0666) ... ... = 4 stat64("../lib/auto/List/Util/Util.so", 0x40011090) . ... = 0 stat64("../lib/auto/List/Util/Util.bs", 0x40011090) . ... = 0 open("../lib/auto/List/Util/Util.so", O_RDONLY, 0) .. ... = 4 open("../lib/auto/List/Util/Util.so", O_RDONLY, 0) .. ... = 4
In case you don't get any output, make sure you can run the test itself (without tusc), i.e.
$ PERL_CORE=1 ./perl ext/Storable/t/weak.t
Alternatively, you could try to just load the module Scalar::Util and import weaken (output should be similar to above):
$ tusc ./perl -I./lib -MScalar::Util=weaken -e1 | grep Util
And if you find that you do have a Util.so, you might want to check whether it has been compiled properly (contains the required symbols):
$ nm ./lib/auto/List/Util/Util.so | grep weak + [77] | 0| 0|FUNC |GLOB |0| UNDEF|Perl_sv_rvweak +en [102] | 67145504| 384|FUNC |GLOB |0| .text|XS_Scalar__Uti +l_isweak [66] | 67145184| 288|FUNC |GLOB |0| .text|XS_Scalar__Uti +l_weaken
Also (just in case) you could check for other perls:
$ find /opt/perl* -path "*bin/perl" $ find /opt/perl* -path "*bin/perl" -exec {} -v \; | grep 'is perl'
...because at least the code from Perl's Configure, which populates @inc_version_list, apparently did find directories for versions from 5.8.0 all through to 5.8.7. This doesn't necessarily mean that all those are full installations, but it's at least a hint that there are - or have been - other versions of Perl on that machine, which might interfere under some circumstances (like PERL5LIB being set)...
|
|---|