From: Zhisong J. <jj...@dy...> - 2004-10-18 20:14:51
|
Austin: thank you for the reply. since I wasn't able to figure out how to make it work under perl 5.8.4. I'm now trying to use SUN's version of perl 5.005_03 came with solaris 9. solaris 9, perl 5.005_03 ,and IO-Tty-1.02 from sourceforge. however, make on IO-Tty-1.02 gives [jason@flounder IO-Tty-1.02]$ make <snip> cc -c -xO3 -xdepend -DVERSION=\"1.02\" -DXS_VERSION=\"1.02\" -KPIC -I/usr/perl5/5.00503/sun4-solaris/CORE -DHAVE_DEV_PTMX -DHAVE_GRANTPT -DHAVE_PTSNAME -DHAVE_SIGACTION -DHAVE_STRLCPY -DHAVE_SYS_STROPTS_H -DHAVE_TERMIOS_H -DHAVE_TERMIO_H -DHAVE_TTYNAME -DHAVE_UNLOCKPT Tty.c cc: unrecognized option `-KPIC' cc: language depend not recognized cc: Tty.c: linker input file unused because linking not done Running Mkbootstrap for IO::Tty () chmod 644 Tty.bs LD_RUN_PATH="" cc -o blib/arch/auto/IO/Tty/Tty.so -G Tty.o cc: Tty.o: No such file or directory cc: no input files make: *** [blib/arch/auto/IO/Tty/Tty.so] Error 1 I believe the sun own version of perl is compiled with sun's own c compiler. does that causing this problm, any work around? Thanks. Jason PS: I also tried to compile perl 5.005_03 from source using gcc 3.3.2 on solaris 9. I got an [jason@flounder perl5.005_03]$ make make: *** No rule to make target `<built-in>', needed by `miniperlmain.o'. Stop. On Fri, 2004-10-08 at 16:48, Austin Schutz wrote: > On Fri, Oct 08, 2004 at 11:28:37AM +0200, Roland Giersig wrote: > > > > Hmm, in the 'perl Makefile.PL' step I'm trying to figure out what > > constants are defined by compiling test progs for each constant. Austin, > > as you seem to have a solaris machine on your hands, could you look into > > that and see why it gets defined? > > > > On my solaris machine I'm not able to replicate the issue because > I'm running an old perl: 5.00503, which doesn't exhibit this problem and > I can't get 5.8.4 to compile. > However, I _was_ able to replicate this on my home linux workstation > by commenting out #define TIOCSCTTY in /usr/include/asm/ioctls.h. > > I'm not sure why the code in question is being executed. Running > it in the debugger I still couldn't figure it out (output follows). It looks > to me like a perl bug. However, I was able to work around it by changing line > 118 to: > > if (defined TIOCSCTTY && TIOCSCTTY) { > > which _should_ be valid - I doubt any vendor defines TIOCSCTTY as 0. > > Austin > > DB<5> p defined TIOCSCTTY > > DB<6> l > 118==> if (defined TIOCSCTTY) { > 119: if (not defined ioctl( ${*$self}{'io_pty_slave'}, TIOCSCTTY, 0 )) { > 120: warn "warning: TIOCSCTTY failed, slave might not be set as control > ling terminal: $!" if $^W; > 121 } > 122 } elsif (defined TCSETCTTY) { > 123: if (not defined ioctl( ${*$self}{'io_pty_slave'}, TCSETCTTY, 0 )) { > 124: warn "warning: TCSETCTTY failed, slave might not be set as control > ling terminal: $!" if $^W; > 125 } > 126 } > 127 > DB<6> s > IO::Pty::make_slave_controlling_terminal(/root/.cpan/build/IO-Tty-1.02/blib/lib/ > IO/Pty.pm:119): > 119: if (not defined ioctl( ${*$self}{'io_pty_slave'}, TIOCSCTTY, 0 )) { > DB<6> p defined TIOCSCTTY > > DB<7> p defined TIOCSCTTY > > DB<8> if(defined TIOCSCTTY) { print "defined\n"; } > > DB<9> n > IO::Pty::make_slave_controlling_terminal(/root/.cpan/build/IO-Tty-1.02/blib/lib/IO/Pty.pm:119): > 119: if (not defined ioctl( ${*$self}{'io_pty_slave'}, TIOCSCTTY, 0 )) { > DB<9> n > Use of uninitialized value in ioctl at /root/.cpan/build/IO-Tty-1.02/blib/lib/IO/Pty.pm line 119, <XT> line 1. > IO::Pty::make_slave_controlling_terminal('IO::Pty=GLOB(0x8171f8c)') called at test.pl line 66 > IO::Pty::make_slave_controlling_terminal(/root/.cpan/build/IO-Tty-1.02/blib/lib/IO/Pty.pm:120): > 120: warn "warning: TIOCSCTTY failed, slave might not be set as controlling terminal: $!" if $^W; > |