bart has asked for the wisdom of the Perl Monks concerning the following question:
Running CPAN.pm trying to "(n)make test" on Scalar-List-Utils-1.18, on [http://pxperl.com|PXPerl with MinGW's port of gcc 3.2.3, I get the following output (I stripped the irrelevant stuff, like listing the contents of the archive):
cp lib/List/Util.pm blib\lib\List\Util.pm cp lib/Scalar/Util.pm blib\lib\Scalar\Util.pm D:\PXPerl\bin\perl.exe -Iinc D:\PXPerl\lib\ExtUtils/xsubpp -t +ypemap D:\ PXPerl\lib\ExtUtils\typemap Util.xs > Util.xsc && D:\PXPerl\bin\perl. +exe -Iinc -MExtUtils::Command -e mv Util.xsc Util.c gcc -c -g -O3 -fno-strict-aliasing -Wall -Wno-comment -DWIN +32 -D_CONS OLE -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLI +CIT_SYS -D USE_PERLIO -DPERL_MSVCRT_READFIX -DVERSION=\"1.18\" -DXS_VERSION= +\"1.18\" - DHASATTRIBUTE "-ID:\PXPerl\lib\CORE" -DPERL_EXT Util.c Running Mkbootstrap for List::Util () D:\PXPerl\bin\perl.exe -Iinc -MExtUtils::Command -e chmod 644 +Util.bs D:\PXPerl\bin\perl.exe -Iinc -MExtUtils::Mksymlists -e "Mksym +lists('NAM E'=>\"List::Util\", 'DLBASE' => 'Util', 'DL_FUNCS' => { }, 'FUNCLIST' + => [], 'I MPORTS' => { }, 'DL_VARS' => []);" dlltool --def Util.def --output-exp dll.exp gcc -o blib\arch\auto\List\Util\Util.dll -Wl,--base-file -Wl,d +ll.base -m dll -s -LD:\PXPerl\lib\CORE Util.o -Wl,--image-base,0x7b100000 D:\PXP +erl\lib\CO RE\libperl58.a -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcom +dlg32 -lad vapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr - +lwinmm -lv ersion -lodbc32 -lodbccp32 -lshlwapi -lstdc++ dll.exp Util.o(.text+0x1f60): In function `XS_List__Util_shuffle': D:/PXPerl/.cpan/build/Scalar-List-Utils-1.18/Util.xs:333: undefined re +ference to `Perl_seed' NMAKE : fatal error U1077: 'C:\WINDOWS\system32\cmd.exe' : return code + '0x1' Stop. nmake -- NOT OK Running make test Can't test without successful make
I believe this is one of the functions from perl58.lib that is supposed to be available for the linker, but for some reason, it isn't. I've seen the same behaviour, for different symbols, in other modules. What's really weird is that this module, obviously, builds succesfully on other platforms. So, what's going on?D:/PXPerl/.cpan/build/Scalar-List-Utils-1.18/Util.xs:333: undefined re +ference to `Perl_seed'
I've tried the same test build on ActivePerl 5.8.8 with MinGW. (Yes I know ActivePerl 5.8.8 comes with Scalar-List-Utils-1.18. This is just a test, mmmkay?) Now the results there are really puzzling.
CPAN.pm: Going to build G/GB/GBARR/Scalar-List-Utils-1.18.tar.gz Undefined subroutine &ActivePerl::Config::find_prog called at C:/Perl/ +site/lib/A ctivePerl/Config.pm line 70. Compilation failed in require at C:/Perl/lib/ExtUtils/MakeMaker.pm lin +e 7. BEGIN failed--compilation aborted at C:/Perl/lib/ExtUtils/MakeMaker.pm + line 7. Compilation failed in require at inc/Module/Install/Can.pm - /home/gba +rr/perl/Mo dule/Install/Can.pm line 8. BEGIN failed--compilation aborted at inc/Module/Install/Can.pm - /home +/gbarr/per l/Module/Install/Can.pm line 8. Compilation failed in require at inc/Module/Install.pm - /home/gbarr/p +erl/Module /Install.pm line 267. The 'can_cc' method does not exist in the 'inc' path! Please remove the 'inc' directory and run Makefile.PL again to load it +. Running make test Make had some problems, maybe interrupted? Won't test cpan>
and further up, it contains the lineif ($^O eq "MSWin32" && !find_prog(_orig_conf("cc"))) {
In ActiveState::Path, find_prog is a plain and simple Perl sub. Both these modules seem to work normally, when I invoke them from the command line. Nothing weird in either. Neither depend on the module that I'm trying to build, which could have been a possible explanation. And yes, other XS modules appear to build normally.use ActiveState::Path qw(find_prog realpath);
I'd like some hints as to what is going on, and maybe get some help to construct proper bug reports.
|
|---|