2

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?

Deduplicator
  • 44,692
  • 7
  • 66
  • 118
ldx
  • 2,536
  • 2
  • 18
  • 27
  • 2
    You should report this bug here: http://rt.cpan.org/Public/Dist/Display.html?Name=signatures . Cpantesters results by OS by OS are available here: http://matrix.cpantesters.org/?dist=signatures+0.06 – Alexandr Ciornii Nov 25 '09 at 22:06
  • 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 Nov 26 '09 at 11:38

1 Answers1

1

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.

tsee
  • 5,034
  • 1
  • 19
  • 27
  • You're right: B::Hooks::Parser only exports following symbols: hook_op_check_id hook_parser_setup (void) void hook_parser_teardown (hook_op_check_id id) const char *hook_parser_get_linestr (pTHX) IV hook_parser_get_linestr_offset (pTHX) hook_parser_set_linestr (pTHX_ const char *new_value) But on the other hand, the functions that I get an undefined reference on are declared in the Parser.h Header file, thus implying that they can be used. Funny... I'm not really clear on whether I should file this as a bugreport for the signatures module, or the B::Hooks::Parser module. – ldx Nov 26 '09 at 11:41
  • Considering their authors are the same person... either of them! – tsee Nov 26 '09 at 13:42