couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Lehnardt <>
Subject The new 2.0 build tools just landed in master
Date Wed, 24 Jun 2015 21:36:54 GMT
Dear dev@,

I just merged a multi-month effort to get the build situation
for 2.0 under control.

I’d like to thank Sebastian Rothbucher, Alexander Shorin and
Dirkjan Ochtman for their invaluable input.

Special thanks go out to micah who worked tirelessly to make
sure that the results work in a standard Debian packaging
environment and general GNU environment! <3

 - 70 comments, 24 commits, 11 files changed, +1,268 −64
 - Started: February 11th — Merged: June 24th.

* * *

So what is this all about?

We need a way to build and install CouchDB on various systems
with very different system configurations. Traditionally,
Autotools do this and in 1.x we used them extensively.

For 2.0 we decided to do away with Autotools because of their
maintenance overhead.

We started with small hand-crafted ./configure and Makefile-

They were enough to get a basic build going, but they were
lacking the flexibility needed to work in many different

This PR is addressing this by supercharging our Makefile,
adding a massive new ./configure script (that comes with
extensive unit tests; a first for the CouchDB project!) and
a few auxiliary scripts.

The one big missing item is Windows support, which is out of
scope for this PR.

The end-result now is, that CouchDB master and 2.0 will work
very similar to 1.x when it comes to system installation

It also includes a majorly revamped `make dist` that produces
an apache-couchdb-$version.tar.gz file that is going to be our
release artefact that includes all the sources and files to
build CouchDB 2.0 and later.

See ./configure -h for a taster:

Usage: configure [OPTION]

The configure command is responsible for generating the build
system for Apache CouchDB.


  -h | --help                 display a short help message and exit
  -u | --user USER            set the username to run as (defaults to $USER)
  --prefix=DIRECTORY          set the installation prefix (defaults to /usr/local)
  --databasedir DIRECTORY     specify the data directory (defaults to /var/lib/couchdb)
  --viewindexdir DIRECTORY    specify the view directory (defaults to /var/lib/couchdb)
  --logdir DIRECTORY          specify the log file (defaults to /var/log/couchdb.log)
  -c | --with-curl            request that couchjs is linked to cURL (default false)
  --disable-fauxton           do not build Fauxton
  --disable-docs              do not build any documentation or manpages
  --skip-deps                 do not update erlang dependencies

  Installation directories:
    --prefix=PREFIX         install architecture-independent files in PREFIX
    --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX

  Fine tuning of the installation directories:
    --bindir=DIR            user executables [EPREFIX/bin]
    --libexecdir=DIR        program executables [EPREFIX/libexec]
    --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
    --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
    --libdir=DIR            object code libraries [EPREFIX/lib]
    --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
    --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
    --infodir=DIR           info documentation [DATAROOTDIR/info]
    --mandir=DIR            man documentation [DATAROOTDIR/man]
    --docdir=DIR            documentation root [DATAROOTDIR/doc/apache-couchdb]
    --htmldir=DIR           html documentation [DOCDIR]
    --dvidir=DIR            dvi documentation [DOCDIR]
    --pdfdir=DIR            pdf documentation [DOCDIR]
    --psdir=DIR             ps documentation [DOCDIR]

* * *

All this now needs a lot of testing on many different systems
and in different configurations.

Feel free to send bug reports in reply to this email, or to the
PR, or open an issue in JIRA.

Again, thanks for everybody’s help in getting this together.

I spent a lot of time on this and I’m really happy with the results :)

And a little thanks to my sponsor for this work:

Professional Support for Apache CouchDB:

View raw message