mirror of
git://git.psyced.org/git/psyclpc
synced 2024-08-15 03:20:16 +00:00
323 lines
13 KiB
Text
323 lines
13 KiB
Text
Topics covered:
|
|
|
|
- psyclpc & LDMud Notes
|
|
- Unix or Unix-like systems, with additional details for FreeBSD, AIX 3.4,
|
|
and DEC Ultrix.
|
|
- IPv6
|
|
- mySQL
|
|
- BeOS
|
|
- Windows 95/98/NT
|
|
- OS/2
|
|
|
|
|
|
psyclpc & LDMud Notes
|
|
---------------------
|
|
|
|
psyclpc is a variant of the LPC language optimized for psyced.
|
|
When using this driver distribution "./configure" will restart
|
|
itself as "./configure --with-setting psyced". This will run
|
|
configure with all the sane options necessary for a pleasant
|
|
psyclpc experience tuned to psyced requirements.
|
|
|
|
See also http://lpc.psyc.eu and http://about.psyc.eu/psyclpc
|
|
|
|
Should you want to make a very traditional driver close to the
|
|
LDMud original instead, copy your own settings file to the
|
|
settings directory and run it. All the new functions of psyclpc
|
|
will then automatically default to LDMud-compatible behaviour.
|
|
|
|
Also running "./configure" with *any* parameters will keep it
|
|
from loading psyced behaviour. Expect psyced not to work with
|
|
such a driver. It will probably fail with one of these messages:
|
|
|
|
psyclpc: Unknown option '--tls-key'.
|
|
|
|
Failed to load master object 'secure/master'.
|
|
|
|
|
|
Unix or Unix-like system
|
|
------------------------
|
|
|
|
The driver uses a standard autoconfiguration system which on most
|
|
systems does all the work for you (for exceptions see below).
|
|
To prepare the compilation, execute the 'configure' script from
|
|
within the src/ directory.
|
|
|
|
configure checks for a number of site specific settings and uses this
|
|
information to create the files machine.h (from machine.h.in), Makefile
|
|
(from Makefile.in) and config.h (from config.h.in). We'll come back to
|
|
config.h below.
|
|
|
|
configure takes a lot of arguments (--help will tell you everything),
|
|
but the most important are these:
|
|
|
|
--prefix=PREFIX: the base directory for the mud installation,
|
|
defaults to /usr/local/mud .
|
|
--bindir=DIR: the directory to install the executables in,
|
|
defaults to ${PREFIX}/bin .
|
|
--libdir=DIR: the directory where the mudlib is found,
|
|
defaults to ${PREFIX}/lib .
|
|
--includedir=DIR: the directory where driver's LPC include files
|
|
are supposed to live.
|
|
defaults to ${PREFIX}/include (which is usually wrong).
|
|
--libexecdir=DIR: the directory where the programs for the ERQ are found,
|
|
defaults to ${PREFIX}/libexec .
|
|
|
|
These settings are written into the Makefile and compiled into the driver,
|
|
just the mudlib directory setting can be changed with a commandline
|
|
argument.
|
|
|
|
A lot of the drivers parameters can be tweaked for better performance; these
|
|
parameters are defined in config.h . This file too is created by configure,
|
|
which provides sensible defaults for all parameters for which no explicite
|
|
setting is provided. To tweak a setting yourself, pass the argument
|
|
'--enable-<option>=yes|no' resp. '--with-<option>=<value>' to configure on
|
|
the commandline.
|
|
|
|
Alternatively, the indivial specifications can be collected in a settings
|
|
file, which is stored in the directory src/settings/. To use the
|
|
setting file <osb>, give '--with-<osb>' as argument to configure. The
|
|
file src/settings/default documents the available settings. The setting
|
|
files are self-executing: './settings/<foo> [<extra-configure-args>]' will
|
|
start configure with the proper commandline arguments.
|
|
|
|
|
|
The following environment variables can be used to tweak the behaviour
|
|
of the configure script:
|
|
CC: the name of the C compiler
|
|
CFLAGS: compiler flags to be used during the configure script
|
|
EXTRA_CFLAGS: compiler flags to be used when compiling the game driver
|
|
LDFLAGS: linker flags to be used by configure and for linking the
|
|
game driver.
|
|
|
|
|
|
After configuration is finished, you may want to modify the Makefile
|
|
to fine tune those parameters which are not covered by the configuration.
|
|
|
|
The compilation is done using make. Following targets are implemented:
|
|
|
|
<none>: compile the driver, named 'psyclpc'.
|
|
install: compile the driver and install it in ${bindir}
|
|
utils: compile the utilities, especially the ERQ demon
|
|
install-utils: compile and install the utilities in ${bindir}
|
|
install-headers: install the driver header files in ${includedir}.
|
|
install-all: compile and install everything.
|
|
|
|
To actually run this, you need either psyced or a mudlib.
|
|
|
|
pthreads:
|
|
If your systems supports pthreads, --enable-use-pthreads will allow to
|
|
compile the driver with pthread support. Currently this means that
|
|
background threads will be used to write data to the network.
|
|
|
|
WARNING: pthreads support is still experimental and might crash
|
|
your driver!
|
|
|
|
FreeBSD:
|
|
When using gcc, it could happen that the compiler aborts with signal 10
|
|
or 11. The reasons are unknown, but you can restart the compilation
|
|
process by typing "make" again (and again...).
|
|
|
|
AIX 3.4:
|
|
The native compiler comes in several forms, of which only the
|
|
basic form 'xlc' works with the configuration script.
|
|
Start the script as:
|
|
|
|
CC=xlc ./configure ...
|
|
|
|
DEC Ultrix:
|
|
Depending on the system configuration you might be unable to
|
|
compile 'interpret.c' with any kind of optimization at all.
|
|
The typical symptom is a failure during the compilation with
|
|
"Error code 1". When that happens, do the following steps:
|
|
|
|
- Make as usual until the "interpret" compilation
|
|
fails. The symptom is "Error code 1".
|
|
|
|
- Edit the makefile. Uncomment the compilation
|
|
line for debugging, and comment the compilation
|
|
line containing the optimization switches and
|
|
options.
|
|
|
|
- Start the make again. After the "interpret"
|
|
compilation completes, control-C out of the
|
|
compilation.
|
|
|
|
- Edit the makefile again. Re-comment the line
|
|
for debugging, and uncomment the line with
|
|
the optimization switches and options.
|
|
|
|
- Start the make again. This time it will
|
|
complete as expected.
|
|
|
|
|
|
IPv6
|
|
----
|
|
If your machine supports IPv6, the driver can be configured to use it: give
|
|
'--enable-use-ipv6=yes' as argument to the configure script.
|
|
|
|
Beware: the driver support is rudimentary, experimental, and may cease to
|
|
function on the next full moon. Additional work is necessary to really
|
|
change _all_ address-related functions in driver and mudlibs.
|
|
|
|
IPv6 support was implemented by Uwe <mai94cch@studserv.uni-leipzig.de>.
|
|
|
|
In order to test IPv6 under Linux you need a 2.2.x kernel (preferably 2.2.10
|
|
or better) and the inet6 apps. If you use glibc 2.0, you need version 0.35
|
|
of the inet6 apps, or for glibc 2.1 you need version 0.36. The apps should
|
|
installed into /usr/inet6.
|
|
|
|
The apps are available on ftp.inner.net or on its mirrors, e.g.
|
|
|
|
<URL:ftp://6bone.informatik.uni-leipzig.de/pub/ftp.inner.net/pub/ipv6/inet6-apps-0.35.tar.gz>
|
|
|
|
resp.
|
|
|
|
<URL:ftp://6bone.informatik.uni-leipzig.de/pub/ftp.inner.net/pub/ipv6/inet6-apps0.36.tar.gz>
|
|
|
|
Furthermore you need a connection to the 6bone
|
|
(<URL:http://www.join.uni-muenster.de/>).
|
|
|
|
Newer versions of AIX also come with IPv6 support.
|
|
|
|
|
|
mySQL
|
|
-----
|
|
If your machine has mySQL installed, the driver can be configured to use
|
|
it: give '--enable-use-mysql=yes' as argument to the configure script.
|
|
|
|
Alternatively, if your mySQL uses an unusual include/library path,
|
|
the option can be given as '--enable-use-mysql=/unusual/path', which
|
|
will use the given path as search path for both include and library
|
|
files in addition to the normal system search paths. The include files will
|
|
be searched in <path>/include and <path>, the library files will be search
|
|
in <path>/lib/mysql, <path>/lib, and <path>, in this order.
|
|
|
|
The username and password for the mySQL database are specified by
|
|
the mudlib as arguments to the efun db_connect().
|
|
|
|
Use mysqladmin to create any databases you want to provide - the
|
|
names are later used in the efun db_connect() to connect to
|
|
the databases.
|
|
|
|
|
|
BeOS
|
|
----
|
|
Under BeOS, the driver can be configured and compiled in two ways:
|
|
|
|
1. Using the provided configuration files.
|
|
|
|
Copy the files machine.h, config.h and Makefile from src/hosts/be/
|
|
to src/. You may have to edit config.h and Makefile if you have
|
|
to use a specific mudlib with exotic settings.
|
|
|
|
Advantage of this method is that the Makefile allows cross-compilation
|
|
and covers Be specifics like file icon, type and version.
|
|
|
|
2. Use the Unix configure mechanism.
|
|
|
|
In general just follow the instructions given for Unix systems, but
|
|
be aware of the follwing:
|
|
|
|
- If the configure script doesn't properly work, try starting it
|
|
with
|
|
|
|
CC="$BE_C_COMPILER" EXTRA_CFLAGS="$BE_DEFAULT_C_FLAGS" ./configure
|
|
|
|
or (especially on BeOS R4.5 on PPC) even
|
|
|
|
CC=cc EXTRA_CFLAGS="$BE_DEFAULT_C_FLAGS" ./configure
|
|
|
|
- the created executable will have neither icon nor type.
|
|
- cross compilation is not supported.
|
|
- the Makefile defaults to best optimization which needs a lot
|
|
of memory during compilation.
|
|
|
|
If on driver start you get an error about an unknown hostname or
|
|
seems to hang, you're missing an /etc/hosts file:
|
|
- In the network preferences, select a name for you machine,
|
|
e.g. 'bebox'. The domain name field can be blank.
|
|
- Copy the /boot/beos/etc/hosts-sample file to /boot/beos/etc/hosts,
|
|
and edit it to contain at least the following lines:
|
|
|
|
127.0.0.1 bebox.my-isp.com bebox
|
|
127.1 bebox.my-isp.com bebox
|
|
|
|
(Note: in the file, every line has to start with the IP address -
|
|
no leading spaces are allowed).
|
|
|
|
With the current networking implementation, the driver is unable
|
|
to start ERQs. In order to use ERQs, you have to start them manually.
|
|
|
|
Other than this, the installation steps are the same as for Unix.
|
|
|
|
|
|
Windows 95/98/NT
|
|
----------------
|
|
|
|
To compile the gamedriver for Windows, you need the 'Cygwin' package,
|
|
which is a port of gcc, bash, and other GNU/Unix programs. Once it
|
|
is installed and running, the procedure is the same as under Unix.
|
|
|
|
CygWin is available from <URL:http://www.cygwin.com/> or
|
|
<http://www.redhat.com/software/cygwin/>, and when installing make sure that
|
|
your installation includes gcc, bash, make, sed, awk, and bison.
|
|
|
|
One common pitfall is if the installation does not create the '/bin'
|
|
directory in which the CygWin executables are expected. A typical
|
|
error message would be 'make: /bin/sh not found'.
|
|
|
|
Solution 1: Create a directory 'bin' in your search path (e.g. c:\bin)
|
|
and copy all required executables (in this case 'sh.exe') into
|
|
that directory.
|
|
|
|
Solution 2 (this can be done in a script): cd into the directory
|
|
where the executables are stored, e.g.
|
|
/compiler/Cygnus/B19/H-i386-cygwin32/bin . In this directory, give
|
|
the command 'mount $PWD /bin'.
|
|
|
|
Solution 3: Use a newer version of Cygwin where this problem apparently
|
|
has been solved.
|
|
|
|
A driver compiled by David Gibbs (ishara@btinternet.com) is available
|
|
at <URL:http://www.einy.freeserve.co.uk/lpmud.index.html>.
|
|
|
|
The following comments were provided by Robert Nurrie(?) who had
|
|
an misconfigured Cygnus installation (Summer 2000):
|
|
|
|
"Make sure you've used the setup.exe you get when clicking the 'install
|
|
cygwin now' link in the upper right corner of their website, instead of
|
|
the setup.exe found on the ftp-site.
|
|
|
|
Oh, and when you're given the choice of default text file type you
|
|
should of course chose Dos, as that seems to be the key."
|
|
|
|
Brandon Mathis points out, "that to compile under Windows you have to
|
|
use 'tar -xvfj' and not WinZIP to extract the source".
|
|
|
|
|
|
OS/2
|
|
----
|
|
|
|
The OS/2 port uses the EMX (a gcc version) to compile the gamedriver.
|
|
To compile the driver, copy the machine.h and Makefile from the hosts/os2
|
|
directory into the top directory and make as under Unix. The Makefile
|
|
is configured to install the driver in /mud - edit the variable 'prefix'
|
|
if you want a different directory.
|
|
|
|
Important: the Makefile must be save using the Unix lineend convention,
|
|
otherwise the make program will stop with an error. In the EPM editor
|
|
this can be achieved using the 'save -u' command.
|
|
|
|
If you have the full GNU suite installed, you can also configure the
|
|
driver as under Unix. Following caveats regarding the configure script:
|
|
- the ac_exeext variable may not be set to '.exe' as it should be;
|
|
- the calls to the program conftest may lack the ${ac_exeext} extension.
|
|
|
|
Additionally, configure does not properly recognize the settings for
|
|
HAVE_GETRUSAGE, GETRUSAGE_RESTRICTED, GETRUSAGE_VIA_SYSCALL and RUSAGE_USEC.
|
|
Copy these values from the provided machine.h
|
|
|
|
To recreate the configure script from configure.in, you need autoconf
|
|
version 2.50 or newer.
|
|
|