beldar@mips.COM (Gardner Cohen) (10/19/90)
I've been religiously building perl patch releases in the bsd43
environment on Mips machines, tirelessly editing /bsd43's in front of
every /lib, /usr/include, and /bin in the Configure script. This
time, I decided to try building in the sysv environment, and see
what I'd be missing.
Turns out that Configure will find /usr/include/bsd, /usr/include/sun,
libsun.a, and libbsd.a, and with very little tweaking, will find
almost all the system calls it normally finds in /bsd43 land.
The only exceptions: setpriority, getpriority, and killpg. I suspect
killpg is harmless and that perl will use system V semantics to kill
groups.
Here's the only change I made to configure. I've asked several times
why we don't have a /bsd43/bin/nm as well as a /bin/nm. nm -B
generates bsd style output. nm alone used to dump core when
confronted with serious tasks; this time it ran for a long time,
generating output Configure was not interested in, while nm -B made
Configure happy.
*** /tmp/,RCSt1a07907 Fri Oct 19 08:57:16 1990
--- Configure Thu Oct 18 21:51:33 1990
***************
*** 1445,1451 ****
echo " "
set `echo $libc $libnames | tr ' ' '\012' | sort | uniq`
$echo $n "Extracting names from $* for later perusal...$c"
! nm $* 2>/dev/null >libc.tmp
$sed -n -e 's/^.* [ATD] *_[_.]*//p' -e 's/^.* [ATD] //p' <libc.tmp >libc.list
if $contains '^printf$' libc.list >/dev/null 2>&1; then
echo "done"
--- 1445,1451 ----
echo " "
set `echo $libc $libnames | tr ' ' '\012' | sort | uniq`
$echo $n "Extracting names from $* for later perusal...$c"
! nm -B $* 2>/dev/null >libc.tmp
$sed -n -e 's/^.* [ATD] *_[_.]*//p' -e 's/^.* [ATD] //p' <libc.tmp >libc.list
if $contains '^printf$' libc.list >/dev/null 2>&1; then
echo "done"
But wait, there's more! I had to edit config.sh before extracting to
fix a couple of things:
d_charsprf='undef'
d_volatile='undef'
I haven't investigated why Configure decided sprintf returned char *.
Perhaps the int declaration in stdio.h is wrong.
There are known problems with mips compilers and volatile as used by
perl.
As mentioned in an earlier post, there is a problem with -lm not
ending up in the library list, so add that to the list of libraries it
presents to you.
If you normally live in the bsd43 environment (like I do), you will
need to answer
cc -systype sysv
to the what compiler? question.
With the 2.11 compilers, I was able to compile the whole thing
-O -Olimit 10000.
Note that there are core dump producing typos in util.c which I've
reported to Larry. They're all in hfetch/hdelete calls, where pid
instead of spid is being passed to strlen (and, in one case, to hfetch
itself).
If there's enough demand, I can make a compiled version of perl
available for anonymous FTP from mips.com.
--
Gardner Cohen beldar@mips.com {ames,decwrl,...}!mips!beldar (408) 524-8267beldar@mips.COM (Gardner Cohen) (10/20/90)
beldar@mips.COM (Gardner Cohen) writes:
But wait, there's more! I had to edit config.sh before extracting to
fix a couple of things:
d_charsprf='undef'
d_volatile='undef'
I've been getting 'Out of memory!' messages from the perl debugger
when single stepping through functions. These remained even after
compiling without optimization and with -g on. This was on a machine
with lots of real and virtual memory.
They went away when I used the perl-supplied malloc. Oops.
--
Gardner Cohen beldar@mips.com {ames,decwrl,...}!mips!beldar (408) 524-8267beldar@mips.COM (Gardner Cohen) (10/27/90)
Here are diffs for Configure to make pl 37 build under risc/os 4.51:
*** /tmp/,RCSt1011584 Thu Oct 25 22:04:33 1990
--- Configure Thu Oct 25 21:19:39 1990
***************
*** 303,305 ****
echo "Okay, let's see if #! works on this system..."
! echo "#!/bin/echo hi" > try
$eunicefix try
--- 303,305 ----
echo "Okay, let's see if #! works on this system..."
! echo "#!/bsd43/bin/echo hi" > try
$eunicefix try
***************
*** 1135,1137 ****
esac
! xxx=`./loc lib$thislib.a X /usr/ccs/lib /usr/lib /usr/local/lib /lib`
if test -f $xxx; then
--- 1135,1137 ----
esac
! xxx=`./loc lib$thislib.a X /usr/ccs/lib /usr/lib /usr/local/lib /lib /usr/lib/cmplrs/cc`
if test -f $xxx; then
***************
*** 1450,1452 ****
$echo $n "Extracting names from $* for later perusal...$c"
! nm $* 2>/dev/null >libc.tmp
$sed -n -e 's/^.* [ATD] *_[_.]*//p' -e 's/^.* [ATD] //p' <libc.tmp >libc.list
--- 1450,1452 ----
$echo $n "Extracting names from $* for later perusal...$c"
! nm -B $* 2>/dev/null >libc.tmp
$sed -n -e 's/^.* [ATD] *_[_.]*//p' -e 's/^.* [ATD] //p' <libc.tmp >libc.list
Tell configure to use cc -systype sysv.
Edit config.sh to disable volatile.
Edit Makefile after substitution to make LDFLAGS (not CLDFLAGS) -systype sysv
Compile with -Olimit 10000 -O if you have a lot of memory.
Available from mips.com (130.62.14.10) in /pub/perl_3.37.tar.Z find a
compressed tar file with a built version of perl 3.37 compiled under
risc/os. (.o's deleted). The tar file contains a README.mips file for
more info.
--
Gardner Cohen beldar@mips.com {ames,decwrl,...}!mips!beldar (408) 524-8267