The latest version of Win32::API, marked v0.46, should now correctly install even from the CPAN shell. Finally!
There is a fair amount of work behind, but now it should build, test and install cleanly on all major platform and compiler combinations.
In short, the build of API_test.dll
is now gone. In the 0.46 package there's a pre-built library compiled with MSVC 6, that happens to work smoothly when loaded by any Win32::API flavour.
The test suite is now simpler and takes compiler/environment differences into account.
I directly tested it on:
Obviously there are lots of problems and improvements possible:
I don't know now when I'll find the time to go on with this work, but for now, have fun!
test COSIMO/Win32-API-0.46.tar.gz
in the CPAN shell on the two platforms I have available, and it kind of works... but both seem to fall over a secundary test somewhere. The same one.
Note that despite the failed test, nmake still says "OK".C:\Perl\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0, '..
\blib\lib', '..\blib\arch')" t/*.t
t/02_Callback....ok 1/8# Compiler name:cl
# Compiler version:12
# $^E=Het systeem kan de opgegeven omgevingsoptie niet vinden
t/02_Callback....dubious
Test returned status 5 (wstat 1280, 0x500)
DIED. FAILED test 8
Failed 1/8 tests, 87.50% okay
Failed Test Stat Wstat Total Fail Failed List of Failed
------------------------------------------------------------------------ -------
t/02_Callback.t 5 1280 8 2 25.00% 8
Failed 1/1 test scripts, 0.00% okay. 1/8 subtests failed, 87.50% okay.
NMAKE : fatal error U1077: 'C:\WINDOWS\system32\cmd.exe' : return code '0x5'
Stop.
nmake test -- OK
And notice how it goes searching for the wrong compiler: "cl", not "gcc", as perl -V:cc
does say:
cc='gcc';
D:\PXPerl\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0, '
..\blib\lib', '..\blib\arch')" t/*.t
t/02_Callback....ok 1/8# Compiler name:icl
# Compiler version:0
# $^E=
Free to wrong pool 222778 not e58b2778, <DATA> line 164.
t/02_Callback....dubious
Test returned status 5 (wstat 1280, 0x500)
after all the subtests completed successfully
Failed Test Stat Wstat Total Fail Failed List of Failed
------------------------------------------------------------------------ -------
t/02_Callback.t 5 1280 8 0 0.00% ??
1 subtest skipped.
Failed 1/1 test scripts, 0.00% okay. 0/8 subtests failed, 100.00% okay.
NMAKE : fatal error U1077: 'C:\WINDOWS\system32\cmd.exe' : return code '0x5'
Stop.
D:\PXPerl\bin\nmake.EXE test -- OK
Again, final verdict is "OK", despite a "freed to the wrong pool" error, which sounds very serious to me. Also notice the message "Test returned status 5 (wstat 1280, 0x500)
after all the subtests completed successfully
".
And, once more, the compiler it tried to use is wrong again: "icl" — most likely the compiler PXPerl was built with (an Intel compiler, IIRC), but not the compiler that perl -V:cc
reports back ("gcc").
There sure is a pattern there: it seems to me like something here is trying too hard to find out the "truth" about the C compiler, ignoring the more obvious results.
Re:I wish I could say all is well, but...
cosimo on 2006-12-24T14:03:01
Hi Bart, this is interesting. Thanks for your time.
- ActivePerl 5.8.8 + Gcc
AFAIK, ActivePerl comes compiled by MSVC6, which is cl.exe version 12, but you are using with gcc. Correct?
In the Callback tests, which btw fail unless you have MSVC6, I needed a way to check the compiler and I used
$Config{ccname}
and$Config{ccversion}
instead of only using$Config{cc}
, because I only must distinguish between MSVC 6 and 7+.Can you report your cc, ccname and ccversion variables? Or better, file a bug on RT attaching your Config_heavy.pl? Thanks.
- PXPerl
I didn't try that, but I suspect it's the same issue, as you said.
Works smoothly on Strawberry Perl. I've updated it on the Vanilla Perl Problem Modules page on win32.perl.org. Thank you very much for all your work on this!