SCO Notes
.........
The current port is tested only on a "sco3.2v5.0.4" and "sco3.2v5.0.5"
system. There has also been a lot of progress on a port to "sco
3.2v4.2".
For the moment the recommended compiler on OpenServer is gcc 2.95.2.
With this you should be able to compile MySQL with just:
CC=gcc CXX=gcc ./configure ... (options)
1. For OpenServer 5.0.X you need to use GDS in Skunkware 95 (95q4c).
This is necessary because GNU `gcc' 2.7.2 in Skunkware 97 does not
have GNU `as'. You can also use `egcs' 1.1.2 or newer
`http://www.egcs.com/'. If you are using `egcs' 1.1.2 you have to
execute the following command:
shell> cp -p /usr/include/pthread/stdtypes.h /usr/local/lib/gcc-lib/i386-pc-sco3.2v5.0.5/egcs-2.91.66/include/pthread/
2. You need the port of GCC 2.5.x for this product and the Development
system. They are required on this version of SCO Unix. You cannot
just use the GCC Dev system.
3. You should get the FSU Pthreads package and install it first.
This can be found at
`http://www.cs.wustl.edu/~schmidt/ACE_wrappers/FSU-threads.tar.gz'.
You can also get a precompiled package from
`http://www.mysql.com/Downloads/SCO/FSU-threads-3.5c.tar.gz'.
4. FSU Pthreads can be compiled with SCO Unix 4.2 with tcpip. Or
OpenServer 3.0 or Open Desktop 3.0 (OS 3.0 ODT 3.0), with the SCO
Development System installed using a good port of GCC 2.5.x ODT or
OS 3.0 you will need a good port of GCC 2.5.x There are a lot of
problems without a good port. The port for this product requires
the SCO Unix Development system. Without it, you are missing the
libraries and the linker that is needed.
5. To build FSU Pthreads on your system, do the following:
a. Run `./configure' in the `threads/src' directory and select
the SCO OpenServer option. This command copies
`Makefile.SCO5' to `Makefile'.
b. Run `make'.
c. To install in the default `/usr/include' directory, login as
root, then `cd' to the `thread/src' directory, and run `make
install'.
6. Remember to use GNU `make' when making MySQL.
7. If you don't start `safe_mysqld' as root, you probably will get
only the default 110 open files per process. `mysqld' will write
a note about this in the log file.
8. With SCO 3.2V5.0.5, you should use FSU Pthreads version 3.5c or
newer. You should also use gcc 2.95.2 or newer!
The following `configure' command should work:
shell> ./configure --prefix=/usr/local/mysql --disable-shared
9. With SCO 3.2V4.2, you should use FSU Pthreads version 3.5c or
newer. The following `configure' command should work:
shell> CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" \
./configure \
--prefix=/usr/local/mysql \
--with-named-thread-libs="-lgthreads -lsocket -lgen -lgthreads" \
--with-named-curses-libs="-lcurses"
You may get some problems with some include files. In this case,
you can find new SCO-specific include files at
`http://www.mysql.com/Downloads/SCO/SCO-3.2v4.2-includes.tar.gz'.
You should unpack this file in the `include' directory of your
MySQL source tree.
SCO development notes:
* MySQL should automatically detect FSU Pthreads and link `mysqld'
with `-lgthreads -lsocket -lgthreads'.
* The SCO development libraries are re-entrant in FSU Pthreads. SCO
claims that its libraries' functions are re-entrant, so they must
be reentrant with FSU Pthreads. FSU Pthreads on OpenServer tries
to use the SCO scheme to make re-entrant libraries.
* FSU Pthreads (at least the version at `http://www.mysql.com/')
comes linked with GNU `malloc'. If you encounter problems with
memory usage, make sure that `gmalloc.o' is included in
`libgthreads.a' and `libgthreads.so'.
* In FSU Pthreads, the following system calls are pthreads-aware:
`read()', `write()', `getmsg()', `connect()', `accept()',
`select()', and `wait()'.
* The CSSA-2001-SCO.35.2 (the patch is listed in custom as
erg711905-dscr_remap security patch (ver 2.0.0) breaks FSU threads
and makes mysqld instable. You have to remove this one if you
want to run mysqld on an OpenServer 5.0.6 machine.
If you want to install DBI on SCO, you have to edit the `Makefile' in
DBI-xxx and each subdirectory.
Note that the following assumes gcc 2.95.2 or newer:
OLD: NEW:
CC = cc CC = gcc
CCCDLFLAGS = -KPIC -W1,-Bexport CCCDLFLAGS = -fpic
CCDLFLAGS = -wl,-Bexport CCDLFLAGS =
LD = ld LD = gcc -G -fpic
LDDLFLAGS = -G -L/usr/local/lib LDDLFLAGS = -L/usr/local/lib
LDFLAGS = -belf -L/usr/local/lib LDFLAGS = -L/usr/local/lib
LD = ld LD = gcc -G -fpic
OPTIMISE = -Od OPTIMISE = -O1
OLD:
CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include
NEW:
CCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include
This is because the Perl dynaloader will not load the `DBI' modules if
they were compiled with `icc' or `cc'.
Perl works best when compiled with `cc'.