Subject: Perl summary and questions.
To: None <port-pmax@NetBSD.ORG>
From: Leo Bicknell <bicknell@ufp.org>
List: port-pmax
Date: 05/07/1998 09:10:59
I recently returned to the NetBSD camp installing 1.3.1 on my
5000/25. One of the required bits of software was perl, so I set about
making 5.004_04 work. After a few abortative attempts I finally got it
to compile. Compiling is now easy, see below where I attached my copy
of the hints/netbsd.sh file from perl modified to compile on pmax out
of the box.
Here's the problem though, the shared library loading isn't
working. An example from 'make test':
lib/anydbm........Can't load '../lib/auto/Fcntl/Fcntl.so' for module Fcntl: (null) at
../lib/DynaLoader.pm line 166.
at ./lib/anydbm.t line 11
BEGIN failed--compilation aborted at ./lib/anydbm.t line 11.
I was hoping that shared libraries were now working well enough
for this to happen. :-( I'd be happy to try and trace this further, but
I'm no shared library expert. So, has anyone made shared libraries work
with perl? Does anyone have any hints?
--
Leo Bicknell - bicknell@ufp.org
Systems Engineer - Internetworking Engineer - CCIE 3440
Read TMBG List - tmbg-list-request@tmbg.org, www.tmbg.org
#hints/netbsd.sh
#
# talk to mrg@eterna.com.au if you want to change this file.
#
# netbsd keeps dynamic loading dl*() functions in /usr/lib/crt0.o,
# so Configure doesn't find them (unless you abandon the nm scan).
# this should be *just* 0.9 below as netbsd 0.9a was the first to
# introduce shared libraries. however, they don't work/build on
# pmax, powerpc and alpha ports correctly, yet.
case "$archname" in
'')
archname=`uname -m`-${osname}
;;
esac
case "$osvers" in
0.9|0.8*)
usedl="$undef"
;;
*)
case `uname -m` in
alpha|powerpc)
d_dlopen=$undef
;;
# this doesn't work (yet).
# alpha)
# d_dlopen=$define
# d_dlerror=$define
# cccdlflags="-DPIC -fPIC $cccdlflags"
# lddlflags="-shared $lddlflags"
# ;;
pmax)
d_dlopen=$define
d_dlerror=$define
# we use -fPIC here because -fpic is *NOT* enough for some of the
# extensions like Tk on some netbsd platforms (the sparc is one)
cccdlflags="-DPIC -fPIC $cccdlflags"
#
# 'cc' is picked incorrectly for ld, it can't create shared libs (at least,
# with standard looking arguments, I suppose it may be able to).
#
ld='ld'
#
# The -Bforcearchive flag doesn't exist on pmax, I don't understand this.
#
lddlflags="-Bshareable $lddlflags"
;;
*)
d_dlopen=$define
d_dlerror=$define
# we use -fPIC here because -fpic is *NOT* enough for some of the
# extensions like Tk on some netbsd platforms (the sparc is one)
cccdlflags="-DPIC -fPIC $cccdlflags"
lddlflags="-Bforcearchive -Bshareable $lddlflags"
;;
esac
;;
esac
# netbsd had these but they don't really work as advertised, in the
# versions listed below. if they are defined, then there isn't a
# way to make perl call setuid() or setgid(). if they aren't, then
# ($<, $>) = ($u, $u); will work (same for $(/$)). this is because
# you can not change the real userid of a process under 4.4BSD.
# netbsd fixed this in 1.2A.
case "$osvers" in
0.9*|1.0*|1.1*|1.2_*|1.2|1.2.*)
d_setregid="$undef"
d_setreuid="$undef"
d_setrgid="$undef"
d_setruid="$undef"
;;
esac
# Avoid telldir prototype conflict in pp_sys.c (NetBSD uses const DIR *)
# Configure should test for this. Volunteers?
pp_sys_cflags='ccflags="$ccflags -DHAS_TELLDIR_PROTOTYPE"'