2
votes

I seem to be having some issues trying to install the signatures module from CPAN using Strawberry Perl 5.10.1 on Windows XP.

I get some "undefined reference" errors during linking. I'm guessing that there is something wrong with my B::Hooks::Parser module, but reinstalling that one didn't fix my problem.

Here's the output:

cpan shell -- CPAN exploration and modules installation (v1.9452) Enter
'h' for help.

cpan> install signatures Database was generated on Wed, 25 Nov 2009 20:22:23 GMT 

Running install for module 'signatures' 
Running make for F/FL/FLORA/signatures-0.06.tar.gz
Checksum for C:\strawberry\cpan\sources\authors\id\F\FL\FLORA\signatures-0.06.tar.gz ok Scanning cache C:\strawberry\cpan\build for sizes
............................................................................DONE

  CPAN.pm: Going to build F/FL/FLORA/signatures-0.06.tar.gz

Cannot determine perl version info from lib/signatures.pm 
Checking if your kit is complete... 
Looks good 
Writing Makefile for signatures cp lib/signatures.pm blib\lib/signatures.pm
C:\strawberry\perl\bin\perl.exe "-Iinc" C:\strawberry\perl\lib\ExtUtils\xsubpp
-typemap C:\strawberry\perl\lib\ExtUtils \typemap  signatures.xs > signatures.xsc &&
C:\strawberry\perl\bin\perl.exe "-Iinc" -MExtUtils::Command -e "mv" --
signatures.xsc signatures.c gcc -c 
-IC:\strawberry\perl\site\lib\B\Hooks\OP\Check\Install
-IC:\strawberry\perl\site\lib\B\Hooks\Parser\Install
-IC: \strawberry\perl\site\lib\B\Hooks\OP\PPAddr\Install
-s -O2 -DWIN32 -DHAVE_DES_FCRYPT -DUSE_SITECUSTOMIZE -DPERL_IMPL ICIT_CONTEXT -DPERL_IMPLICIT_SYS
-fno-strict-aliasing -DPERL_MSVCRT_READFIX -s -O2        -DVERSION=\"0.06\"    -DXS_VER SION=\"0.06\" 
"-IC:\strawberry\perl\lib\CORE" signatures.c 
Running Mkbootstrap for signatures ()
C:\strawberry\perl\bin\perl.exe "-Iinc" -MExtUtils::Command -e "chmod"
-- 644 signatures.bs C:\strawberry\perl\bin\perl.exe
"-Iinc" -MExtUtils::Mksymlists \
     -e "Mksymlists('NAME'=>\"signatures\",
'DLBASE' => 'signatures', 'DL_FUNCS'
=> {  }, 'FUNCLIST' => [], 'IMPORTS' =>  {  }, 'DL_VARS' => []);" dlltool --def signatures.def --output-exp dll.exp g++ -o
blib\arch\auto\signatures\signatures.dll
-Wl,--base-file -Wl,dll.base -mdll -s -L"C:\strawberry\perl\lib\CORE" -L "C:\strawberry\c\lib" signatures.o
-Wl,--image-base,0x121d0000  C:\strawberry\perl\lib\CORE\libperl510.a
C:\strawberry\perl\site\lib\auto\B\Hooks\OP\Check\Check.a
C:\strawberry\perl\site\lib\auto\B\Hooks\Parser\Parser.a
C:\strawberry\perl\site\lib\auto\B\Hooks\OP\PPAddr\PPAddr.a
C:\strawberry\c\lib\libmoldname.a
C:\strawberry\c\lib\libkernel32.a
C:\strawberr y\c\lib\libuser32.a
C:\strawberry\c\lib\libgdi32.a
C:\strawberry\c\lib\libwinspool.a
C:\strawberry\c\lib\libcomdlg32.a 
C:\strawberry\c\lib\libadvapi32.a
C:\strawberry\c\lib\libshell32.a
C:\strawberry\c\lib\libole32.a
C:\strawberry\c\lib\lib oleaut32.a
C:\strawberry\c\lib\libnetapi32.a
C:\strawberry\c\lib\libuuid.a
C:\strawberry\c\lib\libws2_32.a
C:\strawberry \c\lib\libmpr.a
C:\strawberry\c\lib\libwinmm.a
C:\strawberry\c\lib\libversion.a
C:\strawberry\c\lib\libodbc32.a
C:\strawberry\c\lib\libodbccp32.a
dll.exp
signatures.o:signatures.c:(.text+0x23c):undefined reference to `hook_toke_skipspace'
signatures.o:signatures.c:(.text+0x2b1):undefined reference to `hook_toke_skipspace'
signatures.o:signatures.c:(.text+0x34b):undefined reference to `hook_toke_scan_word'
signatures.o:signatures.c:(.text+0x4b9):undefined reference to `hook_toke_skipspace'
signatures.o:signatures.c:(.text+0x4e2):undefined reference to `hook_toke_scan_str'
signatures.o:signatures.c:(.text+0x4f5):undefined reference to `hook_parser_get_lex_stuff'
signatures.o:signatures.c:(.text+0x508):undefined reference to `hook_parser_clear_lex_stuff'
signatures.o:signatures.c:(.text+0x696):undefined reference to `hook_toke_skipspace'
signatures.o:signatures.c:(.text+0x6cd):undefined reference to `hook_parser_get_linestr'
signatures.o:signatures.c:(.text+0x8f2):undefined reference to `hook_toke_skipspace'
signatures.o:signatures.c:(.text+0x966):undefined reference to `hook_toke_scan_word'
signatures.o:signatures.c:(.text+0x9b3):undefined reference to `hook_toke_skipspace'
signatures.o:signatures.c:(.text+0x9f7):undefined reference to `hook_toke_scan_str'
signatures.o:signatures.c:(.text+0xa0a):undefined reference to `hook_parser_get_lex_stuff'
signatures.o:signatures.c:(.text+0xa1d):undefined reference to `hook_parser_clear_lex_stuff'
signatures.o:signatures.c:(.text+0xda4):undefined reference to `hook_parser_setup'
signatures.o:signatures.c:(.text+0xf89):undefined reference to `hook_parser_teardown' collect2: ld
returned 1 exit status dmake.EXE: 
Error code 129, while making 'blib\arch\auto\signatures\signatures.dll'
FLORA/signatures-0.06.tar.gz  
C:\strawberry\c\bin\dmake.EXE -- NOT OK 
Running make test   Can't test without successful make 
Running make install   Make had returned bad status, install seems impossible
Failed during this command: FLORA/signatures-0.06.tar.gz          
: make NO

I also did an 'nm' on my Parser.a library (in perl/site/auto/B/Hooks/parser) and I didn't find any symbols containing 'hook'

Has anyone else experienced this problem? Or did anyone else succeed in installing the signatures module?

1
You should report this bug here: rt.cpan.org/Public/Dist/Display.html?Name=signatures . Cpantesters results by OS by OS are available here: matrix.cpantesters.org/?dist=signatures+0.06Alexandr Ciornii
You're right, I should have posted it there. I'll do that as soon as I can! I find it funny though that perl 5.8 does not seem to have this problem (according to the test matrix) while I can't find any perl-version specific stuff in either module.ldx

1 Answers

1
votes

I can't fix it for you, but you're not the only one having this problem. There is a failure report by one of the heroic CPAN testers. My wild shot would be that if such missing symbols occur on win32, it's because the module is using non-exported symbols which get exposed on, say, Linux because things are a little less strict there. I don't have the sources handy to check, though.

Either way, it seems it's not something that's wrong on your system. It's something that needs fixing in the source. One of them.