Skip Menu |

This queue is for tickets about the B-Utils CPAN distribution.

Report information
The Basics
Id: 69969
Status: resolved
Priority: 0/
Queue: B-Utils

People
Owner: Nobody in particular
Requestors: CHORNY [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in: (no value)
Fixed in: (no value)



Subject: fails on WIndows and Cygwin
See http://matrix.cpantesters.org/?dist=B-Hooks-OP-Check-EntersubForCV+0.06 Windows+gcc on perl 5.14.0: EntersubForCV.o:EntersubForCV.c:(.text+0x23c): undefined reference to `BUtils_cc_opclassname' -- Alexandr Ciornii, http://chorny.net
Subject: Re: [rt.cpan.org #69969] fails on WIndows and Cygwin
Date: Sat, 10 Sep 2011 22:47:45 +0100
To: bug-B-Hooks-OP-Check-EntersubForCV [...] rt.cpan.org
From: Zefram <zefram [...] fysh.org>
Need more information. The XS link stage on Win32 needs to refer to the libraries from which symbols are being imported, and it appears that that's failing here. ExtUtils::Depends is meant to handle that, and B-Hooks-OP-Check-EntersubForCV appears to invoke it correctly to declare the dependency on B::Utils. Please show a full build trace, including compile and link command lines. Also check whether the installed B::Utils object actually includes the symbol in question. -zefram
On Sat Sep 10 17:47:58 2011, zefram@fysh.org wrote: Show quoted text
> Please show a full build trace, > including compile and link command lines.
cp build/IFiles.pm blib\arch/B\Hooks\OP\Check\EntersubForCV/Install/Files.pm cp hook_op_check_entersubforcv.h blib\arch/B\Hooks\OP\Check\EntersubForCV/Install/hook_op_check_entersubforcv.h cp lib/B/Hooks/OP/Check/EntersubForCV.pm blib\lib/B/Hooks/OP/Check/EntersubForCV.pm C:\strawberry514\perl\bin\perl.exe "-Iinc" C:\strawberry514\perl\lib\ExtUtils\xsubpp -typemap C:\strawberry514\perl\lib\ExtUtils\typemap -typemap C:\strawberry514\perl\site\lib\B\Utils\Install\typemap EntersubForCV.xs Show quoted text
> EntersubForCV.xsc && C:\strawberry514\perl\bin\perl.exe "-Iinc"
-MExtUtils::Command -e "mv" -- EntersubForCV.xsc EntersubForCV.c gcc -c -IC:\strawberry514\perl\site\lib\B\Hooks\OP\Check\Install -IC:\strawberry514\perl\site\lib\B\Utils\Install -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -mms-bitfields -s -O2 -DVERSION=\"0.06\" -DXS_VERSION=\"0.06\" "-IC:\strawberry514\perl\lib\CORE" EntersubForCV.c Running Mkbootstrap for B::Hooks::OP::Check::EntersubForCV () C:\strawberry514\perl\bin\perl.exe "-Iinc" -MExtUtils::Command -e "chmod" -- 644 EntersubForCV.bs C:\strawberry514\perl\bin\perl.exe "-Iinc" -MExtUtils::Mksymlists \ -e "Mksymlists('NAME'=>\"B::Hooks::OP::Check::EntersubForCV\", 'DLBASE' => 'EntersubForCV', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);" dlltool --def EntersubForCV.def --output-exp dll.exp g++ -o blib\arch\auto\B\Hooks\OP\Check\EntersubForCV\EntersubForCV.dll -Wl,--base-file -Wl,dll.base -mdll -s -L"C:\strawberry514\perl\lib\CORE" -L"C:\strawberry514\c\lib" EntersubForCV.o C:\strawberry514\perl\lib\CORE\libperl514.a C:\strawberry514\perl\site\lib\auto\B\Hooks\OP\Check\Check.a C:\strawberry514\perl\site\lib\auto\B\Utils\Utils.a C:\strawberry514\c\i686-w64-mingw32\lib\libmoldname.a C:\strawberry514\c\i686-w64-mingw32\lib\libkernel32.a C:\strawberry514\c\i686-w64-mingw32\lib\libuser32.a C:\strawberry514\c\i686-w64-mingw32\lib\libgdi32.a C:\strawberry514\c\i686-w64-mingw32\lib\libwinspool.a C:\strawberry514\c\i686-w64-mingw32\lib\libcomdlg32.a C:\strawberry514\c\i686-w64-mingw32\lib\libadvapi32.a C:\strawberry514\c\i686-w64-mingw32\lib\libshell32.a C:\strawberry514\c\i686-w64-mingw32\lib\libole32.a C:\strawberry514\c\i686-w64-mingw32\lib\liboleaut32.a C:\strawberry514\c\i686-w64-mingw32\lib\libnetapi32.a C:\strawberry514\c\i686-w64-mingw32\lib\libuuid.a C:\strawberry514\c\i686-w64-mingw32\lib\libws2_32.a C:\strawberry514\c\i686-w64-mingw32\lib\libmpr.a C:\strawberry514\c\i686-w64-mingw32\lib\libwinmm.a C:\strawberry514\c\i686-w64-mingw32\lib\libversion.a C:\strawberry514\c\i686-w64-mingw32\lib\libodbc32.a C:\strawberry514\c\i686-w64-mingw32\lib\libodbccp32.a C:\strawberry514\c\i686-w64-mingw32\lib\libcomctl32.a dll.exp EntersubForCV.o:EntersubForCV.c:(.text+0x23c): undefined reference to `BUtils_cc_opclassname' collect2: ld returned 1 exit status dmake.EXE: Error code 129, while making 'blib\arch\auto\B\Hooks\OP\Check\EntersubForCV\EntersubForCV.dll' Show quoted text
> Also check whether the > installed B::Utils object actually includes the symbol in question.
If pexports is a right tool, it does not include: Show quoted text
>pexports.exe Utils.dll
LIBRARY dll.exp.dll EXPORTS _boot_B__Utils boot_B__Utils -- Alexandr Ciornii, http://chorny.net
Looks like the fault lies with B-Utils. It needs to declare its exported symbols with a FUNCLIST parameter to EU:MM. I've moved the ticket to the B-Utils queue. -zefram
On Sun Sep 11 15:28:44 2011, ZEFRAM wrote: Show quoted text
> Looks like the fault lies with B-Utils. It needs to declare its exported > symbols with a FUNCLIST parameter to EU:MM. I've moved the ticket to > the B-Utils queue. > > -zefram
please apply this patch. https://github.com/jbenjore/B-Utils/pull/1
Merged https://github.com/chorny/B-Utils/commit/e3ae48a2c50a854b1ce6787104353ee06a7dba8f to resolve. I don't have this kind of computer to test on so I'm trusting it works as advertised.