This directory contains packages of compiled software for SCO Unix 3.2v4.2. (Actually, it was produced for SCO Open Desktop 3.0, which is the same as SCO Unix 3.2v4.2 with the addition of TCP/IP.) Most of the software in these packages is free software from the Free Software Foundation's GNU project and other sources. However, there is one important exception in the libc package; if you use that package, you MUST read the information at the top of the src/usleep.c file. If you have the SCO Unix Development System installed, then you do not need the libc package. In this case, you probably should not use the libc package, because it is likely to contain bugs. In fact, why are you here? :-) If you do not have the SCO Unix Development System installed, then you will not be able to compile C programs unless you use the libc, binutils and gcc packages (at a minimum). I have not fully tested all the software in these packages. However, these packages have been in use in a C/Unix training environment for a few weeks, and have been tested well enough that you should be able to use them youself in a similar environment. Unfortunately, the process by which I created these packages (see below) was a learning experience for me, so some discrepancies may appear when you try to install them on your system. On my system I have the following: drwxr-xr-x 16 root other 320 Oct 22 10:05 /u/gnu lrwxrwxrwx 1 root other 5 Oct 22 09:27 /usr/gnu -> local lrwxrwxrwx 1 root other 6 Sep 24 10:39 /usr/local -> /u/gnu If you have path problems with the installed programs (e.g., if a program cannot find its help files), you may have to duplicate my configuration or approximate it as best you can. Most of the programs in these packages were compiled with pathnames embedded in them, so they are sensitive about their locations. For each package, the installation procedure is as follows: 1) Become super-user. 2) Make sure the "gzip" program is in a directory which appears in your path. If you don't already have gzip on your system, you should download gzip.Z and uncompress it. 3) cd /usr/local 4) gzip -dc PACKAGE.tar.gz | tar xvf - Of course, PACKAGE refers to the name of the package you are installing. To use the programs supplied in these packages, make sure "/usr/local/bin" appears in your path. I have omitted the documentation which normally accompanies these packages for some reasons including these: 1) I have space restrictions. 2) SCO's man command doesn't work right, so you can't read the local man pages anyway, even if MANPATH is correctly set. 3) I didn't even try to compile the GNU info reader. 4) The documentation is available with the source code at ftp://prep.ai.mit.edu/pub/gnu and its mirrors. 5) If you need the documentation for these packages, then this isn't the distribution for you. It has bugs. If you aren't an experienced developer capable of recognizing and working around (or fixing) these bugs, you should purchase the SCO Unix DevSys and optionally the SCO SkunkWare package (which has older precompiled GNU programs, but not libc). Package-specific details follow: ***** gcc This is probably why you're here. This package contains the GNU C compiler, version 2.7.2.3. It does not contain the C++ or Objective C compilers -- I don't use them. If you need those languages, you will have to compile them yourself (and good luck). This program is covered by the GNU General Public License; see the file COPYING for details. In order to compile C programs under SCO Unix, you will need gcc and the following other packages: libc binutils You will probably also want the "make" package, although in theory you can get by without it. ***** binutils This is GNU binutils 2.8.1. These were built and installed without any problems that I can remember. These programs are covered by the GNU General Public License; see the file COPYING for details. You need these files to compile programs. This package includes the assembler and the linker, which are called by the compiler, as well as several other programs that are useful in development work. ***** libc This is the fundamental programming environment. It provides libc.a and header files (such as stdio.h) needed to compile C programs. SCO Unix 3.2v4.2 does not supply this information(!). This is mostly GNU libc 1.09.1. However, compiling libc is rather problematic when one does not already have a working set of header files, so I had to piece together various bits of code. Portions of libc are actually object files from glibc-1.06.4a.SCO.tar.gz which I originally obtained from http://www.uci.agh.edu.pl/pub/sco/gnu-bins/ . That libc has many bugs, but it also has many working functions which I used. In addition, portions of this libc were written by me, and one function (usleep()) was taken from Usenet. Because of this eclectic lineage, there is a license dilemma involving this package. You MUST read src/usleep.c which describes the terms under which you may use certain functions in this library. I have provided this file as src-usleep.c as well, for those who would like to read the license contained therein without downloading and extracting the whole libc package. Except as noted in the src/usleep.c file, the majority of the libc package is distributed under the GNU Library General Public License. See the file COPYING.LIB for details. The include/sys/param.h file produced by the glibc installtion on my system contained code which was copyrighted by SCO, Microsoft and others, so I have not included it. However, I have included include/sys/param.h.diff and include/sys/param.h.diff2 which, when applied to /usr/include/sys/param.h in the proper order, will generate the include/sys/param.h file. (I had to split the patch into two pieces because the original diff triggered some sort of bug in patch that I didn't feel like tracking down....) I produced this package using the following procedure, or something close to it: 1) Install glibc-1.06.4a.SCO.tar.gz and other packages on SCO. 2) Configure binutils-2.8.1 as Linux->SCO cross-compiler tools on Linux. 3) Configure gcc-2.7.2.3 as a Linux->SCO cross-compiler on Linux. Cross-compilation from Linux to SCO requires the SCO header files and libc.a, which I copied onto Linux from glibc-1.06.4a. 4) Compile glibc-1.09.1 for SCO on Linux. Copy onto SCO. 5) Use glibc-1.09.1 with the older GNU tools (also from the above site) to compile gcc-2.7.2.3 on SCO. 6) Use gcc-2.7.2.3 and glibc-1.09.1 to compile binutils-2.8.1 on SCO. 7) Use gcc-2.7.2.3 and binutils-2.8.1 to recompile glibc-1.09.1 on SCO. 8) Test glibc-1.09.1, replace the functions which cause core dumps with the corresponding objects from glibc-1.06.4a, or with code taken from Usenet, or with hand-written code. (The preceding description is not meant to be a walkthrough for the process. I've probably forgotten some of the steps, and I've definitely skipped the details on some of the ugly ones like number 3.) The training environment in which I've used this package requires an ecvt() function as well. I've written one, but it has known problems, so I have chosen not to distribute it. If you're interested in this function, e-mail me. I've renamed include/termios.h and include/sys/termios.h because compiling with these headers (which are for POSIX terminal function) produces programs that don't work properly. You can use termio.h (old SysV) functions, if your program supports that interface. I added code to include/sys/types.h which defines some data types that are required by SCO's /usr/include/sys/*.h files. ***** binutils-lib This package holds some libraries which are built as part of the GNU binutils 2.8.1 distribution. I've separated them out into this package because they are rather large, and aren't necessary for most development work. These files are covered by the GNU General Public License; see the file COPYING for details. ***** make This is GNU make 3.76.1. You will need this package to compile packages which have a makefile or Makefile, or whose instructions say to type "make". When in doubt, get this. This program is covered by the GNU General Public License; see the file COPYING for details. I fixed one bug in this package (but I'm not sure whether it's a make bug or a SCO Unix bug). The commands issued by make will always spawn "/bin/ksh" if the initial exec fails, rather than "/bin/sh" or $SHELL. You can observe this bug in action by typing "sh true" at the SCO Unix command line; try "ksh true" to see what it's supposed to do. (I reported this problem and my patch to the FSF.) Known problem: sometimes when building large packages with recursive make calls, the directory name is not printed correctly upon entering and/or leaving. (The recursive call works, however.) ***** gdb This is the GNU debugger, version 4.16. Programs compiled using gcc -g can be debugged by gdb. Unfortunately, core dumps cannot be debugged with the tools in this package, so just delete them. :-( This program is covered by the GNU General Public License; see the file COPYING for details. ***** bison This is GNU bison 1.25. You don't need this to compile most programs. This program is covered by the GNU General Public License; see the file COPYING for details. ***** ncurses This is the ncurses library, version 1.9.9g. This program is covered by the license contained in the file COPYING.ncurses. Please read that file for details. This package contains libraries and header files used in compiling programs which manipulate the terminal. It implements the System V Release 4 curses library with some extensions. The ncurses library was compiled with termcap fallback support, meaning that it renders the termcap library (see below) obsolete. See the termcap section below for details on the coexistence of these two libraries. This package does not include the supporting programs for manipulation of the terminfo database; those are in the ncurses-prog package (see below). Don't forget to set your TERMINFO environment variable! The default terminfo database location for this package is /usr/local/share/terminfo, which is almost guaranteed not to exist on most people's SCO Unix systems. ***** ncurses-prog These are the supporting programs which come with ncurses, version 1.9.9g. This program is covered by the license contained in the file COPYING.ncurses. Please read that file for details. This package contains programs which manipulate the terminfo database which ncurses and other programs use to define the behavior of various terminals and terminal emulators. Most of these programs already come with SCO Unix; you probably do not need this package. This package does not include the libraries or header files for compiling curses programs; those are in the ncurses package (see above). This package also does not contain a terminfo database, for space reasons. SCO Unix comes with a terminfo database; you can also find a (larger) terminfo database at http://www.ccil.org/~esr/terminfo/ . ***** termcap This is the GNU termcap library, version 1.3. This program is covered by the GNU Library General Public License; see the file COPYING.LIB for details. Termcap is an obsolete system, being replaced by terminfo. I got this library to compile before I got ncurses to compile, because it is smaller and simpler; you will generally not need termcap, but I've included it for compatibility and because -- hey, it's already working! :-) If you get both termcap and ncurses from this distribution, you should unpack ncurses *after* unpacking termcap, unless you unpack them into separate locations (which may be better). The reason for this is that both these libraries include a file named "include/termcap.h". ***** less This is GNU less version 332. Less is a pager similar to "more" or "pg". This program is covered by the GNU General Public License; see the file COPYING for details. I've built this program using the ncurses library (see above). ***** zone This package contains the programs zic and zdump. These two programs were, I think, part of glibc. I don't fully understand how they work. I ran them and they didn't dump core.... Anyway, these should be covered by the GNU Library General Public License, since they're part of the GNU C Library. See the file COPYING.LIB for details. ============================================================================== This distribution was produced by Greg Wooledge. I can be reached by e-mail at or or . If something in this distribution doesn't work, it's probably my fault. If you find a bug, I may not be able to fix the problem, but I'd really appreciate hearing about it.