welcome: please sign in

The following 294 words could not be found in the dictionary of 7 words (including 7 LocalSpellingWords) and are highlighted below:
able   above   account   additional   adequate   afs   After   ahead   already   am   an   and   Anonymous   any   appropriate   approximately   are   as   As   at   available   base   be   become   been   best   bin   binaries   blue   build   Building   building   by   can   changes   check   checked   clone   cm   code   commit   communications   compilation   compile   compiled   compiler   Compilers   compilers   Config   config   configuration   configuring   Consult   containing   Contents   Coop   copy   cost   could   create   credentials   current   day   Default   defaults   details   dev   developing   development   different   directed   directory   distributions   Dom   domtool   domtool2   don   done   during   easy   efficient   either   end   enough   entry   environments   error   even   Even   execute   extremely   face   file   First   fix   followed   following   For   for   from   Getting   Git   git   go   granted   greater   handling   have   hc   hcoop   Heck   helpful   here   http   https   If   if   in   information   inherit   install   installation   instance   instructions   interactive   is   it   It   Jersey   Just   latest   leave   libmlnlffi   libpcre   libpcre3   libssl   like   Linux   ll   loaded   locations   look   Lton   machine   machines   Main   make   Makefile   manually   may   memory   messages   minimally   ml   mlton   modified   modules   much   need   net   New   nlffigen   Non   non   not   Note   Now   obtain   Of   of   On   on   Once   open   openafs   optimizing   optionally   or   org   other   out   outside   package   packages   parameters   Perhaps   permission   plan   points   poking   populate   portability   practice   Prerequisites   primary   print   priority   probably   procedure   produces   program   programs   publish   re   recent   referencing   regex   reinstall   Reinstalling   release   repo   repository   required   requires   rest   root   rsync   run   running   same   scripts   see   separate   server   servers   session   set   Setup   should   simply   slave   slightly   sml   smlnj   so   some   source   src   ssh   standalone   Standard   standard   standardml   start   struct   structure   stuff   sufficient   summary   supports   Table   than   that   the   them   then   these   This   this   those   time   to   To   Tool   tools   two   until   us   usage   use   user   using   values   Version   version   very   via   want   Well   well   what   which   whole   Why   will   with   won   work   world   write   www   yacc   You   you  

Clear message

DomTool / Building

1. Prerequisites

DomTool minimally requires an SML compiler, libpcre for regex handling, libssl for communications, and rsync to publish configuration.

For Debian, the following packages are required for a standard build:

mlton libpcre3-dev libssl-dev ml-nlffigen ml-yacc rsync

You may optionally install SML/NJ packages for interactive development:

smlnj libmlnlffi-smlnj

1.1. A Note On Compilers

To compile the standalone DomTool tools, you will need the MLton Standard ML compiler. It's available as Debian package mlton.

To use DomTool from an interactive SML REPL session, you will need a recent version of Standard ML of New Jersey. Version 110.74 is sufficient, so packages in Debian 6 and above are adequate, for other distributions you may need to compile it manually.

Why 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.

2. Getting the source code

You can obtain the approximately-latest version of the DomTool source code from HCoop Anonymous Git. To clone simply execute:

git clone git://git.hcoop.net/git/hcoop/domtool2.git

If you have been granted write permission to the repository and plan to commit code changes, then you'll want to check the repo out either via ssh or openafs using an account with credentials to write to the domtool git directory.

git clone ssh://USER@ssh.hcoop.net/afs/hcoop.net/user/h/hc/hcoop/.hcoop-git/domtool2.git
git clone /afs/hcoop.net/user/h/hc/hcoop/.hcoop-git/domtool2.git

3. Building the standalone tools

First, in the domtool2 directory that you have checked out, create a file config.sml containing:

structure Config :> CONFIG = struct
  open ConfigDefault

Heck, 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. If you are not installation DomTool at HCoop, see DomTool/NonHCoopSetup for details on configuring DomTool to run outside of HCoop.

Even 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.

Once you have that done, the rest is easy! Just run


This will populate domtool2/bin/ with the compiled DomTool programs. As root, run

make install

to 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.

3.1. Reinstalling the standalone tools

If you want to reinstall domtool on machines that are running it already, then it is best to use a slightly modified set of instructions.

First, create a config.sml file as directed above, and run make.

If the current machine is a slave, then run

make install_slave

If the current machine is a server, then run

make install_server

4. Building for SML/NJ

After following the same procedure as above for config.sml, run

make smlnj

followed by

make install

as 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.

DomTool/Building (last edited 2018-08-11 16:36:04 by ClintonEbadi)