This obsoletes [1]. Since that series, a bit of the actual port to gmime-3.0 has crept in, in order to be able to mark tests as broken with respect a particular gmime version. The series in progress [2] has grown to 21 patches, and this is roughly the first half. Currently there about 7 failing tests (not counting the 5 marked broken) all crypto related. Basically my quick-and-dirty translation of crypto status is not really close enough, and probably can't really be perfect because the old version reported raw error numbers in json/sexp output. That's probably wrong, and certainly unportable between gmime major versions. There are 3 sub-series here. 1) eliminate mixing gmime stream output with raw printfs [Patch v3 01/11] util: convenience function to create gmime stream [Patch v3 02/11] cli/reply: direct all output for text format to [Patch v3 03/11] cli/show: use single stream for printf / gmime 2) Fix some memory leaks [Patch v3 04/11] perf-test: add memory test for reply [Patch v3 05/11] cli/reply: fix two memory leaks, document a third 3) Update test suite [Patch v3 06/11] test/thread-naming: remove excess escaping from ... [Patch v3 11/11] test: mark test as broken in gmime 3.0 [1]: id:20170523005351.15431-1-david@tethera.net [2]: http://pivot.cs.unb.ca/git?p=notmuch.git;a=shortlog;h=refs/heads/gmime-3.0