On 26 July 2017 at 15:36, James Cowgill wrote: | Hi, | | On 26/07/17 15:10, Dirk Eddelbuettel wrote: | > On 26 July 2017 at 14:48, James Cowgill wrote: | > | On 26/07/17 14:39, Dirk Eddelbuettel wrote: | > | > On 26 July 2017 at 15:18, Julien Cristau wrote: | > | > | Control: reopen -1 | > | > | | > | > | On Wed, Jul 26, 2017 at 12:57:55 +0100, James Cowgill wrote: | > | > | | > | > | > Hi, | > | > | > | > | > | > On 26/07/17 12:32, Dirk Eddelbuettel wrote: | > | > | > > On 26 July 2017 at 13:14, Michal Politowski wrote: | > | > | > > | Package: libgsl2 | > | > | > > | Version: 2.4+dfsg-1 | > | > | > > | Severity: important | > | > | > > | | > | > | > > | libgsl2 2.3+dfsg-1 contains /usr/lib/i386-linux-gnu/libgsl.so.19 (on i386) | > | > | > > | libgsl2 2.4+dfsg-1 contains /usr/lib/i386-linux-gnu/libgsl.so.23 | > | > | > > | this breaks packages depending on libgsl2. | > | > | > > | | > | > | > > | If the soname changed, package name must change too. | > | > | > > | > | > | > > Right. I'll change the soname. | > | > | > | > | > | > From NEWS: | > | > | > > ** removed routines which were deprecated in v2.1: | > | > | > > gsl_bspline_deriv_alloc | > | > | > > gsl_bspline_deriv_free | > | > | > | > | > | > Isn't this an ABI break? If so, upstream changing the SONAME was correct | > | > | > and the package should be renamed (instead of reusing the old | > | > | > incompatible SONAME). | > | > | > | > | > | Yes. You need to either bump SONAME *and* change package name, or keep | > | > | the package name and SONAME but revert the ABI breakage. There's no | > | > | option where you get to break ABI but keep the SONAME and/or package | > | > | name. | > | > | > | > Allow me to quote myself from a reply I just sent a minute ago: | > | > | > | > We have this discussion on every release. Look what is in (upstream's) | > | > configure.ac: | > | > | > | > dnl Library versioning (C:R:A == current:revision:age) | > | > dnl See the libtool manual for an explanation of the numbers | > | > dnl | > | > dnl gsl-1.0 libgsl 0:0:0 libgslcblas 0:0:0 | > | > dnl gsl-1.1 libgsl 1:0:1 libgslcblas 0:0:0 | > | > dnl gsl-1.1.1 libgsl 2:0:2 libgslcblas 0:0:0 | > | > dnl gsl-1.2 libgsl 3:0:3 libgslcblas 0:0:0 | > | > dnl gsl-1.3 libgsl 4:0:4 libgslcblas 0:0:0 | > | > dnl gsl-1.4 libgsl 5:0:5 libgslcblas 0:0:0 | > | > dnl gsl-1.5 libgsl 6:0:6 libgslcblas 0:0:0 | > | > dnl gsl-1.6 libgsl 7:0:7 libgslcblas 0:0:0 | > | > dnl gsl-1.7 libgsl 8:0:8 libgslcblas 0:0:0 | > | > dnl gsl-1.8 libgsl 9:0:9 libgslcblas 0:0:0 | > | > dnl gsl-1.9 libgsl 10:0:10 libgslcblas 0:0:0 | > | > dnl gsl-1.10 libgsl 10:0:10 (*) libgslcblas 0:0:0 | > | > dnl gsl-1.11 libgsl 12:0:12 libgslcblas 0:0:0 | > | > dnl gsl-1.12 libgsl 13:0:13 libgslcblas 0:0:0 | > | > dnl gsl-1.13 libgsl 14:0:14 libgslcblas 0:0:0 | > | > dnl gsl-1.14 libgsl 15:0:15 libgslcblas 0:0:0 | > | > dnl gsl-1.15 libgsl 16:0:16 libgslcblas 0:0:0 | > | > dnl gsl-1.16 libgsl 17:0:17 libgslcblas 0:0:0 | > | > dnl gsl-2.0 libgsl 18:0:18 (**) libgslcblas 0:0:0 | > | > dnl gsl-2.1 libgsl 19:0:0 libgslcblas 0:0:0 | > | > dnl gsl-2.2 libgsl 20:0:1 libgslcblas 0:0:0 | > | > dnl gsl-2.2.1 libgsl 21:0:2 libgslcblas 0:0:0 | > | > dnl gsl-2.3 libgsl 22:0:3 libgslcblas 0:0:0 | > | > dnl gsl-2.4 libgsl 23:0:0 libgslcblas 0:0:0 | > | > dnl | > | > dnl (*) There was an error on this release. Firstly, the versioning | > | > dnl numbers were not updated. Secondly, 2 functions were removed, but | > | > dnl the age not reset--this should have been 11:0:0. However these | > | > dnl functions were not documented and are regarded as internal, so we | > | > dnl will assume 11:0:11. | > | > dnl | > | > dnl (**) There was an error on this release. Age should have been | > | > dnl reset to 18:0:0 | > | > | > | > I maitained this for close to 20 years, and we done (IIRC) ONE soname change. | > | | > | The list above only contains 3 ABI changes, of which one was "ignored" | > | by upstream. | > | | > | The first one (ignored as detailed above): | > | > dnl gsl-1.9 libgsl 10:0:10 libgslcblas 0:0:0 | > | > dnl gsl-1.10 libgsl 10:0:10 (*) libgslcblas 0:0:0 | > | | > | One here: | > | > dnl gsl-1.16 libgsl 17:0:17 libgslcblas 0:0:0 | > | > dnl gsl-2.0 libgsl 18:0:18 (**) libgslcblas 0:0:0 | > | > dnl gsl-2.1 libgsl 19:0:0 libgslcblas 0:0:0 | > | | > | And the current one we're talking about here: | > | > dnl gsl-2.3 libgsl 22:0:3 libgslcblas 0:0:0 | > | > dnl gsl-2.4 libgsl 23:0:0 libgslcblas 0:0:0 | > | > Hm. Colour me confused. | > | > Have I been reading this wrong all this time by reading _from left to right_ | > and refusing to force a new soname (and package name) on every release? | > | > If the 'age reset to 0' is the actionable item, then I'd be up for it. I | > could make a -3 release with a libgsl23 package keeping it at libgsl-dev. | > | > I guess that's better than forcing a non-change. | | Yes the "age reset to 0" is what causes ABI breakage and will cause an | SONAME change on Linux - you don't need to change the package name every | single release. I think renaming the package to libgsl23 (which will cause a | package transition) is the correct thing to do.
Thanks for the patient help -- really appreciate it. I think I will create a libgsl23 tomorrow then, giving other a chance to chime in if need be. One "technical" question: Is "causes ABI breakage" correct in the sense of instructing ld.so to balk at this? Or more a "recommended to set to 0 to signal an ABI change" ? Dirk | | This page has some info on how libtool versions libraries (and I don't | blame you for reading this wrong - it is quite confusing): | https://www.gnu.org/software/libtool/manual/html_node/Versioning.html | | Thanks, | James | | [DELETED ATTACHMENT signature.asc, application/pgp-signature] -- http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org