1################################################################################
2#
3# Version: Onyx 5.1.2
4#
5# Supported platforms and platform-specific information.
6#
7################################################################################
8
9* Fedora Core 1.
10
11  + There are signal handling issues for SMP kernels that wreak havoc on Onyx's
12    garbage collector.  Expect Onyx to deadlock as a result.  Viable workarounds
13    include:
14
15    1) Run a uniprocessor kernel.
16    2) Use GNU pth rather than pthreads.
17    3) Disable threads.
18
19* Red Hat Linux 9.
20
21  + There are serious bugs in NPTL (the new pthreads implementation) that cause
22    Onyx to deadlock during startup.  An updated glibc was released by Red Hat
23    that fixes this problem.
24
25  + The signal handling issues in Fedora Core 1 apply to Red Hat Linux 9 as
26    well.
27
28* Red Hat Linux 8.
29
30  + Job control support (suspend/resume) is broken when using libedit for
31    command line editing.  This is because LinuxThreads's signal handling
32    semantics are broken.  There is workaround code in
33    mod/modprompt/src/modprompt.c that can be enabled by defining the
34    CW_MODPROMPT_LINUXTHREADS cpp macro.
35
36  + The Onyx 4.4.3 release was the last release tested on Red Hat Linux 8.  It
37    probably compiles and works, but there are no guarantees.
38
39* FreeBSD 4.9, 5.2.
40
41  + FreeBSD's libedit is too old for Onyx's needs.  Use the ports version of
42    libedit.  Take care to specify the appropriate configure script parameters
43    (see INSTALL for details).
44
45* Sun Solaris 9.
46
47* Apple OS X 10.3.
48
49  + Amazingly, execve() does not work for a multi-threaded process.  This can be
50    worked around by calling fork(), then execve(), and exiting the parent
51    process.  In Onyx code, the workaround looks like:
52
53    Original:
54
55      [`path'] exec
56
57    Workaround:
58
59      [`path'] forkexec 0 ne {
60	# Parent process.
61	0 die
62      } if
63
64    This workaround has the side effect of changing the process ID.
65
66  + It may be necessary to set the following environment variable when building
67    Onyx:
68
69      MACOSX_DEPLOYMENT_TARGET=10.3
70
71    This tells the linker to generate binaries that are not compatible with
72    earlier versions of OS X, which is necessary since Onyx's build system uses
73    some new linker features.
74
75* NetBSD 1.6.
76
77  + POSIX threading does not work due to NetBSD's lack of pthreads.  However,
78    GNU pth threading should work.
79