On Fri, May 30, 2003 at 03:34:46PM +0200, Laurent Perez wrote:
> Hello
> 
> I wrote a cool Perl/TK irc client, using POE::Component::IRC. It works fine 
> on linux and bsd hosts.
> However I would like to run it on Win32 platforms (98, 2K and XP).
> 
> I installed ActiveState's Perl build 635 on my Win32 comp, then installed 
> POE 0.26, POE::Component::IRC and Tk modules, using CPAN.
> When I try to run the program, it simply freezes. I was told Win32 
> platforms had problems with Tk blocking events, but I was hoping latest 
> builds of POE and AS could fix that.

The last ActivePerl build I've tested POE against is 804.  At that point
Tk fileevent callbacks were much more broken than usual.  I was forced
to skip t/06_tk.t entirely under build 804 because Tk would crash
outright.

I have reported the fileevent problems and included simple programs that
reproduced them.

Tk fileevent bugs:
 - http://bugs.activestate.com/show_bug.cgi?id=22619
 - http://bugs.activestate.com/show_bug.cgi?id=23619

Their corresponding test cases:
 - http://bugs.activestate.com/showattachment.cgi?attach_id=880
 - http://bugs.activestate.com/showattachment.cgi?attach_id=955

It appears that Tk was updated in build 805, and build 806 incorporates
fixes to PerlIO.  ActivePerl's change log:
 - http://aspn.activestate.com/ASPN/Perl/Products/ActivePerl/CHANGES.html

Unresolved Tk fileevent problems go back as far as 2001 so I'm not very
hopeful.  I will try build 806 anyway.

> So should I give up trying to run network+tk code within POE on Win32 
> platforms because of that blocking problem, or is anyone able to help me 
> using alternative coding methods, or should I try using cygwin ? I had a 
> mail contact with AS Tk maintainers, it looks like they simply don't care 
> about POE, so I don't know if it's POE or AS 'problem'.

I think the most obvious choice is to try Cygwin.

We have established:

 - When a library is broken, programs using that library do not work.
 - Tk is a library that POE uses, among other things, for non-blocking
   I/O.
 - Tk's non-blocking I/O is broken under ActivePerl.

Therefore:

 - POE's non-blocking I/O does not work with ActivePerl's version of Tk.

We have established:

 - Tk's non-blocking I/O works under other platforms (BSD, Linux).
 - Cygwin attempts to emulate Linux for Win32 (see www.cygwin.com).

Therefore we have reason to assume:

 - Tk's non-blocking I/O may work under Cygwin.

Therefore we have reason to assume:

 - POE's non-blocking I/O may work with Cygwin's version of Tk.

We can easily test whether the assumption is correct.  I am downloading
Cygwin to try it.  You may also want to.

> Any help would be greatly appreciated
> Thanks
> 
> Laurnt Perez

ActivePerl may be reluctant to fix things themselves, but they are not
averse to accepting patches.  If we would like to see ActiveState's Tk
fixed, we should find someone with the proper compiler to rebuild it and
the willingness to look at the problem.

This has been a thorn in my side for over a year.  I'm willing to work
on this bug, but I don't have the right compiler to rebuild ActivePerl
and/or ActiveState's version of Tk.

-- Rocco Caputo - [EMAIL PROTECTED] - http://poe.perl.org/

Reply via email to