Apache CouchDB DEVELOPERS
=========================

Only follow these instructions if you are building from a source checkout.

If you're unsure what this means, ignore this document.

Dependencies
------------

You will need the following installed:

 * GNU Libtool            (http://www.gnu.org/software/libtool/)
 * GNU Automake (>=1.6.3) (http://www.gnu.org/software/automake/)
 * GNU Autoconf (>=2.63)  (http://www.gnu.org/software/autoconf/)
 * GNU Autoconf Archive   (http://www.gnu.org/software/autoconf-archive/)
 * pkg-config             (http://www.freedesktop.org/wiki/Software/pkg-config)

You may also need:

 * Sphinx                 (http://sphinx.pocoo.org/)
 * LaTex                  (http://www.latex-project.org/)
 * GNU Texinfo            (http://www.gnu.org/software/texinfo/)
 * GNU help2man           (http://www.gnu.org/software/help2man/)
 * GnuPG                  (http://www.gnupg.org/)
 * md5sum                 (http://www.microbrew.org/tools/md5sha1sum/)
 * sha1sum                (http://www.microbrew.org/tools/md5sha1sum/)

The first of these optional dependencies are required for building the
documentation. The last three are needed to build releases.

You will need these optional dependencies installed if:

 * You are working on the documentation, or
 * You are preparing a distribution archive

However, you do not need them if:

 * You are building from a distribution archive, or
 * You don't care about building the documentation

Debian-based (inc. Ubuntu) Systems
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

You can install the required dependencies by running:

    sudo apt-get install libtool
    sudo apt-get install automake
    sudo apt-get install autoconf
    sudo apt-get install autoconf-archive
    sudo apt-get install pkg-config

Optional dependencies:

    sudo apt-get install help2man
    sudo apt-get install python-sphinx
    sudo apt-get install texlive-latex-base
    sudo apt-get install texlive-latex-recommended
    sudo apt-get install texlive-latex-extra
    sudo apt-get install texlive-fonts-recommended
    sudo apt-get install texinfo
    sudo apt-get install gnupg

RedHat-based (Fedora, Centos, RHEL) Systems
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    sudo yum install help2man
    sudo yum install python-sphinx
    sudo yum install python-docutils
    sudo yum install python-pygments
    sudo yum install texlive-latex
    sudo yum install texlive-latex-fonts
    sudo yum install texinfo
    sudo yum install gnupg

Mac OS X
~~~~~~~~

Install Homebrew, if you do not have it already:

    https://github.com/mxcl/homebrew

You can install the required dependencies by running:

    brew install libtool
    brew install automake
    brew install autoconf
    brew install autoconf-archive
    brew install pkg-config

Unless you want to install the optional dependencies, skip to the next section.

Install what else we can with Homebrew:

    brew install help2man
    brew install gnupg
    brew install md5sha1sum

If you don't already have pip installed, install it:

    sudo easy_install pip

Now, install the required Python packages:

    sudo pip install sphinx
    sudo pip install docutils
    sudo pip install pygments

Download MaxTeX from here:

    http://www.tug.org/mactex/

Follow the instructions to get a working LaTeX install on your system.

Windows
~~~~~~~

Follow the instructions in INSTALL.Windows and build all components from
source, using the same Visual C++ compiler and runtime.

Bootstrapping
-------------

Bootstrap the pristine source by running:

    ./bootstrap

You must repeat this step every time you update your source checkout.

Configuring
-----------

Configure the source by running:

    ./configure

Note that this will not fail when the optional dependencies are missing.

To ensure the optional dependencies are installed, run:

    ./configure --enable-strictness

If you don't care about docs and want to skip the whole thing, run:

    ./configure --disable-docs

If you're working on the build system itself, you can run:

    ./configure --disable-tests

This skips the tests allowing quicker `make' cycles.

Testing
-------

Check the test suite by running:

    make check

Generate a coverage report by running:

    make cover

Please report any problems to the developer's mailing list.

Releasing
---------

The release procedure is documented here:

    https://wiki.apache.org/couchdb/Release_Procedure

Unix-like Systems
~~~~~~~~~~~~~~~~~

Prepare the release artefacts by running:

    make distcheck

You can prepare signed release artefacts by running:

    make distsign

The release artefacts can be found in the root source directory.

Microsoft Windows
~~~~~~~~~~~~~~~~~

Prepare the release artefacts by running:

    make dist

The release artefacts can be found in the `etc/windows` directory.

Until the build system has been improved, you must make sure that you run this
command from a clean source checkout. If you do not, your test database and log
files will be bundled up in the release artefact.
