Return-Path: X-Original-To: apmail-couchdb-dev-archive@www.apache.org Delivered-To: apmail-couchdb-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 8125B9AA0 for ; Tue, 17 Jan 2012 19:17:08 +0000 (UTC) Received: (qmail 10105 invoked by uid 500); 17 Jan 2012 19:17:05 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 10020 invoked by uid 500); 17 Jan 2012 19:17:04 -0000 Mailing-List: contact dev-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list dev@couchdb.apache.org Received: (qmail 9998 invoked by uid 99); 17 Jan 2012 19:17:04 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 17 Jan 2012 19:17:04 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of dave@muse.net.nz designates 209.85.212.52 as permitted sender) Received: from [209.85.212.52] (HELO mail-vw0-f52.google.com) (209.85.212.52) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 17 Jan 2012 19:16:59 +0000 Received: by vbbez10 with SMTP id ez10so2102998vbb.11 for ; Tue, 17 Jan 2012 11:16:38 -0800 (PST) MIME-Version: 1.0 Received: by 10.52.76.196 with SMTP id m4mr9022049vdw.112.1326827798317; Tue, 17 Jan 2012 11:16:38 -0800 (PST) Received: by 10.52.112.4 with HTTP; Tue, 17 Jan 2012 11:16:38 -0800 (PST) X-Originating-IP: [84.172.65.208] Date: Tue, 17 Jan 2012 20:16:38 +0100 Message-ID: Subject: [Windows] proposed binary build changes From: Dave Cottlehuber To: user@couchdb.apache.org, dev@couchdb.apache.org Cc: Pierre Joye Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable 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=85 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. HISTORY: 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. TODAY: 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! LIBRARIES INCLUDED IN THE BUILD: Unless there are strenuous objections, I'm proposing to move from/to: Compiler: 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]= . FUTURE: Feel free to add but this is where I'm thinking of going, in no particular order: - 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 apache.org pages to ensure people have a trusted source of binaries. Feel free to prioritise this, or add to it. [1]: https://www.dropbox.com/s/jeifcxpbtpo78ak/snapshots/20120117?v=3Dl [2]: http://msdn.microsoft.com/en-us/library/e7k32f4k.aspx [3]: http://github.com/dch/glazier [4]: https://www.dropbox.com/s/jeifcxpbtpo78ak/Building_from_Source [5]: https://www.dropbox.com/s/jeifcxpbtpo78ak/snapshots/20120116?v=3Dl A+ Dave