incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dave Cottlehuber <>
Subject [Windows] proposed binary build changes
Date Tue, 17 Jan 2012 19:16:38 GMT
Hi folks,

Quick questions followed by a long update.

1. Does anybody rely on the compiler that I use to build CouchDB?
I'm considering dropping VS2008/SDK7.0 builds in favour of the newer
VS2010/SDK7.1, mainly because I don't really have the space to build both.
Although feel free to send me a 500GiB SSD…

2. Unless there are strenuous objections, I'm proposing to bump the
Windows binaries and dependencies to enable that, details below. You can
test a variety of 1.1.1 combos if this is important to you [1].

3. Any further volunteers for testing & voting on windows binary builds?
- Kevin Coombes
- Nick North
- Ryan Ramage
- pblakez
- Dirkjan

It should take ~ 1h per release & I'm not expecting a commitment from you!

4. Feedback is hard to come by so, I'd love some use cases, success stories,
and even the occasional abject failure for Couch on Windows.

Some background details follow, mainly to ensure we have these
archived on the list.

Up until Nov 2011, the official binary release from Erlang/OTP team was
done with VS2005 / VC++6.

However Erlang & CouchDB require ICU, OpenSSL, wxWidgets, Mozilla
SpiderMonkey and optionally cURL, none of which compile cleanly under
VS2005 these days.

So I've been rolling my own using VS2008 / SDK 7.0, which is not so
difficult now, and has also enabled me to provide fixes for uncommitted
upstream patches where necessary.

To work around some of the above, I've built binaries against a single,
very specific release of the vcredist_x86.exe package. Thanks to some
advice from Pierre at Microsoft, I can now remove this requirement.
This should simplify requirements for anybody who needs to repackage.
He's also given excellent suggestions on improving the performance of
Apache CouchDB on Windows, and sharing building the dependencies
with projects like PHP in future. Let's hope this progresses further.

Erlang/OTP have a VS2010 set of binaries available, with current
components, and no outstanding critical bugs as yet. R15B has error
messages with line numbers which is an immense help for troubleshooting.

The build scripts I use are now largely compatible between SDKs, so it's
possible to create SDK 7.0 and 7.1 versions when I merge & document it
properly. Thanks Wohali for the suggestion & some help along the way!

Unless there are strenuous objections, I'm proposing to move from/to:

VS2008/ SDK 7.0          -> VS2010 / SDK 7.1 compiler & Visual C++ runtime

Erlang/OTP R15B
- wxWidgets 2.8.11       -> 2.8.12
- OpenSSL 1.0.0e         -> 0.9.8r to align with OTP team's release

For CouchDB 1.2.0 and the future:
- ICU 4.4.2              -> 4.6.1 as it compiles cleanly under both SDKs.
- cURL 7.23.1            -> no change
- SpiderMonkey 1.8.0-rc1 -> 1.8.5

This sets us up nicely for providing a much simpler build process,
perhaps without needing cygwin at all, just common Windows tools.

I don't see any issues with this in the last month of testing, YMMV!

The artefacts used to build these (& their debug symbols) are all
available [4], and there's a build off the 1.2.x branch including these [5].

Feel free to add but this is where I'm thinking of going, in no particular
- Makefile target for a trimmed OTP + Couch build & upx compression
- MSI support (thanks in advance to Wohali!!)
- add a GeoCouchified version with erica + kanso support built in
- performance improvements c/- Microsoft's PGO [2]
- simpler build process perhaps using Mozilla tool chain only
- stabilise my glazier build scripts [3]
- use Windows-approved locations for datafiles
- aim for Microsoft Certification - good general CouchDB publicity
- enable JS and ETAP test framework on Windows
- look at 64 bit builds in June or July once OTP end has settled down
- move at least the .sha and .md5 files onto pages to
 ensure people have a trusted source of binaries.

Feel free to prioritise this, or add to it.



View raw message