Andreas Metzler ametzler@bebt.de writes:
According to objdump -R GnuTLS uses internal symbols of both libhogweed and libnettle (e.g. _nettle_mpn_set_base256_le@HOGWEED_INTERNAL_5_0 and _nettle_write_le64@NETTLE_INTERNAL_7_0). These nettle *internal* symbols seem to be incompatible in 3.6, at least they are versioned differently (@NETTLE_INTERNAL_7_1).
Can you post a complete list of the references to internal symbols?
Having non-working gnutls is quite a big issue, since e.g. apt depends on it.
Indeed. What options do we have? The ones I see are
1. Simply bump the soname of libnettle too. I think that's ok in this case, since there are no major fixes or improvements to old features in this release. But I wouldn't want to make it a habit.
2. Fix GnuTLS to not refer to internal libnettle symbols. Mark the nettle-3.6 package including libnettle.so.7 as conflicting with the non-fixed GnuTLS package.
I don't know how practical option (2) is. But for the example of nettle_write_le64, it would be a simple improvement to just include a copy in GnuTLS if it needs it. The nettle implementation is not particularly clever, and it's not intended to be part of the ABI. E.g, one todo item is to replace it with a macro expanding to memcpy, on platforms that are natively little-endian, in which case the symbol would simply disappear from the library.
PS: On top of this the Debian nettle *packaging* currently is broken with respect to unsynced soname bumps of libhogweed/libnettle runtime packages, which is a different issue, probably a bug.
I think it's a bug. Independent of the current issues with GnuTLS, I think it's reasonable to occasionally make ABI-incompatible changes to libhogweed, without breaking the libnettle ABI at the same time. (The opposite is also possible, but less likely to happen). In which case only one of the sonames would be bumped. There's currently no testing of libhogweed from nettle-X linking at runtime with a libnettle.so built from nettle-(X+1) or nettle-(X-1). Seems a bit tricky to set up.
Regards, /Niels