These packages contain binary runtimes (SCO OpenServer) and sources and documentation for perl5, the swiss-army chainsaw. The version here corresponds to 5.004_04 and provides a shared lib perl and supports dynamic loading of perl extension libraries.
This version of Perl builds on Osr5 out of the distribution but that built version is not built as a shared library and doesn't support dynamically loading libraries.
I didn't get a completed sco hints file done that would build on osr5 this way but there is the config.sh file I ended up using below that will build it that way. If anyone does work out the changes needed to ./hints/sco.sh please feel free to forward them to me . Theres an attempt at a modified sco.sh hints file below
In addition to the above mentioned config.sh for a shared library build
you will also need to modify files
ext/DB_File/Makefile and
ext/DB_File/Makefile.PL
so that the line containing
-ldb has -lc appended to it
i.e
Makefile
EXTRALIBS = -L/usr/local/lib -ldb LDLOADLIBS = -L/usr/local/lib -ldbgoes to
EXTRALIBS = -L/usr/local/lib -ldb -lc LDLOADLIBS = -L/usr/local/lib -ldb -lcMakefile.PL
LIBS => ["-L/usr/local/lib -ldb"],goes to
LIBS => ["-L/usr/local/lib -ldb -lc"],otherwise (for some reason) you'll get relocation errors on some symbols referenced from DB_File.o that should be resolved out of libc when DB_File is loaded.
All tests successful. Files=153, Tests=4855, 245 secs (54.46 cusr 18.35 csys = 72.81 cpu)
#!/bin/sh # # This file was produced by running the Configure script. It holds all # the definitions figured out by Configure. Should you modify any of # these values, do not forget to propagate your changes by running # "Configure -S"; or, equivalently, you may run each .SH file yourself. # # Configuration time: Tue Mar 3 16:57:54 PST 1998 # Configured by: unknown # Target system: sco_sv charmstr 3.2 2 i386 Author='' Date='$Date' Header='' Id='$Id' Locker='' Log='$Log' Mcc='Mcc' RCSfile='$RCSfile' Revision='$Revision' Source='' State='' afs='false' alignbytes='4' aphostname='' ar='ar' archlib='/usr/local/lib/perl5/i386-sco_sv/5.00404' archlibexp='/usr/local/lib/perl5/i386-sco_sv/5.00404' archname='i386-sco_sv' archobjs='' awk='awk' baserev='5.0' bash='' bin='/usr/local/bin' bincompat3='n' binexp='/usr/local/bin' bison='' byacc='byacc' byteorder='1234' c='\c' castflags='0' cat='cat' cc='cc' cccdlflags='-KPIC -Wl,-Bexport' ccdlflags='-Wl,-Bexport' ccflags='-belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include' cf_by='unknown' cf_email='hops@sco.com' cf_time='Tue Mar 3 16:57:54 PST 1998' chgrp='' chmod='' chown='' clocktype='clock_t' comm='comm' compress='' contains='grep' cp='cp' cpio='' cpp='cpp' cpp_stuff='42' cppflags='-w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include' cpplast='-' cppminus='-' cpprun='cc -E' cppstdin='cc -E' cryptlib='' csh='csh' d_Gconvert='gcvt((x),(n),(b))' d_access='define' d_alarm='define' d_archlib='define' d_attribut='undef' d_bcmp='define' d_bcopy='define' d_bincompat3='undef' d_bsd='define' d_bsdgetpgrp='undef' d_bsdpgrp='undef' d_bsdsetpgrp='undef' d_bzero='define' d_casti32='define' d_castneg='define' d_charvspr='undef' d_chown='define' d_chroot='define' d_chsize='undef' d_closedir='define' d_const='define' d_crypt='define' d_csh='define' d_cuserid='define' d_dbl_dig='define' d_difftime='define' d_dirnamlen='undef' d_dlerror='define' d_dlopen='define' d_dlsymun='undef' d_dosuid='undef' d_dup2='define' d_eofnblk='define' d_eunice='undef' d_fchmod='define' d_fchown='define' d_fcntl='define' d_fd_macros='define' d_fd_set='define' d_fds_bits='define' d_fgetpos='define' d_flexfnam='define' d_flock='undef' d_fork='define' d_fpathconf='define' d_fsetpos='define' d_ftime='undef' d_getgrps='define' d_setgrps='define' d_gethent='define' d_gethname='undef' d_getlogin='define' d_getpgid='define' d_getpgrp2='undef' d_getpgrp='define' d_getppid='define' d_getprior='define' d_gettimeod='define' d_gnulibc='undef' d_htonl='define' d_index='undef' d_inetaton='define' d_isascii='define' d_killpg='define' d_link='define' d_locconv='define' d_lockf='define' d_lstat='define' d_mblen='define' d_mbstowcs='define' d_mbtowc='define' d_memcmp='define' d_memcpy='define' d_memmove='define' d_memset='define' d_mkdir='define' d_mkfifo='define' d_mktime='define' d_msg='define' d_msgctl='define' d_msgget='define' d_msgrcv='define' d_msgsnd='define' d_mymalloc='define' d_nice='define' d_oldarchlib='undef' d_oldsock='undef' d_open3='define' d_pathconf='define' d_pause='define' d_phostname='undef' d_pipe='define' d_poll='define' d_portable='define' d_pwage='define' d_pwchange='undef' d_pwclass='undef' d_pwcomment='define' d_pwexpire='undef' d_pwquota='undef' d_readdir='define' d_readlink='define' d_rename='define' d_rewinddir='define' d_rmdir='define' d_safebcpy='define' d_safemcpy='undef' d_sanemcmp='define' d_seekdir='define' d_select='define' d_sem='define' d_semctl='define' d_semget='define' d_semop='define' d_setegid='define' d_seteuid='define' d_setlinebuf='undef' d_setlocale='define' d_setpgid='define' d_setpgrp2='undef' d_setpgrp='define' d_setprior='define' d_setregid='define' d_setresgid='undef' d_setresuid='undef' d_setreuid='define' d_setrgid='undef' d_setruid='undef' d_setsid='define' d_sfio='undef' d_shm='define' d_shmat='define' d_shmatprototype='define' d_shmctl='define' d_shmdt='define' d_shmget='define' d_sigaction='define' d_sigsetjmp='define' d_socket='define' d_sockpair='define' d_statblks='define' d_stdio_cnt_lval='undef' d_stdio_ptr_lval='undef' d_stdiobase='undef' d_stdstdio='undef' d_strchr='define' d_strcoll='define' d_strctcpy='define' d_strerrm='strerror(e)' d_strerror='define' d_strtod='define' d_strtol='define' d_strtoul='define' d_strxfrm='define' d_suidsafe='undef' d_symlink='define' d_syscall='define' d_sysconf='define' d_sysernlst='' d_syserrlst='define' d_system='define' d_tcgetpgrp='define' d_tcsetpgrp='define' d_telldir='define' d_time='define' d_times='define' d_truncate='define' d_tzname='define' d_umask='define' d_uname='define' d_vfork='undef' d_void_closedir='undef' d_voidsig='define' d_voidtty='' d_volatile='define' d_vprintf='define' d_wait4='undef' d_waitpid='define' d_wcstombs='define' d_wctomb='define' d_xenix='undef' date='date' db_hashtype='u_int32_t' db_prefixtype='size_t' defvoidused='15' direntrytype='struct dirent' dlext='so' dlsrc='dl_dlopen.xs' dynamic_ext='DB_File Fcntl GDBM_File IO NDBM_File ODBM_File Opcode POSIX SDBM_File Socket' eagain='EAGAIN' echo='echo' egrep='egrep' emacs='' eunicefix=':' exe_ext='' expr='expr' extensions='DB_File Fcntl GDBM_File IO NDBM_File ODBM_File Opcode POSIX SDBM_File Socket' find='find' firstmakefile='makefile' flex='' fpostype='fpos_t' freetype='void' full_csh='/bin/csh' full_sed='/bin/sed' gcc='' gccversion='' gidtype='gid_t' glibpth='/usr/shlib /shlib /usr/lib/pa1.1 /usr/lib/large /lib /usr/lib /lib/large /usr/lib/small /lib/small /usr/ccs/lib /usr/ucblib /usr/local/lib' grep='grep' groupcat='' groupstype='gid_t' gzip='gzip' h_fcntl='true' h_sysfile='false' hint='recommended' hostcat='cat /etc/hosts' huge='' i_bsdioctl='' i_db='define' i_dbm='define' i_dirent='define' i_dld='undef' i_dlfcn='define' i_fcntl='define' i_float='define' i_gdbm='define' i_grp='define' i_limits='define' i_locale='define' i_malloc='define' i_math='define' i_memory='undef' i_ndbm='define' i_neterrno='undef' i_niin='define' i_pwd='define' i_rpcsvcdbm='undef' i_sfio='undef' i_sgtty='undef' i_stdarg='define' i_stddef='define' i_stdlib='define' i_string='define' i_sysdir='define' i_sysfile='undef' i_sysfilio='undef' i_sysin='undef' i_sysioctl='define' i_sysndir='undef' i_sysparam='define' i_sysresrc='define' i_sysselct='undef' i_syssockio='' i_sysstat='define' i_systime='define' i_systimek='undef' i_systimes='define' i_systypes='define' i_sysun='define' i_syswait='define' i_termio='undef' i_termios='define' i_time='define' i_unistd='define' i_utime='define' i_values='define' i_varargs='undef' i_varhdr='stdarg.h' i_vfork='undef' incpath='' inews='' installarchlib='/usr/local/lib/perl5/i386-sco_sv/5.00404' installbin='/usr/local/bin' installman1dir='/usr/local/man/man1' installman3dir='/usr/local/lib/perl5/man/man3' installprivlib='/usr/local/lib/perl5' installscript='/usr/local/bin' installsitearch='/usr/local/lib/perl5/site_perl/i386-sco_sv' installsitelib='/usr/local/lib/perl5/site_perl' intsize='4' known_extensions='DB_File Fcntl GDBM_File IO NDBM_File ODBM_File Opcode POSIX SDBM_File Socket' ksh='' large='' ld='cc' lddlflags='-G' ldflags='-belf -dy -L/usr/local/lib' less='less' lib_ext='.a' libc='/lib/libc.so' libperl='libperl5.4.so' libpth='/usr/local/lib /shlib /lib /usr/lib /usr/ccs/lib' libs=' -lsocket -lnsl -lndbm -lgdbm -ldbm -ldb -ldl -lld -lm -lc -lcrypt -lPW -lx' libswanted='intl sfio net socket inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m c cposix posix ndir dir crypt ucb bsd BSD PW x' line='line' lint='' lkflags='' ln='ln' lns='/bin/ln -s' locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include' loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib' longsize='4' lp='' lpr='' ls='ls' lseektype='off_t' mail='' mailx='' make='/bin/make' make_set_make='#' mallocobj='malloc.o' mallocsrc='malloc.c' malloctype='void *' man1dir='/usr/local/man/man1' man1direxp='/usr/local/man/man1' man1ext='1' man3dir='/usr/local/lib/perl5/man/man3' man3direxp='/usr/local/lib/perl5/man/man3' man3ext='3' medium='' mips='' mips_type='' mkdir='mkdir' models='none' modetype='mode_t' more='more' mv='' myarchname='i386-sco_sv' mydomain='.pdev.sco.com' myhostname='charmstr' myuname='sco_sv charmstr 3.2 2 i386 ' n='' nm_opt='-p' nm_so_opt='' nroff='nroff' o_nonblock='O_NONBLOCK' obj_ext='.o' oldarchlib='' oldarchlibexp='' optimize='-O' orderlib='false' osname='sco_sv' osvers='3.2' package='perl5' pager='/usr/bin/more' passcat='' patchlevel='4' path_sep=':' perl='perl' perladmin='hops@sco.com' perlpath='/usr/local/bin/perl' pg='pg' phostname='hostname' plibpth='' pmake='' pr='' prefix='/usr/local' prefixexp='/usr/local' privlib='/usr/local/lib/perl5' privlibexp='/usr/local/lib/perl5' prototype='define' randbits='15' ranlib=':' rd_nodata='-1' rm='rm' rmail='' runnm='true' scriptdir='/usr/local/bin' scriptdirexp='/usr/local/bin' sed='sed' selecttype='fd_set *' sendmail='sendmail' sh='/bin/sh' shar='' sharpbang='#!' shmattype='void *' shortsize='2' shrpenv='env LD_RUN_PATH=/usr/local/lib/perl5/i386-sco_sv/5.00404/CORE' shsharp='true' sig_name='ZERO HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM USR1 USR2 CHLD PWR WINCH URG POLL STOP TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ IOT CLD ' sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 6 18 ' signal_t='void' sitearch='/usr/local/lib/perl5/site_perl/i386-sco_sv' sitearchexp='/usr/local/lib/perl5/site_perl/i386-sco_sv' sitelib='/usr/local/lib/perl5/site_perl' sitelibexp='/usr/local/lib/perl5/site_perl' sizetype='size_t' sleep='' smail='' small='' so='so' sockethdr='' socketlib='' sort='sort' spackage='Perl5' spitshell='cat' split='' ssizetype='ssize_t' startperl='#!/usr/local/bin/perl' startsh='#!/bin/sh' static_ext=' ' stdchar='unsigned char' stdio_base='((fp)->_base)' stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)' stdio_cnt='((fp)->_cnt)' stdio_ptr='((fp)->_ptr)' strings='/usr/include/string.h' submit='' subversion='4' sysman='/local/man/man1' tail='' tar='' tbl='' test='test' timeincl='/usr/include/sys/time.h /usr/include/time.h ' timetype='time_t' touch='touch' tr='tr' troff='' uidtype='uid_t' uname='uname' uniq='uniq' usedl='define' usemymalloc='y' usenm='true' useopcode='true' useperlio='undef' useposix='true' usesfio='false' useshrplib='true' usevfork='false' usrinc='/usr/include' uuname='' vi='' voidflags='15' xlibpth='' zcat='' zip='zip' PATCHLEVEL=4 SUBVERSION=4 CONFIG=true
This is an attempt at modifying the distribution hints file for sco to support building dynamic lib supporting perl. As it is it doesn't seem to work to enable shared libperl and use of shared lib loading, The problem seems to be persuading Configure to find the dlopen and dlerror symbols in the right libc (I suspect its looking in libc.a rather than libc.so).
Contrary to what the hints comments says Optimisation on (-O) builds fine - at least on 5.0.5)
# sco.sh # Courtesy of Joel Rosi-Schwartz# Additional SCO version info from # Peter Wolfe # Last revised # Fri Jul 19 14:54:25 EDT 1996 # by Andy Dougherty # modified hops 03-Mar-98 # To use gcc, use sh Configure -Dcc=gcc # But gcc will *not* do dynamic laoding on 3.2.5.0.0 # for that use sh Configure -Dcc=icc # See below for more details. # figure out what SCO version we are. The output of uname -X is # something like: # System = SCO_SV # Node = xxxxx # Release = 3.2v5.0.0 # KernelID = 95/08/08 # Machine = Pentium # BusType = ISA # Serial = xxxxx # Users = 5-user # OEM# = 0 # Origin# = 1 # NumCPU = 1 # Use /bin/uname (because Gnu may be first on the path and # it does not support -X) to figure out what SCO version we are: rel=`/bin/uname -X | egrep '^Release'` case $rel in *3.2v4.*) scorls=3 ;; # I don't know why this is 3 instead of 4 :-) *3.2v5.*) scorls=5 scorel=`/bin/expr "$rel" : '.*3.2v\(.*\)'` scorelminor=`/bin/expr "$rel" : '.*3.2v5.\(.*\)'` ;; *) scorls=3 ;; # this probabaly shouldn't happen esac # Try to use libintl.a since it has strcoll and strxfrm libswanted="intl $libswanted" # Try to use libdbm.nfs.a since it has dbmclose. # if test -f /usr/lib/libdbm.nfs.a ; then libswanted=`echo "dbm.nfs $libswanted " | sed -e 's/ dbm / /'` fi set X $libswanted shift libswanted="$*" # We don't want Xenix cross-development libraries glibpth=`echo $glibpth | sed -e 's! /usr/lib/386 ! !' -e 's! /lib/386 ! !'` xlibpth='' case "$cc" in *gcc*) ccflags="$ccflags -U M_XENIX" optimize="$optimize -O2" ;; scocc) ;; # On SCO 3.2v5 both cc and icc can build dynamic load, but cc core # dumps if optimised (5.0.0 ??)so I am only setting this up for icc. # It is possible that some 3.2v4.2 system have icc, I seem to # recall it was available as a seperate product but I have no # knowledge if it can do dynamic loading and if so how. # Joel Rosi-Schwartz icc)# Apparently, SCO's cc gives rather verbose warnings # Set -w0 to turn them off. case $scorls in 3) ccflags="$ccflags -W0 -quiet -U M_XENIX" ;; 5) ccflags="$ccflags -belf -dy -w0 -U M_XENIX" optimize="-O1" # -g -O1 will not work # optimize="-O0" may be needed for pack test to pass. lddlflags='-G -L/usr/local/lib' ldflags=' -W l,-Bexport -L/usr/local/lib' dlext='so' dlsrc='dl_dlopen.xs' usedl='define' ;; esac ;; *) # Apparently, miniperl core dumps if -O is used (5.0.0) # hops - modify to allow optimize on 5.0.5 case "$optimize" in '') optimize=none ;; esac # Apparently, SCO's cc gives rather verbose warnings # Set -w0 to turn them off. # For Osr5 force elf dynamic lib build case $scorls in 3) ccflags="$ccflags -W0 -quiet -U M_XENIX" ;; 5) ccflags="$ccflags -belf -dy -w0 -UM_XENIX -DPERL_SCO5" case $scorelminor in 0.5) optimize='-O' # enable elf and dynamic loading cccdlflags='-KPIC -Wl,-Bexport' ccdlflags='-Wl,-Bexport' lddlflags='-G' ldflags='-belf -dy -Wl,-Bexport' dlext='so' dlsrc='dl_dlopen.xs' usedl='define' useshrplib='define' ;; esac ;; esac ;; esac i_varargs=undef # I have received one report that nm extraction doesn't work if you're # using the scocc compiler. This system had the following 'myconfig' # uname='xxx xxx 3.2 2 i386 ' # cc='scocc', optimize='-O' #usenm='false' # If you want to use nm, you'll probably have to use nm -p. The # following does that for you: nm_opt='-p' # I have received one report that you can't include utime.h in # pp_sys.c. Uncomment the following line if that happens to you: # i_utime=undef # Apparently, some versions of SCO include both .so and .a libraries, # but they don't mix as they do on other ELF systems. The upshot is # that Configure finds -ldl (libdl.so) but 'ld' complains it can't # find libdl.a. # I don't know which systems have this feature, so I'll just remove # -dl from libswanted for all SCO systems until someone can figure # out how to get dynamic loading working on SCO. # # The output of uname -X on one such system was # System = SCO_SV # Node = xxxxx # Release = 3.2v5.0.0 # KernelID = 95/08/08 # Machine = Pentium # BusType = ISA # Serial = xxxxx # Users = 5-user # OEM# = 0 # Origin# = 1 # NumCPU = 1 # # The 5.0.0 on the Release= line is probably the thing to watch. # Andy Dougherty # Thu Feb 1 15:06:56 EST 1996 # hops- do in check on version - this works for 5.0.5, dunno about 5.0.[1234] case $scorel in 5.0.0) libswanted=`echo " $libswanted " | sed -e 's/ dl / /'` set X $libswanted shift libswanted="$*" ;; esac # Perl 5.003_05 and later try to include both and # in pp_sys.c, but that fails due to a redefinition of struct timeval. # This will generate a WHOA THERE. Accept the default. i_sysselct=$undef
base/cond...........ok base/if.............ok base/lex............ok base/pat............ok base/term...........ok comp/cmdopt.........ok comp/colon..........ok comp/cpp............ok comp/decl...........ok comp/multiline......ok comp/package........ok comp/proto..........ok comp/redef..........ok comp/script.........ok comp/term...........ok comp/use............ok cmd/elsif...........ok cmd/for.............ok cmd/mod.............ok cmd/subval..........ok cmd/switch..........ok cmd/while...........ok io/argv.............ok io/dup..............ok io/fs...............ok io/inplace..........ok io/pipe.............ok io/print............ok io/read.............ok io/tell.............ok op/append...........ok op/arith............ok op/array............ok op/assignwarn.......ok op/auto.............ok op/bop..............ok op/chop.............ok op/closure..........ok op/cmp..............ok op/cond.............ok op/delete...........ok op/do...............ok op/each.............ok op/eval.............ok op/exec.............ok op/exp..............ok op/flip.............ok op/fork.............ok op/glob.............ok op/goto.............ok op/groups...........skipping test on this platform op/gv...............ok op/inc..............ok op/index............ok op/int..............ok op/join.............ok op/list.............ok op/local............ok op/magic............ok op/method...........ok op/misc.............ok op/mkdir............ok op/my...............ok op/oct..............ok op/ord..............ok op/pack.............ok op/pat..............ok op/push.............ok op/quotemeta........ok op/rand.............ok op/range............ok op/read.............ok op/readdir..........ok op/recurse..........ok op/ref..............ok op/regexp...........ok op/repeat...........ok op/runlevel.........ok op/sleep............ok op/sort.............ok op/split............ok op/sprintf..........ok op/stat.............ok op/study............ok op/subst............ok op/substr...........ok op/sysio............ok op/taint............ok op/tie..............ok op/time.............ok op/undef............ok op/universal........ok op/unshift..........ok op/vec..............ok op/write............ok pragma/constant.....ok pragma/locale.......ok pragma/overload.....ok pragma/strict.......ok pragma/subs.........ok pragma/warning......ok lib/abbrev..........ok lib/anydbm..........ok lib/autoloader......ok lib/basename........ok lib/bigint..........ok lib/bigintpm........ok lib/checktree.......ok lib/complex.........ok lib/db-btree........ok lib/db-hash.........ok lib/db-recno........ok lib/dirhand.........ok lib/dosglob.........ok lib/english.........ok lib/env.............ok lib/filecache.......ok lib/filecopy........ok lib/filefind........ok lib/filehand........ok lib/filepath........ok lib/findbin.........ok lib/gdbm............ok lib/getopt..........ok lib/hostname........ok lib/io_dup..........ok lib/io_pipe.........ok lib/io_sel..........ok lib/io_sock.........ok lib/io_taint........ok lib/io_tell.........ok lib/io_udp..........ok lib/io_xs...........ok lib/ndbm............ok lib/odbm............Bad free() ignored at lib/odbm.t line 63. Bad free() ignored at (eval 4) line 2. ok lib/opcode..........ok lib/open2...........ok lib/open3...........ok lib/ops.............ok lib/parsewords......ok lib/posix...........ok lib/safe1...........ok lib/safe2...........ok lib/sdbm............ok lib/searchdict......ok lib/selectsaver.....ok lib/socket..........ok lib/soundex.........ok lib/symbol..........ok lib/texttabs........ok lib/textwrap........ok lib/timelocal.......ok lib/trig............ok All tests successful. Files=153, Tests=4855, 245 secs (54.46 cusr 18.35 csys = 72.81 cpu)