[PATCH 0/8] notmuch on Windows (Cygwin) and AppVeyor

Subject: [PATCH 0/8] notmuch on Windows (Cygwin) and AppVeyor

Date: Tue, 22 Aug 2017 22:43:31 +0000

To: notmuch@notmuchmail.org


From: Vladimir Panteleev


I've spent a bit of time over the past few days trying to get notmuch
to build and run tests on CygWin and AppVeyor CI's systems (AppVeyor
being a gratis continuous integration provider for Windows). Not from
some personal need, but simply because I generally enjoy and have some
experience with tinkering with CI systems.

I've gotten as far as to get everything to build and the test suite to
run (but not pass). A few ugly hacks were needed (luckily, mostly
outside notmuch's existing codebase), mainly related to talloc, as it
seems that it (or Waf, which it uses) does not speak Cygwin well. I
will probably draw the line here, as it looks like actually fixing
some of the failing tests would take some non-trivial work (e.g. one
test failure I saw seems to point towards a bug in Xapian/Cygwin). I'm
also not convinced that, practically speaking, the effort would be
well spent, as probably the best way to run notmuch under Windows
would be using Windows Subsystem for Linux instead of an userspace
POSIX environment like Cygwin or MSYS.

Some notes:

- 64-bit Cygwin seems to work much better than the 32-bit version,
  which ran into issues apparently caused by the limited address space
  in some scenarios I've seen.

- Partial updates of a Cygwin installation can predictably lead to a
  broken installation. --upgrade-also should always be used for
  unattended invocations of Cygwin's setup.exe.

- MSYS also packages Xapian and gmime, however an MSYS port is likely
  to be even more challenging, as it provides less of the POSIX
  environment than Cygwin.

You can see the current AppVeyor results here (warning, large page):


Development drafts of patch series is here:


Vladimir Panteleev (8):
  lib: Fix talloc not being defined on Cygwin
  lib: Fix libnotmuch.so link under Cygwin
  configure: Refactor uname parsing into a case statement
  configure: Detect Cygwin, and set PLATFORM accordingly
  Fix linking shared library on Cygwin
  test: Don't attempt to build symbol-test on Cygwin
  Add AppVeyor CI configuration and test script

 Makefile.global        |  12 +++++-
 Makefile.local         |   2 +-
 appveyor.yml           |   7 ++++
 configure              | 106 +++++++++++++++++++++++++++----------------------
 devel/appveyor.sh      |  39 ++++++++++++++++++
 lib/Makefile.local     |   2 +-
 lib/database-private.h |   4 +-
 test/Makefile.local    |   5 ++-
 8 files changed, 123 insertions(+), 54 deletions(-)
 create mode 100644 appveyor.yml
 create mode 100644 devel/appveyor.sh


notmuch mailing list