Basilisk source code (http://basilisk.fr/src/)

root / src / README.server.page

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# How to configure a Basilisk server

~~~bash
sudo apt-get install tsp make gcc
~~~

Install the KDT library, [OpenGL utility libraries](gl/INSTALL) and
binaries in

~~~bash
$HOME/lib/libkdt.a
$HOME/lib/libglutils.a
$HOME/lib/libfb_osmesa.a
$HOME/include/kdt/kdt.h
$HOME/include/gl/utils.h
$HOME/bin/ppm2mpeg
$HOME/bin/ppm2mp4
$HOME/bin/ppm2gif
$HOME/bin/sequence
$HOME/bin/xyz2kdt
~~~

Append this to the start of `.bashrc`

~~~bash
# number of simultaneous Task Spooler jobs
export TS_SLOTS=8

# path to local binaries
export PATH=$PATH:$HOME/bin

# howto compile C99 programs
export CC99="gcc -O2 -Wall -std=c99 -D_GNU_SOURCE=1"

# howto compile CADNA programs
export CADNACC="clang -D_CADNA=1 -x c++ -m64 \
        -Wno-unused-function \
        -Wno-unused-result \
        -Wno-c++11-compat-deprecated-writable-strings \
        -Wno-address-of-array-temporary"

# OpenGL libraries
export OPENGLIBS="-lfb_osmesa -lGLU -lOSMesa"
~~~

If you also intend to generate graphics etc... on the server, do

~~~bash
sudo apt-get install gnuplot imagemagick libav-tools smpeg-plaympeg graphviz valgrind gifsicle
~~~

## Using the server

You first need to allow the client to connect to the server through
SSH. This implies adding the SSH public key of the client account to
the "authorized keys" on the server.

You can then do (on the client), something like:

~~~bash
SANDBOX=basilisk@server.domain.net make simulation.tst
~~~

You should then get

~~~bash
qcc -g -O2 -g -Wall -o simulation/simulation simulation.c -lm
[simulation.tst on basilisk@server.domain.net (12725)]
  running...
~~~

If you then do `ls simulation/*pid*`, you will see two files:
*pid.tst* and *tspid.tst*, they contain the PID of the process running
on the client and on the server respectively. When the simulation
completes on the server, data are copied to the client, both processes
terminate and these `*pid*` files are removed.

If you modify your simulation and redo `make` as above, before the old
simulation has completed, the old processes will be killed and only
the new simulation will run on the server.

The status of the completed simulation is indicated by either an
(empty) *pass* file (in the simulation directory), or a *fail* file
containing the error messages.