test
[hcoop/zz_old/ikiwiki] / DomTool / Building.mdwn
... / ...
CommitLineData
1[[TableOfContents()]]\r
2\r
3= Prerequisites =\r
4\r
5== Compilers ==\r
6\r
7To compile the standalone DomTool tools, you will need the [http://mlton.org/ MLton] [http://www.standardml.org/ Standard ML] compiler. It's available as Debian package "mlton". The version in Debian testing works fine, but the stable version is too old, so grab the Debian stable version of the latest release from [http://mlton.org/Download the MLton download page].\r
8\r
9To use DomTool from an interactive SML REPL session, you will need a recent version of [http://www.smlnj.org/ Standard ML of New Jersey]. The SML/NJ packages in non-experimental Debian are so old that I don't bother using them, opting to install SML/NJ manually following the directions on the SML/NJ web site. Chances are you can get by just fine without support for interactive REPL use and can skip installing SML/NJ if you don't want it for some other purpose.\r
10\r
11Why am I referencing two different compilers here? Well, developing with SML/NJ and building release binaries with MLton is standard practice in the SML world. SML/NJ supports separate compilation and interactive use, which are very helpful during development. MLton is a whole-program optimizing compiler that produces extremely efficient binaries, at the cost of much greater compile-time time and memory usage than SML/NJ.\r
12\r
13== Libraries ==\r
14\r
15You will need the OpenSSL C library with development files, available in Debian package "libssl-dev".\r
16\r
17== Utilities ==\r
18\r
19If you plan to run a server (dispatcher or slave), you'll need rsync, which is available in Debian package "rsync".\r
20\r
21= Getting the source code =\r
22\r
23You can obtain the approximately-latest version of the DomTool source code from [http://sourceforge.net/cvs/?group_id=99567 SourceForge anonymous CVS]. The module name is `domtool2`. I write "approximately" because it can take about a day for the latest changes to propagate from developer CVS to anonymous CVS. I'll duplicate the directions from that Source``Forge help page and tell you that you can check out this module by running:\r
24{{{cvs -d:pserver:anonymous@hcoop.cvs.sourceforge.net:/cvsroot/hcoop login\r
25cvs -z3 -d:pserver:anonymous@hcoop.cvs.sourceforge.net:/cvsroot/hcoop co -P domtool2}}}\r
26\r
27Just press enter when prompted for a password.\r
28\r
29If you have been granted write permission to the repository and plan to commit code changes, then you'll want to check the repo out from developer CVS, like so:\r
30{{{export CVS_RSH=ssh \r
31cvs -z3 -d:ext:developername@hcoop.cvs.sourceforge.net:/cvsroot/hcoop co -P domtool2}}}\r
32\r
33= Building the standalone tools =\r
34\r
35First, in the `domtool2` directory that you have checked out, create a file `config.sml` containing:\r
36{{{structure Config :> CONFIG = struct\r
37 open ConfigDefault\r
38end}}}\r
39\r
40Heck, you could even go ahead and set some non-standard configuration values! If you leave it as is, you inherit the defaults, which should be appropriate for HCoop servers.\r
41\r
42Even if you set configuration parameters until you're blue in the face, this stuff probably won't work very well in environments that don't look much like Linux. Perhaps some day greater portability will become enough of a priority for us to fix that.\r
43\r
44Once you have that done, the rest is easy! Just run{{{\r
45make}}}\r
46\r
47This will populate `domtool2/bin/` with the compiled DomTool programs. As root, run{{{\r
48make install}}}\r
49\r
50to copy these programs and some additional scripts to appropriate standard locations. Consult the Makefile if you'd like to see what those locations are ahead of time.\r
51\r
52== Reinstalling the standalone tools ==\r
53\r
54If you want to reinstall domtool on machines that are running it already, then it is best to use a slightly modified set of instructions.\r
55\r
56First, create a {{{config.sml}}} file as directed above, and run {{{make}}}.\r
57\r
58If the current machine is a slave, then run {{{\r
59make install_slave}}}\r
60\r
61If the current machine is a server, then run {{{\r
62make install_server}}}\r
63\r
64= Building for SML/NJ =\r
65\r
66After following the same procedure as above for `config.sml`, run{{{\r
67make smlnj}}}\r
68\r
69followed by{{{\r
70make install}}}\r
71\r
72as root. Now you should be able to run `sml` in the base `domtool2` directory and run `CM.make "src/domtool.cm";`. If you don't see any error messages, then the DomTool modules are loaded and you can start poking them. For instance, running `open Main;` should print information on the primary entry-points.\r