Thrift OCaml Development
========================

Prerequisites
-------------

In order to build this library, you must have the following installed:

  * The OCaml compiler, preferably >4.00
  * The Oasis build tool

In addition you may want to install OPAM, which will allow you to setup an
OCaml development environment that's isolated from your system installation,
much like virutalenv for Python or the myriad systems available for Ruby. If
you have OPAM installed, then installing Oasis is as simple as running:

  $ opam install oasis

Building
--------

Once all the prerequisites have been installed, run the following commands:

  $ oasis setup
  $ ./configure
  $ make

The `oasis setup` command will generate the configure script and Makefile,
along with other files that opam will use to create an installable library.
The cofigure script will ensure that all build dependencies are installed, and
make will actually build the library.

To remove files that the compiler geneates, run:

  $ make clean

To remove those files _as well as_ files that the setup and configure process
generates, run:

  $ rm `cat .gitignore`

Installing
----------

If you're using opam, simply run the following command:

  $ make install

While development, you may want to install your latest build on the system to
test against other libraries or programs. To do this, use:

  $ make reinstall

Distribution
------------

The de facto preferred method for distributing OCaml libraries is through the
OPAM package repository. To publish the latest package, issue a pull request
against the following github repository:

  https://github.com/ocaml/opam-repository

The pull requestion should add the following directory structure and files:

  package
    |__thrift
       |__thrift.<VERSION>
          |__ descr
          |__ opam
          |__ url

Templates for the following files can be found in the opam/ subdirectory of
this library's root, with XXX(...) indicating fields that need to be filled
out. You can find further documentation here:

  http://opam.ocaml.org/doc/Packaging.html
