Not logged in

Artifact 2930052aaad1bbbd4542e56880d579f33306e923:


Hacking on zeptodb
==================

Hacking on zeptodb is straight-forward, however there are a few steps
to get up and running.

Getting the code
----------------

First, you must clone the Fossil repository. Unlike other revision
control systems, with Fossil when you first clone a repository you end
up with just a single file. This file is simply a SQLite database
containing all the information for the repository. When you open it
with the fossil program, it will extract all of the project files.

The common practice is to store all of your fossil repositories on one
directly (allowing them to be easily backed-up, for example). So,
first, do that:

    $ mkdir ~/Projects/fossils
    $ cd ~/Projects/fossils
    $ fossil clone http://zeptodb.invergo.net/fossil zeptodb.fossil
    
You now have your own copy of the zeptodb repository. Next, create a
directory where you would like to extract the code. Like most revision
control systems, but unlike, say, git, branches are kept in separate
directories. We'll start with the "trunk" branch:

    $ mkdir -p ~/Projects/zeptodb/trunk
    $ cd ~/Projects/zeptodb/trunk
    $ fossil open ~/Projects/fossils/zeptodb.fossil

That's all there is to it! You now should have all of the zeptodb
files in your trunk directory. 

For more information on how to use Fossil, visit its website [1].

Bootstrapping the code
----------------------

zeptodb makes use of some handy, albeit non-standard extensions
provided by the GNU C library [2]. In order to assure that zeptodb
will build on as wide of a range of systems as possible, including
those that do not have GNU libc, some portability modules from gnulib
[3] are used. These files are not checked into the Fossil repository,
so they must first be fetched. Next, a `configure` script and
configurable Makefiles need to be generated via Autoconf and Automake,
respectively.

In order to simplify this whole process, a script called `bootstrap`
is provided. Running this script will:

1. Fetch gnulib
2. Update itself, if necessary
3. Fetch the appropriate gnulib modules
4. Run autoconf
5. Run automake

If you already have gnulib somewhere on your computer, you can pass
`bootstrap` the `--gnulib-srcdir` option to specify its location so
you don't have to waste bandwidth downloading it again.

Once the whole process is finished, you can finally run `configure`
and then build the code!

Footnotes: 
[1]  http://www.fossil-scm.org

[2]  http://www.gnu.org/software/libc

[3]  http://www.gnu.org/software/gnulib