9 years agonew: Defer updating directory mtimes until the end.
Austin Clements [Tue, 8 Feb 2011 23:24:33 +0000 (18:24 -0500)]
new: Defer updating directory mtimes until the end.

Previously, if notmuch new were interrupted between updating the
directory mtime and handling removals from that directory, a
subsequent notmuch new would not handle those removals until something
else changed in that directory.  This defers recording the updated
mtime until after removals are handled to eliminate this problem.

9 years agopython: Ensure that we pass utf-8 encoded string to libnotmuch
Martin Owens [Fri, 16 Sep 2011 11:19:14 +0000 (13:19 +0200)]
python: Ensure that we pass utf-8 encoded string to libnotmuch

If we use unicode objects, libnotmuch would not cope with null bytes in
the byte array, so we need to make sure they are nicely formatted as

Introduce a helper function _str which does this throughout the code.

Patch slightly modified by Sebastian Spaeth.

Signed-off-by: Sebastian Spaeth <>
9 years agonew: Don't lose messages on SIGINT.
Austin Clements [Wed, 9 Feb 2011 01:56:31 +0000 (20:56 -0500)]
new: Don't lose messages on SIGINT.

Previously, message removals were always performed, even after a
SIGINT.  As a result, when a message was moved from one folder to
another, a SIGINT between processing the directory the message was
removed from and processing the directory it was added to would result
in notmuch removing that message from the database.

9 years agotest: use test_expect_equal_file in atomicity
David Bremner [Tue, 13 Sep 2011 12:31:46 +0000 (09:31 -0300)]
test: use test_expect_equal_file in atomicity

The documentation claims this is more robust, and it seems to work
fine to switch to the _file variant.

9 years agotest: Convert atomicity test to use test_subtest_known_broken
David Bremner [Sat, 10 Sep 2011 22:02:34 +0000 (19:02 -0300)]
test: Convert atomicity test to use test_subtest_known_broken

This is required because test_expect_equal_failure went away.

9 years agotest: Test atomicity of notmuch new.
Austin Clements [Fri, 28 Jan 2011 18:03:24 +0000 (13:03 -0500)]
test: Test atomicity of notmuch new.

This tests notmuch new's ability to recover from arbitrary stopping
failures.  It interrupts notmuch new after every database commit and,
on every resulting database snapshot, re-runs notmuch new to
completion and checks that the final database state is invariant.

9 years agolib: Add missing status check in _notmuch_message_remove_filename.
Austin Clements [Fri, 10 Jun 2011 19:58:18 +0000 (15:58 -0400)]
lib: Add missing status check in _notmuch_message_remove_filename.

Previously, this function would synchronize the folder list even if
removing the file name failed.  Now it returns immediately if removing
the file name fails.

9 years agotest: Report test failures from test_expect_*
Austin Clements [Thu, 12 May 2011 13:11:36 +0000 (09:11 -0400)]
test: Report test failures from test_expect_*

This makes test_expect_* return non-zero if the test fails, so the
caller can make decisions based on this, such as setting test

9 years agotest: Fix message when skipping test_expect_equal* tests
Austin Clements [Thu, 12 May 2011 13:09:06 +0000 (09:09 -0400)]
test: Fix message when skipping test_expect_equal* tests

For these types of tests, the test name is previously recorded in a
variable, not passed to the test function, so pass this variable to

9 years agotest: reset test_subtest_known_broken_ after each success/failure.
David Bremner [Tue, 13 Sep 2011 01:40:57 +0000 (22:40 -0300)]
test: reset test_subtest_known_broken_ after each success/failure.

This means that test_subtest_known_broken needs to be called before
every known broken subtest, which is no different than what is
documented for the test_begin_subtest case.

The assumption is that every test ends up calling either skipping,
calling test_ok_ or test_failure_ and and the latter in turn delegate
to the known_broken versions in the case where
test_subtest_known_broken_ is set.

9 years agoAdd missing call to g_type_init()
Aaron Ecay [Mon, 25 Jul 2011 23:38:58 +0000 (19:38 -0400)]
Add missing call to g_type_init()

The Glib docs state "Prior to any use of the type system, g_type_init() has to
be called".[1] To not do so can lead to segfaults.  The g_type system is
currently used by various "filters" that operate on uuencoded text, message
headers, etc.


9 years agotest: mark multipart rfc822 part test as broken
David Bremner [Sat, 10 Sep 2011 18:00:17 +0000 (15:00 -0300)]
test: mark multipart rfc822 part test as broken

Using the new test_subtest_known_broken support thanks to Dmitry
Kurochkin.  This makes the output less scary until we can fix the
underlying problems.

9 years agotest: remove documentation for test_expect_equal_failure.
David Bremner [Sat, 10 Sep 2011 17:54:56 +0000 (14:54 -0300)]
test: remove documentation for test_expect_equal_failure.

The actual function was deleted in commit 4cc67276

9 years agotest: add emacs test for hiding a message following an HTML part
Dmitry Kurochkin [Mon, 4 Jul 2011 04:07:21 +0000 (08:07 +0400)]
test: add emacs test for hiding a message following an HTML part

Human-friendly scenario:

* open a thread where a message which ends with an HTML part is
  followed by another message

* make the first message visible

* goto the beginning of the second message (first line, first colon)

* hit "RET"

Result: nothing happens except for "No URL at point" message

Expected result: the second message is shown/hidden

The root cause is that the HTML part has `keymap' text property set.
In particular, "RET" is bound to visit a URL at point.  The problem is
that `keymap' property affects the next character following the region
it is set to (see elisp manual [1]).  Hence, the first character of
the next message has a keymap inherited from the HTML part.


9 years agotest: improve known broken tests support
Dmitry Kurochkin [Mon, 4 Jul 2011 04:07:20 +0000 (08:07 +0400)]
test: improve known broken tests support

There is existing support for broken tests.  But it is not convenient
to use.  The primary issue is that we have to maintain a set of
test_expect_*_failure functions which are equivalent to the normal
test_expect_* counterparts except for what functions are called for
result reporting.  The patch adds test_subtest_known_broken function
which marks a subset as broken, making the normal test_expect_*
functions behave as test_expect_*_failure.  All test_expect_*_failure
functions are removed.  Test_known_broken_failure_ is changed to
format details the same way as test_failure_ does.

Another benefit of this change is that the diff when a broken test is
fixed would be small and nice.

Documentation is updated accordingly.

9 years agotest: update documentation for test_emacs in test/README
Dmitry Kurochkin [Mon, 4 Jul 2011 04:07:19 +0000 (08:07 +0400)]
test: update documentation for test_emacs in test/README

Update test_emacs documentation in test/README according to the latest
changes in emacs tests.  Move the note regarding setting variables
from test/emacs to test/README.

9 years agoMerge branch 'release'
David Bremner [Sat, 10 Sep 2011 13:11:25 +0000 (10:11 -0300)]
Merge branch 'release'

9 years agoupdate date in NEWS to better approximate real release date for 0.8 0.8
David Bremner [Sat, 10 Sep 2011 12:00:40 +0000 (09:00 -0300)]
update date in NEWS to better approximate real release date for 0.8

9 years agodebian: update changelog for 0.8
David Bremner [Sat, 10 Sep 2011 11:57:43 +0000 (08:57 -0300)]
debian: update changelog for 0.8

9 years agoupdate versions for release 0.8
David Bremner [Sat, 10 Sep 2011 11:55:33 +0000 (08:55 -0300)]
update versions for release 0.8

See commit 6979b65 for more discussion.

9 years agoNEWS: add blurb for python bindings changes
David Bremner [Sat, 10 Sep 2011 11:52:22 +0000 (08:52 -0300)]
NEWS: add blurb for python bindings changes

9 years agoadd news item for ruby
David Bremner [Fri, 9 Sep 2011 13:56:49 +0000 (10:56 -0300)]
add news item for ruby

9 years agoNEWS: add item for build system fixes
David Bremner [Thu, 8 Sep 2011 10:54:10 +0000 (07:54 -0300)]
NEWS: add item for build system fixes

Sed was POSIXed and use of nm dumbed down, replaced by awk hackery.

9 years agoDo not attempt to output part raw if part is not GMimePart.
Jameson Graef Rollins [Fri, 3 Jun 2011 17:01:06 +0000 (10:01 -0700)]
Do not attempt to output part raw if part is not GMimePart.

This was a minor oversite in checking of part type when outputing
content raw.  This was causing gmime was to throw an exception to

Unfortunately the gmime exception was not being caught by notmuch, or
the test suite.  I'm not sure if notmuch should have done anything in
this case, but certainly the test suite should be capable of detecting
that something unexpected was output to stderr.

9 years agoupdate versions for release candidate 0.8_rc1
David Bremner [Wed, 7 Sep 2011 01:34:02 +0000 (22:34 -0300)]
update versions for release candidate

we now have three files to keep in sync. That seems wrong, but I guess
we will live with it for now.

The main problem is that the python code is distributed separately, so
it can't get the version from 'version'.

The choice ~rcX is for convenience with debian versioning.

9 years agoAdd NEWS item output improvements to rfc822 part handling.
Jameson Graef Rollins [Tue, 6 Sep 2011 07:17:30 +0000 (00:17 -0700)]
Add NEWS item output improvements to rfc822 part handling.

9 years agoemacs: Improve support for message/rfc822 parts. 0.8_rc0
Jameson Graef Rollins [Mon, 6 Jun 2011 00:29:29 +0000 (17:29 -0700)]
emacs: Improve support for message/rfc822 parts.

The insert-part-message/rfc822 function is overhauled to properly
processes the new formatting of message/rfc822 parts.  The json output
for message parts now includes "headers" and "body" fields, which are
now parsed and output appropriately.

9 years agoImprove handling of message/rfc822 parts by adding a new header_message_part function...
Jameson Graef Rollins [Mon, 6 Jun 2011 00:29:28 +0000 (17:29 -0700)]
Improve handling of message/rfc822 parts by adding a new header_message_part function to the formating structure.

This new function takes a GMimeMessage as input, and outputs the
formatted headers.  This allows for message/rfc822 parts to be
formatted on output in a similar way to full messages (see previous
patch that overhauls the multipart test for more info).

9 years agotest: overhaul multipart test to test for improved message/rfc822 handling
Jameson Graef Rollins [Mon, 5 Sep 2011 19:01:46 +0000 (12:01 -0700)]
test: overhaul multipart test to test for improved message/rfc822 handling

The main goal of this overhaul is to define how message/rfc822 parts
should be handled.  message/rfc822 parts should be output in a similar
fashion to the outer message, including some subset of the rfc822
headers.  The following decisions about formatting of message/rfc822
parts were made:

The format and content of message/rfc822 parts shall be as similar as
possible to that of full messages.  In particular, for formatted
outputs, the "content" of rfc822 part output should include "headers"
and "body" fields).

The "body" field shall include the body of the message.

The "headers" field shall include the following headers, since these
are the ones available from the GMimeMessage:


However, for the case of --format=raw the raw rfc822 should be output,
including all headers.

A subset of relevant headers shall be output in reply.

The test embedded rfc822 message is also modified to be itself
multipart, so we can more fully test how all sub parts of the message
part are output.

Note added by Committer:

Currently, expect one test (--format=raw --part=3, rfc822 part) to fail.

9 years agoMerge branch 'master' of ssh://
Sebastian Spaeth [Mon, 5 Sep 2011 13:53:45 +0000 (15:53 +0200)]
Merge branch 'master' of ssh://

9 years agopython: Make Database take unicode paths
Sebastian Spaeth [Mon, 5 Sep 2011 13:52:12 +0000 (15:52 +0200)]
python: Make Database take unicode paths

Decode and Encode from/to unicode objects as required to be able to take
unicode path names. Previously we would error out when an unicode object
were handed it.

Signed-off-by: Sebastian Spaeth <>
9 years agotest: Fix date in test message in multipart test.
Jameson Graef Rollins [Mon, 6 Jun 2011 00:29:26 +0000 (17:29 -0700)]
test: Fix date in test message in multipart test.

The test message date, "Tue, 05 Jan 2001 15:43:57 -0000", is not
actually a real date.  05 Jan 2001 was in fact a Friday, not a
Tuesday.  Date parsers (such as "date" in coreutils) will return "Fri"
as the day for this string, even if "Tue" is specified.

Also, the time zone "-0000" is actually always returned as "+0000", so
we change that here was well.

This will be relevant for later patches when we begin parsing rfc822
part headers, where gmime returns a parsed date string.

If we do want to test date parsing, we should do that in a separate

9 years agotest: some small fixes to multipart test
Jameson Graef Rollins [Mon, 6 Jun 2011 00:29:25 +0000 (17:29 -0700)]
test: some small fixes to multipart test

There were two "--format=text --part=0" tests.  One of them was
supposed to be a test for "--format=text --part=1".

There were also two errant "test_expect_equal_file OUTPUT EXPECTED"
lines, that are removed here.

9 years agobuild system: Check that python bindings have consistent version when releasing
David Bremner [Mon, 5 Sep 2011 11:45:28 +0000 (08:45 -0300)]
build system: Check that python bindings have consistent version when releasing

Thanks to Sebastian Spaeth breaking out, this can be done
without loading, or using sed. is not (yet)
autogenerated because it seems more important to minimize the
differences between the tagged version and the tarball.

9 years agolib/gen-version-script.h: add getline and getdelim to notmuch.sym if needed
David Bremner [Mon, 5 Sep 2011 03:19:32 +0000 (00:19 -0300)]
lib/gen-version-script.h: add getline and getdelim to notmuch.sym if needed

If the configure script detects missing getline and/or getdelim
symbols, then notmuch will use it's own versions. This patch, based on
id:"" by Matthias
Guedemann, adds the symbols to notmuch.sym as well so they are
properly exported from the library.

9 years agolib/ replace --defined argument to nm with awk
David Bremner [Mon, 5 Sep 2011 02:50:36 +0000 (23:50 -0300)]
lib/ replace --defined argument to nm with awk

OpenBSD nm apparently doesn't support --defined.

The awk condition is based on the assumption that all defined symbols
have some hex number in the first column.

Thanks to Matthias Guedemann reporting the problem, and an earlier
version of this patch.

9 years agofix checking whether header is member of message-hidden-headers
Tomi Ollila [Mon, 22 Aug 2011 11:59:02 +0000 (14:59 +0300)]
fix checking whether header is member of message-hidden-headers

Emacs lisp function 'member' takes element and list as an
argument. I.e. the second argument is list, not symbol
referencing the list.
On emacs 23.x the member call always returned nil (thus buggy),
on emacs 22.x the call failed, making it unusable.

9 years agopython: Have read the version number without importing
Sebastian Spaeth [Wed, 24 Aug 2011 07:13:34 +0000 (09:13 +0200)]
python: Have read the version number without importing

Importing the notmuch module in is a no-no, and we want
to auto-generate the version number in the release process.

Outsource __VERSION__ to the new which contains nothing else
and which can therefor easily be autogenerated. Have read in
the file via execfile and test if importing the version number actually

This should make all happy.

Signed-off-by: Sebastian Spaeth <>
9 years agopython: Updated development status and wording in
Sebastian Spaeth [Wed, 24 Aug 2011 07:01:36 +0000 (09:01 +0200)]
python: Updated development status and wording in

We are beyond pre-alpha, and the Requirements wording could take some
tweaking. Done.

Signed-off-by: Sebastian Spaeth <>
9 years agoRevert "python: Simplify"
Sebastian Spaeth [Wed, 24 Aug 2011 06:54:58 +0000 (08:54 +0200)]
Revert "python: Simplify"

This reverts commit 8826fc2d7b4e59afdd8cea06891a0c43245340c5.

It seems that importing the module in is controversial at best,
as it will fail for users that don't have all dependencies
installed. This was the case in e.g. the Ubuntu autobuilder, so building
notmuch failed. The plan is to create an autogenerated that can
be used for version information.

Signed-off-by: Sebastian Spaeth <>
9 years agoMerge branch 'master' of ssh://
Sebastian Spaeth [Tue, 23 Aug 2011 07:32:30 +0000 (09:32 +0200)]
Merge branch 'master' of ssh://

9 years agopython: Simplify
Sebastian Spaeth [Tue, 23 Aug 2011 07:30:49 +0000 (09:30 +0200)]
python: Simplify

We were using a template which parsed in complex
ways just to find out the version number. Simply import notmuch and use
__VERSION__ directly. Also adapt some wording and values while
going through.

Signed-off-by: Sebastian Spaeth <>
9 years agore-enable notmuch.sym generation using POSIX sed
David Bremner [Sun, 21 Aug 2011 19:45:00 +0000 (16:45 -0300)]
re-enable notmuch.sym generation using POSIX sed

Unfortunately Robin Green's patch 52e4dedf9aa was lost when I created This merges his changes manually into that
script. It turns out tabs seem not needed in version script
files, so I simplified a bit and removed the printf.

Thanks to Alexander Botero-Lowry for help and testing.

9 years agopython: Fix unsafe utf-8 decodings
pazz [Tue, 16 Aug 2011 21:37:47 +0000 (22:37 +0100)]
python: Fix unsafe utf-8 decodings

This prevents unsafe calls to decode for return value None in
get_authors/get_subject which would current throw an Exception. Original
patch modified by Sebastian Spaeth.

Signed-off-by: Sebastian Spaeth <>
9 years agodecode headers from utf-8 to unicode
patrick [Fri, 12 Aug 2011 13:23:28 +0000 (14:23 +0100)]
decode headers from utf-8 to unicode

as mail headers are stored as utf-8 in the index,
it is safe to return them as unicode strings directly

9 years agopython: remove Tags().__len__() implementation
Sebastian Spaeth [Tue, 9 Aug 2011 15:48:27 +0000 (17:48 +0200)]
python: remove Tags().__len__() implementation

len() exhausts the tag iterator and e.g. list() or "".join(tags)
implicitly call len() if existing and then failing. So, we remove

If you need to know the number of tags a message has, do use
len(list(tags)). It would be nicer to be able to support len() directly...

Signed-off-by: Sebastian Spaeth <>
9 years agopython: Do explicitly check if the next tag exists
Sebastian Spaeth [Tue, 9 Aug 2011 15:45:44 +0000 (17:45 +0200)]
python: Do explicitly check if the next tag exists

If we try to pull a non-existing tag, Tags._get will return None and the
appended .decode() command will fail. So make sure that there is a tag to
be fetched before fetching it.

Signed-off-by: Sebastian Spaeth <>
9 years agopython: pep8 compliance for
pazz [Tue, 12 Jul 2011 20:23:37 +0000 (21:23 +0100)]
python: pep8 compliance for

9 years agopython: pep8 compliance for
pazz [Tue, 12 Jul 2011 20:22:13 +0000 (21:22 +0100)]
python: pep8 compliance for

9 years agopython: pep8 compliance for
pazz [Tue, 12 Jul 2011 20:17:03 +0000 (21:17 +0100)]
python: pep8 compliance for

9 years agopython: pep8 compliance for
pazz [Tue, 12 Jul 2011 20:16:04 +0000 (21:16 +0100)]
python: pep8 compliance for

9 years agopython: pep8 compliance for
pazz [Tue, 12 Jul 2011 20:13:57 +0000 (21:13 +0100)]
python: pep8 compliance for

9 years agopython: pep8 compliance for
pazz [Tue, 12 Jul 2011 20:11:29 +0000 (21:11 +0100)]
python: pep8 compliance for

9 years agopython: pep8 compliance for
pazz [Tue, 12 Jul 2011 19:46:59 +0000 (20:46 +0100)]
python: pep8 compliance for

9 years agopython: Really throw an error if search_threads() fails
Sebastian Spaeth [Tue, 9 Aug 2011 14:48:43 +0000 (16:48 +0200)]
python: Really throw an error if search_threads() fails

In case, search_threads returns an error we are supposed to throw an
Exception. But we did not "raise" it, this was an oversight and this
commit fixes it.

There is still the problem that there is often output to stderr by
libnotmuch detailing the xapian error and this is simply printed
out. But this requires fixing at the libnotmuch level...

Signed-off-by: Sebastian Spaeth <>
9 years agopython: Fix copy'n paste typo
Cedric Cabessa [Tue, 9 Aug 2011 14:31:12 +0000 (16:31 +0200)]
python: Fix copy'n paste typo

we accessed a wrong attribute due to a copy and paste error. Thanks for
catching this.

Signed-off-by: Sebastian Spaeth <>
9 years agoMerge branch 'release'
David Bremner [Mon, 1 Aug 2011 19:58:07 +0000 (21:58 +0200)]
Merge branch 'release'

9 years agodebian: new changelog stanza for 0.7 0.7 debian/0.7-1
David Bremner [Mon, 1 Aug 2011 19:48:13 +0000 (21:48 +0200)]
debian: new changelog stanza for 0.7

No actual changes, but we need a new stanza to upload to unstable

9 years agoupdate NEWS for 0.7
David Bremner [Mon, 1 Aug 2011 19:43:54 +0000 (21:43 +0200)]
update NEWS for 0.7

Essentially point form from git log --oneline.

9 years agoversion: bump to 0.7
David Bremner [Mon, 1 Aug 2011 19:18:03 +0000 (21:18 +0200)]
version: bump to 0.7

No actual changes since 0.7~rc1

10 years agoRevert "debian: Generate version from debian/changelog" 0.7_rc1 debian/0.7_rc1-1
David Bremner [Fri, 29 Jul 2011 16:48:19 +0000 (18:48 +0200)]
Revert "debian: Generate version from debian/changelog"

This reverts commit 2b76283b52a2389a591ca055b086381c44e2a61f.



10 years agobuild-system: Add pre-release target
David Bremner [Fri, 29 Jul 2011 15:45:12 +0000 (17:45 +0200)]
build-system: Add pre-release target

This is a lighter weight version of the release target, intended to
support uploading release candidates to Debian.

As a side effect, filter ~ out of VERSION to make tag names.

10 years agobump upstream version to 0.7~rc1
David Bremner [Fri, 29 Jul 2011 15:22:42 +0000 (17:22 +0200)]
bump upstream version to 0.7~rc1

10 years agodebian: changelog stanza for release candiate
David Bremner [Fri, 29 Jul 2011 10:02:40 +0000 (12:02 +0200)]
debian: changelog stanza for release candiate

10 years agoruby: Fix typo in documentation
Ali Polatel [Fri, 29 Jul 2011 06:45:16 +0000 (09:45 +0300)]
ruby: Fix typo in documentation

It's Notmuch::FileNames not Notmuch::Filenames

10 years agoruby: Remove the split file hack from
Ali Polatel [Fri, 29 Jul 2011 06:43:51 +0000 (09:43 +0300)]
ruby: Remove the split file hack from

10 years agoruby: Add markers to method definitions to help rdoc
Ali Polatel [Fri, 29 Jul 2011 06:29:54 +0000 (09:29 +0300)]
ruby: Add markers to method definitions to help rdoc

rdoc is dumb and needs markers in method definitions so that she can
find which source file the method is defined in

10 years agoruby: Document remaining undocumented constants
Ali Polatel [Fri, 29 Jul 2011 06:16:12 +0000 (09:16 +0300)]
ruby: Document remaining undocumented constants

10 years agoruby: Document constants and exceptions right before definition
Ali Polatel [Fri, 29 Jul 2011 06:09:28 +0000 (09:09 +0300)]
ruby: Document constants and exceptions right before definition

10 years agoruby: Add list of classes to main documentation
Ali Polatel [Fri, 29 Jul 2011 05:53:02 +0000 (08:53 +0300)]
ruby: Add list of classes to main documentation

10 years agolibnotmuch: only build symbols list after the modules are built
Thomas Jost [Wed, 20 Jul 2011 23:31:37 +0000 (01:31 +0200)]
libnotmuch: only build symbols list after the modules are built

If the notmuch.sym target does not explicitly depend on $(libnotmuch_modules), may be run before all the .o files are created, for
example when doing a parallel build on a machine with many cores.

10 years agoMerge commit '0.6.1'
David Bremner [Mon, 18 Jul 2011 01:18:58 +0000 (22:18 -0300)]
Merge commit '0.6.1'


The conflicts are from three kinds of commits not merged into release:
    - typo fixes
    - removal of debug output
    - fix for CLEAN rule

That were never merged into the release branch.

10 years agobuild-system: tag debian-version as part of the release target 0.6.1
David Bremner [Sun, 17 Jul 2011 14:18:10 +0000 (11:18 -0300)]
build-system: tag debian-version as part of the release target

This allows, e.g. gitpkg debian/0.x-1 to do the right thing.  It also
helps enforce the convention that Debian upload -1 is identical to the
release tarball.

10 years agodebian: use 3.0 (quilt) source format.
David Bremner [Sun, 17 Jul 2011 14:11:57 +0000 (11:11 -0300)]
debian: use 3.0 (quilt) source format.

This generates a seperate notmuch-0.x.debian.tar.gz containing

In the initial release this is redundant, but for Debian only updates
between releases, this allows updating the contents of ./debian, and
using the rest of the release tarball.

10 years agobuild-system: update version check to support non-native packages.
David Bremner [Sun, 17 Jul 2011 14:04:08 +0000 (11:04 -0300)]
build-system: update version check to support non-native packages.

We could be a bit more flexible about this and support optional Debian
versions, but for the moment, we pick a policy and stick to it.

10 years agobuild-system: guard parts irrevokable parts of release target with REALLY_UPLOAD
David Bremner [Mon, 4 Jul 2011 11:39:04 +0000 (08:39 -0300)]
build-system: guard parts irrevokable parts of release target with REALLY_UPLOAD

This supports both testing and use by non-upload privileged
users. Along with previous commits in the series, this lets one do a
dry run of the release process and created a tarball, signature file,
and release announcement to inspect before uploading.

10 years agobuild-system: use signed tag to make tar file, if available.
David Bremner [Sun, 3 Jul 2011 20:28:47 +0000 (17:28 -0300)]
build-system: use signed tag to make tar file, if available.

This as the advantage that "make VERSION=n.m dist" will work correctly
even if the wrong branch happens to be checked out.

10 years agobuild-system: tag earlier in the release process.
David Bremner [Sun, 3 Jul 2011 20:06:05 +0000 (17:06 -0300)]
build-system: tag earlier in the release process.

If tagging fails, we really don't want to upload tarballs.

10 years agobuild-system: remove use of git-buildpackage, dput. Add pristine-tar.
David Bremner [Sun, 17 Jul 2011 12:55:50 +0000 (09:55 -0300)]
build-system: remove use of git-buildpackage, dput. Add pristine-tar.

The previous setup was dependent on the git-buildpackage configuration
to find the resulting tar file, and consequently a bit fragile.

We use pristine-tar instead to save a checksum-identical copy of the
tar file. This will also faciliate "non-native" debian packages, if

dput again depends on the local configuration, and mainly is a bit too
brave for me to do automatically.

10 years agobuild-system: run make clean before testing.
David Bremner [Sun, 17 Jul 2011 12:52:05 +0000 (09:52 -0300)]
build-system: run make clean before testing.

The reasoning is that we might have some error in the build system
that causes something not to be rebuilt; this would potentially have
the tests run on the wrong version of the code.

10 years agobuild-system: replace use of ssh with wget for checking the website
David Bremner [Sun, 3 Jul 2011 18:18:30 +0000 (15:18 -0300)]
build-system: replace use of ssh with wget for checking the website

The idea is to see if the version we are already releasing exists on
the notmuch website. Using wget allows more people to run this target,
and also allows people with ssh access to run it without access to
their keys.

10 years agoversion: bump to 0.6.1
David Bremner [Sun, 17 Jul 2011 13:59:08 +0000 (10:59 -0300)]
version: bump to 0.6.1

10 years agoupdate NEWS and debian/changelog for 0.6.1
David Bremner [Sun, 17 Jul 2011 13:58:15 +0000 (10:58 -0300)]
update NEWS and debian/changelog for 0.6.1

10 years agodebian: use a non-native version number.
David Bremner [Sun, 17 Jul 2011 13:42:53 +0000 (10:42 -0300)]
debian: use a non-native version number.

There is concensus to use non-native version number for updates that
contain only Debian changes. Unfortunately changing back and forth
between native and non-native packages has the potential for
confusion, since the archive will end up with notmuch-0.x.tar.gz and
notmuch-0.x.orig.tar.gz. So we use non-native numbering from the

10 years agodebian: add (demangled) Xapian exception typeinfo symbols to libnotmuch1.symbols
David Bremner [Sat, 16 Jul 2011 19:49:45 +0000 (16:49 -0300)]
debian: add (demangled) Xapian exception typeinfo symbols to libnotmuch1.symbols

These are exported (again) by the library to prevent problems with
catching exceptions.

10 years agolibnotmuch: export Xapian typeinfo symbols
David Bremner [Sat, 16 Jul 2011 18:59:44 +0000 (15:59 -0300)]
libnotmuch: export Xapian typeinfo symbols

The lack of such exporting seems to cause problems catching
exceptions, as suggested by

This manifested in the symbol-hiding test failing when notmuch was
compile with gcc 4.4.5. On i386, this further manifested as notmuch
new failing to run (crashing with an uncaught exception on first run).

10 years agovim: fix citation/signature fold lengths
Jason Woofenden [Mon, 11 Jul 2011 05:40:10 +0000 (01:40 -0400)]
vim: fix citation/signature fold lengths

Before they'd often miss the last line

Signed-off-by: Felipe Contreras <>
10 years agovim: fix (hack) cig/cit parsing within multipart/*
Jason Woofenden [Mon, 11 Jul 2011 05:40:09 +0000 (01:40 -0400)]
vim: fix (hack) cig/cit parsing within multipart/*

The vim front-end isn't written to handle nested parts.

This patch doesn't change that, it just changes the code to pretend that
multipart/* sections end immediately. This makes the parsing code think that
all sections are top-level, and are thus parsed well enough.

The lovely result of this is that citation folds and signature folds now work
in text/plain parts that are within multipart/* sections. Also, all mime
section starts are now shown correctly (before some were not parsed and showed
the ugly ^L and an ID and so on from notmuch.)

Signed-off-by: Felipe Contreras <>
10 years agovim: fix on-screen instructions for show-signature
Jason Woofenden [Mon, 11 Jul 2011 05:40:08 +0000 (01:40 -0400)]
vim: fix on-screen instructions for show-signature

Also change a passed parameter to be consistent with the current binding. This
parameter appears to be unused.

Signed-off-by: Felipe Contreras <>
10 years agovim: fix from list reformatting in search view
Jason Woofenden [Mon, 11 Jul 2011 05:40:07 +0000 (01:40 -0400)]
vim: fix from list reformatting in search view

This patch rewrites the reformatting of the from list so it shows full
capitalized names when available (without truncating them as the old code did)
and removes the pipe characters that appear between some names.

The old code appears to assume from list (the list of senders in the thread)
coming from notmuch would be e-mail addresses, but in this version it is mostly
full names. Also in this version, the names are sometimes separated by pipe
instead of comma.

For consistency with old versions, names are still truncated at the first
period. Perhaps they shouldn't be though.

Signed-off-by: Felipe Contreras <>
10 years agovim: fix space key: now archives (did opposite)
Jason Woofenden [Mon, 11 Jul 2011 05:40:06 +0000 (01:40 -0400)]
vim: fix space key: now archives (did opposite)

In vim, in the message view, space is supposed to remove the "unread" and
"inbox" tags, but was sometimes adding them instead.

This patch assures that they are always removed by this binding.

Signed-off-by: Felipe Contreras <>
10 years agovim: use the full path for sendmail
Uwe Kleine-König [Sun, 10 Jul 2011 19:55:56 +0000 (21:55 +0200)]
vim: use the full path for sendmail

... as /usr/sbin isn't usually in user's PATH.

Signed-off-by: Felipe Contreras <>
10 years agovim: skip trailing slash for g:notmuch_compose_temp_file_dir
Uwe Kleine-König [Sun, 10 Jul 2011 19:42:41 +0000 (21:42 +0200)]
vim: skip trailing slash for g:notmuch_compose_temp_file_dir

With the trailing slash I get

Error detected while processing function <SNR>10_NM_new_mail..<SNR>10_NM_cmd_compose..<SNR>10_NM_newComposeBuffer..<SNR>10_NM_newFileBuffer:
line    3:
E739: Cannot create directory: /home/ukleinek/.notmuch/compose/

when hitting 'm' to compose a new mail. strace shows:

stat("/home/ukleinek/.notmuch/compose/", 0x7fffee314a10) = -1 ENOENT (No such file or directory)
stat("/home/ukleinek/.notmuch/compose/", 0x7fffee314e30) = -1 ENOENT (No such file or directory)
stat("/home/ukleinek/.notmuch/compose", 0x7fffee315270) = -1 ENOENT (No such file or directory)
stat("/home/ukleinek/.notmuch", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
mkdir("/home/ukleinek/.notmuch/compose", 0755) = 0
mkdir("/home/ukleinek/.notmuch/compose/", 0755) = -1 EEXIST (File exists)

so it seems vim's mkdir() isn't able to handle a trailing slash.

Signed-off-by: Felipe Contreras <>
10 years agovim: fix documentation that mailx isn't used anymore
Uwe Kleine-König [Sun, 10 Jul 2011 18:52:27 +0000 (20:52 +0200)]
vim: fix documentation that mailx isn't used anymore

e7899b0 (vim: use sendmail directly)
notmuch-vim uses sendmail directly.

Signed-off-by: Felipe Contreras <>
10 years agopython: represent message tags as unicode instances
Sebastian Spaeth [Mon, 11 Jul 2011 13:02:12 +0000 (15:02 +0200)]
python: represent message tags as unicode instances

Rather than returning simply strings and having to guess their encoding,
return explicit unicode() strings for the tags. Xapian stores UTF8, so
we know that they come as UTF8 encoded string.

Note: I tried to directly use the c_wchar_p type of the ctypes library
which translates directly into an unicode type, but that did not work
out so well, so we take c_char_p and .decode() them manually.

Signed-off-by: Sebastian Spaeth <>
10 years agopython: Encode query string as a utf-8 byte array
Sebastian Spaeth [Mon, 11 Jul 2011 09:39:42 +0000 (11:39 +0200)]
python: Encode query string as a utf-8 byte array

If we pass in an unicode instance as query string, we would probably get
weird behavior (and indeed do so, see mail
id:"20110707113700.GA16347@megatron"). If a unicode instance is passed
in, make sure we encode it properly to an utf-8 encoded byte string.

Signed-off-by: Sebastian Spaeth <>
10 years agoMerge commit '0.6'
David Bremner [Sun, 10 Jul 2011 19:50:09 +0000 (16:50 -0300)]
Merge commit '0.6'

10 years agodebian: update changelog for strict libnotmuch dependency
David Bremner [Sun, 10 Jul 2011 12:35:00 +0000 (09:35 -0300)]
debian: update changelog for strict libnotmuch dependency

10 years agodebian: strictly depend on the same version of libnotmuch
Uwe Kleine-König [Sat, 9 Jul 2011 19:17:09 +0000 (21:17 +0200)]
debian: strictly depend on the same version of libnotmuch

It took quite some time to debug why folder: searches didn't work for me
though I had notmuch 0.6~rc1 installed. amdragon in #notmuch found out
that I still had libnotmuch1 0.5+nmu3 installed.

To prevent the same problem in the future let notmuch depend on the same
version of libnotmuch1.

Reviewed-By: David Bremner <>
  The underlying issue is that the libnotmuch interface is not
  entirely captured by the set of exported symbols. In particular the
  query syntax can change without being visible to the linker at all.

10 years agopython: Fix Database().needs_upgrade()
Sebastian Spaeth [Fri, 8 Jul 2011 20:47:06 +0000 (22:47 +0200)]
python: Fix Database().needs_upgrade()

A stupid typo was preventing this from ever working and it was not
detected until now. Patrick noted the typo and proposed the fix in mail

Patch-by: Patrick Totzke <>
Signed-off-by: Sebastian Spaeth <>