From: Norton T. Allen Date: Wed, 27 Jun 2001 13:46:03 +0000 (-0400) Subject: Message-Id: <200106271746.NAA02789@bottesini.harvard.edu> X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=af23fe4d694e2dc86e1c1ab453afdcd423752bcb;p=p5sagit%2Fp5-mst-13.2.git Message-Id: <200106271746.NAA02789@bottesini.harvard.edu> p4raw-id: //depot/perl@10990 --- diff --git a/README.qnx b/README.qnx index 67ffd7a..c841bd6 100644 --- a/README.qnx +++ b/README.qnx @@ -14,7 +14,16 @@ As of perl5.004_04, all tests pass under: Watcom 10.6 with Beta/970211.wcc.update.tar.F socket3r.lib Nov21 1996. -Update June 2001: Perl 5.6.1 most probably also works just fine in QNX. +Update June 2001: Perl 5.6.1 works fine in QNX4 with +a few 'known' failures in the test suite. + +[ Perl 5.6.0 is shipping with QNX RTP (aka QNX6, Neutrino), but +the build does not appear to be straightforward. If anyone has +more data in this regard, please let me know. + +These notes were originally written for QNX4 and do not +necessarily apply to Neutrino, but see hints/qnx.sh for +more information. ] =head2 Required Software for Compiling Perl on QNX @@ -63,7 +72,21 @@ from quics for earlier versions. =head2 Outstanding Issues with Perl on QNX -There is currently no support for dynamically linked libraries. +There is no support for dynamically linked libraries in QNX4. + +The following tests may report errors: + +ext/Cwd/Cwd.t will complain if `pwd` and cwd don't give +the same results. cwd calls `fullpath -t`, so if you +cd `fullpath -t` before running the test, it will +pass. + +lib/File/Find/taint.t will complain if '.' is in your +PATH. The PATH test is triggered because cwd calls +`fullpath -t`. + +ext/IO/lib/IO/t/io_sock.t Still investigating +ext/POSIX/sigaction.t Still investigating =head2 QNX auxiliary files diff --git a/hints/qnx.sh b/hints/qnx.sh index 717d115..24199c9 100644 --- a/hints/qnx.sh +++ b/hints/qnx.sh @@ -1,16 +1,22 @@ #---------------------------------------------------------------- # QNX hints # +# These hints were written for QNX4, but are in the process +# of being extended to encompass Neutrino as well. +# # As of perl5.004_04, all tests pass under: # QNX 4.23A # Watcom 10.6 with Beta/970211.wcc.update.tar.F # socket3r.lib Nov21 1996. +# perl-5.6.1 runs well on QNX4 with a few known test failures +# perl-5.6.0 ships with QNX RTP (Neutrino) but the build is +# not yet straightforward. # # As with many unix ports, this one depends on a few "standard" -# unix utilities which are not necessarily standard for QNX. +# unix utilities which are not necessarily standard for QNX4. # # /bin/sh This is used heavily by Configure and then by -# perl itself. QNX's version is fine, but Configure +# perl itself. QNX4's version is fine, but Configure # will choke on the 16-bit version, so if you are # running QNX 4.22, link /bin/sh to /bin32/ksh # ar This is the standard unix library builder. @@ -31,13 +37,31 @@ # ships by default with QNX 4.23, but you can get it # from quics for earlier versions. #---------------------------------------------------------------- -# Outstanding Issues: -# lib/posix.t test fails on test 17 because acos(1) != 0. +# Outstanding Issues for QNX4: +# There is no support for dynamically linked libraries in +# QNX4. +# +# ext/Cwd/Cwd.t will complain if `pwd` and cwd don't give +# the same results. cwd calls `fullpath -t`, so if you +# cd `fullpath -t` before running the test, it will +# pass. +# +# lib/File/Find/taint.t will complain if '.' is in your +# PATH. The PATH test is triggered because cwd calls +# `fullpath -t`. +# +# lib/ExtUtils.t: If you follow these hints and include +# -w4 in your ccflags, this test will complain about +# extra .err files appearing in its test directory. +# +# ext/IO/lib/IO/t/io_sock.t Still investigating +# ext/POSIX/sigaction.t Still investigating +# +# Older issues: +# lib/posix.t test failed on test 17 because acos(1) != 0. # Resolved in 970211 Beta # lib/io_udp.t test hangs because of a bug in getsockname(). # Fixed in latest BETA socket3r.lib -# There is currently no support for dynamically linked -# libraries. #---------------------------------------------------------------- # These hints were submitted by: # Norton T. Allen @@ -52,127 +76,137 @@ echo "Some tests may fail. Please read the hints/qnx.sh file." echo "" #---------------------------------------------------------------- -# At present, all QNX systems are equivalent architectures, +# At present, all QNX4 systems are equivalent architectures, # so it is reasonable to call archname=x86-qnx rather than # making an unnecessary distinction between AT-qnx and PCI-qnx, -# for example. -#---------------------------------------------------------------- -archname='x86-qnx' +# for example. I will use uname's architecture for Neutrino. +#---------------------------------------------------------------- +set X `uname -a` +shift +[ "$1" != "QNX" ] && echo "uname doesn't look like QNX!" +case $4 in + 42[2-9]) archname='x86-qnx';; + *) osname='nto' + osvers=$3 + archname="$5-nto";; +esac -#---------------------------------------------------------------- -# QNX doesn't come with a csh and the ports of tcsh I've used -# don't work reliably: -#---------------------------------------------------------------- -csh='' -d_csh='undef' -full_csh='' +if [ "$osname" = "qnx" ]; then + #---------------------------------------------------------------- + # QNX doesn't come with a csh and the ports of tcsh I've used + # don't work reliably: + #---------------------------------------------------------------- + csh='' + d_csh='undef' + full_csh='' -#---------------------------------------------------------------- -# setuid scripts are secure under QNX. -# (Basically, the same race conditions apply, but assuming -# the scripts are located in a secure directory, the methods -# for exploiting the race condition are defeated because -# the loader expands the script name fully before executing -# the interpreter.) -#---------------------------------------------------------------- -d_suidsafe='define' + #---------------------------------------------------------------- + # setuid scripts are secure under QNX. + # (Basically, the same race conditions apply, but assuming + # the scripts are located in a secure directory, the methods + # for exploiting the race condition are defeated because + # the loader expands the script name fully before executing + # the interpreter.) + #---------------------------------------------------------------- + d_suidsafe='define' -#---------------------------------------------------------------- -# difftime is implemented as a preprocessor macro, so it doesn't show -# up in the libraries: -#---------------------------------------------------------------- -d_difftime='define' + #---------------------------------------------------------------- + # difftime is implemented as a preprocessor macro, so it doesn't show + # up in the libraries: + #---------------------------------------------------------------- + d_difftime='define' -#---------------------------------------------------------------- -# strtod is in the math library, but we can't tell Configure -# about the math library or it will confuse the linker -#---------------------------------------------------------------- -d_strtod='define' + #---------------------------------------------------------------- + # strtod is in the math library, but we can't tell Configure + # about the math library or it will confuse the linker + #---------------------------------------------------------------- + d_strtod='define' -lib_ext='3r.lib' -libc='/usr/lib/clib3r.lib' + lib_ext='3r.lib' + libc='/usr/lib/clib3r.lib' -#---------------------------------------------------------------- -# ccflags: -# I like to turn the warnings up high, but a few common -# constructs make a lot of noise, so I turn those warnings off. -# A few still remain... -# -# unix.h is required as a general rule for unixy applications. -#---------------------------------------------------------------- -ccflags='-mf -w4 -Wc,-wcd=202 -Wc,-wcd=203 -Wc,-wcd=302 -Wc,-fi=unix.h' + #---------------------------------------------------------------- + # ccflags: + # I like to turn the warnings up high, but a few common + # constructs make a lot of noise, so I turn those warnings off. + # A few still remain... + # + # unix.h is required as a general rule for unixy applications. + #---------------------------------------------------------------- + ccflags='-mf -w4 -Wc,-wcd=202 -Wc,-wcd=203 -Wc,-wcd=302 -Wc,-fi=unix.h' -#---------------------------------------------------------------- -# ldflags: -# If you want debugging information, you must specify -g on the -# link as well as the compile. If optimize != -g, you should -# remove this. -#---------------------------------------------------------------- -ldflags="-g -N1M" + #---------------------------------------------------------------- + # ldflags: + # If you want debugging information, you must specify -g on the + # link as well as the compile. If optimize != -g, you should + # remove this. + #---------------------------------------------------------------- + ldflags="-g -N1M" -so='none' -selecttype='fd_set *' + so='none' + selecttype='fd_set *' -#---------------------------------------------------------------- -# Add -lunix to list of libs. This is needed mainly so the nm -# search will find funcs in the unix lib. Including unix.h should -# automatically include the library without -l. -#---------------------------------------------------------------- -libswanted="$libswanted unix" + #---------------------------------------------------------------- + # Add -lunix to list of libs. This is needed mainly so the nm + # search will find funcs in the unix lib. Including unix.h should + # automatically include the library without -l. + #---------------------------------------------------------------- + libswanted="$libswanted unix" -if [ -z "`which ar 2>/dev/null`" ]; then - cat <<-'EOF' >&4 - I don't see an 'ar', so I'm guessing you are running - Watcom 9.5 or earlier. You may want to install the ar - cover found in the qnx subdirectory of this distribution. - It might reasonably be placed in /usr/local/bin. + if [ -z "`which ar 2>/dev/null`" ]; then + cat <<-'EOF' >&4 + I don't see an 'ar', so I'm guessing you are running + Watcom 9.5 or earlier. You may want to install the ar + cover found in the qnx subdirectory of this distribution. + It might reasonably be placed in /usr/local/bin. EOF -fi -#---------------------------------------------------------------- -# Here is a nm script which fixes up wlib's output to look -# something like nm's, at least enough so that Configure can -# use it. -#---------------------------------------------------------------- -if [ -z "`which nm 2>/dev/null`" ]; then - cat <<-EOF - Creating a quick-and-dirty nm cover for Configure to use: + fi + #---------------------------------------------------------------- + # Here is a nm script which fixes up wlib's output to look + # something like nm's, at least enough so that Configure can + # use it. + #---------------------------------------------------------------- + if [ -z "`which nm 2>/dev/null`" ]; then + cat <<-EOF + Creating a quick-and-dirty nm cover for Configure to use: EOF - cat >./UU/nm <<-'EOF' - #! /bin/sh - #__USAGE - #%C [ ...] - # Designed to mimic Unix's nm utility to list - # defined symbols in a library - unset WLIB - for i in $*; do wlib $i; done | - awk ' - /^ / { - for (i = 1; i <= NF; i++) { - sub("_$", "", $i) - print "000000 T " $i - } - }' + cat >./UU/nm <<-'EOF' + #! /bin/sh + #__USAGE + #%C [ ...] + # Designed to mimic Unix's nm utility to list + # defined symbols in a library + unset WLIB + for i in $*; do wlib $i; done | + awk ' + /^ / { + for (i = 1; i <= NF; i++) { + sub("_$", "", $i) + print "000000 T " $i + } + }' EOF - chmod +x ./UU/nm -fi + chmod +x ./UU/nm + fi -cppstdin=`which cpp 2>/dev/null` -if [ -n "$cppstdin" ]; then - cat <<-EOF >&4 - I found a cpp at $cppstdin and will assume it is a good - thing to use. If this proves to be false, there is a - thin cover for cpp in the qnx subdirectory of this - distribution which you could move into your path. + cppstdin=`which cpp 2>/dev/null` + if [ -n "$cppstdin" ]; then + cat <<-EOF >&4 + I found a cpp at $cppstdin and will assume it is a good + thing to use. If this proves to be false, there is a + thin cover for cpp in the qnx subdirectory of this + distribution which you could move into your path. EOF - cpprun="$cppstdin" -else - cat <<-EOF >&4 + cpprun="$cppstdin" + else + cat <<-EOF >&4 - There is a cpp cover in the qnx subdirectory of this - distribution which works a little better than the - Configure default. You may wish to copy it to - /usr/local/bin or some other suitable location. + There is a cpp cover in the qnx subdirectory of this + distribution which works a little better than the + Configure default. You may wish to copy it to + /usr/local/bin or some other suitable location. EOF -fi + fi +fi