diff --git a/pkgs/development/libraries/xapian/default.nix b/pkgs/development/libraries/xapian/default.nix index 5dd81af2b1af..8c0d065247b4 100644 --- a/pkgs/development/libraries/xapian/default.nix +++ b/pkgs/development/libraries/xapian/default.nix @@ -11,6 +11,13 @@ let inherit sha256; }; + patches = [ + # fix notmuch build, see https://notmuchmail.org/faq/#index12h2 + # cannot fetchpatch this because base directory differs + # TODO: remove on next xapian update + ./fix-notmuch-tagging.patch + ]; + outputs = [ "out" "man" "doc" ]; buildInputs = [ libuuid zlib ]; @@ -36,5 +43,5 @@ let in { # xapian-ruby needs 1.2.22 as of 2017-05-06 xapian_1_2_22 = generic "1.2.22" "0zsji22n0s7cdnbgj0kpil05a6bgm5cfv0mvx12d8ydg7z58g6r6"; - xapian_1_4 = generic "1.4.5" "0axhqrj202hbll9mcx1qdm8gsqj19216w3z02gyjbycxvr9gkdc5"; + xapian_1_4 = generic "1.4.7" "1lxmlds3v5s1gng9nk1rvmln1zcksrw5ds509y0glylwch5qmw0k"; } diff --git a/pkgs/development/libraries/xapian/fix-notmuch-tagging.patch b/pkgs/development/libraries/xapian/fix-notmuch-tagging.patch new file mode 100644 index 000000000000..6deae76d2aa7 --- /dev/null +++ b/pkgs/development/libraries/xapian/fix-notmuch-tagging.patch @@ -0,0 +1,31 @@ +From f9e6f45b1c8f66bca8a3387f371b20d434b23a7d Mon Sep 17 00:00:00 2001 +From: Olly Betts +Date: Thu, 26 Jul 2018 17:26:52 +1200 +Subject: [PATCH 1/1] Revert "Enable open_nearby_postlist for writable + databases" + +The amended check isn't conservative enough as there may be postlist +changes in the inverter while the table is unmodified. This breaks +testcase T150-tagging.sh in notmuch's testsuite, reported by David +Bremner. + +This reverts commit 5489fb2f838c0f0b0a593b4c17df282a93a1fe5a. +--- + xapian-core/backends/glass/glass_postlist.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xapian-core/backends/glass/glass_postlist.cc b/xapian-core/backends/glass/glass_postlist.cc +index 80e578b85..a47f14a68 100644 +--- a/backends/glass/glass_postlist.cc ++++ b/backends/glass/glass_postlist.cc +@@ -759,7 +759,7 @@ GlassPostList::open_nearby_postlist(const std::string & term_, + (void)need_pos; + if (term_.empty()) + RETURN(NULL); +- if (!this_db.get() || this_db->postlist_table.is_modified()) ++ if (!this_db.get() || this_db->postlist_table.is_writable()) + RETURN(NULL); + RETURN(new GlassPostList(this_db, term_, cursor->clone())); + } +-- +2.11.0