[comp.lang.perl] Need help building PERL on an SGI 4D70 running IRIX 3.3.1

davis@hobbes.chem.uh.edu (Malcolm Davis) (10/16/90)

I have been trying to build perl 3.0 patchlevel 28 on a Silicon Graphics
4D70 running IRIX 3.3.1.  I have tried a number of different times with
different configurations.  The program compiles fine, but when I run
`make test' it complains that no tests have been run.  Running t/TEST
directly produces the same result.  Some of the individual tests run fine
while others die.  Bash returns an error "Broken Pipe".  As an example,
using the debugger, I have found that io.argv dies on the line

$x = `./perl -e 'while (<>) {print \$.,\$_;}' Io.argv.tmp Io.argv.tmp`;

I have a list of the tests that fail and I am preparing to go in and search
for commonalities, but I thought I'd first check to see if anyone has already
solved this problem.

Thanks in advance,
Malcolm E. Davis

E-mail : davis@hobbes.chem.uh.edu
US-mail: Dept. of Chem.; Univ. of Houston; Houston, TX 77204-5641
--
Malcolm

"Time flies like an arrow.  Fruit flies like a banana."

eastick@me.utoronto.ca (Doug Eastick) (10/18/90)

davis@hobbes.chem.uh.edu (Malcolm Davis) writes:

undef voidsig, memcmp, vfork and maybe volatile
----
>From mullian.ee.mu.OZ.AU!meb Fri Oct 12 22:44:35 1990
Received: from munnari.oz.au by me.utoronto.ca with SMTP id 22139; Fri, 12 Oct 90 22:43:07 EDT
Received: from mullian.ee.mu.OZ.AU by munnari.oz.au with SMTP (5.64+1.3.1+0.50)
	id AA26562; Sat, 13 Oct 1990 12:42:25 +1000
	(from meb@mullian.ee.mu.OZ.AU for eastick@me.utoronto.ca)
Received: from orac.ee.mu.OZ.AU by mullian.ee.mu.OZ.AU (4.1)
	id AA09294; Sat, 13 Oct 90 12:42:22 EST
Received: by orac.ee.mu.OZ.AU (4.0)
	id AA02475; Sat, 13 Oct 90 12:42:22 EST
Date:	Sat, 13 Oct 90 13:42:22 EDT
From:	meb@mullian.ee.mu.OZ.AU (Matthew Barry)
Message-Id: <9010130242.2475@orac.ee.mu.OZ.AU>
To:	eastick@me.utoronto.ca
Subject: Perl on IRIX 3.3.0
Reply-To: meb@ee.mu.OZ.AU
Status: OR



Hello Doug,
	Hopefully you have already been inundated with answers on how
to do get perl running under irix. If not read on.  Below is the advice
I received to the same question.


	I hope this helps,

			Matthew


Date: Thu, 13 Sep 90 13:37:22 PDT
From: uunet!chevpyr!jtmwi@munnari.oz (T.M. Wissler)
To: meb@ee.mu.oz
Subject: perl on irix at 3.3

A friend saw your note about perl and forwarded it to me.

I recently brought up perl on an sgi 4d/20 at 3.3 and an sgi 4d/25 at 3.2
I started with the GNU distribution of perl at patchlevel 18.
Everything was fine at 3.2 with the exception of the signal type which
you noted.

3.3 was a mess.  I finally tracked down the following fixes, all
doable within the config.sh file:

1) Disable vfork.  Some unknown problem here causes most of the
   core dumps.  vfork didn't exist at 3.2.

2) Disable memcmp.  memcmp is buggy.  It was ok at 3.2, but does not
   work at 3.3.  DEC MIPS machines also have a buggy memcmp which is
   detected by perl.  It also checks for little-endian to single out
   the DEC implementation, so sgi slips through.  I changed the
   source to not check endian, but it is easier to just change
   config.sh (as shown below) to disable memcmp.

3) I also have volatile disabled.  I don't know if this is required
   for perl to work properly.

4) Use the -D_BSD_COMPAT switch to cc.

I hope I didn't forget anything.  Following is the complete config.sh
which I used.

Good luck.


Tom Wissler



#!/bin/sh
# config.sh
# This file was produced by running the Configure script
# then tweaked by hand

d_eunice='undef'
define='define'
eunicefix=':'
loclist='
cat
cp
echo
expr
grep
mkdir
mv
rm
sed
sort
tr
uniq
'
expr='/bin/expr'
sed='/bin/sed'
echo='/bin/echo'
cat='/bin/cat'
rm='/bin/rm'
mv='/bin/mv'
cp='/bin/cp'
tail=''
tr='/usr/bin/tr'
mkdir='/bin/mkdir'
sort='/bin/sort'
uniq='/usr/bin/uniq'
grep='/bin/grep'
trylist='
Mcc
cpp
csh
egrep
test
'
test='test'
inews=''
egrep='/usr/bin/egrep'
more=''
pg=''
Mcc='Mcc'
vi=''
mailx=''
mail=''
cpp='/usr/lib/cpp'
perl=''
emacs=''
ls=''
rmail=''
sendmail=''
shar=''
smail=''
tbl=''
troff=''
nroff=''
uname=''
uuname=''
line=''
chgrp=''
chmod=''
lint=''
sleep=''
pr=''
tar=''
ln=''
lpr=''
lp=''
touch=''
make=''
date=''
csh='/bin/csh'
Log='$Log'
Header='$Header'
bin='/usr/local/bin'
byteorder='4321'
contains='grep'
cppstdin='/usr/lib/cpp'
cppminus=''
d_bcmp='define'
d_bcopy='define'
d_bzero='define'
d_castneg='define'
d_charsprf='undef'
d_crypt='define'
cryptlib=''
d_csh='define'
d_dosuid='undef'
d_dup2='define'
d_fchmod='define'
d_fchown='define'
d_fcntl='define'
d_flock='define'
d_getgrps='define'
d_gethent='define'
d_getpgrp='undef'
d_getpgrp2='undef'
d_getprior='undef'
d_htonl='define'
d_index='undef'
d_ioctl='define'
d_killpg='define'
d_lstat='define'
d_memcmp='undef'
d_memcpy='define'
d_mkdir='define'
d_ndbm='define'
d_odbm='define'
d_readdir='define'
d_rename='define'
d_rmdir='define'
d_setegid='define'
d_seteuid='define'
d_setpgrp='define'
d_setpgrp2='undef'
d_setprior='undef'
d_setregid='define'
d_setresgid='undef'
d_setreuid='define'
d_setresuid='undef'
d_setrgid='define'
d_setruid='define'
d_socket='define'
d_sockpair='define'
d_oldsock='undef'
socketlib=''
d_statblks='undef'
d_stdstdio='define'
d_strctcpy='define'
d_strerror='define'
d_symlink='define'
d_syscall='define'
d_varargs='define'
d_vfork='undef'
d_voidsig='undef'
d_volatile='undef'
d_vprintf='define'
d_charvspr='undef'
d_wait4='define'
gidtype='int'
i_dirent='define'
d_dirnamlen='undef'
i_fcntl='define'
i_grp='define'
i_niin='define'
i_pwd='define'
d_pwquota='undef'
d_pwage='define'
d_pwchange='undef'
d_pwclass='undef'
d_pwexpire='undef'
i_sysdir='define'
i_sysioctl='define'
i_sysndir='undef'
i_time='undef'
i_systime='define'
d_systimekernel='undef'
i_utime='define'
i_varargs='define'
i_vfork='undef'
intsize='4'
libc='/usr/lib/libc.a'
mallocsrc=''
mallocobj=''
usemymalloc='n'
mansrc='/usr/catman/local/cat1'
manext='1'
models='none'
split=''
small=''
medium=''
large=''
huge=''
optimize='-O'
ccflags='-D_BSD_COMPAT -DDEBUGGING'
cppflags=' -D_BSD_COMPAT -DDEBUGGING'
ldflags='-s'
cc='cc'
libs='-lsun -lbsd -lmalloc -lc_s'
n=''
c='\c'
package='perl'
randbits='15'
sig_name='ZERO HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM USR1 USR2 CLD PWR STOP TSTP POLL IO URG WINCH VTALRM PROF CONT TTIN TTOU XCPU XFSZ'
spitshell='cat'
shsharp='true'
sharpbang='#!'
startsh='#!/bin/sh'
stdchar='unsigned char'
uidtype='uid_t'
voidflags='7'
defvoidused='7'
yacc='yacc'
privlib='/usr/local/lib/perl'
lib=''
CONFIG=true

srp@babar.mmwb.ucsf.edu (Scott R. Presnell) (10/19/90)

davis@hobbes.chem.uh.edu (Malcolm Davis) writes:

>I have been trying to build perl 3.0 patchlevel 28 on a Silicon Graphics
>4D70 running IRIX 3.3.1.  I have tried a number of different times with
>different configurations.  The program compiles fine, but when I run
>`make test' it complains that no tests have been run.  Running t/TEST
>directly produces the same result.  Some of the individual tests run fine
>while others die.  Bash returns an error "Broken Pipe".  As an example,
[...] [

(Hi Malcolm...)

The problem is that IRIX 3.3.1 vfork() doesn't work like perl expects.
I'm no system guru, so I don't know if SGI's vfork is broken or if perl is
expecting something unreasonable.  This implementation of vfork() uses the
sproc() system call.

Anyway.  The fix is that you have to hand edit config.sh to undo the fact
that Configure has recognized the existence of vfork().  Configure gives
you a chance to do this just before makedepend.

You will also not be able to use -O (though you can still use the default
optimization of -O1) in order to make all the tests pass without fail.

	Good Luck.

	- Scott Presnell

--
Scott Presnell				        +1 (415) 476-9890
Pharm. Chem., S-926				Internet: srp@cgl.ucsf.edu
University of California			UUCP: ...ucbvax!ucsfcgl!srp
San Francisco, CA. 94143-0446			Bitnet: srp@ucsfcgl.bitnet

eastick@me.utoronto.ca (Doug Eastick) (10/19/90)

srp@babar.mmwb.ucsf.edu (Scott R. Presnell) writes:
>You will also not be able to use -O (though you can still use the default
>optimization of -O1) in order to make all the tests pass without fail.

All my tests passed with -O.  I had a few complaints along the lines
of "this procedure not optimized ... use <somflag>=2048" or some such
number.  make test passed so I left it.

Larry, what's the scoop on the vfork() problem?  Just curious.

print <<BARF
	Just another perl hacker trying to find uses for it at work
BARF

lwall@jpl-devvax.JPL.NASA.GOV (Larry Wall) (10/19/90)

In article <90Oct18.210104edt.21825@me.utoronto.ca> eastick@me.utoronto.ca (Doug Eastick) writes:
: Larry, what's the scoop on the vfork() problem?  Just curious.

Being neither omniscient nor the proud owner of an SGI, I haven't the foggiest.

Larry