summaryrefslogtreecommitdiff
path: root/DEVELOPERS
blob: f61b77b78c6d5d67a4aac9af89a8a3631582b058 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
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.68)  (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/)

These optional dependencies are required for building the documentation.

You will need these optional dependencies installed if:

 * 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

Be sure to update the version numbers to match your system's available packages.

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

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.