Commit graph

7466 commits

Author SHA1 Message Date
David Bremner
4f82acce17 lib/string_map: simulate stable sorting
qsort(3) does not promise stability, and recent versions of glibc have
been showing more unstable behaviour [2]. Michael Gruber observed [1] test
breakage due to changing output order for message properties.

We provide a sorting order of (key,value) pairs that _looks_ stable by
breaking ties based on value if keys are equal. Internally there may
be some instability in the case of duplicate (key,value) pairs, but it
should not be observable via the iterator API.

[1]: id:CAA19uiSHjVFmwH0pMC7WwDYCOSzu3yqNbuYhu3ZMeNNRh313eA@mail.gmail.com
[2]: id:87msv3i44u.fsf@oldenburg.str.redhat.com
2023-11-28 09:19:21 -04:00
David Bremner
356ad39271 debian: update changelog for 0.38.1-1 2023-10-26 20:18:20 -03:00
David Bremner
e3bde388d8 NEWS: News for 0.38.1
Just note the 3 bug fixes.
2023-10-26 19:52:27 -03:00
David Bremner
551ec61118 version: bump to 0.38.1
No changes from 0.38.1~rc1
2023-10-26 19:45:04 -03:00
David Bremner
23ac959040 changelog for 0.38.1~rc1-1 2023-10-12 19:54:07 -03:00
David Bremner
4fc79eb196 version: update to 0.38.1~rc1 2023-10-12 19:52:42 -03:00
Paul Wise
72de64034d notmuch-mutt: fix Perl syntax of hash index lookups
Fixes: commit 239fdbbbf0
2023-10-12 19:50:43 -03:00
David Bremner
6ea0b18d1e debian: finalize changelog for 0.38.1~pre0-1
Bonus typo fix.
2023-10-01 08:16:48 -03:00
David Bremner
a064a25427 emacs/show: special case toggling display of images
According to emacs upstream [1], we can't expect overlay invisibility
and images to get along. This commit uses the previously stashed
undisplayer functions to actually remove the images from the buffer.
When the image is toggled, it is essentially redisplayed from scratch,
using the previously stashed redisplay data.

[1]: https://lists.gnu.org/archive/html/emacs-devel/2023-08/msg00593.html
2023-10-01 07:47:16 -03:00
David Bremner
0646d4855b emacs: save image redisplay data during non-lazy display
This data will eventually be used to redisplay hidden images. A
certain amount of refactoring is done here to avoid code
duplication.
2023-10-01 07:47:16 -03:00
David Bremner
bfcfa947f8 emacs/show: save redisplay redisplay data when showing lazy part.
This data will be used to redisplay an image that is hidden by
deleting it from the buffer.  We cannot easily delay until the image
is hidden, as we won't have the original data at that point.
2023-10-01 07:47:16 -03:00
David Bremner
b1129d905a emacs: save undisplayer function for MIME parts
For some kinds of MIME parts (at least images), our trickery with
overlays will not work, so save the more drastic function created by
Gnus that actually deletes the part from the buffer. In an ideal world
we would return this function as (part of) a value, but here the call
stack is too complicated for anything that simple, so we stash it in
the part plist and rely on that being preserved (unlike the mm handle,
which is transient).
2023-10-01 07:47:16 -03:00
David Bremner
1c10d91d8e Pass error message from GLib ini parser to CLI
The function _notmuch_config_load_from_file is only called in two
places in open.cc. Update internal API to match the idiom in open.cc.
Adding a newline is needed for consistency with other status strings.

Based in part on a patch [1] from Eric Blake.

[1]: id:20230906153402.101471-1-eblake@redhat.com
2023-09-23 08:34:48 -03:00
David Bremner
bc38580cef test: add known broken subtest for the bad config error message
This is a bit fragile w.r.t. glib changing their error message, but it
already helped me find one formatting bug, so for now I think it's
worth it, instead of just grepping for "UTF-8".
2023-09-23 08:29:32 -03:00
David Bremner
dbb5ff3385 CLI: exit with error when load_config returns an error.
For now print a generic error message and exit with error on any
non-success code. Previously the code exited, but with exit code zero,
leading users / scripts to think the command had succeeded.
2023-09-23 08:26:40 -03:00
David Bremner
112c53535a test: add known broken test for bad utf8 in config
We should ideally print an informative error message, but at the very
least we should not exit with success.
2023-09-23 08:22:51 -03:00
David Bremner
6ed3484749 debian: start changelog for 0.38.1~pre0-1 2023-09-23 08:16:20 -03:00
David Bremner
14bc0cc56b NEWS: add header for 0.38.1
Actual news items to be filled in after they are applied.
2023-09-23 08:14:21 -03:00
David Bremner
50aaab91b5 version: update to 0.38.1~pre0
Start preparations for point release
2023-09-23 08:12:06 -03:00
David Bremner
40a44bfe61 debian: upload 0.38-2: disable most autopkgtests 2023-09-13 20:04:33 -03:00
David Bremner
60b5ea319a bindings/python-cffi: clean up notmuch2.egg-info
This is created (at least) by the Debian build, but there seems no
harm in cleaning it for everyone.
2023-09-12 08:37:38 -03:00
David Bremner
c31f8c0b3b debian: note introduction of autopkgtests
Having autopkgtests changes Debian package migration (for better and
worse), so make a note when they were introduced to unstable.
2023-09-12 08:33:35 -03:00
David Bremner
a76c16b75e NEWS: quote function name
This avoids spurious underline/italics when exporting to markdown.
2023-09-12 08:31:49 -03:00
David Bremner
972283777a NEWS: set release date for 0.38 2023-09-12 08:28:57 -03:00
David Bremner
b21747e0c3 build: clean up __pycache__ directories
These are generated indirectly by certain uses of python in the build.
2023-09-12 08:07:37 -03:00
David Bremner
14e05a3eee debian: rely on main notmuch (dist)clean.
The python setuputils clean relys on including _notmuch_config.py,
which is cleaned up. Rather than relying on careful ordering, just do
all the cleaning from the GNU Make based build system.
2023-09-12 07:48:54 -03:00
David Bremner
32f24b97d0 bindings/python-cffi: clean up _notmuch_config.py
_notmuch_config.py is generated by configure, and cannot be cleaned up
by the current python build system, since it is imported as a module
by that same build system.

Use DISTCLEAN rather than CLEAN for consistency with other configure
related things.
2023-09-12 07:37:32 -03:00
David Bremner
db8bf6f7ad debian: changelog for 0.38-1 2023-09-11 20:19:25 -03:00
David Bremner
139ea43f3d version: bump to 0.38 2023-09-11 19:56:21 -03:00
David Bremner
8dc8cedb3b NEWS: NEWS for 0.38 2023-09-09 19:49:36 -03:00
David Bremner
2c81de8f5f debian: changelog for 0.38~rc2-1 2023-09-03 09:11:53 -03:00
David Bremner
ed5b8f65fc version: bump to 0.31~rc2 2023-09-03 09:09:22 -03:00
Michael J Gruber
a84dc2f7e6 compat: probe for strcasestr more thoroughly
Depending on compiler (gcc, g++, clang) and standard options (c99, c11),
string.h may or may not include strings.h, leading to possibly missing
or conflicting declarations of strcasestr.

Include both so that both detection and compilation phases use the same
(possibly optimised) implementations.

Suggested-by: Thomas Schneider <qsx@chaotikum.eu>
Suggested-by: Florian Weimer <fweimer@redhat.com>
Suggested-by: Tomi Ollila <tomi.ollila@iki.fi>
2023-08-27 19:39:23 -03:00
David Bremner
9a1126241d debian: changelog for 0.38~rc1-1 2023-08-26 08:31:49 -03:00
David Bremner
240e9fff90 version: bump to 0.38~rc1 2023-08-26 08:29:45 -03:00
David Bremner
90c6182825 debian: skip T810-tsan on ppc64el
Hopefully just a temporary measure.
2023-08-26 08:28:33 -03:00
David Bremner
25c933d7e6 debian: use architecture.mk
I plan to add further architecture dependent checks, which makes this
preferable to directly calling dpkg-architecture.
2023-08-26 08:22:33 -03:00
David Bremner
115d4d69eb test: minimize impact of native compilation.
Native compilation is kindof useless in the test suite because we
throw away the cache after every subtest.  The test suite could in
principle share an eln cache within a given test file; for now try to
minimize the amount of native-compilation. There is an intermittent
bug where emacs loses track of its default-directory; I suspect (but
have no proof) that bug is related to native compilation and/or race
conditions. This patch seems to prevent that bug (or at least reduce
its frequency).
2023-08-26 07:45:36 -03:00
David Bremner
8c8fda965f debian: set suite to experimental 2023-08-24 10:56:33 -03:00
David Bremner
5ed121bed9 doc: update copyright date 2023-08-24 08:03:46 -03:00
David Bremner
695f663f81 debian: changelog for 0.38~rc0-1 2023-08-24 08:00:55 -03:00
David Bremner
aa5674fce0 NEWS: start NEWS for 0.38 2023-08-24 07:58:51 -03:00
David Bremner
2f874fb2cc version: set up 0.38~rc0 2023-08-24 07:58:19 -03:00
David Bremner
368e0f61d5 test/setup: ignore blank lines in generated config
The presense of the blank lines between sections depends on the
version of glib. Strip them before comparison.
2023-08-21 19:30:54 -03:00
David Bremner
df45194d5f CLI/config: simulate top level comments when creating config
According to discussion on

          https://gitlab.gnome.org/GNOME/glib/-/issues/3078

it looks like upstream will stop supporting top of file comments.

It is questionable whether we really need this feature, but for now
update notmuch-config to simulate it.
2023-08-21 19:30:54 -03:00
David Bremner
1719b9e568 test/emacs: adapt to breaking change in Gnus defaults
As of Emacs 29.1, In-Reply-To is in the default value for
message-hidden-headers. We actually want to see that in the test
suite, so remove it again. To future proof the tests, fix a default
value for message-hidden-headers specifically for the test suite.
2023-08-20 14:32:02 -03:00
David Bremner
b6f144abe1 lib/n_d_remove_message: do not remove unique filename
It is wasteful to remove a filename term when the whole message
document is about to be removed from the database. Profiling with perf
shows this takes a significant portion of the time when cleaning up
removed files in the database.

The logic of n_d_remove_message becomes a bit more convoluted here in
order to make the change minimal.

It is possible that this function can be further optimized, since the
expansion of filename terms into filenames is probably not needed
here.
2023-07-22 07:15:59 -03:00
David Bremner
d93d49b6ae lib/message: check message type before deleting document
It isn't really clear how this worked before. Traversing the terms of
a document after deleting it from the database seems likely to be
undefined behaviour at best
2023-07-22 07:11:46 -03:00
David Bremner
08ca74d715 debian: add autopkgtests
We generate output to stderr for BROKEN tests, which are not failures,
so tell the test runner not to fail because of output on stderr.
2023-07-21 07:41:50 -03:00
David Bremner
ec26eeaeec test: support testing notmuch as installed
We put some effort into testing the built copy rather than some
installed copy. On the other hand for people like packagers, testing
the installed copy is also of interest.

When NOTMUCH_TEST_INSTALLED is set to a nonempty value, tests do not
require a built notmuch tree or running configure.

Some of the tests marked as broken when running against installed
notmuch are probably fixable.
2023-07-21 07:41:50 -03:00