blob: e6ea14108f84bdc0b402f893e87894cc26eaac08 [file] [log] [blame]
Apache CouchDB DEVELOPERS
=========================
Before you start here, read `INSTALL.Unix` (or `INSTALL.Windows`) and
follow the setup instructions including the installation of all the
listed dependencies for your system.
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
Here is a list of *optional* dependencies for various operating systems.
Installation will be easiest, when you install them all.
Debian-based (inc. Ubuntu) Systems
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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
Gentoo-based Systems
~~~~~~~~~~~~~~~~~~~~
sudo emerge texinfo
sudo emerge gnupg
sudo emerge coreutils
sudo emerge pkgconfig
sudo emerge help2man
sudo USE=latex emerge sphinx
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
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.
If you want to build it into different destination than `/usr/local`.
./configure --prefix=/<your directory path>
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.