Skip Menu |

This queue is for tickets about the IO CPAN distribution.

Report information
The Basics
Id: 16182
Status: resolved
Priority: 0/
Queue: IO

People
Owner: Nobody in particular
Requestors: m.romani [...] spinsoft.it
Cc:
AdminCc:

Bug Information
Severity: Normal
Broken in: 1.22
Fixed in: (no value)



Subject: Installation fails on WinXP SP2
Installation via CPAN fails on my machine. Here is the output of 'nmake test': Microsoft (R) Program Maintenance Utility Version 1.50 Copyright (c) Microsoft Corp 1988-94. All rights reserved. C:\Perl\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib\lib', 'blib\arch')" t/*.t t/IO...............ok t/io_const.........ok t/io_dir...........ok t/io_dup...........ok t/io_file..........ok t/io_linenum.......ok t/io_multihomed....ok t/io_pipe..........syntax error at -e line 1, near "}continue" Execution of -e aborted due to compilation errors. Confused test output: test 2 answered after test 2 Confused test output: test 3 answered after test 4 Confused test output: test 4 answered after test 5 (here nmake test hangs; I have to press CTRL-C to stop it) In case it is useful, i also included an attachment with the output of perl -V
Forgot the attachment...
Download log
application/octet-stream 3.6k

Message body not shown because it is not plain text.

[guest - Tue Nov 29 08:59:12 2005]: Show quoted text
> t/io_pipe..........syntax error at -e line 1, near "}continue" > Execution of -e aborted due to compilation errors. > Confused test output: test 2 answered after test 2 > Confused test output: test 3 answered after test 4 > Confused test output: test 4 answered after test 5 > > (here nmake test hangs; I have to press CTRL-C to stop it)
This is weird. I have never seen a test fail like that. The io_pipe test does not even have a continue statement, so I have no idea even where the problem is. But why are you trying to install on 5.8.7 ? You already have IO installed on your system. The only difference with the release on CPAN was that it was made to compile with older versions of perl. Graham.
[GBARR - Tue Nov 29 10:17:16 2005]: Show quoted text
> [guest - Tue Nov 29 08:59:12 2005]: > >
> > t/io_pipe..........syntax error at -e line 1, near "}continue" > > Execution of -e aborted due to compilation errors. > > Confused test output: test 2 answered after test 2 > > Confused test output: test 3 answered after test 4 > > Confused test output: test 4 answered after test 5 > > > > (here nmake test hangs; I have to press CTRL-C to stop it)
> > This is weird. I have never seen a test fail like that. The io_pipe test > does not even have a continue statement, so I have no idea even where > the problem is. > > But why are you trying to install on 5.8.7 ? You already have IO > installed on your system. The only difference with the release on CPAN > was that it was made to compile with older versions of perl.
Ok, I'll stop wasting time then... :-) Show quoted text
> > Graham. >
Thanks for your reply. Marcello
For your debugging pleasure, here is a debugger run for the io_pipe.t test script -------------------------------------------------------- C:\Documents and Settings\adam\Local Settings\Temp\cpan\build\IO-1.22>perl -Ibli b/arch -Iblib/lib -d t/io_pipe.t Loading DB routines from perl5db.pl version 1.28 Editor support available. Enter h or `h h' for help, or `perldoc perldebug' for more help. main::(t/io_pipe.t:3): my $perl; SetConsoleMode failed, LastError=|6| at c:/vanilla-perl/perl/site/lib/Term/ReadK ey.pm line 265. at c:/vanilla-perl/perl/site/lib/Term/ReadLine/readline.pm line 1415 readline::readline(' DB<1> ') called at c:/vanilla-perl/perl/site/lib/T erm/ReadLine/Perl.pm line 11 Term::ReadLine::Perl::readline('Term::ReadLine::Perl=ARRAY(0xaf0b88)', ' DB<1> ') called at c:/vanilla-perl/perl/lib/perl5db.pl line 6367 DB::readline(' DB<1> ') called at c:/vanilla-perl/perl/lib/perl5db.pl l ine 2203 DB::DB called at t/io_pipe.t line 3 DB<1> n main::(t/io_pipe.t:37): $| = 1; DB<1> n main::(t/io_pipe.t:38): print "1..10\n"; DB<1> 1..10 main::(t/io_pipe.t:40): $pipe = new IO::Pipe->reader($perl, '-e', 'print "not ok 1\n"'); DB<1> main::(t/io_pipe.t:41): while (<$pipe>) { DB<1> main::(t/io_pipe.t:45): $pipe->close or print "# \$!=$!\nnot "; DB<1> main::(t/io_pipe.t:46): print "ok 2\n"; DB<1> ok 2 main::(t/io_pipe.t:48): $cmd = 'BEGIN{$SIG{ALRM} = sub {print "not ok 4\n"; exit }; alarm 10} s/not //'; DB<1> main::(t/io_pipe.t:49): $pipe = new IO::Pipe->writer($perl, '-pe', $cmd); DB<1> main::(t/io_pipe.t:50): print $pipe "not ok 3\n" ; DB<1> syntax error at -e line 1, near "}continue" Execution of -e aborted due to compilation errors. main::(t/io_pipe.t:51): $pipe->close or print "# \$!=$!\nnot "; DB<1> # $!=Invalid argument not main::(t/io_pipe.t:52): print "ok 4\n"; DB<1> ok 4 main::(t/io_pipe.t:55): if ($^O eq 'os2' and main::(t/io_pipe.t:56): system "$^X -I../lib -MOpcode -e 'defined fork or di e' > /dev/null 2>&1") { DB<1> main::(t/io_pipe.t:61): $pipe = new IO::Pipe; DB<1> main::(t/io_pipe.t:63): $pid = fork(); DB<1> main::(t/io_pipe.t:65): if($pid) main::(t/io_pipe.t:66): { DB<1> ######### Forked, but do not know how to create a new TTY. ######### Since two debuggers fight for the same TTY, input is severely entangled. I know how to switch the output to a different window in xterms and OS/2 consoles only. For a manual switch, put the name of the created TTY in $DB::fork_TTY, or define a function DB::get_fork_TTY() returning this. On UNIX-like systems one can get the name of a TTY for the given window by typing tty, and disconnect the shell from TTY by sleep 1000000. main::(t/io_pipe.t:65): if($pid) main::(t/io_pipe.t:66): { {pid=4752} DB<1> main::(t/io_pipe.t:67): $pipe->writer; DB<1> main::(t/io_pipe.t:75): $pipe->reader; {pid=4752} DB<1> main::(t/io_pipe.t:68): print $pipe "Xk 5\n"; DB<1> main::(t/io_pipe.t:76): $stdin = bless \*STDIN, "IO::Handle"; {pid=4752} DB<1> main::(t/io_pipe.t:69): print $pipe "oY 6\n"; DB<1> main::(t/io_pipe.t:77): $stdin->fdopen($pipe,"r"); {pid=4752} DB<1> main::(t/io_pipe.t:70): $pipe->close; DB<1> main::(t/io_pipe.t:78): exec 'tr', 'YX', 'ko'; {pid=4752} DB<1> main::(t/io_pipe.t:71): wait; DB<1> main::(t/io_pipe.t:85): $pipe = new IO::Pipe; {pid=4752} DB<1> main::(t/io_pipe.t:86): $pid = fork(); {pid=4752} DB<1> main::(t/io_pipe.t:88): if($pid) main::(t/io_pipe.t:89): { {pid=4752} DB<1> ######### Forked, but do not know how to create a new TTY. ### ###### Since two debuggers fight for the same TTY, input is severely entangled. I know how to switch the output to a different window in xterms and OS/2 consoles only. For a manual switch, put the name of the created TTY in $DB::fork_TTY, or define a function DB::get_fork_TTY() returning this. On UNIX-like systems one can get the name of a TTY for the given window by typing tty, and disconnect the shell from TTY by sleep 1000000. main::(t/io_pipe.t:88): if($pid) main::(t/io_pipe.t:89): { {pid=4752} DB<1> main::(t/io_pipe.t:90): $pipe->reader; {pid=4752} DB<1> main::(t/io_pipe.t:100): $pipe->writer; {pid=4752} DB<1> main::(t/io_pipe.t:91): while(<$pipe>) { {pid=4752} DB<1> main::(t/io_pipe.t:102): $stdout = bless \*STDOUT, "IO::Handle"; {pid=4752} DB<1> main::(t/io_pipe.t:103): $stdout->fdopen($pipe,"w"); {pid=4752} DB<1> main::(t/io_pipe.t:104): print STDOUT "not ok 7\n"; {pid=4752} DB<1> main::(t/io_pipe.t:92): s/^not //; {pid=4752} DB<1> main::(t/io_pipe.t:105): exec 'echo', 'not ok 8'; {pid=4752} DB<1> main::(t/io_pipe.t:93): print; {pid=4752} DB<1> main::(t/io_pipe.t:112): $pipe = new IO::Pipe; {pid=4752} DB<1> main::(t/io_pipe.t:92): s/^not //; {pid=4752} DB<1> main::(t/io_pipe.t:113): $pipe->writer; {pid=4752} DB<1> main::(t/io_pipe.t:93): print; {pid=4752} DB<1> main::(t/io_pipe.t:115): $SIG{'PIPE'} = 'broken_pipe'; {pid=4752} DB<1> main::(t/io_pipe.t:92): s/^not //; {pid=4752} DB<1> main::(t/io_pipe.t:121): print $pipe "not ok 9\n"; {pid=4752} DB<1> main::(t/io_pipe.t:93): print; {pid=4752} DB<1> main::(t/io_pipe.t:122): $pipe->close; {pid=4752} DB<1> main::(t/io_pipe.t:92): s/^not //; {pid=4752} DB<1> main::(t/io_pipe.t:124): sleep 1; {pid=4752} DB<1> main::(t/io_pipe.t:93): print; {pid=4752} DB<1> main::(t/io_pipe.t:92): s/^not //; {pid=4752} DB<1> main::(t/io_pipe.t:93): print; {pid=4752} DB<1> main::(t/io_pipe.t:92): s/^not //; {pid=4752} DB<1> main::(t/io_pipe.t:126): print "ok 10\n"; {pid=4752} DB<1> main::(t/io_pipe.t:93): print; {pid=4752} DB<1> main::(t/io_pipe.t:92): s/^not //; {pid=4752} DB<1> main::(t/io_pipe.t:93): print; {pid=4752} DB<1> main::(t/io_pipe.t:92): s/^not //; {pid=4752} DB<1> main::(t/io_pipe.t:93): print; {pid=4752} DB<1> main::(t/io_pipe.t:92): s/^not //; {pid=4752} DB<1> main::(t/io_pipe.t:93): print; {pid=4752} DB<1> main::(t/io_pipe.t:92): s/^not //; {pid=4752} DB<1> main::(t/io_pipe.t:93): print; {pid=4752} DB<1> x @_ empty array {pid=4752} DB<2> x $_ 0 "ok 7\cM\cM\cM\cM\cM\cM\cM\cM\cJ" {pid=4752} DB<3> n main::(t/io_pipe.t:92): s/^not //; {pid=4752} DB<3> main::(t/io_pipe.t:93): print; {pid=4752} DB<3> x $_ 0 "ok 10\cM\cM\cM\cJ" {pid=4752} DB<4> n main::(t/io_pipe.t:92): s/^not //; {pid=4752} DB<4> x $_ 0 "ok 7\cM\cM\cM\cM\cM\cM\cM\cM\cM\cJ" {pid=4752} DB<5> At which point you are into an infinite loop...