321 lines
14 KiB
Plaintext
321 lines
14 KiB
Plaintext
|
README.LynxOS
|
||
|
=============
|
||
|
|
||
|
Written by Ronald F. Guilmette <rfg@monkeys.com>
|
||
|
|
||
|
Last modified Wed Aug 14 23:10:07 PDT 1996
|
||
|
------------------------------------------
|
||
|
|
||
|
0. Introduction
|
||
|
---------------
|
||
|
|
||
|
This file describes how to build and install the Berkeley nvi editor for
|
||
|
the LynxOS 2.4.0 operating system.
|
||
|
|
||
|
LynxOS 2.4.0 is available for a variety of different hardware platforms, in
|
||
|
particular, x86, m680x0, Sparc, and PowerPC. I have successfully built nvi
|
||
|
on all four of these flavors of LynxOS by following the procedures given in
|
||
|
this file.
|
||
|
|
||
|
Note that these procedures may not work on versions of LynxOS prior to 2.4.0.
|
||
|
(As I understand it, a good deal of work went into making the 2.4.0 release
|
||
|
more POSIX-compliant, and I have no idea what build glitches, if any, you
|
||
|
might encounter if you try to build nvi on a pre-2.4.0 version of LynxOS.)
|
||
|
|
||
|
There are basically four steps to configuring, building, and installing nvi
|
||
|
on LynxOS, namely:
|
||
|
|
||
|
1. Get setup to use the proper C compiler.
|
||
|
2. Replace your installed `tr' program.
|
||
|
3. Fix your system include files.
|
||
|
4. Do a normal configure, build, and install of nvi.
|
||
|
|
||
|
These steps are described in separate sections below.
|
||
|
|
||
|
1. Get Setup to Use the Proper C Compiler
|
||
|
------------------------------------------
|
||
|
|
||
|
The first step when building nvi on LynxOS is to set your $PATH environment
|
||
|
variable properly so that the gcc 2.x compiler appears first on your path,
|
||
|
prior to the older (and less robust) gcc 1.xx compiler (typically installed
|
||
|
as /bin/gcc) and/or the old Lynx proprietary C compiler (typically installed
|
||
|
as /bin/cc), both of which may also be present on your system.
|
||
|
|
||
|
Note that for most operating systems, the configure script for nvi tries
|
||
|
to use whatever compiler you have installed (and in your $PATH) as "cc",
|
||
|
however in the special case of LynxOS, the configure script will auto-
|
||
|
matically try to find a "gcc" program on your $PATH in preference to a
|
||
|
compiler called "cc". If the nvi configure script only find a compiler
|
||
|
called "cc", that's OK. It will still try to see if that is really just
|
||
|
the GNU C compiler installed under the name "cc".
|
||
|
|
||
|
Regardless of the name however (be it "gcc" or "cc") the first C compiler
|
||
|
in your $PATH should be some _recent_ (i.e. 2.0 or later) version of the
|
||
|
GNU C compiler... and the nvi configure script now checks that this is the
|
||
|
case, and fails if it isn't.
|
||
|
|
||
|
Oddly enough, LynxOS 2.4.0 (and some prior versions) shipped with as many
|
||
|
as three different C compilers installed, so it is important to set your
|
||
|
$PATH environment variable carfully in order to get the proper C compiler
|
||
|
to appear first in your $PATH. You want to avoid having either the /bin/gcc
|
||
|
compiler or the /bin/cc compiler be the first C compiler in your $PATH.
|
||
|
|
||
|
To make sure that the GNU C version 2.x compiler which was shipped with your
|
||
|
LynxOS system appears first on your path, you will need to either set your
|
||
|
$PATH variable (for sh/bash/ksh users) or your $path variable (for csh/tcsh
|
||
|
users). You can, of course, just do this at the shell command prompt, but
|
||
|
it is probably better to actually edit this change into your .profile file
|
||
|
(for sh/bash/ksh users) or into your .cshrc file (for csh/tcsh users).
|
||
|
|
||
|
The pathname of the directory that contains the GNU C version 2.x compiler
|
||
|
is (unfortunately) dependent upon the exact type of LynxOS system you have.
|
||
|
|
||
|
For LynxOS 2.4.0 on x86 systems, gcc 2.x is located in:
|
||
|
|
||
|
/cygnus/94q4-lynxos-x86/bin
|
||
|
|
||
|
For LynxOS 2.4.0 on m680x0 systems, gcc 2.x is located in:
|
||
|
|
||
|
/cygnus/94q4-lynxos-68k/bin
|
||
|
|
||
|
For LynxOS 2.4.0 on Sparc systems, gcc 2.x is located in:
|
||
|
|
||
|
/cygnus/94q4-lynxos-usparc/bin
|
||
|
|
||
|
For LynxOS 2.4.0 on PowerPC systems, gcc 2.x is located in:
|
||
|
|
||
|
/cygnus/95q2-lynxos-ppc/bin
|
||
|
|
||
|
(Note also that these locations may change in LynxOS 2.5.x and beyond.)
|
||
|
|
||
|
Anyway, it is imperative that you setup your $PATH environment variable
|
||
|
(*before* you do the configure step for nvi) so that the GNU C version 2.x
|
||
|
compiler appears in your $PATH before either the /bin/cc or /bin/gcc
|
||
|
compilers (if present). If you fail to do this, the configure step for
|
||
|
nvi will fail, because the compiler script actually checks (now) that the
|
||
|
compiler you are using (if your are on a LynxOS system) is gcc 2.0 or
|
||
|
later.
|
||
|
|
||
|
To make absolutely sure that you will be configuring and building nvi with
|
||
|
the proper C compiler (i.e. the GNU C version 2.x compiler on your system)
|
||
|
you should add the directory name listed above for your specific system type
|
||
|
to your $PATH setting in your $HOME/.profile file. (For csh/tcsh users, you
|
||
|
will instead want to add the relevant directory name to the setting of your
|
||
|
$path variable in your ~/.cshrc file.) Once you have added the proper direc-
|
||
|
tory name (from the list given above) to your $HOME/.profile file (or to your
|
||
|
~/.cshrc file, if you are using csh or tcsh) you should log out completely
|
||
|
and then log back into the system just to make sure your new $PATH/$path
|
||
|
setting takes effect properly.
|
||
|
|
||
|
When you finish making this adjustment to your $PATH (or $path), the most
|
||
|
up-to-date version of gcc on your system should be available to you as the
|
||
|
first `gcc' program on your $PATH. You should verify that this is indeed the
|
||
|
case simply by typing `gcc -v' and then checking the version number reported
|
||
|
by the compiler. It should say either "2.6-94q4" or (on PowerPC systems) it
|
||
|
should say "2.6-95q2". If you don't get these results, try again to set your
|
||
|
$PATH (or $path) until you do. You won't be able to build nvi until you are
|
||
|
properly setup to use gcc version 2.0 or later.
|
||
|
|
||
|
Performing the steps shown above will insure that your subsequent configura-
|
||
|
tion and build steps for nvi will make use of the most up-to-date version of
|
||
|
gcc that was shipped with your Lynx operating system. (Note that the versions
|
||
|
of gcc which are currently shipping with LynxOS 2.4.0 are also somewhat out-
|
||
|
of-date themselves, but they are still quite a bit newer and more bug-free
|
||
|
and ANSI conformant that those other two C compilers, /bin/cc and /bin/gcc,
|
||
|
which also ship with LynxOS 2.4.0.)
|
||
|
|
||
|
(Note: At present, LynxOS version 2.4.0 is the latest officially released
|
||
|
version of LynxOS, and all of the above information is accurate and correct
|
||
|
for LynxOS 2.4.0 as of the time of this writing. However it is rumored that
|
||
|
future releases of LynxOS may provide a still newer version of gcc, and that
|
||
|
it may be located in the /usr/bin directory. Thus, if you are building nvi
|
||
|
for some LynxOS version later than 2.4.0, you may wish to check and see if
|
||
|
your system has a program called /usr/bin/gcc, and use that version of gcc,
|
||
|
if available, rather than the one suggested above.)
|
||
|
|
||
|
2. Replace Your Installed `tr' Program
|
||
|
---------------------------------------
|
||
|
|
||
|
The `tr' program which comes bundled with LynxOS 2.4.0 (as /bin/tr) has a
|
||
|
somewhat obscure bug which just happens to be tickled by almost all GNU
|
||
|
`autoconf' generated `configure' scripts (including the one that nowadays
|
||
|
comes bundled with nvi). Using the stock /bin/tr program on LynxOS when
|
||
|
executing such `configure' scripts _will_ cause these scripts to malfunction
|
||
|
in various ways. It is therefore imperative that you replace your LynxOS
|
||
|
/bin/tr program with a properly working version of the `tr' command _before_
|
||
|
you even try to configure nvi. (You can tell if your `tr' program has the
|
||
|
bug by executng the command "echo ab- | tr ab- ABC". If this yields the
|
||
|
string "Ab-" then you have the bug. If it yields "ABC" then you don't.)
|
||
|
|
||
|
You can obtain sources for a working version of the `tr' command as part of
|
||
|
the GNU `textutils' package (the latest version of which, at the time of this
|
||
|
writing, is 1.19). The GNU textutils package is available for downloading
|
||
|
from prep.ai.mit.edu in the pub/gnu directory. Look for the file named
|
||
|
textutils-1.19.tar.gz, or an even more recent version of textutils, if one
|
||
|
is available. Fetch it, gunzip it, untar it, and follow the directions in
|
||
|
the INSTALL file included in the tar file to build and install the entire
|
||
|
textutils set of utility programs (which includes a working `tr' program).
|
||
|
Then just make sure that the GNU version of `tr' appears on your $PATH
|
||
|
_before_ the LynxOS version of `tr' (i.e. /bin/tr). Be sure to do this
|
||
|
step _before_ you start to configure nvi.
|
||
|
|
||
|
When building the textutils set of programs, I suggest that you use the most
|
||
|
up-to-date C compiler available on your system (as described above). Also,
|
||
|
note that it will be important for you to AVOID using the -O (optimize)
|
||
|
compiler option when building the GNU textutils package, even if you are
|
||
|
using the most up-to-date version of gcc which shipped with your system.
|
||
|
If you try to use -O when building the textutils package on an x86 with
|
||
|
the Cygnus 94q4 C compiler, you will end up with a `tr' program which will
|
||
|
malfunction even worse than the one you are trying to replace! If you use
|
||
|
-O when building the textutils package on LynxOS on the PowerPC (using the
|
||
|
Cygnus 95q2 C compiler) you will just get yourself a compiler crash. So
|
||
|
just don't use -O when building textutils. You can avoid using -O by in-
|
||
|
voking make in the textutils directory as follows:
|
||
|
|
||
|
make CFLAGS="-g"
|
||
|
|
||
|
(Note: At present, LynxOS version 2.4.0 is the latest officially released
|
||
|
version of LynxOS, and all of the above information is accurate and correct
|
||
|
for LynxOS 2.4.0 as of the time of this writing. However it is rumored that
|
||
|
the bug in the /bin/tr program will be fixed in future releases of LynxOS,
|
||
|
so if you have a version of LynxOS later than 2.4.0, you may wish to check
|
||
|
and see if your /bin/tr program even has the problematic bug before bothering
|
||
|
with all of this.)
|
||
|
|
||
|
|
||
|
3. Fix Your System Include Files
|
||
|
---------------------------------
|
||
|
|
||
|
If you are building nvi on a PowerPC system, it is also important that you
|
||
|
apply the patches given at the end of this file to your /usr/include files.
|
||
|
(Note that you will have to be root in order to do this.) Two of the patches
|
||
|
included below fix a pair of serious bugs in the /usr/include/stdarg.h file
|
||
|
on the PowerPC, and you really _do_ want to have these bugs fixed anyway,
|
||
|
because without these fixes, anything that you compile which uses <stdarg.h>
|
||
|
will very likely malfunction at run-time.
|
||
|
|
||
|
Regardless of which LynxOS platform you are using (i.e. x86, PowerPC, Sparc,
|
||
|
or m680x0) you may want to apply all of the system include files patches that
|
||
|
are included below anyway. Doing so will clean up a few minor problems with
|
||
|
the relevant system include files (i.e. <stdarg.h>, <ioctl.h>, and <wait.h>)
|
||
|
and this step will also prevent a few warnings which you would otherwise get
|
||
|
during the build of nvi.
|
||
|
|
||
|
You can apply all of the patches given at the end of this file simply by
|
||
|
doing the following:
|
||
|
|
||
|
su root
|
||
|
cd /usr/include
|
||
|
/bin/patch < this-file
|
||
|
|
||
|
Where `this-file' is the actual full pathname of the file you are now reading,
|
||
|
wherever it may reside on your own system.
|
||
|
|
||
|
(Note: At present, LynxOS version 2.4.0 is the latest officially released
|
||
|
version of LynxOS, and all of the above information is accurate and correct
|
||
|
for LynxOS 2.4.0 as of the time of this writing. However it is rumored that
|
||
|
future releases of LynxOS may incorporate some or all of the important system
|
||
|
include file fixes provided below. Thus, if you are building nvi for some
|
||
|
LynxOS version later than 2.4.0, you should probably go ahead and try to
|
||
|
apply the patches given below to your system include files, and then just
|
||
|
don't worry about it if these patches seem to have already been applied.)
|
||
|
|
||
|
|
||
|
4. A Brief Note about Sendmail
|
||
|
-------------------------------
|
||
|
|
||
|
I should mention also that LynxOS does not normally ship with the `sendmail'
|
||
|
mail transfer program installed, either under /usr/lib/ or anywhere else for
|
||
|
that matter. This isn't really a big problem, but nvi normally wants and
|
||
|
expects to have a sendmail program available so that it can send users notifi-
|
||
|
cations (by mail) whenever a partially edited file is preserved by the editor
|
||
|
in response to a sudden system crash, a sudden system shutdown, or an unexpect-
|
||
|
ed serial-line hangup. You can configure and build nvi without any sendmail
|
||
|
program installed on your system, but you will get warnings about its absence
|
||
|
when you are doing the initial configure step prior to actually building nvi.
|
||
|
If you want to have a fully-functional nvi which does send out notification
|
||
|
messages (by mail) whenever partially edited files are preserved during a
|
||
|
serial line hangup or system crash, then you should get the BSD sendmail
|
||
|
sources (via ftp from ftp.cs.berkeley.edu), build and install sendmail, and
|
||
|
then reconfigure, rebuild, and reinstall nvi.
|
||
|
|
||
|
Please contact me at the E-mail address below if you experience any problems in
|
||
|
building or using nvi on LynxOS. I make no guarrantees, but I may be willing
|
||
|
to try to help.
|
||
|
|
||
|
Ron Guilmette
|
||
|
Roseville, California
|
||
|
<rfg@monkeys.com>
|
||
|
August 14, 1996
|
||
|
|
||
|
|
||
|
cut here for LynxOS 2.4.0 system include files patches
|
||
|
-----------------------------------------------------------------------------
|
||
|
*** wait.h Fri Apr 26 10:02:45 1996
|
||
|
--- wait.h Sun May 19 05:36:50 1996
|
||
|
***************
|
||
|
*** 94,104 ****
|
||
|
/* Function prototypes */
|
||
|
#ifndef __LYNXOS
|
||
|
- #ifdef _POSIX_SOURCE
|
||
|
extern pid_t wait _AP((int *));
|
||
|
extern pid_t waitpid _AP((pid_t, int *, int));
|
||
|
! #else
|
||
|
! extern int wait _AP((union wait *));
|
||
|
! extern int waitpid _AP((int, union wait *, int));
|
||
|
! extern int wait3 _AP((union wait *, int, struct rusage *));
|
||
|
#endif
|
||
|
#endif /* !__LYNXOS */
|
||
|
--- 94,101 ----
|
||
|
/* Function prototypes */
|
||
|
#ifndef __LYNXOS
|
||
|
extern pid_t wait _AP((int *));
|
||
|
extern pid_t waitpid _AP((pid_t, int *, int));
|
||
|
! #ifndef _POSIX_SOURCE
|
||
|
! extern int wait3 _AP((int *, int, struct rusage *));
|
||
|
#endif
|
||
|
#endif /* !__LYNXOS */
|
||
|
*** ioctl.h Fri Apr 26 16:50:51 1996
|
||
|
--- ioctl.h Sat May 18 17:55:16 1996
|
||
|
***************
|
||
|
*** 572,576 ****
|
||
|
|
||
|
#ifndef __LYNXOS
|
||
|
! extern int ioctl _AP((int, int, char *));
|
||
|
#endif
|
||
|
|
||
|
--- 572,576 ----
|
||
|
|
||
|
#ifndef __LYNXOS
|
||
|
! extern int ioctl _AP((int, int, ...));
|
||
|
#endif
|
||
|
|
||
|
*** stdarg.h Fri Apr 26 16:51:02 1996
|
||
|
--- stdarg.h Sat May 18 19:34:13 1996
|
||
|
***************
|
||
|
*** 88,92 ****
|
||
|
(((sizeof(TYPE) + sizeof(int) - 1) / sizeof(int)) * sizeof(int))
|
||
|
|
||
|
! #define va_start(AP, LASTARG) (AP = ((char *) __builtin_next_arg ()))
|
||
|
|
||
|
void va_end(va_list); /* Defined in libgcc.a */
|
||
|
--- 88,92 ----
|
||
|
(((sizeof(TYPE) + sizeof(int) - 1) / sizeof(int)) * sizeof(int))
|
||
|
|
||
|
! #define va_start(AP, LASTARG) (AP = ((char *) __builtin_next_arg (LASTARG)))
|
||
|
|
||
|
void va_end(va_list); /* Defined in libgcc.a */
|
||
|
***************
|
||
|
*** 162,166 ****
|
||
|
(((sizeof(TYPE) + sizeof(int) - 1) / sizeof(int)) * sizeof(int))
|
||
|
|
||
|
! #define va_start(AP, LASTARG) (AP = ((char *) __builtin_next_arg ()))
|
||
|
|
||
|
void va_end(va_list); /* Defined in libgcc.a */
|
||
|
--- 162,166 ----
|
||
|
(((sizeof(TYPE) + sizeof(int) - 1) / sizeof(int)) * sizeof(int))
|
||
|
|
||
|
! #define va_start(AP, LASTARG) (AP = ((char *) __builtin_next_arg (LASTARG)))
|
||
|
|
||
|
void va_end(va_list); /* Defined in libgcc.a */
|