Skip Menu |

This queue is for tickets about the SOAP-Lite CPAN distribution.

Report information
The Basics
Id: 50178
Status: resolved
Priority: 0/
Queue: SOAP-Lite

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

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



Subject: Win32 isuue with IO::SessionData and IO::SessionSet
Hi, On my Win32/strawberry perl 5.10.1 (the version is important) box I have experienced the following error - it happens when I try to "use IO::SessionData" Your vendor has not defined POSIX macro EWOULDBLOCK, used at C:\strawberry\cpan\build\SOAP-Lite-0.710.10-DdfdJh\blib\lib/IO/SessionData.pm line 33 The interesting is that on Win32 perl 5.8.9 this error does not occur (it might be due to different versions of POSIX pacckage - in 5.8.9 I have POSIX 1.15; in perl 5.10.1 POSIX 1.15. The most important is that this error makes on Win32/5.10.1 the following tests to fail (tested on SOAP-Lite-0.710.10): t/06-modules.t # Failed test 'use SOAP::Transport::TCP' at t/06-modules.t line 39. # Failed test 'use XMLRPC::Transport::TCP' at t/06-modules.t line 39. t/IO/SessionData.t # Failed test 'use IO::SessionData;' at t/IO/SessionData.t line 4. t/IO/SessionSet.t # Failed test 'use IO::SessionSet;' at t/IO/SessionSet.t line 3. On the other hand SOAP-Lite-0.710.10 installs fine on Win32 perl 5.8.9. My suggestion is to skip all test dealing with IO::SessionData on Win32 as the functionality implemented in IO::SessionData will not work correctly on Win32 anyway (there is simply no e.g. WOULDBLOCK on Win32). -- kmx
On Sat Oct 03 05:40:58 2009, KMX wrote: Show quoted text
> On my Win32/strawberry perl 5.10.1 (the version is important) box I > have > experienced the following error - it happens when I try to "use > IO::SessionData" > > Your vendor has not defined POSIX macro EWOULDBLOCK, used at > C:\strawberry\cpan\build\SOAP-Lite-0.710.10- > DdfdJh\blib\lib/IO/SessionData.pm > line 33
I have fixed this for Perl 5.12-tobe, but the problem really is that the code in SOAP-Lite is not quite right: The symbol is already exported correctly as Errno::EWOULDBLOCK, but the POSIX module doesn't have its value. However, it still exports the symbol, which will just die at runtime when it is being invoked. The following patch lets SOAP::Lite finish all its tests on Windows using Perl 5.10.1: --- SessionData.pm~ 2009-11-13 15:09:11.533698000 -0800 +++ SessionData.pm 2009-11-13 15:07:44.583992500 -0800 @@ -30,7 +30,7 @@ ), (eval {require POSIX} ? map { - eval { POSIX->can($_) } + POSIX->can($_) && eval { POSIX->can($_)->() } ? (POSIX->can($_)->() => 1) : () } @names Cheers, -Jan