<feed xmlns='http://www.w3.org/2005/Atom'>
<title>notmuch/lib/gen-version-script.sh, branch master</title>
<subtitle>thread-based email index, search, and tagging</subtitle>
<id>https://git.notmuchmail.org/git/notmuch/atom?h=master</id>
<link rel='self' href='https://git.notmuchmail.org/git/notmuch/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/'/>
<updated>2017-05-12T10:17:18Z</updated>
<entry>
<title>build: switch to hiding libnotmuch symbols by default</title>
<updated>2017-05-12T10:17:18Z</updated>
<author>
<name>Jani Nikula</name>
<email>jani@nikula.org</email>
</author>
<published>2017-05-10T19:42:11Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=bc11759dd1fd198661657b741bc0143c9af309a4'/>
<id>urn:sha1:bc11759dd1fd198661657b741bc0143c9af309a4</id>
<content type='text'>
The dynamic generation of the linker version script for libnotmuch
exports has grown rather complicated.

Reverse the visibility control by hiding symbols by default using
-fvisibility=hidden, and explicitly exporting symbols in notmuch.h
using #pragma GCC visibility. (We could also use __attribute__
((visibility ("default"))) for each exported function, but the pragma
is more convenient.)

The above is not quite enough alone, as it would "leak" a number of
weak symbols from Xapian and C++ standard library. Combine it with a
small static version script that filters out everything except the
notmuch_* symbols that we explicitly exposed, and the C++ RTTI
typeinfo symbols for exception handling.

Finally, as the symbol hiding test can no longer look at the generated
symbol table, switch the test to parse the functions from notmuch.h.
</content>
</entry>
<entry>
<title>build: do not export compat functions from lib</title>
<updated>2017-05-11T23:41:10Z</updated>
<author>
<name>Jani Nikula</name>
<email>jani@nikula.org</email>
</author>
<published>2017-05-10T19:42:09Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=d5ed9af0e42c0f32bcababd6ac5ce42ccb1bf283'/>
<id>urn:sha1:d5ed9af0e42c0f32bcababd6ac5ce42ccb1bf283</id>
<content type='text'>
Commits 9db214527213 ("lib/gen-version-script.h: add getline and
getdelim to notmuch.sym if needed") and 3242e29e57ac ("build: add
canonicalize_file_name to symbols exported from libnotmuch.so")
started exporting compat functions from libnotmuch so that the cli
could use them. But we shouldn't export such functions from the
library. They are not part of our ABI. Instead, the cli should include
its own copies of the compat functions.
</content>
</entry>
<entry>
<title>Use https instead of http where possible</title>
<updated>2016-06-05T11:32:17Z</updated>
<author>
<name>Daniel Kahn Gillmor</name>
<email>dkg@fifthhorseman.net</email>
</author>
<published>2016-06-02T16:26:14Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=6a833a6e83865f6999707cc30768d07e1351c2cb'/>
<id>urn:sha1:6a833a6e83865f6999707cc30768d07e1351c2cb</id>
<content type='text'>
Many of the external links found in the notmuch source can be resolved
using https instead of http.  This changeset addresses as many as i
could find, without touching the e-mail corpus or expected outputs
found in tests.
</content>
</entry>
<entry>
<title>lib: whitespace cleanup</title>
<updated>2016-06-05T11:23:28Z</updated>
<author>
<name>Tomi Ollila</name>
<email>tomi.ollila@iki.fi</email>
</author>
<published>2016-05-28T17:45:31Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=cf09631a45d276826255d197c1d5c913a29c79f4'/>
<id>urn:sha1:cf09631a45d276826255d197c1d5c913a29c79f4</id>
<content type='text'>
Cleaned the following whitespace in lib/* files:

lib/index.cc:              1 line:  trailing whitespace
lib/database.cc            5 lines: 8 spaces at the beginning of line
lib/notmuch-private.h:     4 lines: 8 spaces at the beginning of line
lib/message.cc:            1 line:  trailing whitespace
lib/sha1.c:                1 line:  empty lines at the end of file
lib/query.cc:              2 lines: 8 spaces at the beginning of line
lib/gen-version-script.sh: 1 line:  trailing whitespace
</content>
</entry>
<entry>
<title>build: add "set -eu" to version script generation</title>
<updated>2015-07-28T19:34:01Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2015-07-27T18:42:32Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=882ccb7e49fa8cca9d498c3eda0fbb64ea57d348'/>
<id>urn:sha1:882ccb7e49fa8cca9d498c3eda0fbb64ea57d348</id>
<content type='text'>
It turns out that on certain systems like FreeBSD, c++filt is not
installed by default. It's basically OK if we fail the build in that
case, but what's really not OK is for the build to continue and
generate bad binaries.
</content>
</entry>
<entry>
<title>build: add canonicalize_file_name to symbols exported from libnotmuch.so</title>
<updated>2014-04-18T20:58:34Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2014-04-09T11:24:02Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=3242e29e57acf1715f4f7bfd7c384d4a699c68f3'/>
<id>urn:sha1:3242e29e57acf1715f4f7bfd7c384d4a699c68f3</id>
<content type='text'>
This is needed for our compat version of canonicalize_file_name to be used.
</content>
</entry>
<entry>
<title>lib/gen-version-script.h: add getline and getdelim to notmuch.sym if needed</title>
<updated>2011-09-05T10:44:14Z</updated>
<author>
<name>David Bremner</name>
<email>bremner@debian.org</email>
</author>
<published>2011-09-05T03:19:32Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=9db21452721356be5169254cd7e8c0ec5b25066b'/>
<id>urn:sha1:9db21452721356be5169254cd7e8c0ec5b25066b</id>
<content type='text'>
If the configure script detects missing getline and/or getdelim
symbols, then notmuch will use it's own versions. This patch, based on
id:"87k49v12i5.fsf@pc44es141.cs.uni-magdeburg.de" by Matthias
Guedemann, adds the symbols to notmuch.sym as well so they are
properly exported from the library.
</content>
</entry>
<entry>
<title>lib/gen-version-script.sh: replace --defined argument to nm with awk</title>
<updated>2011-09-05T10:39:44Z</updated>
<author>
<name>David Bremner</name>
<email>bremner@debian.org</email>
</author>
<published>2011-09-05T02:50:36Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=80212b13294cababfb41f643765ca00bdf8e55dd'/>
<id>urn:sha1:80212b13294cababfb41f643765ca00bdf8e55dd</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>re-enable notmuch.sym generation using POSIX sed</title>
<updated>2011-08-21T19:50:39Z</updated>
<author>
<name>David Bremner</name>
<email>bremner@debian.org</email>
</author>
<published>2011-08-21T19:45:00Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=4b55df85348c4ad4129bf6a9af052231f1d6716e'/>
<id>urn:sha1:4b55df85348c4ad4129bf6a9af052231f1d6716e</id>
<content type='text'>
Unfortunately Robin Green's patch 52e4dedf9aa was lost when I created
gen-version-script.sh. 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.
</content>
</entry>
<entry>
<title>libnotmuch: export Xapian typeinfo symbols</title>
<updated>2011-07-17T01:16:46Z</updated>
<author>
<name>David Bremner</name>
<email>bremner@debian.org</email>
</author>
<published>2011-07-16T18:59:44Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=feb22fef2e3f6f1cf1722f00945c580e506df0df'/>
<id>urn:sha1:feb22fef2e3f6f1cf1722f00945c580e506df0df</id>
<content type='text'>
The lack of such exporting seems to cause problems catching
exceptions, as suggested by

    http://gcc.gnu.org/wiki/Visibility

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).
</content>
</entry>
</feed>
