Dear Mentors,
I maintain a package that builds a shared library. I uploaded a new upstream version of it to Debian, with no removed symbols, no ABI change... Fine.
Unfortunately, it turns out fields were added to some class (of which size thus increased) in the shared library, so that binaries built against a previous version of it now segfault as they are not allocating enough space.
Of course, rebuilding the reverse dependencies fixes the segfaults.
How should we handle such situation in Debian? Quoting Policy 8.1:
The SONAME and binary package name need not, and indeed normally
should not, change if new interfaces are added but none are removed or
changed, since this will not break binaries linked against the old
shared library. Correct versioning of dependencies on the newer shared
library by binaries that use the new interfaces is handled via the
symbols or shlibs system.
So my understanding is that no SONAME change and no transition are needed, although the rdeps indeed have to be rebuilt as their binaries _are_ broken by the new version of the library.
I maintain a package that builds a shared library. I uploaded a new upstream version of it to Debian, with no removed symbols, no ABI change... Fine.Tobias already explained that there was actually an ABI change, but...
How should we handle such situation in Debian? Quoting Policy 8.1:... I want to add that "the rdeps indeed have to be rebuilt" means, by definition, that an ABI change happened. It's not similar to adding a
The SONAME and binary package name need not, and indeed normally
should not, change if new interfaces are added but none are removed or
changed, since this will not break binaries linked against the old
shared library. Correct versioning of dependencies on the newer shared
library by binaries that use the new interfaces is handled via the
symbols or shlibs system.
So my understanding is that no SONAME change and no transition are needed, although the rdeps indeed have to be rebuilt as their binaries _are_ broken by the new version of the library.
Unfortunately, it turns out fields were added to some class (of which
size thus increased) in the shared library, so that binaries built
against a previous version of it now segfault as they are not allocating enough space.
Either you need to do a packagename change (and debian specific SONAME
iwth all that entails; or maybe there is a way to restore the old abi.
Can you provide a full diff of header,implementation of the relevant
classes ?
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 307 |
Nodes: | 16 (2 / 14) |
Uptime: | 38:56:21 |
Calls: | 6,910 |
Files: | 12,376 |
Messages: | 5,428,928 |